Received: (at 417) by bugs.devuan.org; 3 Feb 2023 12:18:05 +0000 Return-Path: <[email protected]> Delivered-To: [email protected] Received: from email.devuan.org [2001:41d0:2:d06e::5c4:2612] by doc.devuan.org with IMAP (fetchmail-6.4.16) for <debbugs@localhost> (single-drop); Fri, 03 Feb 2023 12:18:05 +0000 (UTC) Received: from email.devuan.org by email.devuan.org with LMTP id GiKdEmH73GM2FAAAmSBk0A (envelope-from <[email protected]>) for <[email protected]>; Fri, 03 Feb 2023 12:17:37 +0000 Received: by email.devuan.org (Postfix, from userid 109) id 3BB6EA05; Fri, 3 Feb 2023 12:17:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on email.devuan.org X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=150.101.137.141; helo=ipmail03.adl2.internode.on.net; [email protected]; receiver=<UNKNOWN> Received: from ipmail03.adl2.internode.on.net (ipmail03.adl2.internode.on.net [150.101.137.141]) by email.devuan.org (Postfix) with ESMTP id 48E42597 for <[email protected]>; Fri, 3 Feb 2023 12:17:29 +0000 (UTC) IronPort-SDR: qOdi5pG++A+/aMOYMIFzn9I2TeeKGHaFk0uaRoH5IsYpUY2aDq/pW939ai7wx2v4sJOQcHefTB ArcLVAodLiLvHEcpFBDJjNqAD6CQM8hV5S0hzzPnkfW1ynrdyuLuu9J23io+Nfm0r0XaCzA2ZO dSWTtnVjEZERBJxQqgZZSJe31oowPtbNtFaZP33/LY7u5UYuOpSb5ntf5QEy2wziFu9UqDCl34 WOibyVr/2wm2c4OwJP7evSprOEduXyecqcEQmUvPqBBGSYwtRnlr4XtD+VLou3OYChnkLQ9/vf NHmhZOfnlCxULppPiYxClHZi X-SMTP-MATCH: 1 X-IPAS-Result: =?us-ascii?q?A2AiBQBG+txjAPg3kwENTR4BAQsSDEAJgUiFC4ROgmKOQ?= =?us-ascii?q?J89DwFVBAEBhQcChScmOQUNAQIEAQEBAQMCAwEBAQEBAQMBAQYBAQEBAQEGB?= =?us-ascii?q?BABOlINEhw2Eh2ECQkFhxQBAQEDI2YLDQsCAiYCAlcGARKCfqpheoEyGmefW?= =?us-ascii?q?YFngRQtgWWLEYQwN4FVRIEVJwwDDYJnPoQiAQEgg1g5gi4EkT2LH4E3doEkD?= =?us-ascii?q?oFGgQsCCQIRc4EZCFM3AxkrHUADC20KPzULC0orGhsHgQYqKBUDBAQDAgYTA?= =?us-ascii?q?yACDSgxFAQpEw0nJmkJAgMiYgMDBCgtCT8HFREmPAdWNQEFAg8fNwYDCQMCH?= =?us-ascii?q?1FyLhETBQMLFSpHBAg2BQYcCSsSAggPEg8GJkMOQjc0EwaBBgsOEQNPgU4EL?= =?us-ascii?q?4FgBlChLl84xGg0B4N3gUwGDJ8VLoNmARKMYoZOA4wJhXqHWo91IKlwgX0zG?= =?us-ascii?q?i5vAYI8TwECAQEBDQECAQGOapYcYjsCBwsBAQMJjCMBAQ?= IronPort-Data: A9a23:lsvAAKxg6ODFygNQZZR6t+dmwSrEfRIJ4+MujC+fZmUNrF6WrkVTm DFNWGCObKyCNzCncttzaNzj9hkAuMWAyNBmTlNu/iA0RCkV8JDLCdmXf0n9MXjCc5SSRhs5t Z0UZNTMcJFtZ3KN/R3F3prJ9Ckkj/vULlbf5E8oHggrGGeInQ940UoLd9YR29Iu2Z7ja++0k YuaT/f3YTdJ5hYtWo4qw/LbwP9QlKyaVAMw5jTSstgW1LN2vyB94KM3fcldHVOhKmVnNrLSq 9L48V2M1jixEyHBqz+Suu2TnkUiGtY+NOUV45Zcc/DKbhNq/kTe3kunXRYRQR8/ttmHozx+4 NdqqYOpRhkMB7zzvNk4bClmEXBBMZQTrdcrIVDn2SCS536fKSSqm7M2ShgDVWEa0r8xWD0Rs 6FFbmpRPnhvhMrvqF6/YuB2msQ+No/uNZkEullhyy3UF/AhTZ2FRKOM49JEtNs1rpoeQKiOO 5JIMVKDajzOQjAXH2dMAagXkcCJ1ib+SRYChFms8P9fD2/7llcviNABKuH9f9WQRu1Vn0CUo m/XuWPjDVcHN7S3lWPa2nixifSJkS7lRYsUUrqi+ZZXbEa7nypKVEJQCAb9+6Xp4qKjZz5BA 04z5jU3orYXzV2UauTYYC2Goi+7sidJDrK8DNYGBBGxJrv8uljGWzRdH24cNrTKp+dzHmB7j A/Q9z/9LWU04ODEGCP1GqK88GvaBMQDEYMVTQY5Jefvy/DvrYU6jx7CJjqIOPPt1oWd9d3Y+ DeXsCh2rqgIkdQC06SylW0rYg5ARbCQEWbZHi2NAgqYAvpRPeZJnbCA51nB9upnJ42EVFSHt 3Vss5HAs71SV8jRyXLcEbtl8FSVCxCtbmK0bblHQclJythR0yP6FWytyGgleRk2a5dZEdMXS BaP4V8NtPe/w0dGnYctONzpYyjb5bTtEc/5TPmcb9xSb4J3eRPvwc2dTRH44owZq2BxzPFXB HtuWYP1VS5y5VJPnWXtHI/wENYDn0gD+I8kbcmqnk33jubPPCH9pHVsGALmU93VJZis+G39m +uz/ePRo/mGeOGhMCTR76AJKlUGcSoyCZzs8pIFd+ifLxBgH20sTfjXh7UsZ9U9zahSk+7J+ FC7W1NZkQSg3y2cdVvRO30zOqnyWZtfrG4gOXJ+MFut3U8lPdSl4pAAJsk+crQQ/eB+yeJ5E qsecMKaD/UUFTnKomxPbZT0oIF4Wg6sgAaCY3isbDQlJsAyRgrV98XieQfisi4ISCy6qZJm8 bGn0wraR7sFRhhjVZiJMqL0kw3q7HVEwbB8RUrFJNVXaX7AyokyJnyjlOIzLuENNQ7HmGmX2 gOQNhFE9+PDlJBkotDGiJeNo5qtD+YjTFFRGHPW7O3pOCTX8wJPG2ObvDpkoNwFaF7JxQ== IronPort-HdrOrdr: A9a23:Onuodq7YXC0j6My27QPXwN3XdLJyesId70hD6qkXc20xTiX4rb HNoB1173TJYVoqMk3I3OrvBEDiewK+yXcW2+ks1N6ZNWHbUSmTTb2KhrGP/9SPIUDDH6Jmup tdTw== X-IronPort-Anti-Spam-Filtered: true Received: from unknown (HELO [127.0.0.1]) ([1.147.55.248]) by ipmail03.adl2.internode.on.net with ESMTP; 03 Feb 2023 22:47:19 +1030 Date: Fri, 03 Feb 2023 22:47:15 +1030 From: Arthur Marsh <[email protected]> To: Mark Hindley <[email protected]>, [email protected] Subject: =?US-ASCII?Q?Re=3A_bug=23417=3A_gcc-10=3A_internal_compiler_er?= =?US-ASCII?Q?ror_building_kernel_5=2E6=2E0-rc7_with_amdgpu?= User-Agent: K-9 Mail for Android In-Reply-To: <[email protected]> References: <158497486864.17367.14059265919888444783.reportbug@localhost> <[email protected]> <[email protected]> Message-ID: <[email protected]> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable No=2E I am currently building kernels with gcc-12=2E Regards, Arthur=2E=20 On 3 February 2023 10:10:45 pm ACDT, Mark Hindley <mark@hindley=2Eorg=2Euk= > wrote: >Control: tags -1 moreinfo > >Arthur, > >Is this still an issue? > >Mark --=20 Sent from my Android device with K-9 Mail=2E Please excuse my brevity=2E
Arthur Marsh <[email protected]>
:[email protected]
.
Full text available.[email protected], [email protected]
:bug#417
; Package gcc-10
.
Full text available.Mark Hindley <[email protected]>
to [email protected]
.
Full text available.Received: (at 417) by bugs.devuan.org; 3 Feb 2023 11:41:37 +0000 Return-Path: <[email protected]> Delivered-To: [email protected] Received: from email.devuan.org [2001:41d0:2:d06e::5c4:2612] by doc.devuan.org with IMAP (fetchmail-6.4.16) for <debbugs@localhost> (single-drop); Fri, 03 Feb 2023 11:41:37 +0000 (UTC) Received: from email.devuan.org by email.devuan.org with LMTP id GwmuIsDy3GOAEwAAmSBk0A (envelope-from <[email protected]>) for <[email protected]>; Fri, 03 Feb 2023 11:40:48 +0000 Received: by email.devuan.org (Postfix, from userid 109) id 7D58AA04; Fri, 3 Feb 2023 11:40:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on email.devuan.org X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=RDNS_DYNAMIC,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=193.36.131.86; helo=mx.hindley.org.uk; [email protected]; receiver=<UNKNOWN> Received: from mx.hindley.org.uk (193-36-131-86.cfwn.uk [193.36.131.86]) by email.devuan.org (Postfix) with ESMTPS id 3153D393 for <[email protected]>; Fri, 3 Feb 2023 11:40:47 +0000 (UTC) Received: from apollo.hindleynet ([192.168.1.3] helo=hindley.org.uk) by mx.hindley.org.uk with smtp (Exim 4.84_2) (envelope-from <[email protected]>) id 1pNuQv-0002mz-IW; Fri, 03 Feb 2023 11:40:45 +0000 Received: (nullmailer pid 1665 invoked by uid 1000); Fri, 03 Feb 2023 11:40:45 -0000 Date: Fri, 3 Feb 2023 11:40:45 +0000 From: Mark Hindley <[email protected]> To: [email protected] Cc: Arthur Marsh <[email protected]> Subject: Re: bug#417: gcc-10: internal compiler error building kernel 5.6.0-rc7 with amdgpu Message-ID: <[email protected]> References: <158497486864.17367.14059265919888444783.reportbug@localhost> <[email protected]> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <[email protected]> X-Debbugs-No-Ack: No Thanks Control: tags -1 moreinfo Arthur, Is this still an issue? Mark
[email protected], [email protected]
:bug#417
; Package gcc-10
.
Full text available.Mark Hindley <[email protected]>
to [email protected]
.
Full text available.Received: (at 417) by bugs.devuan.org; 23 Mar 2020 16:50:05 +0000 Return-Path: <[email protected]> Delivered-To: [email protected] Received: from tupac3.dyne.org [195.169.149.119] by doc.devuan.org with IMAP (fetchmail-6.4.0.beta4) for <debbugs@localhost> (single-drop); Mon, 23 Mar 2020 16:50:05 +0000 (UTC) Received: from mx.hindley.org.uk (mohindley.plus.com [81.174.245.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by vm6.ganeti.dyne.org (Postfix) with ESMTPS id 97E4DF60B28 for <[email protected]>; Mon, 23 Mar 2020 17:38:36 +0100 (CET) Received: from apollo.hindleynet ([192.168.1.3] helo=apollo) by mx.hindley.org.uk with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <[email protected]>) id 1jGQ5x-0000F3-EA; Mon, 23 Mar 2020 16:38:33 +0000 Received: from mark by apollo with local (Exim 4.84_2) (envelope-from <[email protected]>) id 1jGQ5w-00040M-2L; Mon, 23 Mar 2020 16:38:32 +0000 Date: Mon, 23 Mar 2020 16:38:31 +0000 From: Mark Hindley <[email protected]> To: [email protected] Cc: Arthur Marsh <[email protected]> Subject: Re: gcc-10: internal compiler error building kernel 5.6.0-rc7 with amdgpu Message-ID: <[email protected]> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <158497486864.17367.14059265919888444783.reportbug@localhost> X-Debbugs-No-Ack: No Thanks User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Status: No, score=0.0 required=5.0 tests=FAKE_REPLY_C,SPF_PASS autolearn=disabled version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on tupac3.dyne.org Control: tags -1 debian On Tue, 24 Mar 2020 01:17:48 +1030 Arthur Marsh <[email protected]> wrote: > Package: gcc-10 > Version: 10-20200321-1 > Severity: normal > Arthur, Thanks for this. However, gcc-10 is not a forked package and Devuan uses the Debian pacakges directly. You would be much better reporting this directly to Debian's BTS so it can be fixed. Thanks Mark
[email protected], [email protected]
:bug#417
; Package gcc-10
.
Full text available.Received: (at submit) by bugs.devuan.org; 23 Mar 2020 14:50:06 +0000 Return-Path: <[email protected]> Delivered-To: [email protected] Received: from tupac3.dyne.org [195.169.149.119] by doc.devuan.org with IMAP (fetchmail-6.4.0.beta4) for <debbugs@localhost> (single-drop); Mon, 23 Mar 2020 14:50:06 +0000 (UTC) Received: from ipmail05.adl3.internode.on.net (ipmail05.adl3.internode.on.net [150.101.137.13]) by vm6.ganeti.dyne.org (Postfix) with ESMTP id 4DF13F60B07 for <[email protected]>; Mon, 23 Mar 2020 15:47:59 +0100 (CET) X-IronPort-Anti-Spam-NotFiltered: toobig Received: from ppp227-106.static.internode.on.net (HELO localhost) ([203.122.227.106]) by ipmail05.adl3.internode.on.net with ESMTP; 24 Mar 2020 01:17:53 +1030 Received: from amarsh04 by localhost with local (Exim 4.93) (envelope-from <[email protected]>) id 1jGOMm-0006Um-Tp; Tue, 24 Mar 2020 01:17:51 +1030 Content-Type: multipart/mixed; boundary="===============2530410277144048522==" MIME-Version: 1.0 From: Arthur Marsh <[email protected]> To: Devuan Bug Tracking System <[email protected]> Subject: gcc-10: internal compiler error building kernel 5.6.0-rc7 with amdgpu Message-ID: <158497486864.17367.14059265919888444783.reportbug@localhost> X-Mailer: reportbug 7.5.3+devuan3 Date: Tue, 24 Mar 2020 01:17:48 +1030 This is a multi-part MIME message sent by reportbug. --===============2530410277144048522== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline Package: gcc-10 Version: 10-20200321-1 Severity: normal Dear Maintainer, *** Reporter, please consider answering these questions, where appropriate *** * What led up to the situation? After upgrading gcc-10, the Linux kernel failed to build * What exactly did you do (or not do) that was effective (or ineffective)? removing the amdgpu option from the kernel build allowed the build to complete. * What was the outcome of this action? * What outcome did you expect instead? *** End of the template - remove these template lines *** -- System Information: Distributor ID: Debian Description: Devuan GNU/Linux 4 (chimaera/ceres) Release: testing/unstable Codename: n/a Architecture: x86_64 Kernel: Linux 5.6.0-rc6+ (SMP w/4 CPU cores) Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8), LANGUAGE=en_GB (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Init: sysvinit (via /sbin/init) Versions of packages gcc-10 depends on: ii binutils 2.34-5 ii cpp-10 10-20200321-1 ii gcc-10-base 10-20200321-1 ii libc6 2.30-2 ii libcc1-0 10-20200321-1 ii libgcc-10-dev 10-20200321-1 ii libgcc-s1 10-20200321-1 ii libgmp10 2:6.2.0+dfsg-4 ii libisl22 0.22.1-1 ii libmpc3 1.1.0-1 ii libmpfr6 4.0.2-1 ii libstdc++6 10-20200321-1 ii libzstd1 1.4.4+dfsg-3 ii zlib1g 1:1.2.11.dfsg-2 Versions of packages gcc-10 recommends: ii libc6-dev 2.30-2 Versions of packages gcc-10 suggests: pn gcc-10-doc <none> pn gcc-10-locales <none> pn gcc-10-multilib <none> -- no debconf information --===============2530410277144048522== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="20200324.log" VXNpbmcgZGVmYXVsdCBkaXN0cmlidXRpb24gb2YgJ3Vuc3RhYmxlJyBpbiB0aGUgY2hhbmdlbG9n Ckluc3RhbGwgbHNiLXJlbGVhc2Ugb3Igc2V0ICRLREVCX0NIQU5HRUxPR19ESVNUIGV4cGxpY2l0 bHkKG1sxbWRwa2ctYnVpbGRwYWNrYWdlOiAbWzBtG1sxOzMzbXdhcm5pbmcbWzBtOiB1c2luZyBh IGdhaW4tcm9vdC1jb21tYW5kIHdoaWxlIGJlaW5nIHJvb3QKG1sxOzM1bSBkcGtnLXNvdXJjZSAt LWJlZm9yZS1idWlsZCAuChtbMG0bWzE7MzVtIGRlYmlhbi9ydWxlcyBidWlsZAobWzBtZHVyaW5n IFJUTCBwYXNzOiBjb21iaW5lCmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmM6IEluIGZ1bmN0aW9uIOKAmHJuX3VwZGF0ZV9j bG9ja3PigJk6CmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21n ci9kY24yMS9ybl9jbGtfbWdyLmM6MTkzOjE6IGludGVybmFsIGNvbXBpbGVyIGVycm9yOiBpbiBp eDg2X2NjX21vZGUsIGF0IGNvbmZpZy9pMzg2L2kzODYuYzoxNTI4NQogIDE5MyB8IH0KICAgICAg fCBeCjB4NWQwNmEyIGl4ODZfY2NfbW9kZShydHhfY29kZSwgcnR4X2RlZiosIHJ0eF9kZWYqKQoJ Li4vLi4vc3JjL2djYy9jb25maWcvaTM4Ni9pMzg2LmM6MTUyODUKMHgxMjc4ZGUyIHNpbXBsaWZ5 X3NldAoJLi4vLi4vc3JjL2djYy9jb21iaW5lLmM6NjkzOAoweDEyN2M0NmEgc3Vic3QKCS4uLy4u L3NyYy9nY2MvY29tYmluZS5jOjU3MTkKMHgxMjdjNWZjIHN1YnN0CgkuLi8uLi9zcmMvZ2NjL2Nv bWJpbmUuYzo1NTgxCjB4MTI3ZTdjOSB0cnlfY29tYmluZQoJLi4vLi4vc3JjL2djYy9jb21iaW5l LmM6MzQ3OQoweDEyODQ3NzIgY29tYmluZV9pbnN0cnVjdGlvbnMKCS4uLy4uL3NyYy9nY2MvY29t YmluZS5jOjE0NjkKMHgxMjg0NzcyIHJlc3Rfb2ZfaGFuZGxlX2NvbWJpbmUKCS4uLy4uL3NyYy9n Y2MvY29tYmluZS5jOjE1MDU5CjB4MTI4NDc3MiBleGVjdXRlCgkuLi8uLi9zcmMvZ2NjL2NvbWJp bmUuYzoxNTEwNApQbGVhc2Ugc3VibWl0IGEgZnVsbCBidWcgcmVwb3J0LAp3aXRoIHByZXByb2Nl c3NlZCBzb3VyY2UgaWYgYXBwcm9wcmlhdGUuClBsZWFzZSBpbmNsdWRlIHRoZSBjb21wbGV0ZSBi YWNrdHJhY2Ugd2l0aCBhbnkgYnVnIHJlcG9ydC4KU2VlIDxmaWxlOi8vL3Vzci9zaGFyZS9kb2Mv Z2NjLTEwL1JFQURNRS5CdWdzPiBmb3IgaW5zdHJ1Y3Rpb25zLgpQcmVwcm9jZXNzZWQgc291cmNl IHN0b3JlZCBpbnRvIC90bXAvY2NGcEMxa0Qub3V0IGZpbGUsIHBsZWFzZSBhdHRhY2ggdGhpcyB0 byB5b3VyIGJ1Z3JlcG9ydC4KPT09IEJFR0lOIEdDQyBEVU1QID09PQoxNDQ3NDogLy8gVGFyZ2V0 OiB4ODZfNjQtbGludXgtZ251CjE0NDc0OiAvLyBDb25maWd1cmVkIHdpdGg6IC4uL3NyYy9jb25m aWd1cmUgLXYgLS13aXRoLXBrZ3ZlcnNpb249J0RlYmlhbiAxMC0yMDIwMDMyMS0xJyAtLXdpdGgt YnVndXJsPWZpbGU6Ly8vdXNyL3NoYXJlL2RvYy9nY2MtMTAvUkVBRE1FLkJ1Z3MgLS1lbmFibGUt bGFuZ3VhZ2VzPWMsYysrLGdvLGJyaWcsZCxmb3J0cmFuLG9iamMsb2JqLWMrKyxtMiAtLXByZWZp eD0vdXNyIC0td2l0aC1nY2MtbWFqb3ItdmVyc2lvbi1vbmx5IC0tcHJvZ3JhbS1zdWZmaXg9LTEw IC0tcHJvZ3JhbS1wcmVmaXg9eDg2XzY0LWxpbnV4LWdudS0gLS1lbmFibGUtc2hhcmVkIC0tZW5h YmxlLWxpbmtlci1idWlsZC1pZCAtLWxpYmV4ZWNkaXI9L3Vzci9saWIgLS13aXRob3V0LWluY2x1 ZGVkLWdldHRleHQgLS1lbmFibGUtdGhyZWFkcz1wb3NpeCAtLWxpYmRpcj0vdXNyL2xpYiAtLWVu YWJsZS1ubHMgLS1lbmFibGUtY2xvY2FsZT1nbnUgLS1lbmFibGUtbGlic3RkY3h4LWRlYnVnIC0t ZW5hYmxlLWxpYnN0ZGN4eC10aW1lPXllcyAtLXdpdGgtZGVmYXVsdC1saWJzdGRjeHgtYWJpPW5l dyAtLWVuYWJsZS1nbnUtdW5pcXVlLW9iamVjdCAtLWRpc2FibGUtdnRhYmxlLXZlcmlmeSAtLWVu YWJsZS1wbHVnaW4gLS1lbmFibGUtZGVmYXVsdC1waWUgLS13aXRoLXN5c3RlbS16bGliIC0td2l0 aC10YXJnZXQtc3lzdGVtLXpsaWI9YXV0byAtLWVuYWJsZS1vYmpjLWdjPWF1dG8gLS1lbmFibGUt bXVsdGlhcmNoIC0tZGlzYWJsZS13ZXJyb3IgLS13aXRoLWFyY2gtMzI9aTY4NiAtLXdpdGgtYWJp PW02NCAtLXdpdGgtbXVsdGlsaWItbGlzdD1tMzIsbTY0LG14MzIgLS1lbmFibGUtbXVsdGlsaWIg LS13aXRoLXR1bmU9Z2VuZXJpYyAtLWVuYWJsZS1vZmZsb2FkLXRhcmdldHM9bnZwdHgtbm9uZSxh bWRnY24tYW1kaHNhLGhzYSAtLXdpdGhvdXQtY3VkYS1kcml2ZXIgLS1lbmFibGUtY2hlY2tpbmc9 cmVsZWFzZSAtLWJ1aWxkPXg4Nl82NC1saW51eC1nbnUgLS1ob3N0PXg4Nl82NC1saW51eC1nbnUg LS10YXJnZXQ9eDg2XzY0LWxpbnV4LWdudQoxNDQ3NDogLy8gVGhyZWFkIG1vZGVsOiBwb3NpeAox NDQ3NDogLy8gU3VwcG9ydGVkIExUTyBjb21wcmVzc2lvbiBhbGdvcml0aG1zOiB6bGliIHpzdGQK MTQ0NzQ6IC8vIGdjYyB2ZXJzaW9uIDEwLjAuMSAyMDIwMDMyMSAoZXhwZXJpbWVudGFsKSBbbWFz dGVyIHJldmlzaW9uIDE1NzExZTgzN2IyOmFiNjU4NmNiMDI0OjQ5NzQ5OGM4NzhkNDg3NTQzMThl NDg2NDI4ZTJhYTMwODU0MDIwYjldIChEZWJpYW4gMTAtMjAyMDAzMjEtMSkgCjE0NDc0OiAvLyAK MTQ0NzQ6IC8vIGR1cmluZyBSVEwgcGFzczogY29tYmluZQoxNDQ3NDogLy8gZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYzog SW4gZnVuY3Rpb24g4oCYcm5fdXBkYXRlX2Nsb2Nrc+KAmToKMTQ0NzQ6IC8vIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmM6 MTkzOjE6IGludGVybmFsIGNvbXBpbGVyIGVycm9yOiBpbiBpeDg2X2NjX21vZGUsIGF0IGNvbmZp Zy9pMzg2L2kzODYuYzoxNTI4NQoxNDQ3NDogLy8gICAxOTMgfCB9CjE0NDc0OiAvLyAgICAgICB8 IF4KMTQ0NzQ6IC8vIDB4NWQwNmEyIGl4ODZfY2NfbW9kZShydHhfY29kZSwgcnR4X2RlZiosIHJ0 eF9kZWYqKQoxNDQ3NDogLy8gCS4uLy4uL3NyYy9nY2MvY29uZmlnL2kzODYvaTM4Ni5jOjE1Mjg1 CjE0NDc0OiAvLyAweDEyNzhkZTIgc2ltcGxpZnlfc2V0CjE0NDc0OiAvLyAJLi4vLi4vc3JjL2dj Yy9jb21iaW5lLmM6NjkzOAoxNDQ3NDogLy8gMHgxMjdjNDZhIHN1YnN0CjE0NDc0OiAvLyAJLi4v Li4vc3JjL2djYy9jb21iaW5lLmM6NTcxOQoxNDQ3NDogLy8gMHgxMjdjNWZjIHN1YnN0CjE0NDc0 OiAvLyAJLi4vLi4vc3JjL2djYy9jb21iaW5lLmM6NTU4MQoxNDQ3NDogLy8gMHgxMjdlN2M5IHRy eV9jb21iaW5lCjE0NDc0OiAvLyAJLi4vLi4vc3JjL2djYy9jb21iaW5lLmM6MzQ3OQoxNDQ3NDog Ly8gMHgxMjg0NzcyIGNvbWJpbmVfaW5zdHJ1Y3Rpb25zCjE0NDc0OiAvLyAJLi4vLi4vc3JjL2dj Yy9jb21iaW5lLmM6MTQ2OQoxNDQ3NDogLy8gMHgxMjg0NzcyIHJlc3Rfb2ZfaGFuZGxlX2NvbWJp bmUKMTQ0NzQ6IC8vIAkuLi8uLi9zcmMvZ2NjL2NvbWJpbmUuYzoxNTA1OQoxNDQ3NDogLy8gMHgx Mjg0NzcyIGV4ZWN1dGUKMTQ0NzQ6IC8vIAkuLi8uLi9zcmMvZ2NjL2NvbWJpbmUuYzoxNTEwNAox NDQ3NDogLy8gUGxlYXNlIHN1Ym1pdCBhIGZ1bGwgYnVnIHJlcG9ydCwKMTQ0NzQ6IC8vIHdpdGgg cHJlcHJvY2Vzc2VkIHNvdXJjZSBpZiBhcHByb3ByaWF0ZS4KMTQ0NzQ6IC8vIFBsZWFzZSBpbmNs dWRlIHRoZSBjb21wbGV0ZSBiYWNrdHJhY2Ugd2l0aCBhbnkgYnVnIHJlcG9ydC4KMTQ0NzQ6IC8v IFNlZSA8ZmlsZTovLy91c3Ivc2hhcmUvZG9jL2djYy0xMC9SRUFETUUuQnVncz4gZm9yIGluc3Ry dWN0aW9ucy4KMTQ0NzQ6IAoxNDQ3NDogLy8gL3Vzci9saWIvZ2NjL3g4Nl82NC1saW51eC1nbnUv MTAvY2MxIC1xdWlldCAtbm9zdGRpbmMgLUkgLi9hcmNoL3g4Ni9pbmNsdWRlIC1JIC4vYXJjaC94 ODYvaW5jbHVkZS9nZW5lcmF0ZWQgLUkgLi9pbmNsdWRlIC1JIC4vYXJjaC94ODYvaW5jbHVkZS91 YXBpIC1JIC4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaSAtSSAuL2luY2x1ZGUvdWFw aSAtSSAuL2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9wb3dlcnBsYXkvaW5jLyAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2luY2x1ZGUvYXNpY19yZWcgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNs dWRlIC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vcG93ZXJwbGF5L3NtdW1nciAt SSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL3Bvd2VycGxheS9od21nciAtSSAuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jLyAtSSAuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3IC1JIC4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyIC1JIC4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9tb2R1bGVzL2luYyAtSSAuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvbW9kdWxlcy9mcmVlc3luYyAtSSAuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvbW9kdWxlcy9jb2xvciAtSSAuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvbW9kdWxlcy9pbmZvX3BhY2tldCAtSSAuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvbW9kdWxlcy9wb3dlciAtSSAuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZG11Yi9pbmMgLUkgLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjIC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vaW5jbHVkZS9hc2ljX3JlZyAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2luY2x1ZGUgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9hbWRncHUgLUkgLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9wb3dlcnBsYXkvaW5jIC1JIC4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vYWNwL2luY2x1ZGUgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5IC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9pbmNsdWRlIC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k YyAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtIC1J IC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vYW1ka2ZkIC1pbXVsdGlhcmNoIHg4Nl82 NC1saW51eC1nbnUgLUQgX19LRVJORUxfXyAtRCBDT05GSUdfQVNfQ0ZJPTEgLUQgQ09ORklHX0FT X0NGSV9TSUdOQUxfRlJBTUU9MSAtRCBDT05GSUdfQVNfQ0ZJX1NFQ1RJT05TPTEgLUQgQ09ORklH X0FTX1NTU0UzPTEgLUQgQ09ORklHX0FTX0FWWD0xIC1EIENPTkZJR19BU19BVlgyPTEgLUQgQ09O RklHX0FTX0FWWDUxMj0xIC1EIENPTkZJR19BU19TSEExX05JPTEgLUQgQ09ORklHX0FTX1NIQTI1 Nl9OST0xIC1EIENPTkZJR19BU19BRFg9MSAtRCBDQ19VU0lOR19GRU5UUlkgLUQgQlVJTERfRkVB VFVSRV9USU1JTkdfU1lOQz0wIC1EIE1PRFVMRSAtRCBLQlVJTERfQkFTRU5BTUU9InJuX2Nsa19t Z3IiIC1EIEtCVUlMRF9NT0ROQU1FPSJhbWRncHUiIC1pc3lzdGVtIC91c3IvbGliL2djYy94ODZf NjQtbGludXgtZ251LzEwL2luY2x1ZGUgLWluY2x1ZGUgLi9pbmNsdWRlL2xpbnV4L2tjb25maWcu aCAtaW5jbHVkZSAuL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaCAtTUQgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxLy5ybl9jbGtfbWdy Lm8uZCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNu MjEvcm5fY2xrX21nci5jIC1xdWlldCAtZHVtcGJhc2Ugcm5fY2xrX21nci5jIC1tbm8tc3NlIC1t bm8tbW14IC1tbm8tc3NlMiAtbW5vLTNkbm93IC1tbm8tYXZ4IC1tNjQgLW1uby04MDM4NyAtbW5v LWZwLXJldC1pbi0zODcgLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyAtbXNraXAtcmF4LXNl dHVwIC1tYXJjaD1rOCAtbW5vLXJlZC16b25lIC1tY21vZGVsPWtlcm5lbCAtbWluZGlyZWN0LWJy YW5jaD10aHVuay1leHRlcm4gLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1yZWNvcmQtbWNv dW50IC1tZmVudHJ5IC1hdXhiYXNlLXN0cmlwIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLm8gLU8yIC1XYWxsIC1XdW5kZWYg LVdlcnJvcj1zdHJpY3QtcHJvdG90eXBlcyAtV25vLXRyaWdyYXBocyAtV2Vycm9yPWltcGxpY2l0 LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIC1XZXJyb3I9aW1wbGljaXQtaW50IC1Xbm8tZm9ybWF0LXNl Y3VyaXR5IC1Xbm8tc2lnbi1jb21wYXJlIC1Xbm8tZnJhbWUtYWRkcmVzcyAtV2Zvcm1hdC10cnVu Y2F0aW9uPTAgLVdmb3JtYXQtb3ZlcmZsb3c9MCAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJl ciAtV2ZyYW1lLWxhcmdlci10aGFuPTIwNDggLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAt V2ltcGxpY2l0LWZhbGx0aHJvdWdoPTMgLVd1bnVzZWQtY29uc3QtdmFyaWFibGU9MCAtV2RlY2xh cmF0aW9uLWFmdGVyLXN0YXRlbWVudCAtV3ZsYSAtV25vLXBvaW50ZXItc2lnbiAtV25vLXN0cmlu Z29wLXRydW5jYXRpb24gLVdlcnJvcj1kYXRlLXRpbWUgLVdlcnJvcj1pbmNvbXBhdGlibGUtcG9p bnRlci10eXBlcyAtV2Vycm9yPWRlc2lnbmF0ZWQtaW5pdCAtV25vLXBhY2tlZC1ub3QtYWxpZ25l ZCAtc3RkPWdudTkwIC1wIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uIC1mc2hvcnQt d2NoYXIgLWZuby1QSUUgLWZhbGlnbi1qdW1wcz0xIC1mYWxpZ24tbG9vcHM9MSAtZm5vLWFzeW5j aHJvbm91cy11bndpbmQtdGFibGVzIC1mbm8tanVtcC10YWJsZXMgLWZuby1kZWxldGUtbnVsbC1w b2ludGVyLWNoZWNrcyAtZnN0YWNrLXByb3RlY3RvciAtZm5vLXZhci10cmFja2luZy1hc3NpZ25t ZW50cyAtZm5vLXN0cmljdC1vdmVyZmxvdyAtZm5vLW1lcmdlLWFsbC1jb25zdGFudHMgLWZtZXJn ZS1jb25zdGFudHMgLWZzdGFjay1jaGVjaz1ubyAtZmNvbnNlcnZlLXN0YWNrIC1mbWFjcm8tcHJl Zml4LW1hcD0uLz0gLWZjZi1wcm90ZWN0aW9uPW5vbmUgLW8gLSAtZnJhbmRvbS1zZWVkPTAgLWZk dW1wLW5vYWRkcgoxNDQ3NDogCjE0NDc0OiAjIDEgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmMiCjE0NDc0OiAjIDEgIjxi dWlsdC1pbj4iCjE0NDc0OiAjIDEgIjxjb21tYW5kLWxpbmU+IgoxNDQ3NDogIyAxICIuLy4vaW5j bHVkZS9saW51eC9rY29uZmlnLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIyAxICIuL2luY2x1ZGUvZ2VuZXJhdGVkL2F1dG9jb25mLmgiIDEKMTQ0NzQ6ICMgNiAi Li8uL2luY2x1ZGUvbGludXgva2NvbmZpZy5oIiAyCjE0NDc0OiAjIDEgIjxjb21tYW5kLWxpbmU+ IiAyCjE0NDc0OiAjIDEgIi4vLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgiIDEKMTQ0 NzQ6ICMgNTkgIi4vLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgiCjE0NDc0OiAjIDEg Ii4vaW5jbHVkZS9saW51eC9jb21waWxlcl9hdHRyaWJ1dGVzLmgiIDEKMTQ0NzQ6ICMgNjAgIi4v Li9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgNjggIi4vLi9pbmNs dWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9j b21waWxlci1nY2MuaCIgMQoxNDQ3NDogIyA2OSAiLi8uL2luY2x1ZGUvbGludXgvY29tcGlsZXJf dHlwZXMuaCIgMgoxNDQ3NDogIyA4NSAiLi8uL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMu aCIKMTQ0NzQ6IHN0cnVjdCBmdHJhY2VfYnJhbmNoX2RhdGEgewoxNDQ3NDogIGNvbnN0IGNoYXIg KmZ1bmM7CjE0NDc0OiAgY29uc3QgY2hhciAqZmlsZTsKMTQ0NzQ6ICB1bnNpZ25lZCBsaW5lOwox NDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIHVuc2lnbmVkIGxvbmcg Y29ycmVjdDsKMTQ0NzQ6ICAgIHVuc2lnbmVkIGxvbmcgaW5jb3JyZWN0OwoxNDQ3NDogICB9Owox NDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgdW5zaWduZWQgbG9uZyBtaXNzOwoxNDQ3NDogICAg dW5zaWduZWQgbG9uZyBoaXQ7CjE0NDc0OiAgIH07CjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgbWlz c19oaXRbMl07CjE0NDc0OiAgfTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmdHJh Y2VfbGlrZWx5X2RhdGEgewoxNDQ3NDogIHN0cnVjdCBmdHJhY2VfYnJhbmNoX2RhdGEgZGF0YTsK MTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGNvbnN0YW50OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMSAiPGNv bW1hbmQtbGluZT4iIDIKMTQ0NzQ6ICMgMSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIKMTQ0NzQ6ICMgMjYgImRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtf bWdyLmMiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9pbmMvaHcvZGNjZy5oIiAxCjE0NDc0OiAjIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2RjY2cuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX3R5cGVzLmgiIDEKMTQ0NzQ6ICMg MzIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBlcy5o IgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMv b3NfdHlwZXMuaCIgMQoxNDQ3NDogIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL29zX3R5cGVzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9rZ2Ri LmgiIDEKMTQ0NzQ6ICMgMTYgIi4vaW5jbHVkZS9saW51eC9rZ2RiLmgiCjE0NDc0OiAjIDEgIi4v aW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaCIgMQoxNDQ3NDog IyA2ICIuL2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9s aW51eC9zdHJpbmdpZnkuaCIgMQoxNDQ3NDogIyA3ICIuL2luY2x1ZGUvbGludXgvbGlua2FnZS5o IiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9leHBvcnQuaCIgMQoxNDQ3NDogIyAxNiAi Li9pbmNsdWRlL2xpbnV4L2V4cG9ydC5oIgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBtb2R1bGUgX190 aGlzX21vZHVsZTsKMTQ0NzQ6ICMgNDMgIi4vaW5jbHVkZS9saW51eC9leHBvcnQuaCIKMTQ0NzQ6 ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgiIDEKMTQ0NzQ6ICMgMTgwICIuL2luY2x1 ZGUvbGludXgvY29tcGlsZXIuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvdHlw ZXMuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJj aC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vdHlwZXMuaCIgMQoxNDQ3NDogIyAxICIu L2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy90eXBlcy5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2Vu ZXJpYy9pbnQtbGw2NC5oIiAxCjE0NDc0OiAjIDExICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvaW50 LWxsNjQuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvaW50LWxsNjQu aCIgMQoxNDQ3NDogIyAxMiAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvaW50LWxsNjQuaCIK MTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2JpdHNwZXJsb25nLmgiIDEK MTQ0NzQ6ICMgMTEgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9iaXRzcGVybG9uZy5oIgox NDQ3NDogIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0c3BlcmxvbmcuaCIgMQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1n ZW5lcmljL2JpdHNwZXJsb25nLmgiIDEKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL2FzbS1nZW5lcmlj L2JpdHNwZXJsb25nLmgiIDIKMTQ0NzQ6ICMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2Fz bS9iaXRzcGVybG9uZy5oIiAyCjE0NDc0OiAjIDEzICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJp Yy9pbnQtbGw2NC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgX19zaWduZWRfXyBjaGFyIF9fczg7CjE0NDc0 OiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191ODsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBfX3Np Z25lZF9fIHNob3J0IF9fczE2OwoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3UxNjsK MTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBfX3NpZ25lZF9fIGludCBfX3MzMjsKMTQ0NzQ6IHR5cGVk ZWYgdW5zaWduZWQgaW50IF9fdTMyOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IF9fZXh0ZW5zaW9u X18gdHlwZWRlZiBfX3NpZ25lZF9fIGxvbmcgbG9uZyBfX3M2NDsKMTQ0NzQ6IF9fZXh0ZW5zaW9u X18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX191NjQ7CjE0NDc0OiAjIDEyICIuL2luY2x1 ZGUvYXNtLWdlbmVyaWMvaW50LWxsNjQuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiB0eXBlZGVmIF9fczggczg7CjE0NDc0OiB0eXBlZGVmIF9fdTggdTg7CjE0NDc0 OiB0eXBlZGVmIF9fczE2IHMxNjsKMTQ0NzQ6IHR5cGVkZWYgX191MTYgdTE2OwoxNDQ3NDogdHlw ZWRlZiBfX3MzMiBzMzI7CjE0NDc0OiB0eXBlZGVmIF9fdTMyIHUzMjsKMTQ0NzQ6IHR5cGVkZWYg X19zNjQgczY0OwoxNDQ3NDogdHlwZWRlZiBfX3U2NCB1NjQ7CjE0NDc0OiAjIDggIi4vaW5jbHVk ZS91YXBpL2FzbS1nZW5lcmljL3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2dlbmVyYXRlZC91YXBpL2FzbS90eXBlcy5oIiAyCjE0NDc0OiAjIDYgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMTQgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3R5 cGVzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDEK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGlu dXgvc3RkZGVmLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zdGRkZWYuaCIgMQoxNDQ3NDogIyA2ICIuL2luY2x1ZGUv bGludXgvc3RkZGVmLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZW51bSB7CjE0NDc0OiAgZmFsc2UgPSAwLAoxNDQ3NDogIHRydWUgPSAxCjE0NDc0OiB9OwoxNDQ3 NDogIyA2ICIuL2luY2x1ZGUvdWFwaS9saW51eC9wb3NpeF90eXBlcy5oIiAyCjE0NDc0OiAjIDI1 ICIuL2luY2x1ZGUvdWFwaS9saW51eC9wb3NpeF90eXBlcy5oIgoxNDQ3NDogdHlwZWRlZiBzdHJ1 Y3QgewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmRzX2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mKGxv bmcpKV07CjE0NDc0OiB9IF9fa2VybmVsX2ZkX3NldDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0 eXBlZGVmIHZvaWQgKCpfX2tlcm5lbF9zaWdoYW5kbGVyX3QpKGludCk7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogdHlwZWRlZiBpbnQgX19rZXJuZWxfa2V5X3Q7CjE0NDc0OiB0eXBlZGVmIGludCBf X2tlcm5lbF9tcWRfdDsKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L3Bvc2l4X3R5cGVzLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vcG9zaXhfdHlwZXNfNjQuaCIgMQoxNDQ3 NDogIyAxMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3Bvc2l4X3R5cGVzXzY0LmgiCjE0 NDc0OiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX29sZF91aWRfdDsKMTQ0NzQ6IHR5 cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfb2xkX2dpZF90OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX2tlcm5lbF9vbGRfZGV2X3Q7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9wb3NpeF90eXBl cy5oIiAxCjE0NDc0OiAjIDE1ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9wb3NpeF90eXBl cy5oIgoxNDQ3NDogdHlwZWRlZiBsb25nIF9fa2VybmVsX2xvbmdfdDsKMTQ0NzQ6IHR5cGVkZWYg dW5zaWduZWQgbG9uZyBfX2tlcm5lbF91bG9uZ190OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogdHlwZWRlZiBfX2tlcm5lbF91bG9uZ190IF9fa2VybmVsX2lub190OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfbW9kZV90 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBpbnQgX19rZXJuZWxfcGlk X3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIGludCBfX2tlcm5lbF9p cGNfcGlkX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHVuc2lnbmVk IGludCBfX2tlcm5lbF91aWRfdDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVs X2dpZF90OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBfX2tlcm5lbF9s b25nX3QgX19rZXJuZWxfc3VzZWNvbmRzX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiB0eXBlZGVmIGludCBfX2tlcm5lbF9kYWRkcl90OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfdWlkMzJfdDsKMTQ0NzQ6IHR5cGVk ZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX2dpZDMyX3Q7CjE0NDc0OiAjIDcyICIuL2luY2x1ZGUv dWFwaS9hc20tZ2VuZXJpYy9wb3NpeF90eXBlcy5oIgoxNDQ3NDogdHlwZWRlZiBfX2tlcm5lbF91 bG9uZ190IF9fa2VybmVsX3NpemVfdDsKMTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxfbG9uZ190IF9f a2VybmVsX3NzaXplX3Q7CjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX2xvbmdfdCBfX2tlcm5lbF9w dHJkaWZmX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYg c3RydWN0IHsKMTQ0NzQ6ICBpbnQgdmFsWzJdOwoxNDQ3NDogfSBfX2tlcm5lbF9mc2lkX3Q7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBfX2tl cm5lbF9sb25nX3QgX19rZXJuZWxfb2ZmX3Q7CjE0NDc0OiB0eXBlZGVmIGxvbmcgbG9uZyBfX2tl cm5lbF9sb2ZmX3Q7CjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX2xvbmdfdCBfX2tlcm5lbF9vbGRf dGltZV90OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBsb25nIGxvbmcg X19rZXJuZWxfdGltZTY0X3Q7CjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX2xvbmdfdCBfX2tlcm5l bF9jbG9ja190OwoxNDQ3NDogdHlwZWRlZiBpbnQgX19rZXJuZWxfdGltZXJfdDsKMTQ0NzQ6IHR5 cGVkZWYgaW50IF9fa2VybmVsX2Nsb2NraWRfdDsKMTQ0NzQ6IHR5cGVkZWYgY2hhciAqIF9fa2Vy bmVsX2NhZGRyX3Q7CjE0NDc0OiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX3VpZDE2 X3Q7CjE0NDc0OiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2dpZDE2X3Q7CjE0NDc0 OiAjIDE5ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vcG9zaXhfdHlwZXNfNjQuaCIgMgox NDQ3NDogIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiIDIKMTQ0NzQ6 ICMgMzcgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMTUg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMjkgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L3R5cGVzLmgiCjE0NDc0OiB0eXBlZGVmIF9fdTE2IF9fbGUxNjsKMTQ0NzQ6IHR5 cGVkZWYgX191MTYgX19iZTE2OwoxNDQ3NDogdHlwZWRlZiBfX3UzMiBfX2xlMzI7CjE0NDc0OiB0 eXBlZGVmIF9fdTMyIF9fYmUzMjsKMTQ0NzQ6IHR5cGVkZWYgX191NjQgX19sZTY0OwoxNDQ3NDog dHlwZWRlZiBfX3U2NCBfX2JlNjQ7CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgX191MTYgX19zdW0x NjsKMTQ0NzQ6IHR5cGVkZWYgX191MzIgX193c3VtOwoxNDQ3NDogIyA1MiAiLi9pbmNsdWRlL3Vh cGkvbGludXgvdHlwZXMuaCIKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgX19wb2xsX3Q7CjE0NDc0 OiAjIDE4MSAiLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgiIDIKMTQ0NzQ6ICMgMTk2ICIuL2lu Y2x1ZGUvbGludXgvY29tcGlsZXIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygoX19ub19pbnN0cnVtZW50X2Z1bmN0aW9uX18pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpCjE0NDc0OiB2b2lkIF9fcmVhZF9vbmNlX3NpemUoY29uc3Qgdm9sYXRpbGUg dm9pZCAqcCwgdm9pZCAqcmVzLCBpbnQgc2l6ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyBzd2l0Y2gg KHNpemUpIHsgY2FzZSAxOiAqKF9fdTggKilyZXMgPSAqKHZvbGF0aWxlIF9fdTggKilwOyBicmVh azsgY2FzZSAyOiAqKF9fdTE2ICopcmVzID0gKih2b2xhdGlsZSBfX3UxNiAqKXA7IGJyZWFrOyBj YXNlIDQ6ICooX191MzIgKilyZXMgPSAqKHZvbGF0aWxlIF9fdTMyICopcDsgYnJlYWs7IGNhc2Ug ODogKihfX3U2NCAqKXJlcyA9ICoodm9sYXRpbGUgX191NjQgKilwOyBicmVhazsgZGVmYXVsdDog X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgX19idWlsdGluX21lbWNweSgo dm9pZCAqKXJlcywgKGNvbnN0IHZvaWQgKilwLCBzaXplKTsgX19hc21fXyBfX3ZvbGF0aWxlX18o IiI6IDogOiJtZW1vcnkiKTsgfSB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjE0ICIuL2luY2x1ZGUv bGludXgvY29tcGlsZXIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo X19ub19pbnN0cnVtZW50X2Z1bmN0aW9uX18pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpCjE0NDc0OiB2b2lkIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjayhjb25zdCB2b2xhdGls ZSB2b2lkICpwLCB2b2lkICpyZXMsIGludCBzaXplKQoxNDQ3NDogewoxNDQ3NDogICh7IHN3aXRj aCAoc2l6ZSkgeyBjYXNlIDE6ICooX191OCAqKXJlcyA9ICoodm9sYXRpbGUgX191OCAqKXA7IGJy ZWFrOyBjYXNlIDI6ICooX191MTYgKilyZXMgPSAqKHZvbGF0aWxlIF9fdTE2ICopcDsgYnJlYWs7 IGNhc2UgNDogKihfX3UzMiAqKXJlcyA9ICoodm9sYXRpbGUgX191MzIgKilwOyBicmVhazsgY2Fz ZSA4OiAqKF9fdTY0ICopcmVzID0gKih2b2xhdGlsZSBfX3U2NCAqKXA7IGJyZWFrOyBkZWZhdWx0 OiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBfX2J1aWx0aW5fbWVtY3B5 KCh2b2lkICopcmVzLCAoY29uc3Qgdm9pZCAqKXAsIHNpemUpOyBfX2FzbV9fIF9fdm9sYXRpbGVf XygiIjogOiA6Im1lbW9yeSIpOyB9IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fd3JpdGVfb25jZV9zaXplKHZv bGF0aWxlIHZvaWQgKnAsIHZvaWQgKnJlcywgaW50IHNpemUpCjE0NDc0OiB7CjE0NDc0OiAgc3dp dGNoIChzaXplKSB7CjE0NDc0OiAgY2FzZSAxOiAqKHZvbGF0aWxlIF9fdTggKilwID0gKihfX3U4 ICopcmVzOyBicmVhazsKMTQ0NzQ6ICBjYXNlIDI6ICoodm9sYXRpbGUgX191MTYgKilwID0gKihf X3UxNiAqKXJlczsgYnJlYWs7CjE0NDc0OiAgY2FzZSA0OiAqKHZvbGF0aWxlIF9fdTMyICopcCA9 ICooX191MzIgKilyZXM7IGJyZWFrOwoxNDQ3NDogIGNhc2UgODogKih2b2xhdGlsZSBfX3U2NCAq KXAgPSAqKF9fdTY0ICopcmVzOyBicmVhazsKMTQ0NzQ6ICBkZWZhdWx0OgoxNDQ3NDogICBfX2Fz bV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogICBfX2J1aWx0aW5fbWVt Y3B5KCh2b2lkICopcCwgKGNvbnN0IHZvaWQgKilyZXMsIHNpemUpOwoxNDQ3NDogICBfX2FzbV9f IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMjU2ICIuL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9iYXJyaWVyLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmgiIDEKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTMgIi4vaW5jbHVkZS9saW51eC90 eXBlcy5oIgoxNDQ3NDogdHlwZWRlZiB1MzIgX19rZXJuZWxfZGV2X3Q7CjE0NDc0OiAKMTQ0NzQ6 IHR5cGVkZWYgX19rZXJuZWxfZmRfc2V0IGZkX3NldDsKMTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxf ZGV2X3QgZGV2X3Q7CjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX2lub190IGlub190OwoxNDQ3NDog dHlwZWRlZiBfX2tlcm5lbF9tb2RlX3QgbW9kZV90OwoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBz aG9ydCB1bW9kZV90OwoxNDQ3NDogdHlwZWRlZiB1MzIgbmxpbmtfdDsKMTQ0NzQ6IHR5cGVkZWYg X19rZXJuZWxfb2ZmX3Qgb2ZmX3Q7CjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX3BpZF90IHBpZF90 OwoxNDQ3NDogdHlwZWRlZiBfX2tlcm5lbF9kYWRkcl90IGRhZGRyX3Q7CjE0NDc0OiB0eXBlZGVm IF9fa2VybmVsX2tleV90IGtleV90OwoxNDQ3NDogdHlwZWRlZiBfX2tlcm5lbF9zdXNlY29uZHNf dCBzdXNlY29uZHNfdDsKMTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxfdGltZXJfdCB0aW1lcl90Owox NDQ3NDogdHlwZWRlZiBfX2tlcm5lbF9jbG9ja2lkX3QgY2xvY2tpZF90OwoxNDQ3NDogdHlwZWRl ZiBfX2tlcm5lbF9tcWRfdCBtcWRfdDsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBfQm9vbCBib29s OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX3VpZDMyX3QgdWlkX3Q7CjE0NDc0OiB0 eXBlZGVmIF9fa2VybmVsX2dpZDMyX3QgZ2lkX3Q7CjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX3Vp ZDE2X3QgdWlkMTZfdDsKMTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxfZ2lkMTZfdCBnaWQxNl90Owox NDQ3NDogCjE0NDc0OiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludHB0cl90OwoxNDQ3NDogIyA0 NiAiLi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX2xvZmZf dCBsb2ZmX3Q7CjE0NDc0OiAjIDU1ICIuL2luY2x1ZGUvbGludXgvdHlwZXMuaCIKMTQ0NzQ6IHR5 cGVkZWYgX19rZXJuZWxfc2l6ZV90IHNpemVfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogdHlwZWRlZiBfX2tlcm5lbF9zc2l6ZV90IHNzaXplX3Q7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxfcHRyZGlmZl90IHB0 cmRpZmZfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBf X2tlcm5lbF9jbG9ja190IGNsb2NrX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxfY2FkZHJfdCBjYWRkcl90OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsKMTQ0NzQ6IHR5cGVk ZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgaW50IHVf aW50OwoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdW5jaGFyOwoxNDQ3NDogdHlwZWRlZiB1bnNp Z25lZCBzaG9ydCB1c2hvcnQ7CjE0NDc0OiB0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwoxNDQ3 NDogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiB0eXBlZGVmIHU4IHVfaW50OF90OwoxNDQ3NDogdHlwZWRlZiBzOCBpbnQ4 X3Q7CjE0NDc0OiB0eXBlZGVmIHUxNiB1X2ludDE2X3Q7CjE0NDc0OiB0eXBlZGVmIHMxNiBpbnQx Nl90OwoxNDQ3NDogdHlwZWRlZiB1MzIgdV9pbnQzMl90OwoxNDQ3NDogdHlwZWRlZiBzMzIgaW50 MzJfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdTggdWludDhfdDsK MTQ0NzQ6IHR5cGVkZWYgdTE2IHVpbnQxNl90OwoxNDQ3NDogdHlwZWRlZiB1MzIgdWludDMyX3Q7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1NjQgdWludDY0X3Q7CjE0NDc0OiB0eXBl ZGVmIHU2NCB1X2ludDY0X3Q7CjE0NDc0OiB0eXBlZGVmIHM2NCBpbnQ2NF90OwoxNDQ3NDogIyAx MjUgIi4vaW5jbHVkZS9saW51eC90eXBlcy5oIgoxNDQ3NDogdHlwZWRlZiB1NjQgc2VjdG9yX3Q7 CjE0NDc0OiB0eXBlZGVmIHU2NCBibGtjbnRfdDsKMTQ0NzQ6ICMgMTQzICIuL2luY2x1ZGUvbGlu dXgvdHlwZXMuaCIKMTQ0NzQ6IHR5cGVkZWYgdTY0IGRtYV9hZGRyX3Q7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgaW50IGdmcF90OwoxNDQ3 NDogdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2xhYl9mbGFnc190OwoxNDQ3NDogdHlwZWRlZiB1bnNp Z25lZCBpbnQgZm1vZGVfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHU2NCBwaHlz X2FkZHJfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBw aHlzX2FkZHJfdCByZXNvdXJjZV9zaXplX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlycV9od19udW1iZXJfdDsK MTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgewoxNDQ3NDogIGludCBjb3VudGVyOwoxNDQ3 NDogfSBhdG9taWNfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7CjE0 NDc0OiAgczY0IGNvdW50ZXI7CjE0NDc0OiB9IGF0b21pYzY0X3Q7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGxpc3RfaGVhZCB7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCAqbmV4dCwg KnByZXY7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaGxpc3RfaGVhZCB7CjE0NDc0 OiAgc3RydWN0IGhsaXN0X25vZGUgKmZpcnN0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGhsaXN0X25vZGUgewoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlICpuZXh0LCAqKnBwcmV2 OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHVzdGF0IHsKMTQ0NzQ6ICBfX2tlcm5l bF9kYWRkcl90IGZfdGZyZWU7CjE0NDc0OiAgX19rZXJuZWxfaW5vX3QgZl90aW5vZGU7CjE0NDc0 OiAgY2hhciBmX2ZuYW1lWzZdOwoxNDQ3NDogIGNoYXIgZl9mcGFja1s2XTsKMTQ0NzQ6IH07CjE0 NDc0OiAjIDIxNCAiLi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCjE0NDc0OiBzdHJ1Y3QgY2FsbGJh Y2tfaGVhZCB7CjE0NDc0OiAgc3RydWN0IGNhbGxiYWNrX2hlYWQgKm5leHQ7CjE0NDc0OiAgdm9p ZCAoKmZ1bmMpKHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkKTsKMTQ0NzQ6IH0gX19hdHRyaWJ1 dGVfXygoYWxpZ25lZChzaXplb2Yodm9pZCAqKSkpKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0 eXBlZGVmIHZvaWQgKCpyY3VfY2FsbGJhY2tfdCkoc3RydWN0IGNhbGxiYWNrX2hlYWQgKmhlYWQp OwoxNDQ3NDogdHlwZWRlZiB2b2lkICgqY2FsbF9yY3VfZnVuY190KShzdHJ1Y3QgY2FsbGJhY2tf aGVhZCAqaGVhZCwgcmN1X2NhbGxiYWNrX3QgZnVuYyk7CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYg dm9pZCAoKnN3YXBfZnVuY190KSh2b2lkICphLCB2b2lkICpiLCBpbnQgc2l6ZSk7CjE0NDc0OiAK MTQ0NzQ6IHR5cGVkZWYgaW50ICgqY21wX3JfZnVuY190KShjb25zdCB2b2lkICphLCBjb25zdCB2 b2lkICpiLCBjb25zdCB2b2lkICpwcml2KTsKMTQ0NzQ6IHR5cGVkZWYgaW50ICgqY21wX2Z1bmNf dCkoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYik7CjE0NDc0OiAjIDggIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYWx0ZXJuYXRpdmUuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hc20uaCIgMQoxNDQ3NDogIyAxODIgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYXNtLmgiCjE0NDc0OiByZWdpc3RlciB1bnNpZ25lZCBsb25nIGN1cnJlbnRf c3RhY2tfcG9pbnRlciBhc20oInJzcCIpOwoxNDQ3NDogIyAxMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9hbHRlcm5hdGl2ZS5oIiAyCjE0NDc0OiAjIDU4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L2FsdGVybmF0aXZlLmgiCjE0NDc0OiBzdHJ1Y3QgYWx0X2luc3RyIHsKMTQ0NzQ6ICBzMzIgaW5z dHJfb2Zmc2V0OwoxNDQ3NDogIHMzMiByZXBsX29mZnNldDsKMTQ0NzQ6ICB1MTYgY3B1aWQ7CjE0 NDc0OiAgdTggaW5zdHJsZW47CjE0NDc0OiAgdTggcmVwbGFjZW1lbnRsZW47CjE0NDc0OiAgdTgg cGFkbGVuOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBhbHRlcm5hdGl2 ZXNfcGF0Y2hlZDsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgYWx0ZXJuYXRpdmVfaW5zdHJ1 Y3Rpb25zKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYXBwbHlfYWx0ZXJuYXRpdmVzKHN0cnVj dCBhbHRfaW5zdHIgKnN0YXJ0LCBzdHJ1Y3QgYWx0X2luc3RyICplbmQpOwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgbW9kdWxlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGFsdGVy bmF0aXZlc19zbXBfbW9kdWxlX2FkZChzdHJ1Y3QgbW9kdWxlICptb2QsIGNoYXIgKm5hbWUsCjE0 NDc0OiAgICAgIHZvaWQgKmxvY2tzLCB2b2lkICpsb2Nrc19lbmQsCjE0NDc0OiAgICAgIHZvaWQg KnRleHQsIHZvaWQgKnRleHRfZW5kKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGFsdGVybmF0aXZlc19z bXBfbW9kdWxlX2RlbChzdHJ1Y3QgbW9kdWxlICptb2QpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYWx0 ZXJuYXRpdmVzX2VuYWJsZV9zbXAodm9pZCk7CjE0NDc0OiBleHRlcm4gaW50IGFsdGVybmF0aXZl c190ZXh0X3Jlc2VydmVkKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpOwoxNDQ3NDogZXh0ZXJuIGJv b2wgc2tpcF9zbXBfYWx0ZXJuYXRpdmVzOwoxNDQ3NDogIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL2JhcnJpZXIuaCIgMgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vcHMu aCIgMQoxNDQ3NDogIyAxNDMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9wcy5oIgoxNDQ3NDog ZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBjb25zdCAqaWRlYWxfbm9wczsKMTQ0NzQ6IGV4 dGVybiB2b2lkIGFyY2hfaW5pdF9pZGVhbF9ub3BzKHZvaWQpOwoxNDQ3NDogIyA3ICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2JhcnJpZXIuaCIgMgoxNDQ3NDogIyAzNiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9iYXJyaWVyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgdW5zaWduZWQgbG9uZyBhcnJheV9pbmRleF9t YXNrX25vc3BlYyh1bnNpZ25lZCBsb25nIGluZGV4LAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIHNp emUpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtYXNrOwoxNDQ3NDogCjE0NDc0OiAg YXNtIHZvbGF0aWxlICgiY21wICUxLCUyOyBzYmIgJTAsJTA7IgoxNDQ3NDogICAgOiI9ciIgKG1h c2spCjE0NDc0OiAgICA6ImciKHNpemUpLCJyIiAoaW5kZXgpCjE0NDc0OiAgICA6ImNjIik7CjE0 NDc0OiAgcmV0dXJuIG1hc2s7CjE0NDc0OiB9CjE0NDc0OiAjIDg1ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2JhcnJpZXIuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JhcnJp ZXIuaCIgMQoxNDQ3NDogIyAxNiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JhcnJpZXIuaCIKMTQ0 NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgiIDEKMTQ0NzQ6ICMgMTcgIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9iYXJyaWVyLmgiIDIKMTQ0NzQ6ICMgODYgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vYmFycmllci5oIiAyCjE0NDc0OiAjIDI1NyAiLi9pbmNsdWRlL2xpbnV4L2NvbXBp bGVyLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLWNoZWNrcy5oIiAxCjE0 NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgva2FzYW4tY2hlY2tzLmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgYm9v bCBfX2thc2FuX2NoZWNrX3JlYWQoY29uc3Qgdm9sYXRpbGUgdm9pZCAqcCwgdW5zaWduZWQgaW50 IHNpemUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkg Ym9vbCBfX2thc2FuX2NoZWNrX3dyaXRlKGNvbnN0IHZvbGF0aWxlIHZvaWQgKnAsIHVuc2lnbmVk IGludCBzaXplKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDog IyAzNCAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLWNoZWNrcy5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChfX25vX2luc3RydW1lbnRfZnVuY3Rpb25fXykpIGJvb2wga2Fz YW5fY2hlY2tfcmVhZChjb25zdCB2b2xhdGlsZSB2b2lkICpwLCB1bnNpZ25lZCBpbnQgc2l6ZSkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygoX19ub19pbnN0cnVtZW50X2Z1bmN0aW9uX18pKSBib29sIGth c2FuX2NoZWNrX3dyaXRlKGNvbnN0IHZvbGF0aWxlIHZvaWQgKnAsIHVuc2lnbmVkIGludCBzaXpl KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogIyAyNTggIi4v aW5jbHVkZS9saW51eC9jb21waWxlci5oIiAyCjE0NDc0OiAjIDI3NyAiLi9pbmNsdWRlL2xpbnV4 L2NvbXBpbGVyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9fbm9f aW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KQoxNDQ3NDogdW5zaWduZWQgbG9uZyByZWFkX3dvcmRfYXRfYV90aW1lKGNvbnN0IHZvaWQgKmFk ZHIpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfcmVhZChhZGRyLCAxKTsKMTQ0NzQ6ICBy ZXR1cm4gKih1bnNpZ25lZCBsb25nICopYWRkcjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzA4ICIuL2lu Y2x1ZGUvbGludXgvY29tcGlsZXIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygoX19ub19pbnN0cnVtZW50X2Z1bmN0aW9uX18pKSB2b2lkICpvZmZzZXRfdG9fcHRyKGNv bnN0IGludCAqb2ZmKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodm9pZCAqKSgodW5zaWduZWQg bG9uZylvZmYgKyAqb2ZmKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDQgIi4vaW5jbHVkZS9saW51eC9l eHBvcnQuaCIgMgoxNDQ3NDogIyA2MCAiLi9pbmNsdWRlL2xpbnV4L2V4cG9ydC5oIgoxNDQ3NDog c3RydWN0IGtlcm5lbF9zeW1ib2wgewoxNDQ3NDogIGludCB2YWx1ZV9vZmZzZXQ7CjE0NDc0OiAg aW50IG5hbWVfb2Zmc2V0OwoxNDQ3NDogIGludCBuYW1lc3BhY2Vfb2Zmc2V0OwoxNDQ3NDogfTsK MTQ0NzQ6ICMgOCAiLi9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMgoxNDQ3NDogIyAxICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL2xpbmthZ2UuaCIgMQoxNDQ3NDogIyA5ICIuL2luY2x1ZGUvbGlu dXgvbGlua2FnZS5oIiAyCjE0NDc0OiAjIDE3ICIuL2luY2x1ZGUvbGludXgva2dkYi5oIiAyCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9pbml0LmgiIDEKMTQ0NzQ6ICMgMTE2ICIuL2luY2x1 ZGUvbGludXgvaW5pdC5oIgoxNDQ3NDogdHlwZWRlZiBpbnQgKCppbml0Y2FsbF90KSh2b2lkKTsK MTQ0NzQ6IHR5cGVkZWYgdm9pZCAoKmV4aXRjYWxsX3QpKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHR5cGVkZWYgaW50IGluaXRjYWxsX2VudHJ5X3Q7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGluaXRj YWxsX3QgaW5pdGNhbGxfZnJvbV9lbnRyeShpbml0Y2FsbF9lbnRyeV90ICplbnRyeSkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gb2Zmc2V0X3RvX3B0cihlbnRyeSk7CjE0NDc0OiB9CjE0NDc0OiAj IDEzNSAiLi9pbmNsdWRlL2xpbnV4L2luaXQuaCIKMTQ0NzQ6IGV4dGVybiBpbml0Y2FsbF9lbnRy eV90IF9fY29uX2luaXRjYWxsX3N0YXJ0W10sIF9fY29uX2luaXRjYWxsX2VuZFtdOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdm9pZCAoKmN0b3JfZm5fdCkodm9pZCk7CjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgZG9fb25lX2luaXRjYWxsKGluaXRjYWxsX3QgZm4pOwoxNDQ3NDogZXh0ZXJuIGNo YXIgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LmRhdGEiKSkpIGJvb3RfY29tbWFu ZF9saW5lW107CjE0NDc0OiBleHRlcm4gY2hhciAqc2F2ZWRfY29tbWFuZF9saW5lOwoxNDQ3NDog ZXh0ZXJuIHVuc2lnbmVkIGludCByZXNldF9kZXZpY2VzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHZvaWQgc2V0dXBfYXJjaChjaGFyICoqKTsKMTQ0NzQ6IHZvaWQgcHJlcGFyZV9uYW1lc3BhY2Uo dm9pZCk7CjE0NDc0OiB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0 IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIGluaXRfcm9vdGZzKHZvaWQpOwoxNDQ3NDog ZXh0ZXJuIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHJvb3Rmc19mc190eXBlOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBib29sIHJvZGF0YV9lbmFibGVkOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHZvaWQgbWFya19yb2RhdGFfcm8odm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHZvaWQgKCpsYXRlX3RpbWVfaW5pdCkodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBib29sIGluaXRjYWxsX2RlYnVnOwoxNDQ3NDogIyAxOCAiLi9pbmNsdWRlL2xpbnV4L2tnZGIu aCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvYXRvbWljLmgiIDEKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vY21weGNoZy5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmgiIDEKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vcmVxdWlyZWQtZmVhdHVyZXMuaCIgMQoxNDQ3NDogIyA3ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9kaXNhYmxlZC1mZWF0dXJlcy5oIiAxCjE0 NDc0OiAjIDExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmgiIDIKMTQ0NzQ6 ICMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jbXB4Y2hnLmgiIDIKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIF9feGNo Z193cm9uZ19zaXplKHZvaWQpCjE0NDc0OiAgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJCYWQg YXJndW1lbnQgc2l6ZSBmb3IgeGNoZyIpKSk7CjE0NDc0OiBleHRlcm4gdm9pZCBfX2NtcHhjaGdf d3Jvbmdfc2l6ZSh2b2lkKQoxNDQ3NDogIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQmFkIGFy Z3VtZW50IHNpemUgZm9yIGNtcHhjaGciKSkpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgX194YWRkX3dy b25nX3NpemUodm9pZCkKMTQ0NzQ6ICBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIkJhZCBhcmd1 bWVudCBzaXplIGZvciB4YWRkIikpKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYWRkX3dyb25nX3Np emUodm9pZCkKMTQ0NzQ6ICBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIkJhZCBhcmd1bWVudCBz aXplIGZvciBhZGQiKSkpOwoxNDQ3NDogIyAxNDUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vY21w eGNoZy5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NtcHhjaGdfNjQuaCIg MQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldF82NGJpdCh2 b2xhdGlsZSB1NjQgKnB0ciwgdTY0IHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAqcHRyID0gdmFsOwox NDQ3NDogfQoxNDQ3NDogIyAxNDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vY21weGNoZy5oIiAy CjE0NDc0OiAjIDkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgiIDIKMTQ0NzQ6ICMg MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ybXdjYy5oIiAxCjE0NDc0OiAjIDEwICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAyCjE0NDc0OiAjIDI1ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2F0b21pYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSBpbnQgYXJjaF9hdG9taWNfcmVhZChjb25zdCBhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAoeyB1bmlvbiB7IHR5cGVv ZigodiktPmNvdW50ZXIpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRf b25jZV9zaXplKCYoKHYpLT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKCh2KS0+Y291bnRlcikp OyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKCh2KS0+Y291bnRlciksIF9fdS5fX2Ms IHNpemVvZigodiktPmNvdW50ZXIpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgNDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYXJjaF9hdG9taWNf c2V0KGF0b21pY190ICp2LCBpbnQgaSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVv Zih2LT5jb3VudGVyKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5 cGVvZih2LT5jb3VudGVyKSkgKGkpIH07IF9fd3JpdGVfb25jZV9zaXplKCYodi0+Y291bnRlciks IF9fdS5fX2MsIHNpemVvZih2LT5jb3VudGVyKSk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0 NDc0OiAjIDUzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGFyY2hfYXRvbWljX2FkZChpbnQgaSwg YXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24g LnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBv cHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiYWRkbCAlMSwlMCIKMTQ0NzQ6ICAgICAg ICA6ICIrbSIgKHYtPmNvdW50ZXIpCjE0NDc0OiAgICAgICAgOiAiaXIiIChpKSA6ICJtZW1vcnki KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYXJjaF9hdG9t aWNfc3ViKGludCBpLCBhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUo Ii5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3 MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJzdWJsICUxLCUw IgoxNDQ3NDogICAgICAgIDogIittIiAodi0+Y291bnRlcikKMTQ0NzQ6ICAgICAgICA6ICJpciIg KGkpIDogIm1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogIyA4MyAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9hdG9taWMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg Ym9vbCBhcmNoX2F0b21pY19zdWJfYW5kX3Rlc3QoaW50IGksIGF0b21pY190ICp2KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAu c21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9w c2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJzdWJsIiAiICVbdmFsXSwgIiAiJVt2YXJd IiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJlIiAiKi9cbiIgOiBbdmFyXSAiK20i ICh2LT5jb3VudGVyKSwgIj1AY2MiICJlIiAoYykgOiBbdmFsXSAiZXIiIChpKSA6ICJtZW1vcnki KTsgYzsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDk1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0 b21pYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGFy Y2hfYXRvbWljX2luYyhhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUo Ii5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3 MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJpbmNsICUwIgox NDQ3NDogICAgICAgIDogIittIiAodi0+Y291bnRlcikgOjogIm1lbW9yeSIpOwoxNDQ3NDogfQox NDQ3NDogIyAxMDggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYXJjaF9hdG9taWNfZGVjKGF0b21p Y190ICp2KQoxNDQ3NDogewoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBf bG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0 aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImRlY2wgJTAiCjE0NDc0OiAgICAgICAgOiAiK20i ICh2LT5jb3VudGVyKSA6OiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAjIDEyMyAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgYm9vbCBhcmNoX2F0b21pY19kZWNfYW5kX3Rlc3QoYXRvbWljX3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGJvb2wgYzsgYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0 aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIg Ii5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImRlY2wiICIgIiAiJVt2YXJdIiAi XG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJlIiAiKi9cbiIgOiBbdmFyXSAiK20iICh2 LT5jb3VudGVyKSwgIj1AY2MiICJlIiAoYykgOiA6ICJtZW1vcnkiKTsgYzsgfSk7CjE0NDc0OiB9 CjE0NDc0OiAjIDEzNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBhcmNoX2F0b21pY19pbmNfYW5k X3Rlc3QoYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGJvb2wgYzsgYXNt IHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxu IiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIg ImluY2wiICIgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJlIiAi Ki9cbiIgOiBbdmFyXSAiK20iICh2LT5jb3VudGVyKSwgIj1AY2MiICJlIiAoYykgOiA6ICJtZW1v cnkiKTsgYzsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE1MiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9hdG9taWMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9v bCBhcmNoX2F0b21pY19hZGRfbmVnYXRpdmUoaW50IGksIGF0b21pY190ICp2KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21w X2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2Vj dGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJhZGRsIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAi XG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJzIiAiKi9cbiIgOiBbdmFyXSAiK20iICh2 LT5jb3VudGVyKSwgIj1AY2MiICJzIiAoYykgOiBbdmFsXSAiZXIiIChpKSA6ICJtZW1vcnkiKTsg YzsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE2NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9t aWMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IGFyY2hf YXRvbWljX2FkZF9yZXR1cm4oaW50IGksIGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBpICsgKHsgX190eXBlb2ZfXyAoKigoKCZ2LT5jb3VudGVyKSkpKSBfX3JldCA9ICgoKGkp KSk7IHN3aXRjaCAoc2l6ZW9mKCooKCgmdi0+Y291bnRlcikpKSkpIHsgY2FzZSAxOiBhc20gdm9s YXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIu bG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFk ZCIgImIgJWIwLCAlMVxuIiA6ICIrcSIgKF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVyKSkp KSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCIucHVz aHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0g LlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFkZCIgIncgJXcwLCAl MVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9y eSIsICJjYyIpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNt cF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNl Y3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFkZCIgImwgJTAsICUxXG4iIDogIityIiAo X19yZXQpLCAiK20iICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJy ZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwi XG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcx OiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAicSAlcTAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20i ICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBkZWZhdWx0 OiBfX3hhZGRfd3Jvbmdfc2l6ZSgpOyB9IF9fcmV0OyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTc3 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBpbnQgYXJjaF9hdG9taWNfc3ViX3JldHVybihpbnQgaSwgYXRv bWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljX2FkZF9yZXR1cm4o LWksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIGludCBhcmNoX2F0b21pY19mZXRjaF9hZGQoaW50IGksIGF0b21pY190ICp2KQox NDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyBfX3R5cGVvZl9fICgqKCgoJnYtPmNvdW50ZXIpKSkp IF9fcmV0ID0gKCgoaSkpKTsgc3dpdGNoIChzaXplb2YoKigoKCZ2LT5jb3VudGVyKSkpKSkgeyBj YXNlIDE6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIu YmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxu XHRsb2NrOyAiICJ4YWRkIiAiYiAlYjAsICUxXG4iIDogIitxIiAoX19yZXQpLCAiK20iICgqKCgo JnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDI6IGFzbSB2 b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIg Ii5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4 YWRkIiAidyAldzAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKCgoJnYtPmNvdW50ZXIp KSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIi5w dXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYg LSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAibCAlMCwg JTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1v cnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5z bXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3Bz ZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJxICVxMCwgJTFcbiIgOiAiK3Ii IChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsg YnJlYWs7IGRlZmF1bHQ6IF9feGFkZF93cm9uZ19zaXplKCk7IH0gX19yZXQ7IH0pOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBh cmNoX2F0b21pY19mZXRjaF9zdWIoaW50IGksIGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiAoeyBfX3R5cGVvZl9fICgqKCgoJnYtPmNvdW50ZXIpKSkpIF9fcmV0ID0gKCgoLWkp KSk7IHN3aXRjaCAoc2l6ZW9mKCooKCgmdi0+Y291bnRlcikpKSkpIHsgY2FzZSAxOiBhc20gdm9s YXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIu bG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFk ZCIgImIgJWIwLCAlMVxuIiA6ICIrcSIgKF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVyKSkp KSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCIucHVz aHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0g LlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFkZCIgIncgJXcwLCAl MVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9y eSIsICJjYyIpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNt cF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNl Y3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFkZCIgImwgJTAsICUxXG4iIDogIityIiAo X19yZXQpLCAiK20iICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJy ZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwi XG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcx OiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAicSAlcTAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20i ICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBkZWZhdWx0 OiBfX3hhZGRfd3Jvbmdfc2l6ZSgpOyB9IF9fcmV0OyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgYXJjaF9hdG9taWNfY21w eGNoZyhhdG9taWNfdCAqdiwgaW50IG9sZCwgaW50IG5ldykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gKHsgX190eXBlb2ZfXygqKCgmdi0+Y291bnRlcikpKSBfX3JldDsgX190eXBlb2ZfXygqKCgm di0+Y291bnRlcikpKSBfX29sZCA9ICgob2xkKSk7IF9fdHlwZW9mX18oKigoJnYtPmNvdW50ZXIp KSkgX19uZXcgPSAoKG5ldykpOyBzd2l0Y2ggKChzaXplb2YoKigmdi0+Y291bnRlcikpKSkgeyBj YXNlIDE6IHsgdm9sYXRpbGUgdTggKl9fcHRyID0gKHZvbGF0aWxlIHU4ICopKCgmdi0+Y291bnRl cikpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFs aWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRs b2NrOyAiICJjbXB4Y2hnYiAlMiwlMSIgOiAiPWEiIChfX3JldCksICIrbSIgKCpfX3B0cikgOiAi cSIgKF9fbmV3KSwgIjAiIChfX29sZCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGNhc2UgMjogeyB2 b2xhdGlsZSB1MTYgKl9fcHRyID0gKHZvbGF0aWxlIHUxNiAqKSgoJnYtPmNvdW50ZXIpKTsgYXNt IHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4i ICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAi Y21weGNoZ3cgJTIsJTEiIDogIj1hIiAoX19yZXQpLCAiK20iICgqX19wdHIpIDogInIiIChfX25l dyksICIwIiAoX19vbGQpIDogIm1lbW9yeSIpOyBicmVhazsgfSBjYXNlIDQ6IHsgdm9sYXRpbGUg dTMyICpfX3B0ciA9ICh2b2xhdGlsZSB1MzIgKikoKCZ2LT5jb3VudGVyKSk7IGFzbSB2b2xhdGls ZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcg NjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGds ICUyLCUxIiA6ICI9YSIgKF9fcmV0KSwgIittIiAoKl9fcHRyKSA6ICJyIiAoX19uZXcpLCAiMCIg KF9fb2xkKSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gY2FzZSA4OiB7IHZvbGF0aWxlIHU2NCAqX19w dHIgPSAodm9sYXRpbGUgdTY0ICopKCgmdi0+Y291bnRlcikpOyBhc20gdm9sYXRpbGUoIi5wdXNo c2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAu XG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hncSAlMiwlMSIg OiAiPWEiIChfX3JldCksICIrbSIgKCpfX3B0cikgOiAiciIgKF9fbmV3KSwgIjAiIChfX29sZCkg OiAibWVtb3J5Iik7IGJyZWFrOyB9IGRlZmF1bHQ6IF9fY21weGNoZ193cm9uZ19zaXplKCk7IH0g X19yZXQ7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBhcmNoX2F0b21pY190cnlfY21weGNoZyhhdG9taWNf dCAqdiwgaW50ICpvbGQsIGludCBuZXcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGJvb2wg c3VjY2VzczsgX190eXBlb2ZfXygoKCZ2LT5jb3VudGVyKSkpIF9vbGQgPSAoX190eXBlb2ZfXygo KCZ2LT5jb3VudGVyKSkpKSgoKG9sZCkpKTsgX190eXBlb2ZfXygqKCgoJnYtPmNvdW50ZXIpKSkp IF9fb2xkID0gKl9vbGQ7IF9fdHlwZW9mX18oKigoKCZ2LT5jb3VudGVyKSkpKSBfX25ldyA9ICgo KG5ldykpKTsgc3dpdGNoICgoc2l6ZW9mKCooJnYtPmNvdW50ZXIpKSkpIHsgY2FzZSAxOiB7IHZv bGF0aWxlIHU4ICpfX3B0ciA9ICh2b2xhdGlsZSB1OCAqKSgoKCZ2LT5jb3VudGVyKSkpOyBhc20g dm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIg Ii5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJj bXB4Y2hnYiAlW25ld10sICVbcHRyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAi eiIgIiovXG4iIDogIj1AY2MiICJ6IiAoc3VjY2VzcyksIFtwdHJdICIrbSIgKCpfX3B0ciksIFtv bGRdICIrYSIgKF9fb2xkKSA6IFtuZXddICJxIiAoX19uZXcpIDogIm1lbW9yeSIpOyBicmVhazsg fSBjYXNlIDI6IHsgdm9sYXRpbGUgdTE2ICpfX3B0ciA9ICh2b2xhdGlsZSB1MTYgKikoKCgmdi0+ Y291bnRlcikpKTsgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxu IiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToi ICJcblx0bG9jazsgIiAiY21weGNoZ3cgJVtuZXddLCAlW3B0cl0iICJcblx0Lyogb3V0cHV0IGNv bmRpdGlvbiBjb2RlICIgInoiICIqL1xuIiA6ICI9QGNjIiAieiIgKHN1Y2Nlc3MpLCBbcHRyXSAi K20iICgqX19wdHIpLCBbb2xkXSAiK2EiIChfX29sZCkgOiBbbmV3XSAiciIgKF9fbmV3KSA6ICJt ZW1vcnkiKTsgYnJlYWs7IH0gY2FzZSA0OiB7IHZvbGF0aWxlIHUzMiAqX19wdHIgPSAodm9sYXRp bGUgdTMyICopKCgoJnYtPmNvdW50ZXIpKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5z bXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3Bz ZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGdsICVbbmV3XSwgJVtwdHJdIiAi XG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJ6IiAiKi9cbiIgOiAiPUBjYyIgInoiIChz dWNjZXNzKSwgW3B0cl0gIittIiAoKl9fcHRyKSwgW29sZF0gIithIiAoX19vbGQpIDogW25ld10g InIiIChfX25ldykgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGNhc2UgODogeyB2b2xhdGlsZSB1NjQg Kl9fcHRyID0gKHZvbGF0aWxlIHU2NCAqKSgoKCZ2LT5jb3VudGVyKSkpOyBhc20gdm9sYXRpbGUo Ii5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3 MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hncSAl W25ld10sICVbcHRyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAieiIgIiovXG4i IDogIj1AY2MiICJ6IiAoc3VjY2VzcyksIFtwdHJdICIrbSIgKCpfX3B0ciksIFtvbGRdICIrYSIg KF9fb2xkKSA6IFtuZXddICJyIiAoX19uZXcpIDogIm1lbW9yeSIpOyBicmVhazsgfSBkZWZhdWx0 OiBfX2NtcHhjaGdfd3Jvbmdfc2l6ZSgpOyB9IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFzdWNj ZXNzKSwgMCkpICpfb2xkID0gX19vbGQ7IF9fYnVpbHRpbl9leHBlY3QoISEoc3VjY2VzcyksIDEp OyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGFyY2hfYXRvbWljX3hjaGcoYXRvbWlj X3QgKnYsIGludCBuZXcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IF9fdHlwZW9mX18gKCoo KCZ2LT5jb3VudGVyKSkpIF9fcmV0ID0gKChuZXcpKTsgc3dpdGNoIChzaXplb2YoKigoJnYtPmNv dW50ZXIpKSkpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAiYiAlYjAsICUxXG4i IDogIitxIiAoX19yZXQpLCAiK20iICgqKCgmdi0+Y291bnRlcikpKSA6IDogIm1lbW9yeSIsICJj YyIpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAidyAldzAsICUxXG4i IDogIityIiAoX19yZXQpLCAiK20iICgqKCgmdi0+Y291bnRlcikpKSA6IDogIm1lbW9yeSIsICJj YyIpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAibCAlMCwgJTFcbiIg OiAiK3IiIChfX3JldCksICIrbSIgKCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5IiwgImNj Iik7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIiIgInhjaGciICJxICVxMCwgJTFcbiIg OiAiK3IiIChfX3JldCksICIrbSIgKCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5IiwgImNj Iik7IGJyZWFrOyBkZWZhdWx0OiBfX3hjaGdfd3Jvbmdfc2l6ZSgpOyB9IF9fcmV0OyB9KTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcmNoX2F0b21pY19hbmQoaW50IGksIGF0b21pY190 ICp2KQoxNDQ3NDogewoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9j a3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9u XG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImFuZGwgJTEsJTAiCjE0NDc0OiAgICA6ICIrbSIgKHYt PmNvdW50ZXIpCjE0NDc0OiAgICA6ICJpciIgKGkpCjE0NDc0OiAgICA6ICJtZW1vcnkiKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGFyY2hfYXRvbWljX2ZldGNoX2FuZChpbnQgaSwgYXRv bWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgaW50IHZhbCA9IGFyY2hfYXRvbWljX3JlYWQodik7 CjE0NDc0OiAKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKCFhcmNoX2F0b21pY190cnlfY21weGNoZyh2 LCAmdmFsLCB2YWwgJiBpKSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gdmFsOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hfYXRvbWljX29yKGludCBpLCBhdG9taWNfdCAqdikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwi XG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcx OiIgIlxuXHRsb2NrOyAiICJvcmwgJTEsJTAiCjE0NDc0OiAgICA6ICIrbSIgKHYtPmNvdW50ZXIp CjE0NDc0OiAgICA6ICJpciIgKGkpCjE0NDc0OiAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IGFyY2hfYXRvbWljX2ZldGNoX29yKGludCBpLCBhdG9taWNfdCAqdikK MTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgdmFsID0gYXJjaF9hdG9taWNfcmVhZCh2KTsKMTQ0NzQ6IAox NDQ3NDogIGRvIHsgfSB3aGlsZSAoIWFyY2hfYXRvbWljX3RyeV9jbXB4Y2hnKHYsICZ2YWwsIHZh bCB8IGkpKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiB2YWw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgYXJjaF9hdG9taWNfeG9yKGludCBpLCBhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0 NzQ6ICBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFs aWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRs b2NrOyAiICJ4b3JsICUxLCUwIgoxNDQ3NDogICAgOiAiK20iICh2LT5jb3VudGVyKQoxNDQ3NDog ICAgOiAiaXIiIChpKQoxNDQ3NDogICAgOiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGludCBhcmNoX2F0b21pY19mZXRjaF94b3IoaW50IGksIGF0b21pY190ICp2KQoxNDQ3NDog ewoxNDQ3NDogIGludCB2YWwgPSBhcmNoX2F0b21pY19yZWFkKHYpOwoxNDQ3NDogCjE0NDc0OiAg ZG8geyB9IHdoaWxlICghYXJjaF9hdG9taWNfdHJ5X2NtcHhjaGcodiwgJnZhbCwgdmFsIF4gaSkp OwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHZhbDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0 XzY0LmgiIDEKMTQ0NzQ6ICMgMjAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljNjRfNjQu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NCBhcmNoX2F0b21pYzY0X3JlYWQoY29uc3QgYXRvbWljNjRfdCAqdikKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdW5pb24geyB0eXBlb2YoKHYpLT5jb3VudGVyKSBfX3Zh bDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKCh2KS0+Y291 bnRlciksIF9fdS5fX2MsIHNpemVvZigodiktPmNvdW50ZXIpKTsgZWxzZSBfX3JlYWRfb25jZV9z aXplX25vY2hlY2soJigodiktPmNvdW50ZXIpLCBfX3UuX19jLCBzaXplb2YoKHYpLT5jb3VudGVy KSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDMy ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0LmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hf YXRvbWljNjRfc2V0KGF0b21pYzY0X3QgKnYsIHM2NCBpKQoxNDQ3NDogewoxNDQ3NDogICh7IHVu aW9uIHsgdHlwZW9mKHYtPmNvdW50ZXIpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5f X3ZhbCA9ICggdHlwZW9mKHYtPmNvdW50ZXIpKSAoaSkgfTsgX193cml0ZV9vbmNlX3NpemUoJih2 LT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKHYtPmNvdW50ZXIpKTsgX191Ll9fdmFsOyB9KTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgNDQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljNjRfNjQu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBhcmNoX2F0 b21pYzY0X2FkZChzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gdm9s YXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5s b25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJhZGRx ICUxLCUwIgoxNDQ3NDogICAgICAgIDogIj1tIiAodi0+Y291bnRlcikKMTQ0NzQ6ICAgICAgICA6 ICJlciIgKGkpLCAibSIgKHYtPmNvdW50ZXIpIDogIm1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDog IyA1OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBh cmNoX2F0b21pYzY0X3N1YihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBh c20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRc biIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAi ICJzdWJxICUxLCUwIgoxNDQ3NDogICAgICAgIDogIj1tIiAodi0+Y291bnRlcikKMTQ0NzQ6ICAg ICAgICA6ICJlciIgKGkpLCAibSIgKHYtPmNvdW50ZXIpIDogIm1lbW9yeSIpOwoxNDQ3NDogfQox NDQ3NDogIyA3NCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBhcmNoX2F0b21pYzY0X3N1Yl9hbmRfdGVzdChzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgYm9vbCBjOyBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rp b24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAi LnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAic3VicSIgIiAlW3ZhbF0sICIgIiVb dmFyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAiZSIgIiovXG4iIDogW3Zhcl0g IittIiAodi0+Y291bnRlciksICI9QGNjIiAiZSIgKGMpIDogW3ZhbF0gImVyIiAoaSkgOiAibWVt b3J5Iik7IGM7IH0pOwoxNDQ3NDogfQoxNDQ3NDogIyA4NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9hdG9taWM2NF82NC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIGFyY2hfYXRvbWljNjRfaW5jKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAg YXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0 XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsg IiAiaW5jcSAlMCIKMTQ0NzQ6ICAgICAgICA6ICI9bSIgKHYtPmNvdW50ZXIpCjE0NDc0OiAgICAg ICAgOiAibSIgKHYtPmNvdW50ZXIpIDogIm1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMDAg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljNjRfNjQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBhcmNoX2F0b21pYzY0X2RlYyhhdG9taWM2NF90 ICp2KQoxNDQ3NDogewoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9j a3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9u XG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImRlY3EgJTAiCjE0NDc0OiAgICAgICAgOiAiPW0iICh2 LT5jb3VudGVyKQoxNDQ3NDogICAgICAgIDogIm0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgMTE2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0 LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIGFyY2hfYXRvbWljNjRfZGVjX2FuZF90ZXN0KGF0b21pYzY0X3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGJvb2wgYzsgYXNtIHZvbGF0aWxlICgiLnB1c2hz ZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5c biIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImRlY3EiICIgIiAiJVt2YXJd IiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJlIiAiKi9cbiIgOiBbdmFyXSAiK20i ICh2LT5jb3VudGVyKSwgIj1AY2MiICJlIiAoYykgOiA6ICJtZW1vcnkiKTsgYzsgfSk7CjE0NDc0 OiB9CjE0NDc0OiAjIDEzMCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCBhcmNoX2F0b21pYzY0X2luY19hbmRfdGVzdChhdG9taWM2NF90ICp2KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlv biAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIu cG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJpbmNxIiAiICIgIiVbdmFyXSIgIlxu XHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAiZSIgIiovXG4iIDogW3Zhcl0gIittIiAodi0+ Y291bnRlciksICI9QGNjIiAiZSIgKGMpIDogOiAibWVtb3J5Iik7IGM7IH0pOwoxNDQ3NDogfQox NDQ3NDogIyAxNDUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljNjRfNjQuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgYXJjaF9hdG9taWM2NF9hZGRfbmVnYXRpdmUoczY0IGksIGF0b21pYzY0X3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGJvb2wgYzsgYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0 aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIg Ii5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImFkZHEiICIgJVt2YWxdLCAiICIl W3Zhcl0iICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgInMiICIqL1xuIiA6IFt2YXJd ICIrbSIgKHYtPmNvdW50ZXIpLCAiPUBjYyIgInMiIChjKSA6IFt2YWxdICJlciIgKGkpIDogIm1l bW9yeSIpOyBjOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTU4ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL2F0b21pYzY0XzY0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHM2NCBhcmNoX2F0b21pYzY0X2FkZF9yZXR1cm4oczY0IGksIGF0b21pYzY0X3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGkgKyAoeyBfX3R5cGVvZl9fICgqKCgoJnYtPmNvdW50ZXIp KSkpIF9fcmV0ID0gKCgoaSkpKTsgc3dpdGNoIChzaXplb2YoKigoKCZ2LT5jb3VudGVyKSkpKSkg eyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4i ICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIg IlxuXHRsb2NrOyAiICJ4YWRkIiAiYiAlYjAsICUxXG4iIDogIitxIiAoX19yZXQpLCAiK20iICgq KCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDI6IGFz bSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRc biIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAi ICJ4YWRkIiAidyAldzAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKCgoJnYtPmNvdW50 ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAo Ii5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3 MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAibCAl MCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJt ZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9u IC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5w b3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJxICVxMCwgJTFcbiIgOiAi K3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2Mi KTsgYnJlYWs7IGRlZmF1bHQ6IF9feGFkZF93cm9uZ19zaXplKCk7IH0gX19yZXQ7IH0pOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzNjQgYXJjaF9hdG9taWM2NF9zdWJfcmV0dXJuKHM2NCBpLCBh dG9taWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhcmNoX2F0b21pYzY0X2FkZF9y ZXR1cm4oLWksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQgYXJjaF9hdG9taWM2NF9m ZXRjaF9hZGQoczY0IGksIGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7 IF9fdHlwZW9mX18gKCooKCgmdi0+Y291bnRlcikpKSkgX19yZXQgPSAoKChpKSkpOyBzd2l0Y2gg KHNpemVvZigqKCgoJnYtPmNvdW50ZXIpKSkpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgiLnB1 c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAt IC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJiICViMCwg JTFcbiIgOiAiK3EiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1v cnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5z bXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3Bz ZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJ3ICV3MCwgJTFcbiIgOiAiK3Ii IChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsg YnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJh XCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2 NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJsICUwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIitt IiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSA4 OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGln biA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9j azsgIiAieGFkZCIgInEgJXEwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoKCZ2LT5j b3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgZGVmYXVsdDogX194YWRkX3dy b25nX3NpemUoKTsgfSBfX3JldDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NCBhcmNo X2F0b21pYzY0X2ZldGNoX3N1YihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gKHsgX190eXBlb2ZfXyAoKigoKCZ2LT5jb3VudGVyKSkpKSBfX3JldCA9ICgoKC1p KSkpOyBzd2l0Y2ggKHNpemVvZigqKCgoJnYtPmNvdW50ZXIpKSkpKSB7IGNhc2UgMTogYXNtIHZv bGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAi LmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhh ZGQiICJiICViMCwgJTFcbiIgOiAiK3EiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikp KSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgiLnB1 c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAt IC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJ3ICV3MCwg JTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1v cnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5z bXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3Bz ZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJsICUwLCAlMVxuIiA6ICIrciIg KF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBi cmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFc IlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3 MToiICJcblx0bG9jazsgIiAieGFkZCIgInEgJXEwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIitt IiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgZGVmYXVs dDogX194YWRkX3dyb25nX3NpemUoKTsgfSBfX3JldDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHM2NCBhcmNoX2F0b21pYzY0X2NtcHhjaGcoYXRvbWljNjRfdCAqdiwgczY0IG9sZCwgczY0 IG5ldykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgX190eXBlb2ZfXygqKCgmdi0+Y291bnRl cikpKSBfX3JldDsgX190eXBlb2ZfXygqKCgmdi0+Y291bnRlcikpKSBfX29sZCA9ICgob2xkKSk7 IF9fdHlwZW9mX18oKigoJnYtPmNvdW50ZXIpKSkgX19uZXcgPSAoKG5ldykpOyBzd2l0Y2ggKChz aXplb2YoKigmdi0+Y291bnRlcikpKSkgeyBjYXNlIDE6IHsgdm9sYXRpbGUgdTggKl9fcHRyID0g KHZvbGF0aWxlIHU4ICopKCgmdi0+Y291bnRlcikpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlv biAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIu cG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hnYiAlMiwlMSIgOiAiPWEi IChfX3JldCksICIrbSIgKCpfX3B0cikgOiAicSIgKF9fbmV3KSwgIjAiIChfX29sZCkgOiAibWVt b3J5Iik7IGJyZWFrOyB9IGNhc2UgMjogeyB2b2xhdGlsZSB1MTYgKl9fcHRyID0gKHZvbGF0aWxl IHUxNiAqKSgoJnYtPmNvdW50ZXIpKTsgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9s b2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rp b25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiY21weGNoZ3cgJTIsJTEiIDogIj1hIiAoX19yZXQp LCAiK20iICgqX19wdHIpIDogInIiIChfX25ldyksICIwIiAoX19vbGQpIDogIm1lbW9yeSIpOyBi cmVhazsgfSBjYXNlIDQ6IHsgdm9sYXRpbGUgdTMyICpfX3B0ciA9ICh2b2xhdGlsZSB1MzIgKiko KCZ2LT5jb3VudGVyKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJh XCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2 NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGdsICUyLCUxIiA6ICI9YSIgKF9fcmV0KSwgIittIiAo Kl9fcHRyKSA6ICJyIiAoX19uZXcpLCAiMCIgKF9fb2xkKSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0g Y2FzZSA4OiB7IHZvbGF0aWxlIHU2NCAqX19wdHIgPSAodm9sYXRpbGUgdTY0ICopKCgmdi0+Y291 bnRlcikpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIu YmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxu XHRsb2NrOyAiICJjbXB4Y2hncSAlMiwlMSIgOiAiPWEiIChfX3JldCksICIrbSIgKCpfX3B0cikg OiAiciIgKF9fbmV3KSwgIjAiIChfX29sZCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGRlZmF1bHQ6 IF9fY21weGNoZ193cm9uZ19zaXplKCk7IH0gX19yZXQ7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBhcmNo X2F0b21pYzY0X3RyeV9jbXB4Y2hnKGF0b21pYzY0X3QgKnYsIHM2NCAqb2xkLCBzNjQgbmV3KQox NDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyBib29sIHN1Y2Nlc3M7IF9fdHlwZW9mX18oKCgmdi0+ Y291bnRlcikpKSBfb2xkID0gKF9fdHlwZW9mX18oKCgmdi0+Y291bnRlcikpKSkoKChvbGQpKSk7 IF9fdHlwZW9mX18oKigoKCZ2LT5jb3VudGVyKSkpKSBfX29sZCA9ICpfb2xkOyBfX3R5cGVvZl9f KCooKCgmdi0+Y291bnRlcikpKSkgX19uZXcgPSAoKChuZXcpKSk7IHN3aXRjaCAoKHNpemVvZigq KCZ2LT5jb3VudGVyKSkpKSB7IGNhc2UgMTogeyB2b2xhdGlsZSB1OCAqX19wdHIgPSAodm9sYXRp bGUgdTggKikoKCgmdi0+Y291bnRlcikpKTsgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNt cF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNl Y3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiY21weGNoZ2IgJVtuZXddLCAlW3B0cl0iICJc blx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgInoiICIqL1xuIiA6ICI9QGNjIiAieiIgKHN1 Y2Nlc3MpLCBbcHRyXSAiK20iICgqX19wdHIpLCBbb2xkXSAiK2EiIChfX29sZCkgOiBbbmV3XSAi cSIgKF9fbmV3KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gY2FzZSAyOiB7IHZvbGF0aWxlIHUxNiAq X19wdHIgPSAodm9sYXRpbGUgdTE2ICopKCgoJnYtPmNvdW50ZXIpKSk7IGFzbSB2b2xhdGlsZSgi LnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcx ZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGd3ICVb bmV3XSwgJVtwdHJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJ6IiAiKi9cbiIg OiAiPUBjYyIgInoiIChzdWNjZXNzKSwgW3B0cl0gIittIiAoKl9fcHRyKSwgW29sZF0gIithIiAo X19vbGQpIDogW25ld10gInIiIChfX25ldykgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGNhc2UgNDog eyB2b2xhdGlsZSB1MzIgKl9fcHRyID0gKHZvbGF0aWxlIHUzMiAqKSgoKCZ2LT5jb3VudGVyKSkp OyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWdu IDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2Nr OyAiICJjbXB4Y2hnbCAlW25ld10sICVbcHRyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNv ZGUgIiAieiIgIiovXG4iIDogIj1AY2MiICJ6IiAoc3VjY2VzcyksIFtwdHJdICIrbSIgKCpfX3B0 ciksIFtvbGRdICIrYSIgKF9fb2xkKSA6IFtuZXddICJyIiAoX19uZXcpIDogIm1lbW9yeSIpOyBi cmVhazsgfSBjYXNlIDg6IHsgdm9sYXRpbGUgdTY0ICpfX3B0ciA9ICh2b2xhdGlsZSB1NjQgKiko KCgmdi0+Y291bnRlcikpKTsgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2Nrcyxc ImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIg IjY3MToiICJcblx0bG9jazsgIiAiY21weGNoZ3EgJVtuZXddLCAlW3B0cl0iICJcblx0Lyogb3V0 cHV0IGNvbmRpdGlvbiBjb2RlICIgInoiICIqL1xuIiA6ICI9QGNjIiAieiIgKHN1Y2Nlc3MpLCBb cHRyXSAiK20iICgqX19wdHIpLCBbb2xkXSAiK2EiIChfX29sZCkgOiBbbmV3XSAiciIgKF9fbmV3 KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gZGVmYXVsdDogX19jbXB4Y2hnX3dyb25nX3NpemUoKTsg fSBpZiAoX19idWlsdGluX2V4cGVjdCghISghc3VjY2VzcyksIDApKSAqX29sZCA9IF9fb2xkOyBf X2J1aWx0aW5fZXhwZWN0KCEhKHN1Y2Nlc3MpLCAxKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHM2NCBhcmNoX2F0b21pYzY0X3hjaGcoYXRvbWljNjRfdCAqdiwgczY0IG5ldykKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gKHsgX190eXBlb2ZfXyAoKigoJnYtPmNvdW50ZXIpKSkgX19yZXQg PSAoKG5ldykpOyBzd2l0Y2ggKHNpemVvZigqKCgmdi0+Y291bnRlcikpKSkgeyBjYXNlIDE6IGFz bSB2b2xhdGlsZSAoIiIgInhjaGciICJiICViMCwgJTFcbiIgOiAiK3EiIChfX3JldCksICIrbSIg KCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDI6IGFz bSB2b2xhdGlsZSAoIiIgInhjaGciICJ3ICV3MCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIg KCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDQ6IGFz bSB2b2xhdGlsZSAoIiIgInhjaGciICJsICUwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAo KigoJnYtPmNvdW50ZXIpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgODogYXNt IHZvbGF0aWxlICgiIiAieGNoZyIgInEgJXEwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAo KigoJnYtPmNvdW50ZXIpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGRlZmF1bHQ6IF9f eGNoZ193cm9uZ19zaXplKCk7IH0gX19yZXQ7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGFyY2hfYXRvbWljNjRfYW5kKHM2NCBpLCBhdG9taWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3 NDogIGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxp Z24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxv Y2s7ICIgImFuZHEgJTEsJTAiCjE0NDc0OiAgICA6ICIrbSIgKHYtPmNvdW50ZXIpCjE0NDc0OiAg ICA6ICJlciIgKGkpCjE0NDc0OiAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgczY0IGFyY2hfYXRvbWljNjRfZmV0Y2hfYW5kKHM2NCBpLCBhdG9taWM2NF90ICp2KQoxNDQ3 NDogewoxNDQ3NDogIHM2NCB2YWwgPSBhcmNoX2F0b21pYzY0X3JlYWQodik7CjE0NDc0OiAKMTQ0 NzQ6ICBkbyB7CjE0NDc0OiAgfSB3aGlsZSAoIWFyY2hfYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwg JnZhbCwgdmFsICYgaSkpOwoxNDQ3NDogIHJldHVybiB2YWw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgYXJjaF9hdG9taWM2NF9vcihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsK MTQ0NzQ6ICBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIu YmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxu XHRsb2NrOyAiICJvcnEgJTEsJTAiCjE0NDc0OiAgICA6ICIrbSIgKHYtPmNvdW50ZXIpCjE0NDc0 OiAgICA6ICJlciIgKGkpCjE0NDc0OiAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgczY0IGFyY2hfYXRvbWljNjRfZmV0Y2hfb3IoczY0IGksIGF0b21pYzY0X3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAgczY0IHZhbCA9IGFyY2hfYXRvbWljNjRfcmVhZCh2KTsKMTQ0NzQ6IAox NDQ3NDogIGRvIHsKMTQ0NzQ6ICB9IHdoaWxlICghYXJjaF9hdG9taWM2NF90cnlfY21weGNoZyh2 LCAmdmFsLCB2YWwgfCBpKSk7CjE0NDc0OiAgcmV0dXJuIHZhbDsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBhcmNoX2F0b21pYzY0X3hvcihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6 IHsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4i ICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIg IlxuXHRsb2NrOyAiICJ4b3JxICUxLCUwIgoxNDQ3NDogICAgOiAiK20iICh2LT5jb3VudGVyKQox NDQ3NDogICAgOiAiZXIiIChpKQoxNDQ3NDogICAgOiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NCBhcmNoX2F0b21pYzY0X2ZldGNoX3hvcihzNjQgaSwgYXRvbWljNjRfdCAq dikKMTQ0NzQ6IHsKMTQ0NzQ6ICBzNjQgdmFsID0gYXJjaF9hdG9taWM2NF9yZWFkKHYpOwoxNDQ3 NDogCjE0NDc0OiAgZG8gewoxNDQ3NDogIH0gd2hpbGUgKCFhcmNoX2F0b21pYzY0X3RyeV9jbXB4 Y2hnKHYsICZ2YWwsIHZhbCBeIGkpKTsKMTQ0NzQ6ICByZXR1cm4gdmFsOwoxNDQ3NDogfQoxNDQ3 NDogIyAyNjMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVk LmgiIDEKMTQ0NzQ6ICMgMjAgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVu dGVkLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9idWlsZF9idWcuaCIgMQoxNDQ3NDog IyAyMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIgMgoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogYXRvbWljX3JlYWQoY29uc3QgYXRvbWljX3Qg KnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfcmVhZCh2LCBzaXplb2YoKnYpKTsKMTQ0 NzQ6ICByZXR1cm4gYXJjaF9hdG9taWNfcmVhZCh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDEgIi4v aW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0 NDc0OiBhdG9taWNfc2V0KGF0b21pY190ICp2LCBpbnQgaSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNh bl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICBhcmNoX2F0b21pY19zZXQodiwg aSk7CjE0NDc0OiB9CjE0NDc0OiAjIDU5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWlu c3RydW1lbnRlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljX2FkZChpbnQgaSwgYXRvbWlj X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7 CjE0NDc0OiAgYXJjaF9hdG9taWNfYWRkKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBhdG9taWNfYWRkX3JldHVybihpbnQgaSwgYXRvbWlj X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7 CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljX2FkZF9yZXR1cm4oaSwgdik7CjE0NDc0OiB9CjE0 NDc0OiAjIDEwOCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludAoxNDQ3NDogYXRvbWljX2ZldGNoX2FkZChpbnQgaSwgYXRvbWljX3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAg cmV0dXJuIGFyY2hfYXRvbWljX2ZldGNoX2FkZChpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQ3 ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZAoxNDQ3NDogYXRvbWljX3N1YihpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAg a2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgYXJjaF9hdG9taWNfc3Vi KGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0 OiBhdG9taWNfc3ViX3JldHVybihpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAg a2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRv bWljX3N1Yl9yZXR1cm4oaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAjIDE5NiAiLi9pbmNsdWRlL2Fz bS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogYXRvbWlj X2ZldGNoX3N1YihpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hl Y2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljX2ZldGNo X3N1YihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjM2ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMv YXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljX2luYyhhdG9t aWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYp KTsKMTQ0NzQ6ICBhcmNoX2F0b21pY19pbmModik7CjE0NDc0OiB9CjE0NDc0OiAjIDMyNiAiLi9p bmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0 NzQ6IGF0b21pY19kZWMoYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tf d3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgYXJjaF9hdG9taWNfZGVjKHYpOwoxNDQ3NDog fQoxNDQ3NDogIyA0MTUgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVk LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhdG9taWNfYW5kKGludCBpLCBhdG9taWNfdCAqdikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICBh cmNoX2F0b21pY19hbmQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQKMTQ0NzQ6IGF0b21pY19mZXRjaF9hbmQoaW50IGksIGF0b21pY190ICp2KQoxNDQ3 NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDogIHJl dHVybiBhcmNoX2F0b21pY19mZXRjaF9hbmQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAjIDUxMyAi Li9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQK MTQ0NzQ6IGF0b21pY19vcihpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2Fz YW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgYXJjaF9hdG9taWNfb3IoaSwg dik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0 b21pY19mZXRjaF9vcihpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5f Y2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljX2Zl dGNoX29yKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogIyA1NjEgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhdG9taWNfeG9yKGlu dCBpLCBhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBz aXplb2YoKnYpKTsKMTQ0NzQ6ICBhcmNoX2F0b21pY194b3IoaSwgdik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19mZXRjaF94b3IoaW50 IGksIGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNp emVvZigqdikpOwoxNDQ3NDogIHJldHVybiBhcmNoX2F0b21pY19mZXRjaF94b3IoaSwgdik7CjE0 NDc0OiB9CjE0NDc0OiAjIDYxMCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVt ZW50ZWQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogYXRvbWljX3hjaGcoYXRvbWljX3QgKnYsIGludCBp KQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3 NDogIHJldHVybiBhcmNoX2F0b21pY194Y2hnKHYsIGkpOwoxNDQ3NDogfQoxNDQ3NDogIyA2NTAg Ii4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQK MTQ0NzQ6IGF0b21pY19jbXB4Y2hnKGF0b21pY190ICp2LCBpbnQgb2xkLCBpbnQgbmV3KQoxNDQ3 NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDogIHJl dHVybiBhcmNoX2F0b21pY19jbXB4Y2hnKHYsIG9sZCwgbmV3KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg NjkwICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbAoxNDQ3NDogYXRvbWljX3RyeV9jbXB4Y2hnKGF0b21pY190ICp2LCBpbnQgKm9sZCwgaW50 IG5ldykKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsK MTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZShvbGQsIHNpemVvZigqb2xkKSk7CjE0NDc0OiAgcmV0 dXJuIGFyY2hfYXRvbWljX3RyeV9jbXB4Y2hnKHYsIG9sZCwgbmV3KTsKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgNzM0ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbAoxNDQ3NDogYXRvbWljX3N1Yl9hbmRfdGVzdChpbnQgaSwgYXRvbWljX3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAg cmV0dXJuIGFyY2hfYXRvbWljX3N1Yl9hbmRfdGVzdChpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljX2RlY19hbmRf dGVzdChhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBz aXplb2YoKnYpKTsKMTQ0NzQ6ICByZXR1cm4gYXJjaF9hdG9taWNfZGVjX2FuZF90ZXN0KHYpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCjE0NDc0 OiBhdG9taWNfaW5jX2FuZF90ZXN0KGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIGthc2Fu X2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDogIHJldHVybiBhcmNoX2F0b21pY19p bmNfYW5kX3Rlc3Qodik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19hZGRfbmVnYXRpdmUoaW50IGksIGF0b21pY190ICp2 KQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3 NDogIHJldHVybiBhcmNoX2F0b21pY19hZGRfbmVnYXRpdmUoaSwgdik7CjE0NDc0OiB9CjE0NDc0 OiAjIDgzMyAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHM2NAoxNDQ3NDogYXRvbWljNjRfcmVhZChjb25zdCBhdG9taWM2NF90ICp2KQoxNDQ3NDog ewoxNDQ3NDogIGthc2FuX2NoZWNrX3JlYWQodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJu IGFyY2hfYXRvbWljNjRfcmVhZCh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgODUxICIuL2luY2x1ZGUv YXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRv bWljNjRfc2V0KGF0b21pYzY0X3QgKnYsIHM2NCBpKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2No ZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDogIGFyY2hfYXRvbWljNjRfc2V0KHYsIGkp OwoxNDQ3NDogfQoxNDQ3NDogIyA4NjkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5z dHJ1bWVudGVkLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhdG9taWM2NF9hZGQoczY0IGksIGF0b21p YzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2 KSk7CjE0NDc0OiAgYXJjaF9hdG9taWM2NF9hZGQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKMTQ0NzQ6IGF0b21pYzY0X2FkZF9yZXR1cm4oczY0IGks IGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6 ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljNjRfYWRkX3JldHVybihpLCB2KTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgOTE4ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3Ry dW1lbnRlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgczY0CjE0NDc0OiBhdG9taWM2NF9mZXRjaF9hZGQoczY0IGksIGF0 b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9m KCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljNjRfZmV0Y2hfYWRkKGksIHYpOwoxNDQ3 NDogfQoxNDQ3NDogIyA5NTcgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVu dGVkLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhdG9taWM2NF9zdWIoczY0IGksIGF0b21pYzY0X3Qg KnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0 NDc0OiAgYXJjaF9hdG9taWM2NF9zdWIoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBzNjQKMTQ0NzQ6IGF0b21pYzY0X3N1Yl9yZXR1cm4oczY0IGksIGF0b21p YzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2 KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljNjRfc3ViX3JldHVybihpLCB2KTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgMTAwNiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50 ZWQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZmV0Y2hfc3ViKHM2NCBpLCBhdG9taWM2 NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikp OwoxNDQ3NDogIHJldHVybiBhcmNoX2F0b21pYzY0X2ZldGNoX3N1YihpLCB2KTsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgMTA0NiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQKMTQ0NzQ6IGF0b21pYzY0X2luYyhhdG9taWM2NF90ICp2KQoxNDQ3NDog ewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDogIGFyY2hf YXRvbWljNjRfaW5jKHYpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMTM2ICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljNjRf ZGVjKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwg c2l6ZW9mKCp2KSk7CjE0NDc0OiAgYXJjaF9hdG9taWM2NF9kZWModik7CjE0NDc0OiB9CjE0NDc0 OiAjIDEyMjUgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkCjE0NDc0OiBhdG9taWM2NF9hbmQoczY0IGksIGF0b21pYzY0X3QgKnYpCjE0NDc0 OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgYXJj aF9hdG9taWM2NF9hbmQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzNjQKMTQ0NzQ6IGF0b21pYzY0X2ZldGNoX2FuZChzNjQgaSwgYXRvbWljNjRfdCAqdikK MTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6 ICByZXR1cm4gYXJjaF9hdG9taWM2NF9mZXRjaF9hbmQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAj IDEzMjMgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkCjE0NDc0OiBhdG9taWM2NF9vcihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsK MTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICBhcmNoX2F0 b21pYzY0X29yKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg czY0CjE0NDc0OiBhdG9taWM2NF9mZXRjaF9vcihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6 IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICByZXR1 cm4gYXJjaF9hdG9taWM2NF9mZXRjaF9vcihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTM3MSAi Li9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQK MTQ0NzQ6IGF0b21pYzY0X3hvcihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICBhcmNoX2F0b21pYzY0 X3hvcihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAox NDQ3NDogYXRvbWljNjRfZmV0Y2hfeG9yKHM2NCBpLCBhdG9taWM2NF90ICp2KQoxNDQ3NDogewox NDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDogIHJldHVybiBh cmNoX2F0b21pYzY0X2ZldGNoX3hvcihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQyMCAiLi9p bmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAoxNDQ3 NDogYXRvbWljNjRfeGNoZyhhdG9taWM2NF90ICp2LCBzNjQgaSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBr YXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICByZXR1cm4gYXJjaF9hdG9t aWM2NF94Y2hnKHYsIGkpOwoxNDQ3NDogfQoxNDQ3NDogIyAxNDYwICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CjE0NDc0OiBhdG9taWM2NF9j bXB4Y2hnKGF0b21pYzY0X3QgKnYsIHM2NCBvbGQsIHM2NCBuZXcpCjE0NDc0OiB7CjE0NDc0OiAg a2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRv bWljNjRfY21weGNoZyh2LCBvbGQsIG5ldyk7CjE0NDc0OiB9CjE0NDc0OiAjIDE1MDAgIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCjE0NDc0 OiBhdG9taWM2NF90cnlfY21weGNoZyhhdG9taWM2NF90ICp2LCBzNjQgKm9sZCwgczY0IG5ldykK MTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6 ICBrYXNhbl9jaGVja193cml0ZShvbGQsIHNpemVvZigqb2xkKSk7CjE0NDc0OiAgcmV0dXJuIGFy Y2hfYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgb2xkLCBuZXcpOwoxNDQ3NDogfQoxNDQ3NDogIyAx NTQ0ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbAoxNDQ3NDogYXRvbWljNjRfc3ViX2FuZF90ZXN0KHM2NCBpLCBhdG9taWM2NF90ICp2KQox NDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDog IHJldHVybiBhcmNoX2F0b21pYzY0X3N1Yl9hbmRfdGVzdChpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljNjRfZGVj X2FuZF90ZXN0KGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3Jp dGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljNjRfZGVjX2FuZF90 ZXN0KHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sCjE0NDc0OiBhdG9taWM2NF9pbmNfYW5kX3Rlc3QoYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsK MTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICByZXR1cm4g YXJjaF9hdG9taWM2NF9pbmNfYW5kX3Rlc3Qodik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pYzY0X2FkZF9uZWdhdGl2ZShz NjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2 LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICByZXR1cm4gYXJjaF9hdG9taWM2NF9hZGRfbmVnYXRpdmUo aSwgdik7CjE0NDc0OiB9CjE0NDc0OiAjIDI2NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9t aWMuaCIgMgoxNDQ3NDogIyA4ICIuL2luY2x1ZGUvbGludXgvYXRvbWljLmgiIDIKMTQ0NzQ6ICMg NzQgIi4vaW5jbHVkZS9saW51eC9hdG9taWMuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4 L2F0b21pYy1mYWxsYmFjay5oIiAxCjE0NDc0OiAjIDc5ICIuL2luY2x1ZGUvbGludXgvYXRvbWlj LWZhbGxiYWNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19yZWFkX2FjcXVpcmUoY29uc3Qg YXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IHR5cGVvZigqJih2KS0+Y291 bnRlcikgX19fcDEgPSAoeyB1bmlvbiB7IHR5cGVvZigqJih2KS0+Y291bnRlcikgX192YWw7IGNo YXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJigqJih2KS0+Y291bnRl ciksIF9fdS5fX2MsIHNpemVvZigqJih2KS0+Y291bnRlcikpOyBlbHNlIF9fcmVhZF9vbmNlX3Np emVfbm9jaGVjaygmKComKHYpLT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKComKHYpLT5jb3Vu dGVyKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7IGRvIHsgZXh0ZXJuIHZvaWQg X19jb21waWxldGltZV9hc3NlcnRfODIodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJO ZWVkIG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlm ICghKChzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihjaGFyKSB8fCBzaXplb2YoKiYo diktPmNvdW50ZXIpID09IHNpemVvZihzaG9ydCkgfHwgc2l6ZW9mKComKHYpLT5jb3VudGVyKSA9 PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihsb25nKSkp KSBfX2NvbXBpbGV0aW1lX2Fzc2VydF84MigpOyB9IHdoaWxlICgwKTsgX19hc21fXyBfX3ZvbGF0 aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgX19fcDE7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhdG9taWNfc2V0X3JlbGVhc2Uo YXRvbWljX3QgKnYsIGludCBpKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgZG8geyBleHRlcm4gdm9p ZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF85MSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18o Ik5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikpKTsg aWYgKCEoKHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigq Jih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYodiktPmNvdW50ZXIp ID09IHNpemVvZihpbnQpIHx8IHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGxvbmcp KSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzkxKCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9s YXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJih2KS0+Y291bnRl cikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKiYodikt PmNvdW50ZXIpKSAoaSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJih2KS0+Y291bnRlciksIF9f dS5fX2MsIHNpemVvZigqJih2KS0+Y291bnRlcikpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgw KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjgxICIuL2luY2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNr LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19pbmNfcmV0dXJuKGF0b21pY190ICp2KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBhdG9taWNfYWRkX3JldHVybigxLCB2KTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBhdG9taWNfaW5j X3JldHVybl9hY3F1aXJlKGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9t aWNfYWRkX3JldHVybigxLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBhdG9taWNfaW5jX3JldHVybl9yZWxlYXNlKGF0b21pY190 ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWNfYWRkX3JldHVybigxLCB2KTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBh dG9taWNfaW5jX3JldHVybl9yZWxheGVkKGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBhdG9taWNfYWRkX3JldHVybigxLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzYyICIuL2lu Y2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19m ZXRjaF9pbmMoYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19mZXRj aF9hZGQoMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGludAoxNDQ3NDogYXRvbWljX2ZldGNoX2luY19hY3F1aXJlKGF0b21pY190ICp2KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBhdG9taWNfZmV0Y2hfYWRkKDEsIHYpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19mZXRj aF9pbmNfcmVsZWFzZShhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWlj X2ZldGNoX2FkZCgxLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50CjE0NDc0OiBhdG9taWNfZmV0Y2hfaW5jX3JlbGF4ZWQoYXRvbWljX3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19mZXRjaF9hZGQoMSwgdik7CjE0NDc0OiB9 CjE0NDc0OiAjIDQ1MiAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50CjE0NDc0OiBhdG9taWNfZGVjX3JldHVybihhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYXRvbWljX3N1Yl9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogYXRvbWljX2RlY19yZXR1cm5fYWNx dWlyZShhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljX3N1Yl9yZXR1 cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludAoxNDQ3NDogYXRvbWljX2RlY19yZXR1cm5fcmVsZWFzZShhdG9taWNfdCAqdikKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljX3N1Yl9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogYXRvbWljX2RlY19y ZXR1cm5fcmVsYXhlZChhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWlj X3N1Yl9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAjIDUzMyAiLi9pbmNsdWRlL2xpbnV4 L2F0b21pYy1mYWxsYmFjay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBhdG9taWNfZmV0Y2hfZGVjKGF0 b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWNfZmV0Y2hfc3ViKDEsIHYp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0 NzQ6IGF0b21pY19mZXRjaF9kZWNfYWNxdWlyZShhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYXRvbWljX2ZldGNoX3N1YigxLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBhdG9taWNfZmV0Y2hfZGVjX3JlbGVh c2UoYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19mZXRjaF9zdWIo MSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dAoxNDQ3NDogYXRvbWljX2ZldGNoX2RlY19yZWxheGVkKGF0b21pY190ICp2KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBhdG9taWNfZmV0Y2hfc3ViKDEsIHYpOwoxNDQ3NDogfQoxNDQ3NDogIyA2 NDkgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6 IGF0b21pY19hbmRub3QoaW50IGksIGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIGF0b21p Y19hbmQofmksIHYpOwoxNDQ3NDogfQoxNDQ3NDogIyA2NjUgIi4vaW5jbHVkZS9saW51eC9hdG9t aWMtZmFsbGJhY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogYXRvbWljX2ZldGNoX2FuZG5vdChpbnQg aSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19mZXRjaF9hbmQo fmksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQKMTQ0NzQ6IGF0b21pY19mZXRjaF9hbmRub3RfYWNxdWlyZShpbnQgaSwgYXRvbWljX3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19mZXRjaF9hbmQofmksIHYpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21p Y19mZXRjaF9hbmRub3RfcmVsZWFzZShpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGF0b21pY19mZXRjaF9hbmQofmksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19mZXRjaF9hbmRub3Rf cmVsYXhlZChpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21p Y19mZXRjaF9hbmQofmksIHYpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMDgzICIuL2luY2x1ZGUvbGlu dXgvYXRvbWljLWZhbGxiYWNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19mZXRjaF9hZGRf dW5sZXNzKGF0b21pY190ICp2LCBpbnQgYSwgaW50IHUpCjE0NDc0OiB7CjE0NDc0OiAgaW50IGMg PSBhdG9taWNfcmVhZCh2KTsKMTQ0NzQ6IAoxNDQ3NDogIGRvIHsKMTQ0NzQ6ICAgaWYgKF9fYnVp bHRpbl9leHBlY3QoISEoYyA9PSB1KSwgMCkpCjE0NDc0OiAgICBicmVhazsKMTQ0NzQ6ICB9IHdo aWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKHYsICZjLCBjICsgYSkpOwoxNDQ3NDogCjE0NDc0OiAg cmV0dXJuIGM7CjE0NDc0OiB9CjE0NDc0OiAjIDExMDggIi4vaW5jbHVkZS9saW51eC9hdG9taWMt ZmFsbGJhY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19hZGRfdW5sZXNzKGF0b21pY190 ICp2LCBpbnQgYSwgaW50IHUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19mZXRjaF9h ZGRfdW5sZXNzKHYsIGEsIHUpICE9IHU7CjE0NDc0OiB9CjE0NDc0OiAjIDExMjQgIi4vaW5jbHVk ZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19pbmNf bm90X3plcm8oYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19hZGRf dW5sZXNzKHYsIDEsIDApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sCjE0NDc0OiBhdG9taWNfaW5jX3VubGVzc19uZWdhdGl2ZShhdG9taWNfdCAq dikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgYyA9IGF0b21pY19yZWFkKHYpOwoxNDQ3NDogCjE0NDc0 OiAgZG8gewoxNDQ3NDogICBpZiAoX19idWlsdGluX2V4cGVjdCghIShjIDwgMCksIDApKQoxNDQ3 NDogICAgcmV0dXJuIGZhbHNlOwoxNDQ3NDogIH0gd2hpbGUgKCFhdG9taWNfdHJ5X2NtcHhjaGco diwgJmMsIGMgKyAxKSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljX2Rl Y191bmxlc3NfcG9zaXRpdmUoYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgaW50IGMgPSBh dG9taWNfcmVhZCh2KTsKMTQ0NzQ6IAoxNDQ3NDogIGRvIHsKMTQ0NzQ6ICAgaWYgKF9fYnVpbHRp bl9leHBlY3QoISEoYyA+IDApLCAwKSkKMTQ0NzQ6ICAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6ICB9 IHdoaWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKHYsICZjLCBjIC0gMSkpOwoxNDQ3NDogCjE0NDc0 OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludAoxNDQ3NDogYXRvbWljX2RlY19pZl9wb3NpdGl2ZShhdG9taWNfdCAqdikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBpbnQgZGVjLCBjID0gYXRvbWljX3JlYWQodik7CjE0NDc0OiAKMTQ0NzQ6 ICBkbyB7CjE0NDc0OiAgIGRlYyA9IGMgLSAxOwoxNDQ3NDogICBpZiAoX19idWlsdGluX2V4cGVj dCghIShkZWMgPCAwKSwgMCkpCjE0NDc0OiAgICBicmVhazsKMTQ0NzQ6ICB9IHdoaWxlICghYXRv bWljX3RyeV9jbXB4Y2hnKHYsICZjLCBkZWMpKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBkZWM7 CjE0NDc0OiB9CjE0NDc0OiAjIDExODkgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2su aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfcmVhZF9hY3F1aXJlKGNvbnN0IGF0b21pYzY0 X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IHR5cGVvZigqJih2KS0+Y291bnRlcikg X19fcDEgPSAoeyB1bmlvbiB7IHR5cGVvZigqJih2KS0+Y291bnRlcikgX192YWw7IGNoYXIgX19j WzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJigqJih2KS0+Y291bnRlciksIF9f dS5fX2MsIHNpemVvZigqJih2KS0+Y291bnRlcikpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9j aGVjaygmKComKHYpLT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKComKHYpLT5jb3VudGVyKSk7 IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21w aWxldGltZV9hc3NlcnRfMTE5Mih2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIk5lZWQg bmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikpKTsgaWYgKCEo KHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigqJih2KS0+ Y291bnRlcikgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNp emVvZihpbnQpIHx8IHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGxvbmcpKSkpIF9f Y29tcGlsZXRpbWVfYXNzZXJ0XzExOTIoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7IF9fX3AxOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljNjRfc2V0X3JlbGVhc2Uo YXRvbWljNjRfdCAqdiwgczY0IGkpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBkbyB7IGV4dGVybiB2 b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzEyMDEodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJv cl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIp KSk7IGlmICghKChzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihjaGFyKSB8fCBzaXpl b2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihzaG9ydCkgfHwgc2l6ZW9mKComKHYpLT5jb3Vu dGVyKSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihs b25nKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xMjAxKCk7IH0gd2hpbGUgKDApOyBfX2FzbV9f IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJih2KS0+ Y291bnRlcikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yo KiYodiktPmNvdW50ZXIpKSAoaSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJih2KS0+Y291bnRl ciksIF9fdS5fX2MsIHNpemVvZigqJih2KS0+Y291bnRlcikpOyBfX3UuX192YWw7IH0pOyB9IHdo aWxlICgwKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTM5MSAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1m YWxsYmFjay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgczY0CjE0NDc0OiBhdG9taWM2NF9pbmNfcmV0dXJuKGF0b21pYzY0 X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2FkZF9yZXR1cm4oMSwgdik7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAoxNDQ3 NDogYXRvbWljNjRfaW5jX3JldHVybl9hY3F1aXJlKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIGF0b21pYzY0X2FkZF9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfaW5jX3Jl dHVybl9yZWxlYXNlKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21p YzY0X2FkZF9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfaW5jX3JldHVybl9yZWxheGVkKGF0b21p YzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2FkZF9yZXR1cm4oMSwg dik7CjE0NDc0OiB9CjE0NDc0OiAjIDE0NzIgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJh Y2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZmV0Y2hfaW5jKGF0b21pYzY0X3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FkZCgxLCB2KTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CjE0NDc0OiBhdG9t aWM2NF9mZXRjaF9pbmNfYWNxdWlyZShhdG9taWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBhdG9taWM2NF9mZXRjaF9hZGQoMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZmV0Y2hfaW5jX3JlbGVh c2UoYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hf YWRkKDEsIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBzNjQKMTQ0NzQ6IGF0b21pYzY0X2ZldGNoX2luY19yZWxheGVkKGF0b21pYzY0X3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FkZCgxLCB2KTsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgMTU2MiAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg czY0CjE0NDc0OiBhdG9taWM2NF9kZWNfcmV0dXJuKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIGF0b21pYzY0X3N1Yl9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZGVjX3Jl dHVybl9hY3F1aXJlKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21p YzY0X3N1Yl9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZGVjX3JldHVybl9yZWxlYXNlKGF0b21p YzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X3N1Yl9yZXR1cm4oMSwg dik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAox NDQ3NDogYXRvbWljNjRfZGVjX3JldHVybl9yZWxheGVkKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X3N1Yl9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0 OiAjIDE2NDMgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAox NDQ3NDogYXRvbWljNjRfZmV0Y2hfZGVjKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIGF0b21pYzY0X2ZldGNoX3N1YigxLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CjE0NDc0OiBhdG9taWM2NF9mZXRjaF9kZWNfYWNx dWlyZShhdG9taWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRj aF9zdWIoMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZmV0Y2hfZGVjX3JlbGVhc2UoYXRvbWljNjRfdCAqdikK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfc3ViKDEsIHYpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKMTQ0NzQ6IGF0b21p YzY0X2ZldGNoX2RlY19yZWxheGVkKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGF0b21pYzY0X2ZldGNoX3N1YigxLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTc1OSAiLi9p bmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWlj NjRfYW5kbm90KHM2NCBpLCBhdG9taWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIGF0b21pYzY0 X2FuZCh+aSwgdik7CjE0NDc0OiB9CjE0NDc0OiAjIDE3NzUgIi4vaW5jbHVkZS9saW51eC9hdG9t aWMtZmFsbGJhY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZmV0Y2hfYW5kbm90KHM2 NCBpLCBhdG9taWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRj aF9hbmQofmksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzNjQKMTQ0NzQ6IGF0b21pYzY0X2ZldGNoX2FuZG5vdF9hY3F1aXJlKHM2NCBpLCBhdG9t aWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmQofmks IHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQK MTQ0NzQ6IGF0b21pYzY0X2ZldGNoX2FuZG5vdF9yZWxlYXNlKHM2NCBpLCBhdG9taWM2NF90ICp2 KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmQofmksIHYpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKMTQ0NzQ6IGF0 b21pYzY0X2ZldGNoX2FuZG5vdF9yZWxheGVkKHM2NCBpLCBhdG9taWM2NF90ICp2KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmQofmksIHYpOwoxNDQ3NDogfQoxNDQ3 NDogIyAyMTkzICIuL2luY2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNrLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQK MTQ0NzQ6IGF0b21pYzY0X2ZldGNoX2FkZF91bmxlc3MoYXRvbWljNjRfdCAqdiwgczY0IGEsIHM2 NCB1KQoxNDQ3NDogewoxNDQ3NDogIHM2NCBjID0gYXRvbWljNjRfcmVhZCh2KTsKMTQ0NzQ6IAox NDQ3NDogIGRvIHsKMTQ0NzQ6ICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoYyA9PSB1KSwgMCkp CjE0NDc0OiAgICBicmVhazsKMTQ0NzQ6ICB9IHdoaWxlICghYXRvbWljNjRfdHJ5X2NtcHhjaGco diwgJmMsIGMgKyBhKSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gYzsKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMjIxOCAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAox NDQ3NDogYXRvbWljNjRfYWRkX3VubGVzcyhhdG9taWM2NF90ICp2LCBzNjQgYSwgczY0IHUpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FkZF91bmxlc3ModiwgYSwgdSkg IT0gdTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjIzNCAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxs YmFjay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljNjRfaW5jX25vdF96ZXJvKGF0b21pYzY0 X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2FkZF91bmxlc3ModiwgMSwg MCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wK MTQ0NzQ6IGF0b21pYzY0X2luY191bmxlc3NfbmVnYXRpdmUoYXRvbWljNjRfdCAqdikKMTQ0NzQ6 IHsKMTQ0NzQ6ICBzNjQgYyA9IGF0b21pYzY0X3JlYWQodik7CjE0NDc0OiAKMTQ0NzQ6ICBkbyB7 CjE0NDc0OiAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGMgPCAwKSwgMCkpCjE0NDc0OiAgICBy ZXR1cm4gZmFsc2U7CjE0NDc0OiAgfSB3aGlsZSAoIWF0b21pYzY0X3RyeV9jbXB4Y2hnKHYsICZj LCBjICsgMSkpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pYzY0X2RlY191 bmxlc3NfcG9zaXRpdmUoYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBzNjQgYyA9IGF0 b21pYzY0X3JlYWQodik7CjE0NDc0OiAKMTQ0NzQ6ICBkbyB7CjE0NDc0OiAgIGlmIChfX2J1aWx0 aW5fZXhwZWN0KCEhKGMgPiAwKSwgMCkpCjE0NDc0OiAgICByZXR1cm4gZmFsc2U7CjE0NDc0OiAg fSB3aGlsZSAoIWF0b21pYzY0X3RyeV9jbXB4Y2hnKHYsICZjLCBjIC0gMSkpOwoxNDQ3NDogCjE0 NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZGVjX2lmX3Bvc2l0aXZlKGF0b21pYzY0X3Qg KnYpCjE0NDc0OiB7CjE0NDc0OiAgczY0IGRlYywgYyA9IGF0b21pYzY0X3JlYWQodik7CjE0NDc0 OiAKMTQ0NzQ6ICBkbyB7CjE0NDc0OiAgIGRlYyA9IGMgLSAxOwoxNDQ3NDogICBpZiAoX19idWls dGluX2V4cGVjdCghIShkZWMgPCAwKSwgMCkpCjE0NDc0OiAgICBicmVhazsKMTQ0NzQ6ICB9IHdo aWxlICghYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgJmMsIGRlYykpOwoxNDQ3NDogCjE0NDc0OiAg cmV0dXJuIGRlYzsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzUgIi4vaW5jbHVkZS9saW51eC9hdG9taWMu aCIgMgoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtbG9u Zy5oIiAxCjE0NDc0OiAjIDkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtbG9uZy5oIgox NDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVzLmgi IDEKMTQ0NzQ6ICMgMTAgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtbG9uZy5oIiAyCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBhdG9taWM2NF90IGF0b21pY19sb25nX3Q7CjE0 NDc0OiAjIDI1ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWxvbmcuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxv bmcKMTQ0NzQ6IGF0b21pY19sb25nX3JlYWQoY29uc3QgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfcmVhZCh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfcmVhZF9hY3F1aXJlKGNvbnN0IGF0b21pY19sb25n X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X3JlYWRfYWNxdWlyZSh2KTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljX2xvbmdfc2V0KGF0b21p Y19sb25nX3QgKnYsIGxvbmcgaSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhdG9taWM2NF9zZXQodiwgaSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6IGF0b21pY19sb25nX3NldF9yZWxl YXNlKGF0b21pY19sb25nX3QgKnYsIGxvbmcgaSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhdG9taWM2NF9z ZXRfcmVsZWFzZSh2LCBpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRv bWljX2xvbmdfYWRkKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBh dG9taWM2NF9hZGQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0 b21pY19sb25nX2FkZF9yZXR1cm4obG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBhdG9taWM2NF9hZGRfcmV0dXJuKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19hZGRfcmV0dXJuX2FjcXVpcmUobG9uZyBp LCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9hZGRf cmV0dXJuKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNf bG9uZ19hZGRfcmV0dXJuX3JlbGVhc2UobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9hZGRfcmV0dXJuKGksIHYpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19hZGRfcmV0dXJuX3JlbGF4ZWQobG9u ZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9h ZGRfcmV0dXJuKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9t aWNfbG9uZ19mZXRjaF9hZGQobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hZGQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNoX2FkZF9hY3F1aXJlKGxvbmcgaSwgYXRv bWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYWRk KGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19m ZXRjaF9hZGRfcmVsZWFzZShsb25nIGksIGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FkZChpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfZmV0Y2hfYWRkX3JlbGF4ZWQobG9uZyBpLCBhdG9t aWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hZGQo aSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6IGF0b21pY19sb25nX3N1 Yihsb25nIGksIGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgYXRvbWljNjRfc3Vi KGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19z dWJfcmV0dXJuKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gYXRvbWljNjRfc3ViX3JldHVybihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9u ZwoxNDQ3NDogYXRvbWljX2xvbmdfc3ViX3JldHVybl9hY3F1aXJlKGxvbmcgaSwgYXRvbWljX2xv bmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybihpLCB2 KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfc3ViX3Jl dHVybl9yZWxlYXNlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg bG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfc3ViX3JldHVybl9yZWxheGVkKGxvbmcgaSwgYXRvbWlj X2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybihp LCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfZmV0 Y2hfc3ViKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g YXRvbWljNjRfZmV0Y2hfc3ViKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0 NDc0OiBhdG9taWNfbG9uZ19mZXRjaF9zdWJfYWNxdWlyZShsb25nIGksIGF0b21pY19sb25nX3Qg KnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX3N1YihpLCB2KTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfZmV0Y2hfc3ViX3Jl bGVhc2UobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBh dG9taWM2NF9mZXRjaF9zdWIoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0 NzQ6IGF0b21pY19sb25nX2ZldGNoX3N1Yl9yZWxheGVkKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAq dikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfc3ViKGksIHYpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhdG9taWNfbG9uZ19pbmMoYXRvbWljX2xv bmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBhdG9taWM2NF9pbmModik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2luY19yZXR1cm4oYXRvbWljX2xvbmdf dCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfaW5jX3JldHVybih2KTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfaW5jX3JldHVybl9h Y3F1aXJlKGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0 X2luY19yZXR1cm5fYWNxdWlyZSh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3 NDogYXRvbWljX2xvbmdfaW5jX3JldHVybl9yZWxlYXNlKGF0b21pY19sb25nX3QgKnYpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2luY19yZXR1cm5fcmVsZWFzZSh2KTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfaW5jX3JldHVybl9yZWxh eGVkKGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2lu Y19yZXR1cm5fcmVsYXhlZCh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDog YXRvbWljX2xvbmdfZmV0Y2hfaW5jKGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIGF0b21pYzY0X2ZldGNoX2luYyh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9u ZwoxNDQ3NDogYXRvbWljX2xvbmdfZmV0Y2hfaW5jX2FjcXVpcmUoYXRvbWljX2xvbmdfdCAqdikK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfaW5jX2FjcXVpcmUodik7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNoX2luY19y ZWxlYXNlKGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0 X2ZldGNoX2luY19yZWxlYXNlKHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0 OiBhdG9taWNfbG9uZ19mZXRjaF9pbmNfcmVsYXhlZChhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9pbmNfcmVsYXhlZCh2KTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljX2xvbmdfZGVjKGF0b21pY19sb25nX3Qg KnYpCjE0NDc0OiB7CjE0NDc0OiAgYXRvbWljNjRfZGVjKHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19kZWNfcmV0dXJuKGF0b21pY19sb25nX3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2RlY19yZXR1cm4odik7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2RlY19yZXR1cm5fYWNxdWly ZShhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9kZWNf cmV0dXJuX2FjcXVpcmUodik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0 b21pY19sb25nX2RlY19yZXR1cm5fcmVsZWFzZShhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBhdG9taWM2NF9kZWNfcmV0dXJuX3JlbGVhc2Uodik7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2RlY19yZXR1cm5fcmVsYXhlZChh dG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9kZWNfcmV0 dXJuX3JlbGF4ZWQodik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21p Y19sb25nX2ZldGNoX2RlYyhhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biBhdG9taWM2NF9mZXRjaF9kZWModik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0 NzQ6IGF0b21pY19sb25nX2ZldGNoX2RlY19hY3F1aXJlKGF0b21pY19sb25nX3QgKnYpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2RlY19hY3F1aXJlKHYpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19mZXRjaF9kZWNfcmVsZWFz ZShhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRj aF9kZWNfcmVsZWFzZSh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRv bWljX2xvbmdfZmV0Y2hfZGVjX3JlbGF4ZWQoYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfZGVjX3JlbGF4ZWQodik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQKMTQ0NzQ6IGF0b21pY19sb25nX2FuZChsb25nIGksIGF0b21pY19sb25n X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgYXRvbWljNjRfYW5kKGksIHYpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19mZXRjaF9hbmQobG9uZyBpLCBhdG9t aWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmQo aSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2Zl dGNoX2FuZF9hY3F1aXJlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYW5kKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19mZXRjaF9hbmRfcmVsZWFzZShsb25nIGksIGF0b21p Y19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FuZChp LCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfZmV0 Y2hfYW5kX3JlbGF4ZWQobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQKMTQ0NzQ6IGF0b21pY19sb25nX2FuZG5vdChsb25nIGksIGF0b21pY19sb25nX3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgYXRvbWljNjRfYW5kbm90KGksIHYpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19mZXRjaF9hbmRub3QobG9uZyBpLCBhdG9t aWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmRu b3QoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25n X2ZldGNoX2FuZG5vdF9hY3F1aXJlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYW5kbm90X2FjcXVpcmUoaSwgdik7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNoX2FuZG5vdF9y ZWxlYXNlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g YXRvbWljNjRfZmV0Y2hfYW5kbm90X3JlbGVhc2UoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNoX2FuZG5vdF9yZWxheGVkKGxvbmcgaSwg YXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hf YW5kbm90X3JlbGF4ZWQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6 IGF0b21pY19sb25nX29yKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBhdG9taWM2NF9vcihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDog YXRvbWljX2xvbmdfZmV0Y2hfb3IobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9vcihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfZmV0Y2hfb3JfYWNxdWlyZShsb25nIGksIGF0 b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX29y KGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19m ZXRjaF9vcl9yZWxlYXNlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfb3IoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNoX29yX3JlbGF4ZWQobG9uZyBpLCBhdG9taWNf bG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9vcihpLCB2 KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljX2xvbmdfeG9yKGxv bmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBhdG9taWM2NF94b3IoaSwg dik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNo X3hvcihsb25nIGksIGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0 b21pYzY0X2ZldGNoX3hvcihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3 NDogYXRvbWljX2xvbmdfZmV0Y2hfeG9yX2FjcXVpcmUobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2 KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF94b3IoaSwgdik7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNoX3hvcl9yZWxl YXNlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRv bWljNjRfZmV0Y2hfeG9yKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0 OiBhdG9taWNfbG9uZ19mZXRjaF94b3JfcmVsYXhlZChsb25nIGksIGF0b21pY19sb25nX3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX3hvcihpLCB2KTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfeGNoZyhhdG9taWNfbG9u Z190ICp2LCBsb25nIGkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X3hjaGcodiwg aSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX3hjaGdf YWNxdWlyZShhdG9taWNfbG9uZ190ICp2LCBsb25nIGkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IGF0b21pYzY0X3hjaGcodiwgaSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6 IGF0b21pY19sb25nX3hjaGdfcmVsZWFzZShhdG9taWNfbG9uZ190ICp2LCBsb25nIGkpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X3hjaGcodiwgaSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX3hjaGdfcmVsYXhlZChhdG9taWNfbG9uZ190 ICp2LCBsb25nIGkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X3hjaGcodiwgaSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2NtcHhjaGco YXRvbWljX2xvbmdfdCAqdiwgbG9uZyBvbGQsIGxvbmcgbmV3KQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBhdG9taWM2NF9jbXB4Y2hnKHYsIG9sZCwgbmV3KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfY21weGNoZ19hY3F1aXJlKGF0b21pY19sb25nX3Qg KnYsIGxvbmcgb2xkLCBsb25nIG5ldykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRf Y21weGNoZyh2LCBvbGQsIG5ldyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6 IGF0b21pY19sb25nX2NtcHhjaGdfcmVsZWFzZShhdG9taWNfbG9uZ190ICp2LCBsb25nIG9sZCwg bG9uZyBuZXcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2NtcHhjaGcodiwgb2xk LCBuZXcpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19j bXB4Y2hnX3JlbGF4ZWQoYXRvbWljX2xvbmdfdCAqdiwgbG9uZyBvbGQsIGxvbmcgbmV3KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9jbXB4Y2hnKHYsIG9sZCwgbmV3KTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljX2xvbmdfdHJ5X2NtcHhjaGcoYXRv bWljX2xvbmdfdCAqdiwgbG9uZyAqb2xkLCBsb25nIG5ldykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgKHM2NCAqKW9sZCwgbmV3KTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljX2xvbmdfdHJ5X2NtcHhjaGdfYWNxdWlyZShh dG9taWNfbG9uZ190ICp2LCBsb25nICpvbGQsIGxvbmcgbmV3KQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBhdG9taWM2NF90cnlfY21weGNoZyh2LCAoczY0ICopb2xkLCBuZXcpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sCjE0NDc0OiBhdG9taWNfbG9uZ190cnlfY21weGNoZ19yZWxlYXNl KGF0b21pY19sb25nX3QgKnYsIGxvbmcgKm9sZCwgbG9uZyBuZXcpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIGF0b21pYzY0X3RyeV9jbXB4Y2hnKHYsIChzNjQgKilvbGQsIG5ldyk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19sb25nX3RyeV9jbXB4Y2hnX3JlbGF4 ZWQoYXRvbWljX2xvbmdfdCAqdiwgbG9uZyAqb2xkLCBsb25nIG5ldykKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgKHM2NCAqKW9sZCwgbmV3KTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KGxv bmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRf c3ViX2FuZF90ZXN0KGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCjE0NDc0OiBh dG9taWNfbG9uZ19kZWNfYW5kX3Rlc3QoYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYXRvbWljNjRfZGVjX2FuZF90ZXN0KHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sCjE0NDc0OiBhdG9taWNfbG9uZ19pbmNfYW5kX3Rlc3QoYXRvbWljX2xvbmdfdCAqdikK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfaW5jX2FuZF90ZXN0KHYpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sCjE0NDc0OiBhdG9taWNfbG9uZ19hZGRfbmVnYXRpdmUobG9u ZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9h ZGRfbmVnYXRpdmUoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0 b21pY19sb25nX2ZldGNoX2FkZF91bmxlc3MoYXRvbWljX2xvbmdfdCAqdiwgbG9uZyBhLCBsb25n IHUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FkZF91bmxlc3Modiwg YSwgdSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19sb25nX2Fk ZF91bmxlc3MoYXRvbWljX2xvbmdfdCAqdiwgbG9uZyBhLCBsb25nIHUpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGF0b21pYzY0X2FkZF91bmxlc3ModiwgYSwgdSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19sb25nX2luY19ub3RfemVybyhhdG9taWNfbG9uZ190 ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9pbmNfbm90X3plcm8odik7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19sb25nX2luY191bmxlc3Nf bmVnYXRpdmUoYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWlj NjRfaW5jX3VubGVzc19uZWdhdGl2ZSh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAox NDQ3NDogYXRvbWljX2xvbmdfZGVjX3VubGVzc19wb3NpdGl2ZShhdG9taWNfbG9uZ190ICp2KQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9kZWNfdW5sZXNzX3Bvc2l0aXZlKHYpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19kZWNfaWZfcG9z aXRpdmUoYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRf ZGVjX2lmX3Bvc2l0aXZlKHYpOwoxNDQ3NDogfQoxNDQ3NDogIyA3NyAiLi9pbmNsdWRlL2xpbnV4 L2F0b21pYy5oIiAyCjE0NDc0OiAjIDE5ICIuL2luY2x1ZGUvbGludXgva2dkYi5oIiAyCjE0NDc0 OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rZ2RiLmgiIDEKMTQ0NzQ6ICMg MTAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20va2dkYi5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3B0cmFjZS5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zZWdtZW50LmgiIDEKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvY29uc3Qu aCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9s aW51eC9jb25zdC5oIiAxCjE0NDc0OiAjIDUgIi4vaW5jbHVkZS9saW51eC9jb25zdC5oIiAyCjE0 NDc0OiAjIDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc2VnbWVudC5oIiAyCjE0NDc0OiAjIDE2 OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zZWdtZW50LmgiCjE0NDc0OiAjIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vY2FjaGUuaCIgMQoxNDQ3NDogIyAxNzAgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vc2VnbWVudC5oIiAyCjE0NDc0OiAjIDI0OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9z ZWdtZW50LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIHZkc29fZW5jb2RlX2NwdW5vZGUoaW50IGNw dSwgdW5zaWduZWQgbG9uZyBub2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAobm9kZSA8PCAx MikgfCBjcHU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdmRzb19yZWFkX2NwdW5vZGUo dW5zaWduZWQgKmNwdSwgdW5zaWduZWQgKm5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQg aW50IHA7CjE0NDc0OiAjIDI2NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zZWdtZW50LmgiCjE0 NDc0OiAgYXNtIF9faW5saW5lIHZvbGF0aWxlICgiIyBBTFQ6IG9sZG5zdHJcbiIgIjY2MTpcblx0 IiAibHNsICVbc2VnXSwlW3BdIiAiXG42NjI6XG4iICIjIEFMVDogcGFkZGluZ1xuIiAiLnNraXAg LSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIiktKCIgIjY2MmItNjYxYiIgIikpID4gMCkg KiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIiktKCIgIjY2MmItNjYxYiIgIikpLDB4 OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4i ICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2NjQiIjEiImYgLSAuXG4iICIgLndvcmQg IiAiKDE2KjMyKzIyKSIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUg IiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJc biIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RyX3JlcGxhY2VtZW50LCBc ImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIxIiAiXG4iICI2NjQiIjEiIjpcblx0IiAi LmJ5dGUgMHhmMywweDBmLDB4YzcsMHhmOCIgIlxuIiAiNjY1IiIxIiAiOlxuIiAiLnBvcHNlY3Rp b25cbiIgOiBbcF0gIj1hIiAocCkgOiAiaSIgKDApLCBbc2VnXSAiciIgKCgxNSo4ICsgMykpKQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoY3B1KQoxNDQ3NDogICAqY3B1ID0gKHAgJiAw eGZmZik7CjE0NDc0OiAgaWYgKG5vZGUpCjE0NDc0OiAgICpub2RlID0gKHAgPj4gMTIpOwoxNDQ3 NDogfQoxNDQ3NDogIyAzMDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc2VnbWVudC5oIgoxNDQ3 NDogZXh0ZXJuIGNvbnN0IGNoYXIgZWFybHlfaWR0X2hhbmRsZXJfYXJyYXlbMzJdWzldOwoxNDQ3 NDogZXh0ZXJuIHZvaWQgZWFybHlfaWdub3JlX2lycSh2b2lkKTsKMTQ0NzQ6ICMgMzQ3ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3NlZ21lbnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19sb2Fkc2VnbWVudF9m cyh1bnNpZ25lZCBzaG9ydCB2YWx1ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoIgkJ CQkJCVxuIgoxNDQ3NDogICAgICAgICIxOgltb3Z3ICUwLCAlJWZzCQkJXG4iCjE0NDc0OiAgICAg ICAgIjI6CQkJCQlcbiIKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICIgLnB1c2hzZWN0aW9uIFwiX19l eF90YWJsZVwiLFwiYVwiXG4iICIgLmJhbGlnbiA0XG4iICIgLmxvbmcgKCIgIjFiIiAiKSAtIC5c biIgIiAubG9uZyAoIiAiMmIiICIpIC0gLlxuIiAiIC5sb25nICgiICJleF9oYW5kbGVyX2NsZWFy X2ZzIiAiKSAtIC5cbiIgIiAucG9wc2VjdGlvblxuIgoxNDQ3NDogCjE0NDc0OiAgICAgICAgOiA6 ICJybSIgKHZhbHVlKSA6ICJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL3BhZ2VfdHlwZXMuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvbWVtX2VuY3J5cHQuaCIgMQox NDQ3NDogIyAxNyAiLi9pbmNsdWRlL2xpbnV4L21lbV9lbmNyeXB0LmgiCjE0NDc0OiAjIDEgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vbWVtX2VuY3J5cHQuaCIgMQoxNDQ3NDogIyAxNyAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9tZW1fZW5jcnlwdC5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2lu Y2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgiIDEKMTQ0NzQ6ICMgNDMgIi4vYXJjaC94ODYvaW5j bHVkZS91YXBpL2FzbS9ib290cGFyYW0uaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3Nj cmVlbl9pbmZvLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zY3JlZW5faW5mby5oIiAxCjE0NDc0OiAjIDExICIuL2lu Y2x1ZGUvdWFwaS9saW51eC9zY3JlZW5faW5mby5oIgoxNDQ3NDogc3RydWN0IHNjcmVlbl9pbmZv IHsKMTQ0NzQ6ICBfX3U4IG9yaWdfeDsKMTQ0NzQ6ICBfX3U4IG9yaWdfeTsKMTQ0NzQ6ICBfX3Ux NiBleHRfbWVtX2s7CjE0NDc0OiAgX191MTYgb3JpZ192aWRlb19wYWdlOwoxNDQ3NDogIF9fdTgg b3JpZ192aWRlb19tb2RlOwoxNDQ3NDogIF9fdTggb3JpZ192aWRlb19jb2xzOwoxNDQ3NDogIF9f dTggZmxhZ3M7CjE0NDc0OiAgX191OCB1bnVzZWQyOwoxNDQ3NDogIF9fdTE2IG9yaWdfdmlkZW9f ZWdhX2J4OwoxNDQ3NDogIF9fdTE2IHVudXNlZDM7CjE0NDc0OiAgX191OCBvcmlnX3ZpZGVvX2xp bmVzOwoxNDQ3NDogIF9fdTggb3JpZ192aWRlb19pc1ZHQTsKMTQ0NzQ6ICBfX3UxNiBvcmlnX3Zp ZGVvX3BvaW50czsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MTYgbGZiX3dpZHRoOwoxNDQ3 NDogIF9fdTE2IGxmYl9oZWlnaHQ7CjE0NDc0OiAgX191MTYgbGZiX2RlcHRoOwoxNDQ3NDogIF9f dTMyIGxmYl9iYXNlOwoxNDQ3NDogIF9fdTMyIGxmYl9zaXplOwoxNDQ3NDogIF9fdTE2IGNsX21h Z2ljLCBjbF9vZmZzZXQ7CjE0NDc0OiAgX191MTYgbGZiX2xpbmVsZW5ndGg7CjE0NDc0OiAgX191 OCByZWRfc2l6ZTsKMTQ0NzQ6ICBfX3U4IHJlZF9wb3M7CjE0NDc0OiAgX191OCBncmVlbl9zaXpl OwoxNDQ3NDogIF9fdTggZ3JlZW5fcG9zOwoxNDQ3NDogIF9fdTggYmx1ZV9zaXplOwoxNDQ3NDog IF9fdTggYmx1ZV9wb3M7CjE0NDc0OiAgX191OCByc3ZkX3NpemU7CjE0NDc0OiAgX191OCByc3Zk X3BvczsKMTQ0NzQ6ICBfX3UxNiB2ZXNhcG1fc2VnOwoxNDQ3NDogIF9fdTE2IHZlc2FwbV9vZmY7 CjE0NDc0OiAgX191MTYgcGFnZXM7CjE0NDc0OiAgX191MTYgdmVzYV9hdHRyaWJ1dGVzOwoxNDQ3 NDogIF9fdTMyIGNhcGFiaWxpdGllczsKMTQ0NzQ6ICBfX3UzMiBleHRfbGZiX2Jhc2U7CjE0NDc0 OiAgX191OCBfcmVzZXJ2ZWRbMl07CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwox NDQ3NDogIyA2ICIuL2luY2x1ZGUvbGludXgvc2NyZWVuX2luZm8uaCIgMgoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gc3RydWN0IHNjcmVlbl9pbmZvIHNjcmVlbl9pbmZvOwoxNDQ3NDogIyA0NCAiLi9h cmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2Jvb3RwYXJhbS5oIiAyCjE0NDc0OiAjIDEgIi4vaW5j bHVkZS9saW51eC9hcG1fYmlvcy5oIiAxCjE0NDc0OiAjIDkgIi4vaW5jbHVkZS9saW51eC9hcG1f Ymlvcy5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9hcG1fYmlvcy5oIiAxCjE0 NDc0OiAjIDIyICIuL2luY2x1ZGUvdWFwaS9saW51eC9hcG1fYmlvcy5oIgoxNDQ3NDogdHlwZWRl ZiB1bnNpZ25lZCBzaG9ydCBhcG1fZXZlbnRfdDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgc2hv cnQgYXBtX2V2ZW50aW5mb190OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXBtX2Jpb3NfaW5mbyB7 CjE0NDc0OiAgX191MTYgdmVyc2lvbjsKMTQ0NzQ6ICBfX3UxNiBjc2VnOwoxNDQ3NDogIF9fdTMy IG9mZnNldDsKMTQ0NzQ6ICBfX3UxNiBjc2VnXzE2OwoxNDQ3NDogIF9fdTE2IGRzZWc7CjE0NDc0 OiAgX191MTYgZmxhZ3M7CjE0NDc0OiAgX191MTYgY3NlZ19sZW47CjE0NDc0OiAgX191MTYgY3Nl Z18xNl9sZW47CjE0NDc0OiAgX191MTYgZHNlZ19sZW47CjE0NDc0OiB9OwoxNDQ3NDogIyAxMzMg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L2FwbV9iaW9zLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L2lvY3RsLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2lvY3RsLmgiIDEK MTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2lvY3RsLmgiIDEKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJp Yy9pb2N0bC5oIiAxCjE0NDc0OiAjIDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9pb2N0bC5oIiAy CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVu c2lnbmVkIGludCBfX2ludmFsaWRfc2l6ZV9hcmd1bWVudF9mb3JfSU9DOwoxNDQ3NDogIyAyICIu L2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2lvY3RsLmgiIDIKMTQ0NzQ6ICMg NiAiLi9pbmNsdWRlL3VhcGkvbGludXgvaW9jdGwuaCIgMgoxNDQ3NDogIyAxMzQgIi4vaW5jbHVk ZS91YXBpL2xpbnV4L2FwbV9iaW9zLmgiIDIKMTQ0NzQ6ICMgMTAgIi4vaW5jbHVkZS9saW51eC9h cG1fYmlvcy5oIiAyCjE0NDc0OiAjIDI2ICIuL2luY2x1ZGUvbGludXgvYXBtX2Jpb3MuaCIKMTQ0 NzQ6IHN0cnVjdCBhcG1faW5mbyB7CjE0NDc0OiAgc3RydWN0IGFwbV9iaW9zX2luZm8gYmlvczsK MTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBjb25uZWN0aW9uX3ZlcnNpb247CjE0NDc0OiAgaW50IGdl dF9wb3dlcl9zdGF0dXNfYnJva2VuOwoxNDQ3NDogIGludCBnZXRfcG93ZXJfc3RhdHVzX3N3YWJp bm1pbnV0ZXM7CjE0NDc0OiAgaW50IGFsbG93X2ludHM7CjE0NDc0OiAgaW50IGZvcmJpZF9pZGxl OwoxNDQ3NDogIGludCByZWFsbW9kZV9wb3dlcl9vZmY7CjE0NDc0OiAgaW50IGRpc2FibGVkOwox NDQ3NDogfTsKMTQ0NzQ6ICMgODUgIi4vaW5jbHVkZS9saW51eC9hcG1fYmlvcy5oIgoxNDQ3NDog ZXh0ZXJuIHN0cnVjdCBhcG1faW5mbyBhcG1faW5mbzsKMTQ0NzQ6ICMgNDUgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9ib290cGFyYW0uaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGlu dXgvZWRkLmgiIDEKMTQ0NzQ6ICMgMjQgIi4vaW5jbHVkZS9saW51eC9lZGQuaCIKMTQ0NzQ6ICMg MSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZWRkLmgiIDEKMTQ0NzQ6ICMgNzIgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L2VkZC5oIgoxNDQ3NDogc3RydWN0IGVkZF9kZXZpY2VfcGFyYW1zIHsKMTQ0NzQ6 ICBfX3UxNiBsZW5ndGg7CjE0NDc0OiAgX191MTYgaW5mb19mbGFnczsKMTQ0NzQ6ICBfX3UzMiBu dW1fZGVmYXVsdF9jeWxpbmRlcnM7CjE0NDc0OiAgX191MzIgbnVtX2RlZmF1bHRfaGVhZHM7CjE0 NDc0OiAgX191MzIgc2VjdG9yc19wZXJfdHJhY2s7CjE0NDc0OiAgX191NjQgbnVtYmVyX29mX3Nl Y3RvcnM7CjE0NDc0OiAgX191MTYgYnl0ZXNfcGVyX3NlY3RvcjsKMTQ0NzQ6ICBfX3UzMiBkcHRl X3B0cjsKMTQ0NzQ6ICBfX3UxNiBrZXk7CjE0NDc0OiAgX191OCBkZXZpY2VfcGF0aF9pbmZvX2xl bmd0aDsKMTQ0NzQ6ICBfX3U4IHJlc2VydmVkMjsKMTQ0NzQ6ICBfX3UxNiByZXNlcnZlZDM7CjE0 NDc0OiAgX191OCBob3N0X2J1c190eXBlWzRdOwoxNDQ3NDogIF9fdTggaW50ZXJmYWNlX3R5cGVb OF07CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgX191MTYgYmFz ZV9hZGRyZXNzOwoxNDQ3NDogICAgX191MTYgcmVzZXJ2ZWQxOwoxNDQ3NDogICAgX191MzIgcmVz ZXJ2ZWQyOwoxNDQ3NDogICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBpc2E7CjE0NDc0OiAg IHN0cnVjdCB7CjE0NDc0OiAgICBfX3U4IGJ1czsKMTQ0NzQ6ICAgIF9fdTggc2xvdDsKMTQ0NzQ6 ICAgIF9fdTggZnVuY3Rpb247CjE0NDc0OiAgICBfX3U4IGNoYW5uZWw7CjE0NDc0OiAgICBfX3Uz MiByZXNlcnZlZDsKMTQ0NzQ6ICAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgcGNpOwoxNDQ3 NDogCjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAgICBfX3U2NCByZXNlcnZlZDsKMTQ0NzQ6ICAg fSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgaWJuZDsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6 ICAgIF9fdTY0IHJlc2VydmVkOwoxNDQ3NDogICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSB4 cHJzOwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgX191NjQgcmVzZXJ2ZWQ7CjE0NDc0OiAg IH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGh0cHQ7CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0 OiAgICBfX3U2NCByZXNlcnZlZDsKMTQ0NzQ6ICAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkg dW5rbm93bjsKMTQ0NzQ6ICB9IGludGVyZmFjZV9wYXRoOwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6 ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIF9fdTggZGV2aWNlOwoxNDQ3NDogICAgX191OCByZXNlcnZl ZDE7CjE0NDc0OiAgICBfX3UxNiByZXNlcnZlZDI7CjE0NDc0OiAgICBfX3UzMiByZXNlcnZlZDM7 CjE0NDc0OiAgICBfX3U2NCByZXNlcnZlZDQ7CjE0NDc0OiAgIH0gX19hdHRyaWJ1dGVfXyAoKHBh Y2tlZCkpIGF0YTsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIF9fdTggZGV2aWNlOwoxNDQ3 NDogICAgX191OCBsdW47CjE0NDc0OiAgICBfX3U4IHJlc2VydmVkMTsKMTQ0NzQ6ICAgIF9fdTgg cmVzZXJ2ZWQyOwoxNDQ3NDogICAgX191MzIgcmVzZXJ2ZWQzOwoxNDQ3NDogICAgX191NjQgcmVz ZXJ2ZWQ0OwoxNDQ3NDogICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBhdGFwaTsKMTQ0NzQ6 ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIF9fdTE2IGlkOwoxNDQ3NDogICAgX191NjQgbHVuOwoxNDQ3 NDogICAgX191MTYgcmVzZXJ2ZWQxOwoxNDQ3NDogICAgX191MzIgcmVzZXJ2ZWQyOwoxNDQ3NDog ICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBzY3NpOwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3 NDogICAgX191NjQgc2VyaWFsX251bWJlcjsKMTQ0NzQ6ICAgIF9fdTY0IHJlc2VydmVkOwoxNDQ3 NDogICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSB1c2I7CjE0NDc0OiAgIHN0cnVjdCB7CjE0 NDc0OiAgICBfX3U2NCBldWk7CjE0NDc0OiAgICBfX3U2NCByZXNlcnZlZDsKMTQ0NzQ6ICAgfSBf X2F0dHJpYnV0ZV9fICgocGFja2VkKSkgaTEzOTQ7CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAg ICBfX3U2NCB3d2lkOwoxNDQ3NDogICAgX191NjQgbHVuOwoxNDQ3NDogICB9IF9fYXR0cmlidXRl X18gKChwYWNrZWQpKSBmaWJyZTsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIF9fdTY0IGlk ZW50aXR5X3RhZzsKMTQ0NzQ6ICAgIF9fdTY0IHJlc2VydmVkOwoxNDQ3NDogICB9IF9fYXR0cmli dXRlX18gKChwYWNrZWQpKSBpMm87CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAgICBfX3UzMiBh cnJheV9udW1iZXI7CjE0NDc0OiAgICBfX3UzMiByZXNlcnZlZDE7CjE0NDc0OiAgICBfX3U2NCBy ZXNlcnZlZDI7CjE0NDc0OiAgIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIHJhaWQ7CjE0NDc0 OiAgIHN0cnVjdCB7CjE0NDc0OiAgICBfX3U4IGRldmljZTsKMTQ0NzQ6ICAgIF9fdTggcmVzZXJ2 ZWQxOwoxNDQ3NDogICAgX191MTYgcmVzZXJ2ZWQyOwoxNDQ3NDogICAgX191MzIgcmVzZXJ2ZWQz OwoxNDQ3NDogICAgX191NjQgcmVzZXJ2ZWQ0OwoxNDQ3NDogICB9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKSBzYXRhOwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgX191NjQgcmVzZXJ2ZWQx OwoxNDQ3NDogICAgX191NjQgcmVzZXJ2ZWQyOwoxNDQ3NDogICB9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKSB1bmtub3duOwoxNDQ3NDogIH0gZGV2aWNlX3BhdGg7CjE0NDc0OiAgX191OCByZXNl cnZlZDQ7CjE0NDc0OiAgX191OCBjaGVja3N1bTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXyAoKHBh Y2tlZCkpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZWRkX2luZm8gewoxNDQ3NDogIF9fdTggZGV2 aWNlOwoxNDQ3NDogIF9fdTggdmVyc2lvbjsKMTQ0NzQ6ICBfX3UxNiBpbnRlcmZhY2Vfc3VwcG9y dDsKMTQ0NzQ6ICBfX3UxNiBsZWdhY3lfbWF4X2N5bGluZGVyOwoxNDQ3NDogIF9fdTggbGVnYWN5 X21heF9oZWFkOwoxNDQ3NDogIF9fdTggbGVnYWN5X3NlY3RvcnNfcGVyX3RyYWNrOwoxNDQ3NDog IHN0cnVjdCBlZGRfZGV2aWNlX3BhcmFtcyBwYXJhbXM7CjE0NDc0OiB9IF9fYXR0cmlidXRlX18g KChwYWNrZWQpKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGVkZCB7CjE0NDc0OiAgdW5zaWduZWQg aW50IG1icl9zaWduYXR1cmVbMTZdOwoxNDQ3NDogIHN0cnVjdCBlZGRfaW5mbyBlZGRfaW5mb1s2 XTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIG1icl9zaWduYXR1cmVfbnI7CjE0NDc0OiAgdW5zaWdu ZWQgY2hhciBlZGRfaW5mb19ucjsKMTQ0NzQ6IH07CjE0NDc0OiAjIDI1ICIuL2luY2x1ZGUvbGlu dXgvZWRkLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGVkZCBlZGQ7 CjE0NDc0OiAjIDQ2ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgiIDIK MTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pc3QuaCIgMQoxNDQ3NDogIyA5ICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL2lzdC5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1 ZGUvdWFwaS9hc20vaXN0LmgiIDEKMTQ0NzQ6ICMgMjMgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBp L2FzbS9pc3QuaCIKMTQ0NzQ6IHN0cnVjdCBpc3RfaW5mbyB7CjE0NDc0OiAgX191MzIgc2lnbmF0 dXJlOwoxNDQ3NDogIF9fdTMyIGNvbW1hbmQ7CjE0NDc0OiAgX191MzIgZXZlbnQ7CjE0NDc0OiAg X191MzIgcGVyZl9sZXZlbDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDEwICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2lzdC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBpc3Rf aW5mbyBpc3RfaW5mbzsKMTQ0NzQ6ICMgNDcgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9i b290cGFyYW0uaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdmlkZW8vZWRpZC5oIiAxCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvdmlk ZW8vZWRpZC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBlZGlkX2luZm8gewoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgZHVtbXlbMTI4XTsKMTQ0NzQ6IH07 CjE0NDc0OiAjIDYgIi4vaW5jbHVkZS92aWRlby9lZGlkLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gc3RydWN0IGVkaWRfaW5mbyBlZGlkX2luZm87CjE0NDc0OiAjIDQ4ICIuL2Fy Y2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3Qgc2V0dXBfZGF0YSB7CjE0NDc0OiAgX191NjQgbmV4dDsKMTQ0NzQ6ICBfX3Uz MiB0eXBlOwoxNDQ3NDogIF9fdTMyIGxlbjsKMTQ0NzQ6ICBfX3U4IGRhdGFbMF07CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzZXR1cF9pbmRpcmVjdCB7CjE0NDc0OiAg X191MzIgdHlwZTsKMTQ0NzQ6ICBfX3UzMiByZXNlcnZlZDsKMTQ0NzQ6ICBfX3U2NCBsZW47CjE0 NDc0OiAgX191NjQgYWRkcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzZXR1cF9o ZWFkZXIgewoxNDQ3NDogIF9fdTggc2V0dXBfc2VjdHM7CjE0NDc0OiAgX191MTYgcm9vdF9mbGFn czsKMTQ0NzQ6ICBfX3UzMiBzeXNzaXplOwoxNDQ3NDogIF9fdTE2IHJhbV9zaXplOwoxNDQ3NDog IF9fdTE2IHZpZF9tb2RlOwoxNDQ3NDogIF9fdTE2IHJvb3RfZGV2OwoxNDQ3NDogIF9fdTE2IGJv b3RfZmxhZzsKMTQ0NzQ6ICBfX3UxNiBqdW1wOwoxNDQ3NDogIF9fdTMyIGhlYWRlcjsKMTQ0NzQ6 ICBfX3UxNiB2ZXJzaW9uOwoxNDQ3NDogIF9fdTMyIHJlYWxtb2RlX3N3dGNoOwoxNDQ3NDogIF9f dTE2IHN0YXJ0X3N5c19zZWc7CjE0NDc0OiAgX191MTYga2VybmVsX3ZlcnNpb247CjE0NDc0OiAg X191OCB0eXBlX29mX2xvYWRlcjsKMTQ0NzQ6ICBfX3U4IGxvYWRmbGFnczsKMTQ0NzQ6ICBfX3Ux NiBzZXR1cF9tb3ZlX3NpemU7CjE0NDc0OiAgX191MzIgY29kZTMyX3N0YXJ0OwoxNDQ3NDogIF9f dTMyIHJhbWRpc2tfaW1hZ2U7CjE0NDc0OiAgX191MzIgcmFtZGlza19zaXplOwoxNDQ3NDogIF9f dTMyIGJvb3RzZWN0X2tsdWRnZTsKMTQ0NzQ6ICBfX3UxNiBoZWFwX2VuZF9wdHI7CjE0NDc0OiAg X191OCBleHRfbG9hZGVyX3ZlcjsKMTQ0NzQ6ICBfX3U4IGV4dF9sb2FkZXJfdHlwZTsKMTQ0NzQ6 ICBfX3UzMiBjbWRfbGluZV9wdHI7CjE0NDc0OiAgX191MzIgaW5pdHJkX2FkZHJfbWF4OwoxNDQ3 NDogIF9fdTMyIGtlcm5lbF9hbGlnbm1lbnQ7CjE0NDc0OiAgX191OCByZWxvY2F0YWJsZV9rZXJu ZWw7CjE0NDc0OiAgX191OCBtaW5fYWxpZ25tZW50OwoxNDQ3NDogIF9fdTE2IHhsb2FkZmxhZ3M7 CjE0NDc0OiAgX191MzIgY21kbGluZV9zaXplOwoxNDQ3NDogIF9fdTMyIGhhcmR3YXJlX3N1YmFy Y2g7CjE0NDc0OiAgX191NjQgaGFyZHdhcmVfc3ViYXJjaF9kYXRhOwoxNDQ3NDogIF9fdTMyIHBh eWxvYWRfb2Zmc2V0OwoxNDQ3NDogIF9fdTMyIHBheWxvYWRfbGVuZ3RoOwoxNDQ3NDogIF9fdTY0 IHNldHVwX2RhdGE7CjE0NDc0OiAgX191NjQgcHJlZl9hZGRyZXNzOwoxNDQ3NDogIF9fdTMyIGlu aXRfc2l6ZTsKMTQ0NzQ6ICBfX3UzMiBoYW5kb3Zlcl9vZmZzZXQ7CjE0NDc0OiAgX191MzIga2Vy bmVsX2luZm9fb2Zmc2V0OwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHN5c19kZXNjX3RhYmxlIHsKMTQ0NzQ6ICBfX3UxNiBsZW5ndGg7CjE0 NDc0OiAgX191OCB0YWJsZVsxNF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBvbHBjX29md19oZWFkZXIgewoxNDQ3NDogIF9fdTMyIG9md19tYWdpYzsKMTQ0NzQ6ICBf X3UzMiBvZndfdmVyc2lvbjsKMTQ0NzQ6ICBfX3UzMiBjaWZfaGFuZGxlcjsKMTQ0NzQ6ICBfX3Uz MiBpcnFfZGVzY190YWJsZTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBlZmlfaW5mbyB7CjE0NDc0OiAgX191MzIgZWZpX2xvYWRlcl9zaWdu YXR1cmU7CjE0NDc0OiAgX191MzIgZWZpX3N5c3RhYjsKMTQ0NzQ6ICBfX3UzMiBlZmlfbWVtZGVz Y19zaXplOwoxNDQ3NDogIF9fdTMyIGVmaV9tZW1kZXNjX3ZlcnNpb247CjE0NDc0OiAgX191MzIg ZWZpX21lbW1hcDsKMTQ0NzQ6ICBfX3UzMiBlZmlfbWVtbWFwX3NpemU7CjE0NDc0OiAgX191MzIg ZWZpX3N5c3RhYl9oaTsKMTQ0NzQ6ICBfX3UzMiBlZmlfbWVtbWFwX2hpOwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgMTQwICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgiCjE0NDc0 OiBzdHJ1Y3QgYm9vdF9lODIwX2VudHJ5IHsKMTQ0NzQ6ICBfX3U2NCBhZGRyOwoxNDQ3NDogIF9f dTY0IHNpemU7CjE0NDc0OiAgX191MzIgdHlwZTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7CjE0NDc0OiAjIDE1NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2Jvb3RwYXJh bS5oIgoxNDQ3NDogc3RydWN0IGphaWxob3VzZV9zZXR1cF9kYXRhIHsKMTQ0NzQ6ICBzdHJ1Y3Qg ewoxNDQ3NDogICBfX3UxNiB2ZXJzaW9uOwoxNDQ3NDogICBfX3UxNiBjb21wYXRpYmxlX3ZlcnNp b247CjE0NDc0OiAgfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSBoZHI7CjE0NDc0OiAgc3RydWN0 IHsKMTQ0NzQ6ICAgX191MTYgcG1fdGltZXJfYWRkcmVzczsKMTQ0NzQ6ICAgX191MTYgbnVtX2Nw dXM7CjE0NDc0OiAgIF9fdTY0IHBjaV9tbWNvbmZpZ19iYXNlOwoxNDQ3NDogICBfX3UzMiB0c2Nf a2h6OwoxNDQ3NDogICBfX3UzMiBhcGljX2toejsKMTQ0NzQ6ICAgX191OCBzdGFuZGFyZF9pb2Fw aWM7CjE0NDc0OiAgIF9fdTggY3B1X2lkc1syNTVdOwoxNDQ3NDogIH0gX19hdHRyaWJ1dGVfXygo cGFja2VkKSkgdjE7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgX191MzIgZmxhZ3M7CjE0NDc0 OiAgfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSB2MjsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygo cGFja2VkKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJvb3RfcGFyYW1zIHsKMTQ0 NzQ6ICBzdHJ1Y3Qgc2NyZWVuX2luZm8gc2NyZWVuX2luZm87CjE0NDc0OiAgc3RydWN0IGFwbV9i aW9zX2luZm8gYXBtX2Jpb3NfaW5mbzsKMTQ0NzQ6ICBfX3U4IF9wYWQyWzRdOwoxNDQ3NDogIF9f dTY0IHRib290X2FkZHI7CjE0NDc0OiAgc3RydWN0IGlzdF9pbmZvIGlzdF9pbmZvOwoxNDQ3NDog IF9fdTY0IGFjcGlfcnNkcF9hZGRyOwoxNDQ3NDogIF9fdTggX3BhZDNbOF07CjE0NDc0OiAgX191 OCBoZDBfaW5mb1sxNl07CjE0NDc0OiAgX191OCBoZDFfaW5mb1sxNl07CjE0NDc0OiAgc3RydWN0 IHN5c19kZXNjX3RhYmxlIHN5c19kZXNjX3RhYmxlOwoxNDQ3NDogIHN0cnVjdCBvbHBjX29md19o ZWFkZXIgb2xwY19vZndfaGVhZGVyOwoxNDQ3NDogIF9fdTMyIGV4dF9yYW1kaXNrX2ltYWdlOwox NDQ3NDogIF9fdTMyIGV4dF9yYW1kaXNrX3NpemU7CjE0NDc0OiAgX191MzIgZXh0X2NtZF9saW5l X3B0cjsKMTQ0NzQ6ICBfX3U4IF9wYWQ0WzExNl07CjE0NDc0OiAgc3RydWN0IGVkaWRfaW5mbyBl ZGlkX2luZm87CjE0NDc0OiAgc3RydWN0IGVmaV9pbmZvIGVmaV9pbmZvOwoxNDQ3NDogIF9fdTMy IGFsdF9tZW1fazsKMTQ0NzQ6ICBfX3UzMiBzY3JhdGNoOwoxNDQ3NDogIF9fdTggZTgyMF9lbnRy aWVzOwoxNDQ3NDogIF9fdTggZWRkYnVmX2VudHJpZXM7CjE0NDc0OiAgX191OCBlZGRfbWJyX3Np Z19idWZfZW50cmllczsKMTQ0NzQ6ICBfX3U4IGtiZF9zdGF0dXM7CjE0NDc0OiAgX191OCBzZWN1 cmVfYm9vdDsKMTQ0NzQ6ICBfX3U4IF9wYWQ1WzJdOwoxNDQ3NDogIyAyMTIgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9ib290cGFyYW0uaCIKMTQ0NzQ6ICBfX3U4IHNlbnRpbmVsOwoxNDQ3 NDogIF9fdTggX3BhZDZbMV07CjE0NDc0OiAgc3RydWN0IHNldHVwX2hlYWRlciBoZHI7CjE0NDc0 OiAgX191OCBfcGFkN1sweDI5MC0weDFmMS1zaXplb2Yoc3RydWN0IHNldHVwX2hlYWRlcildOwox NDQ3NDogIF9fdTMyIGVkZF9tYnJfc2lnX2J1ZmZlclsxNl07CjE0NDc0OiAgc3RydWN0IGJvb3Rf ZTgyMF9lbnRyeSBlODIwX3RhYmxlWzEyOF07CjE0NDc0OiAgX191OCBfcGFkOFs0OF07CjE0NDc0 OiAgc3RydWN0IGVkZF9pbmZvIGVkZGJ1Zls2XTsKMTQ0NzQ6ICBfX3U4IF9wYWQ5WzI3Nl07CjE0 NDc0OiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoxNDQ3NDogIyAyNjIgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9ib290cGFyYW0uaCIKMTQ0NzQ6IGVudW0geDg2X2hhcmR3YXJlX3N1 YmFyY2ggewoxNDQ3NDogIFg4Nl9TVUJBUkNIX1BDID0gMCwKMTQ0NzQ6ICBYODZfU1VCQVJDSF9M R1VFU1QsCjE0NDc0OiAgWDg2X1NVQkFSQ0hfWEVOLAoxNDQ3NDogIFg4Nl9TVUJBUkNIX0lOVEVM X01JRCwKMTQ0NzQ6ICBYODZfU1VCQVJDSF9DRTQxMDAsCjE0NDc0OiAgWDg2X05SX1NVQkFSQ0hT LAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbWVtX2VuY3J5 cHQuaCIgMgoxNDQ3NDogIyA1OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tZW1fZW5jcnlwdC5o IgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkg X19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBzbWVfZWFybHlfZW5jcnlwdChyZXNvdXJjZV9zaXpl X3QgcGFkZHIsCjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpIHsgfQoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1 dGVfXygoX19jb2xkX18pKSBzbWVfZWFybHlfZGVjcnlwdChyZXNvdXJjZV9zaXplX3QgcGFkZHIs CjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpIHsgfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbGRfXykpIHNtZV9tYXBfYm9vdGRhdGEoY2hhciAqcmVhbF9tb2RlX2RhdGEpIHsg fQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkg X19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBzbWVfdW5tYXBfYm9vdGRhdGEoY2hhciAqcmVhbF9t b2RlX2RhdGEpIHsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlv bl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHNtZV9lYXJseV9p bml0KHZvaWQpIHsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlv bl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHNtZV9lbmNyeXB0 X2tlcm5lbChzdHJ1Y3QgYm9vdF9wYXJhbXMgKmJwKSB7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19hdHRyaWJ1 dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9f KSkgc21lX2VuYWJsZShzdHJ1Y3QgYm9vdF9wYXJhbXMgKmJwKSB7IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBzbWVfYWN0aXZlKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9CjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHNldl9h Y3RpdmUodm9pZCkgeyByZXR1cm4gZmFsc2U7IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmli dXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRf XykpCjE0NDc0OiBlYXJseV9zZXRfbWVtb3J5X2RlY3J5cHRlZCh1bnNpZ25lZCBsb25nIHZhZGRy LCB1bnNpZ25lZCBsb25nIHNpemUpIHsgcmV0dXJuIDA7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0 ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18p KQoxNDQ3NDogZWFybHlfc2V0X21lbW9yeV9lbmNyeXB0ZWQodW5zaWduZWQgbG9uZyB2YWRkciwg dW5zaWduZWQgbG9uZyBzaXplKSB7IHJldHVybiAwOyB9CjE0NDc0OiAjIDkzICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL21lbV9lbmNyeXB0LmgiCjE0NDc0OiBleHRlcm4gY2hhciBfX3N0YXJ0X2Jz c19kZWNyeXB0ZWRbXSwgX19lbmRfYnNzX2RlY3J5cHRlZFtdLCBfX3N0YXJ0X2Jzc19kZWNyeXB0 ZWRfdW51c2VkW107CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgbWVtX2VuY3J5cHRfYWN0aXZlKHZvaWQp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIDBVTEw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2 NCBzbWVfZ2V0X21lX21hc2sodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gMFVMTDsKMTQ0 NzQ6IH0KMTQ0NzQ6ICMgMTggIi4vaW5jbHVkZS9saW51eC9tZW1fZW5jcnlwdC5oIiAyCjE0NDc0 OiAjIDggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZV90eXBlcy5oIiAyCjE0NDc0OiAjIDQ4 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfdHlwZXMuaCIKMTQ0NzQ6ICMgMSAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9wYWdlXzY0X3R5cGVzLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20va2Fz bHIuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBs b25nIGthc2xyX2dldF9yYW5kb21fbG9uZyhjb25zdCBjaGFyICpwdXJwb3NlKTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiB2b2lkIGtlcm5lbF9yYW5kb21pemVfbWVtb3J5KHZvaWQpOwoxNDQ3NDog IyA3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjRfdHlwZXMuaCIgMgoxNDQ3NDogIyA0 OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYWdlX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgNjQgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZV90eXBlcy5oIgoxNDQ3NDogZXh0ZXJuIGludCBkZXZt ZW1faXNfYWxsb3dlZCh1bnNpZ25lZCBsb25nIHBhZ2Vucik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biB1bnNpZ25lZCBsb25nIG1heF9sb3dfcGZuX21hcHBlZDsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25l ZCBsb25nIG1heF9wZm5fbWFwcGVkOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaHlzX2FkZHJfdCBnZXRfbWF4 X21hcHBlZCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAocGh5c19hZGRyX3QpbWF4X3Bm bl9tYXBwZWQgPDwgMTI7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgcGZuX3JhbmdlX2lz X21hcHBlZCh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBlbmRfcGZuKTsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW5pdF9tZW1vcnlfbWFwcGluZyh1 bnNpZ25lZCBsb25nIHN0YXJ0LAoxNDQ3NDogICAgICAgdW5zaWduZWQgbG9uZyBlbmQpOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gdm9pZCBpbml0bWVtX2luaXQodm9pZCk7CjE0NDc0OiAjIDcgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vcHRyYWNl LWFiaS5oIiAxCjE0NDc0OiAjIDcgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9wdHJhY2Uu aCIgMgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci1mbGFncy5o IiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL3VhcGkvYXNtL3Byb2Nlc3Nvci1mbGFncy5oIiAxCjE0NDc0OiAjIDYgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLWZsYWdzLmgiIDIKMTQ0NzQ6ICMgOCAiLi9hcmNo L3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5oIiAyCjE0NDc0OiAjIDggIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vcHRyYWNlLmgiIDIKMTQ0NzQ6ICMgNTYgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vcHRyYWNlLmgiCjE0NDc0OiBzdHJ1Y3QgcHRfcmVncyB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHIxNTsKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIHIxNDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHIxMzsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IHIxMjsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGJwOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgYng7 CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHIxMTsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IHIxMDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHI5OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgcjg7 CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBheDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGN4OwoxNDQ3 NDogIHVuc2lnbmVkIGxvbmcgZHg7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBzaTsKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGRpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg dW5zaWduZWQgbG9uZyBvcmlnX2F4OwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBpcDsK MTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGNzOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CjE0 NDc0OiAgdW5zaWduZWQgbG9uZyBzcDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNzOwoxNDQ3NDog CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRfdHlwZXMuaCIgMQoxNDQ3NDogIyA0MyAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgoxNDQ3NDogIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2Rlc2NfZGVmcy5oIiAxCjE0NDc0OiAjIDE2ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2Rlc2NfZGVmcy5oIgoxNDQ3NDogc3RydWN0IGRlc2Nfc3RydWN0IHsKMTQ0NzQ6 ICB1MTYgbGltaXQwOwoxNDQ3NDogIHUxNiBiYXNlMDsKMTQ0NzQ6ICB1MTYgYmFzZTE6IDgsIHR5 cGU6IDQsIHM6IDEsIGRwbDogMiwgcDogMTsKMTQ0NzQ6ICB1MTYgbGltaXQxOiA0LCBhdmw6IDEs IGw6IDEsIGQ6IDEsIGc6IDEsIGJhc2UyOiA4OwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChwYWNr ZWQpKTsKMTQ0NzQ6ICMgNDAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGVzY19kZWZzLmgiCjE0 NDc0OiBlbnVtIHsKMTQ0NzQ6ICBHQVRFX0lOVEVSUlVQVCA9IDB4RSwKMTQ0NzQ6ICBHQVRFX1RS QVAgPSAweEYsCjE0NDc0OiAgR0FURV9DQUxMID0gMHhDLAoxNDQ3NDogIEdBVEVfVEFTSyA9IDB4 NSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERFU0NfVFNTID0gMHg5 LAoxNDQ3NDogIERFU0NfTERUID0gMHgyLAoxNDQ3NDogIERFU0NUWVBFX1MgPSAweDEwLAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbGR0dHNzX2Rlc2MgewoxNDQ3NDog IHUxNiBsaW1pdDA7CjE0NDc0OiAgdTE2IGJhc2UwOwoxNDQ3NDogCjE0NDc0OiAgdTE2IGJhc2Ux IDogOCwgdHlwZSA6IDUsIGRwbCA6IDIsIHAgOiAxOwoxNDQ3NDogIHUxNiBsaW1pdDEgOiA0LCB6 ZXJvMCA6IDMsIGcgOiAxLCBiYXNlMiA6IDg7CjE0NDc0OiAKMTQ0NzQ6ICB1MzIgYmFzZTM7CjE0 NDc0OiAgdTMyIHplcm8xOwoxNDQ3NDogCjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkp OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBsZHR0c3NfZGVzYyBsZHRfZGVzYzsKMTQ0 NzQ6IHR5cGVkZWYgc3RydWN0IGxkdHRzc19kZXNjIHRzc19kZXNjOwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgaWR0X2JpdHMgewoxNDQ3NDogIHUxNiBpc3QgOiAzLAoxNDQ3NDogICAgemVybyA6IDUs CjE0NDc0OiAgICB0eXBlIDogNSwKMTQ0NzQ6ICAgIGRwbCA6IDIsCjE0NDc0OiAgICBwIDogMTsK MTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBn YXRlX3N0cnVjdCB7CjE0NDc0OiAgdTE2IG9mZnNldF9sb3c7CjE0NDc0OiAgdTE2IHNlZ21lbnQ7 CjE0NDc0OiAgc3RydWN0IGlkdF9iaXRzIGJpdHM7CjE0NDc0OiAgdTE2IG9mZnNldF9taWRkbGU7 CjE0NDc0OiAKMTQ0NzQ6ICB1MzIgb2Zmc2V0X2hpZ2g7CjE0NDc0OiAgdTMyIHJlc2VydmVkOwox NDQ3NDogCjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoxNDQ3NDogCjE0NDc0OiB0 eXBlZGVmIHN0cnVjdCBnYXRlX3N0cnVjdCBnYXRlX2Rlc2M7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGxvbmcgZ2F0ZV9vZmZzZXQoY29uc3QgZ2F0ZV9kZXNjICpnKQoxNDQ3NDogewoxNDQ3NDog CjE0NDc0OiAgcmV0dXJuIGctPm9mZnNldF9sb3cgfCAoKHVuc2lnbmVkIGxvbmcpZy0+b2Zmc2V0 X21pZGRsZSA8PCAxNikgfAoxNDQ3NDogICAoKHVuc2lnbmVkIGxvbmcpIGctPm9mZnNldF9oaWdo IDw8IDMyKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dW5zaWduZWQgbG9uZyBnYXRlX3NlZ21lbnQoY29uc3QgZ2F0ZV9kZXNjICpnKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBnLT5zZWdtZW50OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg ZGVzY19wdHIgewoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IHNpemU7CjE0NDc0OiAgdW5zaWduZWQg bG9uZyBhZGRyZXNzOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSA7CjE0NDc0OiAj IDQ0ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0X3R5cGVzLmgiIDIKMTQ0NzQ6ICMg MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rbWFwX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgOSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9rbWFwX3R5cGVzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9h c20tZ2VuZXJpYy9rbWFwX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTAgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20va21hcF90eXBlcy5oIiAyCjE0NDc0OiAjIDQ1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L3BhcmF2aXJ0X3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w Z3RhYmxlX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTMzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Bn dGFibGVfdHlwZXMuaCIKMTQ0NzQ6IGVudW0gcGFnZV9jYWNoZV9tb2RlIHsKMTQ0NzQ6ICBfUEFH RV9DQUNIRV9NT0RFX1dCID0gMCwKMTQ0NzQ6ICBfUEFHRV9DQUNIRV9NT0RFX1dDID0gMSwKMTQ0 NzQ6ICBfUEFHRV9DQUNIRV9NT0RFX1VDX01JTlVTID0gMiwKMTQ0NzQ6ICBfUEFHRV9DQUNIRV9N T0RFX1VDID0gMywKMTQ0NzQ6ICBfUEFHRV9DQUNIRV9NT0RFX1dUID0gNCwKMTQ0NzQ6ICBfUEFH RV9DQUNIRV9NT0RFX1dQID0gNSwKMTQ0NzQ6IAoxNDQ3NDogIF9QQUdFX0NBQ0hFX01PREVfTlVN ID0gOAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjU3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFi bGVfdHlwZXMuaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlXzY0 X3R5cGVzLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oIiAxCjE0NDc0OiAjIDYgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vcGd0YWJsZV82NF90eXBlcy5oIiAyCjE0NDc0OiAjIDE0ICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3BndGFibGVfNjRfdHlwZXMuaCIKMTQ0NzQ6IHR5cGVkZWYgdW5zaWdu ZWQgbG9uZyBwdGV2YWxfdDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBwbWR2YWxfdDsK MTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBwdWR2YWxfdDsKMTQ0NzQ6IHR5cGVkZWYgdW5z aWduZWQgbG9uZyBwNGR2YWxfdDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBwZ2R2YWxf dDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBwZ3Byb3R2YWxfdDsKMTQ0NzQ6IAoxNDQ3 NDogdHlwZWRlZiBzdHJ1Y3QgeyBwdGV2YWxfdCBwdGU7IH0gcHRlX3Q7CjE0NDc0OiAjIDQzICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfNjRfdHlwZXMuaCIKMTQ0NzQ6IGV4dGVybiB1 bnNpZ25lZCBpbnQgcGdkaXJfc2hpZnQ7CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgaW50IHB0cnNf cGVyX3A0ZDsKMTQ0NzQ6ICMgMjU4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlw ZXMuaCIgMgoxNDQ3NDogIyAyNzMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBl cy5oIgoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgcGdwcm90IHsgcGdwcm90dmFsX3QgcGdwcm90OyB9 IHBncHJvdF90OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7IHBnZHZhbF90IHBnZDsg fSBwZ2RfdDsKMTQ0NzQ6ICMgMzAwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlw ZXMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHBnZF90IG5hdGl2ZV9tYWtlX3BnZChwZ2R2YWxfdCB2YWwpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIChwZ2RfdCkgeyB2YWwgJiAofjBVTEwpIH07CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHBnZHZhbF90IG5hdGl2ZV9wZ2RfdmFsKHBnZF90IHBnZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gcGdkLnBnZCAmICh+MFVMTCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBn ZHZhbF90IHBnZF9mbGFncyhwZ2RfdCBwZ2QpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG5hdGl2 ZV9wZ2RfdmFsKHBnZCkgJiAofigocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8 IDEyKS0xKSkpICYgKChwaHlzX2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSkpOwoxNDQ3NDog fQoxNDQ3NDogIyAzMjggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oIgox NDQ3NDogIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcGd0YWJsZS1ub3A0ZC5oIiAxCjE0NDc0 OiAjIDkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9wZ3RhYmxlLW5vcDRkLmgiCjE0NDc0OiB0eXBl ZGVmIHN0cnVjdCB7IHBnZF90IHBnZDsgfSBwNGRfdDsKMTQ0NzQ6ICMgMjIgIi4vaW5jbHVkZS9h c20tZ2VuZXJpYy9wZ3RhYmxlLW5vcDRkLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGdkX25vbmUocGdkX3QgcGdk KSB7IHJldHVybiAwOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGdkX2JhZChwZ2RfdCBwZ2QpIHsgcmV0dXJuIDA7 IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGludCBwZ2RfcHJlc2VudChwZ2RfdCBwZ2QpIHsgcmV0dXJuIDE7IH0KMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgcGdkX2NsZWFyKHBnZF90ICpwZ2QpIHsgfQoxNDQ3NDogIyAzNiAiLi9pbmNsdWRlL2Fz bS1nZW5lcmljL3BndGFibGUtbm9wNGQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHA0ZF90ICpwNGRfb2Zmc2V0KHBnZF90 ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHA0 ZF90ICopcGdkOwoxNDQ3NDogfQoxNDQ3NDogIyAzMjkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v cGd0YWJsZV90eXBlcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHA0ZF90IG5hdGl2ZV9tYWtlX3A0ZChw dWR2YWxfdCB2YWwpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChwNGRfdCkgeyAucGdkID0gbmF0 aXZlX21ha2VfcGdkKChwZ2R2YWxfdCl2YWwpIH07CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHA0 ZHZhbF90IG5hdGl2ZV9wNGRfdmFsKHA0ZF90IHA0ZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g bmF0aXZlX3BnZF92YWwocDRkLnBnZCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7IHB1ZHZhbF90IHB1ZDsgfSBwdWRfdDsKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgcHVkX3QgbmF0aXZlX21ha2VfcHVkKHBtZHZhbF90IHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gKHB1ZF90KSB7IHZhbCB9OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwdWR2YWxf dCBuYXRpdmVfcHVkX3ZhbChwdWRfdCBwdWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHB1ZC5w dWQ7CjE0NDc0OiB9CjE0NDc0OiAjIDM2OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxl X3R5cGVzLmgiCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7IHBtZHZhbF90IHBtZDsgfSBwbWRfdDsK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgcG1kX3QgbmF0aXZlX21ha2VfcG1kKHBtZHZhbF90IHZhbCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gKHBtZF90KSB7IHZhbCB9OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBwbWR2YWxfdCBuYXRpdmVfcG1kX3ZhbChwbWRfdCBwbWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIHBtZC5wbWQ7CjE0NDc0OiB9CjE0NDc0OiAjIDM5MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9wZ3RhYmxlX3R5cGVzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwNGR2YWxfdCBwNGRfcGZuX21hc2socDRkX3QgcDRk KQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuICgocHRldmFsX3QpKCgoc2lnbmVkIGxv bmcpKH4oKCgxVUwpIDw8IDEyKS0xKSkpICYgKChwaHlzX2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0g MSkpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHA0ZHZhbF90IHA0ZF9mbGFnc19tYXNrKHA0 ZF90IHA0ZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gfnA0ZF9wZm5fbWFzayhwNGQpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBwNGR2YWxfdCBwNGRfZmxhZ3MocDRkX3QgcDRkKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBuYXRpdmVfcDRkX3ZhbChwNGQpICYgcDRkX2ZsYWdzX21hc2socDRk KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcHVkdmFsX3QgcHVkX3Bmbl9tYXNrKHB1ZF90IHB1 ZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAobmF0aXZlX3B1ZF92YWwocHVkKSAmICgoKHB0ZXZhbF90 KSgxKSkgPDwgNykpCjE0NDc0OiAgIHJldHVybiAoKChzaWduZWQgbG9uZykofigoKDFVTCkgPDwg MzApLTEpKSkgJiAoKHBoeXNfYWRkcl90KSgoMVVMTCA8PCA1MikgLSAxKSkpOwoxNDQ3NDogIGVs c2UKMTQ0NzQ6ICAgcmV0dXJuICgocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8 IDEyKS0xKSkpICYgKChwaHlzX2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHB1ZHZhbF90IHB1ZF9mbGFnc19tYXNrKHB1ZF90IHB1ZCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gfnB1ZF9wZm5fbWFzayhwdWQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBwdWR2YWxfdCBwdWRfZmxhZ3MocHVkX3QgcHVkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biBuYXRpdmVfcHVkX3ZhbChwdWQpICYgcHVkX2ZsYWdzX21hc2socHVkKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgcG1kdmFsX3QgcG1kX3Bmbl9tYXNrKHBtZF90IHBtZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICBpZiAobmF0aXZlX3BtZF92YWwocG1kKSAmICgoKHB0ZXZhbF90KSgxKSkgPDwgNykpCjE0 NDc0OiAgIHJldHVybiAoKChzaWduZWQgbG9uZykofigoKDFVTCkgPDwgMjEpLTEpKSkgJiAoKHBo eXNfYWRkcl90KSgoMVVMTCA8PCA1MikgLSAxKSkpOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgcmV0 dXJuICgocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8IDEyKS0xKSkpICYgKChw aHlzX2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHBtZHZhbF90IHBtZF9mbGFnc19tYXNrKHBtZF90IHBtZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gfnBtZF9wZm5fbWFzayhwbWQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwbWR2YWxfdCBw bWRfZmxhZ3MocG1kX3QgcG1kKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBuYXRpdmVfcG1kX3Zh bChwbWQpICYgcG1kX2ZsYWdzX21hc2socG1kKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcHRl X3QgbmF0aXZlX21ha2VfcHRlKHB0ZXZhbF90IHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g KHB0ZV90KSB7IC5wdGUgPSB2YWwgfTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcHRldmFsX3Qg bmF0aXZlX3B0ZV92YWwocHRlX3QgcHRlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBwdGUucHRl OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwdGV2YWxfdCBwdGVfZmxhZ3MocHRlX3QgcHRlKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBuYXRpdmVfcHRlX3ZhbChwdGUpICYgKH4oKHB0ZXZhbF90 KSgoKHNpZ25lZCBsb25nKSh+KCgoMVVMKSA8PCAxMiktMSkpKSAmICgocGh5c19hZGRyX3QpKCgx VUxMIDw8IDUyKSAtIDEpKSkpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVpbnQx Nl90IF9fY2FjaGVtb2RlMnB0ZV90YmxbX1BBR0VfQ0FDSEVfTU9ERV9OVU1dOwoxNDQ3NDogZXh0 ZXJuIHVpbnQ4X3QgX19wdGUyY2FjaGVtb2RlX3RibFs4XTsKMTQ0NzQ6ICMgNDcyICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlwZXMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgY2Fj aGVtb2RlMnByb3R2YWwoZW51bSBwYWdlX2NhY2hlX21vZGUgcGNtKQoxNDQ3NDogewoxNDQ3NDog IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHBjbSA9PSAwKSwgMSkpCjE0NDc0OiAgIHJldHVybiAw OwoxNDQ3NDogIHJldHVybiBfX2NhY2hlbW9kZTJwdGVfdGJsW3BjbV07CjE0NDc0OiB9CjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBwZ3Byb3RfdCBjYWNoZW1vZGUycGdwcm90KGVudW0gcGFnZV9jYWNoZV9tb2RlIHBjbSkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKChwZ3Byb3RfdCkgeyAoY2FjaGVtb2RlMnByb3R2YWwocGNt KSkgfSApOwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgZW51bSBwYWdlX2NhY2hlX21vZGUgcGdwcm90MmNhY2hl bW9kZShwZ3Byb3RfdCBwZ3Byb3QpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtYXNr ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICBtYXNrZWQgPSAoKHBncHJvdCkucGdwcm90KSAmICgoKChwdGV2 YWxfdCkoMSkpIDw8IDMpIHwgKCgocHRldmFsX3QpKDEpKSA8PCA0KSB8ICgoKHB0ZXZhbF90KSgx KSkgPDwgNykpOwoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKG1hc2tlZCA9PSAwKSwg MSkpCjE0NDc0OiAgIHJldHVybiAwOwoxNDQ3NDogIHJldHVybiBfX3B0ZTJjYWNoZW1vZGVfdGJs WygoKChtYXNrZWQpID4+ICg3IC0gMikpICYgNCkgfCAoKChtYXNrZWQpID4+ICg0IC0gMSkpICYg MikgfCAoKChtYXNrZWQpID4+IDMpICYgMSkpXTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBncHJvdF90IHBn cHJvdF80a18yX2xhcmdlKHBncHJvdF90IHBncHJvdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBwZ3Byb3R2 YWxfdCB2YWwgPSAoKHBncHJvdCkucGdwcm90KTsKMTQ0NzQ6ICBwZ3Byb3RfdCBuZXc7CjE0NDc0 OiAKMTQ0NzQ6ICAoKG5ldykucGdwcm90KSA9ICh2YWwgJiB+KCgoKHB0ZXZhbF90KSgxKSkgPDwg NykgfCAoKChwdGV2YWxfdCkoMSkpIDw8IDEyKSkpIHwKMTQ0NzQ6ICAgKCh2YWwgJiAoKChwdGV2 YWxfdCkoMSkpIDw8IDcpKSA8PCAoMTIgLSA3KSk7CjE0NDc0OiAgcmV0dXJuIG5ldzsKMTQ0NzQ6 IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHBncHJvdF90IHBncHJvdF9sYXJnZV8yXzRrKHBncHJvdF90IHBncHJvdCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBwZ3Byb3R2YWxfdCB2YWwgPSAoKHBncHJvdCkucGdwcm90KTsKMTQ0NzQ6 ICBwZ3Byb3RfdCBuZXc7CjE0NDc0OiAKMTQ0NzQ6ICAoKG5ldykucGdwcm90KSA9ICh2YWwgJiB+ KCgoKHB0ZXZhbF90KSgxKSkgPDwgNykgfCAoKChwdGV2YWxfdCkoMSkpIDw8IDEyKSkpIHwKMTQ0 NzQ6ICAgICAgKCh2YWwgJiAoKChwdGV2YWxfdCkoMSkpIDw8IDEyKSkgPj4KMTQ0NzQ6ICAgICAg ICgxMiAtIDcpKTsKMTQ0NzQ6ICByZXR1cm4gbmV3OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHBhZ2UgKnBndGFibGVfdDsKMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIHB0ZXZhbF90IF9fc3VwcG9ydGVkX3B0ZV9tYXNrOwoxNDQ3NDogZXh0ZXJuIHB0ZXZhbF90 IF9fZGVmYXVsdF9rZXJuZWxfcHRlX21hc2s7CjE0NDc0OiBleHRlcm4gdm9pZCBzZXRfbngodm9p ZCk7CjE0NDc0OiBleHRlcm4gaW50IG54X2VuYWJsZWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHBncHJvdF90IHBncHJvdF93cml0ZWNvbWJpbmUocGdwcm90X3QgcHJvdCk7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHBncHJvdF90IHBncHJvdF93cml0ZXRocm91Z2gocGdw cm90X3QgcHJvdCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGZpbGU7CjE0NDc0OiBwZ3Byb3RfdCBwaHlzX21lbV9hY2Nlc3NfcHJvdChzdHJ1 Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBwZm4sCjE0NDc0OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsIHBncHJvdF90IHZtYV9wcm90KTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIHNldF9wdGVfdmFkZHIodW5zaWduZWQgbG9uZyB2YWRk ciwgcHRlX3QgcHRlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNlcV9maWxlOwoxNDQ3NDogZXh0ZXJuIHZvaWQg YXJjaF9yZXBvcnRfbWVtaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pOwoxNDQ3NDogCjE0NDc0OiBl bnVtIHBnX2xldmVsIHsKMTQ0NzQ6ICBQR19MRVZFTF9OT05FLAoxNDQ3NDogIFBHX0xFVkVMXzRL LAoxNDQ3NDogIFBHX0xFVkVMXzJNLAoxNDQ3NDogIFBHX0xFVkVMXzFHLAoxNDQ3NDogIFBHX0xF VkVMXzUxMkcsCjE0NDc0OiAgUEdfTEVWRUxfTlVNCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiB2b2lkIHVwZGF0ZV9wYWdlX2NvdW50KGludCBsZXZlbCwgdW5zaWduZWQg bG9uZyBwYWdlcyk7CjE0NDc0OiAjIDU2NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxl X3R5cGVzLmgiCjE0NDc0OiBleHRlcm4gcHRlX3QgKmxvb2t1cF9hZGRyZXNzKHVuc2lnbmVkIGxv bmcgYWRkcmVzcywgdW5zaWduZWQgaW50ICpsZXZlbCk7CjE0NDc0OiBleHRlcm4gcHRlX3QgKmxv b2t1cF9hZGRyZXNzX2luX3BnZChwZ2RfdCAqcGdkLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCjE0 NDc0OiAgICAgICAgIHVuc2lnbmVkIGludCAqbGV2ZWwpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg bW1fc3RydWN0OwoxNDQ3NDogZXh0ZXJuIHB0ZV90ICpsb29rdXBfYWRkcmVzc19pbl9tbShzdHJ1 Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAoxNDQ3NDogICAgICAgIHVu c2lnbmVkIGludCAqbGV2ZWwpOwoxNDQ3NDogZXh0ZXJuIHBtZF90ICpsb29rdXBfcG1kX2FkZHJl c3ModW5zaWduZWQgbG9uZyBhZGRyZXNzKTsKMTQ0NzQ6IGV4dGVybiBwaHlzX2FkZHJfdCBzbG93 X3ZpcnRfdG9fcGh5cyh2b2lkICpfX2FkZHJlc3MpOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJp YnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xk X18pKSBrZXJuZWxfbWFwX3BhZ2VzX2luX3BnZChwZ2RfdCAqcGdkLCB1NjQgcGZuLAoxNDQ3NDog ICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKMTQ0NzQ6ICAgICAgICB1bnNpZ25lZCBudW1w YWdlcywKMTQ0NzQ6ICAgICAgICB1bnNpZ25lZCBsb25nIHBhZ2VfZmxhZ3MpOwoxNDQ3NDogZXh0 ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRy aWJ1dGVfXygoX19jb2xkX18pKSBrZXJuZWxfdW5tYXBfcGFnZXNfaW5fcGdkKHBnZF90ICpwZ2Qs IHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKMTQ0NzQ6ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnVt cGFnZXMpOwoxNDQ3NDogIyA0NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBl cy5oIiAyCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5o IiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2luY2x1ZGUvbGludXgvc3RhdGljX2tleS5oIiAxCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51 eC9qdW1wX2xhYmVsLmgiIDEKMTQ0NzQ6ICMgNzkgIi4vaW5jbHVkZS9saW51eC9qdW1wX2xhYmVs LmgiCjE0NDc0OiBleHRlcm4gYm9vbCBzdGF0aWNfa2V5X2luaXRpYWxpemVkOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3Qgc3RhdGljX2tleSB7CjE0NDc0OiAgYXRvbWljX3QgZW5hYmxlZDsKMTQ0NzQ6ICMgMTAyICIu L2luY2x1ZGUvbGludXgvanVtcF9sYWJlbC5oIgoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgdW5z aWduZWQgbG9uZyB0eXBlOwoxNDQ3NDogICBzdHJ1Y3QganVtcF9lbnRyeSAqZW50cmllczsKMTQ0 NzQ6ICAgc3RydWN0IHN0YXRpY19rZXlfbW9kICpuZXh0OwoxNDQ3NDogIH07CjE0NDc0OiB9Owox NDQ3NDogIyAxMTcgIi4vaW5jbHVkZS9saW51eC9qdW1wX2xhYmVsLmgiCjE0NDc0OiAjIDEgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vanVtcF9sYWJlbC5oIiAxCjE0NDc0OiAjIDIzICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgYm9vbCBhcmNoX3N0YXRpY19icmFuY2goc3RydWN0IHN0YXRpY19rZXkg KmtleSwgYm9vbCBicmFuY2gpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBhc20gZ290bygiMToiICIu Ynl0ZSAiICIweDBmLDB4MWYsMHg0NCwweDAwLDAiICJcblx0IiAiLnB1c2hzZWN0aW9uIF9fanVt cF90YWJsZSwgIFwiYXdcIiBcblx0IiAiICIgIi5iYWxpZ24gOCIgIiAiICJcblx0IiAiLmxvbmcg MWIgLSAuLCAlbFtsX3llc10gLSAuIFxuXHQiICIgIiAiLnF1YWQiICIgIiAiJWMwICsgJWMxIC0g LlxuXHQiICIucG9wc2VjdGlvbiBcblx0IiA6IDogImkiIChrZXkpLCAiaSIgKGJyYW5jaCkgOiA6 IGxfeWVzKTsgYXNtICgiIik7IH0gd2hpbGUgKDApCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBmYWxzZTsKMTQ0NzQ6IGxfeWVz OgoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgYXJjaF9zdGF0aWNfYnJhbmNoX2p1bXAoc3Ry dWN0IHN0YXRpY19rZXkgKmtleSwgYm9vbCBicmFuY2gpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBh c20gZ290bygiMToiICIuYnl0ZSAweGU5XG5cdCAubG9uZyAlbFtsX3llc10gLSAyZlxuXHQiICIy OlxuXHQiICIucHVzaHNlY3Rpb24gX19qdW1wX3RhYmxlLCAgXCJhd1wiIFxuXHQiICIgIiAiLmJh bGlnbiA4IiAiICIgIlxuXHQiICIubG9uZyAxYiAtIC4sICVsW2xfeWVzXSAtIC4gXG5cdCIgIiAi ICIucXVhZCIgIiAiICIlYzAgKyAlYzEgLSAuXG5cdCIgIi5wb3BzZWN0aW9uIFxuXHQiIDogOiAi aSIgKGtleSksICJpIiAoYnJhbmNoKSA6IDogbF95ZXMpOyBhc20gKCIiKTsgfSB3aGlsZSAoMCkK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiAK MTQ0NzQ6ICByZXR1cm4gZmFsc2U7CjE0NDc0OiBsX3llczoKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgMTE4ICIuL2luY2x1ZGUvbGludXgvanVtcF9sYWJlbC5oIiAyCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBqdW1wX2VudHJ5IHsK MTQ0NzQ6ICBzMzIgY29kZTsKMTQ0NzQ6ICBzMzIgdGFyZ2V0OwoxNDQ3NDogIGxvbmcga2V5Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBqdW1wX2VudHJ5X2NvZGUoY29u c3Qgc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodW5z aWduZWQgbG9uZykmZW50cnktPmNvZGUgKyBlbnRyeS0+Y29kZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdW5zaWduZWQgbG9uZyBqdW1wX2VudHJ5X3RhcmdldChjb25zdCBzdHJ1Y3QganVtcF9l bnRyeSAqZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh1bnNpZ25lZCBsb25nKSZlbnRy eS0+dGFyZ2V0ICsgZW50cnktPnRhcmdldDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IHN0YXRpY19rZXkgKmp1bXBfZW50cnlfa2V5KGNvbnN0IHN0cnVjdCBqdW1wX2VudHJ5ICplbnRy eSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBsb25nIG9mZnNldCA9IGVudHJ5LT5rZXkgJiB+M0w7CjE0NDc0 OiAKMTQ0NzQ6ICByZXR1cm4gKHN0cnVjdCBzdGF0aWNfa2V5ICopKCh1bnNpZ25lZCBsb25nKSZl bnRyeS0+a2V5ICsgb2Zmc2V0KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTY0ICIuL2luY2x1ZGUvbGlu dXgvanVtcF9sYWJlbC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBqdW1wX2VudHJ5X2lzX2JyYW5jaChjb25zdCBz dHJ1Y3QganVtcF9lbnRyeSAqZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh1bnNpZ25l ZCBsb25nKWVudHJ5LT5rZXkgJiAxVUw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wganVt cF9lbnRyeV9pc19pbml0KGNvbnN0IHN0cnVjdCBqdW1wX2VudHJ5ICplbnRyeSkKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpZW50cnktPmtleSAmIDJVTDsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBqdW1wX2VudHJ5X3NldF9pbml0KHN0cnVjdCBqdW1wX2VudHJ5 ICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBlbnRyeS0+a2V5IHw9IDI7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGp1 bXBfbGFiZWxfdHlwZSB7CjE0NDc0OiAgSlVNUF9MQUJFTF9OT1AgPSAwLAoxNDQ3NDogIEpVTVBf TEFCRUxfSk1QLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1vZHVsZTsKMTQ0NzQ6 ICMgMTk4ICIuL2luY2x1ZGUvbGludXgvanVtcF9sYWJlbC5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKSBib29sIHN0YXRpY19rZXlfZmFsc2Uoc3RydWN0IHN0YXRp Y19rZXkgKmtleSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJjaF9zdGF0aWNfYnJhbmNoKGtl eSwgZmFsc2UpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIGJvb2wgc3RhdGljX2tleV90cnVlKHN0cnVjdCBzdGF0aWNfa2V5ICprZXkp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICFhcmNoX3N0YXRpY19icmFuY2goa2V5LCB0cnVlKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBqdW1wX2VudHJ5IF9fc3RhcnRf X19qdW1wX3RhYmxlW107CjE0NDc0OiBleHRlcm4gc3RydWN0IGp1bXBfZW50cnkgX19zdG9wX19f anVtcF90YWJsZVtdOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBqdW1wX2xhYmVsX2luaXQo dm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBqdW1wX2xhYmVsX2xvY2sodm9pZCk7CjE0NDc0OiBl eHRlcm4gdm9pZCBqdW1wX2xhYmVsX3VubG9jayh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGFy Y2hfanVtcF9sYWJlbF90cmFuc2Zvcm0oc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5LAoxNDQ3NDog ICAgICAgICAgIGVudW0ganVtcF9sYWJlbF90eXBlIHR5cGUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQg YXJjaF9qdW1wX2xhYmVsX3RyYW5zZm9ybV9zdGF0aWMoc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5 LAoxNDQ3NDogICAgICAgICAgIGVudW0ganVtcF9sYWJlbF90eXBlIHR5cGUpOwoxNDQ3NDogZXh0 ZXJuIGJvb2wgYXJjaF9qdW1wX2xhYmVsX3RyYW5zZm9ybV9xdWV1ZShzdHJ1Y3QganVtcF9lbnRy eSAqZW50cnksCjE0NDc0OiAgICAgICAgICBlbnVtIGp1bXBfbGFiZWxfdHlwZSB0eXBlKTsKMTQ0 NzQ6IGV4dGVybiB2b2lkIGFyY2hfanVtcF9sYWJlbF90cmFuc2Zvcm1fYXBwbHkodm9pZCk7CjE0 NDc0OiBleHRlcm4gaW50IGp1bXBfbGFiZWxfdGV4dF9yZXNlcnZlZCh2b2lkICpzdGFydCwgdm9p ZCAqZW5kKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHN0YXRpY19rZXlfc2xvd19pbmMoc3RydWN0IHN0 YXRpY19rZXkgKmtleSk7CjE0NDc0OiBleHRlcm4gdm9pZCBzdGF0aWNfa2V5X3Nsb3dfZGVjKHN0 cnVjdCBzdGF0aWNfa2V5ICprZXkpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgc3RhdGljX2tleV9zbG93 X2luY19jcHVzbG9ja2VkKHN0cnVjdCBzdGF0aWNfa2V5ICprZXkpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgc3RhdGljX2tleV9zbG93X2RlY19jcHVzbG9ja2VkKHN0cnVjdCBzdGF0aWNfa2V5ICprZXkp OwoxNDQ3NDogZXh0ZXJuIHZvaWQganVtcF9sYWJlbF9hcHBseV9ub3BzKHN0cnVjdCBtb2R1bGUg Km1vZCk7CjE0NDc0OiBleHRlcm4gaW50IHN0YXRpY19rZXlfY291bnQoc3RydWN0IHN0YXRpY19r ZXkgKmtleSk7CjE0NDc0OiBleHRlcm4gdm9pZCBzdGF0aWNfa2V5X2VuYWJsZShzdHJ1Y3Qgc3Rh dGljX2tleSAqa2V5KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHN0YXRpY19rZXlfZGlzYWJsZShzdHJ1 Y3Qgc3RhdGljX2tleSAqa2V5KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHN0YXRpY19rZXlfZW5hYmxl X2NwdXNsb2NrZWQoc3RydWN0IHN0YXRpY19rZXkgKmtleSk7CjE0NDc0OiBleHRlcm4gdm9pZCBz dGF0aWNfa2V5X2Rpc2FibGVfY3B1c2xvY2tlZChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5KTsKMTQ0 NzQ6ICMgMzQ2ICIuL2luY2x1ZGUvbGludXgvanVtcF9sYWJlbC5oIgoxNDQ3NDogc3RydWN0IHN0 YXRpY19rZXlfdHJ1ZSB7CjE0NDc0OiAgc3RydWN0IHN0YXRpY19rZXkga2V5OwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHN0YXRpY19rZXlfZmFsc2UgewoxNDQ3NDogIHN0cnVjdCBz dGF0aWNfa2V5IGtleTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDM4NSAiLi9pbmNsdWRlL2xpbnV4L2p1 bXBfbGFiZWwuaCIKMTQ0NzQ6IGV4dGVybiBib29sIF9fX193cm9uZ19icmFuY2hfZXJyb3Iodm9p ZCk7CjE0NDc0OiAjIDIgIi4vaW5jbHVkZS9saW51eC9zdGF0aWNfa2V5LmgiIDIKMTQ0NzQ6ICMg NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNoLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYWx0ZXJuYXRpdmUtYXNtLmgi IDEKMTQ0NzQ6ICMgMTAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oIiAy CjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3ItaW5kZXguaCIg MQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9s aW51eC9iaXRzLmgiIDEKMTQ0NzQ6ICMgNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3ItaW5k ZXguaCIgMgoxNDQ3NDogIyAxMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNo LmgiIDIKMTQ0NzQ6ICMgMjEzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2gu aCIKMTQ0NzQ6IGVudW0gc3BlY3RyZV92Ml9taXRpZ2F0aW9uIHsKMTQ0NzQ6ICBTUEVDVFJFX1Yy X05PTkUsCjE0NDc0OiAgU1BFQ1RSRV9WMl9SRVRQT0xJTkVfR0VORVJJQywKMTQ0NzQ6ICBTUEVD VFJFX1YyX1JFVFBPTElORV9BTUQsCjE0NDc0OiAgU1BFQ1RSRV9WMl9JQlJTX0VOSEFOQ0VELAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHNwZWN0cmVfdjJfdXNlcl9taXRp Z2F0aW9uIHsKMTQ0NzQ6ICBTUEVDVFJFX1YyX1VTRVJfTk9ORSwKMTQ0NzQ6ICBTUEVDVFJFX1Yy X1VTRVJfU1RSSUNULAoxNDQ3NDogIFNQRUNUUkVfVjJfVVNFUl9TVFJJQ1RfUFJFRkVSUkVELAox NDQ3NDogIFNQRUNUUkVfVjJfVVNFUl9QUkNUTCwKMTQ0NzQ6ICBTUEVDVFJFX1YyX1VTRVJfU0VD Q09NUCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBzc2JfbWl0aWdhdGlv biB7CjE0NDc0OiAgU1BFQ19TVE9SRV9CWVBBU1NfTk9ORSwKMTQ0NzQ6ICBTUEVDX1NUT1JFX0JZ UEFTU19ESVNBQkxFLAoxNDQ3NDogIFNQRUNfU1RPUkVfQllQQVNTX1BSQ1RMLAoxNDQ3NDogIFNQ RUNfU1RPUkVfQllQQVNTX1NFQ0NPTVAsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g Y2hhciBfX2luZGlyZWN0X3RodW5rX3N0YXJ0W107CjE0NDc0OiBleHRlcm4gY2hhciBfX2luZGly ZWN0X3RodW5rX2VuZFtdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHZtZXhpdF9maWxsX1JTQih2b2lkKQoxNDQ3NDog ewoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb29wczsKMTQ0NzQ6IAoxNDQ3NDogIGFz bSB2b2xhdGlsZSAoIjk5OTpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLmlnbm9yZV9hbHRz XG5cdCIgIi5sb25nIDk5OWIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIKMTQ0NzQ6ICAgICAg ICAgIiMgQUxUOiBvbGRuc3RyXG4iICI2NjE6XG5cdCIgImptcCA5MTBmIiAiXG42NjI6XG4iICIj IEFMVDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikt KCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIg IiktKCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAu YWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2 NjQiIjEiImYgLSAuXG4iICIgLndvcmQgIiAiKCA3KjMyKzEyKSIgIlxuIiAiIC5ieXRlICIgIjY2 MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIg LmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rpb24g LmFsdGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIx IiAiXG4iICI2NjQiIjEiIjpcblx0IiAibW92ICQoMzIvMiksICUwOyA3NzE6IGNhbGwgNzcyZjsg NzczOiBwYXVzZTsgbGZlbmNlOyBqbXAgNzczYjsgNzcyOiBjYWxsIDc3NGY7IDc3NTogcGF1c2U7 IGxmZW5jZTsgam1wIDc3NWI7IDc3NDogZGVjICUwOyBqbnogNzcxYjsgYWRkICQoNjQvOCkgKiAz MiwgJTE7IiAiXG4iICI2NjUiIjEiICI6XG4iICIucG9wc2VjdGlvblxuIgoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICAgICAgICAgIjkxMDoiCjE0NDc0OiAgICAgICAgIDogIj1yIiAobG9vcHMpLCAi K3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpCjE0NDc0OiAgICAgICAgIDogOiAibWVtb3J5IiAp OwoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkKMTQ0NzQ6IHZvaWQgYWx0ZXJuYXRpdmVfbXNyX3dyaXRlKHVuc2lnbmVkIGlu dCBtc3IsIHU2NCB2YWwsIHVuc2lnbmVkIGludCBmZWF0dXJlKQoxNDQ3NDogewoxNDQ3NDogIGFz bSB2b2xhdGlsZSgiIyBBTFQ6IG9sZG5zdHJcbiIgIjY2MTpcblx0IiAiIiAiXG42NjI6XG4iICIj IEFMVDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikt KCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIg IiktKCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAu YWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2 NjQiIjEiImYgLSAuXG4iICIgLndvcmQgIiAiJWNbZmVhdHVyZV0iICJcbiIgIiAuYnl0ZSAiICI2 NjMiImItNjYxYiIgIlxuIiAiIC5ieXRlICIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIlxuIiAi IC5ieXRlICIgIjY2MyIiYi02NjJiIiAiXG4iICIucG9wc2VjdGlvblxuIiAiLnB1c2hzZWN0aW9u IC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgXCJheFwiXG4iICIjIEFMVDogcmVwbGFjZW1lbnQgIiAi MSIgIlxuIiAiNjY0IiIxIiI6XG5cdCIgIndybXNyIiAiXG4iICI2NjUiIjEiICI6XG4iICIucG9w c2VjdGlvblxuIgoxNDQ3NDogICA6IDogImMiIChtc3IpLAoxNDQ3NDogICAgICAgImEiICgodTMy KXZhbCksCjE0NDc0OiAgICAgICAiZCIgKCh1MzIpKHZhbCA+PiAzMikpLAoxNDQ3NDogICAgICAg W2ZlYXR1cmVdICJpIiAoZmVhdHVyZSkKMTQ0NzQ6ICAgOiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcih2b2lk KQoxNDQ3NDogewoxNDQ3NDogIHU2NCB2YWwgPSAoKCgoMVVMKSkpIDw8ICgwKSk7CjE0NDc0OiAK MTQ0NzQ6ICBhbHRlcm5hdGl2ZV9tc3Jfd3JpdGUoMHgwMDAwMDA0OSwgdmFsLCAoIDcqMzIrMjEp KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdTY0IHg4Nl9zcGVjX2N0 cmxfYmFzZTsKMTQ0NzQ6ICMgMzA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFu Y2guaCIKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSBzd2l0Y2hfdG9fY29u ZF9zdGlicDsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSBzd2l0Y2hfbW1f Y29uZF9pYnBiOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIHN3aXRjaF9t bV9hbHdheXNfaWJwYjsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBzdGF0aWNfa2V5X2Zh bHNlIG1kc191c2VyX2NsZWFyOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNl IG1kc19pZGxlX2NsZWFyOwoxNDQ3NDogIyAzMjIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9z cGVjLWJyYW5jaC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtZHNfY2xlYXJfY3B1X2J1ZmZlcnModm9pZCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBzdGF0aWMgY29uc3QgdTE2IGRzID0gKDMqOCk7CjE0NDc0OiAjIDMzNSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNoLmgiCjE0NDc0OiAgYXNtIHZvbGF0 aWxlKCJ2ZXJ3ICVbZHNdIiA6IDogW2RzXSAibSIgKGRzKSA6ICJjYyIpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBt ZHNfdXNlcl9jbGVhcl9jcHVfYnVmZmVycyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIGlmICgoeyBi b29sIGJyYW5jaDsgaWYgKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCombWRz X3VzZXJfY2xlYXIpLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlKSkgYnJhbmNoID0gIWFyY2hfc3Rh dGljX2JyYW5jaCgmKCZtZHNfdXNlcl9jbGVhciktPmtleSwgdHJ1ZSk7IGVsc2UgaWYgKF9fYnVp bHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCombWRzX3VzZXJfY2xlYXIpLCBzdHJ1Y3Qg c3RhdGljX2tleV9mYWxzZSkpIGJyYW5jaCA9ICFhcmNoX3N0YXRpY19icmFuY2hfanVtcCgmKCZt ZHNfdXNlcl9jbGVhciktPmtleSwgdHJ1ZSk7IGVsc2UgYnJhbmNoID0gX19fX3dyb25nX2JyYW5j aF9lcnJvcigpOyBfX2J1aWx0aW5fZXhwZWN0KCEhKGJyYW5jaCksIDEpOyB9KSkKMTQ0NzQ6ICAg bWRzX2NsZWFyX2NwdV9idWZmZXJzKCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG1kc19pZGxlX2NsZWFyX2NwdV9i dWZmZXJzKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKCh7IGJvb2wgYnJhbmNoOyBpZiAoX19i dWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKiZtZHNfaWRsZV9jbGVhciksIHN0cnVj dCBzdGF0aWNfa2V5X3RydWUpKSBicmFuY2ggPSAhYXJjaF9zdGF0aWNfYnJhbmNoKCYoJm1kc19p ZGxlX2NsZWFyKS0+a2V5LCB0cnVlKTsgZWxzZSBpZiAoX19idWlsdGluX3R5cGVzX2NvbXBhdGli bGVfcCh0eXBlb2YoKiZtZHNfaWRsZV9jbGVhciksIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlKSkg YnJhbmNoID0gIWFyY2hfc3RhdGljX2JyYW5jaF9qdW1wKCYoJm1kc19pZGxlX2NsZWFyKS0+a2V5 LCB0cnVlKTsgZWxzZSBicmFuY2ggPSBfX19fd3JvbmdfYnJhbmNoX2Vycm9yKCk7IF9fYnVpbHRp bl9leHBlY3QoISEoYnJhbmNoKSwgMSk7IH0pKQoxNDQ3NDogICBtZHNfY2xlYXJfY3B1X2J1ZmZl cnMoKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZp cnRfdHlwZXMuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGFnZTsKMTQ0NzQ6IHN0cnVjdCB0 aHJlYWRfc3RydWN0OwoxNDQ3NDogc3RydWN0IGRlc2NfcHRyOwoxNDQ3NDogc3RydWN0IHRzc19z dHJ1Y3Q7CjE0NDc0OiBzdHJ1Y3QgbW1fc3RydWN0OwoxNDQ3NDogc3RydWN0IGRlc2Nfc3RydWN0 OwoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0OwoxNDQ3NDogc3RydWN0IGNwdW1hc2s7CjE0NDc0 OiBzdHJ1Y3QgZmx1c2hfdGxiX2luZm87CjE0NDc0OiBzdHJ1Y3QgbW11X2dhdGhlcjsKMTQ0NzQ6 IHN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGFyYXZpcnRfY2FsbGVlX3NhdmUgewoxNDQ3NDogIHZvaWQg KmZ1bmM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwdl9pbmZvIHsK MTQ0NzQ6ICMgNzkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRfdHlwZXMuaCIKMTQ0 NzQ6ICBjb25zdCBjaGFyICpuYW1lOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHB2 X2luaXRfb3BzIHsKMTQ0NzQ6ICMgOTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRf dHlwZXMuaCIKMTQ0NzQ6ICB1bnNpZ25lZCAoKnBhdGNoKSh1OCB0eXBlLCB2b2lkICppbnNuX2J1 ZmYsCjE0NDc0OiAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbGVuKTsKMTQ0NzQ6 IH0gOwoxNDQ3NDogIyAxMDQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRfdHlwZXMu aCIKMTQ0NzQ6IHN0cnVjdCBwdl90aW1lX29wcyB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25n ICgqc2NoZWRfY2xvY2spKHZvaWQpOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyAoKnN0ZWFs X2Nsb2NrKShpbnQgY3B1KTsKMTQ0NzQ6IH0gOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHZfY3B1 X29wcyB7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaW9fZGVsYXkpKHZvaWQpOwoxNDQ3NDogIyAx ODMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRfdHlwZXMuaCIKMTQ0NzQ6IH0gOwox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHZfaXJxX29wcyB7CjE0NDc0OiAjIDIwNCAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgoxNDQ3NDogfSA7CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBwdl9tbXVfb3BzIHsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpmbHVzaF90bGJfdXNl cikodm9pZCk7CjE0NDc0OiAgdm9pZCAoKmZsdXNoX3RsYl9rZXJuZWwpKHZvaWQpOwoxNDQ3NDog IHZvaWQgKCpmbHVzaF90bGJfb25lX3VzZXIpKHVuc2lnbmVkIGxvbmcgYWRkcik7CjE0NDc0OiAg dm9pZCAoKmZsdXNoX3RsYl9vdGhlcnMpKGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVzLAoxNDQ3 NDogICAgICBjb25zdCBzdHJ1Y3QgZmx1c2hfdGxiX2luZm8gKmluZm8pOwoxNDQ3NDogCjE0NDc0 OiAgdm9pZCAoKnRsYl9yZW1vdmVfdGFibGUpKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsIHZvaWQg KnRhYmxlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmV4aXRfbW1hcCkoc3RydWN0 IG1tX3N0cnVjdCAqbW0pOwoxNDQ3NDogIyAzMDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFy YXZpcnRfdHlwZXMuaCIKMTQ0NzQ6IH0gOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXJjaF9zcGlu bG9jazsKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwaW5sb2Nr X3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3BpbmxvY2tf dHlwZXMuaCIKMTQ0NzQ6IHR5cGVkZWYgdTggX190aWNrZXRfdDsKMTQ0NzQ6IHR5cGVkZWYgdTE2 IF9fdGlja2V0cGFpcl90OwoxNDQ3NDogIyAyNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGlu bG9ja190eXBlcy5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcXNwaW5sb2Nr X3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMjIgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9xc3BpbmxvY2tf dHlwZXMuaCIKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHFzcGlubG9jayB7CjE0NDc0OiAgdW5pb24g ewoxNDQ3NDogICBhdG9taWNfdCB2YWw7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIHU4IGxv Y2tlZDsKMTQ0NzQ6ICAgIHU4IHBlbmRpbmc7CjE0NDc0OiAgIH07CjE0NDc0OiAgIHN0cnVjdCB7 CjE0NDc0OiAgICB1MTYgbG9ja2VkX3BlbmRpbmc7CjE0NDc0OiAgICB1MTYgdGFpbDsKMTQ0NzQ6 ICAgfTsKMTQ0NzQ6ICMgNTEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9xc3BpbmxvY2tfdHlwZXMu aCIKMTQ0NzQ6ICB9OwoxNDQ3NDogfSBhcmNoX3NwaW5sb2NrX3Q7CjE0NDc0OiAjIDI4ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrX3R5cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcXJ3bG9ja190eXBlcy5oIiAxCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUv dWFwaS9hc20vYnl0ZW9yZGVyLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBp L2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDEKMTQ0NzQ6ICMgMTMgIi4vaW5jbHVk ZS91YXBpL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiCjE0NDc0OiAjIDEgIi4vaW5j bHVkZS9saW51eC9zd2FiLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zd2FiLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvdWFwaS9hc20vc3dhYi5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fY29u c3RfXykpIF9fdTMyIF9fYXJjaF9zd2FiMzIoX191MzIgdmFsKQoxNDQ3NDogewoxNDQ3NDogIGFz bSgiYnN3YXBsICUwIiA6ICI9ciIgKHZhbCkgOiAiMCIgKHZhbCkpOwoxNDQ3NDogIHJldHVybiB2 YWw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19jb25z dF9fKSkgX191NjQgX19hcmNoX3N3YWI2NChfX3U2NCB2YWwpCjE0NDc0OiB7CjE0NDc0OiAjIDMx ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc3dhYi5oIgoxNDQ3NDogIGFzbSgiYnN3YXBx ICUwIiA6ICI9ciIgKHZhbCkgOiAiMCIgKHZhbCkpOwoxNDQ3NDogIHJldHVybiB2YWw7CjE0NDc0 OiAKMTQ0NzQ6IH0KMTQ0NzQ6ICMgOSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3dhYi5oIiAyCjE0 NDc0OiAjIDQ4ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zd2FiLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbnN0X18pKSBfX3UxNiBfX2Zzd2FiMTYoX191MTYgdmFsKQoxNDQ3NDogewoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAoKF9fdTE2KSggKCgoX191MTYpKHZh bCkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAoKChfX3UxNikodmFsKSAmIChfX3UxNikweGZm MDBVKSA+PiA4KSkpOwoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fY29uc3RfXykpIF9fdTMyIF9fZnN3YWIzMihfX3UzMiB2YWwpCjE0NDc0OiB7CjE0NDc0 OiAKMTQ0NzQ6ICByZXR1cm4gX19hcmNoX3N3YWIzMih2YWwpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKSBf X3U2NCBfX2Zzd2FiNjQoX191NjQgdmFsKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgcmV0dXJu IF9fYXJjaF9zd2FiNjQodmFsKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2NvbnN0X18pKSBfX3UzMiBfX2Zzd2FodzMyKF9fdTMyIHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gKChfX3UzMikoICgoKF9fdTMyKSh2YWwp ICYgKF9fdTMyKTB4MDAwMGZmZmZVTCkgPDwgMTYpIHwgKCgoX191MzIpKHZhbCkgJiAoX191MzIp MHhmZmZmMDAwMFVMKSA+PiAxNikpKTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKSBfX3UzMiBfX2Zzd2FoYjMyKF9fdTMyIHZhbCkKMTQ0 NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gKChfX3UzMikoICgo KF9fdTMyKSh2YWwpICYgKF9fdTMyKTB4MDBmZjAwZmZVTCkgPDwgOCkgfCAoKChfX3UzMikodmFs KSAmIChfX3UzMikweGZmMDBmZjAwVUwpID4+IDgpKSk7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMTM2ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zd2FiLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxvbmcgX19zd2FiKGNvbnN0IHVuc2lnbmVk IGxvbmcgeSkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAoX191NjQpX19idWlsdGlu X2Jzd2FwNjQoKF9fdTY0KSh5KSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9CjE0 NDc0OiAjIDE3MSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3dhYi5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBfX3UxNiBfX3N3YWIxNnAoY29uc3QgX191MTYgKnAp CjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIChfX3UxNilf X2J1aWx0aW5fYnN3YXAxNigoX191MTYpKCpwKSk7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIF9fdTMyIF9fc3dhYjMycChjb25zdCBfX3UzMiAqcCkKMTQ0NzQ6IHsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gKF9fdTMyKV9fYnVpbHRpbl9i c3dhcDMyKChfX3UzMikoKnApKTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgX191NjQgX19zd2FiNjRwKGNvbnN0IF9fdTY0ICpwKQoxNDQ3NDogewoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAoX191NjQpX19idWlsdGluX2Jzd2FwNjQoKF9f dTY0KSgqcCkpOwoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fdTMyIF9fc3dhaHczMnAoY29uc3Qg X191MzIgKnApCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgcmV0dXJu IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKCpwKSkgPyAoKF9fdTMyKSggKCgoX191MzIp KCpwKSAmIChfX3UzMikweDAwMDBmZmZmVUwpIDw8IDE2KSB8ICgoKF9fdTMyKSgqcCkgJiAoX191 MzIpMHhmZmZmMDAwMFVMKSA+PiAxNikpKSA6IF9fZnN3YWh3MzIoKnApKTsKMTQ0NzQ6IAoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX3UzMiBfX3N3YWhiMzJwKGNvbnN0IF9fdTMyICpwKQoxNDQ3NDogewoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAoX19idWlsdGluX2NvbnN0YW50X3Ao KF9fdTMyKSgqcCkpID8gKChfX3UzMikoICgoKF9fdTMyKSgqcCkgJiAoX191MzIpMHgwMGZmMDBm ZlVMKSA8PCA4KSB8ICgoKF9fdTMyKSgqcCkgJiAoX191MzIpMHhmZjAwZmYwMFVMKSA+PiA4KSkp IDogX19mc3dhaGIzMigqcCkpOwoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3N3YWIxNnMoX191MTYgKnApCjE0NDc0 OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgKnAgPSBfX3N3YWIxNnAocCk7CjE0 NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fc3dhYjMycyhfX3UzMiAqcCkK MTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAqcCA9IF9fc3dhYjMycChw KTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX3N3YWI2 NHMoX191NjQgKnApCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgKnAg PSBfX3N3YWI2NHAocCk7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3N3YWh3MzJzKF9f dTMyICpwKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICpwID0gX19z d2FodzMycChwKTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fc3dhaGIzMnMoX191MzIg KnApCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgKnAgPSBfX3N3YWhi MzJwKHApOwoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAjIDYgIi4vaW5jbHVkZS9saW51eC9zd2Fi LmgiIDIKMTQ0NzQ6ICMgMTQgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2J5dGVvcmRlci9saXR0bGVf ZW5kaWFuLmgiIDIKMTQ0NzQ6ICMgNDQgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2J5dGVvcmRlci9s aXR0bGVfZW5kaWFuLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IF9fbGU2NCBfX2NwdV90b19sZTY0cChjb25zdCBfX3U2NCAqcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gKCBfX2xlNjQpKnA7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIF9fdTY0IF9fbGU2NF90b19jcHVwKGNvbnN0IF9fbGU2NCAqcCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gKCBfX3U2NCkqcDsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgX19sZTMyIF9fY3B1X3RvX2xlMzJwKGNvbnN0IF9fdTMy ICpwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoIF9fbGUzMikqcDsKMTQ0NzQ6IH0KMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgX191MzIgX19sZTMyX3RvX2NwdXAo Y29uc3QgX19sZTMyICpwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoIF9fdTMyKSpwOwoxNDQ3 NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBfX2xlMTYgX19j cHVfdG9fbGUxNnAoY29uc3QgX191MTYgKnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICggX19s ZTE2KSpwOwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSBfX3UxNiBfX2xlMTZfdG9fY3B1cChjb25zdCBfX2xlMTYgKnApCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuICggX191MTYpKnA7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIF9fYmU2NCBfX2NwdV90b19iZTY0cChjb25zdCBfX3U2NCAqcCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gKCBfX2JlNjQpX19zd2FiNjRwKHApOwoxNDQ3NDogfQoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBfX3U2NCBfX2JlNjRfdG9fY3B1cChj b25zdCBfX2JlNjQgKnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fc3dhYjY0cCgoX191NjQg KilwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg X19iZTMyIF9fY3B1X3RvX2JlMzJwKGNvbnN0IF9fdTMyICpwKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiAoIF9fYmUzMilfX3N3YWIzMnAocCk7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIF9fdTMyIF9fYmUzMl90b19jcHVwKGNvbnN0IF9fYmUzMiAq cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19zd2FiMzJwKChfX3UzMiAqKXApOwoxNDQ3NDog fQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBfX2JlMTYgX19jcHVf dG9fYmUxNnAoY29uc3QgX191MTYgKnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICggX19iZTE2 KV9fc3dhYjE2cChwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgX191MTYgX19iZTE2X3RvX2NwdXAoY29uc3QgX19iZTE2ICpwKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBfX3N3YWIxNnAoKF9fdTE2ICopcCk7CjE0NDc0OiB9CjE0NDc0OiAjIDYg Ii4vaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIiAyCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgv Ynl0ZW9yZGVyL2dlbmVyaWMuaCIgMQoxNDQ3NDogIyAxNDQgIi4vaW5jbHVkZS9saW51eC9ieXRl b3JkZXIvZ2VuZXJpYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsZTE2X2FkZF9jcHUoX19sZTE2ICp2YXIsIHUx NiB2YWwpCjE0NDc0OiB7CjE0NDc0OiAgKnZhciA9ICgoIF9fbGUxNikoX191MTYpKCgoIF9fdTE2 KShfX2xlMTYpKCp2YXIpKSArIHZhbCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxl MzJfYWRkX2NwdShfX2xlMzIgKnZhciwgdTMyIHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAqdmFyID0g KCggX19sZTMyKShfX3UzMikoKCggX191MzIpKF9fbGUzMikoKnZhcikpICsgdmFsKSk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGU2NF9hZGRfY3B1KF9fbGU2NCAqdmFyLCB1NjQgdmFs KQoxNDQ3NDogewoxNDQ3NDogICp2YXIgPSAoKCBfX2xlNjQpKF9fdTY0KSgoKCBfX3U2NCkoX19s ZTY0KSgqdmFyKSkgKyB2YWwpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGxlMzJfdG9fY3B1X2FycmF5KHUzMiAqYnVmLCB1bnNpZ25lZCBpbnQgd29yZHMpCjE0NDc0OiB7 CjE0NDc0OiAgd2hpbGUgKHdvcmRzLS0pIHsKMTQ0NzQ6ICAgZG8geyAodm9pZCkoYnVmKTsgfSB3 aGlsZSAoMCk7CjE0NDc0OiAgIGJ1ZisrOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBjcHVfdG9fbGUzMl9hcnJheSh1MzIgKmJ1ZiwgdW5zaWduZWQgaW50IHdvcmRzKQox NDQ3NDogewoxNDQ3NDogIHdoaWxlICh3b3Jkcy0tKSB7CjE0NDc0OiAgIGRvIHsgKHZvaWQpKGJ1 Zik7IH0gd2hpbGUgKDApOwoxNDQ3NDogICBidWYrKzsKMTQ0NzQ6ICB9CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgYmUxNl9hZGRfY3B1KF9fYmUxNiAqdmFyLCB1MTYgdmFsKQoxNDQ3NDog ewoxNDQ3NDogICp2YXIgPSAoKCBfX2JlMTYpKF9fdTE2KV9fYnVpbHRpbl9ic3dhcDE2KChfX3Ux NikoKChfX3UxNilfX2J1aWx0aW5fYnN3YXAxNigoX191MTYpKCggX191MTYpKF9fYmUxNikoKnZh cikpKSArIHZhbCkpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYmUzMl9hZGRfY3B1 KF9fYmUzMiAqdmFyLCB1MzIgdmFsKQoxNDQ3NDogewoxNDQ3NDogICp2YXIgPSAoKCBfX2JlMzIp KF9fdTMyKV9fYnVpbHRpbl9ic3dhcDMyKChfX3UzMikoKChfX3UzMilfX2J1aWx0aW5fYnN3YXAz MigoX191MzIpKCggX191MzIpKF9fYmUzMikoKnZhcikpKSArIHZhbCkpKSk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgYmU2NF9hZGRfY3B1KF9fYmU2NCAqdmFyLCB1NjQgdmFsKQoxNDQ3 NDogewoxNDQ3NDogICp2YXIgPSAoKCBfX2JlNjQpKF9fdTY0KV9fYnVpbHRpbl9ic3dhcDY0KChf X3U2NCkoKChfX3U2NClfX2J1aWx0aW5fYnN3YXA2NCgoX191NjQpKCggX191NjQpKF9fYmU2NCko KnZhcikpKSArIHZhbCkpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1X3RvX2Jl MzJfYXJyYXkoX19iZTMyICpkc3QsIGNvbnN0IHUzMiAqc3JjLCBzaXplX3QgbGVuKQoxNDQ3NDog ewoxNDQ3NDogIGludCBpOwoxNDQ3NDogCjE0NDc0OiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsr KQoxNDQ3NDogICBkc3RbaV0gPSAoKCBfX2JlMzIpKF9fdTMyKV9fYnVpbHRpbl9ic3dhcDMyKChf X3UzMikoKHNyY1tpXSkpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYmUzMl90b19j cHVfYXJyYXkodTMyICpkc3QsIGNvbnN0IF9fYmUzMiAqc3JjLCBzaXplX3QgbGVuKQoxNDQ3NDog ewoxNDQ3NDogIGludCBpOwoxNDQ3NDogCjE0NDc0OiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsr KQoxNDQ3NDogICBkc3RbaV0gPSAoX191MzIpX19idWlsdGluX2Jzd2FwMzIoKF9fdTMyKSgoIF9f dTMyKShfX2JlMzIpKHNyY1tpXSkpKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTIgIi4vaW5jbHVkZS9s aW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIiAyCjE0NDc0OiAjIDYgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9ieXRlb3JkZXIuaCIgMgoxNDQ3NDogIyA3ICIuL2luY2x1ZGUvYXNt LWdlbmVyaWMvcXJ3bG9ja190eXBlcy5oIiAyCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vc3BpbmxvY2tfdHlwZXMuaCIgMQoxNDQ3NDogIyA4ICIuL2luY2x1ZGUvYXNtLWdlbmVy aWMvcXJ3bG9ja190eXBlcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgcXJ3bG9jayB7CjE0NDc0OiAgdW5pb24gewoxNDQ3 NDogICBhdG9taWNfdCBjbnRzOwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAgICB1 OCB3bG9ja2VkOwoxNDQ3NDogICAgdTggX19sc3RhdGVbM107CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICAgfTsKMTQ0NzQ6ICB9OwoxNDQ3NDogIGFyY2hfc3BpbmxvY2tf dCB3YWl0X2xvY2s7CjE0NDc0OiB9IGFyY2hfcndsb2NrX3Q7CjE0NDc0OiAjIDMwICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMzExICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0X3R5cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgcXNwaW5sb2NrOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHZfbG9ja19vcHMgewox NDQ3NDogIHZvaWQgKCpxdWV1ZWRfc3Bpbl9sb2NrX3Nsb3dwYXRoKShzdHJ1Y3QgcXNwaW5sb2Nr ICpsb2NrLCB1MzIgdmFsKTsKMTQ0NzQ6ICBzdHJ1Y3QgcGFyYXZpcnRfY2FsbGVlX3NhdmUgcXVl dWVkX3NwaW5fdW5sb2NrOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKndhaXQpKHU4ICpwdHIsIHU4 IHZhbCk7CjE0NDc0OiAgdm9pZCAoKmtpY2spKGludCBjcHUpOwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IHBhcmF2aXJ0X2NhbGxlZV9zYXZlIHZjcHVfaXNfcHJlZW1wdGVkOwoxNDQ3NDogfSA7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwYXJhdmlydF9wYXRj aF90ZW1wbGF0ZSB7CjE0NDc0OiAgc3RydWN0IHB2X2luaXRfb3BzIGluaXQ7CjE0NDc0OiAgc3Ry dWN0IHB2X3RpbWVfb3BzIHRpbWU7CjE0NDc0OiAgc3RydWN0IHB2X2NwdV9vcHMgY3B1OwoxNDQ3 NDogIHN0cnVjdCBwdl9pcnFfb3BzIGlycTsKMTQ0NzQ6ICBzdHJ1Y3QgcHZfbW11X29wcyBtbXU7 CjE0NDc0OiAgc3RydWN0IHB2X2xvY2tfb3BzIGxvY2s7CjE0NDc0OiB9IDsKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIHN0cnVjdCBwdl9pbmZvIHB2X2luZm87CjE0NDc0OiBleHRlcm4gc3RydWN0IHBh cmF2aXJ0X3BhdGNoX3RlbXBsYXRlIHB2X29wczsKMTQ0NzQ6ICMgMzcwICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL3BhcmF2aXJ0X3R5cGVzLmgiCjE0NDc0OiB1bnNpZ25lZCBwYXJhdmlydF9wYXRj aF9pZGVudF82NCh2b2lkICppbnNuX2J1ZmYsIHVuc2lnbmVkIGxlbik7CjE0NDc0OiB1bnNpZ25l ZCBwYXJhdmlydF9wYXRjaF9kZWZhdWx0KHU4IHR5cGUsIHZvaWQgKmluc25fYnVmZiwgdW5zaWdu ZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsZW4pOwoxNDQ3NDogdW5zaWduZWQgcGFyYXZpcnRfcGF0 Y2hfaW5zbnModm9pZCAqaW5zbl9idWZmLCB1bnNpZ25lZCBsZW4sIGNvbnN0IGNoYXIgKnN0YXJ0 LCBjb25zdCBjaGFyICplbmQpOwoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBuYXRpdmVfcGF0Y2go dTggdHlwZSwgdm9pZCAqaW5zbl9idWZmLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxl bik7CjE0NDc0OiAKMTQ0NzQ6IGludCBwYXJhdmlydF9kaXNhYmxlX2lvc3BhY2Uodm9pZCk7CjE0 NDc0OiAjIDY1MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgoxNDQ3 NDogZW51bSBwYXJhdmlydF9sYXp5X21vZGUgewoxNDQ3NDogIFBBUkFWSVJUX0xBWllfTk9ORSwK MTQ0NzQ6ICBQQVJBVklSVF9MQVpZX01NVSwKMTQ0NzQ6ICBQQVJBVklSVF9MQVpZX0NQVSwKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gcGFyYXZpcnRfbGF6eV9tb2RlIHBhcmF2aXJ0X2dl dF9sYXp5X21vZGUodm9pZCk7CjE0NDc0OiB2b2lkIHBhcmF2aXJ0X3N0YXJ0X2NvbnRleHRfc3dp dGNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldik7CjE0NDc0OiB2b2lkIHBhcmF2aXJ0X2VuZF9j b250ZXh0X3N3aXRjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpOwoxNDQ3NDogCjE0NDc0OiB2 b2lkIHBhcmF2aXJ0X2VudGVyX2xhenlfbW11KHZvaWQpOwoxNDQ3NDogdm9pZCBwYXJhdmlydF9s ZWF2ZV9sYXp5X21tdSh2b2lkKTsKMTQ0NzQ6IHZvaWQgcGFyYXZpcnRfZmx1c2hfbGF6eV9tbXUo dm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgX3BhcmF2aXJ0X25vcCh2b2lkKTsKMTQ0NzQ6IHU2 NCBfcGFyYXZpcnRfaWRlbnRfNjQodTY0KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHBhcmF2aXJ0X3BhdGNoX3NpdGUgewoxNDQ3NDogIHU4ICppbnN0cjsK MTQ0NzQ6ICB1OCB0eXBlOwoxNDQ3NDogIHU4IGxlbjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGV4dGVybiBzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfc2l0ZSBfX3BhcmFpbnN0cnVjdGlvbnNbXSwK MTQ0NzQ6ICBfX3BhcmFpbnN0cnVjdGlvbnNfZW5kW107CjE0NDc0OiAjIDk1ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3B0cmFjZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNw dWluZm9feDg2OwoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0OwoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdW5zaWduZWQgbG9uZyBwcm9maWxlX3BjKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcKMTQ0NzQ6IGNvbnZlcnRfaXBfdG9fbGluZWFy KHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKMTQ0NzQ6 IGV4dGVybiB2b2lkIHNlbmRfc2lndHJhcChzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IGVycm9y X2NvZGUsIGludCBzaV9jb2RlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25n IHJlZ3NfcmV0dXJuX3ZhbHVlKHN0cnVjdCBwdF9yZWdzICpyZWdzKQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiByZWdzLT5heDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByZWdzX3NldF9y ZXR1cm5fdmFsdWUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgcmMpCjE0NDc0 OiB7CjE0NDc0OiAgcmVncy0+YXggPSByYzsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTI2ICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHVzZXJfbW9kZShzdHJ1Y3QgcHRf cmVncyAqcmVncykKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1 cm4gISEocmVncy0+Y3MgJiAzKTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg djgwODZfbW9kZShzdHJ1Y3QgcHRfcmVncyAqcmVncykKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIHVzZXJfNjRiaXRfbW9kZShzdHJ1Y3QgcHRfcmVncyAqcmVncykKMTQ0NzQ6IHsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1 cm4gcmVncy0+Y3MgPT0gKDYqOCArIDMpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBhbnlfNjRiaXRfbW9kZShzdHJ1Y3QgcHRfcmVn cyAqcmVncykKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAhdXNlcl9tb2RlKHJlZ3Mp IHx8IHVzZXJfNjRiaXRfbW9kZShyZWdzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHVuc2lnbmVkIGxvbmcga2VybmVsX3N0YWNrX3BvaW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3Mp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJlZ3MtPnNwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBsb25nIGluc3RydWN0aW9uX3BvaW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3Mp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJlZ3MtPmlwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGluc3RydWN0aW9uX3BvaW50ZXJfc2V0KHN0cnVjdCBwdF9yZWdzICpyZWdzLAoxNDQ3 NDogICB1bnNpZ25lZCBsb25nIHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZWdzLT5pcCA9IHZhbDsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBmcmFtZV9wb2ludGVyKHN0cnVj dCBwdF9yZWdzICpyZWdzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiByZWdzLT5icDsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyB1c2VyX3N0YWNrX3BvaW50ZXIoc3RydWN0 IHB0X3JlZ3MgKnJlZ3MpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJlZ3MtPnNwOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVzZXJfc3RhY2tfcG9pbnRlcl9zZXQoc3RydWN0IHB0X3Jl Z3MgKnJlZ3MsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgdmFsKQoxNDQ3NDogewoxNDQ3NDogIHJl Z3MtPnNwID0gdmFsOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQg cmVnc19xdWVyeV9yZWdpc3Rlcl9vZmZzZXQoY29uc3QgY2hhciAqbmFtZSk7CjE0NDc0OiBleHRl cm4gY29uc3QgY2hhciAqcmVnc19xdWVyeV9yZWdpc3Rlcl9uYW1lKHVuc2lnbmVkIGludCBvZmZz ZXQpOwoxNDQ3NDogIyAyMjYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBsb25nIHJlZ3NfZ2V0X3JlZ2lzdGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzLAox NDQ3NDogICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoxNDQ3NDogewoxNDQ3NDogIGlm IChfX2J1aWx0aW5fZXhwZWN0KCEhKG9mZnNldCA+IChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0 IHB0X3JlZ3MsIHNzKSkpLCAwKSkKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAjIDI0MyAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKMTQ0NzQ6ICByZXR1cm4gKih1bnNpZ25lZCBs b25nICopKCh1bnNpZ25lZCBsb25nKXJlZ3MgKyBvZmZzZXQpOwoxNDQ3NDogfQoxNDQ3NDogIyAy NTQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmVnc193aXRo aW5fa2VybmVsX3N0YWNrKHN0cnVjdCBwdF9yZWdzICpyZWdzLAoxNDQ3NDogICAgICAgICB1bnNp Z25lZCBsb25nIGFkZHIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgoYWRkciAmIH4oKCgoMVVM KSA8PCAxMikgPDwgKDIgKyAwKSkgLSAxKSkgPT0gKHJlZ3MtPnNwICYgfigoKCgxVUwpIDw8IDEy KSA8PCAoMiArIDApKSAtIDEpKSk7CjE0NDc0OiB9CjE0NDc0OiAjIDI2OSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9wdHJhY2UuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgKnJlZ3NfZ2V0X2tlcm5l bF9zdGFja19udGhfYWRkcihzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgaW50IG4pCjE0 NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyAqYWRkciA9ICh1bnNpZ25lZCBsb25nICopcmVn cy0+c3A7CjE0NDc0OiAKMTQ0NzQ6ICBhZGRyICs9IG47CjE0NDc0OiAgaWYgKHJlZ3Nfd2l0aGlu X2tlcm5lbF9zdGFjayhyZWdzLCAodW5zaWduZWQgbG9uZylhZGRyKSkKMTQ0NzQ6ICAgcmV0dXJu IGFkZHI7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICByZXR1cm4gKCh2b2lkICopMCk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGxvbmcgcHJvYmVfa2VybmVsX3JlYWQodm9p ZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBzaXplKTsKMTQ0NzQ6ICMgMjkyICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyByZWdzX2dl dF9rZXJuZWxfc3RhY2tfbnRoKHN0cnVjdCBwdF9yZWdzICpyZWdzLAoxNDQ3NDogICAgICAgICAg ICAgdW5zaWduZWQgaW50IG4pCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyAqYWRkcjsK MTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHZhbDsKMTQ0NzQ6ICBsb25nIHJldDsKMTQ0NzQ6IAoxNDQ3 NDogIGFkZHIgPSByZWdzX2dldF9rZXJuZWxfc3RhY2tfbnRoX2FkZHIocmVncywgbik7CjE0NDc0 OiAgaWYgKGFkZHIpIHsKMTQ0NzQ6ICAgcmV0ID0gcHJvYmVfa2VybmVsX3JlYWQoJnZhbCwgYWRk ciwgc2l6ZW9mKHZhbCkpOwoxNDQ3NDogICBpZiAoIXJldCkKMTQ0NzQ6ICAgIHJldHVybiB2YWw7 CjE0NDc0OiAgfQoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogIyAzMTkgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIHJlZ3NfZ2V0 X2tlcm5lbF9hcmd1bWVudChzdHJ1Y3QgcHRfcmVncyAqcmVncywKMTQ0NzQ6ICAgICAgICAgICAg dW5zaWduZWQgaW50IG4pCjE0NDc0OiB7CjE0NDc0OiAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu dCBhcmd1bWVudF9vZmZzW10gPSB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywg ZGkpLAoxNDQ3NDogICBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHNpKSwKMTQ0 NzQ6ICAgX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBkeCksCjE0NDc0OiAgIF9f YnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgY3gpLAoxNDQ3NDogICBfX2J1aWx0aW5f b2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHI4KSwKMTQ0NzQ6ICAgX19idWlsdGluX29mZnNldG9m KHN0cnVjdCBwdF9yZWdzLCByOSksCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIH07CjE0NDc0OiAK MTQ0NzQ6ICBpZiAobiA+PSA2KSB7CjE0NDc0OiAgIG4gLT0gNiAtIDE7CjE0NDc0OiAgIHJldHVy biByZWdzX2dldF9rZXJuZWxfc3RhY2tfbnRoKHJlZ3MsIG4pOwoxNDQ3NDogIH0gZWxzZQoxNDQ3 NDogICByZXR1cm4gcmVnc19nZXRfcmVnaXN0ZXIocmVncywgYXJndW1lbnRfb2Zmc1tuXSk7CjE0 NDc0OiB9CjE0NDc0OiAjIDM1NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKMTQ0 NzQ6IHN0cnVjdCB1c2VyX2Rlc2M7CjE0NDc0OiBleHRlcm4gaW50IGRvX2dldF90aHJlYWRfYXJl YShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBpZHgsCjE0NDc0OiAgICAgICAgICBzdHJ1Y3Qg dXNlcl9kZXNjICppbmZvKTsKMTQ0NzQ6IGV4dGVybiBpbnQgZG9fc2V0X3RocmVhZF9hcmVhKHN0 cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IGlkeCwKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCB1c2Vy X2Rlc2MgKmluZm8sIGludCBjYW5fYWxsb2NhdGUpOwoxNDQ3NDogIyAxMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9rZ2RiLmgiIDIKMTQ0NzQ6ICMgNDkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v a2dkYi5oIgoxNDQ3NDogZW51bSByZWduYW1lcyB7CjE0NDc0OiAgR0RCX0FYLAoxNDQ3NDogIEdE Ql9CWCwKMTQ0NzQ6ICBHREJfQ1gsCjE0NDc0OiAgR0RCX0RYLAoxNDQ3NDogIEdEQl9TSSwKMTQ0 NzQ6ICBHREJfREksCjE0NDc0OiAgR0RCX0JQLAoxNDQ3NDogIEdEQl9TUCwKMTQ0NzQ6ICBHREJf UjgsCjE0NDc0OiAgR0RCX1I5LAoxNDQ3NDogIEdEQl9SMTAsCjE0NDc0OiAgR0RCX1IxMSwKMTQ0 NzQ6ICBHREJfUjEyLAoxNDQ3NDogIEdEQl9SMTMsCjE0NDc0OiAgR0RCX1IxNCwKMTQ0NzQ6ICBH REJfUjE1LAoxNDQ3NDogIEdEQl9QQywKMTQ0NzQ6ICBHREJfUFMsCjE0NDc0OiAgR0RCX0NTLAox NDQ3NDogIEdEQl9TUywKMTQ0NzQ6ICBHREJfRFMsCjE0NDc0OiAgR0RCX0VTLAoxNDQ3NDogIEdE Ql9GUywKMTQ0NzQ6ICBHREJfR1MsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcmNoX2tnZGJfYnJlYWtwb2ludCh2 b2lkKQoxNDQ3NDogewoxNDQ3NDogIGFzbSgiICAgaW50ICQzIik7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQga2dkYl9sbF90cmFwKGlu dCBjbWQsIGNvbnN0IGNoYXIgKnN0ciwKMTQ0NzQ6ICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBs b25nIGVyciwgaW50IHRyYXAsIGludCBzaWcpOwoxNDQ3NDogIyAyMSAiLi9pbmNsdWRlL2xpbnV4 L2tnZGIuaCIgMgoxNDQ3NDogIyAzMzMgIi4vaW5jbHVkZS9saW51eC9rZ2RiLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGtnZGJfcGFuaWMoY29uc3QgY2hhciAqbXNnKSB7fQoxNDQ3NDogIyAzMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL29zX3R5cGVzLmgiIDIKMTQ0NzQ6ICMg MSAiLi9pbmNsdWRlL2xpbnV4L2tyZWYuaCIgMQoxNDQ3NDogIyAxNiAiLi9pbmNsdWRlL2xpbnV4 L2tyZWYuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKMTQ0NzQ6 ICMgNTAgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUv bGludXgvdHlwZWNoZWNrLmgiIDEKMTQ0NzQ6ICMgNTEgIi4vaW5jbHVkZS9saW51eC9zcGlubG9j ay5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiIDEKMTQ0NzQ6ICMg MTEgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51 eC9saXN0LmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3BvaXNvbi5oIiAxCjE0NDc0OiAjIDggIi4v aW5jbHVkZS9saW51eC9saXN0LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGlu dXgva2VybmVsLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAjIDEgIi91c3IvbGliL2djYy94ODZfNjQtbGludXgtZ251LzEwL2luY2x1ZGUvc3RkYXJn LmgiIDEgMyA0CjE0NDc0OiAjIDQwICIvdXNyL2xpYi9nY2MveDg2XzY0LWxpbnV4LWdudS8xMC9p bmNsdWRlL3N0ZGFyZy5oIiAzIDQKMTQ0NzQ6IAoxNDQ3NDogIyA0MCAiL3Vzci9saWIvZ2NjL3g4 Nl82NC1saW51eC1nbnUvMTAvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CjE0NDc0OiB0eXBlZGVmIF9f YnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwoxNDQ3NDogIyA5OSAiL3Vzci9saWIvZ2Nj L3g4Nl82NC1saW51eC1nbnUvMTAvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CjE0NDc0OiB0eXBlZGVm IF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CjE0NDc0OiAjIDcgIi4vaW5jbHVkZS9saW51eC9rZXJu ZWwuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9s aW1pdHMuaCIgMQoxNDQ3NDogIyA2ICIuL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDIKMTQ0NzQ6 ICMgOCAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAxCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQv dWFwaS9hc20vdHlwZXMuaCIgMQoxNDQ3NDogIyA1ICIuL2luY2x1ZGUvbGludXgvYml0b3BzLmgi IDIKMTQ0NzQ6ICMgMjAgIi4vaW5jbHVkZS9saW51eC9iaXRvcHMuaCIKMTQ0NzQ6IAoxNDQ3NDog IyAyMCAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIgoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGlu dCBfX3N3X2h3ZWlnaHQ4KHVuc2lnbmVkIGludCB3KTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBp bnQgX19zd19od2VpZ2h0MTYodW5zaWduZWQgaW50IHcpOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVk IGludCBfX3N3X2h3ZWlnaHQzMih1bnNpZ25lZCBpbnQgdyk7CjE0NDc0OiBleHRlcm4gdW5zaWdu ZWQgbG9uZyBfX3N3X2h3ZWlnaHQ2NChfX3U2NCB3KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3Bz LmgiIDEKMTQ0NzQ6ICMgNTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQKMTQ0NzQ6IGFyY2hfc2V0 X2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3 NDogIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChucikpIHsKMTQ0NzQ6ICAgYXNtIHZvbGF0aWxl KCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2 NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAib3JiICUxLCUw IgoxNDQ3NDogICAgOiAiK20iICgqKHZvbGF0aWxlIGNoYXIgKikgKCh2b2lkICopKGFkZHIpICsg KChucik+PjMpKSkKMTQ0NzQ6ICAgIDogImlxIiAoKHU4KSgxIDw8ICgobnIpICYgNykpKQoxNDQ3 NDogICAgOiAibWVtb3J5Iik7CjE0NDc0OiAgfSBlbHNlIHsKMTQ0NzQ6ICAgYXNtIHZvbGF0aWxl KCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2 NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiICIgImJ0c3Ei ICIgIiAiICUxLCUwIgoxNDQ3NDogICAgOiA6ICJtIiAoKih2b2xhdGlsZSBsb25nICopIChhZGRy KSksICJJciIgKG5yKSA6ICJtZW1vcnkiKTsKMTQ0NzQ6ICB9CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZAoxNDQ3NDogYXJjaF9f X3NldF9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsK MTQ0NzQ6ICBhc20gdm9sYXRpbGUoIiAiICJidHNxIiAiICIgIiAlMSwlMCIgOiA6ICJtIiAoKih2 b2xhdGlsZSBsb25nICopIChhZGRyKSksICJJciIgKG5yKSA6ICJtZW1vcnkiKTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkCjE0 NDc0OiBhcmNoX2NsZWFyX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRy KQoxNDQ3NDogewoxNDQ3NDogIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChucikpIHsKMTQ0NzQ6 ICAgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGln biA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9j azsgIiAiYW5kYiAlMSwlMCIKMTQ0NzQ6ICAgIDogIittIiAoKih2b2xhdGlsZSBjaGFyICopICgo dm9pZCAqKShhZGRyKSArICgobnIpPj4zKSkpCjE0NDc0OiAgICA6ICJpcSIgKCh1OCl+KDEgPDwg KChucikgJiA3KSkpKTsKMTQ0NzQ6ICB9IGVsc2UgewoxNDQ3NDogICBhc20gdm9sYXRpbGUoIi5w dXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYg LSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICIgIiAiYnRycSIgIiAi ICIgJTEsJTAiCjE0NDc0OiAgICA6IDogIm0iICgqKHZvbGF0aWxlIGxvbmcgKikgKGFkZHIpKSwg IklyIiAobnIpIDogIm1lbW9yeSIpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkCjE0NDc0OiBhcmNoX2NsZWFy X2JpdF91bmxvY2sobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6 IHsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDog IGFyY2hfY2xlYXJfYml0KG5yLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkCjE0NDc0OiBhcmNoX19fY2xlYXJfYml0 KGxvbmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAg YXNtIHZvbGF0aWxlKCIgIiAiYnRycSIgIiAiICIgJTEsJTAiIDogOiAibSIgKCoodm9sYXRpbGUg bG9uZyAqKSAoYWRkcikpLCAiSXIiIChucikgOiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbAoxNDQ3NDogYXJj aF9jbGVhcl9iaXRfdW5sb2NrX2lzX25lZ2F0aXZlX2J5dGUobG9uZyBuciwgdm9sYXRpbGUgdW5z aWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBib29sIG5lZ2F0aXZlOwoxNDQ3NDog IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24g NFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7 ICIgImFuZGIgJTIsJTEiCjE0NDc0OiAgICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIg InMiICIqL1xuIgoxNDQ3NDogICA6ICI9QGNjIiAicyIgKG5lZ2F0aXZlKSwgIittIiAoKih2b2xh dGlsZSBjaGFyICopIChhZGRyKSkKMTQ0NzQ6ICAgOiAiaXIiICgoY2hhcikgfigxIDw8IG5yKSkg OiAibWVtb3J5Iik7CjE0NDc0OiAgcmV0dXJuIG5lZ2F0aXZlOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2 b2lkCjE0NDc0OiBhcmNoX19fY2xlYXJfYml0X3VubG9jayhsb25nIG5yLCB2b2xhdGlsZSB1bnNp Z25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGFyY2hfX19jbGVhcl9iaXQobnIsIGFk ZHIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHZvaWQKMTQ0NzQ6IGFyY2hfX19jaGFuZ2VfYml0KGxvbmcgbnIsIHZvbGF0aWxlIHVu c2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAgYXNtIHZvbGF0aWxlKCIgIiAiYnRj cSIgIiAiICIgJTEsJTAiIDogOiAibSIgKCoodm9sYXRpbGUgbG9uZyAqKSAoYWRkcikpLCAiSXIi IChucikgOiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZAoxNDQ3NDogYXJjaF9jaGFuZ2VfYml0KGxvbmcgbnIs IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKF9fYnVp bHRpbl9jb25zdGFudF9wKG5yKSkgewoxNDQ3NDogICBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlv biAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIu cG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4b3JiICUxLCUwIgoxNDQ3NDogICAg OiAiK20iICgqKHZvbGF0aWxlIGNoYXIgKikgKCh2b2lkICopKGFkZHIpICsgKChucik+PjMpKSkK MTQ0NzQ6ICAgIDogImlxIiAoKHU4KSgxIDw8ICgobnIpICYgNykpKSk7CjE0NDc0OiAgfSBlbHNl IHsKMTQ0NzQ6ICAgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxu IiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToi ICJcblx0bG9jazsgIiAiICIgImJ0Y3EiICIgIiAiICUxLCUwIgoxNDQ3NDogICAgOiA6ICJtIiAo Kih2b2xhdGlsZSBsb25nICopIChhZGRyKSksICJJciIgKG5yKSA6ICJtZW1vcnkiKTsKMTQ0NzQ6 ICB9CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgYm9vbAoxNDQ3NDogYXJjaF90ZXN0X2FuZF9zZXRfYml0KGxvbmcgbnIsIHZvbGF0aWxl IHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGJvb2wgYzsg YXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24g NFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7 ICIgIiAiICJidHNxIiAiICIgIiAlW3ZhbF0sICIgIiVbdmFyXSIgIlxuXHQvKiBvdXRwdXQgY29u ZGl0aW9uIGNvZGUgIiAiYyIgIiovXG4iIDogW3Zhcl0gIittIiAoKmFkZHIpLCAiPUBjYyIgImMi IChjKSA6IFt2YWxdICJJciIgKG5yKSA6ICJtZW1vcnkiKTsgYzsgfSk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbAoxNDQ3NDog YXJjaF90ZXN0X2FuZF9zZXRfYml0X2xvY2sobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9u ZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJjaF90ZXN0X2FuZF9zZXRfYml0KG5y LCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSBib29sCjE0NDc0OiBhcmNoX19fdGVzdF9hbmRfc2V0X2JpdChsb25nIG5yLCB2 b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGJvb2wgb2xkYml0 OwoxNDQ3NDogCjE0NDc0OiAgYXNtKCIgIiAiYnRzcSIgIiAiICIgJTIsJTEiCjE0NDc0OiAgICAg ICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgImMiICIqL1xuIgoxNDQ3NDogICAgICA6 ICI9QGNjIiAiYyIgKG9sZGJpdCkKMTQ0NzQ6ICAgICAgOiAibSIgKCoodm9sYXRpbGUgbG9uZyAq KSAoYWRkcikpLCAiSXIiIChucikgOiAibWVtb3J5Iik7CjE0NDc0OiAgcmV0dXJuIG9sZGJpdDsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSBib29sCjE0NDc0OiBhcmNoX3Rlc3RfYW5kX2NsZWFyX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1 bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyBib29sIGM7IGFz bSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRc biIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAi ICIgIiAiYnRycSIgIiAiICIgJVt2YWxdLCAiICIlW3Zhcl0iICJcblx0Lyogb3V0cHV0IGNvbmRp dGlvbiBjb2RlICIgImMiICIqL1xuIiA6IFt2YXJdICIrbSIgKCphZGRyKSwgIj1AY2MiICJjIiAo YykgOiBbdmFsXSAiSXIiIChucikgOiAibWVtb3J5Iik7IGM7IH0pOwoxNDQ3NDogfQoxNDQ3NDog IyAxNzMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wKMTQ0NzQ6IGFyY2hfX190ZXN0X2FuZF9jbGVh cl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0 NzQ6ICBib29sIG9sZGJpdDsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiICIgImJ0cnEi ICIgIiAiICUyLCUxIgoxNDQ3NDogICAgICAgICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2Rl ICIgImMiICIqL1xuIgoxNDQ3NDogICAgICAgIDogIj1AY2MiICJjIiAob2xkYml0KQoxNDQ3NDog ICAgICAgIDogIm0iICgqKHZvbGF0aWxlIGxvbmcgKikgKGFkZHIpKSwgIklyIiAobnIpIDogIm1l bW9yeSIpOwoxNDQ3NDogIHJldHVybiBvbGRiaXQ7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbAoxNDQ3NDogYXJjaF9fX3Rlc3Rf YW5kX2NoYW5nZV9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBib29sIG9sZGJpdDsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgi ICIgImJ0Y3EiICIgIiAiICUyLCUxIgoxNDQ3NDogICAgICAgICJcblx0Lyogb3V0cHV0IGNvbmRp dGlvbiBjb2RlICIgImMiICIqL1xuIgoxNDQ3NDogICAgICAgIDogIj1AY2MiICJjIiAob2xkYml0 KQoxNDQ3NDogICAgICAgIDogIm0iICgqKHZvbGF0aWxlIGxvbmcgKikgKGFkZHIpKSwgIklyIiAo bnIpIDogIm1lbW9yeSIpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIG9sZGJpdDsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sCjE0 NDc0OiBhcmNoX3Rlc3RfYW5kX2NoYW5nZV9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQg bG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgYm9vbCBjOyBhc20gdm9sYXRp bGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9u ZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiICIgImJ0 Y3EiICIgIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29k ZSAiICJjIiAiKi9cbiIgOiBbdmFyXSAiK20iICgqYWRkciksICI9QGNjIiAiYyIgKGMpIDogW3Zh bF0gIklyIiAobnIpIDogIm1lbW9yeSIpOyBjOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIGNvbnN0YW50X3Rlc3RfYml0 KGxvbmcgbnIsIGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICgoMVVMIDw8IChuciAmICg2NCAtMSkpKSAmCjE0NDc0OiAgIChhZGRyW25y ID4+IDZdKSkgIT0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSBib29sIHZhcmlhYmxlX3Rlc3RfYml0KGxvbmcgbnIsIHZvbGF0aWxl IGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAgYm9vbCBvbGRiaXQ7 CjE0NDc0OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoIiAiICJidHEiICIgIiAiICUyLCUxIgoxNDQ3 NDogICAgICAgICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgImMiICIqL1xuIgoxNDQ3 NDogICAgICAgIDogIj1AY2MiICJjIiAob2xkYml0KQoxNDQ3NDogICAgICAgIDogIm0iICgqKHVu c2lnbmVkIGxvbmcgKilhZGRyKSwgIklyIiAobnIpIDogIm1lbW9yeSIpOwoxNDQ3NDogCjE0NDc0 OiAgcmV0dXJuIG9sZGJpdDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjMzICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2JpdG9wcy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB1bnNpZ25lZCBsb25nIF9fZmZzKHVuc2lnbmVkIGxvbmcgd29yZCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBhc20oInJlcDsgYnNmICUxLCUwIgoxNDQ3NDogICA6ICI9ciIgKHdvcmQpCjE0NDc0OiAgIDog InJtIiAod29yZCkpOwoxNDQ3NDogIHJldHVybiB3b3JkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxvbmcgZmZ6KHVuc2lnbmVkIGxv bmcgd29yZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20oInJlcDsgYnNmICUxLCUwIgoxNDQ3NDogICA6 ICI9ciIgKHdvcmQpCjE0NDc0OiAgIDogInIiICh+d29yZCkpOwoxNDQ3NDogIHJldHVybiB3b3Jk OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2ln bmVkIGxvbmcgX19mbHModW5zaWduZWQgbG9uZyB3b3JkKQoxNDQ3NDogewoxNDQ3NDogIGFzbSgi YnNyICUxLCUwIgoxNDQ3NDogICAgICA6ICI9ciIgKHdvcmQpCjE0NDc0OiAgICAgIDogInJtIiAo d29yZCkpOwoxNDQ3NDogIHJldHVybiB3b3JkOwoxNDQ3NDogfQoxNDQ3NDogIyAyODMgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIGludCBmZnMoaW50IHgpCjE0NDc0OiB7CjE0NDc0OiAgaW50IHI7CjE0NDc0 OiAjIDI5NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKMTQ0NzQ6ICBhc20oImJz ZmwgJTEsJTAiCjE0NDc0OiAgICAgIDogIj1yIiAocikKMTQ0NzQ6ICAgICAgOiAicm0iICh4KSwg IjAiICgtMSkpOwoxNDQ3NDogIyAzMTAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgi CjE0NDc0OiAgcmV0dXJuIHIgKyAxOwoxNDQ3NDogfQoxNDQ3NDogIyAzMjQgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYml0b3BzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIGludCBmbHModW5zaWduZWQgaW50IHgpCjE0NDc0OiB7CjE0NDc0OiAgaW50IHI7CjE0 NDc0OiAjIDMzOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKMTQ0NzQ6ICBhc20o ImJzcmwgJTEsJTAiCjE0NDc0OiAgICAgIDogIj1yIiAocikKMTQ0NzQ6ICAgICAgOiAicm0iICh4 KSwgIjAiICgtMSkpOwoxNDQ3NDogIyAzNTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3Bz LmgiCjE0NDc0OiAgcmV0dXJuIHIgKyAxOwoxNDQ3NDogfQoxNDQ3NDogIyAzNjYgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIGludCBmbHM2NChfX3U2NCB4KQoxNDQ3NDogewoxNDQ3NDogIGludCBiaXRwb3Mg PSAtMTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYXNt KCJic3JxICUxLCVxMCIKMTQ0NzQ6ICAgICAgOiAiK3IiIChiaXRwb3MpCjE0NDc0OiAgICAgIDog InJtIiAoeCkpOwoxNDQ3NDogIHJldHVybiBiaXRwb3MgKyAxOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9i aXRvcHMvZmluZC5oIiAxCjE0NDc0OiAjIDE1ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3Bz L2ZpbmQuaCIKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIGZpbmRfbmV4dF9iaXQoY29uc3Qg dW5zaWduZWQgbG9uZyAqYWRkciwgdW5zaWduZWQgbG9uZwoxNDQ3NDogICBzaXplLCB1bnNpZ25l ZCBsb25nIG9mZnNldCk7CjE0NDc0OiAjIDMwICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3Bz L2ZpbmQuaCIKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIGZpbmRfbmV4dF9hbmRfYml0KGNv bnN0IHVuc2lnbmVkIGxvbmcgKmFkZHIxLAoxNDQ3NDogICBjb25zdCB1bnNpZ25lZCBsb25nICph ZGRyMiwgdW5zaWduZWQgbG9uZyBzaXplLAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIG9mZnNldCk7 CjE0NDc0OiAjIDQ1ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2ZpbmQuaCIKMTQ0NzQ6 IGV4dGVybiB1bnNpZ25lZCBsb25nIGZpbmRfbmV4dF96ZXJvX2JpdChjb25zdCB1bnNpZ25lZCBs b25nICphZGRyLCB1bnNpZ25lZAoxNDQ3NDogICBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgb2Zm c2V0KTsKMTQ0NzQ6ICMgNTkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvZmluZC5oIgox NDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZmluZF9maXJzdF9iaXQoY29uc3QgdW5zaWduZWQg bG9uZyAqYWRkciwKMTQ0NzQ6ICAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplKTsKMTQ0NzQ6ICMg NzAgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvZmluZC5oIgoxNDQ3NDogZXh0ZXJuIHVu c2lnbmVkIGxvbmcgZmluZF9maXJzdF96ZXJvX2JpdChjb25zdCB1bnNpZ25lZCBsb25nICphZGRy LAoxNDQ3NDogICAgICAgdW5zaWduZWQgbG9uZyBzaXplKTsKMTQ0NzQ6ICMgOTMgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9iaXRvcHMvZmluZC5oIgoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcg ZmluZF9uZXh0X2NsdW1wOCh1bnNpZ25lZCBsb25nICpjbHVtcCwKMTQ0NzQ6ICAgICAgICAgICBj b25zdCB1bnNpZ25lZCBsb25nICphZGRyLAoxNDQ3NDogICAgICAgICAgIHVuc2lnbmVkIGxvbmcg c2l6ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwoxNDQ3NDogIyAzODQgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vYml0b3BzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYml0b3BzL3NjaGVkLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20v dHlwZXMuaCIgMQoxNDQ3NDogIyA3ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL3NjaGVk LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGludCBzY2hlZF9maW5kX2ZpcnN0X2JpdChjb25zdCB1bnNpZ25lZCBsb25nICpiKQoxNDQ3 NDogewoxNDQ3NDogCjE0NDc0OiAgaWYgKGJbMF0pCjE0NDc0OiAgIHJldHVybiBfX2ZmcyhiWzBd KTsKMTQ0NzQ6ICByZXR1cm4gX19mZnMoYlsxXSkgKyA2NDsKMTQ0NzQ6ICMgMzAgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9iaXRvcHMvc2NoZWQuaCIKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzg2ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9hcmNoX2h3ZWlnaHQuaCIgMQoxNDQ3NDogIyAxNSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9hcmNoX2h3ZWlnaHQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdW5zaWduZWQgaW50IF9fYXJjaF9od2VpZ2h0MzIodW5zaWduZWQgaW50 IHcpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlczsKMTQ0NzQ6IAoxNDQ3NDogIGFz bSAoIiMgQUxUOiBvbGRuc3RyXG4iICI2NjE6XG5cdCIgImNhbGwgX19zd19od2VpZ2h0MzIiICJc bjY2MjpcbiIgIiMgQUxUOiBwYWRkaW5nXG4iICIuc2tpcCAtKCgoIiAiNjY1IiIxIiJmLSIiNjY0 IiIxIiJmIiAiKS0oIiAiNjYyYi02NjFiIiAiKSkgPiAwKSAqICIgIigoIiAiNjY1IiIxIiJmLSIi NjY0IiIxIiJmIiAiKS0oIiAiNjYyYi02NjFiIiAiKSksMHg5MFxuIiAiNjYzIiAiOlxuIiAiLnB1 c2hzZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAubG9uZyA2NjFiIC0gLlxuIiAi IC5sb25nICIgIjY2NCIiMSIiZiAtIC5cbiIgIiAud29yZCAiICIoIDQqMzIrMjMpIiAiXG4iICIg LmJ5dGUgIiAiNjYzIiJiLTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQiIjEi ImYiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYyYiIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5w dXNoc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFjZW1lbnQsIFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxh Y2VtZW50ICIgIjEiICJcbiIgIjY2NCIiMSIiOlxuXHQiICJwb3BjbnRsICUxLCAlMCIgIlxuIiAi NjY1IiIxIiAiOlxuIiAiLnBvcHNlY3Rpb25cbiIKMTQ0NzQ6ICAgICA6ICI9IiJhIiAocmVzKQox NDQ3NDogICAgIDogIkQiICh3KSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gcmVzOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgX19hcmNoX2h3ZWlnaHQxNih1bnNpZ25lZCBp bnQgdykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19hcmNoX2h3ZWlnaHQzMih3ICYgMHhmZmZm KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IF9fYXJjaF9od2VpZ2h0OCh1 bnNpZ25lZCBpbnQgdykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19hcmNoX2h3ZWlnaHQzMih3 ICYgMHhmZik7CjE0NDc0OiB9CjE0NDc0OiAjIDQzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2Fy Y2hfaHdlaWdodC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB1 bnNpZ25lZCBsb25nIF9fYXJjaF9od2VpZ2h0NjQoX191NjQgdykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIHJlczsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSAoIiMgQUxUOiBvbGRuc3RyXG4i ICI2NjE6XG5cdCIgImNhbGwgX19zd19od2VpZ2h0NjQiICJcbjY2MjpcbiIgIiMgQUxUOiBwYWRk aW5nXG4iICIuc2tpcCAtKCgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKS0oIiAiNjYyYi02 NjFiIiAiKSkgPiAwKSAqICIgIigoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKS0oIiAiNjYy Yi02NjFiIiAiKSksMHg5MFxuIiAiNjYzIiAiOlxuIiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cnVj dGlvbnMsXCJhXCJcbiIgIiAubG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIgIjY2NCIiMSIiZiAt IC5cbiIgIiAud29yZCAiICIoIDQqMzIrMjMpIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MWIi ICJcbiIgIiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICJcbiIgIiAuYnl0ZSAiICI2 NjMiImItNjYyYiIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJf cmVwbGFjZW1lbnQsIFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxhY2VtZW50ICIgIjEiICJcbiIgIjY2 NCIiMSIiOlxuXHQiICJwb3BjbnRxICUxLCAlMCIgIlxuIiAiNjY1IiIxIiAiOlxuIiAiLnBvcHNl Y3Rpb25cbiIKMTQ0NzQ6ICAgICA6ICI9IiJhIiAocmVzKQoxNDQ3NDogICAgIDogIkQiICh3KSk7 CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gcmVzOwoxNDQ3NDogfQoxNDQ3NDogIyAzODggIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2NvbnN0X2h3ZWlnaHQuaCIgMQoxNDQ3NDogIyAzOTAgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2lu Y2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1hdG9taWMuaCIgMQoxNDQ3NDog IyAyNiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0cnVtZW50ZWQtYXRvbWljLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHNldF9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRk cikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChucikgLyA2NCks IHNpemVvZihsb25nKSk7CjE0NDc0OiAgYXJjaF9zZXRfYml0KG5yLCBhZGRyKTsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgMzkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0 b21pYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGVhcl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQg bG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChu cikgLyA2NCksIHNpemVvZihsb25nKSk7CjE0NDc0OiAgYXJjaF9jbGVhcl9iaXQobnIsIGFkZHIp OwoxNDQ3NDogfQoxNDQ3NDogIyA1NSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0 cnVtZW50ZWQtYXRvbWljLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNoYW5nZV9iaXQobG9uZyBuciwgdm9sYXRp bGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0 ZShhZGRyICsgKChucikgLyA2NCksIHNpemVvZihsb25nKSk7CjE0NDc0OiAgYXJjaF9jaGFuZ2Vf Yml0KG5yLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjggIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0b21pYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0ZXN0X2FuZF9zZXRf Yml0KGxvbmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0 OiAga2FzYW5fY2hlY2tfd3JpdGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwox NDQ3NDogIHJldHVybiBhcmNoX3Rlc3RfYW5kX3NldF9iaXQobnIsIGFkZHIpOwoxNDQ3NDogfQox NDQ3NDogIyA4MSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0cnVtZW50ZWQtYXRv bWljLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sIHRlc3RfYW5kX2NsZWFyX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1 bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKGFk ZHIgKyAoKG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKMTQ0NzQ6ICByZXR1cm4gYXJjaF90ZXN0 X2FuZF9jbGVhcl9iaXQobnIsIGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogIyA5NCAiLi9pbmNsdWRl L2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0cnVtZW50ZWQtYXRvbWljLmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRl c3RfYW5kX2NoYW5nZV9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikK MTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChucikgLyA2NCksIHNp emVvZihsb25nKSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfdGVzdF9hbmRfY2hhbmdlX2JpdChuciwg YWRkcik7CjE0NDc0OiB9CjE0NDc0OiAjIDM5MiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRv cHMuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1l bnRlZC1ub24tYXRvbWljLmgiIDEKMTQ0NzQ6ICMgMjUgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9i aXRvcHMvaW5zdHJ1bWVudGVkLW5vbi1hdG9taWMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19zZXRfYml0KGxv bmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAga2Fz YW5fY2hlY2tfd3JpdGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwoxNDQ3NDog IGFyY2hfX19zZXRfYml0KG5yLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDAgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLW5vbi1hdG9taWMuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgX19jbGVhcl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChucikgLyA2NCksIHNpemVv Zihsb25nKSk7CjE0NDc0OiAgYXJjaF9fX2NsZWFyX2JpdChuciwgYWRkcik7CjE0NDc0OiB9CjE0 NDc0OiAjIDU1ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1ub24t YXRvbWljLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fY2hhbmdlX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNp Z25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIg KyAoKG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKMTQ0NzQ6ICBhcmNoX19fY2hhbmdlX2JpdChu ciwgYWRkcik7CjE0NDc0OiB9CjE0NDc0OiAjIDY5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0 b3BzL2luc3RydW1lbnRlZC1ub24tYXRvbWljLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIF9fdGVzdF9hbmRfc2V0 X2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3 NDogIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIgKyAoKG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsK MTQ0NzQ6ICByZXR1cm4gYXJjaF9fX3Rlc3RfYW5kX3NldF9iaXQobnIsIGFkZHIpOwoxNDQ3NDog fQoxNDQ3NDogIyA4MyAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0cnVtZW50ZWQt bm9uLWF0b21pYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBfX3Rlc3RfYW5kX2NsZWFyX2JpdChsb25nIG5yLCB2 b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNr X3dyaXRlKGFkZHIgKyAoKG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKMTQ0NzQ6ICByZXR1cm4g YXJjaF9fX3Rlc3RfYW5kX2NsZWFyX2JpdChuciwgYWRkcik7CjE0NDc0OiB9CjE0NDc0OiAjIDk3 ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1ub24tYXRvbWljLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIF9fdGVzdF9hbmRfY2hhbmdlX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNp Z25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIg KyAoKG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKMTQ0NzQ6ICByZXR1cm4gYXJjaF9fX3Rlc3Rf YW5kX2NoYW5nZV9iaXQobnIsIGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0ZXN0X2JpdChsb25nIG5yLCBj b25zdCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2Fu X2NoZWNrX3JlYWQoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwoxNDQ3NDogIHJl dHVybiAoX19idWlsdGluX2NvbnN0YW50X3AoKG5yKSkgPyBjb25zdGFudF90ZXN0X2JpdCgobnIp LCAoYWRkcikpIDogdmFyaWFibGVfdGVzdF9iaXQoKG5yKSwgKGFkZHIpKSk7CjE0NDc0OiB9CjE0 NDc0OiAjIDM5MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMgoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1sb2NrLmgiIDEKMTQ0 NzQ6ICMgMjMgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWxvY2su aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgY2xlYXJfYml0X3VubG9jayhsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25l ZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIgKyAo KG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKMTQ0NzQ6ICBhcmNoX2NsZWFyX2JpdF91bmxvY2so bnIsIGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogIyAzOCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2Jp dG9wcy9pbnN0cnVtZW50ZWQtbG9jay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2NsZWFyX2JpdF91bmxvY2so bG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBr YXNhbl9jaGVja193cml0ZShhZGRyICsgKChucikgLyA2NCksIHNpemVvZihsb25nKSk7CjE0NDc0 OiAgYXJjaF9fX2NsZWFyX2JpdF91bmxvY2sobnIsIGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogIyA1 MyAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0cnVtZW50ZWQtbG9jay5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCB0ZXN0X2FuZF9zZXRfYml0X2xvY2sobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQg bG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChu cikgLyA2NCksIHNpemVvZihsb25nKSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfdGVzdF9hbmRfc2V0 X2JpdF9sb2NrKG5yLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzEgIi4vaW5jbHVkZS9hc20t Z2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGNs ZWFyX2JpdF91bmxvY2tfaXNfbmVnYXRpdmVfYnl0ZShsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25l ZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIgKyAo KG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKMTQ0NzQ6ICByZXR1cm4gYXJjaF9jbGVhcl9iaXRf dW5sb2NrX2lzX25lZ2F0aXZlX2J5dGUobnIsIGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogIyAzOTQg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2xlLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkv YXNtL3R5cGVzLmgiIDEKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9s ZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBsb25nIGZpbmRfbmV4dF96ZXJvX2JpdF9sZShjb25zdCB2b2lkICphZGRy LAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBmaW5kX25leHRfemVyb19iaXQoYWRkciwgc2l6ZSwgb2Zmc2V0 KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBmaW5kX25leHRfYml0X2xl KGNvbnN0IHZvaWQgKmFkZHIsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQg bG9uZyBvZmZzZXQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZpbmRfbmV4dF9iaXQoYWRkciwg c2l6ZSwgb2Zmc2V0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBmaW5k X2ZpcnN0X3plcm9fYml0X2xlKGNvbnN0IHZvaWQgKmFkZHIsCjE0NDc0OiAgIHVuc2lnbmVkIGxv bmcgc2l6ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZmluZF9maXJzdF96ZXJvX2JpdChhZGRy LCBzaXplKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTMgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRv cHMvbGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCB0ZXN0X2JpdF9sZShpbnQgbnIsIGNvbnN0IHZvaWQgKmFkZHIp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHRlc3RfYml0KG5yIF4gMCwgYWRkcik7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X2JpdF9sZShpbnQgbnIsIHZvaWQgKmFkZHIpCjE0NDc0 OiB7CjE0NDc0OiAgc2V0X2JpdChuciBeIDAsIGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGNsZWFyX2JpdF9sZShpbnQgbnIsIHZvaWQgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAg Y2xlYXJfYml0KG5yIF4gMCwgYWRkcik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19z ZXRfYml0X2xlKGludCBuciwgdm9pZCAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX3NldF9iaXQo bnIgXiAwLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2NsZWFyX2JpdF9s ZShpbnQgbnIsIHZvaWQgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAgX19jbGVhcl9iaXQobnIgXiAw LCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHRlc3RfYW5kX3NldF9iaXRfbGUo aW50IG5yLCB2b2lkICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0ZXN0X2FuZF9zZXRf Yml0KG5yIF4gMCwgYWRkcik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0ZXN0X2FuZF9j bGVhcl9iaXRfbGUoaW50IG5yLCB2b2lkICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0 ZXN0X2FuZF9jbGVhcl9iaXQobnIgXiAwLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IF9fdGVzdF9hbmRfc2V0X2JpdF9sZShpbnQgbnIsIHZvaWQgKmFkZHIpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIF9fdGVzdF9hbmRfc2V0X2JpdChuciBeIDAsIGFkZHIpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgX190ZXN0X2FuZF9jbGVhcl9iaXRfbGUoaW50IG5yLCB2b2lkICph ZGRyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX3Rlc3RfYW5kX2NsZWFyX2JpdChuciBeIDAs IGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogIyAzOTYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0 b3BzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3Bz L2V4dDItYXRvbWljLXNldGJpdC5oIiAxCjE0NDc0OiAjIDM5OCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9iaXRvcHMuaCIgMgoxNDQ3NDogIyAzMCAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAy CjE0NDc0OiAjIDY1ICIuL2luY2x1ZGUvbGludXgvYml0b3BzLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZ2V0X2Jp dG1hc2tfb3JkZXIodW5zaWduZWQgaW50IGNvdW50KQoxNDQ3NDogewoxNDQ3NDogIGludCBvcmRl cjsKMTQ0NzQ6IAoxNDQ3NDogIG9yZGVyID0gZmxzKGNvdW50KTsKMTQ0NzQ6ICByZXR1cm4gb3Jk ZXI7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdW5zaWduZWQgbG9uZyBod2VpZ2h0X2xvbmcodW5zaWduZWQgbG9uZyB3KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBzaXplb2YodykgPT0gNCA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCh3 KSA/ICgoKCh1bnNpZ25lZCBpbnQpICgoISEoKHcpICYgKDFVTEwgPDwgMCkpKSArICghISgodykg JiAoMVVMTCA8PCAxKSkpICsgKCEhKCh3KSAmICgxVUxMIDw8IDIpKSkgKyAoISEoKHcpICYgKDFV TEwgPDwgMykpKSArICghISgodykgJiAoMVVMTCA8PCA0KSkpICsgKCEhKCh3KSAmICgxVUxMIDw8 IDUpKSkgKyAoISEoKHcpICYgKDFVTEwgPDwgNikpKSArICghISgodykgJiAoMVVMTCA8PCA3KSkp KSkgKyAoKHVuc2lnbmVkIGludCkgKCghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgMCkpKSArICgh ISgoKHcpID4+IDgpICYgKDFVTEwgPDwgMSkpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwg MikpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgMykpKSArICghISgoKHcpID4+IDgpICYg KDFVTEwgPDwgNCkpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgNSkpKSArICghISgoKHcp ID4+IDgpICYgKDFVTEwgPDwgNikpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgNykpKSkp KSArICgoKHVuc2lnbmVkIGludCkgKCghISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDApKSkgKyAo ISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8PCAxKSkpICsgKCEhKCgodykgPj4gMTYpICYgKDFVTEwg PDwgMikpKSArICghISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDMpKSkgKyAoISEoKCh3KSA+PiAx NikgJiAoMVVMTCA8PCA0KSkpICsgKCEhKCgodykgPj4gMTYpICYgKDFVTEwgPDwgNSkpKSArICgh ISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDYpKSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8 PCA3KSkpKSkgKyAoKHVuc2lnbmVkIGludCkgKCghISgoKCh3KSA+PiAxNikgPj4gOCkgJiAoMVVM TCA8PCAwKSkpICsgKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDEpKSkgKyAoISEo KCgodykgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgMikpKSArICghISgoKCh3KSA+PiAxNikgPj4g OCkgJiAoMVVMTCA8PCAzKSkpICsgKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDQp KSkgKyAoISEoKCgodykgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgNSkpKSArICghISgoKCh3KSA+ PiAxNikgPj4gOCkgJiAoMVVMTCA8PCA2KSkpICsgKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgx VUxMIDw8IDcpKSkpKSkpIDogX19hcmNoX2h3ZWlnaHQzMih3KSkgOiAoX19idWlsdGluX2NvbnN0 YW50X3AodykgPyAoKCgoKHVuc2lnbmVkIGludCkgKCghISgodykgJiAoMVVMTCA8PCAwKSkpICsg KCEhKCh3KSAmICgxVUxMIDw8IDEpKSkgKyAoISEoKHcpICYgKDFVTEwgPDwgMikpKSArICghISgo dykgJiAoMVVMTCA8PCAzKSkpICsgKCEhKCh3KSAmICgxVUxMIDw8IDQpKSkgKyAoISEoKHcpICYg KDFVTEwgPDwgNSkpKSArICghISgodykgJiAoMVVMTCA8PCA2KSkpICsgKCEhKCh3KSAmICgxVUxM IDw8IDcpKSkpKSArICgodW5zaWduZWQgaW50KSAoKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCAw KSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCAxKSkpICsgKCEhKCgodykgPj4gOCkgJiAo MVVMTCA8PCAyKSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCAzKSkpICsgKCEhKCgodykg Pj4gOCkgJiAoMVVMTCA8PCA0KSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCA1KSkpICsg KCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCA2KSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8 PCA3KSkpKSkpICsgKCgodW5zaWduZWQgaW50KSAoKCEhKCgodykgPj4gMTYpICYgKDFVTEwgPDwg MCkpKSArICghISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDEpKSkgKyAoISEoKCh3KSA+PiAxNikg JiAoMVVMTCA8PCAyKSkpICsgKCEhKCgodykgPj4gMTYpICYgKDFVTEwgPDwgMykpKSArICghISgo KHcpID4+IDE2KSAmICgxVUxMIDw8IDQpKSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8PCA1 KSkpICsgKCEhKCgodykgPj4gMTYpICYgKDFVTEwgPDwgNikpKSArICghISgoKHcpID4+IDE2KSAm ICgxVUxMIDw8IDcpKSkpKSArICgodW5zaWduZWQgaW50KSAoKCEhKCgoKHcpID4+IDE2KSA+PiA4 KSAmICgxVUxMIDw8IDApKSkgKyAoISEoKCgodykgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgMSkp KSArICghISgoKCh3KSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCAyKSkpICsgKCEhKCgoKHcpID4+ IDE2KSA+PiA4KSAmICgxVUxMIDw8IDMpKSkgKyAoISEoKCgodykgPj4gMTYpID4+IDgpICYgKDFV TEwgPDwgNCkpKSArICghISgoKCh3KSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCA1KSkpICsgKCEh KCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDYpKSkgKyAoISEoKCgodykgPj4gMTYpID4+ IDgpICYgKDFVTEwgPDwgNykpKSkpKSkgKyAoKCgodW5zaWduZWQgaW50KSAoKCEhKCgodykgPj4g MzIpICYgKDFVTEwgPDwgMCkpKSArICghISgoKHcpID4+IDMyKSAmICgxVUxMIDw8IDEpKSkgKyAo ISEoKCh3KSA+PiAzMikgJiAoMVVMTCA8PCAyKSkpICsgKCEhKCgodykgPj4gMzIpICYgKDFVTEwg PDwgMykpKSArICghISgoKHcpID4+IDMyKSAmICgxVUxMIDw8IDQpKSkgKyAoISEoKCh3KSA+PiAz MikgJiAoMVVMTCA8PCA1KSkpICsgKCEhKCgodykgPj4gMzIpICYgKDFVTEwgPDwgNikpKSArICgh ISgoKHcpID4+IDMyKSAmICgxVUxMIDw8IDcpKSkpKSArICgodW5zaWduZWQgaW50KSAoKCEhKCgo KHcpID4+IDMyKSA+PiA4KSAmICgxVUxMIDw8IDApKSkgKyAoISEoKCgodykgPj4gMzIpID4+IDgp ICYgKDFVTEwgPDwgMSkpKSArICghISgoKCh3KSA+PiAzMikgPj4gOCkgJiAoMVVMTCA8PCAyKSkp ICsgKCEhKCgoKHcpID4+IDMyKSA+PiA4KSAmICgxVUxMIDw8IDMpKSkgKyAoISEoKCgodykgPj4g MzIpID4+IDgpICYgKDFVTEwgPDwgNCkpKSArICghISgoKCh3KSA+PiAzMikgPj4gOCkgJiAoMVVM TCA8PCA1KSkpICsgKCEhKCgoKHcpID4+IDMyKSA+PiA4KSAmICgxVUxMIDw8IDYpKSkgKyAoISEo KCgodykgPj4gMzIpID4+IDgpICYgKDFVTEwgPDwgNykpKSkpKSArICgoKHVuc2lnbmVkIGludCkg KCghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgMCkpKSArICghISgoKCh3KSA+PiAz MikgPj4gMTYpICYgKDFVTEwgPDwgMSkpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFV TEwgPDwgMikpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgMykpKSArICgh ISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgNCkpKSArICghISgoKCh3KSA+PiAzMikg Pj4gMTYpICYgKDFVTEwgPDwgNSkpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwg PDwgNikpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgNykpKSkpICsgKCh1 bnNpZ25lZCBpbnQpICgoISEoKCgoKHcpID4+IDMyKSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCAw KSkpICsgKCEhKCgoKCh3KSA+PiAzMikgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgMSkpKSArICgh ISgoKCgodykgPj4gMzIpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDIpKSkgKyAoISEoKCgoKHcp ID4+IDMyKSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCAzKSkpICsgKCEhKCgoKCh3KSA+PiAzMikg Pj4gMTYpID4+IDgpICYgKDFVTEwgPDwgNCkpKSArICghISgoKCgodykgPj4gMzIpID4+IDE2KSA+ PiA4KSAmICgxVUxMIDw8IDUpKSkgKyAoISEoKCgoKHcpID4+IDMyKSA+PiAxNikgPj4gOCkgJiAo MVVMTCA8PCA2KSkpICsgKCEhKCgoKCh3KSA+PiAzMikgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwg NykpKSkpKSkpIDogX19hcmNoX2h3ZWlnaHQ2NCh3KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX3U2NCByb2w2NChfX3U2 NCB3b3JkLCB1bnNpZ25lZCBpbnQgc2hpZnQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh3b3Jk IDw8IChzaGlmdCAmIDYzKSkgfCAod29yZCA+PiAoKC1zaGlmdCkgJiA2MykpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX191 NjQgcm9yNjQoX191NjQgd29yZCwgdW5zaWduZWQgaW50IHNoaWZ0KQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiAod29yZCA+PiAoc2hpZnQgJiA2MykpIHwgKHdvcmQgPDwgKCgtc2hpZnQpICYgNjMp KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fdTMyIHJvbDMyKF9fdTMyIHdvcmQsIHVuc2lnbmVkIGludCBzaGlmdCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHdvcmQgPDwgKHNoaWZ0ICYgMzEpKSB8ICh3b3JkID4+ICgo LXNoaWZ0KSAmIDMxKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX3UzMiByb3IzMihfX3UzMiB3b3JkLCB1bnNpZ25lZCBp bnQgc2hpZnQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh3b3JkID4+IChzaGlmdCAmIDMxKSkg fCAod29yZCA8PCAoKC1zaGlmdCkgJiAzMSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX191MTYgcm9sMTYoX191MTYgd29y ZCwgdW5zaWduZWQgaW50IHNoaWZ0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAod29yZCA8PCAo c2hpZnQgJiAxNSkpIHwgKHdvcmQgPj4gKCgtc2hpZnQpICYgMTUpKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fdTE2IHJv cjE2KF9fdTE2IHdvcmQsIHVuc2lnbmVkIGludCBzaGlmdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gKHdvcmQgPj4gKHNoaWZ0ICYgMTUpKSB8ICh3b3JkIDw8ICgoLXNoaWZ0KSAmIDE1KSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX3U4IHJvbDgoX191OCB3b3JkLCB1bnNpZ25lZCBpbnQgc2hpZnQpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICh3b3JkIDw8IChzaGlmdCAmIDcpKSB8ICh3b3JkID4+ICgoLXNoaWZ0KSAm IDcpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fdTggcm9yOChfX3U4IHdvcmQsIHVuc2lnbmVkIGludCBzaGlmdCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHdvcmQgPj4gKHNoaWZ0ICYgNykpIHwgKHdvcmQgPDwgKCgt c2hpZnQpICYgNykpOwoxNDQ3NDogfQoxNDQ3NDogIyAxNjUgIi4vaW5jbHVkZS9saW51eC9iaXRv cHMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fczMyIHNpZ25fZXh0ZW5kMzIoX191MzIgdmFsdWUsIGludCBpbmRleCkK MTQ0NzQ6IHsKMTQ0NzQ6ICBfX3U4IHNoaWZ0ID0gMzEgLSBpbmRleDsKMTQ0NzQ6ICByZXR1cm4g KF9fczMyKSh2YWx1ZSA8PCBzaGlmdCkgPj4gc2hpZnQ7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX3M2NCBzaWduX2V4dGVu ZDY0KF9fdTY0IHZhbHVlLCBpbnQgaW5kZXgpCjE0NDc0OiB7CjE0NDc0OiAgX191OCBzaGlmdCA9 IDYzIC0gaW5kZXg7CjE0NDc0OiAgcmV0dXJuIChfX3M2NCkodmFsdWUgPDwgc2hpZnQpID4+IHNo aWZ0OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBmbHNfbG9uZyh1bnNpZ25lZCBs b25nIGwpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKHNpemVvZihsKSA9PSA0KQoxNDQ3NDogICByZXR1 cm4gZmxzKGwpOwoxNDQ3NDogIHJldHVybiBmbHM2NChsKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IGdldF9jb3VudF9vcmRlcih1bnNpZ25lZCBpbnQgY291bnQpCjE0NDc0OiB7CjE0NDc0 OiAgaW50IG9yZGVyOwoxNDQ3NDogCjE0NDc0OiAgb3JkZXIgPSBmbHMoY291bnQpIC0gMTsKMTQ0 NzQ6ICBpZiAoY291bnQgJiAoY291bnQgLSAxKSkKMTQ0NzQ6ICAgb3JkZXIrKzsKMTQ0NzQ6ICBy ZXR1cm4gb3JkZXI7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBnZXRfY291bnRfb3JkZXJfbG9uZyh1bnNp Z25lZCBsb25nIGwpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGwgPT0gMFVMKQoxNDQ3NDogICByZXR1 cm4gLTE7CjE0NDc0OiAgZWxzZSBpZiAobCAmIChsIC0gMVVMKSkKMTQ0NzQ6ICAgcmV0dXJuIChp bnQpZmxzX2xvbmcobCk7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICByZXR1cm4gKGludClmbHNfbG9u ZyhsKSAtIDE7CjE0NDc0OiB9CjE0NDc0OiAjIDIyMyAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5o IgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX2ZmczY0KHU2NCB3b3JkKQoxNDQ3NDogewoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBf X2ZmcygodW5zaWduZWQgbG9uZyl3b3JkKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIGFzc2lnbl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5z aWduZWQgbG9uZyAqYWRkciwKMTQ0NzQ6ICAgICAgICAgICAgYm9vbCB2YWx1ZSkKMTQ0NzQ6IHsK MTQ0NzQ6ICBpZiAodmFsdWUpCjE0NDc0OiAgIHNldF9iaXQobnIsIGFkZHIpOwoxNDQ3NDogIGVs c2UKMTQ0NzQ6ICAgY2xlYXJfYml0KG5yLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fYXNzaWduX2JpdChsb25n IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyLAoxNDQ3NDogICAgICAgYm9vbCB2YWx1 ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAodmFsdWUpCjE0NDc0OiAgIF9fc2V0X2JpdChuciwgYWRk cik7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICBfX2NsZWFyX2JpdChuciwgYWRkcik7CjE0NDc0OiB9 CjE0NDc0OiAjIDI5OSAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIgoxNDQ3NDogZXh0ZXJuIHVu c2lnbmVkIGxvbmcgZmluZF9sYXN0X2JpdChjb25zdCB1bnNpZ25lZCBsb25nICphZGRyLAoxNDQ3 NDogICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CjE0NDc0OiAjIDEzICIuL2luY2x1ZGUvbGlu dXgva2VybmVsLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2xvZzIuaCIgMQoxNDQ3 NDogIyAyMSAiLi9pbmNsdWRlL2xpbnV4L2xvZzIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKGNv bnN0KSkKMTQ0NzQ6IGludCBfX2lsb2cyX3UzMih1MzIgbikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gZmxzKG4pIC0gMTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKGNvbnN0KSkKMTQ0NzQ6IGludCBfX2lsb2cyX3U2NCh1NjQgbikKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gZmxzNjQobikgLSAxOwoxNDQ3NDogfQoxNDQ3NDogIyA0NCAiLi9p bmNsdWRlL2xpbnV4L2xvZzIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKGNvbnN0KSkKMTQ0NzQ6 IGJvb2wgaXNfcG93ZXJfb2ZfMih1bnNpZ25lZCBsb25nIG4pCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIChuICE9IDAgJiYgKChuICYgKG4gLSAxKSkgPT0gMCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKGNvbnN0 KSkKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgX19yb3VuZHVwX3Bvd19vZl90d28odW5zaWduZWQgbG9u ZyBuKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAxVUwgPDwgZmxzX2xvbmcobiAtIDEpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKGNvbnN0KSkKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgX19yb3VuZGRvd25fcG93X29m X3R3byh1bnNpZ25lZCBsb25nIG4pCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIDFVTCA8PCAoZmxz X2xvbmcobikgLSAxKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTk3ICIuL2luY2x1ZGUvbGludXgvbG9n Mi5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSkKMTQ0NzQ6IGludCBfX29yZGVy X2Jhc2VfMih1bnNpZ25lZCBsb25nIG4pCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG4gPiAxID8g KCBfX2J1aWx0aW5fY29uc3RhbnRfcChuIC0gMSkgPyAoIF9fYnVpbHRpbl9jb25zdGFudF9wKG4g LSAxKSA/ICggKG4gLSAxKSA8IDIgPyAwIDogKG4gLSAxKSAmICgxVUxMIDw8IDYzKSA/IDYzIDog KG4gLSAxKSAmICgxVUxMIDw8IDYyKSA/IDYyIDogKG4gLSAxKSAmICgxVUxMIDw8IDYxKSA/IDYx IDogKG4gLSAxKSAmICgxVUxMIDw8IDYwKSA/IDYwIDogKG4gLSAxKSAmICgxVUxMIDw8IDU5KSA/ IDU5IDogKG4gLSAxKSAmICgxVUxMIDw8IDU4KSA/IDU4IDogKG4gLSAxKSAmICgxVUxMIDw8IDU3 KSA/IDU3IDogKG4gLSAxKSAmICgxVUxMIDw8IDU2KSA/IDU2IDogKG4gLSAxKSAmICgxVUxMIDw8 IDU1KSA/IDU1IDogKG4gLSAxKSAmICgxVUxMIDw8IDU0KSA/IDU0IDogKG4gLSAxKSAmICgxVUxM IDw8IDUzKSA/IDUzIDogKG4gLSAxKSAmICgxVUxMIDw8IDUyKSA/IDUyIDogKG4gLSAxKSAmICgx VUxMIDw8IDUxKSA/IDUxIDogKG4gLSAxKSAmICgxVUxMIDw8IDUwKSA/IDUwIDogKG4gLSAxKSAm ICgxVUxMIDw8IDQ5KSA/IDQ5IDogKG4gLSAxKSAmICgxVUxMIDw8IDQ4KSA/IDQ4IDogKG4gLSAx KSAmICgxVUxMIDw8IDQ3KSA/IDQ3IDogKG4gLSAxKSAmICgxVUxMIDw8IDQ2KSA/IDQ2IDogKG4g LSAxKSAmICgxVUxMIDw8IDQ1KSA/IDQ1IDogKG4gLSAxKSAmICgxVUxMIDw8IDQ0KSA/IDQ0IDog KG4gLSAxKSAmICgxVUxMIDw8IDQzKSA/IDQzIDogKG4gLSAxKSAmICgxVUxMIDw8IDQyKSA/IDQy IDogKG4gLSAxKSAmICgxVUxMIDw8IDQxKSA/IDQxIDogKG4gLSAxKSAmICgxVUxMIDw8IDQwKSA/ IDQwIDogKG4gLSAxKSAmICgxVUxMIDw8IDM5KSA/IDM5IDogKG4gLSAxKSAmICgxVUxMIDw8IDM4 KSA/IDM4IDogKG4gLSAxKSAmICgxVUxMIDw8IDM3KSA/IDM3IDogKG4gLSAxKSAmICgxVUxMIDw8 IDM2KSA/IDM2IDogKG4gLSAxKSAmICgxVUxMIDw8IDM1KSA/IDM1IDogKG4gLSAxKSAmICgxVUxM IDw8IDM0KSA/IDM0IDogKG4gLSAxKSAmICgxVUxMIDw8IDMzKSA/IDMzIDogKG4gLSAxKSAmICgx VUxMIDw8IDMyKSA/IDMyIDogKG4gLSAxKSAmICgxVUxMIDw8IDMxKSA/IDMxIDogKG4gLSAxKSAm ICgxVUxMIDw8IDMwKSA/IDMwIDogKG4gLSAxKSAmICgxVUxMIDw8IDI5KSA/IDI5IDogKG4gLSAx KSAmICgxVUxMIDw8IDI4KSA/IDI4IDogKG4gLSAxKSAmICgxVUxMIDw8IDI3KSA/IDI3IDogKG4g LSAxKSAmICgxVUxMIDw8IDI2KSA/IDI2IDogKG4gLSAxKSAmICgxVUxMIDw8IDI1KSA/IDI1IDog KG4gLSAxKSAmICgxVUxMIDw8IDI0KSA/IDI0IDogKG4gLSAxKSAmICgxVUxMIDw8IDIzKSA/IDIz IDogKG4gLSAxKSAmICgxVUxMIDw8IDIyKSA/IDIyIDogKG4gLSAxKSAmICgxVUxMIDw8IDIxKSA/ IDIxIDogKG4gLSAxKSAmICgxVUxMIDw8IDIwKSA/IDIwIDogKG4gLSAxKSAmICgxVUxMIDw8IDE5 KSA/IDE5IDogKG4gLSAxKSAmICgxVUxMIDw8IDE4KSA/IDE4IDogKG4gLSAxKSAmICgxVUxMIDw8 IDE3KSA/IDE3IDogKG4gLSAxKSAmICgxVUxMIDw8IDE2KSA/IDE2IDogKG4gLSAxKSAmICgxVUxM IDw8IDE1KSA/IDE1IDogKG4gLSAxKSAmICgxVUxMIDw8IDE0KSA/IDE0IDogKG4gLSAxKSAmICgx VUxMIDw8IDEzKSA/IDEzIDogKG4gLSAxKSAmICgxVUxMIDw8IDEyKSA/IDEyIDogKG4gLSAxKSAm ICgxVUxMIDw8IDExKSA/IDExIDogKG4gLSAxKSAmICgxVUxMIDw8IDEwKSA/IDEwIDogKG4gLSAx KSAmICgxVUxMIDw8IDkpID8gOSA6IChuIC0gMSkgJiAoMVVMTCA8PCA4KSA/IDggOiAobiAtIDEp ICYgKDFVTEwgPDwgNykgPyA3IDogKG4gLSAxKSAmICgxVUxMIDw8IDYpID8gNiA6IChuIC0gMSkg JiAoMVVMTCA8PCA1KSA/IDUgOiAobiAtIDEpICYgKDFVTEwgPDwgNCkgPyA0IDogKG4gLSAxKSAm ICgxVUxMIDw8IDMpID8gMyA6IChuIC0gMSkgJiAoMVVMTCA8PCAyKSA/IDIgOiAxKSA6IC0xKSA6 IChzaXplb2YobiAtIDEpIDw9IDQpID8gX19pbG9nMl91MzIobiAtIDEpIDogX19pbG9nMl91NjQo biAtIDEpICkgKyAxIDogMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjI0ICIuL2luY2x1ZGUvbGludXgv bG9nMi5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoY29uc3QpKQoxNDQ3NDogaW50IF9fYml0c19w ZXIodW5zaWduZWQgbG9uZyBuKQoxNDQ3NDogewoxNDQ3NDogIGlmIChuIDwgMikKMTQ0NzQ6ICAg cmV0dXJuIDE7CjE0NDc0OiAgaWYgKGlzX3Bvd2VyX29mXzIobikpCjE0NDc0OiAgIHJldHVybiAo IF9fYnVpbHRpbl9jb25zdGFudF9wKG4pID8gKCAoKG4pID09IDAgfHwgKG4pID09IDEpID8gMCA6 ICggX19idWlsdGluX2NvbnN0YW50X3AoKG4pIC0gMSkgPyAoIF9fYnVpbHRpbl9jb25zdGFudF9w KChuKSAtIDEpID8gKCAoKG4pIC0gMSkgPCAyID8gMCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYz KSA/IDYzIDogKChuKSAtIDEpICYgKDFVTEwgPDwgNjIpID8gNjIgOiAoKG4pIC0gMSkgJiAoMVVM TCA8PCA2MSkgPyA2MSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYwKSA/IDYwIDogKChuKSAtIDEp ICYgKDFVTEwgPDwgNTkpID8gNTkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1OCkgPyA1OCA6ICgo bikgLSAxKSAmICgxVUxMIDw8IDU3KSA/IDU3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTYpID8g NTYgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1NSkgPyA1NSA6ICgobikgLSAxKSAmICgxVUxMIDw8 IDU0KSA/IDU0IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTMpID8gNTMgOiAoKG4pIC0gMSkgJiAo MVVMTCA8PCA1MikgPyA1MiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDUxKSA/IDUxIDogKChuKSAt IDEpICYgKDFVTEwgPDwgNTApID8gNTAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0OSkgPyA0OSA6 ICgobikgLSAxKSAmICgxVUxMIDw8IDQ4KSA/IDQ4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDcp ID8gNDcgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0NikgPyA0NiA6ICgobikgLSAxKSAmICgxVUxM IDw8IDQ1KSA/IDQ1IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDQpID8gNDQgOiAoKG4pIC0gMSkg JiAoMVVMTCA8PCA0MykgPyA0MyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQyKSA/IDQyIDogKChu KSAtIDEpICYgKDFVTEwgPDwgNDEpID8gNDEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0MCkgPyA0 MCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDM5KSA/IDM5IDogKChuKSAtIDEpICYgKDFVTEwgPDwg MzgpID8gMzggOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzNykgPyAzNyA6ICgobikgLSAxKSAmICgx VUxMIDw8IDM2KSA/IDM2IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzUpID8gMzUgOiAoKG4pIC0g MSkgJiAoMVVMTCA8PCAzNCkgPyAzNCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDMzKSA/IDMzIDog KChuKSAtIDEpICYgKDFVTEwgPDwgMzIpID8gMzIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzMSkg PyAzMSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDMwKSA/IDMwIDogKChuKSAtIDEpICYgKDFVTEwg PDwgMjkpID8gMjkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyOCkgPyAyOCA6ICgobikgLSAxKSAm ICgxVUxMIDw8IDI3KSA/IDI3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjYpID8gMjYgOiAoKG4p IC0gMSkgJiAoMVVMTCA8PCAyNSkgPyAyNSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDI0KSA/IDI0 IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjMpID8gMjMgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAy MikgPyAyMiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDIxKSA/IDIxIDogKChuKSAtIDEpICYgKDFV TEwgPDwgMjApID8gMjAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxOSkgPyAxOSA6ICgobikgLSAx KSAmICgxVUxMIDw8IDE4KSA/IDE4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTcpID8gMTcgOiAo KG4pIC0gMSkgJiAoMVVMTCA8PCAxNikgPyAxNiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDE1KSA/ IDE1IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTQpID8gMTQgOiAoKG4pIC0gMSkgJiAoMVVMTCA8 PCAxMykgPyAxMyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDEyKSA/IDEyIDogKChuKSAtIDEpICYg KDFVTEwgPDwgMTEpID8gMTEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxMCkgPyAxMCA6ICgobikg LSAxKSAmICgxVUxMIDw8IDkpID8gOSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDgpID8gOCA6ICgo bikgLSAxKSAmICgxVUxMIDw8IDcpID8gNyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYpID8gNiA6 ICgobikgLSAxKSAmICgxVUxMIDw8IDUpID8gNSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQpID8g NCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDMpID8gMyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDIp ID8gMiA6IDEpIDogLTEpIDogKHNpemVvZigobikgLSAxKSA8PSA0KSA/IF9faWxvZzJfdTMyKChu KSAtIDEpIDogX19pbG9nMl91NjQoKG4pIC0gMSkgKSArIDEpIDogX19vcmRlcl9iYXNlXzIobikg KSArIDE7CjE0NDc0OiAgcmV0dXJuICggX19idWlsdGluX2NvbnN0YW50X3AobikgPyAoICgobikg PT0gMCB8fCAobikgPT0gMSkgPyAwIDogKCBfX2J1aWx0aW5fY29uc3RhbnRfcCgobikgLSAxKSA/ ICggX19idWlsdGluX2NvbnN0YW50X3AoKG4pIC0gMSkgPyAoICgobikgLSAxKSA8IDIgPyAwIDog KChuKSAtIDEpICYgKDFVTEwgPDwgNjMpID8gNjMgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA2Mikg PyA2MiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYxKSA/IDYxIDogKChuKSAtIDEpICYgKDFVTEwg PDwgNjApID8gNjAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1OSkgPyA1OSA6ICgobikgLSAxKSAm ICgxVUxMIDw8IDU4KSA/IDU4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTcpID8gNTcgOiAoKG4p IC0gMSkgJiAoMVVMTCA8PCA1NikgPyA1NiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDU1KSA/IDU1 IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTQpID8gNTQgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1 MykgPyA1MyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDUyKSA/IDUyIDogKChuKSAtIDEpICYgKDFV TEwgPDwgNTEpID8gNTEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1MCkgPyA1MCA6ICgobikgLSAx KSAmICgxVUxMIDw8IDQ5KSA/IDQ5IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDgpID8gNDggOiAo KG4pIC0gMSkgJiAoMVVMTCA8PCA0NykgPyA0NyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQ2KSA/ IDQ2IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDUpID8gNDUgOiAoKG4pIC0gMSkgJiAoMVVMTCA8 PCA0NCkgPyA0NCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQzKSA/IDQzIDogKChuKSAtIDEpICYg KDFVTEwgPDwgNDIpID8gNDIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0MSkgPyA0MSA6ICgobikg LSAxKSAmICgxVUxMIDw8IDQwKSA/IDQwIDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzkpID8gMzkg OiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzOCkgPyAzOCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDM3 KSA/IDM3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzYpID8gMzYgOiAoKG4pIC0gMSkgJiAoMVVM TCA8PCAzNSkgPyAzNSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDM0KSA/IDM0IDogKChuKSAtIDEp ICYgKDFVTEwgPDwgMzMpID8gMzMgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzMikgPyAzMiA6ICgo bikgLSAxKSAmICgxVUxMIDw8IDMxKSA/IDMxIDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzApID8g MzAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyOSkgPyAyOSA6ICgobikgLSAxKSAmICgxVUxMIDw8 IDI4KSA/IDI4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjcpID8gMjcgOiAoKG4pIC0gMSkgJiAo MVVMTCA8PCAyNikgPyAyNiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDI1KSA/IDI1IDogKChuKSAt IDEpICYgKDFVTEwgPDwgMjQpID8gMjQgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyMykgPyAyMyA6 ICgobikgLSAxKSAmICgxVUxMIDw8IDIyKSA/IDIyIDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjEp ID8gMjEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyMCkgPyAyMCA6ICgobikgLSAxKSAmICgxVUxM IDw8IDE5KSA/IDE5IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTgpID8gMTggOiAoKG4pIC0gMSkg JiAoMVVMTCA8PCAxNykgPyAxNyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDE2KSA/IDE2IDogKChu KSAtIDEpICYgKDFVTEwgPDwgMTUpID8gMTUgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxNCkgPyAx NCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDEzKSA/IDEzIDogKChuKSAtIDEpICYgKDFVTEwgPDwg MTIpID8gMTIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxMSkgPyAxMSA6ICgobikgLSAxKSAmICgx VUxMIDw8IDEwKSA/IDEwIDogKChuKSAtIDEpICYgKDFVTEwgPDwgOSkgPyA5IDogKChuKSAtIDEp ICYgKDFVTEwgPDwgOCkgPyA4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNykgPyA3IDogKChuKSAt IDEpICYgKDFVTEwgPDwgNikgPyA2IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNSkgPyA1IDogKChu KSAtIDEpICYgKDFVTEwgPDwgNCkgPyA0IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMykgPyAzIDog KChuKSAtIDEpICYgKDFVTEwgPDwgMikgPyAyIDogMSkgOiAtMSkgOiAoc2l6ZW9mKChuKSAtIDEp IDw9IDQpID8gX19pbG9nMl91MzIoKG4pIC0gMSkgOiBfX2lsb2cyX3U2NCgobikgLSAxKSApICsg MSkgOiBfX29yZGVyX2Jhc2VfMihuKSApOwoxNDQ3NDogfQoxNDQ3NDogIyAxNCAiLi9pbmNsdWRl L2xpbnV4L2tlcm5lbC5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3By aW50ay5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9rZXJuX2xldmVscy5oIiAxCjE0NDc0OiAjIDgg Ii4vaW5jbHVkZS9saW51eC9wcmludGsuaCIgMgoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9jYWNoZS5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgva2VybmVsLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zeXNpbmZvLmgi IDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHN5c2luZm8gewoxNDQ3NDogIF9fa2VybmVsX2xvbmdfdCB1cHRpbWU7 CjE0NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBsb2Fkc1szXTsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9u Z190IHRvdGFscmFtOwoxNDQ3NDogIF9fa2VybmVsX3Vsb25nX3QgZnJlZXJhbTsKMTQ0NzQ6ICBf X2tlcm5lbF91bG9uZ190IHNoYXJlZHJhbTsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IGJ1ZmZl cnJhbTsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IHRvdGFsc3dhcDsKMTQ0NzQ6ICBfX2tlcm5l bF91bG9uZ190IGZyZWVzd2FwOwoxNDQ3NDogIF9fdTE2IHByb2NzOwoxNDQ3NDogIF9fdTE2IHBh ZDsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IHRvdGFsaGlnaDsKMTQ0NzQ6ICBfX2tlcm5lbF91 bG9uZ190IGZyZWVoaWdoOwoxNDQ3NDogIF9fdTMyIG1lbV91bml0OwoxNDQ3NDogIGNoYXIgX2Zb MjAtMipzaXplb2YoX19rZXJuZWxfdWxvbmdfdCktc2l6ZW9mKF9fdTMyKV07CjE0NDc0OiB9Owox NDQ3NDogIyA2ICIuL2luY2x1ZGUvdWFwaS9saW51eC9rZXJuZWwuaCIgMgoxNDQ3NDogIyA2ICIu L2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMgoxNDQ3NDogIyAxMCAiLi9pbmNsdWRlL2xpbnV4L3By aW50ay5oIiAyCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjb25zdCBjaGFyIGxpbnV4X2Jhbm5lcltd OwoxNDQ3NDogZXh0ZXJuIGNvbnN0IGNoYXIgbGludXhfcHJvY19iYW5uZXJbXTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwcmludGtfZ2V0X2xldmVsKGNvbnN0IGNoYXIgKmJ1 ZmZlcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoYnVmZmVyWzBdID09ICdcMDAxJyAmJiBidWZmZXJb MV0pIHsKMTQ0NzQ6ICAgc3dpdGNoIChidWZmZXJbMV0pIHsKMTQ0NzQ6ICAgY2FzZSAnMCcgLi4u ICc3JzoKMTQ0NzQ6ICAgY2FzZSAnYyc6CjE0NDc0OiAgICByZXR1cm4gYnVmZmVyWzFdOwoxNDQ3 NDogICB9CjE0NDc0OiAgfQoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBjb25zdCBjaGFyICpwcmludGtfc2tpcF9sZXZlbChjb25zdCBjaGFyICpidWZmZXIpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKHByaW50a19nZXRfbGV2ZWwoYnVmZmVyKSkKMTQ0NzQ6ICAgcmV0dXJu IGJ1ZmZlciArIDI7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gYnVmZmVyOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBjb25zdCBjaGFyICpwcmludGtfc2tpcF9oZWFkZXJzKGNvbnN0IGNoYXIgKmJ1 ZmZlcikKMTQ0NzQ6IHsKMTQ0NzQ6ICB3aGlsZSAocHJpbnRrX2dldF9sZXZlbChidWZmZXIpKQox NDQ3NDogICBidWZmZXIgPSBwcmludGtfc2tpcF9sZXZlbChidWZmZXIpOwoxNDQ3NDogCjE0NDc0 OiAgcmV0dXJuIGJ1ZmZlcjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjIgIi4vaW5jbHVkZS9saW51eC9w cmludGsuaCIKMTQ0NzQ6IGV4dGVybiBpbnQgY29uc29sZV9wcmludGtbXTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY29uc29sZV9z aWxlbnQodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoY29uc29sZV9wcmludGtbMF0pID0gMDsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjb25zb2xlX3ZlcmJvc2Uodm9pZCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBpZiAoKGNvbnNvbGVfcHJpbnRrWzBdKSkKMTQ0NzQ6ICAgKGNvbnNvbGVfcHJpbnRr WzBdKSA9IDE1OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGNoYXIgZGV2a21zZ19sb2dfc3RyW107CjE0NDc0OiBzdHJ1Y3QgY3RsX3RhYmxlOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gaW50IHN1cHByZXNzX3ByaW50azsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IHZhX2Zvcm1hdCB7CjE0NDc0OiAgY29uc3QgY2hhciAqZm10OwoxNDQ3NDogIHZhX2xpc3QgKnZh OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTQyICIuL2luY2x1ZGUvbGludXgvcHJpbnRrLmgiCjE0NDc0 OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDEsIDIpKSkKMTQ0NzQ6 IHZvaWQgZWFybHlfcHJpbnRrKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHByaW50 a19ubWlfZW50ZXIodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBwcmludGtfbm1pX2V4aXQodm9p ZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBwcmludGtfbm1pX2RpcmVjdF9lbnRlcih2b2lkKTsKMTQ0 NzQ6IGV4dGVybiB2b2lkIHByaW50a19ubWlfZGlyZWN0X2V4aXQodm9pZCk7CjE0NDc0OiAjIDE2 MiAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIgoxNDQ3NDogIF9fYXR0cmlidXRlX18oKF9fZm9y bWF0X18ocHJpbnRmLCA1LCAwKSkpCjE0NDc0OiBpbnQgdnByaW50a19lbWl0KGludCBmYWNpbGl0 eSwgaW50IGxldmVsLAoxNDQ3NDogICAgY29uc3QgY2hhciAqZGljdCwgc2l6ZV90IGRpY3RsZW4s CjE0NDc0OiAgICBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7CjE0NDc0OiAKMTQ0NzQ6 ICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMSwgMCkpKQoxNDQ3NDogaW50IHZw cmludGsoY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwoxNDQ3NDogCjE0NDc0OiAgX19h dHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDEsIDIpKSkgX19hdHRyaWJ1dGVfXygoX19j b2xkX18pKQoxNDQ3NDogaW50IHByaW50ayhjb25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18o cHJpbnRmLCAxLCAyKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgaW50IHByaW50a19kZWZl cnJlZChjb25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fcHJpbnRrX3JhdGVsaW1pdChj b25zdCBjaGFyICpmdW5jKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wgcHJpbnRrX3RpbWVk X3JhdGVsaW1pdCh1bnNpZ25lZCBsb25nICpjYWxsZXJfamlmZmllcywKMTQ0NzQ6ICAgICAgICB1 bnNpZ25lZCBpbnQgaW50ZXJ2YWxfbXNlYyk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgcHJp bnRrX2RlbGF5X21zZWM7CjE0NDc0OiBleHRlcm4gaW50IGRtZXNnX3Jlc3RyaWN0OwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gaW50CjE0NDc0OiBkZXZrbXNnX3N5c2N0bF9zZXRfbG9nbHZsKHN0cnVj dCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsIHZvaWQgKmJ1ZiwKMTQ0NzQ6ICAgICAgc2l6 ZV90ICpsZW5wLCBsb2ZmX3QgKnBwb3MpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCB3YWtl X3VwX2tsb2dkKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBjaGFyICpsb2dfYnVmX2FkZHJfZ2V0KHZv aWQpOwoxNDQ3NDogdTMyIGxvZ19idWZfbGVuX2dldCh2b2lkKTsKMTQ0NzQ6IHZvaWQgbG9nX2J1 Zl92bWNvcmVpbmZvX3NldHVwKHZvaWQpOwoxNDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3Nl Y3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBzZXR1cF9s b2dfYnVmKGludCBlYXJseSk7CjE0NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50 ZiwgMSwgMikpKSB2b2lkIGR1bXBfc3RhY2tfc2V0X2FyY2hfZGVzYyhjb25zdCBjaGFyICpmbXQs IC4uLik7CjE0NDc0OiB2b2lkIGR1bXBfc3RhY2tfcHJpbnRfaW5mbyhjb25zdCBjaGFyICpsb2df bHZsKTsKMTQ0NzQ6IHZvaWQgc2hvd19yZWdzX3ByaW50X2luZm8oY29uc3QgY2hhciAqbG9nX2x2 bCk7CjE0NDc0OiBleHRlcm4gdm9pZCBkdW1wX3N0YWNrKHZvaWQpIF9fYXR0cmlidXRlX18oKF9f Y29sZF9fKSk7CjE0NDc0OiBleHRlcm4gdm9pZCBwcmludGtfc2FmZV9pbml0KHZvaWQpOwoxNDQ3 NDogZXh0ZXJuIHZvaWQgcHJpbnRrX3NhZmVfZmx1c2godm9pZCk7CjE0NDc0OiBleHRlcm4gdm9p ZCBwcmludGtfc2FmZV9mbHVzaF9vbl9wYW5pYyh2b2lkKTsKMTQ0NzQ6ICMgMjg1ICIuL2luY2x1 ZGUvbGludXgvcHJpbnRrLmgiCjE0NDc0OiBleHRlcm4gaW50IGtwdHJfcmVzdHJpY3Q7CjE0NDc0 OiAjIDMzMSAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUv bGludXgvZHluYW1pY19kZWJ1Zy5oIiAxCjE0NDc0OiAjIDE0ICIuL2luY2x1ZGUvbGludXgvZHlu YW1pY19kZWJ1Zy5oIgoxNDQ3NDogc3RydWN0IF9kZGVidWcgewoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgY29uc3QgY2hhciAqbW9kbmFtZTsKMTQ0NzQ6ICBjb25zdCBj aGFyICpmdW5jdGlvbjsKMTQ0NzQ6ICBjb25zdCBjaGFyICpmaWxlbmFtZTsKMTQ0NzQ6ICBjb25z dCBjaGFyICpmb3JtYXQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IGxpbmVubzoxODsKMTQ0NzQ6ICMg NDAgIi4vaW5jbHVkZS9saW51eC9keW5hbWljX2RlYnVnLmgiCjE0NDc0OiAgdW5zaWduZWQgaW50 IGZsYWdzOjg7CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBzdGF0aWNf a2V5X3RydWUgZGRfa2V5X3RydWU7CjE0NDc0OiAgIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIGRk X2tleV9mYWxzZTsKMTQ0NzQ6ICB9IGtleTsKMTQ0NzQ6IAoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9f KChhbGlnbmVkKDgpKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGlu dCBkZGVidWdfYWRkX21vZHVsZShzdHJ1Y3QgX2RkZWJ1ZyAqdGFiLCB1bnNpZ25lZCBpbnQgbiwK MTQ0NzQ6ICAgICBjb25zdCBjaGFyICptb2RuYW1lKTsKMTQ0NzQ6IGV4dGVybiBpbnQgZGRlYnVn X3JlbW92ZV9tb2R1bGUoY29uc3QgY2hhciAqbW9kX25hbWUpOwoxNDQ3NDogZXh0ZXJuIF9fYXR0 cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpCjE0NDc0OiB2b2lkIF9fZHluYW1p Y19wcl9kZWJ1ZyhzdHJ1Y3QgX2RkZWJ1ZyAqZGVzY3JpcHRvciwgY29uc3QgY2hhciAqZm10LCAu Li4pOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGRkZWJ1Z19keW5kYmdfbW9kdWxlX3BhcmFt X2NiKGNoYXIgKnBhcmFtLCBjaGFyICp2YWwsCjE0NDc0OiAgICAgIGNvbnN0IGNoYXIgKm1vZG5h bWUpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g X19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKMTQ0NzQ6IHZvaWQgX19k eW5hbWljX2Rldl9kYmcoc3RydWN0IF9kZGVidWcgKmRlc2NyaXB0b3IsIGNvbnN0IHN0cnVjdCBk ZXZpY2UgKmRldiwKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IG5ldF9kZXZpY2U7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0dHJp YnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkpKQoxNDQ3NDogdm9pZCBfX2R5bmFtaWNf bmV0ZGV2X2RiZyhzdHJ1Y3QgX2RkZWJ1ZyAqZGVzY3JpcHRvciwKMTQ0NzQ6ICAgICAgY29uc3Qg c3RydWN0IG5ldF9kZXZpY2UgKmRldiwKMTQ0NzQ6ICAgICAgY29uc3QgY2hhciAqZm10LCAuLi4p OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaWJfZGV2aWNlOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g X19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKMTQ0NzQ6IHZvaWQgX19k eW5hbWljX2liZGV2X2RiZyhzdHJ1Y3QgX2RkZWJ1ZyAqZGVzY3JpcHRvciwKMTQ0NzQ6ICAgICBj b25zdCBzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwKMTQ0NzQ6ICAgICBjb25zdCBjaGFyICpmbXQs IC4uLik7CjE0NDc0OiAjIDMzMiAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIiAyCjE0NDc0OiAj IDQ3NiAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIgoxNDQ3NDogZXh0ZXJuIGNvbnN0IHN0cnVj dCBmaWxlX29wZXJhdGlvbnMga21zZ19mb3BzOwoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6 ICBEVU1QX1BSRUZJWF9OT05FLAoxNDQ3NDogIERVTVBfUFJFRklYX0FERFJFU1MsCjE0NDc0OiAg RFVNUF9QUkVGSVhfT0ZGU0VUCjE0NDc0OiB9OwoxNDQ3NDogZXh0ZXJuIGludCBoZXhfZHVtcF90 b19idWZmZXIoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBpbnQgcm93c2l6ZSwKMTQ0NzQ6 ICAgICAgICAgIGludCBncm91cHNpemUsIGNoYXIgKmxpbmVidWYsIHNpemVfdCBsaW5lYnVmbGVu LAoxNDQ3NDogICAgICAgICAgYm9vbCBhc2NpaSk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lk IHByaW50X2hleF9kdW1wKGNvbnN0IGNoYXIgKmxldmVsLCBjb25zdCBjaGFyICpwcmVmaXhfc3Ry LAoxNDQ3NDogICAgICAgaW50IHByZWZpeF90eXBlLCBpbnQgcm93c2l6ZSwgaW50IGdyb3Vwc2l6 ZSwKMTQ0NzQ6ICAgICAgIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgYm9vbCBhc2NpaSk7 CjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDIKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGl2NjQuaCIgMQoxNDQ3NDogIyA3 NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9kaXY2NC5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUv YXNtLWdlbmVyaWMvZGl2NjQuaCIgMQoxNDQ3NDogIyA3NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9kaXY2NC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBtdWxfdTY0X3UzMl9kaXYodTY0IGEsIHUz MiBtdWwsIHUzMiBkaXYpCjE0NDc0OiB7CjE0NDc0OiAgdTY0IHE7CjE0NDc0OiAKMTQ0NzQ6ICBh c20gKCJtdWxxICUyOyBkaXZxICUzIiA6ICI9YSIgKHEpCjE0NDc0OiAgICAgOiAiYSIgKGEpLCAi cm0iICgodTY0KW11bCksICJybSIgKCh1NjQpZGl2KQoxNDQ3NDogICAgIDogInJkeCIpOwoxNDQ3 NDogCjE0NDc0OiAgcmV0dXJuIHE7CjE0NDc0OiB9CjE0NDc0OiAjIDE5ICIuL2luY2x1ZGUvbGlu dXgva2VybmVsLmgiIDIKMTQ0NzQ6ICMgMTkxICIuL2luY2x1ZGUvbGludXgva2VybmVsLmgiCjE0 NDc0OiBzdHJ1Y3QgY29tcGxldGlvbjsKMTQ0NzQ6IHN0cnVjdCBwdF9yZWdzOwoxNDQ3NDogc3Ry dWN0IHVzZXI7CjE0NDc0OiAjIDI0NyAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgoxNDQ3NDog ICBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIF9fX21pZ2h0X3NsZWVwKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLAoxNDQ3NDog ICAgICAgIGludCBwcmVlbXB0X29mZnNldCkgeyB9CjE0NDc0OiAgIHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19taWdodF9zbGVl cChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwKMTQ0NzQ6ICAgICAgICBpbnQgcHJlZW1wdF9v ZmZzZXQpIHsgfQoxNDQ3NDogIyAyOTcgIi4vaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHUzMiByZWNpcHJvY2FsX3NjYWxlKHUzMiB2YWwsIHUzMiBlcF9ybykKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gKHUzMikoKCh1NjQpIHZhbCAqIGVwX3JvKSA+PiAzMik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG1p Z2h0X2ZhdWx0KHZvaWQpIHsgfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qg YXRvbWljX25vdGlmaWVyX2hlYWQgcGFuaWNfbm90aWZpZXJfbGlzdDsKMTQ0NzQ6IGV4dGVybiBs b25nICgqcGFuaWNfYmxpbmspKGludCBzdGF0ZSk7CjE0NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2Zv cm1hdF9fKHByaW50ZiwgMSwgMikpKQoxNDQ3NDogdm9pZCBwYW5pYyhjb25zdCBjaGFyICpmbXQs IC4uLikgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkgX19hdHRyaWJ1dGVfXygoX19jb2xk X18pKTsKMTQ0NzQ6IHZvaWQgbm1pX3BhbmljKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBjb25zdCBj aGFyICptc2cpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgb29wc19lbnRlcih2b2lkKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIG9vcHNfZXhpdCh2b2lkKTsKMTQ0NzQ6IHZvaWQgcHJpbnRfb29wc19lbmRfbWFy a2VyKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCBvb3BzX21heV9wcmludCh2b2lkKTsKMTQ0NzQ6 IHZvaWQgZG9fZXhpdChsb25nIGVycm9yX2NvZGUpIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5f XykpOwoxNDQ3NDogdm9pZCBjb21wbGV0ZV9hbmRfZXhpdChzdHJ1Y3QgY29tcGxldGlvbiAqLCBs b25nKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIF9rc3RydG91bChj b25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQgYmFzZSwgdW5zaWduZWQgbG9uZyAqcmVzKTsKMTQ0 NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgX2tzdHJ0b2wo Y29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IGJhc2UsIGxvbmcgKnJlcyk7CjE0NDc0OiAKMTQ0 NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvdWxs KGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBiYXNlLCB1bnNpZ25lZCBsb25nIGxvbmcgKnJl cyk7CjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtz dHJ0b2xsKGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBiYXNlLCBsb25nIGxvbmcgKnJlcyk7 CjE0NDc0OiAjIDM0NCAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0 cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG91bChjb25zdCBjaGFyICpz LCB1bnNpZ25lZCBpbnQgYmFzZSwgdW5zaWduZWQgbG9uZyAqcmVzKQoxNDQ3NDogewoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaWYgKHNpemVvZih1bnNpZ25lZCBsb25n KSA9PSBzaXplb2YodW5zaWduZWQgbG9uZyBsb25nKSAmJgoxNDQ3NDogICAgICBfX2FsaWdub2Zf Xyh1bnNpZ25lZCBsb25nKSA9PSBfX2FsaWdub2ZfXyh1bnNpZ25lZCBsb25nIGxvbmcpKQoxNDQ3 NDogICByZXR1cm4ga3N0cnRvdWxsKHMsIGJhc2UsICh1bnNpZ25lZCBsb25nIGxvbmcgKilyZXMp OwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgcmV0dXJuIF9rc3RydG91bChzLCBiYXNlLCByZXMpOwox NDQ3NDogfQoxNDQ3NDogIyAzNzIgIi4vaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvbChjb25zdCBj aGFyICpzLCB1bnNpZ25lZCBpbnQgYmFzZSwgbG9uZyAqcmVzKQoxNDQ3NDogewoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaWYgKHNpemVvZihsb25nKSA9PSBzaXplb2Yo bG9uZyBsb25nKSAmJgoxNDQ3NDogICAgICBfX2FsaWdub2ZfXyhsb25nKSA9PSBfX2FsaWdub2Zf Xyhsb25nIGxvbmcpKQoxNDQ3NDogICByZXR1cm4ga3N0cnRvbGwocywgYmFzZSwgKGxvbmcgbG9u ZyAqKXJlcyk7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICByZXR1cm4gX2tzdHJ0b2wocywgYmFzZSwg cmVzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91 bnVzZWRfcmVzdWx0X18pKSBrc3RydG91aW50KGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBi YXNlLCB1bnNpZ25lZCBpbnQgKnJlcyk7CjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b2ludChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQg YmFzZSwgaW50ICpyZXMpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3U2NChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQg YmFzZSwgdTY0ICpyZXMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtzdHJ0b3VsbChzLCBiYXNl LCByZXMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3M2NChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQg YmFzZSwgczY0ICpyZXMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtzdHJ0b2xsKHMsIGJhc2Us IHJlcyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvdTMyKGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBi YXNlLCB1MzIgKnJlcykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga3N0cnRvdWludChzLCBiYXNl LCByZXMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3MzMihjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQg YmFzZSwgczMyICpyZXMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtzdHJ0b2ludChzLCBiYXNl LCByZXMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3UxNihjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQg YmFzZSwgdTE2ICpyZXMpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBrc3RydG9zMTYoY29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IGJhc2UsIHMx NiAqcmVzKTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSkga3N0cnRvdTgoY29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IGJhc2UsIHU4ICpyZXMpOwox NDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG9z OChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQgYmFzZSwgczggKnJlcyk7CjE0NDc0OiBpbnQg X19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b2Jvb2woY29uc3Qg Y2hhciAqcywgYm9vbCAqcmVzKTsKMTQ0NzQ6IAoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9f d2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG91bGxfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMs IHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIHVuc2lnbmVkIGxvbmcgbG9uZyAqcmVz KTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0 cnRvbGxfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50 IGJhc2UsIGxvbmcgbG9uZyAqcmVzKTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvdWxfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVf dCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIHVuc2lnbmVkIGxvbmcgKnJlcyk7CjE0NDc0OiBp bnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b2xfZnJvbV91 c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIGxvbmcg KnJlcyk7CjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IGtzdHJ0b3VpbnRfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWdu ZWQgaW50IGJhc2UsIHVuc2lnbmVkIGludCAqcmVzKTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9f KChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvaW50X2Zyb21fdXNlcihjb25zdCBjaGFy ICpzLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIGludCBiYXNlLCBpbnQgKnJlcyk7CjE0NDc0OiBp bnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3UxNl9mcm9t X3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQgYmFzZSwgdTE2 ICpyZXMpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p KSBrc3RydG9zMTZfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWdu ZWQgaW50IGJhc2UsIHMxNiAqcmVzKTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvdThfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVf dCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIHU4ICpyZXMpOwoxNDQ3NDogaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG9zOF9mcm9tX3VzZXIoY29uc3Qg Y2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQgYmFzZSwgczggKnJlcyk7CjE0NDc0 OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b2Jvb2xf ZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgYm9vbCAqcmVzKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3Ry dG91NjRfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50 IGJhc2UsIHU2NCAqcmVzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrc3RydG91bGxfZnJvbV91 c2VyKHMsIGNvdW50LCBiYXNlLCByZXMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3M2NF9mcm9tX3VzZXIo Y29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQgYmFzZSwgczY0ICpyZXMp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtzdHJ0b2xsX2Zyb21fdXNlcihzLCBjb3VudCwgYmFz ZSwgcmVzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fy bl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG91MzJfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNp emVfdCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIHUzMiAqcmVzKQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiBrc3RydG91aW50X2Zyb21fdXNlcihzLCBjb3VudCwgYmFzZSwgcmVzKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0 X18pKSBrc3RydG9zMzJfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5z aWduZWQgaW50IGJhc2UsIHMzMiAqcmVzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrc3RydG9p bnRfZnJvbV91c2VyKHMsIGNvdW50LCBiYXNlLCByZXMpOwoxNDQ3NDogfQoxNDQ3NDogIyA0NTkg Ii4vaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIHNp bXBsZV9zdHJ0b3VsKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CjE0NDc0OiBl eHRlcm4gbG9uZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGlu dCk7CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIHNpbXBsZV9zdHJ0b3VsbChjb25z dCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwoxNDQ3NDogZXh0ZXJuIGxvbmcgbG9uZyBz aW1wbGVfc3RydG9sbChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gaW50IG51bV90b19zdHIoY2hhciAqYnVmLCBpbnQgc2l6ZSwKMTQ0NzQ6 ICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIG51bSwgdW5zaWduZWQgaW50IHdpZHRoKTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1h dF9fKHByaW50ZiwgMiwgMykpKSBpbnQgc3ByaW50ZihjaGFyICpidWYsIGNvbnN0IGNoYXIgKiBm bXQsIC4uLik7CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYs IDIsIDApKSkgaW50IHZzcHJpbnRmKGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsK MTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkpKQox NDQ3NDogaW50IHNucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZt dCwgLi4uKTsKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50Ziwg MywgMCkpKQoxNDQ3NDogaW50IHZzbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25z dCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygo X19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKMTQ0NzQ6IGludCBzY25wcmludGYoY2hhciAqYnVm LCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDogZXh0ZXJuIF9fYXR0 cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAzLCAwKSkpCjE0NDc0OiBpbnQgdnNjbnByaW50 ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7 CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkg X19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpCjE0NDc0OiBjaGFyICprYXNwcmludGYoZ2ZwX3Qg Z2ZwLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygo X19mb3JtYXRfXyhwcmludGYsIDIsIDApKSkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpCjE0 NDc0OiBjaGFyICprdmFzcHJpbnRmKGdmcF90IGdmcCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0 IGFyZ3MpOwoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAy LCAwKSkpCjE0NDc0OiBjb25zdCBjaGFyICprdmFzcHJpbnRmX2NvbnN0KGdmcF90IGdmcCwgY29u c3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRy aWJ1dGVfXygoX19mb3JtYXRfXyhzY2FuZiwgMiwgMykpKQoxNDQ3NDogaW50IHNzY2FuZihjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9f KChfX2Zvcm1hdF9fKHNjYW5mLCAyLCAwKSkpCjE0NDc0OiBpbnQgdnNzY2FuZihjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZ2V0 X29wdGlvbihjaGFyICoqc3RyLCBpbnQgKnBpbnQpOwoxNDQ3NDogZXh0ZXJuIGNoYXIgKmdldF9v cHRpb25zKGNvbnN0IGNoYXIgKnN0ciwgaW50IG5pbnRzLCBpbnQgKmludHMpOwoxNDQ3NDogZXh0 ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBtZW1wYXJzZShjb25zdCBjaGFyICpwdHIsIGNoYXIgKipy ZXRwdHIpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgcGFyc2Vfb3B0aW9uX3N0cihjb25zdCBjaGFyICpz dHIsIGNvbnN0IGNoYXIgKm9wdGlvbik7CjE0NDc0OiBleHRlcm4gY2hhciAqbmV4dF9hcmcoY2hh ciAqYXJncywgY2hhciAqKnBhcmFtLCBjaGFyICoqdmFsKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGludCBjb3JlX2tlcm5lbF90ZXh0KHVuc2lnbmVkIGxvbmcgYWRkcik7CjE0NDc0OiBleHRlcm4g aW50IGluaXRfa2VybmVsX3RleHQodW5zaWduZWQgbG9uZyBhZGRyKTsKMTQ0NzQ6IGV4dGVybiBp bnQgY29yZV9rZXJuZWxfZGF0YSh1bnNpZ25lZCBsb25nIGFkZHIpOwoxNDQ3NDogZXh0ZXJuIGlu dCBfX2tlcm5lbF90ZXh0X2FkZHJlc3ModW5zaWduZWQgbG9uZyBhZGRyKTsKMTQ0NzQ6IGV4dGVy biBpbnQga2VybmVsX3RleHRfYWRkcmVzcyh1bnNpZ25lZCBsb25nIGFkZHIpOwoxNDQ3NDogZXh0 ZXJuIGludCBmdW5jX3B0cl9pc19rZXJuZWxfdGV4dCh2b2lkICpwdHIpOwoxNDQ3NDogCjE0NDc0 OiB1NjQgaW50X3Bvdyh1NjQgYmFzZSwgdW5zaWduZWQgaW50IGV4cCk7CjE0NDc0OiB1bnNpZ25l ZCBsb25nIGludF9zcXJ0KHVuc2lnbmVkIGxvbmcpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1MzIgaW50X3NxcnQ2NCh1NjQgeCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gKHUzMilpbnRfc3FydCh4KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBidXN0X3NwaW5sb2NrcyhpbnQgeWVzKTsKMTQ0NzQ6IGV4dGVybiBpbnQgb29wc19p bl9wcm9ncmVzczsKMTQ0NzQ6IGV4dGVybiBpbnQgcGFuaWNfdGltZW91dDsKMTQ0NzQ6IGV4dGVy biB1bnNpZ25lZCBsb25nIHBhbmljX3ByaW50OwoxNDQ3NDogZXh0ZXJuIGludCBwYW5pY19vbl9v b3BzOwoxNDQ3NDogZXh0ZXJuIGludCBwYW5pY19vbl91bnJlY292ZXJlZF9ubWk7CjE0NDc0OiBl eHRlcm4gaW50IHBhbmljX29uX2lvX25taTsKMTQ0NzQ6IGV4dGVybiBpbnQgcGFuaWNfb25fd2Fy bjsKMTQ0NzQ6IGV4dGVybiBpbnQgc3lzY3RsX3BhbmljX29uX3JjdV9zdGFsbDsKMTQ0NzQ6IGV4 dGVybiBpbnQgc3lzY3RsX3BhbmljX29uX3N0YWNrb3ZlcmZsb3c7CjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBib29sIGNyYXNoX2tleGVjX3Bvc3Rfbm90aWZpZXJzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGF0b21pY190IHBhbmlj X2NwdTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgc2V0X2FyY2hfcGFuaWNfdGltZW91dChpbnQgdGltZW91dCwgaW50IGFyY2hfZGVm YXVsdF90aW1lb3V0KQoxNDQ3NDogewoxNDQ3NDogIGlmIChwYW5pY190aW1lb3V0ID09IGFyY2hf ZGVmYXVsdF90aW1lb3V0KQoxNDQ3NDogICBwYW5pY190aW1lb3V0ID0gdGltZW91dDsKMTQ0NzQ6 IH0KMTQ0NzQ6IGV4dGVybiBjb25zdCBjaGFyICpwcmludF90YWludGVkKHZvaWQpOwoxNDQ3NDog ZW51bSBsb2NrZGVwX29rIHsKMTQ0NzQ6ICBMT0NLREVQX1NUSUxMX09LLAoxNDQ3NDogIExPQ0tE RVBfTk9XX1VOUkVMSUFCTEUKMTQ0NzQ6IH07CjE0NDc0OiBleHRlcm4gdm9pZCBhZGRfdGFpbnQo dW5zaWduZWQgZmxhZywgZW51bSBsb2NrZGVwX29rKTsKMTQ0NzQ6IGV4dGVybiBpbnQgdGVzdF90 YWludCh1bnNpZ25lZCBmbGFnKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIGdldF90YWlu dCh2b2lkKTsKMTQ0NzQ6IGV4dGVybiBpbnQgcm9vdF9tb3VudGZsYWdzOwoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gYm9vbCBlYXJseV9ib290X2lycXNfZGlzYWJsZWQ7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGVudW0gc3lzdGVtX3N0YXRlcyB7 CjE0NDc0OiAgU1lTVEVNX0JPT1RJTkcsCjE0NDc0OiAgU1lTVEVNX1NDSEVEVUxJTkcsCjE0NDc0 OiAgU1lTVEVNX1JVTk5JTkcsCjE0NDc0OiAgU1lTVEVNX0hBTFQsCjE0NDc0OiAgU1lTVEVNX1BP V0VSX09GRiwKMTQ0NzQ6ICBTWVNURU1fUkVTVEFSVCwKMTQ0NzQ6ICBTWVNURU1fU1VTUEVORCwK MTQ0NzQ6IH0gc3lzdGVtX3N0YXRlOwoxNDQ3NDogIyA1OTMgIi4vaW5jbHVkZS9saW51eC9rZXJu ZWwuaCIKMTQ0NzQ6IHN0cnVjdCB0YWludF9mbGFnIHsKMTQ0NzQ6ICBjaGFyIGNfdHJ1ZTsKMTQ0 NzQ6ICBjaGFyIGNfZmFsc2U7CjE0NDc0OiAgYm9vbCBtb2R1bGU7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gY29uc3Qgc3RydWN0IHRhaW50X2ZsYWcgdGFpbnRfZmxhZ3NbMThdOwox NDQ3NDogCjE0NDc0OiBleHRlcm4gY29uc3QgY2hhciBoZXhfYXNjW107CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBjaGFyICpoZXhfYnl0ZV9wYWNrKGNoYXIgKmJ1ZiwgdTggYnl0ZSkK MTQ0NzQ6IHsKMTQ0NzQ6ICAqYnVmKysgPSBoZXhfYXNjWygoYnl0ZSkgJiAweGYwKSA+PiA0XTsK MTQ0NzQ6ICAqYnVmKysgPSBoZXhfYXNjWygoYnl0ZSkgJiAweDBmKV07CjE0NDc0OiAgcmV0dXJu IGJ1ZjsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNvbnN0IGNoYXIgaGV4X2FzY191 cHBlcltdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY2hhciAqaGV4X2J5dGVfcGFj a191cHBlcihjaGFyICpidWYsIHU4IGJ5dGUpCjE0NDc0OiB7CjE0NDc0OiAgKmJ1ZisrID0gaGV4 X2FzY191cHBlclsoKGJ5dGUpICYgMHhmMCkgPj4gNF07CjE0NDc0OiAgKmJ1ZisrID0gaGV4X2Fz Y191cHBlclsoKGJ5dGUpICYgMHgwZildOwoxNDQ3NDogIHJldHVybiBidWY7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgaGV4X3RvX2JpbihjaGFyIGNoKTsKMTQ0NzQ6IGV4dGVy biBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGhleDJiaW4odTgg KmRzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3QgY291bnQpOwoxNDQ3NDogZXh0ZXJuIGNoYXIg KmJpbjJoZXgoY2hhciAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBjb3VudCk7CjE0NDc0 OiAKMTQ0NzQ6IGJvb2wgbWFjX3B0b24oY29uc3QgY2hhciAqcywgdTggKm1hYyk7CjE0NDc0OiAj IDY0OSAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgoxNDQ3NDogZW51bSBmdHJhY2VfZHVtcF9t b2RlIHsKMTQ0NzQ6ICBEVU1QX05PTkUsCjE0NDc0OiAgRFVNUF9BTEwsCjE0NDc0OiAgRFVNUF9P UklHLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIHRyYWNpbmdfb24odm9p ZCk7CjE0NDc0OiB2b2lkIHRyYWNpbmdfb2ZmKHZvaWQpOwoxNDQ3NDogaW50IHRyYWNpbmdfaXNf b24odm9pZCk7CjE0NDc0OiB2b2lkIHRyYWNpbmdfc25hcHNob3Qodm9pZCk7CjE0NDc0OiB2b2lk IHRyYWNpbmdfc25hcHNob3RfYWxsb2Modm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lk IHRyYWNpbmdfc3RhcnQodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCB0cmFjaW5nX3N0b3Aodm9p ZCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAxLCAy KSkpCjE0NDc0OiB2b2lkIF9fX190cmFjZV9wcmludGtfY2hlY2tfZm9ybWF0KGNvbnN0IGNoYXIg KmZtdCwgLi4uKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogIyA3MjggIi4vaW5jbHVkZS9saW51 eC9rZXJuZWwuaCIKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50 ZiwgMiwgMykpKQoxNDQ3NDogaW50IF9fdHJhY2VfYnByaW50ayh1bnNpZ25lZCBsb25nIGlwLCBj b25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9f KChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKQoxNDQ3NDogaW50IF9fdHJhY2VfcHJpbnRrKHVu c2lnbmVkIGxvbmcgaXAsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKMTQ0NzQ6ICMgNzY5ICIuL2lu Y2x1ZGUvbGludXgva2VybmVsLmgiCjE0NDc0OiBleHRlcm4gaW50IF9fdHJhY2VfYnB1dHModW5z aWduZWQgbG9uZyBpcCwgY29uc3QgY2hhciAqc3RyKTsKMTQ0NzQ6IGV4dGVybiBpbnQgX190cmFj ZV9wdXRzKHVuc2lnbmVkIGxvbmcgaXAsIGNvbnN0IGNoYXIgKnN0ciwgaW50IHNpemUpOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gdm9pZCB0cmFjZV9kdW1wX3N0YWNrKGludCBza2lwKTsKMTQ0NzQ6 ICMgNzkxICIuL2luY2x1ZGUvbGludXgva2VybmVsLmgiCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1 dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDApKSkgaW50CjE0NDc0OiBfX2Z0cmFjZV92YnBy aW50ayh1bnNpZ25lZCBsb25nIGlwLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDAp KSkgaW50CjE0NDc0OiBfX2Z0cmFjZV92cHJpbnRrKHVuc2lnbmVkIGxvbmcgaXAsIGNvbnN0IGNo YXIgKmZtdCwgdmFfbGlzdCBhcCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGZ0cmFjZV9k dW1wKGVudW0gZnRyYWNlX2R1bXBfbW9kZSBvb3BzX2R1bXBfbW9kZSk7CjE0NDc0OiAjIDEwICIu L2luY2x1ZGUvbGludXgvbGlzdC5oIiAyCjE0NDc0OiAjIDMzICIuL2luY2x1ZGUvbGludXgvbGlz dC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBJTklUX0xJU1RfSEVBRChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQox NDQ3NDogewoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKGxpc3QtPm5leHQpIF9fdmFsOyBjaGFy IF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKGxpc3QtPm5leHQpKSAobGlzdCkg fTsgX193cml0ZV9vbmNlX3NpemUoJihsaXN0LT5uZXh0KSwgX191Ll9fYywgc2l6ZW9mKGxpc3Qt Pm5leHQpKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICBsaXN0LT5wcmV2ID0gbGlzdDsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCBfX2xpc3RfYWRkX3ZhbGlkKHN0 cnVjdCBsaXN0X2hlYWQgKm5ldywKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnBy ZXYsCjE0NDc0OiAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0KTsKMTQ0NzQ6IGV4dGVy biBib29sIF9fbGlzdF9kZWxfZW50cnlfdmFsaWQoc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpOwox NDQ3NDogIyA2MyAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19saXN0X2Fk ZChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsCjE0NDc0OiAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk ICpwcmV2LAoxNDQ3NDogICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqbmV4dCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBpZiAoIV9fbGlzdF9hZGRfdmFsaWQobmV3LCBwcmV2LCBuZXh0KSkKMTQ0NzQ6ICAg cmV0dXJuOwoxNDQ3NDogCjE0NDc0OiAgbmV4dC0+cHJldiA9IG5ldzsKMTQ0NzQ6ICBuZXctPm5l eHQgPSBuZXh0OwoxNDQ3NDogIG5ldy0+cHJldiA9IHByZXY7CjE0NDc0OiAgKHsgdW5pb24geyB0 eXBlb2YocHJldi0+bmV4dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0g KCB0eXBlb2YocHJldi0+bmV4dCkpIChuZXcpIH07IF9fd3JpdGVfb25jZV9zaXplKCYocHJldi0+ bmV4dCksIF9fdS5fX2MsIHNpemVvZihwcmV2LT5uZXh0KSk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0 OiB9CjE0NDc0OiAjIDg0ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0 X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCjE0NDc0 OiB7CjE0NDc0OiAgX19saXN0X2FkZChuZXcsIGhlYWQsIGhlYWQtPm5leHQpOwoxNDQ3NDogfQox NDQ3NDogIyA5OCAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9hZGRf dGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCjE0NDc0 OiB7CjE0NDc0OiAgX19saXN0X2FkZChuZXcsIGhlYWQtPnByZXYsIGhlYWQpOwoxNDQ3NDogfQox NDQ3NDogIyAxMTAgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbGlzdF9k ZWwoc3RydWN0IGxpc3RfaGVhZCAqIHByZXYsIHN0cnVjdCBsaXN0X2hlYWQgKiBuZXh0KQoxNDQ3 NDogewoxNDQ3NDogIG5leHQtPnByZXYgPSBwcmV2OwoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9m KHByZXYtPm5leHQpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlw ZW9mKHByZXYtPm5leHQpKSAobmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihwcmV2LT5uZXh0 KSwgX191Ll9fYywgc2l6ZW9mKHByZXYtPm5leHQpKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgMTI0ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2xpc3Rf ZGVsX2NsZWFycHJldihzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBf X2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBlbnRyeS0+bmV4dCk7CjE0NDc0OiAgZW50cnktPnByZXYg PSAoKHZvaWQgKikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2xpc3RfZGVsX2Vu dHJ5KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIGlmICghX19saXN0 X2RlbF9lbnRyeV92YWxpZChlbnRyeSkpCjE0NDc0OiAgIHJldHVybjsKMTQ0NzQ6IAoxNDQ3NDog IF9fbGlzdF9kZWwoZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBsaXN0X2RlbChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2xp c3RfZGVsX2VudHJ5KGVudHJ5KTsKMTQ0NzQ6ICBlbnRyeS0+bmV4dCA9ICgodm9pZCAqKSAweDEw MCArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpOwoxNDQ3NDogIGVudHJ5LT5wcmV2ID0gKCh2b2lk ICopIDB4MTIyICsgKDB4ZGVhZDAwMDAwMDAwMDAwMFVMKSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE1 OCAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9yZXBsYWNlKHN0cnVj dCBsaXN0X2hlYWQgKm9sZCwKMTQ0NzQ6ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXcpCjE0NDc0 OiB7CjE0NDc0OiAgbmV3LT5uZXh0ID0gb2xkLT5uZXh0OwoxNDQ3NDogIG5ldy0+bmV4dC0+cHJl diA9IG5ldzsKMTQ0NzQ6ICBuZXctPnByZXYgPSBvbGQtPnByZXY7CjE0NDc0OiAgbmV3LT5wcmV2 LT5uZXh0ID0gbmV3OwoxNDQ3NDogfQoxNDQ3NDogIyAxNzQgIi4vaW5jbHVkZS9saW51eC9saXN0 LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGxpc3RfcmVwbGFjZV9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKm9sZCwK MTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5ldykKMTQ0NzQ6IHsKMTQ0NzQ6ICBs aXN0X3JlcGxhY2Uob2xkLCBuZXcpOwoxNDQ3NDogIElOSVRfTElTVF9IRUFEKG9sZCk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGxpc3Rfc3dhcChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeTEsCjE0NDc0OiAgICAgICAg IHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5MikKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9o ZWFkICpwb3MgPSBlbnRyeTItPnByZXY7CjE0NDc0OiAKMTQ0NzQ6ICBsaXN0X2RlbChlbnRyeTIp OwoxNDQ3NDogIGxpc3RfcmVwbGFjZShlbnRyeTEsIGVudHJ5Mik7CjE0NDc0OiAgaWYgKHBvcyA9 PSBlbnRyeTEpCjE0NDc0OiAgIHBvcyA9IGVudHJ5MjsKMTQ0NzQ6ICBsaXN0X2FkZChlbnRyeTEs IHBvcyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBsaXN0X2RlbF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQoxNDQ3NDog ewoxNDQ3NDogIF9fbGlzdF9kZWxfZW50cnkoZW50cnkpOwoxNDQ3NDogIElOSVRfTElTVF9IRUFE KGVudHJ5KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9tb3ZlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHN0 cnVjdCBsaXN0X2hlYWQgKmhlYWQpCjE0NDc0OiB7CjE0NDc0OiAgX19saXN0X2RlbF9lbnRyeShs aXN0KTsKMTQ0NzQ6ICBsaXN0X2FkZChsaXN0LCBoZWFkKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9tb3Zl X3RhaWwoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgKmhlYWQpCjE0NDc0OiB7CjE0NDc0OiAgX19saXN0X2RlbF9lbnRyeShsaXN0KTsKMTQ0NzQ6 ICBsaXN0X2FkZF90YWlsKGxpc3QsIGhlYWQpOwoxNDQ3NDogfQoxNDQ3NDogIyAyNDAgIi4vaW5j bHVkZS9saW51eC9saXN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxpc3RfYnVsa19tb3ZlX3RhaWwoc3RydWN0 IGxpc3RfaGVhZCAqaGVhZCwKMTQ0NzQ6ICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqZmly c3QsCjE0NDc0OiAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmxhc3QpCjE0NDc0OiB7CjE0 NDc0OiAgZmlyc3QtPnByZXYtPm5leHQgPSBsYXN0LT5uZXh0OwoxNDQ3NDogIGxhc3QtPm5leHQt PnByZXYgPSBmaXJzdC0+cHJldjsKMTQ0NzQ6IAoxNDQ3NDogIGhlYWQtPnByZXYtPm5leHQgPSBm aXJzdDsKMTQ0NzQ6ICBmaXJzdC0+cHJldiA9IGhlYWQtPnByZXY7CjE0NDc0OiAKMTQ0NzQ6ICBs YXN0LT5uZXh0ID0gaGVhZDsKMTQ0NzQ6ICBoZWFkLT5wcmV2ID0gbGFzdDsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBs aXN0X2lzX2ZpcnN0KGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCjE0NDc0OiAgICAgIGNv bnN0IHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGxpc3Qt PnByZXYgPT0gaGVhZDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBsaXN0X2lzX2xhc3QoY29uc3Qgc3RydWN0IGxpc3Rf aGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICBjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBsaXN0LT5uZXh0ID09IGhlYWQ7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGxpc3RfZW1wdHkoY29u c3Qgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdW5p b24geyB0eXBlb2YoaGVhZC0+bmV4dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEp IF9fcmVhZF9vbmNlX3NpemUoJihoZWFkLT5uZXh0KSwgX191Ll9fYywgc2l6ZW9mKGhlYWQtPm5l eHQpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihoZWFkLT5uZXh0KSwgX191Ll9f Yywgc2l6ZW9mKGhlYWQtPm5leHQpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KSA9 PSBoZWFkOwoxNDQ3NDogfQoxNDQ3NDogIyAyOTggIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgbGlzdF9lbXB0eV9jYXJlZnVsKGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQp CjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCAqbmV4dCA9IGhlYWQtPm5leHQ7CjE0 NDc0OiAgcmV0dXJuIChuZXh0ID09IGhlYWQpICYmIChuZXh0ID09IGhlYWQtPnByZXYpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg bGlzdF9yb3RhdGVfbGVmdChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoxNDQ3NDogewoxNDQ3NDog IHN0cnVjdCBsaXN0X2hlYWQgKmZpcnN0OwoxNDQ3NDogCjE0NDc0OiAgaWYgKCFsaXN0X2VtcHR5 KGhlYWQpKSB7CjE0NDc0OiAgIGZpcnN0ID0gaGVhZC0+bmV4dDsKMTQ0NzQ6ICAgbGlzdF9tb3Zl X3RhaWwoZmlyc3QsIGhlYWQpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzI1ICIuL2lu Y2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3JvdGF0ZV90b19mcm9udChzdHJ1 Y3QgbGlzdF9oZWFkICpsaXN0LAoxNDQ3NDogICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQox NDQ3NDogewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBs aXN0X21vdmVfdGFpbChoZWFkLCBsaXN0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgbGlzdF9pc19zaW5ndWxhcihjb25zdCBzdHJ1 Y3QgbGlzdF9oZWFkICpoZWFkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhbGlzdF9lbXB0eSho ZWFkKSAmJiAoaGVhZC0+bmV4dCA9PSBoZWFkLT5wcmV2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBfX2xpc3RfY3V0X3Bvc2l0aW9uKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCjE0NDc0 OiAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsIHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQoxNDQ3 NDogewoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgKm5ld19maXJzdCA9IGVudHJ5LT5uZXh0Owox NDQ3NDogIGxpc3QtPm5leHQgPSBoZWFkLT5uZXh0OwoxNDQ3NDogIGxpc3QtPm5leHQtPnByZXYg PSBsaXN0OwoxNDQ3NDogIGxpc3QtPnByZXYgPSBlbnRyeTsKMTQ0NzQ6ICBlbnRyeS0+bmV4dCA9 IGxpc3Q7CjE0NDc0OiAgaGVhZC0+bmV4dCA9IG5ld19maXJzdDsKMTQ0NzQ6ICBuZXdfZmlyc3Qt PnByZXYgPSBoZWFkOwoxNDQ3NDogfQoxNDQ3NDogIyAzNzEgIi4vaW5jbHVkZS9saW51eC9saXN0 LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGxpc3RfY3V0X3Bvc2l0aW9uKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3Qs CjE0NDc0OiAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsIHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5 KQoxNDQ3NDogewoxNDQ3NDogIGlmIChsaXN0X2VtcHR5KGhlYWQpKQoxNDQ3NDogICByZXR1cm47 CjE0NDc0OiAgaWYgKGxpc3RfaXNfc2luZ3VsYXIoaGVhZCkgJiYKMTQ0NzQ6ICAgKGhlYWQtPm5l eHQgIT0gZW50cnkgJiYgaGVhZCAhPSBlbnRyeSkpCjE0NDc0OiAgIHJldHVybjsKMTQ0NzQ6ICBp ZiAoZW50cnkgPT0gaGVhZCkKMTQ0NzQ6ICAgSU5JVF9MSVNUX0hFQUQobGlzdCk7CjE0NDc0OiAg ZWxzZQoxNDQ3NDogICBfX2xpc3RfY3V0X3Bvc2l0aW9uKGxpc3QsIGhlYWQsIGVudHJ5KTsKMTQ0 NzQ6IH0KMTQ0NzQ6ICMgMzk5ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBs aXN0X2N1dF9iZWZvcmUoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICAgICBzdHJ1 Y3QgbGlzdF9oZWFkICpoZWFkLAoxNDQ3NDogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5 KQoxNDQ3NDogewoxNDQ3NDogIGlmIChoZWFkLT5uZXh0ID09IGVudHJ5KSB7CjE0NDc0OiAgIElO SVRfTElTVF9IRUFEKGxpc3QpOwoxNDQ3NDogICByZXR1cm47CjE0NDc0OiAgfQoxNDQ3NDogIGxp c3QtPm5leHQgPSBoZWFkLT5uZXh0OwoxNDQ3NDogIGxpc3QtPm5leHQtPnByZXYgPSBsaXN0Owox NDQ3NDogIGxpc3QtPnByZXYgPSBlbnRyeS0+cHJldjsKMTQ0NzQ6ICBsaXN0LT5wcmV2LT5uZXh0 ID0gbGlzdDsKMTQ0NzQ6ICBoZWFkLT5uZXh0ID0gZW50cnk7CjE0NDc0OiAgZW50cnktPnByZXYg PSBoZWFkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbGlzdF9zcGxpY2UoY29uc3Qg c3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICAgc3RydWN0IGxpc3RfaGVhZCAqcHJl diwKMTQ0NzQ6ICAgICAgc3RydWN0IGxpc3RfaGVhZCAqbmV4dCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBz dHJ1Y3QgbGlzdF9oZWFkICpmaXJzdCA9IGxpc3QtPm5leHQ7CjE0NDc0OiAgc3RydWN0IGxpc3Rf aGVhZCAqbGFzdCA9IGxpc3QtPnByZXY7CjE0NDc0OiAKMTQ0NzQ6ICBmaXJzdC0+cHJldiA9IHBy ZXY7CjE0NDc0OiAgcHJldi0+bmV4dCA9IGZpcnN0OwoxNDQ3NDogCjE0NDc0OiAgbGFzdC0+bmV4 dCA9IG5leHQ7CjE0NDc0OiAgbmV4dC0+cHJldiA9IGxhc3Q7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxpc3Rfc3Bs aWNlKGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCjE0NDc0OiAgICAgc3RydWN0IGxpc3Rf aGVhZCAqaGVhZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoIWxpc3RfZW1wdHkobGlzdCkpCjE0NDc0 OiAgIF9fbGlzdF9zcGxpY2UobGlzdCwgaGVhZCwgaGVhZC0+bmV4dCk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxp c3Rfc3BsaWNlX3RhaWwoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICBzdHJ1Y3Qg bGlzdF9oZWFkICpoZWFkKQoxNDQ3NDogewoxNDQ3NDogIGlmICghbGlzdF9lbXB0eShsaXN0KSkK MTQ0NzQ6ICAgX19saXN0X3NwbGljZShsaXN0LCBoZWFkLT5wcmV2LCBoZWFkKTsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgNDYwICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3Nw bGljZV9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCjE0NDc0OiAgICAgICAgIHN0cnVjdCBs aXN0X2hlYWQgKmhlYWQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKCFsaXN0X2VtcHR5KGxpc3QpKSB7 CjE0NDc0OiAgIF9fbGlzdF9zcGxpY2UobGlzdCwgaGVhZCwgaGVhZC0+bmV4dCk7CjE0NDc0OiAg IElOSVRfTElTVF9IRUFEKGxpc3QpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDc3ICIu L2luY2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3NwbGljZV90YWlsX2luaXQo c3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhl YWQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKCFsaXN0X2VtcHR5KGxpc3QpKSB7CjE0NDc0OiAgIF9f bGlzdF9zcGxpY2UobGlzdCwgaGVhZC0+cHJldiwgaGVhZCk7CjE0NDc0OiAgIElOSVRfTElTVF9I RUFEKGxpc3QpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzY1ICIuL2luY2x1ZGUvbGlu dXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBJTklUX0hMSVNUX05PREUoc3RydWN0IGhsaXN0X25vZGUg KmgpCjE0NDc0OiB7CjE0NDc0OiAgaC0+bmV4dCA9ICgodm9pZCAqKTApOwoxNDQ3NDogIGgtPnBw cmV2ID0gKCh2b2lkICopMCk7CjE0NDc0OiB9CjE0NDc0OiAjIDc3OSAiLi9pbmNsdWRlL2xpbnV4 L2xpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBobGlzdF91bmhhc2hlZChjb25zdCBzdHJ1Y3QgaGxpc3Rfbm9k ZSAqaCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gIWgtPnBwcmV2OwoxNDQ3NDogfQoxNDQ3NDog IyA3OTIgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaGxpc3RfdW5oYXNoZWRf bG9ja2xlc3MoY29uc3Qgc3RydWN0IGhsaXN0X25vZGUgKmgpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuICEoeyB1bmlvbiB7IHR5cGVvZihoLT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihoLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZiho LT5wcHJldikpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKGgtPnBwcmV2KSwgX191 Ll9fYywgc2l6ZW9mKGgtPnBwcmV2KSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IGhsaXN0X2VtcHR5KGNvbnN0IHN0cnVjdCBobGlzdF9oZWFkICpoKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiAhKHsgdW5pb24geyB0eXBlb2YoaC0+Zmlyc3QpIF9fdmFsOyBjaGFyIF9fY1sx XTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoaC0+Zmlyc3QpLCBfX3UuX19jLCBz aXplb2YoaC0+Zmlyc3QpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihoLT5maXJz dCksIF9fdS5fX2MsIHNpemVvZihoLT5maXJzdCkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192 YWw7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9faGxpc3RfZGVsKHN0cnVjdCBo bGlzdF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlICpuZXh0ID0g bi0+bmV4dDsKMTQ0NzQ6ICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqKnBwcmV2ID0gbi0+cHByZXY7CjE0 NDc0OiAKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVvZigqcHByZXYpIF9fdmFsOyBjaGFyIF9fY1sx XTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCpwcHJldikpIChuZXh0KSB9OyBfX3dyaXRl X29uY2Vfc2l6ZSgmKCpwcHJldiksIF9fdS5fX2MsIHNpemVvZigqcHByZXYpKTsgX191Ll9fdmFs OyB9KTsKMTQ0NzQ6ICBpZiAobmV4dCkKMTQ0NzQ6ICAgKHsgdW5pb24geyB0eXBlb2YobmV4dC0+ cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG5l eHQtPnBwcmV2KSkgKHBwcmV2KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKG5leHQtPnBwcmV2KSwg X191Ll9fYywgc2l6ZW9mKG5leHQtPnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0 NDc0OiAjIDgyMyAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3RfZGVs KHN0cnVjdCBobGlzdF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIF9faGxpc3RfZGVsKG4pOwox NDQ3NDogIG4tPm5leHQgPSAoKHZvaWQgKikgMHgxMDAgKyAoMHhkZWFkMDAwMDAwMDAwMDAwVUwp KTsKMTQ0NzQ6ICBuLT5wcHJldiA9ICgodm9pZCAqKSAweDEyMiArICgweGRlYWQwMDAwMDAwMDAw MDBVTCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2RlbF9pbml0KHN0cnVjdCBobGlzdF9u b2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIGlmICghaGxpc3RfdW5oYXNoZWQobikpIHsKMTQ0NzQ6 ICAgX19obGlzdF9kZWwobik7CjE0NDc0OiAgIElOSVRfSExJU1RfTk9ERShuKTsKMTQ0NzQ6ICB9 CjE0NDc0OiB9CjE0NDc0OiAjIDg1MiAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgaGxpc3RfYWRkX2hlYWQoc3RydWN0IGhsaXN0X25vZGUgKm4sIHN0cnVjdCBobGlzdF9oZWFk ICpoKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlICpmaXJzdCA9IGgtPmZpcnN0 OwoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKG4tPm5leHQpIF9fdmFsOyBjaGFyIF9fY1sxXTsg fSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4tPm5leHQpKSAoZmlyc3QpIH07IF9fd3JpdGVf b25jZV9zaXplKCYobi0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihuLT5uZXh0KSk7IF9fdS5fX3Zh bDsgfSk7CjE0NDc0OiAgaWYgKGZpcnN0KQoxNDQ3NDogICAoeyB1bmlvbiB7IHR5cGVvZihmaXJz dC0+cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9m KGZpcnN0LT5wcHJldikpICgmbi0+bmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihmaXJzdC0+ cHByZXYpLCBfX3UuX19jLCBzaXplb2YoZmlyc3QtPnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7CjE0 NDc0OiAgKHsgdW5pb24geyB0eXBlb2YoaC0+Zmlyc3QpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBf X3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKGgtPmZpcnN0KSkgKG4pIH07IF9fd3JpdGVfb25jZV9z aXplKCYoaC0+Zmlyc3QpLCBfX3UuX19jLCBzaXplb2YoaC0+Zmlyc3QpKTsgX191Ll9fdmFsOyB9 KTsKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVvZihuLT5wcHJldikgX192YWw7IGNoYXIgX19jWzFd OyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+cHByZXYpKSAoJmgtPmZpcnN0KSB9OyBf X3dyaXRlX29uY2Vfc2l6ZSgmKG4tPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG4tPnBwcmV2KSk7 IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2FkZF9iZWZvcmUoc3RydWN0IGhsaXN0 X25vZGUgKm4sCjE0NDc0OiAgICAgICAgIHN0cnVjdCBobGlzdF9ub2RlICpuZXh0KQoxNDQ3NDog ewoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKG4tPnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5wcHJldikpIChuZXh0LT5wcHJldikgfTsg X193cml0ZV9vbmNlX3NpemUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihuLT5wcHJldikp OyBfX3UuX192YWw7IH0pOwoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKG4tPm5leHQpIF9fdmFs OyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4tPm5leHQpKSAobmV4 dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5uZXh0KSwgX191Ll9fYywgc2l6ZW9mKG4tPm5l eHQpKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVvZihuZXh0LT5wcHJl dikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YobmV4dC0+ cHByZXYpKSAoJm4tPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobmV4dC0+cHByZXYpLCBf X3UuX19jLCBzaXplb2YobmV4dC0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICAoeyB1 bmlvbiB7IHR5cGVvZigqKG4tPnBwcmV2KSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsg Ll9fdmFsID0gKCB0eXBlb2YoKihuLT5wcHJldikpKSAobikgfTsgX193cml0ZV9vbmNlX3NpemUo JigqKG4tPnBwcmV2KSksIF9fdS5fX2MsIHNpemVvZigqKG4tPnBwcmV2KSkpOyBfX3UuX192YWw7 IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9hZGRfYmVoaW5kKHN0cnVjdCBobGlzdF9ub2RlICpuLAox NDQ3NDogICAgICAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqcHJldikKMTQ0NzQ6IHsKMTQ0NzQ6ICAo eyB1bmlvbiB7IHR5cGVvZihuLT5uZXh0KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAu X192YWwgPSAoIHR5cGVvZihuLT5uZXh0KSkgKHByZXYtPm5leHQpIH07IF9fd3JpdGVfb25jZV9z aXplKCYobi0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihuLT5uZXh0KSk7IF9fdS5fX3ZhbDsgfSk7 CjE0NDc0OiAgKHsgdW5pb24geyB0eXBlb2YocHJldi0+bmV4dCkgX192YWw7IGNoYXIgX19jWzFd OyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YocHJldi0+bmV4dCkpIChuKSB9OyBfX3dyaXRl X29uY2Vfc2l6ZSgmKHByZXYtPm5leHQpLCBfX3UuX19jLCBzaXplb2YocHJldi0+bmV4dCkpOyBf X3UuX192YWw7IH0pOwoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKG4tPnBwcmV2KSBfX3ZhbDsg Y2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5wcHJldikpICgmcHJl di0+bmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNpemVv ZihuLT5wcHJldikpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDogCjE0NDc0OiAgaWYgKG4tPm5leHQp CjE0NDc0OiAgICh7IHVuaW9uIHsgdHlwZW9mKG4tPm5leHQtPnBwcmV2KSBfX3ZhbDsgY2hhciBf X2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5uZXh0LT5wcHJldikpICgmbi0+ bmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5uZXh0LT5wcHJldiksIF9fdS5fX2MsIHNp emVvZihuLT5uZXh0LT5wcHJldikpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDogfQoxNDQ3NDogIyA5 MDAgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2FkZF9mYWtlKHN0 cnVjdCBobGlzdF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIG4tPnBwcmV2ID0gJm4tPm5leHQ7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBobGlzdF9mYWtlKHN0cnVjdCBobGlzdF9ub2RlICpoKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBoLT5wcHJldiA9PSAmaC0+bmV4dDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgOTIyICIuL2luY2x1 ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogaGxpc3RfaXNfc2luZ3VsYXJfbm9k ZShzdHJ1Y3QgaGxpc3Rfbm9kZSAqbiwgc3RydWN0IGhsaXN0X2hlYWQgKmgpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICFuLT5uZXh0ICYmIG4tPnBwcmV2ID09ICZoLT5maXJzdDsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgOTM2ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9t b3ZlX2xpc3Qoc3RydWN0IGhsaXN0X2hlYWQgKm9sZCwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3QgaGxp c3RfaGVhZCAqbmV3KQoxNDQ3NDogewoxNDQ3NDogIG5ldy0+Zmlyc3QgPSBvbGQtPmZpcnN0Owox NDQ3NDogIGlmIChuZXctPmZpcnN0KQoxNDQ3NDogICBuZXctPmZpcnN0LT5wcHJldiA9ICZuZXct PmZpcnN0OwoxNDQ3NDogIG9sZC0+Zmlyc3QgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMTIgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiIDIKMTQ0NzQ6ICMgNzggIi4vaW5jbHVk ZS9saW51eC9wcmVlbXB0LmgiCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJl ZW1wdC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BlcmNwdS5oIiAxCjE0NDc0OiAjIDg4ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3BlcmNwdS5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgX19iYWRfcGVy Y3B1X3NpemUodm9pZCk7CjE0NDc0OiAjIDUyNCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZXJj cHUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCB4ODZf dGhpc19jcHVfY29uc3RhbnRfdGVzdF9iaXQodW5zaWduZWQgaW50IG5yLAoxNDQ3NDogICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nICphID0KMTQ0NzQ6ICAgKHVuc2lnbmVkIGxvbmcgKilhZGRyICsg bnIgLyA2NDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuICgoMVVMIDw8IChuciAlIDY0 KSkgJiAoeyB0eXBlb2YoKmEpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoKmEpKSB7IGNhc2Ug MTogYXNtICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3Jl dF9fKSA6ICJtIiAoKmEpKTsgYnJlYWs7IGNhc2UgMjogYXNtICgibW92IiAidyAiIiUlIiJncyIi OiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoKmEpKTsgYnJlYWs7IGNh c2UgNDogYXNtICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZv X3JldF9fKSA6ICJtIiAoKmEpKTsgYnJlYWs7IGNhc2UgODogYXNtICgibW92IiAicSAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoKmEpKTsgYnJlYWs7 IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KSkgIT0gMDsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4ODZfdGhp c19jcHVfdmFyaWFibGVfdGVzdF9iaXQoaW50IG5yLAoxNDQ3NDogICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBib29sIG9s ZGJpdDsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiYnRsICIiJSUiImdzIiI6IiAiJSIg IjIiIiwlMSIKMTQ0NzQ6ICAgICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgImMiICIq L1xuIgoxNDQ3NDogICAgOiAiPUBjYyIgImMiIChvbGRiaXQpCjE0NDc0OiAgICA6ICJtIiAoKih1 bnNpZ25lZCBsb25nICopYWRkciksICJJciIgKG5yKSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4g b2xkYml0OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9wZXJjcHUu aCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMQoxNDQ3NDogIyA3ICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvcGVyY3B1LmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1kZWZz LmgiIDEKMTQ0NzQ6ICMgMzA4ICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LWRlZnMuaCIKMTQ0NzQ6 IGV4dGVybiB2b2lkIF9fYmFkX3NpemVfY2FsbF9wYXJhbWV0ZXIodm9pZCk7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX190aGlzX2NwdV9wcmVlbXB0X2NoZWNr KGNvbnN0IGNoYXIgKm9wKSB7IH0KMTQ0NzQ6ICMgOCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3Bl cmNwdS5oIiAyCjE0NDc0OiAjIDE5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcGVyY3B1LmgiCjE0 NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBfX3Blcl9jcHVfb2Zmc2V0WzhdOwoxNDQ3NDogIyA0 OCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3BlcmNwdS5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0 dXBfcGVyX2NwdV9hcmVhcyh2b2lkKTsKMTQ0NzQ6ICMgNTU3ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL3BlcmNwdS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRl X18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIuLnJlYWRfbW9zdGx5IikpKSBfX3R5cGVvZl9f KHVuc2lnbmVkIGxvbmcpIHRoaXNfY3B1X29mZjsKMTQ0NzQ6ICMgNyAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9wcmVlbXB0LmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3RocmVhZF9p bmZvLmgiIDEKMTQ0NzQ6ICMgMTIgIi4vaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oIgoxNDQ3 NDogIyAxICIuL2luY2x1ZGUvbGludXgvYnVnLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2J1Zy5oIiAxCjE0NDc0 OiAjIDgzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2J1Zy5oIgoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvYXNtLWdlbmVyaWMvYnVnLmgiIDEKMTQ0NzQ6ICMgMjQgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9idWcuaCIKMTQ0NzQ6IHN0cnVjdCBidWdfZW50cnkgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIHNpZ25lZCBpbnQgYnVnX2FkZHJfZGlzcDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc2lnbmVkIGludCBmaWxlX2Rpc3A7CjE0NDc0OiAK MTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBsaW5lOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgc2hv cnQgZmxhZ3M7CjE0NDc0OiB9OwoxNDQ3NDogIyA4OSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2J1 Zy5oIgoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAxLCAy KSkpIHZvaWQgX193YXJuX3ByaW50ayhjb25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiAjIDEw NSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2J1Zy5oIgoxNDQ3NDogc3RydWN0IHdhcm5fYXJnczsK MTQ0NzQ6IHN0cnVjdCBwdF9yZWdzOwoxNDQ3NDogCjE0NDc0OiB2b2lkIF9fd2Fybihjb25zdCBj aGFyICpmaWxlLCBpbnQgbGluZSwgdm9pZCAqY2FsbGVyLCB1bnNpZ25lZCB0YWludCwKMTQ0NzQ6 ICAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHN0cnVjdCB3YXJuX2FyZ3MgKmFyZ3MpOwoxNDQ3 NDogIyA4NCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9idWcuaCIgMgoxNDQ3NDogIyA2ICIuL2lu Y2x1ZGUvbGludXgvYnVnLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0g YnVnX3RyYXBfdHlwZSB7CjE0NDc0OiAgQlVHX1RSQVBfVFlQRV9OT05FID0gMCwKMTQ0NzQ6ICBC VUdfVFJBUF9UWVBFX1dBUk4gPSAxLAoxNDQ3NDogIEJVR19UUkFQX1RZUEVfQlVHID0gMiwKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwdF9yZWdzOwoxNDQ3NDogIyAzNCAiLi9pbmNs dWRlL2xpbnV4L2J1Zy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlzX3dhcm5pbmdfYnVnKGNvbnN0IHN0cnVjdCBi dWdfZW50cnkgKmJ1ZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYnVnLT5mbGFncyAmICgxIDw8 IDApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYnVnX2VudHJ5ICpmaW5kX2J1Zyh1 bnNpZ25lZCBsb25nIGJ1Z2FkZHIpOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGJ1Z190cmFwX3R5cGUg cmVwb3J0X2J1Zyh1bnNpZ25lZCBsb25nIGJ1Z19hZGRyLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogaW50IGlzX3ZhbGlkX2J1Z2FkZHIodW5zaWduZWQgbG9u ZyBhZGRyKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBnZW5lcmljX2J1Z19jbGVhcl9vbmNlKHZvaWQp OwoxNDQ3NDogIyA3MCAiLi9pbmNsdWRlL2xpbnV4L2J1Zy5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGJvb2wgY2hlY2tfZGF0YV9jb3JydXB0aW9uKGJv b2wgdikgeyByZXR1cm4gdjsgfQoxNDQ3NDogIyAxMyAiLi9pbmNsdWRlL2xpbnV4L3RocmVhZF9p bmZvLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3Jlc3RhcnRfYmxvY2suaCIgMQox NDQ3NDogIyAxMCAiLi9pbmNsdWRlL2xpbnV4L3Jlc3RhcnRfYmxvY2suaCIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3RpbWU2NC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L21hdGg2NC5oIiAxCjE0NDc0OiAjIDI0ICIu L2luY2x1ZGUvbGludXgvbWF0aDY0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQgZGl2X3U2NF9yZW0odTY0IGRpdmlk ZW5kLCB1MzIgZGl2aXNvciwgdTMyICpyZW1haW5kZXIpCjE0NDc0OiB7CjE0NDc0OiAgKnJlbWFp bmRlciA9IGRpdmlkZW5kICUgZGl2aXNvcjsKMTQ0NzQ6ICByZXR1cm4gZGl2aWRlbmQgLyBkaXZp c29yOwoxNDQ3NDogfQoxNDQ3NDogIyAzOCAiLi9pbmNsdWRlL2xpbnV4L21hdGg2NC5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgczY0IGRpdl9zNjRfcmVtKHM2NCBkaXZpZGVuZCwgczMyIGRpdmlzb3IsIHMzMiAqcmVtYWlu ZGVyKQoxNDQ3NDogewoxNDQ3NDogICpyZW1haW5kZXIgPSBkaXZpZGVuZCAlIGRpdmlzb3I7CjE0 NDc0OiAgcmV0dXJuIGRpdmlkZW5kIC8gZGl2aXNvcjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTIgIi4v aW5jbHVkZS9saW51eC9tYXRoNjQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBkaXY2NF91NjRfcmVtKHU2NCBkaXZp ZGVuZCwgdTY0IGRpdmlzb3IsIHU2NCAqcmVtYWluZGVyKQoxNDQ3NDogewoxNDQ3NDogICpyZW1h aW5kZXIgPSBkaXZpZGVuZCAlIGRpdmlzb3I7CjE0NDc0OiAgcmV0dXJuIGRpdmlkZW5kIC8gZGl2 aXNvcjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjUgIi4vaW5jbHVkZS9saW51eC9tYXRoNjQuaCIKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHU2NCBkaXY2NF91NjQodTY0IGRpdmlkZW5kLCB1NjQgZGl2aXNvcikKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gZGl2aWRlbmQgLyBkaXZpc29yOwoxNDQ3NDogfQoxNDQ3NDogIyA3NyAiLi9p bmNsdWRlL2xpbnV4L21hdGg2NC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IGRpdjY0X3M2NChzNjQgZGl2aWRlbmQs IHM2NCBkaXZpc29yKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkaXZpZGVuZCAvIGRpdmlzb3I7 CjE0NDc0OiB9CjE0NDc0OiAjIDEyMyAiLi9pbmNsdWRlL2xpbnV4L21hdGg2NC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dTY0IGRpdl91NjQodTY0IGRpdmlkZW5kLCB1MzIgZGl2aXNvcikKMTQ0NzQ6IHsKMTQ0NzQ6ICB1 MzIgcmVtYWluZGVyOwoxNDQ3NDogIHJldHVybiBkaXZfdTY0X3JlbShkaXZpZGVuZCwgZGl2aXNv ciwgJnJlbWFpbmRlcik7CjE0NDc0OiB9CjE0NDc0OiAjIDEzNiAiLi9pbmNsdWRlL2xpbnV4L21h dGg2NC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgczY0IGRpdl9zNjQoczY0IGRpdmlkZW5kLCBzMzIgZGl2aXNvcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBzMzIgcmVtYWluZGVyOwoxNDQ3NDogIHJldHVybiBkaXZfczY0X3JlbShk aXZpZGVuZCwgZGl2aXNvciwgJnJlbWFpbmRlcik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogdTMyIGl0ZXJfZGl2X3U2NF9yZW0odTY0IGRpdmlkZW5kLCB1MzIgZGl2aXNvciwgdTY0 ICpyZW1haW5kZXIpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHUzMgoxNDQ3NDogX19pdGVyX2Rpdl91NjRfcmVtKHU2NCBkaXZpZGVuZCwgdTMyIGRp dmlzb3IsIHU2NCAqcmVtYWluZGVyKQoxNDQ3NDogewoxNDQ3NDogIHUzMiByZXQgPSAwOwoxNDQ3 NDogCjE0NDc0OiAgd2hpbGUgKGRpdmlkZW5kID49IGRpdmlzb3IpIHsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgIGFzbSgiIiA6ICIrcm0iKGRpdmlkZW5kKSk7CjE0NDc0OiAKMTQ0NzQ6ICAgZGl2 aWRlbmQgLT0gZGl2aXNvcjsKMTQ0NzQ6ICAgcmV0Kys7CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0 OiAgKnJlbWFpbmRlciA9IGRpdmlkZW5kOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHJldDsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQg bXVsX3UzMl91MzIodTMyIGEsIHUzMiBiKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodTY0KWEg KiBiOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHU2NCBtdWxfdTY0X3UzMl9zaHIodTY0IGEsIHUzMiBtdWwsIHVuc2lnbmVkIGludCBzaGlm dCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHU2NCkoKCh1bnNpZ25lZCBfX2ludDEyOClhICog bXVsKSA+PiBzaGlmdCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1 NjQgbXVsX3U2NF91NjRfc2hyKHU2NCBhLCB1NjQgbXVsLCB1bnNpZ25lZCBpbnQgc2hpZnQpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh1NjQpKCgodW5zaWduZWQgX19pbnQxMjgpYSAqIG11bCkg Pj4gc2hpZnQpOwoxNDQ3NDogfQoxNDQ3NDogIyA2ICIuL2luY2x1ZGUvbGludXgvdGltZTY0Lmgi IDIKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBfX3M2NCB0aW1lNjRfdDsKMTQ0NzQ6IHR5cGVkZWYg X191NjQgdGltZXU2NF90OwoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4 L3RpbWUuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvdGltZV90eXBlcy5oIiAxCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX19rZXJuZWxf dGltZXNwZWMgewoxNDQ3NDogIF9fa2VybmVsX3RpbWU2NF90IHR2X3NlYzsKMTQ0NzQ6ICBsb25n IGxvbmcgdHZfbnNlYzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBfX2tlcm5lbF9p dGltZXJzcGVjIHsKMTQ0NzQ6ICBzdHJ1Y3QgX19rZXJuZWxfdGltZXNwZWMgaXRfaW50ZXJ2YWw7 CjE0NDc0OiAgc3RydWN0IF9fa2VybmVsX3RpbWVzcGVjIGl0X3ZhbHVlOwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgMjUgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3RpbWVfdHlwZXMuaCIKMTQ0NzQ6IHN0cnVj dCBfX2tlcm5lbF9vbGRfdGltZXZhbCB7CjE0NDc0OiAgX19rZXJuZWxfbG9uZ190IHR2X3NlYzsK MTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3QgdHZfdXNlYzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IF9fa2VybmVsX29sZF90aW1lc3BlYyB7CjE0NDc0OiAgX19rZXJuZWxf b2xkX3RpbWVfdCB0dl9zZWM7CjE0NDc0OiAgbG9uZyB0dl9uc2VjOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IF9fa2VybmVsX29sZF9pdGltZXJ2YWwgewoxNDQ3NDogIHN0cnVjdCBf X2tlcm5lbF9vbGRfdGltZXZhbCBpdF9pbnRlcnZhbDsKMTQ0NzQ6ICBzdHJ1Y3QgX19rZXJuZWxf b2xkX3RpbWV2YWwgaXRfdmFsdWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX19r ZXJuZWxfc29ja190aW1ldmFsIHsKMTQ0NzQ6ICBfX3M2NCB0dl9zZWM7CjE0NDc0OiAgX19zNjQg dHZfdXNlYzsKMTQ0NzQ6IH07CjE0NDc0OiAjIDcgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3RpbWUu aCIgMgoxNDQ3NDogIyAzMyAiLi9pbmNsdWRlL3VhcGkvbGludXgvdGltZS5oIgoxNDQ3NDogc3Ry dWN0IHRpbWV6b25lIHsKMTQ0NzQ6ICBpbnQgdHpfbWludXRlc3dlc3Q7CjE0NDc0OiAgaW50IHR6 X2RzdHRpbWU7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMSAiLi9pbmNsdWRlL2xpbnV4L3RpbWU2NC5o IiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0aW1lc3BlYzY0IHsKMTQ0NzQ6ICB0aW1lNjRfdCB0 dl9zZWM7CjE0NDc0OiAgbG9uZyB0dl9uc2VjOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGl0aW1lcnNwZWM2NCB7CjE0NDc0OiAgc3RydWN0IHRpbWVzcGVjNjQgaXRfaW50ZXJ2YWw7 CjE0NDc0OiAgc3RydWN0IHRpbWVzcGVjNjQgaXRfdmFsdWU7CjE0NDc0OiB9OwoxNDQ3NDogIyA0 OSAiLi9pbmNsdWRlL2xpbnV4L3RpbWU2NC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHRpbWVzcGVjNjRfZXF1YWwo Y29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKmEsCjE0NDc0OiAgICAgICAgY29uc3Qgc3RydWN0IHRp bWVzcGVjNjQgKmIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChhLT50dl9zZWMgPT0gYi0+dHZf c2VjKSAmJiAoYS0+dHZfbnNlYyA9PSBiLT50dl9uc2VjKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0aW1lc3BlYzY0 X2NvbXBhcmUoY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKmxocywgY29uc3Qgc3RydWN0IHRpbWVz cGVjNjQgKnJocykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAobGhzLT50dl9zZWMgPCByaHMtPnR2X3Nl YykKMTQ0NzQ6ICAgcmV0dXJuIC0xOwoxNDQ3NDogIGlmIChsaHMtPnR2X3NlYyA+IHJocy0+dHZf c2VjKQoxNDQ3NDogICByZXR1cm4gMTsKMTQ0NzQ6ICByZXR1cm4gbGhzLT50dl9uc2VjIC0gcmhz LT50dl9uc2VjOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzZXRfbm9ybWFs aXplZF90aW1lc3BlYzY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cywgdGltZTY0X3Qgc2VjLCBzNjQg bnNlYyk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB0aW1lc3BlYzY0IHRpbWVzcGVjNjRfYWRkKHN0 cnVjdCB0aW1lc3BlYzY0IGxocywKMTQ0NzQ6ICAgICAgIHN0cnVjdCB0aW1lc3BlYzY0IHJocykK MTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgdGltZXNwZWM2NCB0c19kZWx0YTsKMTQ0NzQ6ICBzZXRf bm9ybWFsaXplZF90aW1lc3BlYzY0KCZ0c19kZWx0YSwgbGhzLnR2X3NlYyArIHJocy50dl9zZWMs CjE0NDc0OiAgICAgbGhzLnR2X25zZWMgKyByaHMudHZfbnNlYyk7CjE0NDc0OiAgcmV0dXJuIHRz X2RlbHRhOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBz dHJ1Y3QgdGltZXNwZWM2NCB0aW1lc3BlYzY0X3N1YihzdHJ1Y3QgdGltZXNwZWM2NCBsaHMsCjE0 NDc0OiAgICAgICBzdHJ1Y3QgdGltZXNwZWM2NCByaHMpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0 IHRpbWVzcGVjNjQgdHNfZGVsdGE7CjE0NDc0OiAgc2V0X25vcm1hbGl6ZWRfdGltZXNwZWM2NCgm dHNfZGVsdGEsIGxocy50dl9zZWMgLSByaHMudHZfc2VjLAoxNDQ3NDogICAgIGxocy50dl9uc2Vj IC0gcmhzLnR2X25zZWMpOwoxNDQ3NDogIHJldHVybiB0c19kZWx0YTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0aW1lc3BlYzY0X3ZhbGlkKGNv bnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cykKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIGlmICh0 cy0+dHZfc2VjIDwgMCkKMTQ0NzQ6ICAgcmV0dXJuIGZhbHNlOwoxNDQ3NDogCjE0NDc0OiAgaWYg KCh1bnNpZ25lZCBsb25nKXRzLT50dl9uc2VjID49IDEwMDAwMDAwMDBMKQoxNDQ3NDogICByZXR1 cm4gZmFsc2U7CjE0NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgdGltZXNwZWM2NF92YWxpZF9zdHJpY3QoY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzKQox NDQ3NDogewoxNDQ3NDogIGlmICghdGltZXNwZWM2NF92YWxpZCh0cykpCjE0NDc0OiAgIHJldHVy biBmYWxzZTsKMTQ0NzQ6IAoxNDQ3NDogIGlmICgodW5zaWduZWQgbG9uZyBsb25nKXRzLT50dl9z ZWMgPj0gKCgoczY0KX4oKHU2NCkxIDw8IDYzKSkgLyAxMDAwMDAwMDAwTCkpCjE0NDc0OiAgIHJl dHVybiBmYWxzZTsKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCB0aW1lc3BlYzY0X3ZhbGlkX3NldHRvZChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMp CjE0NDc0OiB7CjE0NDc0OiAgaWYgKCF0aW1lc3BlYzY0X3ZhbGlkKHRzKSkKMTQ0NzQ6ICAgcmV0 dXJuIGZhbHNlOwoxNDQ3NDogCjE0NDc0OiAgaWYgKCh1bnNpZ25lZCBsb25nIGxvbmcpdHMtPnR2 X3NlYyA+PSAoKCgoczY0KX4oKHU2NCkxIDw8IDYzKSkgLyAxMDAwMDAwMDAwTCkgLSAoMzBMTCAq IDM2NSAqIDI0ICozNjAwKSkpCjE0NDc0OiAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6ICByZXR1cm4g dHJ1ZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTMzICIuL2luY2x1ZGUvbGludXgvdGltZTY0LmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzNjQgdGltZXNwZWM2NF90b19ucyhjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgoczY0KSB0cy0+dHZfc2VjICogMTAwMDAwMDAwMEwpICsg dHMtPnR2X25zZWM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgdGltZXNwZWM2NCBuc190 b190aW1lc3BlYzY0KGNvbnN0IHM2NCBuc2VjKTsKMTQ0NzQ6ICMgMTU0ICIuL2luY2x1ZGUvbGlu dXgvdGltZTY0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgdGltZXNwZWM2NF9hZGRfbnMoc3RydWN0IHRpbWVzcGVjNjQgKmEsIHU2NCBucykKMTQ0NzQ6 IHsKMTQ0NzQ6ICBhLT50dl9zZWMgKz0gX19pdGVyX2Rpdl91NjRfcmVtKGEtPnR2X25zZWMgKyBu cywgMTAwMDAwMDAwMEwsICZucyk7CjE0NDc0OiAgYS0+dHZfbnNlYyA9IG5zOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1 Y3QgdGltZXNwZWM2NCB0aW1lc3BlYzY0X2FkZF9zYWZlKGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0 IGxocywKMTQ0NzQ6ICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0IHJocyk7CjE0NDc0OiAj IDExICIuL2luY2x1ZGUvbGludXgvcmVzdGFydF9ibG9jay5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCB0aW1lc3BlYzsKMTQ0NzQ6IHN0cnVjdCBvbGRfdGltZXNwZWMzMjsKMTQ0NzQ6IHN0cnVj dCBwb2xsZmQ7CjE0NDc0OiAKMTQ0NzQ6IGVudW0gdGltZXNwZWNfdHlwZSB7CjE0NDc0OiAgVFRf Tk9ORSA9IDAsCjE0NDc0OiAgVFRfTkFUSVZFID0gMSwKMTQ0NzQ6ICBUVF9DT01QQVQgPSAyLAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJl c3RhcnRfYmxvY2sgewoxNDQ3NDogIGxvbmcgKCpmbikoc3RydWN0IHJlc3RhcnRfYmxvY2sgKik7 CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogCjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAgICB1MzIg KnVhZGRyOwoxNDQ3NDogICAgdTMyIHZhbDsKMTQ0NzQ6ICAgIHUzMiBmbGFnczsKMTQ0NzQ6ICAg IHUzMiBiaXRzZXQ7CjE0NDc0OiAgICB1NjQgdGltZTsKMTQ0NzQ6ICAgIHUzMiAqdWFkZHIyOwox NDQ3NDogICB9IGZ1dGV4OwoxNDQ3NDogCjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAgICBjbG9j a2lkX3QgY2xvY2tpZDsKMTQ0NzQ6ICAgIGVudW0gdGltZXNwZWNfdHlwZSB0eXBlOwoxNDQ3NDog ICAgdW5pb24gewoxNDQ3NDogICAgIHN0cnVjdCBfX2tlcm5lbF90aW1lc3BlYyAqcm10cDsKMTQ0 NzQ6ICAgICBzdHJ1Y3Qgb2xkX3RpbWVzcGVjMzIgKmNvbXBhdF9ybXRwOwoxNDQ3NDogICAgfTsK MTQ0NzQ6ICAgIHU2NCBleHBpcmVzOwoxNDQ3NDogICB9IG5hbm9zbGVlcDsKMTQ0NzQ6IAoxNDQ3 NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgc3RydWN0IHBvbGxmZCAqdWZkczsKMTQ0NzQ6ICAgIGlu dCBuZmRzOwoxNDQ3NDogICAgaW50IGhhc190aW1lb3V0OwoxNDQ3NDogICAgdW5zaWduZWQgbG9u ZyB0dl9zZWM7CjE0NDc0OiAgICB1bnNpZ25lZCBsb25nIHR2X25zZWM7CjE0NDc0OiAgIH0gcG9s bDsKMTQ0NzQ6ICB9OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGxvbmcgZG9fbm9f cmVzdGFydF9zeXNjYWxsKHN0cnVjdCByZXN0YXJ0X2Jsb2NrICpwYXJtKTsKMTQ0NzQ6ICMgMTQg Ii4vaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9jdXJyZW50LmgiIDEKMTQ0NzQ6ICMgOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9jdXJyZW50LmgiCjE0NDc0OiBzdHJ1Y3QgdGFza19zdHJ1Y3Q7CjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiIikpKSBfX3R5cGVv Zl9fKHN0cnVjdCB0YXNrX3N0cnVjdCAqKSBjdXJyZW50X3Rhc2s7CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RydWN0IHRhc2tfc3RydWN0ICpnZXRf Y3VycmVudCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyB0eXBlb2YoY3VycmVudF90 YXNrKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGN1cnJlbnRfdGFzaykpIHsgY2FzZSAxOiBh c20oIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiUDEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18p IDogInAiICgmKGN1cnJlbnRfdGFzaykpKTsgYnJlYWs7IGNhc2UgMjogYXNtKCJtb3YiICJ3ICIi JSUiImdzIiI6IiAiJSIgIlAxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJwIiAoJihjdXJy ZW50X3Rhc2spKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSgibW92IiAibCAiIiUlIiJncyIiOiIgIiUi ICJQMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAicCIgKCYoY3VycmVudF90YXNrKSkpOyBi cmVhazsgY2FzZSA4OiBhc20oIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiUDEiIiwlMCIgOiAi PXIiIChwZm9fcmV0X18pIDogInAiICgmKGN1cnJlbnRfdGFzaykpKTsgYnJlYWs7IGRlZmF1bHQ6 IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg MjIgIi4vaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oIiAyCjE0NDc0OiAjIDMxICIuL2luY2x1 ZGUvbGludXgvdGhyZWFkX2luZm8uaCIKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIEJBRF9TVEFDSyA9 IC0xLAoxNDQ3NDogIE5PVF9TVEFDSyA9IDAsCjE0NDc0OiAgR09PRF9GUkFNRSwKMTQ0NzQ6ICBH T09EX1NUQUNLLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3RocmVhZF9pbmZvLmgiIDEKMTQ0NzQ6ICMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vdGhyZWFkX2luZm8uaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYWdl LmgiIDEKMTQ0NzQ6ICMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZS5oIgoxNDQ3NDog IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjQuaCIgMQoxNDQ3NDogIyAxMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wYWdlXzY0LmgiCjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9u ZyBtYXhfcGZuOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGh5c19iYXNlOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBwYWdlX29mZnNldF9iYXNlOwoxNDQ3NDogZXh0 ZXJuIHVuc2lnbmVkIGxvbmcgdm1hbGxvY19iYXNlOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxv bmcgdm1lbW1hcF9iYXNlOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF9fcGh5c19hZGRy X25vZGVidWcodW5zaWduZWQgbG9uZyB4KQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg eSA9IHggLSAoMHhmZmZmZmZmZjgwMDAwMDAwVUwpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB4 ID0geSArICgoeCA+IHkpID8gcGh5c19iYXNlIDogKCgweGZmZmZmZmZmODAwMDAwMDBVTCkgLSAo KHVuc2lnbmVkIGxvbmcpcGFnZV9vZmZzZXRfYmFzZSkpKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVy biB4OwoxNDQ3NDogfQoxNDQ3NDogIyA0MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYWdlXzY0 LmgiCjE0NDc0OiB2b2lkIGNsZWFyX3BhZ2Vfb3JpZyh2b2lkICpwYWdlKTsKMTQ0NzQ6IHZvaWQg Y2xlYXJfcGFnZV9yZXAodm9pZCAqcGFnZSk7CjE0NDc0OiB2b2lkIGNsZWFyX3BhZ2VfZXJtcyh2 b2lkICpwYWdlKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGVhcl9wYWdlKHZvaWQgKnBhZ2UpCjE0 NDc0OiB7CjE0NDc0OiAgYXNtIF9faW5saW5lIHZvbGF0aWxlICgiIyBBTFQ6IG9sZGluc3RyMlxu IiAiNjYxOlxuXHQiICJjYWxsICVQW29sZF0iICJcbjY2MjpcbiIgIiMgQUxUOiBwYWRkaW5nMlxu IiAiLnNraXAgLSgoIiAiKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCgoIiAiNjY1 IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSBeICgiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICIpKSAm IC0oLSgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSA8ICgiICI2NjUiIjIiImYtIiI2NjQi IjIiImYiICIpKSkpKSIgIiAtICgiICI2NjJiLTY2MWIiICIpKSA+IDApICogIiAiKCIgIigoIiAi NjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSBeICgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIg IikgXiAoIiAiNjY1IiIyIiJmLSIiNjY0IiIyIiJmIiAiKSkgJiAtKC0oKCIgIjY2NSIiMSIiZi0i IjY2NCIiMSIiZiIgIikgPCAoIiAiNjY1IiIyIiJmLSIiNjY0IiIyIiJmIiAiKSkpKSkiICIgLSAo IiAiNjYyYi02NjFiIiAiKSksIDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAuYWx0 aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2NjQi IjEiImYgLSAuXG4iICIgLndvcmQgIiAiKCAzKjMyKzE2KSIgIlxuIiAiIC5ieXRlICIgIjY2MyIi Yi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIgLmJ5 dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIiAubG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIgIjY2 NCIiMiIiZiAtIC5cbiIgIiAud29yZCAiICIoIDkqMzIrIDkpIiAiXG4iICIgLmJ5dGUgIiAiNjYz IiJiLTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICJcbiIgIiAu Ynl0ZSAiICI2NjMiImItNjYyYiIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5wdXNoc2VjdGlvbiAu YWx0aW5zdHJfcmVwbGFjZW1lbnQsIFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxhY2VtZW50ICIgIjEi ICJcbiIgIjY2NCIiMSIiOlxuXHQiICJjYWxsICVQW25ldzFdIiAiXG4iICI2NjUiIjEiICI6XG4i ICIjIEFMVDogcmVwbGFjZW1lbnQgIiAiMiIgIlxuIiAiNjY0IiIyIiI6XG5cdCIgImNhbGwgJVBb bmV3Ml0iICJcbiIgIjY2NSIiMiIgIjpcbiIgIi5wb3BzZWN0aW9uXG4iIDogIj1EIiAocGFnZSks ICIrciIgKGN1cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbb2xkXSAiaSIgKGNsZWFyX3BhZ2Vfb3Jp ZyksIFtuZXcxXSAiaSIgKGNsZWFyX3BhZ2VfcmVwKSwgW25ldzJdICJpIiAoY2xlYXJfcGFnZV9l cm1zKSwgIjAiIChwYWdlKSA6ICJjYyIsICJtZW1vcnkiLCAicmF4IiwgInJjeCIpCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgY29weV9wYWdlKHZvaWQg KnRvLCB2b2lkICpmcm9tKTsKMTQ0NzQ6ICMgMTMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFn ZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgcGFnZTsKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvcmFu Z2UuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcmFu Z2UgewoxNDQ3NDogIHU2NCBzdGFydDsKMTQ0NzQ6ICB1NjQgZW5kOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogaW50IGFkZF9yYW5nZShzdHJ1Y3QgcmFuZ2UgKnJhbmdlLCBpbnQgYXosIGludCBu cl9yYW5nZSwKMTQ0NzQ6ICAgdTY0IHN0YXJ0LCB1NjQgZW5kKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBpbnQgYWRkX3JhbmdlX3dpdGhfbWVyZ2Uoc3RydWN0IHJhbmdlICpyYW5nZSwgaW50IGF6 LCBpbnQgbnJfcmFuZ2UsCjE0NDc0OiAgICAgdTY0IHN0YXJ0LCB1NjQgZW5kKTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCBzdWJ0cmFjdF9yYW5nZShzdHJ1Y3QgcmFuZ2UgKnJhbmdlLCBpbnQgYXosIHU2 NCBzdGFydCwgdTY0IGVuZCk7CjE0NDc0OiAKMTQ0NzQ6IGludCBjbGVhbl9zb3J0X3JhbmdlKHN0 cnVjdCByYW5nZSAqcmFuZ2UsIGludCBheik7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc29ydF9yYW5n ZShzdHJ1Y3QgcmFuZ2UgKnJhbmdlLCBpbnQgbnJfcmFuZ2UpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHJlc291cmNlX3NpemVfdCBjYXBfcmVzb3VyY2UodTY0IHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBpZiAodmFsID4gKChyZXNvdXJjZV9zaXplX3QpfjApKQoxNDQ3NDogICByZXR1cm4gKChyZXNv dXJjZV9zaXplX3QpfjApOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHZhbDsKMTQ0NzQ6IH0KMTQ0 NzQ6ICMgMjIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZS5oIiAyCjE0NDc0OiBleHRlcm4g c3RydWN0IHJhbmdlIHBmbl9tYXBwZWRbXTsKMTQ0NzQ6IGV4dGVybiBpbnQgbnJfcGZuX21hcHBl ZDsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGVhcl91c2VyX3BhZ2Uodm9pZCAqcGFnZSwgdW5zaWdu ZWQgbG9uZyB2YWRkciwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3QgcGFnZSAqcGcpCjE0NDc0OiB7CjE0 NDc0OiAgY2xlYXJfcGFnZShwYWdlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjb3B5 X3VzZXJfcGFnZSh2b2lkICp0bywgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyB2YWRkciwKMTQ0 NzQ6ICAgICAgIHN0cnVjdCBwYWdlICp0b3BhZ2UpCjE0NDc0OiB7CjE0NDc0OiAgY29weV9wYWdl KHRvLCBmcm9tKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v cGFnZS5oIgoxNDQ3NDogZXh0ZXJuIGJvb2wgX192aXJ0X2FkZHJfdmFsaWQodW5zaWduZWQgbG9u ZyBrYWRkcik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9p bmNsdWRlL2FzbS1nZW5lcmljL21lbW9yeV9tb2RlbC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3Bmbi5oIiAxCjE0NDc0OiAj IDEzICIuL2luY2x1ZGUvbGludXgvcGZuLmgiCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7CjE0NDc0 OiAgdTY0IHZhbDsKMTQ0NzQ6IH0gcGZuX3Q7CjE0NDc0OiAjIDYgIi4vaW5jbHVkZS9hc20tZ2Vu ZXJpYy9tZW1vcnlfbW9kZWwuaCIgMgoxNDQ3NDogIyA3NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9wYWdlLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2dldG9yZGVyLmgi IDEKMTQ0NzQ6ICMgMjkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9nZXRvcmRlci5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSkgaW50IGdldF9vcmRlcih1bnNpZ25lZCBsb25nIHNp emUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpKSB7CjE0 NDc0OiAgIGlmICghc2l6ZSkKMTQ0NzQ6ICAgIHJldHVybiA2NCAtIDEyOwoxNDQ3NDogCjE0NDc0 OiAgIGlmIChzaXplIDwgKDFVTCA8PCAxMikpCjE0NDc0OiAgICByZXR1cm4gMDsKMTQ0NzQ6IAox NDQ3NDogICByZXR1cm4gKCBfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZSkgLSAxKSA/ICggX19i dWlsdGluX2NvbnN0YW50X3AoKHNpemUpIC0gMSkgPyAoICgoc2l6ZSkgLSAxKSA8IDIgPyAwIDog KChzaXplKSAtIDEpICYgKDFVTEwgPDwgNjMpID8gNjMgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8 PCA2MikgPyA2MiA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDYxKSA/IDYxIDogKChzaXplKSAt IDEpICYgKDFVTEwgPDwgNjApID8gNjAgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1OSkgPyA1 OSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDU4KSA/IDU4IDogKChzaXplKSAtIDEpICYgKDFV TEwgPDwgNTcpID8gNTcgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1NikgPyA1NiA6ICgoc2l6 ZSkgLSAxKSAmICgxVUxMIDw8IDU1KSA/IDU1IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNTQp ID8gNTQgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1MykgPyA1MyA6ICgoc2l6ZSkgLSAxKSAm ICgxVUxMIDw8IDUyKSA/IDUyIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNTEpID8gNTEgOiAo KHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1MCkgPyA1MCA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8 IDQ5KSA/IDQ5IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNDgpID8gNDggOiAoKHNpemUpIC0g MSkgJiAoMVVMTCA8PCA0NykgPyA0NyA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDQ2KSA/IDQ2 IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNDUpID8gNDUgOiAoKHNpemUpIC0gMSkgJiAoMVVM TCA8PCA0NCkgPyA0NCA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDQzKSA/IDQzIDogKChzaXpl KSAtIDEpICYgKDFVTEwgPDwgNDIpID8gNDIgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA0MSkg PyA0MSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDQwKSA/IDQwIDogKChzaXplKSAtIDEpICYg KDFVTEwgPDwgMzkpID8gMzkgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzOCkgPyAzOCA6ICgo c2l6ZSkgLSAxKSAmICgxVUxMIDw8IDM3KSA/IDM3IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwg MzYpID8gMzYgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzNSkgPyAzNSA6ICgoc2l6ZSkgLSAx KSAmICgxVUxMIDw8IDM0KSA/IDM0IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMzMpID8gMzMg OiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzMikgPyAzMiA6ICgoc2l6ZSkgLSAxKSAmICgxVUxM IDw8IDMxKSA/IDMxIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMzApID8gMzAgOiAoKHNpemUp IC0gMSkgJiAoMVVMTCA8PCAyOSkgPyAyOSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDI4KSA/ IDI4IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMjcpID8gMjcgOiAoKHNpemUpIC0gMSkgJiAo MVVMTCA8PCAyNikgPyAyNiA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDI1KSA/IDI1IDogKChz aXplKSAtIDEpICYgKDFVTEwgPDwgMjQpID8gMjQgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAy MykgPyAyMyA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDIyKSA/IDIyIDogKChzaXplKSAtIDEp ICYgKDFVTEwgPDwgMjEpID8gMjEgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAyMCkgPyAyMCA6 ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDE5KSA/IDE5IDogKChzaXplKSAtIDEpICYgKDFVTEwg PDwgMTgpID8gMTggOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAxNykgPyAxNyA6ICgoc2l6ZSkg LSAxKSAmICgxVUxMIDw8IDE2KSA/IDE2IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMTUpID8g MTUgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAxNCkgPyAxNCA6ICgoc2l6ZSkgLSAxKSAmICgx VUxMIDw8IDEzKSA/IDEzIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMTIpID8gMTIgOiAoKHNp emUpIC0gMSkgJiAoMVVMTCA8PCAxMSkgPyAxMSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDEw KSA/IDEwIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgOSkgPyA5IDogKChzaXplKSAtIDEpICYg KDFVTEwgPDwgOCkgPyA4IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNykgPyA3IDogKChzaXpl KSAtIDEpICYgKDFVTEwgPDwgNikgPyA2IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNSkgPyA1 IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNCkgPyA0IDogKChzaXplKSAtIDEpICYgKDFVTEwg PDwgMykgPyAzIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMikgPyAyIDogMSkgOiAtMSkgOiAo c2l6ZW9mKChzaXplKSAtIDEpIDw9IDQpID8gX19pbG9nMl91MzIoKHNpemUpIC0gMSkgOiBfX2ls b2cyX3U2NCgoc2l6ZSkgLSAxKSApIC0gMTIgKyAxOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDog IHNpemUtLTsKMTQ0NzQ6ICBzaXplID4+PSAxMjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICByZXR1cm4gZmxzNjQoc2l6ZSk7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzggIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZS5oIiAyCjE0NDc0OiAjIDEzICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2 L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTUgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCIgMgoxNDQ3NDogIyA1MiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIgoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0Owox NDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCIgMQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vcHJvY2Vzc29yLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0OwoxNDQ3NDogc3RydWN0 IG1tX3N0cnVjdDsKMTQ0NzQ6IHN0cnVjdCBpb19iaXRtYXA7CjE0NDc0OiBzdHJ1Y3Qgdm04NjsK MTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21hdGhfZW11LmgiIDEK MTQ0NzQ6ICMgMTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbWF0aF9lbXUuaCIKMTQ0NzQ6IHN0 cnVjdCBtYXRoX2VtdV9pbmZvIHsKMTQ0NzQ6ICBsb25nIF9fX29yaWdfZWlwOwoxNDQ3NDogIHN0 cnVjdCBwdF9yZWdzICpyZWdzOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTQgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2lu Y2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTYgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNs dWRlL3VhcGkvYXNtL3NpZ2NvbnRleHQuaCIgMQoxNDQ3NDogIyA0MCAiLi9hcmNoL3g4Ni9pbmNs dWRlL3VhcGkvYXNtL3NpZ2NvbnRleHQuaCIKMTQ0NzQ6IHN0cnVjdCBfZnB4X3N3X2J5dGVzIHsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIG1hZ2ljMTsKMTQ0 NzQ6ICMgNTQgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaWdjb250ZXh0LmgiCjE0NDc0 OiAgX191MzIgZXh0ZW5kZWRfc2l6ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgX191NjQgeGZlYXR1cmVzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiB4c3RhdGVfc2l6ZTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgX191MzIgcGFkZGluZ1s3XTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDg1ICIuL2FyY2gv eDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnY29udGV4dC5oIgoxNDQ3NDogc3RydWN0IF9mcHJlZyB7 CjE0NDc0OiAgX191MTYgc2lnbmlmaWNhbmRbNF07CjE0NDc0OiAgX191MTYgZXhwb25lbnQ7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBfZnB4cmVnIHsKMTQ0NzQ6ICBf X3UxNiBzaWduaWZpY2FuZFs0XTsKMTQ0NzQ6ICBfX3UxNiBleHBvbmVudDsKMTQ0NzQ6ICBfX3Ux NiBwYWRkaW5nWzNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX3ht bXJlZyB7CjE0NDc0OiAgX191MzIgZWxlbWVudFs0XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX2Zwc3RhdGVf MzIgewoxNDQ3NDogCjE0NDc0OiAgX191MzIgY3c7CjE0NDc0OiAgX191MzIgc3c7CjE0NDc0OiAg X191MzIgdGFnOwoxNDQ3NDogIF9fdTMyIGlwb2ZmOwoxNDQ3NDogIF9fdTMyIGNzc2VsOwoxNDQ3 NDogIF9fdTMyIGRhdGFvZmY7CjE0NDc0OiAgX191MzIgZGF0YXNlbDsKMTQ0NzQ6ICBzdHJ1Y3Qg X2ZwcmVnIF9zdFs4XTsKMTQ0NzQ6ICBfX3UxNiBzdGF0dXM7CjE0NDc0OiAgX191MTYgbWFnaWM7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MzIgX2Z4c3JfZW52WzZdOwoxNDQ3 NDogIF9fdTMyIG14Y3NyOwoxNDQ3NDogIF9fdTMyIHJlc2VydmVkOwoxNDQ3NDogIHN0cnVjdCBf ZnB4cmVnIF9meHNyX3N0WzhdOwoxNDQ3NDogIHN0cnVjdCBfeG1tcmVnIF94bW1bOF07CjE0NDc0 OiAgdW5pb24gewoxNDQ3NDogICBfX3UzMiBwYWRkaW5nMVs0NF07CjE0NDc0OiAgIF9fdTMyIHBh ZGRpbmdbNDRdOwoxNDQ3NDogIH07CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIF9f dTMyIHBhZGRpbmcyWzEyXTsKMTQ0NzQ6ICAgc3RydWN0IF9mcHhfc3dfYnl0ZXMgc3dfcmVzZXJ2 ZWQ7CjE0NDc0OiAgfTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDE0OSAiLi9hcmNoL3g4Ni9pbmNsdWRl L3VhcGkvYXNtL3NpZ2NvbnRleHQuaCIKMTQ0NzQ6IHN0cnVjdCBfZnBzdGF0ZV82NCB7CjE0NDc0 OiAgX191MTYgY3dkOwoxNDQ3NDogIF9fdTE2IHN3ZDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTE2IHR3 ZDsKMTQ0NzQ6ICBfX3UxNiBmb3A7CjE0NDc0OiAgX191NjQgcmlwOwoxNDQ3NDogIF9fdTY0IHJk cDsKMTQ0NzQ6ICBfX3UzMiBteGNzcjsKMTQ0NzQ6ICBfX3UzMiBteGNzcl9tYXNrOwoxNDQ3NDog IF9fdTMyIHN0X3NwYWNlWzMyXTsKMTQ0NzQ6ICBfX3UzMiB4bW1fc3BhY2VbNjRdOwoxNDQ3NDog IF9fdTMyIHJlc2VydmVkMlsxMl07CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBfX3UzMiByZXNl cnZlZDNbMTJdOwoxNDQ3NDogICBzdHJ1Y3QgX2ZweF9zd19ieXRlcyBzd19yZXNlcnZlZDsKMTQ0 NzQ6ICB9OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF9oZWFkZXIgewoxNDQ3NDogIF9fdTY0IHhm ZWF0dXJlczsKMTQ0NzQ6ICBfX3U2NCByZXNlcnZlZDFbMl07CjE0NDc0OiAgX191NjQgcmVzZXJ2 ZWQyWzVdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF95bW1oX3N0YXRlIHsKMTQ0 NzQ6IAoxNDQ3NDogIF9fdTMyIHltbWhfc3BhY2VbNjRdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTky ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnY29udGV4dC5oIgoxNDQ3NDogc3RydWN0 IF94c3RhdGUgewoxNDQ3NDogIHN0cnVjdCBfZnBzdGF0ZV82NCBmcHN0YXRlOwoxNDQ3NDogIHN0 cnVjdCBfaGVhZGVyIHhzdGF0ZV9oZHI7CjE0NDc0OiAgc3RydWN0IF95bW1oX3N0YXRlIHltbWg7 CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBzaWdjb250ZXh0XzMyIHsKMTQ0NzQ6ICBfX3UxNiBncywgX19nc2g7CjE0NDc0OiAg X191MTYgZnMsIF9fZnNoOwoxNDQ3NDogIF9fdTE2IGVzLCBfX2VzaDsKMTQ0NzQ6ICBfX3UxNiBk cywgX19kc2g7CjE0NDc0OiAgX191MzIgZGk7CjE0NDc0OiAgX191MzIgc2k7CjE0NDc0OiAgX191 MzIgYnA7CjE0NDc0OiAgX191MzIgc3A7CjE0NDc0OiAgX191MzIgYng7CjE0NDc0OiAgX191MzIg ZHg7CjE0NDc0OiAgX191MzIgY3g7CjE0NDc0OiAgX191MzIgYXg7CjE0NDc0OiAgX191MzIgdHJh cG5vOwoxNDQ3NDogIF9fdTMyIGVycjsKMTQ0NzQ6ICBfX3UzMiBpcDsKMTQ0NzQ6ICBfX3UxNiBj cywgX19jc2g7CjE0NDc0OiAgX191MzIgZmxhZ3M7CjE0NDc0OiAgX191MzIgc3BfYXRfc2lnbmFs OwoxNDQ3NDogIF9fdTE2IHNzLCBfX3NzaDsKMTQ0NzQ6ICMgMjMwICIuL2FyY2gveDg2L2luY2x1 ZGUvdWFwaS9hc20vc2lnY29udGV4dC5oIgoxNDQ3NDogIF9fdTMyIGZwc3RhdGU7CjE0NDc0OiAg X191MzIgb2xkbWFzazsKMTQ0NzQ6ICBfX3UzMiBjcjI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2lnY29udGV4dF82NCB7CjE0NDc0OiAg X191NjQgcjg7CjE0NDc0OiAgX191NjQgcjk7CjE0NDc0OiAgX191NjQgcjEwOwoxNDQ3NDogIF9f dTY0IHIxMTsKMTQ0NzQ6ICBfX3U2NCByMTI7CjE0NDc0OiAgX191NjQgcjEzOwoxNDQ3NDogIF9f dTY0IHIxNDsKMTQ0NzQ6ICBfX3U2NCByMTU7CjE0NDc0OiAgX191NjQgZGk7CjE0NDc0OiAgX191 NjQgc2k7CjE0NDc0OiAgX191NjQgYnA7CjE0NDc0OiAgX191NjQgYng7CjE0NDc0OiAgX191NjQg ZHg7CjE0NDc0OiAgX191NjQgYXg7CjE0NDc0OiAgX191NjQgY3g7CjE0NDc0OiAgX191NjQgc3A7 CjE0NDc0OiAgX191NjQgaXA7CjE0NDc0OiAgX191NjQgZmxhZ3M7CjE0NDc0OiAgX191MTYgY3M7 CjE0NDc0OiAgX191MTYgZ3M7CjE0NDc0OiAgX191MTYgZnM7CjE0NDc0OiAgX191MTYgc3M7CjE0 NDc0OiAgX191NjQgZXJyOwoxNDQ3NDogIF9fdTY0IHRyYXBubzsKMTQ0NzQ6ICBfX3U2NCBvbGRt YXNrOwoxNDQ3NDogIF9fdTY0IGNyMjsKMTQ0NzQ6ICMgMjczICIuL2FyY2gveDg2L2luY2x1ZGUv dWFwaS9hc20vc2lnY29udGV4dC5oIgoxNDQ3NDogIF9fdTY0IGZwc3RhdGU7CjE0NDc0OiAgX191 NjQgcmVzZXJ2ZWQxWzhdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTcgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vcHJvY2Vzc29yLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNyLmgiIDEKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L21zci1pbmRleC5oIiAxCjE0NDc0OiAjIDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNyLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2 L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2Vycm5vLmgiIDEKMTQ0NzQ6ICMgMSAiLi9pbmNs dWRlL3VhcGkvYXNtLWdlbmVyaWMvZXJybm8uaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2Vycm5vLWJhc2Uu aCIgMQoxNDQ3NDogIyA2ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9lcnJuby5oIiAyCjE0 NDc0OiAjIDIgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vZXJybm8uaCIg MgoxNDQ3NDogIyAxMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIgMgoxNDQ3NDogIyAx ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdW1hc2suaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiIDEKMTQ0 NzQ6ICMgMTIgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9iaXRtYXAuaCIgMQoxNDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgvYml0bWFwLmgi CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQoxNDQ3NDogIyAxMCAiLi9p bmNsdWRlL2xpbnV4L3N0cmluZy5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9z dHJpbmcuaCIgMQoxNDQ3NDogIyAxMSAiLi9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAyCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBjaGFyICpzdHJuZHVwX3VzZXIoY29uc3QgY2hhciAqLCBsb25nKTsK MTQ0NzQ6IGV4dGVybiB2b2lkICptZW1kdXBfdXNlcihjb25zdCB2b2lkICosIHNpemVfdCk7CjE0 NDc0OiBleHRlcm4gdm9pZCAqdm1lbWR1cF91c2VyKGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKMTQ0 NzQ6IGV4dGVybiB2b2lkICptZW1kdXBfdXNlcl9udWwoY29uc3Qgdm9pZCAqLCBzaXplX3QpOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vc3RyaW5nLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N0cmluZ182NC5oIiAxCjE0NDc0OiAjIDE0 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N0cmluZ182NC5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQg Km1lbWNweSh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgc2l6ZV90IGxlbik7CjE0NDc0OiBl eHRlcm4gdm9pZCAqX19tZW1jcHkodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHNpemVfdCBs ZW4pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgKm1lbXNldCh2b2lkICpzLCBpbnQgYywg c2l6ZV90IG4pOwoxNDQ3NDogdm9pZCAqX19tZW1zZXQodm9pZCAqcywgaW50IGMsIHNpemVfdCBu KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICptZW1zZXQxNih1aW50MTZfdCAqcywgdWlu dDE2X3Qgdiwgc2l6ZV90IG4pCjE0NDc0OiB7CjE0NDc0OiAgbG9uZyBkMCwgZDE7CjE0NDc0OiAg YXNtIHZvbGF0aWxlKCJyZXBcblx0IgoxNDQ3NDogICAgICAgICJzdG9zdyIKMTQ0NzQ6ICAgICAg ICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKMTQ0NzQ6ICAgICAgICA6ICJhIiAodiksICIxIiAo cyksICIwIiAobikKMTQ0NzQ6ICAgICAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6ICByZXR1cm4gczsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICptZW1zZXQzMih1aW50MzJfdCAq cywgdWludDMyX3Qgdiwgc2l6ZV90IG4pCjE0NDc0OiB7CjE0NDc0OiAgbG9uZyBkMCwgZDE7CjE0 NDc0OiAgYXNtIHZvbGF0aWxlKCJyZXBcblx0IgoxNDQ3NDogICAgICAgICJzdG9zbCIKMTQ0NzQ6 ICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKMTQ0NzQ6ICAgICAgICA6ICJhIiAodiks ICIxIiAocyksICIwIiAobikKMTQ0NzQ6ICAgICAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6ICByZXR1 cm4gczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICptZW1zZXQ2NCh1aW50 NjRfdCAqcywgdWludDY0X3Qgdiwgc2l6ZV90IG4pCjE0NDc0OiB7CjE0NDc0OiAgbG9uZyBkMCwg ZDE7CjE0NDc0OiAgYXNtIHZvbGF0aWxlKCJyZXBcblx0IgoxNDQ3NDogICAgICAgICJzdG9zcSIK MTQ0NzQ6ICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKMTQ0NzQ6ICAgICAgICA6ICJh IiAodiksICIxIiAocyksICIwIiAobikKMTQ0NzQ6ICAgICAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6 ICByZXR1cm4gczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkICptZW1tb3Zl KHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGNvdW50KTsKMTQ0NzQ6IHZvaWQg Kl9fbWVtbW92ZSh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBjb3VudCk7CjE0 NDc0OiAKMTQ0NzQ6IGludCBtZW1jbXAoY29uc3Qgdm9pZCAqY3MsIGNvbnN0IHZvaWQgKmN0LCBz aXplX3QgY291bnQpOwoxNDQ3NDogc2l6ZV90IHN0cmxlbihjb25zdCBjaGFyICpzKTsKMTQ0NzQ6 IGNoYXIgKnN0cmNweShjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpOwoxNDQ3NDogY2hhciAq c3RyY2F0KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYyk7CjE0NDc0OiBpbnQgc3RyY21wKGNv bnN0IGNoYXIgKmNzLCBjb25zdCBjaGFyICpjdCk7CjE0NDc0OiAjIDg2ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL3N0cmluZ182NC5oIgoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIHVuc2lnbmVkIGxvbmcgX19tZW1jcHlfbWNzYWZlKHZvaWQgKmRzdCwgY29u c3Qgdm9pZCAqc3JjLAoxNDQ3NDogICBzaXplX3QgY250KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qg c3RhdGljX2tleV9mYWxzZSBtY3NhZmVfa2V5OwoxNDQ3NDogIyAxMDUgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vc3RyaW5nXzY0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSB1bnNpZ25lZCBs b25nCjE0NDc0OiBtZW1jcHlfbWNzYWZlKHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXpl X3QgY250KQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgaWYgKCh7IGJvb2wgYnJhbmNoOyBpZiAo X19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKiZtY3NhZmVfa2V5KSwgc3RydWN0 IHN0YXRpY19rZXlfdHJ1ZSkpIGJyYW5jaCA9IGFyY2hfc3RhdGljX2JyYW5jaF9qdW1wKCYoJm1j c2FmZV9rZXkpLT5rZXksIGZhbHNlKTsgZWxzZSBpZiAoX19idWlsdGluX3R5cGVzX2NvbXBhdGli bGVfcCh0eXBlb2YoKiZtY3NhZmVfa2V5KSwgc3RydWN0IHN0YXRpY19rZXlfZmFsc2UpKSBicmFu Y2ggPSBhcmNoX3N0YXRpY19icmFuY2goJigmbWNzYWZlX2tleSktPmtleSwgZmFsc2UpOyBlbHNl IGJyYW5jaCA9IF9fX193cm9uZ19icmFuY2hfZXJyb3IoKTsgX19idWlsdGluX2V4cGVjdCghIShi cmFuY2gpLCAwKTsgfSkpCjE0NDc0OiAgIHJldHVybiBfX21lbWNweV9tY3NhZmUoZHN0LCBzcmMs IGNudCk7CjE0NDc0OiAgZWxzZQoxNDQ3NDogCjE0NDc0OiAgIG1lbWNweShkc3QsIHNyYywgY250 KTsKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgX19tZW1jcHlfZmx1c2hjYWNoZSh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywg c2l6ZV90IGNudCk7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgbWVtY3B5X2ZsdXNoY2FjaGUodm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBj bnQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKGNudCkpIHsKMTQ0 NzQ6ICAgc3dpdGNoIChjbnQpIHsKMTQ0NzQ6ICAgIGNhc2UgNDoKMTQ0NzQ6ICAgICBhc20gKCJt b3ZudGlsICUxLCAlMCIgOiAiPW0iKCoodTMyICopZHN0KSA6ICJyIigqKHUzMiAqKXNyYykpOwox NDQ3NDogICAgIHJldHVybjsKMTQ0NzQ6ICAgIGNhc2UgODoKMTQ0NzQ6ICAgICBhc20gKCJtb3Zu dGlxICUxLCAlMCIgOiAiPW0iKCoodTY0ICopZHN0KSA6ICJyIigqKHU2NCAqKXNyYykpOwoxNDQ3 NDogICAgIHJldHVybjsKMTQ0NzQ6ICAgIGNhc2UgMTY6CjE0NDc0OiAgICAgYXNtICgibW92bnRp cSAlMSwgJTAiIDogIj1tIigqKHU2NCAqKWRzdCkgOiAiciIoKih1NjQgKilzcmMpKTsKMTQ0NzQ6 ICAgICBhc20gKCJtb3ZudGlxICUxLCAlMCIgOiAiPW0iKCoodTY0ICopKGRzdCArIDgpKSA6ICJy IigqKHU2NCAqKShzcmMgKyA4KSkpOwoxNDQ3NDogICAgIHJldHVybjsKMTQ0NzQ6ICAgfQoxNDQ3 NDogIH0KMTQ0NzQ6ICBfX21lbWNweV9mbHVzaGNhY2hlKGRzdCwgc3JjLCBjbnQpOwoxNDQ3NDog fQoxNDQ3NDogIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N0cmluZy5oIiAyCjE0NDc0OiAj IDIxICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gY2hhciAqIHN0cmNweShjaGFyICosY29uc3QgY2hhciAqKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBleHRlcm4gY2hhciAqIHN0cm5jcHkoY2hhciAqLGNvbnN0IGNoYXIgKiwgX19rZXJu ZWxfc2l6ZV90KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzaXplX3Qgc3RybGNweShjaGFyICos IGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzc2l6ZV90IHN0 cnNjcHkoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzc2l6ZV90IHN0cnNjcHlfcGFkKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNy Yywgc2l6ZV90IGNvdW50KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gY2hhciAqIHN0 cmNhdChjaGFyICosIGNvbnN0IGNoYXIgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGNoYXIgKiBzdHJuY2F0KGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2tlcm5lbF9zaXplX3QpOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzaXplX3Qgc3RybGNhdChjaGFyICosIGNvbnN0 IGNoYXIgKiwgX19rZXJuZWxfc2l6ZV90KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4g aW50IHN0cmNtcChjb25zdCBjaGFyICosY29uc3QgY2hhciAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gaW50IHN0cm5jbXAoY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKixfX2tlcm5l bF9zaXplX3QpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgc3RyY2FzZWNtcChj b25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgc3RybmNhc2VjbXAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBzaXpl X3Qgbik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNoYXIgKiBzdHJjaHIoY29uc3Qg Y2hhciAqLGludCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNoYXIgKiBzdHJjaHJu dWwoY29uc3QgY2hhciAqLGludCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjaGFyICogc3RybmNo cm51bChjb25zdCBjaGFyICosIHNpemVfdCwgaW50KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNo YXIgKiBzdHJuY2hyKGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBpbnQpOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiBjaGFyICogc3RycmNocihjb25zdCBjaGFyICosaW50KTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSkgc2tpcF9zcGFjZXMoY29uc3QgY2hhciAqKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNoYXIg KnN0cmltKGNoYXIgKik7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVz ZWRfcmVzdWx0X18pKSBjaGFyICpzdHJzdHJpcChjaGFyICpzdHIpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIHN0cmltKHN0cik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGNoYXIgKiBzdHJzdHIoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBjaGFyICogc3RybnN0cihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg Kiwgc2l6ZV90KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19rZXJuZWxfc2l6ZV90 IHN0cmxlbihjb25zdCBjaGFyICopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2tl cm5lbF9zaXplX3Qgc3Rybmxlbihjb25zdCBjaGFyICosX19rZXJuZWxfc2l6ZV90KTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gY2hhciAqIHN0cnBicmsoY29uc3QgY2hhciAqLGNvbnN0 IGNoYXIgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNoYXIgKiBzdHJzZXAoY2hh ciAqKixjb25zdCBjaGFyICopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2tlcm5l bF9zaXplX3Qgc3Ryc3BuKGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBfX2tlcm5lbF9zaXplX3Qgc3RyY3Nwbihjb25zdCBjaGFyICosY29u c3QgY2hhciAqKTsKMTQ0NzQ6ICMgMTIyICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkICptZW1zZXRfbCh1bnNpZ25lZCBsb25nICpwLCB1bnNpZ25lZCBsb25nIHYsCjE0NDc0 OiAgIF9fa2VybmVsX3NpemVfdCBuKQoxNDQ3NDogewoxNDQ3NDogIGlmICg2NCA9PSAzMikKMTQ0 NzQ6ICAgcmV0dXJuIG1lbXNldDMyKCh1aW50MzJfdCAqKXAsIHYsIG4pOwoxNDQ3NDogIGVsc2UK MTQ0NzQ6ICAgcmV0dXJuIG1lbXNldDY0KCh1aW50NjRfdCAqKXAsIHYsIG4pOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkICptZW1zZXRfcCh2b2lkICoqcCwgdm9pZCAqdiwgX19rZXJuZWxf c2l6ZV90IG4pCjE0NDc0OiB7CjE0NDc0OiAgaWYgKDY0ID09IDMyKQoxNDQ3NDogICByZXR1cm4g bWVtc2V0MzIoKHVpbnQzMl90ICopcCwgKHVpbnRwdHJfdCl2LCBuKTsKMTQ0NzQ6ICBlbHNlCjE0 NDc0OiAgIHJldHVybiBtZW1zZXQ2NCgodWludDY0X3QgKilwLCAodWludHB0cl90KXYsIG4pOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCAqKl9fbWVtY2F0X3Aodm9pZCAqKmEs IHZvaWQgKipiKTsKMTQ0NzQ6ICMgMTUzICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCjE0NDc0 OiBleHRlcm4gdm9pZCAqIG1lbXNjYW4odm9pZCAqLGludCxfX2tlcm5lbF9zaXplX3QpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbWVtY21wKGNvbnN0IHZvaWQgKixjb25zdCB2 b2lkICosX19rZXJuZWxfc2l6ZV90KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50 IGJjbXAoY29uc3Qgdm9pZCAqLGNvbnN0IHZvaWQgKixfX2tlcm5lbF9zaXplX3QpOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkICogbWVtY2hyKGNvbnN0IHZvaWQgKixpbnQsX19r ZXJuZWxfc2l6ZV90KTsKMTQ0NzQ6ICMgMTc4ICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCjE0 NDc0OiB2b2lkICptZW1jaHJfaW52KGNvbnN0IHZvaWQgKnMsIGludCBjLCBzaXplX3Qgbik7CjE0 NDc0OiBjaGFyICpzdHJyZXBsYWNlKGNoYXIgKnMsIGNoYXIgb2xkLCBjaGFyIG5ldyk7CjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGtmcmVlX2NvbnN0KGNvbnN0IHZvaWQgKngpOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gY2hhciAqa3N0cmR1cChjb25zdCBjaGFyICpzLCBnZnBfdCBnZnApIF9f YXR0cmlidXRlX18oKF9fbWFsbG9jX18pKTsKMTQ0NzQ6IGV4dGVybiBjb25zdCBjaGFyICprc3Ry ZHVwX2NvbnN0KGNvbnN0IGNoYXIgKnMsIGdmcF90IGdmcCk7CjE0NDc0OiBleHRlcm4gY2hhciAq a3N0cm5kdXAoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgZ2ZwX3QgZ2ZwKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkICprbWVtZHVwKGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGxlbiwgZ2ZwX3QgZ2Zw KTsKMTQ0NzQ6IGV4dGVybiBjaGFyICprbWVtZHVwX251bChjb25zdCBjaGFyICpzLCBzaXplX3Qg bGVuLCBnZnBfdCBnZnApOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gY2hhciAqKmFyZ3Zfc3BsaXQo Z2ZwX3QgZ2ZwLCBjb25zdCBjaGFyICpzdHIsIGludCAqYXJnY3ApOwoxNDQ3NDogZXh0ZXJuIHZv aWQgYXJndl9mcmVlKGNoYXIgKiphcmd2KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wgc3lz ZnNfc3RyZXEoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyKTsKMTQ0NzQ6IGV4dGVybiBp bnQga3N0cnRvYm9vbChjb25zdCBjaGFyICpzLCBib29sICpyZXMpOwoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHN0cnRv Ym9vbChjb25zdCBjaGFyICpzLCBib29sICpyZXMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtz dHJ0b2Jvb2wocywgcmVzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogaW50IG1hdGNoX3N0cmlu Zyhjb25zdCBjaGFyICogY29uc3QgKmFycmF5LCBzaXplX3QgbiwgY29uc3QgY2hhciAqc3RyaW5n KTsKMTQ0NzQ6IGludCBfX3N5c2ZzX21hdGNoX3N0cmluZyhjb25zdCBjaGFyICogY29uc3QgKmFy cmF5LCBzaXplX3QgbiwgY29uc3QgY2hhciAqcyk7CjE0NDc0OiAjIDIxMiAiLi9pbmNsdWRlL2xp bnV4L3N0cmluZy5oIgoxNDQ3NDogaW50IHZiaW5fcHJpbnRmKHUzMiAqYmluX2J1Ziwgc2l6ZV90 IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKTsKMTQ0NzQ6IGludCBic3RyX3By aW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIGNvbnN0IHUzMiAq YmluX2J1Zik7CjE0NDc0OiBpbnQgYnByaW50Zih1MzIgKmJpbl9idWYsIHNpemVfdCBzaXplLCBj b25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMs IDQpKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHNzaXplX3QgbWVtb3J5X3JlYWRf ZnJvbV9idWZmZXIodm9pZCAqdG8sIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zLAoxNDQ3NDog ICAgICAgICAgICBjb25zdCB2b2lkICpmcm9tLCBzaXplX3QgYXZhaWxhYmxlKTsKMTQ0NzQ6IAox NDQ3NDogaW50IHB0cl90b19oYXNodmFsKGNvbnN0IHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyAq aGFzaHZhbF9vdXQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBzdHJzdGFydHMoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICpw cmVmaXgpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHN0cm5jbXAoc3RyLCBwcmVmaXgsIHN0cmxl bihwcmVmaXgpKSA9PSAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzaXplX3QgbWVtd2VpZ2h0 KGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGJ5dGVzKTsKMTQ0NzQ6ICMgMjQ4ICIuL2luY2x1ZGUv bGludXgvc3RyaW5nLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG1lbXplcm9fZXhwbGljaXQodm9pZCAqcywgc2l6 ZV90IGNvdW50KQoxNDQ3NDogewoxNDQ3NDogIG1lbXNldChzLCAwLCBjb3VudCk7CjE0NDc0OiAg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDoiciIocykgOiJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGNvbnN0 IGNoYXIgKmtiYXNlbmFtZShjb25zdCBjaGFyICpwYXRoKQoxNDQ3NDogewoxNDQ3NDogIGNvbnN0 IGNoYXIgKnRhaWwgPSBzdHJyY2hyKHBhdGgsICcvJyk7CjE0NDc0OiAgcmV0dXJuIHRhaWwgPyB0 YWlsICsgMSA6IHBhdGg7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHZvaWQgZm9ydGlmeV9wYW5pYyhjb25zdCBjaGFyICpuYW1lKSBfX2F0dHJpYnV0ZV9f KChfX25vcmV0dXJuX18pKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpOwoxNDQ3NDogdm9pZCBf X3JlYWRfb3ZlcmZsb3codm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJkZXRlY3RlZCBy ZWFkIGJleW9uZCBzaXplIG9mIG9iamVjdCBwYXNzZWQgYXMgMXN0IHBhcmFtZXRlciIpKSk7CjE0 NDc0OiB2b2lkIF9fcmVhZF9vdmVyZmxvdzIodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9f KCJkZXRlY3RlZCByZWFkIGJleW9uZCBzaXplIG9mIG9iamVjdCBwYXNzZWQgYXMgMm5kIHBhcmFt ZXRlciIpKSk7CjE0NDc0OiB2b2lkIF9fcmVhZF9vdmVyZmxvdzModm9pZCkgX19hdHRyaWJ1dGVf XygoX19lcnJvcl9fKCJkZXRlY3RlZCByZWFkIGJleW9uZCBzaXplIG9mIG9iamVjdCBwYXNzZWQg YXMgM3JkIHBhcmFtZXRlciIpKSk7CjE0NDc0OiB2b2lkIF9fd3JpdGVfb3ZlcmZsb3codm9pZCkg X19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJkZXRlY3RlZCB3cml0ZSBiZXlvbmQgc2l6ZSBvZiBv YmplY3QgcGFzc2VkIGFzIDFzdCBwYXJhbWV0ZXIiKSkpOwoxNDQ3NDogIyA0NzggIi4vaW5jbHVk ZS9saW51eC9zdHJpbmcuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbWVtY3B5X2FuZF9wYWQodm9pZCAqZGVzdCwg c2l6ZV90IGRlc3RfbGVuLAoxNDQ3NDogICAgICAgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgY291 bnQsIGludCBwYWQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGRlc3RfbGVuID4gY291bnQpIHsKMTQ0 NzQ6ICAgbWVtY3B5KGRlc3QsIHNyYywgY291bnQpOwoxNDQ3NDogICBtZW1zZXQoZGVzdCArIGNv dW50LCBwYWQsIGRlc3RfbGVuIC0gY291bnQpOwoxNDQ3NDogIH0gZWxzZQoxNDQ3NDogICBtZW1j cHkoZGVzdCwgc3JjLCBkZXN0X2xlbik7CjE0NDc0OiB9CjE0NDc0OiAjIDUwMyAiLi9pbmNsdWRl L2xpbnV4L3N0cmluZy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSBzaXplX3Qgc3RyX2hhc19wcmVmaXgoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICpwcmVm aXgpCjE0NDc0OiB7CjE0NDc0OiAgc2l6ZV90IGxlbiA9IHN0cmxlbihwcmVmaXgpOwoxNDQ3NDog IHJldHVybiBzdHJuY21wKHN0ciwgcHJlZml4LCBsZW4pID09IDAgPyBsZW4gOiAwOwoxNDQ3NDog fQoxNDQ3NDogIyAxMCAiLi9pbmNsdWRlL2xpbnV4L2JpdG1hcC5oIiAyCjE0NDc0OiAjIDExNSAi Li9pbmNsdWRlL2xpbnV4L2JpdG1hcC5oIgoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgKmJp dG1hcF9hbGxvYyh1bnNpZ25lZCBpbnQgbmJpdHMsIGdmcF90IGZsYWdzKTsKMTQ0NzQ6IGV4dGVy biB1bnNpZ25lZCBsb25nICpiaXRtYXBfemFsbG9jKHVuc2lnbmVkIGludCBuYml0cywgZ2ZwX3Qg ZmxhZ3MpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYml0bWFwX2ZyZWUoY29uc3QgdW5zaWduZWQgbG9u ZyAqYml0bWFwKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gaW50IF9fYml0bWFwX2VtcHR5KGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwg dW5zaWduZWQgaW50IG5iaXRzKTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19iaXRtYXBfZnVsbChjb25z dCB1bnNpZ25lZCBsb25nICpiaXRtYXAsIHVuc2lnbmVkIGludCBuYml0cyk7CjE0NDc0OiBleHRl cm4gaW50IF9fYml0bWFwX2VxdWFsKGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDEsCjE0NDc0 OiAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDIsIHVuc2lnbmVkIGludCBuYml0cyk7 CjE0NDc0OiBleHRlcm4gYm9vbCBfX2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpIF9fYml0bWFwX29y X2VxdWFsKGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYzEsCjE0NDc0OiAgICAgICAgICBjb25zdCB1 bnNpZ25lZCBsb25nICpzcmMyLAoxNDQ3NDogICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAq c3JjMywKMTQ0NzQ6ICAgICAgICAgIHVuc2lnbmVkIGludCBuYml0cyk7CjE0NDc0OiBleHRlcm4g dm9pZCBfX2JpdG1hcF9jb21wbGVtZW50KHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5zaWdu ZWQgbG9uZyAqc3JjLAoxNDQ3NDogICAgdW5zaWduZWQgaW50IG5iaXRzKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIF9fYml0bWFwX3NoaWZ0X3JpZ2h0KHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5z aWduZWQgbG9uZyAqc3JjLAoxNDQ3NDogICAgIHVuc2lnbmVkIGludCBzaGlmdCwgdW5zaWduZWQg aW50IG5iaXRzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYml0bWFwX3NoaWZ0X2xlZnQodW5zaWdu ZWQgbG9uZyAqZHN0LCBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMsCjE0NDc0OiAgICAgdW5zaWdu ZWQgaW50IHNoaWZ0LCB1bnNpZ25lZCBpbnQgbmJpdHMpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYml0 bWFwX2N1dCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKMTQ0 NzQ6ICAgICAgICAgIHVuc2lnbmVkIGludCBmaXJzdCwgdW5zaWduZWQgaW50IGN1dCwKMTQ0NzQ6 ICAgICAgICAgIHVuc2lnbmVkIGludCBuYml0cyk7CjE0NDc0OiBleHRlcm4gaW50IF9fYml0bWFw X2FuZCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDEsCjE0 NDc0OiAgICBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAyLCB1bnNpZ25lZCBpbnQgbmJpdHMp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19iaXRtYXBfb3IodW5zaWduZWQgbG9uZyAqZHN0LCBjb25z dCB1bnNpZ25lZCBsb25nICpiaXRtYXAxLAoxNDQ3NDogICAgY29uc3QgdW5zaWduZWQgbG9uZyAq Yml0bWFwMiwgdW5zaWduZWQgaW50IG5iaXRzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYml0bWFw X3hvcih1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDEsCjE0 NDc0OiAgICBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAyLCB1bnNpZ25lZCBpbnQgbmJpdHMp OwoxNDQ3NDogZXh0ZXJuIGludCBfX2JpdG1hcF9hbmRub3QodW5zaWduZWQgbG9uZyAqZHN0LCBj b25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAxLAoxNDQ3NDogICAgY29uc3QgdW5zaWduZWQgbG9u ZyAqYml0bWFwMiwgdW5zaWduZWQgaW50IG5iaXRzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYml0 bWFwX3JlcGxhY2UodW5zaWduZWQgbG9uZyAqZHN0LAoxNDQ3NDogICAgY29uc3QgdW5zaWduZWQg bG9uZyAqb2xkLCBjb25zdCB1bnNpZ25lZCBsb25nICpuZXcsCjE0NDc0OiAgICBjb25zdCB1bnNp Z25lZCBsb25nICptYXNrLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwoxNDQ3NDogZXh0ZXJuIGludCBf X2JpdG1hcF9pbnRlcnNlY3RzKGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDEsCjE0NDc0OiAg ICBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAyLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwoxNDQ3 NDogZXh0ZXJuIGludCBfX2JpdG1hcF9zdWJzZXQoY29uc3QgdW5zaWduZWQgbG9uZyAqYml0bWFw MSwKMTQ0NzQ6ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDIsIHVuc2lnbmVkIGludCBu Yml0cyk7CjE0NDc0OiBleHRlcm4gaW50IF9fYml0bWFwX3dlaWdodChjb25zdCB1bnNpZ25lZCBs b25nICpiaXRtYXAsIHVuc2lnbmVkIGludCBuYml0cyk7CjE0NDc0OiBleHRlcm4gdm9pZCBfX2Jp dG1hcF9zZXQodW5zaWduZWQgbG9uZyAqbWFwLCB1bnNpZ25lZCBpbnQgc3RhcnQsIGludCBsZW4p OwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19iaXRtYXBfY2xlYXIodW5zaWduZWQgbG9uZyAqbWFwLCB1 bnNpZ25lZCBpbnQgc3RhcnQsIGludCBsZW4pOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdW5zaWdu ZWQgbG9uZyBiaXRtYXBfZmluZF9uZXh0X3plcm9fYXJlYV9vZmYodW5zaWduZWQgbG9uZyAqbWFw LAoxNDQ3NDogICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwKMTQ0NzQ6ICAgICAgICAgICB1 bnNpZ25lZCBsb25nIHN0YXJ0LAoxNDQ3NDogICAgICAgICAgIHVuc2lnbmVkIGludCBuciwKMTQ0 NzQ6ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFsaWduX21hc2ssCjE0NDc0OiAgICAgICAgICAg dW5zaWduZWQgbG9uZyBhbGlnbl9vZmZzZXQpOwoxNDQ3NDogIyAxNzggIi4vaW5jbHVkZS9saW51 eC9iaXRtYXAuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcKMTQ0NzQ6IGJpdG1hcF9maW5kX25leHRf emVyb19hcmVhKHVuc2lnbmVkIGxvbmcgKm1hcCwKMTQ0NzQ6ICAgICAgIHVuc2lnbmVkIGxvbmcg c2l6ZSwKMTQ0NzQ6ICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCjE0NDc0OiAgICAgICB1bnNp Z25lZCBpbnQgbnIsCjE0NDc0OiAgICAgICB1bnNpZ25lZCBsb25nIGFsaWduX21hc2spCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGJpdG1hcF9maW5kX25leHRfemVyb19hcmVhX29mZihtYXAsIHNp emUsIHN0YXJ0LCBuciwKMTQ0NzQ6ICAgICAgICAgICAgYWxpZ25fbWFzaywgMCk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgYml0bWFwX3BhcnNlKGNvbnN0IGNoYXIgKmJ1Ziwg dW5zaWduZWQgaW50IGJ1ZmxlbiwKMTQ0NzQ6ICAgIHVuc2lnbmVkIGxvbmcgKmRzdCwgaW50IG5i aXRzKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYml0bWFwX3BhcnNlX3VzZXIoY29uc3QgY2hhciAqdWJ1 ZiwgdW5zaWduZWQgaW50IHVsZW4sCjE0NDc0OiAgICB1bnNpZ25lZCBsb25nICpkc3QsIGludCBu Yml0cyk7CjE0NDc0OiBleHRlcm4gaW50IGJpdG1hcF9wYXJzZWxpc3QoY29uc3QgY2hhciAqYnVm LCB1bnNpZ25lZCBsb25nICptYXNrcCwKMTQ0NzQ6ICAgIGludCBubWFza2JpdHMpOwoxNDQ3NDog ZXh0ZXJuIGludCBiaXRtYXBfcGFyc2VsaXN0X3VzZXIoY29uc3QgY2hhciAqdWJ1ZiwgdW5zaWdu ZWQgaW50IHVsZW4sCjE0NDc0OiAgICB1bnNpZ25lZCBsb25nICpkc3QsIGludCBuYml0cyk7CjE0 NDc0OiBleHRlcm4gdm9pZCBiaXRtYXBfcmVtYXAodW5zaWduZWQgbG9uZyAqZHN0LCBjb25zdCB1 bnNpZ25lZCBsb25nICpzcmMsCjE0NDc0OiAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm9sZCwgY29u c3QgdW5zaWduZWQgbG9uZyAqbmV3LCB1bnNpZ25lZCBpbnQgbmJpdHMpOwoxNDQ3NDogZXh0ZXJu IGludCBiaXRtYXBfYml0cmVtYXAoaW50IG9sZGJpdCwKMTQ0NzQ6ICAgY29uc3QgdW5zaWduZWQg bG9uZyAqb2xkLCBjb25zdCB1bnNpZ25lZCBsb25nICpuZXcsIGludCBiaXRzKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIGJpdG1hcF9vbnRvKHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5zaWduZWQg bG9uZyAqb3JpZywKMTQ0NzQ6ICAgY29uc3QgdW5zaWduZWQgbG9uZyAqcmVsbWFwLCB1bnNpZ25l ZCBpbnQgYml0cyk7CjE0NDc0OiBleHRlcm4gdm9pZCBiaXRtYXBfZm9sZCh1bnNpZ25lZCBsb25n ICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm9yaWcsCjE0NDc0OiAgIHVuc2lnbmVkIGludCBz eiwgdW5zaWduZWQgaW50IG5iaXRzKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYml0bWFwX2ZpbmRfZnJl ZV9yZWdpb24odW5zaWduZWQgbG9uZyAqYml0bWFwLCB1bnNpZ25lZCBpbnQgYml0cywgaW50IG9y ZGVyKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGJpdG1hcF9yZWxlYXNlX3JlZ2lvbih1bnNpZ25lZCBs b25nICpiaXRtYXAsIHVuc2lnbmVkIGludCBwb3MsIGludCBvcmRlcik7CjE0NDc0OiBleHRlcm4g aW50IGJpdG1hcF9hbGxvY2F0ZV9yZWdpb24odW5zaWduZWQgbG9uZyAqYml0bWFwLCB1bnNpZ25l ZCBpbnQgcG9zLCBpbnQgb3JkZXIpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGludCBiaXRtYXBfb3JkX3RvX3Bv cyhjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAsIHVuc2lnbmVkIGludCBvcmQsIHVuc2lnbmVk IGludCBuYml0cyk7CjE0NDc0OiBleHRlcm4gaW50IGJpdG1hcF9wcmludF90b19wYWdlYnVmKGJv b2wgbGlzdCwgY2hhciAqYnVmLAoxNDQ3NDogICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm1h c2twLCBpbnQgbm1hc2tiaXRzKTsKMTQ0NzQ6ICMgMjI5ICIuL2luY2x1ZGUvbGludXgvYml0bWFw LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGJpdG1hcF96ZXJvKHVuc2lnbmVkIGxvbmcgKmRzdCwgdW5zaWduZWQg aW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGludCBsZW4gPSAoKChuYml0cykg KyAoKHNpemVvZihsb25nKSAqIDgpKSAtIDEpIC8gKChzaXplb2YobG9uZykgKiA4KSkpICogc2l6 ZW9mKHVuc2lnbmVkIGxvbmcpOwoxNDQ3NDogIG1lbXNldChkc3QsIDAsIGxlbik7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgYml0bWFwX2ZpbGwodW5zaWduZWQgbG9uZyAqZHN0LCB1bnNp Z25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgaW50IGxlbiA9ICgoKG5i aXRzKSArICgoc2l6ZW9mKGxvbmcpICogOCkpIC0gMSkgLyAoKHNpemVvZihsb25nKSAqIDgpKSkg KiBzaXplb2YodW5zaWduZWQgbG9uZyk7CjE0NDc0OiAgbWVtc2V0KGRzdCwgMHhmZiwgbGVuKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBiaXRtYXBfY29weSh1bnNpZ25lZCBsb25nICpk c3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCBuYml0 cykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbGVuID0gKCgobmJpdHMpICsgKChzaXpl b2YobG9uZykgKiA4KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkpKSAqIHNpemVvZih1bnNp Z25lZCBsb25nKTsKMTQ0NzQ6ICBtZW1jcHkoZHN0LCBzcmMsIGxlbik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYml0bWFwX2NvcHlfY2xlYXJf dGFpbCh1bnNpZ25lZCBsb25nICpkc3QsCjE0NDc0OiAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNy YywgdW5zaWduZWQgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDogIGJpdG1hcF9jb3B5KGRzdCwg c3JjLCBuYml0cyk7CjE0NDc0OiAgaWYgKG5iaXRzICUgNjQpCjE0NDc0OiAgIGRzdFtuYml0cyAv IDY0XSAmPSAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZv aWQgYml0bWFwX2Zyb21fYXJyMzIodW5zaWduZWQgbG9uZyAqYml0bWFwLCBjb25zdCB1MzIgKmJ1 ZiwKMTQ0NzQ6ICAgICAgICB1bnNpZ25lZCBpbnQgbmJpdHMpOwoxNDQ3NDogZXh0ZXJuIHZvaWQg Yml0bWFwX3RvX2FycjMyKHUzMiAqYnVmLCBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAsCjE0 NDc0OiAgICAgICAgdW5zaWduZWQgaW50IG5iaXRzKTsKMTQ0NzQ6ICMgMjc3ICIuL2luY2x1ZGUv bGludXgvYml0bWFwLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgYml0bWFwX2FuZCh1bnNpZ25lZCBsb25nICpkc3Qs IGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYzEsCjE0NDc0OiAgICBjb25zdCB1bnNpZ25lZCBsb25n ICpzcmMyLCB1bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKChfX2J1aWx0 aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAobmJpdHMpID4gMCkpCjE0 NDc0OiAgIHJldHVybiAoKmRzdCA9ICpzcmMxICYgKnNyYzIgJiAofjBVTCA+PiAoLShuYml0cykg JiAoNjQgLSAxKSkpKSAhPSAwOwoxNDQ3NDogIHJldHVybiBfX2JpdG1hcF9hbmQoZHN0LCBzcmMx LCBzcmMyLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYml0bWFwX29yKHVu c2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKMTQ0NzQ6ICAgIGNv bnN0IHVuc2lnbmVkIGxvbmcgKnNyYzIsIHVuc2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0 NzQ6ICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYm IChuYml0cykgPiAwKSkKMTQ0NzQ6ICAgKmRzdCA9ICpzcmMxIHwgKnNyYzI7CjE0NDc0OiAgZWxz ZQoxNDQ3NDogICBfX2JpdG1hcF9vcihkc3QsIHNyYzEsIHNyYzIsIG5iaXRzKTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBiaXRtYXBfeG9yKHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3Qg dW5zaWduZWQgbG9uZyAqc3JjMSwKMTQ0NzQ6ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYzIs IHVuc2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRpbl9jb25z dGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0NzQ6ICAg KmRzdCA9ICpzcmMxIF4gKnNyYzI7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICBfX2JpdG1hcF94b3Io ZHN0LCBzcmMxLCBzcmMyLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRt YXBfYW5kbm90KHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwK MTQ0NzQ6ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYzIsIHVuc2lnbmVkIGludCBuYml0cykK MTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJp dHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0NzQ6ICAgcmV0dXJuICgqZHN0ID0gKnNyYzEg JiB+KCpzcmMyKSAmICh+MFVMID4+ICgtKG5iaXRzKSAmICg2NCAtIDEpKSkpICE9IDA7CjE0NDc0 OiAgcmV0dXJuIF9fYml0bWFwX2FuZG5vdChkc3QsIHNyYzEsIHNyYzIsIG5iaXRzKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBiaXRtYXBfY29tcGxlbWVudCh1bnNpZ25lZCBsb25nICpk c3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCBuYml0 cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAo bmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0NzQ6ICAgKmRzdCA9IH4oKnNyYyk7CjE0 NDc0OiAgZWxzZQoxNDQ3NDogICBfX2JpdG1hcF9jb21wbGVtZW50KGRzdCwgc3JjLCBuYml0cyk7 CjE0NDc0OiB9CjE0NDc0OiAjIDMyNyAiLi9pbmNsdWRlL2xpbnV4L2JpdG1hcC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IGJpdG1hcF9lcXVhbChjb25zdCB1bnNpZ25lZCBsb25nICpzcmMxLAoxNDQ3NDogICAgY29u c3QgdW5zaWduZWQgbG9uZyAqc3JjMiwgdW5zaWduZWQgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3 NDogIGlmICgoX19idWlsdGluX2NvbnN0YW50X3AobmJpdHMpICYmIChuYml0cykgPD0gNjQgJiYg KG5iaXRzKSA+IDApKQoxNDQ3NDogICByZXR1cm4gISgoKnNyYzEgXiAqc3JjMikgJiAofjBVTCA+ PiAoLShuYml0cykgJiAoNjQgLSAxKSkpKTsKMTQ0NzQ6ICBpZiAoX19idWlsdGluX2NvbnN0YW50 X3AobmJpdHMgJiAoOCAtIDEpKSAmJgoxNDQ3NDogICAgICAoKChuYml0cykgJiAoKHR5cGVvZihu Yml0cykpKDgpIC0gMSkpID09IDApKQoxNDQ3NDogICByZXR1cm4gIW1lbWNtcChzcmMxLCBzcmMy LCBuYml0cyAvIDgpOwoxNDQ3NDogIHJldHVybiBfX2JpdG1hcF9lcXVhbChzcmMxLCBzcmMyLCBu Yml0cyk7CjE0NDc0OiB9CjE0NDc0OiAjIDM0NyAiLi9pbmNsdWRlL2xpbnV4L2JpdG1hcC5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCBiaXRtYXBfb3JfZXF1YWwoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKMTQ0 NzQ6ICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMyLAoxNDQ3NDogICAgICAgIGNvbnN0 IHVuc2lnbmVkIGxvbmcgKnNyYzMsCjE0NDc0OiAgICAgICAgdW5zaWduZWQgaW50IG5iaXRzKQox NDQ3NDogewoxNDQ3NDogIGlmICghKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJp dHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0NzQ6ICAgcmV0dXJuIF9fYml0bWFwX29yX2Vx dWFsKHNyYzEsIHNyYzIsIHNyYzMsIG5iaXRzKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAhKCgo KnNyYzEgfCAqc3JjMikgXiAqc3JjMykgJiAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkp KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJpdG1hcF9pbnRlcnNlY3RzKGNvbnN0IHVu c2lnbmVkIGxvbmcgKnNyYzEsCjE0NDc0OiAgICBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMyLCB1 bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKChfX2J1aWx0aW5fY29uc3Rh bnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAobmJpdHMpID4gMCkpCjE0NDc0OiAgIHJl dHVybiAoKCpzcmMxICYgKnNyYzIpICYgKH4wVUwgPj4gKC0obmJpdHMpICYgKDY0IC0gMSkpKSkg IT0gMDsKMTQ0NzQ6ICBlbHNlCjE0NDc0OiAgIHJldHVybiBfX2JpdG1hcF9pbnRlcnNlY3RzKHNy YzEsIHNyYzIsIG5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJpdG1hcF9zdWJz ZXQoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKMTQ0NzQ6ICAgIGNvbnN0IHVuc2lnbmVkIGxv bmcgKnNyYzIsIHVuc2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoKF9fYnVp bHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkK MTQ0NzQ6ICAgcmV0dXJuICEgKCgqc3JjMSAmIH4oKnNyYzIpKSAmICh+MFVMID4+ICgtKG5iaXRz KSAmICg2NCAtIDEpKSkpOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgcmV0dXJuIF9fYml0bWFwX3N1 YnNldChzcmMxLCBzcmMyLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRt YXBfZW1wdHkoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjLCB1bnNpZ25lZCBuYml0cykKMTQ0NzQ6 IHsKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9 IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0NzQ6ICAgcmV0dXJuICEgKCpzcmMgJiAofjBVTCA+PiAo LShuYml0cykgJiAoNjQgLSAxKSkpKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBmaW5kX2ZpcnN0 X2JpdChzcmMsIG5iaXRzKSA9PSBuYml0czsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJp dG1hcF9mdWxsKGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywgdW5zaWduZWQgaW50IG5iaXRzKQox NDQ3NDogewoxNDQ3NDogIGlmICgoX19idWlsdGluX2NvbnN0YW50X3AobmJpdHMpICYmIChuYml0 cykgPD0gNjQgJiYgKG5iaXRzKSA+IDApKQoxNDQ3NDogICByZXR1cm4gISAofigqc3JjKSAmICh+ MFVMID4+ICgtKG5iaXRzKSAmICg2NCAtIDEpKSkpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGZp bmRfZmlyc3RfemVyb19iaXQoc3JjLCBuYml0cykgPT0gbmJpdHM7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IGJpdG1hcF93ZWln aHQoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjLCB1bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7 CjE0NDc0OiAgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2 NCAmJiAobmJpdHMpID4gMCkpCjE0NDc0OiAgIHJldHVybiBod2VpZ2h0X2xvbmcoKnNyYyAmICh+ MFVMID4+ICgtKG5iaXRzKSAmICg2NCAtIDEpKSkpOwoxNDQ3NDogIHJldHVybiBfX2JpdG1hcF93 ZWlnaHQoc3JjLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBiaXRtYXBfc2V0KHVuc2lnbmVkIGxvbmcgKm1hcCwg dW5zaWduZWQgaW50IHN0YXJ0LAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7 CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiBuYml0cyA9PSAxKQox NDQ3NDogICBfX3NldF9iaXQoc3RhcnQsIG1hcCk7CjE0NDc0OiAgZWxzZSBpZiAoX19idWlsdGlu X2NvbnN0YW50X3Aoc3RhcnQgJiAoOCAtIDEpKSAmJgoxNDQ3NDogICAgKCgoc3RhcnQpICYgKCh0 eXBlb2Yoc3RhcnQpKSg4KSAtIDEpKSA9PSAwKSAmJgoxNDQ3NDogICAgX19idWlsdGluX2NvbnN0 YW50X3AobmJpdHMgJiAoOCAtIDEpKSAmJgoxNDQ3NDogICAgKCgobmJpdHMpICYgKCh0eXBlb2Yo bmJpdHMpKSg4KSAtIDEpKSA9PSAwKSkKMTQ0NzQ6ICAgbWVtc2V0KChjaGFyICopbWFwICsgc3Rh cnQgLyA4LCAweGZmLCBuYml0cyAvIDgpOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgX19iaXRtYXBf c2V0KG1hcCwgc3RhcnQsIG5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGJpdG1hcF9jbGVhcih1bnNpZ25lZCBsb25n ICptYXAsIHVuc2lnbmVkIGludCBzdGFydCwKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IG5iaXRzKQox NDQ3NDogewoxNDQ3NDogIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgbmJpdHMg PT0gMSkKMTQ0NzQ6ICAgX19jbGVhcl9iaXQoc3RhcnQsIG1hcCk7CjE0NDc0OiAgZWxzZSBpZiAo X19idWlsdGluX2NvbnN0YW50X3Aoc3RhcnQgJiAoOCAtIDEpKSAmJgoxNDQ3NDogICAgKCgoc3Rh cnQpICYgKCh0eXBlb2Yoc3RhcnQpKSg4KSAtIDEpKSA9PSAwKSAmJgoxNDQ3NDogICAgX19idWls dGluX2NvbnN0YW50X3AobmJpdHMgJiAoOCAtIDEpKSAmJgoxNDQ3NDogICAgKCgobmJpdHMpICYg KCh0eXBlb2YobmJpdHMpKSg4KSAtIDEpKSA9PSAwKSkKMTQ0NzQ6ICAgbWVtc2V0KChjaGFyICop bWFwICsgc3RhcnQgLyA4LCAwLCBuYml0cyAvIDgpOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgX19i aXRtYXBfY2xlYXIobWFwLCBzdGFydCwgbmJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGJpdG1hcF9zaGlmdF9yaWdodCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVk IGxvbmcgKnNyYywKMTQ0NzQ6ICAgICB1bnNpZ25lZCBpbnQgc2hpZnQsIHVuc2lnbmVkIGludCBu Yml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAm JiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0NzQ6ICAgKmRzdCA9ICgqc3JjICYg KH4wVUwgPj4gKC0obmJpdHMpICYgKDY0IC0gMSkpKSkgPj4gc2hpZnQ7CjE0NDc0OiAgZWxzZQox NDQ3NDogICBfX2JpdG1hcF9zaGlmdF9yaWdodChkc3QsIHNyYywgc2hpZnQsIG5iaXRzKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBiaXRtYXBfc2hpZnRfbGVmdCh1bnNpZ25lZCBsb25n ICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKMTQ0NzQ6ICAgICB1bnNpZ25lZCBpbnQg c2hpZnQsIHVuc2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRp bl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0 NzQ6ICAgKmRzdCA9ICgqc3JjIDw8IHNoaWZ0KSAmICh+MFVMID4+ICgtKG5iaXRzKSAmICg2NCAt IDEpKSk7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICBfX2JpdG1hcF9zaGlmdF9sZWZ0KGRzdCwgc3Jj LCBzaGlmdCwgbmJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGJpdG1hcF9yZXBs YWNlKHVuc2lnbmVkIGxvbmcgKmRzdCwKMTQ0NzQ6ICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcg Km9sZCwKMTQ0NzQ6ICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm5ldywKMTQ0NzQ6ICAgICAg IGNvbnN0IHVuc2lnbmVkIGxvbmcgKm1hc2ssCjE0NDc0OiAgICAgICB1bnNpZ25lZCBpbnQgbmJp dHMpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYg KG5iaXRzKSA8PSA2NCAmJiAobmJpdHMpID4gMCkpCjE0NDc0OiAgICpkc3QgPSAoKm9sZCAmIH4o Km1hc2spKSB8ICgqbmV3ICYgKm1hc2spOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgX19iaXRtYXBf cmVwbGFjZShkc3QsIG9sZCwgbmV3LCBtYXNrLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgYml0bWFwX25leHRfY2xlYXJfcmVnaW9uKHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwK MTQ0NzQ6ICAgICAgICAgIHVuc2lnbmVkIGludCAqcnMsIHVuc2lnbmVkIGludCAqcmUsCjE0NDc0 OiAgICAgICAgICB1bnNpZ25lZCBpbnQgZW5kKQoxNDQ3NDogewoxNDQ3NDogICpycyA9IGZpbmRf bmV4dF96ZXJvX2JpdChiaXRtYXAsIGVuZCwgKnJzKTsKMTQ0NzQ6ICAqcmUgPSBmaW5kX25leHRf Yml0KGJpdG1hcCwgZW5kLCAqcnMgKyAxKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBi aXRtYXBfbmV4dF9zZXRfcmVnaW9uKHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwKMTQ0NzQ6ICAgICAg ICB1bnNpZ25lZCBpbnQgKnJzLCB1bnNpZ25lZCBpbnQgKnJlLAoxNDQ3NDogICAgICAgIHVuc2ln bmVkIGludCBlbmQpCjE0NDc0OiB7CjE0NDc0OiAgKnJzID0gZmluZF9uZXh0X2JpdChiaXRtYXAs IGVuZCwgKnJzKTsKMTQ0NzQ6ICAqcmUgPSBmaW5kX25leHRfemVyb19iaXQoYml0bWFwLCBlbmQs ICpycyArIDEpOwoxNDQ3NDogfQoxNDQ3NDogIyA1MzUgIi4vaW5jbHVkZS9saW51eC9iaXRtYXAu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgYml0bWFwX2Zyb21fdTY0KHVuc2lnbmVkIGxvbmcgKmRzdCwgdTY0IG1h c2spCjE0NDc0OiB7CjE0NDc0OiAgZHN0WzBdID0gbWFzayAmICh+MFVMKTsKMTQ0NzQ6IAoxNDQ3 NDogIGlmIChzaXplb2YobWFzaykgPiBzaXplb2YodW5zaWduZWQgbG9uZykpCjE0NDc0OiAgIGRz dFsxXSA9IG1hc2sgPj4gMzI7CjE0NDc0OiB9CjE0NDc0OiAjIDU1MSAiLi9pbmNsdWRlL2xpbnV4 L2JpdG1hcC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBiaXRtYXBfZ2V0X3ZhbHVlOChjb25zdCB1 bnNpZ25lZCBsb25nICptYXAsCjE0NDc0OiAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQp CjE0NDc0OiB7CjE0NDc0OiAgY29uc3Qgc2l6ZV90IGluZGV4ID0gKChzdGFydCkgLyA2NCk7CjE0 NDc0OiAgY29uc3QgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSBzdGFydCAlIDY0OwoxNDQ3NDogCjE0 NDc0OiAgcmV0dXJuIChtYXBbaW5kZXhdID4+IG9mZnNldCkgJiAweEZGOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGJpdG1hcF9zZXRfdmFsdWU4KHVuc2lnbmVkIGxvbmcgKm1hcCwgdW5zaWduZWQgbG9u ZyB2YWx1ZSwKMTQ0NzQ6ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQpCjE0NDc0OiB7CjE0 NDc0OiAgY29uc3Qgc2l6ZV90IGluZGV4ID0gKChzdGFydCkgLyA2NCk7CjE0NDc0OiAgY29uc3Qg dW5zaWduZWQgbG9uZyBvZmZzZXQgPSBzdGFydCAlIDY0OwoxNDQ3NDogCjE0NDc0OiAgbWFwW2lu ZGV4XSAmPSB+KDB4RkZVTCA8PCBvZmZzZXQpOwoxNDQ3NDogIG1hcFtpbmRleF0gfD0gdmFsdWUg PDwgb2Zmc2V0OwoxNDQ3NDogfQoxNDQ3NDogIyAxMyAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2su aCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVj dCBjcHVtYXNrIHsgdW5zaWduZWQgbG9uZyBiaXRzWygoKDgpICsgKChzaXplb2YobG9uZykgKiA4 KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkpKV07IH0gY3B1bWFza190OwoxNDQ3NDogIyAz OSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQg bnJfY3B1X2lkczsKMTQ0NzQ6ICMgOTAgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0 OiBleHRlcm4gc3RydWN0IGNwdW1hc2sgX19jcHVfcG9zc2libGVfbWFzazsKMTQ0NzQ6IGV4dGVy biBzdHJ1Y3QgY3B1bWFzayBfX2NwdV9vbmxpbmVfbWFzazsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qg Y3B1bWFzayBfX2NwdV9wcmVzZW50X21hc2s7CjE0NDc0OiBleHRlcm4gc3RydWN0IGNwdW1hc2sg X19jcHVfYWN0aXZlX21hc2s7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIGF0b21pY190IF9fbnVtX29ubGluZV9jcHVzOwoxNDQ3NDogIyAxMTAg Ii4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgbnVtX29ubGlu ZV9jcHVzKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19yZWFkKCZfX251bV9v bmxpbmVfY3B1cyk7CjE0NDc0OiB9CjE0NDc0OiAjIDEzMiAiLi9pbmNsdWRlL2xpbnV4L2NwdW1h c2suaCIKMTQ0NzQ6IGV4dGVybiBjcHVtYXNrX3QgY3B1c19ib290ZWRfb25jZV9tYXNrOwoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGNwdV9tYXhfYml0c193YXJuKHVuc2lnbmVkIGludCBjcHUsIHVuc2ln bmVkIGludCBiaXRzKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBjcHVtYXNrX2NoZWNrKHVuc2lnbmVk IGludCBjcHUpCjE0NDc0OiB7CjE0NDc0OiAgY3B1X21heF9iaXRzX3dhcm4oY3B1LCAoKHVuc2ln bmVkIGludCk4KSk7CjE0NDc0OiAgcmV0dXJuIGNwdTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjEyICIu L2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGNwdW1hc2tfZmly c3QoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyY3ApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZp bmRfZmlyc3RfYml0KCgoc3JjcCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGludCBjcHVtYXNrX2xhc3QoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNy Y3ApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZpbmRfbGFzdF9iaXQoKChzcmNwKS0+Yml0cyks ICgodW5zaWduZWQgaW50KTgpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdW5zaWduZWQgaW50 IGNwdW1hc2tfbmV4dChpbnQgbiwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyY3ApOwoxNDQ3NDog IyAyMzcgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgY3B1 bWFza19uZXh0X3plcm8oaW50IG4sIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmNwKQoxNDQ3NDog ewoxNDQ3NDogCjE0NDc0OiAgaWYgKG4gIT0gLTEpCjE0NDc0OiAgIGNwdW1hc2tfY2hlY2sobik7 CjE0NDc0OiAgcmV0dXJuIGZpbmRfbmV4dF96ZXJvX2JpdCgoKHNyY3ApLT5iaXRzKSwgKCh1bnNp Z25lZCBpbnQpOCksIG4rMSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGludCBjcHVtYXNrX25l eHRfYW5kKGludCBuLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqLCBjb25zdCBzdHJ1Y3QgY3B1bWFz ayAqKTsKMTQ0NzQ6IGludCBjcHVtYXNrX2FueV9idXQoY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1h c2ssIHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDogdW5zaWduZWQgaW50IGNwdW1hc2tfbG9jYWxf c3ByZWFkKHVuc2lnbmVkIGludCBpLCBpbnQgbm9kZSk7CjE0NDc0OiAjIDI3MyAiLi9pbmNsdWRl L2xpbnV4L2NwdW1hc2suaCIKMTQ0NzQ6IGV4dGVybiBpbnQgY3B1bWFza19uZXh0X3dyYXAoaW50 IG4sIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCBpbnQgc3RhcnQsIGJvb2wgd3JhcCk7CjE0 NDc0OiAjIDMyNSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1bWFz a19zZXRfY3B1KHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBjcHVtYXNrICpkc3RwKQoxNDQ3NDog ewoxNDQ3NDogIHNldF9iaXQoY3B1bWFza19jaGVjayhjcHUpLCAoKGRzdHApLT5iaXRzKSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19jcHVtYXNrX3NldF9jcHUodW5zaWduZWQgaW50 IGNwdSwgc3RydWN0IGNwdW1hc2sgKmRzdHApCjE0NDc0OiB7CjE0NDc0OiAgX19zZXRfYml0KGNw dW1hc2tfY2hlY2soY3B1KSwgKChkc3RwKS0+Yml0cykpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNw dW1hc2tfY2xlYXJfY3B1KGludCBjcHUsIHN0cnVjdCBjcHVtYXNrICpkc3RwKQoxNDQ3NDogewox NDQ3NDogIGNsZWFyX2JpdChjcHVtYXNrX2NoZWNrKGNwdSksICgoZHN0cCktPmJpdHMpKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2NwdW1hc2tfY2xlYXJfY3B1KGludCBjcHUsIHN0 cnVjdCBjcHVtYXNrICpkc3RwKQoxNDQ3NDogewoxNDQ3NDogIF9fY2xlYXJfYml0KGNwdW1hc2tf Y2hlY2soY3B1KSwgKChkc3RwKS0+Yml0cykpOwoxNDQ3NDogfQoxNDQ3NDogIyAzNTggIi4vaW5j bHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza190ZXN0X2NwdShpbnQgY3B1 LCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1bWFzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g dGVzdF9iaXQoY3B1bWFza19jaGVjayhjcHUpLCAoKChjcHVtYXNrKSktPmJpdHMpKTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgMzcyICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNw dW1hc2tfdGVzdF9hbmRfc2V0X2NwdShpbnQgY3B1LCBzdHJ1Y3QgY3B1bWFzayAqY3B1bWFzaykK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGVzdF9hbmRfc2V0X2JpdChjcHVtYXNrX2NoZWNrKGNw dSksICgoY3B1bWFzayktPmJpdHMpKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzg2ICIuL2luY2x1ZGUv bGludXgvY3B1bWFzay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNwdW1hc2tfdGVzdF9hbmRfY2xlYXJfY3B1KGlu dCBjcHUsIHN0cnVjdCBjcHVtYXNrICpjcHVtYXNrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0 ZXN0X2FuZF9jbGVhcl9iaXQoY3B1bWFza19jaGVjayhjcHUpLCAoKGNwdW1hc2spLT5iaXRzKSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBjcHVtYXNrX3NldGFsbChzdHJ1Y3QgY3B1bWFzayAqZHN0cCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBiaXRtYXBfZmlsbCgoKGRzdHApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1 bWFza19jbGVhcihzdHJ1Y3QgY3B1bWFzayAqZHN0cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBf emVybygoKGRzdHApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkpOwoxNDQ3NDogfQoxNDQ3NDog IyA0MTcgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza19hbmQo c3RydWN0IGNwdW1hc2sgKmRzdHAsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGNwdW1h c2sgKnNyYzFwLAoxNDQ3NDogICAgICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmMycCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYml0bWFwX2FuZCgoKGRzdHApLT5iaXRzKSwgKChzcmMx cCktPmJpdHMpLAoxNDQ3NDogICAgICAgICAgICAoKHNyYzJwKS0+Yml0cyksICgodW5zaWduZWQg aW50KTgpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjcHVtYXNrX29yKHN0cnVjdCBjcHVtYXNrICpk c3RwLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMXAsCjE0NDc0OiAgICAgICAgICBjb25zdCBz dHJ1Y3QgY3B1bWFzayAqc3JjMnApCjE0NDc0OiB7CjE0NDc0OiAgYml0bWFwX29yKCgoZHN0cCkt PmJpdHMpLCAoKHNyYzFwKS0+Yml0cyksCjE0NDc0OiAgICAgICAgICAgKChzcmMycCktPmJpdHMp LCAoKHVuc2lnbmVkIGludCk4KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1bWFza194b3Ioc3Ry dWN0IGNwdW1hc2sgKmRzdHAsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sg KnNyYzFwLAoxNDQ3NDogICAgICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmMycCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBfeG9yKCgoZHN0cCktPmJpdHMpLCAoKHNyYzFwKS0+Yml0cyks CjE0NDc0OiAgICAgICAgICAgICgoc3JjMnApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkpOwox NDQ3NDogfQoxNDQ3NDogIyA0NjAgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgY3B1bWFza19hbmRub3Qoc3RydWN0IGNwdW1hc2sgKmRzdHAsCjE0NDc0OiAgICAgICBjb25z dCBzdHJ1Y3QgY3B1bWFzayAqc3JjMXAsCjE0NDc0OiAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFz ayAqc3JjMnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJpdG1hcF9hbmRub3QoKChkc3RwKS0+ Yml0cyksICgoc3JjMXApLT5iaXRzKSwKMTQ0NzQ6ICAgICAgICAoKHNyYzJwKS0+Yml0cyksICgo dW5zaWduZWQgaW50KTgpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1bWFza19jb21wbGVtZW50KHN0cnVjdCBj cHVtYXNrICpkc3RwLAoxNDQ3NDogICAgICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmNw KQoxNDQ3NDogewoxNDQ3NDogIGJpdG1hcF9jb21wbGVtZW50KCgoZHN0cCktPmJpdHMpLCAoKHNy Y3ApLT5iaXRzKSwKMTQ0NzQ6ICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpOCkpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBjcHVtYXNrX2VxdWFsKGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmMxcCwKMTQ0NzQ6ICAg ICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJp dG1hcF9lcXVhbCgoKHNyYzFwKS0+Yml0cyksICgoc3JjMnApLT5iaXRzKSwKMTQ0NzQ6ICAgICAg ICAoKHVuc2lnbmVkIGludCk4KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgY3B1bWFza19vcl9lcXVh bChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMXAsCjE0NDc0OiAgICAgICAgIGNvbnN0IHN0cnVj dCBjcHVtYXNrICpzcmMycCwKMTQ0NzQ6ICAgICAgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNy YzNwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBiaXRtYXBfb3JfZXF1YWwoKChzcmMxcCktPmJp dHMpLCAoKHNyYzJwKS0+Yml0cyksCjE0NDc0OiAgICAgICAgICAgKChzcmMzcCktPmJpdHMpLCAo KHVuc2lnbmVkIGludCk4KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGNwdW1hc2tfaW50ZXJzZWN0cyhjb25zdCBz dHJ1Y3QgY3B1bWFzayAqc3JjMXAsCjE0NDc0OiAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFz ayAqc3JjMnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJpdG1hcF9pbnRlcnNlY3RzKCgoc3Jj MXApLT5iaXRzKSwgKChzcmMycCktPmJpdHMpLAoxNDQ3NDogICAgICAgICAgICAgKCh1bnNpZ25l ZCBpbnQpOCkpOwoxNDQ3NDogfQoxNDQ3NDogIyA1MjUgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNr LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgY3B1bWFza19zdWJzZXQoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyYzFw LAoxNDQ3NDogICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMnApCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGJpdG1hcF9zdWJzZXQoKChzcmMxcCktPmJpdHMpLCAoKHNyYzJwKS0+Yml0cyks CjE0NDc0OiAgICAgICAgICgodW5zaWduZWQgaW50KTgpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGNwdW1hc2tfZW1wdHkoY29u c3Qgc3RydWN0IGNwdW1hc2sgKnNyY3ApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJpdG1hcF9l bXB0eSgoKHNyY3ApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgY3B1bWFza19mdWxs KGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmNwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBiaXRt YXBfZnVsbCgoKHNyY3ApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBj cHVtYXNrX3dlaWdodChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYml0bWFwX3dlaWdodCgoKHNyY3ApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNwdW1hc2tfc2hpZnRfcmlnaHQoc3RydWN0IGNwdW1hc2sg KmRzdHAsCjE0NDc0OiAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmNwLCBpbnQg bikKMTQ0NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBfc2hpZnRfcmlnaHQoKChkc3RwKS0+Yml0cyksICgo c3JjcCktPmJpdHMpLCBuLAoxNDQ3NDogICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpOCkpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGNwdW1hc2tfc2hpZnRfbGVmdChzdHJ1Y3QgY3B1bWFzayAqZHN0 cCwKMTQ0NzQ6ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCwgaW50IG4pCjE0 NDc0OiB7CjE0NDc0OiAgYml0bWFwX3NoaWZ0X2xlZnQoKChkc3RwKS0+Yml0cyksICgoc3JjcCkt PmJpdHMpLCBuLAoxNDQ3NDogICAgICAgICAgICAoKHVuc2lnbmVkIGludCk4KSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGNwdW1hc2tfY29weShzdHJ1Y3QgY3B1bWFzayAqZHN0cCwKMTQ0NzQ6ICAgICBjb25zdCBz dHJ1Y3QgY3B1bWFzayAqc3JjcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBfY29weSgoKGRzdHAp LT5iaXRzKSwgKChzcmNwKS0+Yml0cyksICgodW5zaWduZWQgaW50KTgpKTsKMTQ0NzQ6IH0KMTQ0 NzQ6ICMgNjM2ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNwdW1hc2tf cGFyc2VfdXNlcihjb25zdCBjaGFyICpidWYsIGludCBsZW4sCjE0NDc0OiAgICAgICAgICBzdHJ1 Y3QgY3B1bWFzayAqZHN0cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYml0bWFwX3BhcnNlX3Vz ZXIoYnVmLCBsZW4sICgoZHN0cCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7CjE0NDc0OiB9 CjE0NDc0OiAjIDY1MCAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBjcHVt YXNrX3BhcnNlbGlzdF91c2VyKGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGxlbiwKMTQ0NzQ6ICAgICAg ICAgIHN0cnVjdCBjcHVtYXNrICpkc3RwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBiaXRtYXBf cGFyc2VsaXN0X3VzZXIoYnVmLCBsZW4sICgoZHN0cCktPmJpdHMpLAoxNDQ3NDogICAgICAgICAg KCh1bnNpZ25lZCBpbnQpOCkpOwoxNDQ3NDogfQoxNDQ3NDogIyA2NjQgIi4vaW5jbHVkZS9saW51 eC9jcHVtYXNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza19wYXJzZShjb25zdCBjaGFyICpidWYsIHN0 cnVjdCBjcHVtYXNrICpkc3RwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBiaXRtYXBfcGFyc2Uo YnVmLCAofjBVKSwgKChkc3RwKS0+Yml0cyksICgodW5zaWduZWQgaW50KTgpKTsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgNjc2ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNwdWxp c3RfcGFyc2UoY29uc3QgY2hhciAqYnVmLCBzdHJ1Y3QgY3B1bWFzayAqZHN0cCkKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gYml0bWFwX3BhcnNlbGlzdChidWYsICgoZHN0cCktPmJpdHMpLCAoKHVu c2lnbmVkIGludCk4KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGludCBjcHVtYXNrX3NpemUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gKCgoKCh1bnNpZ25lZCBpbnQpOCkpICsgKChzaXplb2YobG9uZykgKiA4KSkgLSAxKSAv ICgoc2l6ZW9mKGxvbmcpICogOCkpKSAqIHNpemVvZihsb25nKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg NzQ5ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgY3B1 bWFzayBjcHVtYXNrX3Zhcl90WzFdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIGFsbG9jX2NwdW1hc2tfdmFyKGNwdW1hc2tfdmFyX3QgKm1hc2ssIGdmcF90IGZs YWdzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIGFsbG9jX2NwdW1hc2tfdmFyX25vZGUoY3B1bWFza192YXJfdCAqbWFzaywgZ2ZwX3Qg ZmxhZ3MsCjE0NDc0OiAgICAgICAgaW50IG5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHRy dWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgemFsbG9jX2NwdW1hc2tfdmFyKGNwdW1h c2tfdmFyX3QgKm1hc2ssIGdmcF90IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIGNwdW1hc2tfY2xl YXIoKm1hc2spOwoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIHphbGxvY19jcHVtYXNrX3Zhcl9ub2RlKGNwdW1hc2tfdmFyX3QgKm1hc2ssIGdmcF90IGZs YWdzLAoxNDQ3NDogICAgICAgIGludCBub2RlKQoxNDQ3NDogewoxNDQ3NDogIGNwdW1hc2tfY2xl YXIoKm1hc2spOwoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGFsbG9jX2Jvb3RtZW1fY3B1bWFza192YXIoY3B1bWFza192YXJfdCAqbWFzaykKMTQ0NzQ6 IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmcmVlX2NwdW1hc2tfdmFyKGNwdW1hc2tf dmFyX3QgbWFzaykKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmcmVlX2Jv b3RtZW1fY3B1bWFza192YXIoY3B1bWFza192YXJfdCBtYXNrKQoxNDQ3NDogewoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sIGNwdW1hc2tfYXZhaWxhYmxlKGNwdW1hc2tfdmFyX3QgbWFzaykK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGxvbmcgY3B1X2FsbF9i aXRzWygoKDgpICsgKChzaXplb2YobG9uZykgKiA4KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICog OCkpKV07CjE0NDc0OiAjIDgwOSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKMTQ0NzQ6IHZv aWQgaW5pdF9jcHVfcHJlc2VudChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjKTsKMTQ0NzQ6IHZv aWQgaW5pdF9jcHVfcG9zc2libGUoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyYyk7CjE0NDc0OiB2 b2lkIGluaXRfY3B1X29ubGluZShjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjKTsKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCByZXNldF9jcHVfcG9zc2libGVfbWFzayh2b2lkKQoxNDQ3NDogewoxNDQ3NDog IGJpdG1hcF96ZXJvKCgoJl9fY3B1X3Bvc3NpYmxlX21hc2spLT5iaXRzKSwgOCk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6IHNldF9jcHVfcG9zc2libGUodW5zaWduZWQgaW50 IGNwdSwgYm9vbCBwb3NzaWJsZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAocG9zc2libGUpCjE0NDc0 OiAgIGNwdW1hc2tfc2V0X2NwdShjcHUsICZfX2NwdV9wb3NzaWJsZV9tYXNrKTsKMTQ0NzQ6ICBl bHNlCjE0NDc0OiAgIGNwdW1hc2tfY2xlYXJfY3B1KGNwdSwgJl9fY3B1X3Bvc3NpYmxlX21hc2sp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBzZXRfY3B1X3ByZXNlbnQodW5z aWduZWQgaW50IGNwdSwgYm9vbCBwcmVzZW50KQoxNDQ3NDogewoxNDQ3NDogIGlmIChwcmVzZW50 KQoxNDQ3NDogICBjcHVtYXNrX3NldF9jcHUoY3B1LCAmX19jcHVfcHJlc2VudF9tYXNrKTsKMTQ0 NzQ6ICBlbHNlCjE0NDc0OiAgIGNwdW1hc2tfY2xlYXJfY3B1KGNwdSwgJl9fY3B1X3ByZXNlbnRf bWFzayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc2V0X2NwdV9vbmxpbmUodW5zaWdu ZWQgaW50IGNwdSwgYm9vbCBvbmxpbmUpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBzZXRf Y3B1X2FjdGl2ZSh1bnNpZ25lZCBpbnQgY3B1LCBib29sIGFjdGl2ZSkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBpZiAoYWN0aXZlKQoxNDQ3NDogICBjcHVtYXNrX3NldF9jcHUoY3B1LCAmX19jcHVfYWN0aXZl X21hc2spOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgY3B1bWFza19jbGVhcl9jcHUoY3B1LCAmX19j cHVfYWN0aXZlX21hc2spOwoxNDQ3NDogfQoxNDQ3NDogIyA4NjIgIi4vaW5jbHVkZS9saW51eC9j cHVtYXNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQgX19jaGVja19pc19iaXRtYXAoY29uc3QgdW5zaWduZWQgbG9u ZyAqYml0bWFwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAxOwoxNDQ3NDogfQoxNDQ3NDogIyA4 NzQgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiBleHRlcm4gY29uc3QgdW5zaWdu ZWQgbG9uZwoxNDQ3NDogIGNwdV9iaXRfYml0bWFwWzY0ICsxXVsoKCg4KSArICgoc2l6ZW9mKGxv bmcpICogOCkpIC0gMSkgLyAoKHNpemVvZihsb25nKSAqIDgpKSldOwoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBj b25zdCBzdHJ1Y3QgY3B1bWFzayAqZ2V0X2NwdV9tYXNrKHVuc2lnbmVkIGludCBjcHUpCjE0NDc0 OiB7CjE0NDc0OiAgY29uc3QgdW5zaWduZWQgbG9uZyAqcCA9IGNwdV9iaXRfYml0bWFwWzEgKyBj cHUgJSA2NF07CjE0NDc0OiAgcCAtPSBjcHUgLyA2NDsKMTQ0NzQ6ICByZXR1cm4gKChzdHJ1Y3Qg Y3B1bWFzayAqKSgxID8gKHApIDogKHZvaWQgKilzaXplb2YoX19jaGVja19pc19iaXRtYXAocCkp KSk7CjE0NDc0OiB9CjE0NDc0OiAjIDkxMSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHNzaXplX3QKMTQ0NzQ6IGNwdW1hcF9wcmludF90b19wYWdlYnVmKGJvb2wgbGlzdCwgY2hh ciAqYnVmLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gYml0bWFwX3ByaW50X3RvX3BhZ2VidWYobGlzdCwgYnVmLCAoKG1hc2spLT5iaXRzKSwKMTQ0 NzQ6ICAgICAgICAgICBucl9jcHVfaWRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9jcHVtYXNrLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNwdW1hc2tf dmFyX3QgY3B1X2NhbGxpbl9tYXNrOwoxNDQ3NDogZXh0ZXJuIGNwdW1hc2tfdmFyX3QgY3B1X2Nh bGxvdXRfbWFzazsKMTQ0NzQ6IGV4dGVybiBjcHVtYXNrX3Zhcl90IGNwdV9pbml0aWFsaXplZF9t YXNrOwoxNDQ3NDogZXh0ZXJuIGNwdW1hc2tfdmFyX3QgY3B1X3NpYmxpbmdfc2V0dXBfbWFzazsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0dXBfY3B1X2xvY2FsX21hc2tzKHZvaWQpOwox NDQ3NDogIyAxMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIgMgoxNDQ3NDogIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vbXNyLmgiIDEKMTQ0NzQ6ICMgMTMgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vbXNyLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1zciB7CjE0NDc0 OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgdTMyIGw7CjE0NDc0OiAgICB1 MzIgaDsKMTQ0NzQ6ICAgfTsKMTQ0NzQ6ICAgdTY0IHE7CjE0NDc0OiAgfTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtc3JfaW5mbyB7CjE0NDc0OiAgdTMyIG1zcl9ubzsKMTQ0NzQ6 ICBzdHJ1Y3QgbXNyIHJlZzsKMTQ0NzQ6ICBzdHJ1Y3QgbXNyICptc3JzOwoxNDQ3NDogIGludCBl cnI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbXNyX3JlZ3NfaW5mbyB7CjE0NDc0 OiAgdTMyICpyZWdzOwoxNDQ3NDogIGludCBlcnI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3Qgc2F2ZWRfbXNyIHsKMTQ0NzQ6ICBib29sIHZhbGlkOwoxNDQ3NDogIHN0cnVjdCBtc3Jf aW5mbyBpbmZvOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNhdmVkX21zcnMgewox NDQ3NDogIHVuc2lnbmVkIGludCBudW07CjE0NDc0OiAgc3RydWN0IHNhdmVkX21zciAqYXJyYXk7 CjE0NDc0OiB9OwoxNDQ3NDogIyA2OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIKMTQ0 NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oIiAxCjE0NDc0OiAjIDEy ICIuL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC1kZWZzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9zdGF0aWNfa2V5LmgiIDEKMTQ0NzQ6ICMgMTMgIi4vaW5jbHVkZS9saW51eC90cmFj ZXBvaW50LWRlZnMuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgdHJhY2VfcHJpbnRfZmxhZ3Mg ewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbWFzazsKMTQ0NzQ6ICBjb25zdCBjaGFyICpuYW1lOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRyYWNlX3ByaW50X2ZsYWdzX3U2NCB7CjE0 NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIG1hc2s7CjE0NDc0OiAgY29uc3QgY2hhciAqbmFtZTsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0cmFjZXBvaW50X2Z1bmMgewoxNDQ3NDog IHZvaWQgKmZ1bmM7CjE0NDc0OiAgdm9pZCAqZGF0YTsKMTQ0NzQ6ICBpbnQgcHJpbzsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0cmFjZXBvaW50IHsKMTQ0NzQ6ICBjb25zdCBjaGFy ICpuYW1lOwoxNDQ3NDogIHN0cnVjdCBzdGF0aWNfa2V5IGtleTsKMTQ0NzQ6ICBpbnQgKCpyZWdm dW5jKSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqdW5yZWdmdW5jKSh2b2lkKTsKMTQ0NzQ6ICBzdHJ1 Y3QgdHJhY2Vwb2ludF9mdW5jICpmdW5jczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogdHlwZWRlZiBjb25zdCBpbnQgdHJhY2Vwb2ludF9wdHJfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwIHsKMTQ0NzQ6ICBz dHJ1Y3QgdHJhY2Vwb2ludCAqdHA7CjE0NDc0OiAgdm9pZCAqYnBmX2Z1bmM7CjE0NDc0OiAgdTMy IG51bV9hcmdzOwoxNDQ3NDogIHUzMiB3cml0YWJsZV9zaXplOwoxNDQ3NDogfSBfX2F0dHJpYnV0 ZV9fKChfX2FsaWduZWRfXygzMikpKTsKMTQ0NzQ6ICMgNjkgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vbXNyLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB0cmFjZXBvaW50IF9fdHJh Y2Vwb2ludF9yZWFkX21zcjsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgdHJhY2Vwb2ludCBfX3RyYWNl cG9pbnRfd3JpdGVfbXNyOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB0cmFjZXBvaW50IF9fdHJhY2Vw b2ludF9yZHBtYzsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZG9fdHJhY2Vfd3JpdGVfbXNy KHVuc2lnbmVkIGludCBtc3IsIHU2NCB2YWwsIGludCBmYWlsZWQpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgZG9fdHJhY2VfcmVhZF9tc3IodW5zaWduZWQgaW50IG1zciwgdTY0IHZhbCwgaW50IGZhaWxl ZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBkb190cmFjZV9yZHBtYyh1bnNpZ25lZCBpbnQgbXNyLCB1 NjQgdmFsLCBpbnQgZmFpbGVkKTsKMTQ0NzQ6ICMgOTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v bXNyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fcmRtc3IodW5zaWduZWQgaW50IG1zcikKMTQ0NzQ6IHsKMTQ0NzQ6 ICB1bnNpZ25lZCBsb25nIGxvdywgaGlnaDsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgi MTogcmRtc3JcbiIKMTQ0NzQ6ICAgICAgICAiMjpcbiIKMTQ0NzQ6ICAgICAgICAiIC5wdXNoc2Vj dGlvbiBcIl9fZXhfdGFibGVcIixcImFcIlxuIiAiIC5iYWxpZ24gNFxuIiAiIC5sb25nICgiICIx YiIgIikgLSAuXG4iICIgLmxvbmcgKCIgIjJiIiAiKSAtIC5cbiIgIiAubG9uZyAoIiAiZXhfaGFu ZGxlcl9yZG1zcl91bnNhZmUiICIpIC0gLlxuIiAiIC5wb3BzZWN0aW9uXG4iCjE0NDc0OiAgICAg ICAgOiAiPWEiIChsb3cpLCAiPWQiIChoaWdoKSA6ICJjIiAobXNyKSk7CjE0NDc0OiAKMTQ0NzQ6 ICByZXR1cm4gKChsb3cpIHwgKGhpZ2gpIDw8IDMyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX193cm1zcih1bnNp Z25lZCBpbnQgbXNyLCB1MzIgbG93LCB1MzIgaGlnaCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gdm9s YXRpbGUoIjE6IHdybXNyXG4iCjE0NDc0OiAgICAgICAgIjI6XG4iCjE0NDc0OiAgICAgICAgIiAu cHVzaHNlY3Rpb24gXCJfX2V4X3RhYmxlXCIsXCJhXCJcbiIgIiAuYmFsaWduIDRcbiIgIiAubG9u ZyAoIiAiMWIiICIpIC0gLlxuIiAiIC5sb25nICgiICIyYiIgIikgLSAuXG4iICIgLmxvbmcgKCIg ImV4X2hhbmRsZXJfd3Jtc3JfdW5zYWZlIiAiKSAtIC5cbiIgIiAucG9wc2VjdGlvblxuIgoxNDQ3 NDogICAgICAgIDogOiAiYyIgKG1zciksICJhIihsb3cpLCAiZCIgKGhpZ2gpIDogIm1lbW9yeSIp OwoxNDQ3NDogfQoxNDQ3NDogIyAxMjUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNyLmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZlX3JlYWRfbXNyKHVuc2lnbmVkIGludCBtc3Ip CjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsKMTQ0NzQ6IAoxNDQ3NDog IHZhbCA9IF9fcmRtc3IobXNyKTsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChzdGF0aWNfa2V5X2ZhbHNl KCYoX190cmFjZXBvaW50X3JlYWRfbXNyKS5rZXkpKQoxNDQ3NDogICBkb190cmFjZV9yZWFkX21z cihtc3IsIHZhbCwgMCk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gdmFsOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZlX3JlYWRfbXNyX3NhZmUodW5zaWdu ZWQgaW50IG1zciwKMTQ0NzQ6ICAgICAgICAgICAgIGludCAqZXJyKQoxNDQ3NDogewoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgbG93LCBoaWdoOwoxNDQ3NDogCjE0NDc0OiAgYXNtIHZvbGF0aWxlKCIy OiByZG1zciA7IHhvciAlW2Vycl0sJVtlcnJdXG4iCjE0NDc0OiAgICAgICAgIjE6XG5cdCIKMTQ0 NzQ6ICAgICAgICAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuXHQiCjE0NDc0OiAgICAgICAgIjM6 IG1vdiAlW2ZhdWx0XSwlW2Vycl1cblx0IgoxNDQ3NDogICAgICAgICJ4b3JsICUlZWF4LCAlJWVh eFxuXHQiCjE0NDc0OiAgICAgICAgInhvcmwgJSVlZHgsICUlZWR4XG5cdCIKMTQ0NzQ6ICAgICAg ICAiam1wIDFiXG5cdCIKMTQ0NzQ6ICAgICAgICAiLnByZXZpb3VzXG5cdCIKMTQ0NzQ6ICAgICAg ICAiIC5wdXNoc2VjdGlvbiBcIl9fZXhfdGFibGVcIixcImFcIlxuIiAiIC5iYWxpZ24gNFxuIiAi IC5sb25nICgiICIyYiIgIikgLSAuXG4iICIgLmxvbmcgKCIgIjNiIiAiKSAtIC5cbiIgIiAubG9u ZyAoIiAiZXhfaGFuZGxlcl9kZWZhdWx0IiAiKSAtIC5cbiIgIiAucG9wc2VjdGlvblxuIgoxNDQ3 NDogICAgICAgIDogW2Vycl0gIj1yIiAoKmVyciksICI9YSIgKGxvdyksICI9ZCIgKGhpZ2gpCjE0 NDc0OiAgICAgICAgOiAiYyIgKG1zciksIFtmYXVsdF0gImkiICgtNSkpOwoxNDQ3NDogIGlmIChz dGF0aWNfa2V5X2ZhbHNlKCYoX190cmFjZXBvaW50X3JlYWRfbXNyKS5rZXkpKQoxNDQ3NDogICBk b190cmFjZV9yZWFkX21zcihtc3IsICgobG93KSB8IChoaWdoKSA8PCAzMiksICplcnIpOwoxNDQ3 NDogIHJldHVybiAoKGxvdykgfCAoaGlnaCkgPDwgMzIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpCjE0 NDc0OiBuYXRpdmVfd3JpdGVfbXNyKHVuc2lnbmVkIGludCBtc3IsIHUzMiBsb3csIHUzMiBoaWdo KQoxNDQ3NDogewoxNDQ3NDogIF9fd3Jtc3IobXNyLCBsb3csIGhpZ2gpOwoxNDQ3NDogCjE0NDc0 OiAgaWYgKHN0YXRpY19rZXlfZmFsc2UoJihfX3RyYWNlcG9pbnRfd3JpdGVfbXNyKS5rZXkpKQox NDQ3NDogICBkb190cmFjZV93cml0ZV9tc3IobXNyLCAoKHU2NCloaWdoIDw8IDMyIHwgbG93KSwg MCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKQoxNDQ3NDogbmF0aXZlX3dyaXRlX21zcl9zYWZlKHVuc2ln bmVkIGludCBtc3IsIHUzMiBsb3csIHUzMiBoaWdoKQoxNDQ3NDogewoxNDQ3NDogIGludCBlcnI7 CjE0NDc0OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoIjI6IHdybXNyIDsgeG9yICVbZXJyXSwlW2Vy cl1cbiIKMTQ0NzQ6ICAgICAgICAiMTpcblx0IgoxNDQ3NDogICAgICAgICIuc2VjdGlvbiAuZml4 dXAsXCJheFwiXG5cdCIKMTQ0NzQ6ICAgICAgICAiMzogIG1vdiAlW2ZhdWx0XSwlW2Vycl0gOyBq bXAgMWJcblx0IgoxNDQ3NDogICAgICAgICIucHJldmlvdXNcblx0IgoxNDQ3NDogICAgICAgICIg LnB1c2hzZWN0aW9uIFwiX19leF90YWJsZVwiLFwiYVwiXG4iICIgLmJhbGlnbiA0XG4iICIgLmxv bmcgKCIgIjJiIiAiKSAtIC5cbiIgIiAubG9uZyAoIiAiM2IiICIpIC0gLlxuIiAiIC5sb25nICgi ICJleF9oYW5kbGVyX2RlZmF1bHQiICIpIC0gLlxuIiAiIC5wb3BzZWN0aW9uXG4iCjE0NDc0OiAg ICAgICAgOiBbZXJyXSAiPWEiIChlcnIpCjE0NDc0OiAgICAgICAgOiAiYyIgKG1zciksICIwIiAo bG93KSwgImQiIChoaWdoKSwKMTQ0NzQ6ICAgICAgICAgIFtmYXVsdF0gImkiICgtNSkKMTQ0NzQ6 ICAgICAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6ICBpZiAoc3RhdGljX2tleV9mYWxzZSgmKF9fdHJh Y2Vwb2ludF93cml0ZV9tc3IpLmtleSkpCjE0NDc0OiAgIGRvX3RyYWNlX3dyaXRlX21zcihtc3Is ICgodTY0KWhpZ2ggPDwgMzIgfCBsb3cpLCBlcnIpOwoxNDQ3NDogIHJldHVybiBlcnI7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgcmRtc3Jfc2FmZV9yZWdzKHUzMiByZWdzWzhd KTsKMTQ0NzQ6IGV4dGVybiBpbnQgd3Jtc3Jfc2FmZV9yZWdzKHUzMiByZWdzWzhdKTsKMTQ0NzQ6 ICMgMjAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKSB1bnNpZ25lZCBsb25nIGxvbmcgcmR0c2Modm9pZCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxvdywgaGlnaDsKMTQ0NzQ6IAoxNDQ3NDogIGFz bSB2b2xhdGlsZSgicmR0c2MiIDogIj1hIiAobG93KSwgIj1kIiAoaGlnaCkpOwoxNDQ3NDogCjE0 NDc0OiAgcmV0dXJuICgobG93KSB8IChoaWdoKSA8PCAzMik7CjE0NDc0OiB9CjE0NDc0OiAjIDIx OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgdW5zaWduZWQgbG9uZyBsb25nIHJkdHNjX29yZGVyZWQodm9pZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxvdywgaGlnaDsKMTQ0NzQ6ICMgMjM2ICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci5oIgoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiIyBBTFQ6 IG9sZGluc3RyMlxuIiAiNjYxOlxuXHQiICJyZHRzYyIgIlxuNjYyOlxuIiAiIyBBTFQ6IHBhZGRp bmcyXG4iICIuc2tpcCAtKCgiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikgXiAoKCgi ICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCIgIjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIg IikpICYgLSgtKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIDwgKCIgIjY2NSIiMiIiZi0i IjY2NCIiMiIiZiIgIikpKSkpIiAiIC0gKCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoIiAi KCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCgoIiAiNjY1IiIxIiJmLSIiNjY0IiIx IiJmIiAiKSBeICgiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICIpKSAmIC0oLSgoIiAiNjY1IiIx IiJmLSIiNjY0IiIxIiJmIiAiKSA8ICgiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICIpKSkpKSIg IiAtICgiICI2NjJiLTY2MWIiICIpKSwgMHg5MFxuIiAiNjYzIiAiOlxuIiAiLnB1c2hzZWN0aW9u IC5hbHRpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAubG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIg IjY2NCIiMSIiZiAtIC5cbiIgIiAud29yZCAiICIoIDMqMzIrMTgpIiAiXG4iICIgLmJ5dGUgIiAi NjYzIiJiLTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICJcbiIg IiAuYnl0ZSAiICI2NjMiImItNjYyYiIgIlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIgLmxvbmcg IiAiNjY0IiIyIiJmIC0gLlxuIiAiIC53b3JkICIgIiggMSozMisyNykiICJcbiIgIiAuYnl0ZSAi ICI2NjMiImItNjYxYiIgIlxuIiAiIC5ieXRlICIgIjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIgIlxu IiAiIC5ieXRlICIgIjY2MyIiYi02NjJiIiAiXG4iICIucG9wc2VjdGlvblxuIiAiLnB1c2hzZWN0 aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgXCJheFwiXG4iICIjIEFMVDogcmVwbGFjZW1lbnQg IiAiMSIgIlxuIiAiNjY0IiIxIiI6XG5cdCIgImxmZW5jZTsgcmR0c2MiICJcbiIgIjY2NSIiMSIg IjpcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIyIiAiXG4iICI2NjQiIjIiIjpcblx0IiAicmR0 c2NwIiAiXG4iICI2NjUiIjIiICI6XG4iICIucG9wc2VjdGlvblxuIgoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICAgIDogIj1hIiAobG93KSwgIj1kIiAoaGlnaCkKMTQ0NzQ6IAoxNDQ3NDogICAgOjog ImVjeCIpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuICgobG93KSB8IChoaWdoKSA8PCAzMik7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgbG9uZyBuYXRpdmVfcmVhZF9wbWMo aW50IGNvdW50ZXIpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb3csIGhpZ2g7CjE0 NDc0OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoInJkcG1jIiA6ICI9YSIgKGxvdyksICI9ZCIgKGhp Z2gpIDogImMiIChjb3VudGVyKSk7CjE0NDc0OiAgaWYgKHN0YXRpY19rZXlfZmFsc2UoJihfX3Ry YWNlcG9pbnRfcmRwbWMpLmtleSkpCjE0NDc0OiAgIGRvX3RyYWNlX3JkcG1jKGNvdW50ZXIsICgo bG93KSB8IChoaWdoKSA8PCAzMiksIDApOwoxNDQ3NDogIHJldHVybiAoKGxvdykgfCAoaGlnaCkg PDwgMzIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAj IDEgIi4vaW5jbHVkZS9saW51eC9lcnJuby5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZXJybm8uaCIgMQoxNDQ3NDog IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2Vycm5vLmgiIDEKMTQ0 NzQ6ICMgMiAiLi9pbmNsdWRlL3VhcGkvbGludXgvZXJybm8uaCIgMgoxNDQ3NDogIyA2ICIuL2lu Y2x1ZGUvbGludXgvZXJybm8uaCIgMgoxNDQ3NDogIyAyNjAgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vbXNyLmgiIDIKMTQ0NzQ6ICMgMjczICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCB3cm1zcih1bnNpZ25lZCBpbnQgbXNyLCB1MzIgbG93LCB1MzIgaGlnaCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBuYXRpdmVfd3JpdGVfbXNyKG1zciwgbG93LCBoaWdoKTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cm1zcmwodW5zaWdu ZWQgaW50IG1zciwgdTY0IHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBuYXRpdmVfd3JpdGVfbXNyKG1z ciwgKHUzMikodmFsICYgMHhmZmZmZmZmZlVMTCksICh1MzIpKHZhbCA+PiAzMikpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB3cm1zcl9zYWZlKHVuc2lnbmVkIGludCBtc3Is IHUzMiBsb3csIHUzMiBoaWdoKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBuYXRpdmVfd3JpdGVf bXNyX3NhZmUobXNyLCBsb3csIGhpZ2gpOwoxNDQ3NDogfQoxNDQ3NDogIyAzMDIgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vbXNyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmRtc3JsX3NhZmUodW5zaWduZWQgaW50 IG1zciwgdW5zaWduZWQgbG9uZyBsb25nICpwKQoxNDQ3NDogewoxNDQ3NDogIGludCBlcnI7CjE0 NDc0OiAKMTQ0NzQ6ICAqcCA9IG5hdGl2ZV9yZWFkX21zcl9zYWZlKG1zciwgJmVycik7CjE0NDc0 OiAgcmV0dXJuIGVycjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzI0ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL21zci5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHdybXNybF9zYWZlKHUzMiBtc3IsIHU2NCB2YWwpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIHdybXNyX3NhZmUobXNyLCAodTMyKXZhbCwgKHUzMikodmFsID4+ IDMyKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IG1zciAqbXNyc19hbGxvYyh2b2lkKTsKMTQ0NzQ6IHZvaWQgbXNyc19mcmVl KHN0cnVjdCBtc3IgKm1zcnMpOwoxNDQ3NDogaW50IG1zcl9zZXRfYml0KHUzMiBtc3IsIHU4IGJp dCk7CjE0NDc0OiBpbnQgbXNyX2NsZWFyX2JpdCh1MzIgbXNyLCB1OCBiaXQpOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGludCByZG1zcl9vbl9jcHUodW5zaWduZWQgaW50IGNwdSwgdTMyIG1zcl9u bywgdTMyICpsLCB1MzIgKmgpOwoxNDQ3NDogaW50IHdybXNyX29uX2NwdSh1bnNpZ25lZCBpbnQg Y3B1LCB1MzIgbXNyX25vLCB1MzIgbCwgdTMyIGgpOwoxNDQ3NDogaW50IHJkbXNybF9vbl9jcHUo dW5zaWduZWQgaW50IGNwdSwgdTMyIG1zcl9ubywgdTY0ICpxKTsKMTQ0NzQ6IGludCB3cm1zcmxf b25fY3B1KHVuc2lnbmVkIGludCBjcHUsIHUzMiBtc3Jfbm8sIHU2NCBxKTsKMTQ0NzQ6IHZvaWQg cmRtc3Jfb25fY3B1cyhjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaywgdTMyIG1zcl9ubywgc3Ry dWN0IG1zciAqbXNycyk7CjE0NDc0OiB2b2lkIHdybXNyX29uX2NwdXMoY29uc3Qgc3RydWN0IGNw dW1hc2sgKm1hc2ssIHUzMiBtc3Jfbm8sIHN0cnVjdCBtc3IgKm1zcnMpOwoxNDQ3NDogaW50IHJk bXNyX3NhZmVfb25fY3B1KHVuc2lnbmVkIGludCBjcHUsIHUzMiBtc3Jfbm8sIHUzMiAqbCwgdTMy ICpoKTsKMTQ0NzQ6IGludCB3cm1zcl9zYWZlX29uX2NwdSh1bnNpZ25lZCBpbnQgY3B1LCB1MzIg bXNyX25vLCB1MzIgbCwgdTMyIGgpOwoxNDQ3NDogaW50IHJkbXNybF9zYWZlX29uX2NwdSh1bnNp Z25lZCBpbnQgY3B1LCB1MzIgbXNyX25vLCB1NjQgKnEpOwoxNDQ3NDogaW50IHdybXNybF9zYWZl X29uX2NwdSh1bnNpZ25lZCBpbnQgY3B1LCB1MzIgbXNyX25vLCB1NjQgcSk7CjE0NDc0OiBpbnQg cmRtc3Jfc2FmZV9yZWdzX29uX2NwdSh1bnNpZ25lZCBpbnQgY3B1LCB1MzIgcmVnc1s4XSk7CjE0 NDc0OiBpbnQgd3Jtc3Jfc2FmZV9yZWdzX29uX2NwdSh1bnNpZ25lZCBpbnQgY3B1LCB1MzIgcmVn c1s4XSk7CjE0NDc0OiAjIDIzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAy CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwZWNp YWxfaW5zbnMuaCIgMQoxNDQ3NDogIyAxOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGVjaWFs X2luc25zLmgiCjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBfX2ZvcmNlX29yZGVyOwoxNDQ3 NDogCjE0NDc0OiB2b2lkIG5hdGl2ZV93cml0ZV9jcjAodW5zaWduZWQgbG9uZyB2YWwpOwoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIG5hdGl2ZV9yZWFkX2NyMCh2b2lkKQoxNDQ3NDogewox NDQ3NDogIHVuc2lnbmVkIGxvbmcgdmFsOwoxNDQ3NDogIGFzbSB2b2xhdGlsZSgibW92ICUlY3Iw LCUwXG5cdCIgOiAiPXIiICh2YWwpLCAiPW0iIChfX2ZvcmNlX29yZGVyKSk7CjE0NDc0OiAgcmV0 dXJuIHZhbDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBuYXRpdmVfcmVh ZF9jcjIodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHZhbDsKMTQ0NzQ6ICBh c20gdm9sYXRpbGUoIm1vdiAlJWNyMiwlMFxuXHQiIDogIj1yIiAodmFsKSwgIj1tIiAoX19mb3Jj ZV9vcmRlcikpOwoxNDQ3NDogIHJldHVybiB2YWw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgbmF0aXZlX3dyaXRlX2NyMih1bnNpZ25lZCBsb25nIHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBh c20gdm9sYXRpbGUoIm1vdiAlMCwlJWNyMiI6IDogInIiICh2YWwpLCAibSIgKF9fZm9yY2Vfb3Jk ZXIpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX25hdGl2ZV9yZWFk X2NyMyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgdmFsOwoxNDQ3NDogIGFz bSB2b2xhdGlsZSgibW92ICUlY3IzLCUwXG5cdCIgOiAiPXIiICh2YWwpLCAiPW0iIChfX2ZvcmNl X29yZGVyKSk7CjE0NDc0OiAgcmV0dXJuIHZhbDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBuYXRpdmVfd3JpdGVfY3IzKHVuc2lnbmVkIGxvbmcgdmFsKQoxNDQ3NDogewoxNDQ3NDogIGFz bSB2b2xhdGlsZSgibW92ICUwLCUlY3IzIjogOiAiciIgKHZhbCksICJtIiAoX19mb3JjZV9vcmRl cikpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIG5hdGl2ZV9yZWFkX2Ny NCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgdmFsOwoxNDQ3NDogIyA2OSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGVjaWFsX2luc25zLmgiCjE0NDc0OiAgYXNtIHZvbGF0 aWxlKCJtb3YgJSVjcjQsJTBcblx0IiA6ICI9ciIgKHZhbCksICI9bSIgKF9fZm9yY2Vfb3JkZXIp KTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiB2YWw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHZv aWQgbmF0aXZlX3dyaXRlX2NyNCh1bnNpZ25lZCBsb25nIHZhbCk7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdTMyIHJkcGtydSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHUzMiBlY3ggPSAwOwoxNDQ3 NDogIHUzMiBlZHgsIHBrcnU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiLmJ5dGUgMHgwZiwweDAxLDB4ZWVcblx0IgoxNDQ3NDog ICAgICAgIDogIj1hIiAocGtydSksICI9ZCIgKGVkeCkKMTQ0NzQ6ICAgICAgICA6ICJjIiAoZWN4 KSk7CjE0NDc0OiAgcmV0dXJuIHBrcnU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgd3Jw a3J1KHUzMiBwa3J1KQoxNDQ3NDogewoxNDQ3NDogIHUzMiBlY3ggPSAwLCBlZHggPSAwOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUo Ii5ieXRlIDB4MGYsMHgwMSwweGVmXG5cdCIKMTQ0NzQ6ICAgICAgICA6IDogImEiIChwa3J1KSwg ImMiKGVjeCksICJkIihlZHgpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3dyaXRl X3BrcnUodTMyIHBrcnUpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBpZiAocGtydSA9PSByZHBrcnUoKSkKMTQ0NzQ6ICAgcmV0dXJuOwoxNDQ3NDogCjE0 NDc0OiAgd3Jwa3J1KHBrcnUpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMjcgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vc3BlY2lhbF9pbnNucy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBuYXRpdmVfd2JpbnZkKHZvaWQp CjE0NDc0OiB7CjE0NDc0OiAgYXNtIHZvbGF0aWxlKCJ3YmludmQiOiA6IDoibWVtb3J5Iik7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIG5hdGl2ZV9sb2FkX2dzX2luZGV4KHVu c2lnbmVkKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX3JlYWRfY3I0KHZvaWQpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG5hdGl2ZV9yZWFkX2NyNCgpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgcmVh ZF9jcjAodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbmF0aXZlX3JlYWRfY3IwKCk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgd3JpdGVfY3IwKHVuc2lnbmVkIGxvbmcgeCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBuYXRpdmVfd3JpdGVfY3IwKHgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBsb25nIHJlYWRfY3IyKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG5h dGl2ZV9yZWFkX2NyMigpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX2NyMih1 bnNpZ25lZCBsb25nIHgpCjE0NDc0OiB7CjE0NDc0OiAgbmF0aXZlX3dyaXRlX2NyMih4KTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNp Z25lZCBsb25nIF9fcmVhZF9jcjModm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19uYXRp dmVfcmVhZF9jcjMoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cml0ZV9jcjModW5z aWduZWQgbG9uZyB4KQoxNDQ3NDogewoxNDQ3NDogIG5hdGl2ZV93cml0ZV9jcjMoeCk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX193cml0ZV9jcjQodW5zaWduZWQgbG9uZyB4KQoxNDQ3 NDogewoxNDQ3NDogIG5hdGl2ZV93cml0ZV9jcjQoeCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgd2JpbnZkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgbmF0aXZlX3diaW52ZCgpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2FkX2dzX2luZGV4KHVu c2lnbmVkIHNlbGVjdG9yKQoxNDQ3NDogewoxNDQ3NDogIG5hdGl2ZV9sb2FkX2dzX2luZGV4KHNl bGVjdG9yKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGNsZmx1c2godm9sYXRpbGUgdm9pZCAqX19wKQoxNDQ3NDogewoxNDQ3NDog IGFzbSB2b2xhdGlsZSgiY2xmbHVzaCAlMCIgOiAiK20iICgqKHZvbGF0aWxlIGNoYXIgKilfX3Ap KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGZsdXNob3B0KHZvbGF0aWxlIHZvaWQg Kl9fcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gX19pbmxpbmUgdm9sYXRpbGUgKCIjIEFMVDogb2xk bnN0clxuIiAiNjYxOlxuXHQiICIuYnl0ZSAiICIweDNlIiAiOyBjbGZsdXNoICVQMCIgIlxuNjYy OlxuIiAiIyBBTFQ6IHBhZGRpbmdcbiIgIi5za2lwIC0oKCgiICI2NjUiIjEiImYtIiI2NjQiIjEi ImYiICIpLSgiICI2NjJiLTY2MWIiICIpKSA+IDApICogIiAiKCgiICI2NjUiIjEiImYtIiI2NjQi IjEiImYiICIpLSgiICI2NjJiLTY2MWIiICIpKSwweDkwXG4iICI2NjMiICI6XG4iICIucHVzaHNl Y3Rpb24gLmFsdGluc3RydWN0aW9ucyxcImFcIlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIgLmxv bmcgIiAiNjY0IiIxIiJmIC0gLlxuIiAiIC53b3JkICIgIiggOSozMisyMykiICJcbiIgIiAuYnl0 ZSAiICI2NjMiImItNjYxYiIgIlxuIiAiIC5ieXRlICIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIg IlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjJiIiAiXG4iICIucG9wc2VjdGlvblxuIiAiLnB1c2hz ZWN0aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgXCJheFwiXG4iICIjIEFMVDogcmVwbGFjZW1l bnQgIiAiMSIgIlxuIiAiNjY0IiIxIiI6XG5cdCIgIi5ieXRlIDB4NjY7IGNsZmx1c2ggJVAwIiAi XG4iICI2NjUiIjEiICI6XG4iICIucG9wc2VjdGlvblxuIiA6ICIrbSIgKCoodm9sYXRpbGUgY2hh ciAqKV9fcCkgOiAiaSIgKDApKQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgY2x3Yih2b2xhdGlsZSB2b2lkICpfX3ApCjE0NDc0OiB7CjE0NDc0OiAgdm9sYXRpbGUg c3RydWN0IHsgY2hhciB4WzY0XTsgfSAqcCA9IF9fcDsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xh dGlsZSgiIyBBTFQ6IG9sZGluc3RyMlxuIiAiNjYxOlxuXHQiICIuYnl0ZSAiICIweDNlIiAiOyBj bGZsdXNoICglW3BheF0pIiAiXG42NjI6XG4iICIjIEFMVDogcGFkZGluZzJcbiIgIi5za2lwIC0o KCIgIigoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSBeICgoKCIgIjY2NSIiMSIiZi0iIjY2 NCIiMSIiZiIgIikgXiAoIiAiNjY1IiIyIiJmLSIiNjY0IiIyIiJmIiAiKSkgJiAtKC0oKCIgIjY2 NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikgPCAoIiAiNjY1IiIyIiJmLSIiNjY0IiIyIiJmIiAiKSkp KSkiICIgLSAoIiAiNjYyYi02NjFiIiAiKSkgPiAwKSAqICIgIigiICIoKCIgIjY2NSIiMSIiZi0i IjY2NCIiMSIiZiIgIikgXiAoKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCIgIjY2 NSIiMiIiZi0iIjY2NCIiMiIiZiIgIikpICYgLSgtKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYi ICIpIDwgKCIgIjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIgIikpKSkpIiAiIC0gKCIgIjY2MmItNjYx YiIgIikpLCAweDkwXG4iICI2NjMiICI6XG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RydWN0aW9u cyxcImFcIlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIgLmxvbmcgIiAiNjY0IiIxIiJmIC0gLlxu IiAiIC53b3JkICIgIiggOSozMisyMykiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYxYiIgIlxu IiAiIC5ieXRlICIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIlxuIiAiIC5ieXRlICIgIjY2MyIi Yi02NjJiIiAiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2NjQiIjIiImYgLSAu XG4iICIgLndvcmQgIiAiKCA5KjMyKzI0KSIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjFiIiAi XG4iICIgLmJ5dGUgIiAiNjY1IiIyIiJmLSIiNjY0IiIyIiJmIiAiXG4iICIgLmJ5dGUgIiAiNjYz IiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RyX3Jl cGxhY2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIxIiAiXG4iICI2NjQi IjEiIjpcblx0IiAiLmJ5dGUgMHg2NjsgY2xmbHVzaCAoJVtwYXhdKSIgIlxuIiAiNjY1IiIxIiAi OlxuIiAiIyBBTFQ6IHJlcGxhY2VtZW50ICIgIjIiICJcbiIgIjY2NCIiMiIiOlxuXHQiICIuYnl0 ZSAweDY2LCAweDBmLCAweGFlLCAweDMwIiAiXG4iICI2NjUiIjIiICI6XG4iICIucG9wc2VjdGlv blxuIgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgOiBb cF0gIittIiAoKnApCjE0NDc0OiAgIDogW3BheF0gImEiIChwKSk7CjE0NDc0OiB9CjE0NDc0OiAj IDI2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCjE0NDc0OiAjIDEgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTIgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vZnB1L3R5cGVzLmgiCjE0NDc0OiBzdHJ1Y3QgZnJlZ3Nfc3RhdGUgewox NDQ3NDogIHUzMiBjd2Q7CjE0NDc0OiAgdTMyIHN3ZDsKMTQ0NzQ6ICB1MzIgdHdkOwoxNDQ3NDog IHUzMiBmaXA7CjE0NDc0OiAgdTMyIGZjczsKMTQ0NzQ6ICB1MzIgZm9vOwoxNDQ3NDogIHUzMiBm b3M7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHUzMiBzdF9zcGFjZVsyMF07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHUzMiBzdGF0dXM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZnhyZWdzX3N0 YXRlIHsKMTQ0NzQ6ICB1MTYgY3dkOwoxNDQ3NDogIHUxNiBzd2Q7CjE0NDc0OiAgdTE2IHR3ZDsK MTQ0NzQ6ICB1MTYgZm9wOwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6 ICAgIHU2NCByaXA7CjE0NDc0OiAgICB1NjQgcmRwOwoxNDQ3NDogICB9OwoxNDQ3NDogICBzdHJ1 Y3QgewoxNDQ3NDogICAgdTMyIGZpcDsKMTQ0NzQ6ICAgIHUzMiBmY3M7CjE0NDc0OiAgICB1MzIg Zm9vOwoxNDQ3NDogICAgdTMyIGZvczsKMTQ0NzQ6ICAgfTsKMTQ0NzQ6ICB9OwoxNDQ3NDogIHUz MiBteGNzcjsKMTQ0NzQ6ICB1MzIgbXhjc3JfbWFzazsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg dTMyIHN0X3NwYWNlWzMyXTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTMyIHhtbV9zcGFjZVs2 NF07CjE0NDc0OiAKMTQ0NzQ6ICB1MzIgcGFkZGluZ1sxMl07CjE0NDc0OiAKMTQ0NzQ6ICB1bmlv biB7CjE0NDc0OiAgIHUzMiBwYWRkaW5nMVsxMl07CjE0NDc0OiAgIHUzMiBzd19yZXNlcnZlZFsx Ml07CjE0NDc0OiAgfTsKMTQ0NzQ6IAoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2 KSkpOwoxNDQ3NDogIyA3OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9mcHUvdHlwZXMuaCIKMTQ0 NzQ6IHN0cnVjdCBzd3JlZ3Nfc3RhdGUgewoxNDQ3NDogIHUzMiBjd2Q7CjE0NDc0OiAgdTMyIHN3 ZDsKMTQ0NzQ6ICB1MzIgdHdkOwoxNDQ3NDogIHUzMiBmaXA7CjE0NDc0OiAgdTMyIGZjczsKMTQ0 NzQ6ICB1MzIgZm9vOwoxNDQ3NDogIHUzMiBmb3M7CjE0NDc0OiAKMTQ0NzQ6ICB1MzIgc3Rfc3Bh Y2VbMjBdOwoxNDQ3NDogIHU4IGZ0b3A7CjE0NDc0OiAgdTggY2hhbmdlZDsKMTQ0NzQ6ICB1OCBs b29rYWhlYWQ7CjE0NDc0OiAgdTggbm9fdXBkYXRlOwoxNDQ3NDogIHU4IHJtOwoxNDQ3NDogIHU4 IGFsaW1pdDsKMTQ0NzQ6ICBzdHJ1Y3QgbWF0aF9lbXVfaW5mbyAqaW5mbzsKMTQ0NzQ6ICB1MzIg ZW50cnlfZWlwOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogZW51bSB4ZmVhdHVyZSB7CjE0NDc0OiAgWEZFQVRVUkVfRlAsCjE0NDc0OiAgWEZFQVRVUkVf U1NFLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgWEZFQVRVUkVfWU1N LAoxNDQ3NDogIFhGRUFUVVJFX0JORFJFR1MsCjE0NDc0OiAgWEZFQVRVUkVfQk5EQ1NSLAoxNDQ3 NDogIFhGRUFUVVJFX09QTUFTSywKMTQ0NzQ6ICBYRkVBVFVSRV9aTU1fSGkyNTYsCjE0NDc0OiAg WEZFQVRVUkVfSGkxNl9aTU0sCjE0NDc0OiAgWEZFQVRVUkVfUFRfVU5JTVBMRU1FTlRFRF9TT19G QVIsCjE0NDc0OiAgWEZFQVRVUkVfUEtSVSwKMTQ0NzQ6IAoxNDQ3NDogIFhGRUFUVVJFX01BWCwK MTQ0NzQ6IH07CjE0NDc0OiAjIDEzOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9mcHUvdHlwZXMu aCIKMTQ0NzQ6IHN0cnVjdCByZWdfMTI4X2JpdCB7CjE0NDc0OiAgdTggcmVnYnl0ZXNbMTI4Lzhd OwoxNDQ3NDogfTsKMTQ0NzQ6IHN0cnVjdCByZWdfMjU2X2JpdCB7CjE0NDc0OiAgdTggcmVnYnl0 ZXNbMjU2LzhdOwoxNDQ3NDogfTsKMTQ0NzQ6IHN0cnVjdCByZWdfNTEyX2JpdCB7CjE0NDc0OiAg dTggcmVnYnl0ZXNbNTEyLzhdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTU5ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2ZwdS90eXBlcy5oIgoxNDQ3NDogc3RydWN0IHltbWhfc3RydWN0IHsKMTQ0NzQ6 ICBzdHJ1Y3QgcmVnXzEyOF9iaXQgaGlfeW1tWzE2XTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygo X19wYWNrZWRfXykpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1weF9i bmRyZWcgewoxNDQ3NDogIHU2NCBsb3dlcl9ib3VuZDsKMTQ0NzQ6ICB1NjQgdXBwZXJfYm91bmQ7 CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtcHhfYm5kcmVnX3N0YXRlIHsKMTQ0NzQ6ICBzdHJ1Y3QgbXB4 X2JuZHJlZyBibmRyZWdbNF07CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBtcHhfYm5kY3NyIHsKMTQ0NzQ6ICB1NjQgYm5kY2ZndTsKMTQ0NzQ6ICB1NjQgYm5kc3Rh dHVzOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtcHhfYm5kY3NyX3N0YXRlIHsKMTQ0NzQ6 ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBtcHhfYm5kY3NyIGJuZGNzcjsKMTQ0NzQ6ICAgdTgg cGFkX3RvXzY0X2J5dGVzWzY0XTsKMTQ0NzQ6ICB9OwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChf X3BhY2tlZF9fKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdnhfNTEyX29wbWFza19zdGF0ZSB7CjE0NDc0OiAg dTY0IG9wbWFza19yZWdbOF07CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBhdnhfNTEyX3ptbV91cHBlcnNfc3RhdGUgewoxNDQ3NDogIHN0cnVjdCByZWdfMjU2X2Jp dCB6bW1fdXBwZXJbMTZdOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF2eF81 MTJfaGkxNl9zdGF0ZSB7CjE0NDc0OiAgc3RydWN0IHJlZ181MTJfYml0IGhpMTZfem1tWzE2XTsK MTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwa3J1X3N0YXRlIHsKMTQ0NzQ6ICB1 MzIgcGtydTsKMTQ0NzQ6ICB1MzIgcGFkOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tl ZF9fKSk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB4c3RhdGVfaGVhZGVyIHsKMTQ0NzQ6ICB1NjQg eGZlYXR1cmVzOwoxNDQ3NDogIHU2NCB4Y29tcF9idjsKMTQ0NzQ6ICB1NjQgcmVzZXJ2ZWRbNl07 CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoxNDQ3NDogIyAyNTMgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vZnB1L3R5cGVzLmgiCjE0NDc0OiBzdHJ1Y3QgeHJlZ3Nfc3RhdGUgewox NDQ3NDogIHN0cnVjdCBmeHJlZ3Nfc3RhdGUgaTM4NzsKMTQ0NzQ6ICBzdHJ1Y3QgeHN0YXRlX2hl YWRlciBoZWFkZXI7CjE0NDc0OiAgdTggZXh0ZW5kZWRfc3RhdGVfYXJlYVswXTsKMTQ0NzQ6IH0g X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwgYWxpZ25lZCAoNjQpKSk7CjE0NDc0OiAjIDI2OCAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9mcHUvdHlwZXMuaCIKMTQ0NzQ6IHVuaW9uIGZwcmVnc19zdGF0 ZSB7CjE0NDc0OiAgc3RydWN0IGZyZWdzX3N0YXRlIGZzYXZlOwoxNDQ3NDogIHN0cnVjdCBmeHJl Z3Nfc3RhdGUgZnhzYXZlOwoxNDQ3NDogIHN0cnVjdCBzd3JlZ3Nfc3RhdGUgc29mdDsKMTQ0NzQ6 ICBzdHJ1Y3QgeHJlZ3Nfc3RhdGUgeHNhdmU7CjE0NDc0OiAgdTggX19wYWRkaW5nWygoMVVMKSA8 PCAxMildOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmcHUgewoxNDQ3NDogIyAyOTQgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vZnB1L3R5cGVzLmgiCjE0NDc0OiAgdW5zaWduZWQgaW50IGxhc3RfY3B1OwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2ln bmVkIGxvbmcgYXZ4NTEyX3RpbWVzdGFtcDsKMTQ0NzQ6ICMgMzEyICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2ZwdS90eXBlcy5oIgoxNDQ3NDogIHVuaW9uIGZwcmVnc19zdGF0ZSBzdGF0ZTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjcgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS91bndpbmRfaGludHMuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL29yY190eXBlcy5oIiAxCjE0NDc0OiAjIDcz ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL29yY190eXBlcy5oIgoxNDQ3NDogc3RydWN0IG9yY19l bnRyeSB7CjE0NDc0OiAgczE2IHNwX29mZnNldDsKMTQ0NzQ6ICBzMTYgYnBfb2Zmc2V0OwoxNDQ3 NDogIHVuc2lnbmVkIHNwX3JlZzo0OwoxNDQ3NDogIHVuc2lnbmVkIGJwX3JlZzo0OwoxNDQ3NDog IHVuc2lnbmVkIHR5cGU6MjsKMTQ0NzQ6ICB1bnNpZ25lZCBlbmQ6MTsKMTQ0NzQ6IH0gX19hdHRy aWJ1dGVfXygoX19wYWNrZWRfXykpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgdW53aW5kX2hpbnQgewoxNDQ3NDog IHUzMiBpcDsKMTQ0NzQ6ICBzMTYgc3Bfb2Zmc2V0OwoxNDQ3NDogIHU4IHNwX3JlZzsKMTQ0NzQ6 ICB1OCB0eXBlOwoxNDQ3NDogIHU4IGVuZDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDUgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vdW53aW5kX2hpbnRzLmgiIDIKMTQ0NzQ6ICMgMjggIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS92bXhmZWF0dXJlcy5oIiAxCjE0NDc0OiAjIDI5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L3Byb2Nlc3Nvci5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3BlcnNv bmFsaXR5LmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2luY2x1ZGUvdWFwaS9saW51eC9wZXJzb25hbGl0eS5oIiAxCjE0NDc0OiAjIDExICIuL2luY2x1 ZGUvdWFwaS9saW51eC9wZXJzb25hbGl0eS5oIgoxNDQ3NDogZW51bSB7CjE0NDc0OiAgVU5BTUUy NiA9IDB4MDAyMDAwMCwKMTQ0NzQ6ICBBRERSX05PX1JBTkRPTUlaRSA9IDB4MDA0MDAwMCwKMTQ0 NzQ6ICBGRFBJQ19GVU5DUFRSUyA9IDB4MDA4MDAwMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg TU1BUF9QQUdFX1pFUk8gPSAweDAxMDAwMDAsCjE0NDc0OiAgQUREUl9DT01QQVRfTEFZT1VUID0g MHgwMjAwMDAwLAoxNDQ3NDogIFJFQURfSU1QTElFU19FWEVDID0gMHgwNDAwMDAwLAoxNDQ3NDog IEFERFJfTElNSVRfMzJCSVQgPSAweDA4MDAwMDAsCjE0NDc0OiAgU0hPUlRfSU5PREUgPSAweDEw MDAwMDAsCjE0NDc0OiAgV0hPTEVfU0VDT05EUyA9IDB4MjAwMDAwMCwKMTQ0NzQ6ICBTVElDS1lf VElNRU9VVFMgPSAweDQwMDAwMDAsCjE0NDc0OiAgQUREUl9MSU1JVF8zR0IgPSAweDgwMDAwMDAs CjE0NDc0OiB9OwoxNDQ3NDogIyA0MiAiLi9pbmNsdWRlL3VhcGkvbGludXgvcGVyc29uYWxpdHku aCIKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIFBFUl9MSU5VWCA9IDB4MDAwMCwKMTQ0NzQ6ICBQRVJf TElOVVhfMzJCSVQgPSAweDAwMDAgfCBBRERSX0xJTUlUXzMyQklULAoxNDQ3NDogIFBFUl9MSU5V WF9GRFBJQyA9IDB4MDAwMCB8IEZEUElDX0ZVTkNQVFJTLAoxNDQ3NDogIFBFUl9TVlI0ID0gMHgw MDAxIHwgU1RJQ0tZX1RJTUVPVVRTIHwgTU1BUF9QQUdFX1pFUk8sCjE0NDc0OiAgUEVSX1NWUjMg PSAweDAwMDIgfCBTVElDS1lfVElNRU9VVFMgfCBTSE9SVF9JTk9ERSwKMTQ0NzQ6ICBQRVJfU0NP U1ZSMyA9IDB4MDAwMyB8IFNUSUNLWV9USU1FT1VUUyB8CjE0NDc0OiAgICAgICBXSE9MRV9TRUNP TkRTIHwgU0hPUlRfSU5PREUsCjE0NDc0OiAgUEVSX09TUjUgPSAweDAwMDMgfCBTVElDS1lfVElN RU9VVFMgfCBXSE9MRV9TRUNPTkRTLAoxNDQ3NDogIFBFUl9XWVNFVjM4NiA9IDB4MDAwNCB8IFNU SUNLWV9USU1FT1VUUyB8IFNIT1JUX0lOT0RFLAoxNDQ3NDogIFBFUl9JU0NSNCA9IDB4MDAwNSB8 IFNUSUNLWV9USU1FT1VUUywKMTQ0NzQ6ICBQRVJfQlNEID0gMHgwMDA2LAoxNDQ3NDogIFBFUl9T VU5PUyA9IDB4MDAwNiB8IFNUSUNLWV9USU1FT1VUUywKMTQ0NzQ6ICBQRVJfWEVOSVggPSAweDAw MDcgfCBTVElDS1lfVElNRU9VVFMgfCBTSE9SVF9JTk9ERSwKMTQ0NzQ6ICBQRVJfTElOVVgzMiA9 IDB4MDAwOCwKMTQ0NzQ6ICBQRVJfTElOVVgzMl8zR0IgPSAweDAwMDggfCBBRERSX0xJTUlUXzNH QiwKMTQ0NzQ6ICBQRVJfSVJJWDMyID0gMHgwMDA5IHwgU1RJQ0tZX1RJTUVPVVRTLAoxNDQ3NDog IFBFUl9JUklYTjMyID0gMHgwMDBhIHwgU1RJQ0tZX1RJTUVPVVRTLAoxNDQ3NDogIFBFUl9JUklY NjQgPSAweDAwMGIgfCBTVElDS1lfVElNRU9VVFMsCjE0NDc0OiAgUEVSX1JJU0NPUyA9IDB4MDAw YywKMTQ0NzQ6ICBQRVJfU09MQVJJUyA9IDB4MDAwZCB8IFNUSUNLWV9USU1FT1VUUywKMTQ0NzQ6 ICBQRVJfVVc3ID0gMHgwMDBlIHwgU1RJQ0tZX1RJTUVPVVRTIHwgTU1BUF9QQUdFX1pFUk8sCjE0 NDc0OiAgUEVSX09TRjQgPSAweDAwMGYsCjE0NDc0OiAgUEVSX0hQVVggPSAweDAwMTAsCjE0NDc0 OiAgUEVSX01BU0sgPSAweDAwZmYsCjE0NDc0OiB9OwoxNDQ3NDogIyA2ICIuL2luY2x1ZGUvbGlu dXgvcGVyc29uYWxpdHkuaCIgMgoxNDQ3NDogIyAzMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w cm9jZXNzb3IuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvbGludXgvZXJyLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVk L3VhcGkvYXNtL2Vycm5vLmgiIDEKMTQ0NzQ6ICMgOSAiLi9pbmNsdWRlL2xpbnV4L2Vyci5oIiAy CjE0NDc0OiAjIDI0ICIuL2luY2x1ZGUvbGludXgvZXJyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICogX19hdHRy aWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIEVSUl9QVFIobG9uZyBlcnJvcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHZvaWQgKikgZXJyb3I7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGxvbmcgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIFBUUl9FUlIo IGNvbnN0IHZvaWQgKnB0cikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKGxvbmcpIHB0cjsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jl c3VsdF9fKSkgSVNfRVJSKCBjb25zdCB2b2lkICpwdHIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IF9fYnVpbHRpbl9leHBlY3QoISEoKHVuc2lnbmVkIGxvbmcpKHZvaWQgKikoKHVuc2lnbmVkIGxv bmcpcHRyKSA+PSAodW5zaWduZWQgbG9uZyktNDA5NSksIDApOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBJU19FUlJf T1JfTlVMTCggY29uc3Qgdm9pZCAqcHRyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2J1aWx0 aW5fZXhwZWN0KCEhKCFwdHIpLCAwKSB8fCBfX2J1aWx0aW5fZXhwZWN0KCEhKCh1bnNpZ25lZCBs b25nKSh2b2lkICopKCh1bnNpZ25lZCBsb25nKXB0cikgPj0gKHVuc2lnbmVkIGxvbmcpLTQwOTUp LCAwKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTEgIi4vaW5jbHVkZS9saW51eC9lcnIuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgRVJSX0NBU1Qo IGNvbnN0IHZvaWQgKnB0cikKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAodm9pZCAq KSBwdHI7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkgUFRSX0VSUl9PUl9aRVJPKCBjb25zdCB2b2lkICpwdHIpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKElTX0VSUihwdHIpKQoxNDQ3NDogICByZXR1cm4gUFRSX0VSUihwdHIp OwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAjIDM1ICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9pcnFmbGFncy5oIiAxCjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgvaXJxZmxh Z3MuaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFmbGFncy5oIiAxCjE0 NDc0OiAjIDE5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycWZsYWdzLmgiCjE0NDc0OiBleHRl cm4gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNp Z25lZCBsb25nIG5hdGl2ZV9zYXZlX2ZsKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBuYXRp dmVfc2F2ZV9mbCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYXNt IHZvbGF0aWxlKCIjIF9fcmF3X3NhdmVfZmxhZ3Ncblx0IgoxNDQ3NDogICAgICAgICJwdXNoZiA7 IHBvcCAlMCIKMTQ0NzQ6ICAgICAgICA6ICI9cm0iIChmbGFncykKMTQ0NzQ6ICAgICAgICA6CjE0 NDc0OiAgICAgICAgOiAibWVtb3J5Iik7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZmxhZ3M7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbmF0aXZlX3Jlc3RvcmVfZmwodW5zaWduZWQgbG9u ZyBmbGFncyk7CjE0NDc0OiBleHRlcm4gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5hdGl2ZV9yZXN0b3JlX2ZsKHVuc2lnbmVkIGxvbmcgZmxh Z3MpCjE0NDc0OiB7CjE0NDc0OiAgYXNtIHZvbGF0aWxlKCJwdXNoICUwIDsgcG9wZiIKMTQ0NzQ6 ICAgICAgICA6CjE0NDc0OiAgICAgICAgOiJnIiAoZmxhZ3MpCjE0NDc0OiAgICAgICAgOiJtZW1v cnkiLCAiY2MiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBuYXRpdmVfaXJxX2Rpc2Fi bGUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoImNsaSI6IDogOiJtZW1vcnki KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBuYXRpdmVfaXJxX2VuYWJsZSh2b2lkKQox NDQ3NDogewoxNDQ3NDogIGFzbSB2b2xhdGlsZSgic3RpIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmNwdWlkbGUudGV4 dCIpKSkgdm9pZCBuYXRpdmVfc2FmZV9oYWx0KHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgbWRzX2lk bGVfY2xlYXJfY3B1X2J1ZmZlcnMoKTsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoInN0aTsgaGx0Ijog OiA6Im1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3Nl Y3Rpb25fXygiLmNwdWlkbGUudGV4dCIpKSkgdm9pZCBuYXRpdmVfaGFsdCh2b2lkKQoxNDQ3NDog ewoxNDQ3NDogIG1kc19pZGxlX2NsZWFyX2NwdV9idWZmZXJzKCk7CjE0NDc0OiAgYXNtIHZvbGF0 aWxlKCJobHQiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAjIDc3ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL2lycWZsYWdzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBhcmNoX2xvY2FsX3NhdmVfZmxhZ3Modm9pZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbmF0aXZlX3NhdmVfZmwoKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXJj aF9sb2NhbF9pcnFfcmVzdG9yZSh1bnNpZ25lZCBsb25nIGZsYWdzKQoxNDQ3NDogewoxNDQ3NDog IG5hdGl2ZV9yZXN0b3JlX2ZsKGZsYWdzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXJjaF9sb2NhbF9pcnFfZGlz YWJsZSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIG5hdGl2ZV9pcnFfZGlzYWJsZSgpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBhcmNoX2xvY2FsX2lycV9lbmFibGUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBuYXRpdmVf aXJxX2VuYWJsZSgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuY3B1aWRsZS50ZXh0Iikp KSB2b2lkIGFyY2hfc2FmZV9oYWx0KHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgbmF0aXZlX3NhZmVf aGFsdCgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuY3B1aWRsZS50ZXh0IikpKSB2b2lk IGhhbHQodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBuYXRpdmVfaGFsdCgpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBhcmNoX2xvY2FsX2lycV9zYXZlKHZvaWQp CjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBmbGFncyA9IGFyY2hfbG9jYWxfc2F2ZV9m bGFncygpOwoxNDQ3NDogIGFyY2hfbG9jYWxfaXJxX2Rpc2FibGUoKTsKMTQ0NzQ6ICByZXR1cm4g ZmxhZ3M7CjE0NDc0OiB9CjE0NDc0OiAjIDE2MiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFm bGFncy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IGFyY2hfaXJxc19kaXNhYmxlZF9mbGFncyh1bnNpZ25lZCBsb25n IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhKGZsYWdzICYgKCgoMVVMKSkgPDwgKDkp KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBhcmNoX2lycXNfZGlzYWJsZWQodm9pZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGZsYWdzID0gYXJjaF9sb2NhbF9zYXZlX2Zs YWdzKCk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gYXJjaF9pcnFzX2Rpc2FibGVkX2ZsYWdzKGZs YWdzKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51eC9pcnFmbGFncy5oIiAy CjE0NDc0OiAjIDI1ICIuL2luY2x1ZGUvbGludXgvaXJxZmxhZ3MuaCIKMTQ0NzQ6ICAgc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0 cmFjZV9zb2Z0aXJxc19vbih1bnNpZ25lZCBsb25nIGlwKSB7IH0KMTQ0NzQ6ICAgc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0cmFj ZV9zb2Z0aXJxc19vZmYodW5zaWduZWQgbG9uZyBpcCkgeyB9CjE0NDc0OiAgIHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2Rl cF9oYXJkaXJxc19vbih1bnNpZ25lZCBsb25nIGlwKSB7IH0KMTQ0NzQ6ICAgc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2NrZGVw X2hhcmRpcnFzX29mZih1bnNpZ25lZCBsb25nIGlwKSB7IH0KMTQ0NzQ6ICMgMzYgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKMTQ0NzQ6ICMgNjEgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vcHJvY2Vzc29yLmgiCjE0NDc0OiBlbnVtIHRsYl9pbmZvcyB7CjE0NDc0OiAgRU5U UklFUywKMTQ0NzQ6ICBOUl9JTkZPCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdTE2 IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9s bGlfNGtbTlJfSU5GT107CjE0NDc0OiBleHRlcm4gdTE2IF9fYXR0cmlidXRlX18oKF9fc2VjdGlv bl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9sbGlfMm1bTlJfSU5GT107CjE0NDc0OiBl eHRlcm4gdTE2IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHki KSkpIHRsYl9sbGlfNG1bTlJfSU5GT107CjE0NDc0OiBleHRlcm4gdTE2IF9fYXR0cmlidXRlX18o KF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9sbGRfNGtbTlJfSU5GT107 CjE0NDc0OiBleHRlcm4gdTE2IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVh ZF9tb3N0bHkiKSkpIHRsYl9sbGRfMm1bTlJfSU5GT107CjE0NDc0OiBleHRlcm4gdTE2IF9fYXR0 cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9sbGRfNG1b TlJfSU5GT107CjE0NDc0OiBleHRlcm4gdTE2IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIu ZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9sbGRfMWdbTlJfSU5GT107CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBj cHVpbmZvX3g4NiB7CjE0NDc0OiAgX191OCB4ODY7CjE0NDc0OiAgX191OCB4ODZfdmVuZG9yOwox NDQ3NDogIF9fdTggeDg2X21vZGVsOwoxNDQ3NDogIF9fdTggeDg2X3N0ZXBwaW5nOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgeDg2X3RsYnNpemU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IF9fdTMyIHZteF9jYXBhYmlsaXR5WzNdOwoxNDQ3NDogCjE0NDc0OiAgX191OCB4ODZfdmlydF9i aXRzOwoxNDQ3NDogIF9fdTggeDg2X3BoeXNfYml0czsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTggeDg2 X2NvcmVpZF9iaXRzOwoxNDQ3NDogIF9fdTggY3VfaWQ7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBl eHRlbmRlZF9jcHVpZF9sZXZlbDsKMTQ0NzQ6IAoxNDQ3NDogIGludCBjcHVpZF9sZXZlbDsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5pb24gewoxNDQ3 NDogICBfX3UzMiB4ODZfY2FwYWJpbGl0eVsxOSArIDFdOwoxNDQ3NDogICB1bnNpZ25lZCBsb25n IHg4Nl9jYXBhYmlsaXR5X2FsaWdubWVudDsKMTQ0NzQ6ICB9OwoxNDQ3NDogIGNoYXIgeDg2X3Zl bmRvcl9pZFsxNl07CjE0NDc0OiAgY2hhciB4ODZfbW9kZWxfaWRbNjRdOwoxNDQ3NDogCjE0NDc0 OiAgdW5zaWduZWQgaW50IHg4Nl9jYWNoZV9zaXplOwoxNDQ3NDogIGludCB4ODZfY2FjaGVfYWxp Z25tZW50OwoxNDQ3NDogCjE0NDc0OiAgaW50IHg4Nl9jYWNoZV9tYXhfcm1pZDsKMTQ0NzQ6ICBp bnQgeDg2X2NhY2hlX29jY19zY2FsZTsKMTQ0NzQ6ICBpbnQgeDg2X3Bvd2VyOwoxNDQ3NDogIHVu c2lnbmVkIGxvbmcgbG9vcHNfcGVyX2ppZmZ5OwoxNDQ3NDogCjE0NDc0OiAgdTE2IHg4Nl9tYXhf Y29yZXM7CjE0NDc0OiAgdTE2IGFwaWNpZDsKMTQ0NzQ6ICB1MTYgaW5pdGlhbF9hcGljaWQ7CjE0 NDc0OiAgdTE2IHg4Nl9jbGZsdXNoX3NpemU7CjE0NDc0OiAKMTQ0NzQ6ICB1MTYgYm9vdGVkX2Nv cmVzOwoxNDQ3NDogCjE0NDc0OiAgdTE2IHBoeXNfcHJvY19pZDsKMTQ0NzQ6IAoxNDQ3NDogIHUx NiBsb2dpY2FsX3Byb2NfaWQ7CjE0NDc0OiAKMTQ0NzQ6ICB1MTYgY3B1X2NvcmVfaWQ7CjE0NDc0 OiAgdTE2IGNwdV9kaWVfaWQ7CjE0NDc0OiAgdTE2IGxvZ2ljYWxfZGllX2lkOwoxNDQ3NDogCjE0 NDc0OiAgdTE2IGNwdV9pbmRleDsKMTQ0NzQ6ICB1MzIgbWljcm9jb2RlOwoxNDQ3NDogCjE0NDc0 OiAgdTggeDg2X2NhY2hlX2JpdHM7CjE0NDc0OiAgdW5zaWduZWQgaW5pdGlhbGl6ZWQgOiAxOwox NDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBjcHVpZF9yZWdzIHsKMTQ0NzQ6ICB1MzIgZWF4LCBlYngsIGVjeCwgZWR4Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjcHVpZF9yZWdzX2lkeCB7CjE0NDc0OiAgQ1BV SURfRUFYID0gMCwKMTQ0NzQ6ICBDUFVJRF9FQlgsCjE0NDc0OiAgQ1BVSURfRUNYLAoxNDQ3NDog IENQVUlEX0VEWCwKMTQ0NzQ6IH07CjE0NDc0OiAjIDE3MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9wcm9jZXNzb3IuaCIKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgY3B1aW5mb194ODYgYm9vdF9jcHVf ZGF0YTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgY3B1aW5mb194ODYgbmV3X2NwdV9kYXRhOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gX191MzIgY3B1X2NhcHNfY2xlYXJlZFsxOSArIDFdOwoxNDQ3NDog ZXh0ZXJuIF9fdTMyIGNwdV9jYXBzX3NldFsxOSArIDFdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21v c3RseSIpKSkgX190eXBlb2ZfXyhzdHJ1Y3QgY3B1aW5mb194ODYpIGNwdV9pbmZvOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNv bnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyBjcHVpbmZvX29wOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgY3B1X2RldGVjdChzdHJ1Y3QgY3B1aW5mb194ODYgKmMp OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGxvbmcgbDF0Zl9wZm5fbGltaXQodm9pZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCgoKDFVTEwpKSkgPDwgKGJvb3RfY3B1X2RhdGEueDg2 X2NhY2hlX2JpdHMgLSAxIC0gMTIpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZv aWQgZWFybHlfY3B1X2luaXQodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBpZGVudGlmeV9ib290 X2NwdSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGlkZW50aWZ5X3NlY29uZGFyeV9jcHUoc3Ry dWN0IGNwdWluZm9feDg2ICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgcHJpbnRfY3B1X2luZm8oc3Ry dWN0IGNwdWluZm9feDg2ICopOwoxNDQ3NDogdm9pZCBwcmludF9jcHVfbXNyKHN0cnVjdCBjcHVp bmZvX3g4NiAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGhh dmVfY3B1aWRfcCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAxOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIG5hdGl2ZV9jcHVpZCh1bnNpZ25lZCBpbnQgKmVheCwgdW5zaWduZWQg aW50ICplYngsCjE0NDc0OiAgICAgdW5zaWduZWQgaW50ICplY3gsIHVuc2lnbmVkIGludCAqZWR4 KQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgYXNtIHZvbGF0aWxlKCJjcHVpZCIKMTQ0NzQ6ICAg ICAgOiAiPWEiICgqZWF4KSwKMTQ0NzQ6ICAgICAgICAiPWIiICgqZWJ4KSwKMTQ0NzQ6ICAgICAg ICAiPWMiICgqZWN4KSwKMTQ0NzQ6ICAgICAgICAiPWQiICgqZWR4KQoxNDQ3NDogICAgICA6ICIw IiAoKmVheCksICIyIiAoKmVjeCkKMTQ0NzQ6ICAgICAgOiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0 NDc0OiAjIDIzNSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVu c2lnbmVkIGludCBuYXRpdmVfY3B1aWRfZWF4KHVuc2lnbmVkIGludCBvcCkgeyB1bnNpZ25lZCBp bnQgZWF4ID0gb3AsIGVieCwgZWN4ID0gMCwgZWR4OyBuYXRpdmVfY3B1aWQoJmVheCwgJmVieCwg JmVjeCwgJmVkeCk7IHJldHVybiBlYXg7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBuYXRpdmVfY3B1 aWRfZWJ4KHVuc2lnbmVkIGludCBvcCkgeyB1bnNpZ25lZCBpbnQgZWF4ID0gb3AsIGVieCwgZWN4 ID0gMCwgZWR4OyBuYXRpdmVfY3B1aWQoJmVheCwgJmVieCwgJmVjeCwgJmVkeCk7IHJldHVybiBl Yng7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBuYXRpdmVfY3B1aWRfZWN4KHVuc2lnbmVkIGludCBv cCkgeyB1bnNpZ25lZCBpbnQgZWF4ID0gb3AsIGVieCwgZWN4ID0gMCwgZWR4OyBuYXRpdmVfY3B1 aWQoJmVheCwgJmVieCwgJmVjeCwgJmVkeCk7IHJldHVybiBlY3g7IH0KMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVk IGludCBuYXRpdmVfY3B1aWRfZWR4KHVuc2lnbmVkIGludCBvcCkgeyB1bnNpZ25lZCBpbnQgZWF4 ID0gb3AsIGVieCwgZWN4ID0gMCwgZWR4OyBuYXRpdmVfY3B1aWQoJmVheCwgJmVieCwgJmVjeCwg JmVkeCk7IHJldHVybiBlZHg7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdW5zaWduZWQgbG9uZyByZWFkX2NyM19wYSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biBfX3JlYWRfY3IzKCkgJiAoMHg3RkZGRkZGRkZGRkZGMDAwdWxsKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBuYXRpdmVfcmVhZF9jcjNfcGEodm9pZCkKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gX19uYXRpdmVfcmVhZF9jcjMoKSAmICgweDdGRkZGRkZGRkZGRkYwMDB1 bGwpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxvYWRfY3IzKHBnZF90ICpwZ2RpcikK MTQ0NzQ6IHsKMTQ0NzQ6ICB3cml0ZV9jcjMoKF9fcGh5c19hZGRyX25vZGVidWcoKHVuc2lnbmVk IGxvbmcpKHBnZGlyKSkgfCAwVUxMKSk7CjE0NDc0OiB9CjE0NDc0OiAjIDMxMiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKMTQ0NzQ6IHN0cnVjdCB4ODZfaHdfdHNzIHsKMTQ0 NzQ6ICB1MzIgcmVzZXJ2ZWQxOwoxNDQ3NDogIHU2NCBzcDA7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHU2NCBzcDE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTY0IHNwMjsKMTQ0NzQ6IAoxNDQ3 NDogIHU2NCByZXNlcnZlZDI7CjE0NDc0OiAgdTY0IGlzdFs3XTsKMTQ0NzQ6ICB1MzIgcmVzZXJ2 ZWQzOwoxNDQ3NDogIHUzMiByZXNlcnZlZDQ7CjE0NDc0OiAgdTE2IHJlc2VydmVkNTsKMTQ0NzQ6 ICB1MTYgaW9fYml0bWFwX2Jhc2U7CjE0NDc0OiAKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7CjE0NDc0OiAjIDM3MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIK MTQ0NzQ6IHN0cnVjdCBlbnRyeV9zdGFjayB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB3b3Jkc1s2 NF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZW50cnlfc3RhY2tfcGFnZSB7CjE0 NDc0OiAgc3RydWN0IGVudHJ5X3N0YWNrIHN0YWNrOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChf X2FsaWduZWRfXygoKDFVTCkgPDwgMTIpKSkpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgeDg2X2lvX2JpdG1hcCB7CjE0NDc0OiAKMTQ0NzQ6ICB1NjQgcHJl dl9zZXF1ZW5jZTsKMTQ0NzQ6ICMgMzkyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nv ci5oIgoxNDQ3NDogIHVuc2lnbmVkIGludCBwcmV2X21heDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg Yml0bWFwWygoNjU1MzYgLyA4KSAvIHNpemVvZihsb25nKSkgKyAxXTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtYXBhbGxbKCg2 NTUzNiAvIDgpIC8gc2l6ZW9mKGxvbmcpKSArIDFdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IHRzc19zdHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBzdHJ1Y3QgeDg2X2h3X3RzcyB4ODZfdHNzOwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IHg4Nl9pb19iaXRtYXAgaW9fYml0bWFwOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX2Fs aWduZWRfXygoKDFVTCkgPDwgMTIpKSkpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1 dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIi4ucGFnZV9hbGlnbmVkIikpKSBfX3R5cGVv Zl9fKHN0cnVjdCB0c3Nfc3RydWN0KSBjcHVfdHNzX3J3IF9fYXR0cmlidXRlX18oKF9fYWxpZ25l ZF9fKCgoMVVMKSA8PCAxMikpKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGlycV9z dGFjayB7CjE0NDc0OiAgY2hhciBzdGFja1soKCgxVUwpIDw8IDEyKSA8PCAoMiArIDApKV07CjE0 NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgoKDFVTCkgPDwgMTIpIDw8ICgyICsg MCkpKSkpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRh dGEuLnBlcmNwdSIgIiIpKSkgX190eXBlb2ZfXyhzdHJ1Y3QgaXJxX3N0YWNrICopIGhhcmRpcnFf c3RhY2tfcHRyOwoxNDQ3NDogIyA0MzcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29y LmgiCjE0NDc0OiBzdHJ1Y3QgZml4ZWRfcGVyY3B1X2RhdGEgewoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBjaGFyIGdzX2Jhc2VbNDBdOwoxNDQ3NDogIHVu c2lnbmVkIGxvbmcgc3RhY2tfY2FuYXJ5OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIuLmZpcnN0IikpKSBfX3R5 cGVvZl9fKHN0cnVjdCBmaXhlZF9wZXJjcHVfZGF0YSkgZml4ZWRfcGVyY3B1X2RhdGEgX19hdHRy aWJ1dGVfXygoX19leHRlcm5hbGx5X3Zpc2libGVfXykpOwoxNDQ3NDogZXh0ZXJuIHR5cGVvZihm aXhlZF9wZXJjcHVfZGF0YSkgaW5pdF9wZXJfY3B1X19maXhlZF9wZXJjcHVfZGF0YTsKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBjcHVfa2VybmVsbW9kZV9nc19iYXNlKGludCBjcHUpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh1bnNpZ25lZCBsb25nKSgqKHsgZG8geyBjb25zdCB2b2lk ICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKGZpeGVkX3BlcmNwdV9kYXRhLmdzX2Jhc2UpKSAr IDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNp Z25lZCBsb25nIF9fcHRyOyBfX2FzbV9fICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2Yo KigoJihmaXhlZF9wZXJjcHVfZGF0YS5nc19iYXNlKSkpKSAqKSgoJihmaXhlZF9wZXJjcHVfZGF0 YS5nc19iYXNlKSkpKSk7ICh0eXBlb2YoKHR5cGVvZigqKCgmKGZpeGVkX3BlcmNwdV9kYXRhLmdz X2Jhc2UpKSkpICopKCgmKGZpeGVkX3BlcmNwdV9kYXRhLmdzX2Jhc2UpKSkpKSAoX19wdHIgKyAo KChfX3Blcl9jcHVfb2Zmc2V0WyhjcHUpXSkpKSk7IH0pOyB9KSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiIikp KSBfX3R5cGVvZl9fKHVuc2lnbmVkIGludCkgaXJxX2NvdW50OwoxNDQ3NDogZXh0ZXJuIHZvaWQg aWdub3JlX3N5c3JldCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQg c2F2ZV9mc2dzX2Zvcl9rdm0odm9pZCk7CjE0NDc0OiAjIDQ4MCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9wcm9jZXNzb3IuaCIKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQgZnB1X2tlcm5lbF94 c3RhdGVfc2l6ZTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQgZnB1X3VzZXJfeHN0YXRlX3Np emU7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwZXJmX2V2ZW50OwoxNDQ3NDogCjE0NDc0OiB0eXBl ZGVmIHN0cnVjdCB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBzZWc7CjE0NDc0OiB9IG1tX3NlZ21l bnRfdDsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRocmVhZF9zdHJ1Y3QgewoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IGRlc2Nfc3RydWN0IHRsc19hcnJheVszXTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNwOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHVuc2lnbmVkIHNob3J0IGVzOwoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IGRzOwoxNDQ3NDog IHVuc2lnbmVkIHNob3J0IGZzaW5kZXg7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgZ3NpbmRleDsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGZzYmFzZTsKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIGdzYmFzZTsKMTQ0NzQ6ICMgNTE4ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3Byb2Nlc3Nvci5oIgoxNDQ3NDogIHN0cnVjdCBwZXJmX2V2ZW50ICpwdHJhY2VfYnBz WzRdOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBkZWJ1Z3JlZzY7CjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIHB0cmFjZV9kcjc7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIGNyMjsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHRyYXBfbnI7CjE0NDc0OiAgdW5zaWduZWQg bG9uZyBlcnJvcl9jb2RlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBzdHJ1Y3QgaW9fYml0bWFwICppb19iaXRtYXA7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBpb3BsX2Vt dWw7CjE0NDc0OiAKMTQ0NzQ6ICBtbV9zZWdtZW50X3QgYWRkcl9saW1pdDsKMTQ0NzQ6IAoxNDQ3 NDogIHVuc2lnbmVkIGludCBzaWdfb25fdWFjY2Vzc19lcnI6MTsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgdWFjY2Vzc19lcnI6MTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGZwdSBmcHU7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBhcmNoX3RocmVhZF9zdHJ1Y3Rfd2hpdGVsaXN0KHVuc2lnbmVkIGxvbmcg Km9mZnNldCwKMTQ0NzQ6ICAgICAgIHVuc2lnbmVkIGxvbmcgKnNpemUpCjE0NDc0OiB7CjE0NDc0 OiAgKm9mZnNldCA9IF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgdGhyZWFkX3N0cnVjdCwgZnB1 LnN0YXRlKTsKMTQ0NzQ6ICAqc2l6ZSA9IGZwdV9rZXJuZWxfeHN0YXRlX3NpemU7CjE0NDc0OiB9 CjE0NDc0OiAjIDU3MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQKMTQ0NzQ6IG5hdGl2ZV9sb2FkX3NwMCh1bnNpZ25lZCBsb25nIHNwMCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBkbyB7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJihj cHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVy aWZ5OyB9IHdoaWxlICgwKTsgc3dpdGNoKHNpemVvZihjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkg eyBjYXNlIDE6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSBw dG9fVF9fOyBpZiAoMCkgeyBwdG9fVF9fIHB0b190bXBfXzsgcHRvX3RtcF9fID0gKHNwMCk7ICh2 b2lkKXB0b190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkp KSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAlMSwiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgOiAicWkiICgocHRvX1RfXykoc3Aw KSkpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICUxLCIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSA6ICJyaSIgKChwdG9f VF9fKShzcDApKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgJTEsIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInJp IiAoKHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAi cSAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3Aw KSkgOiAicmUiICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1 X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSAyOiBkbyB7IHR5cGVkZWYgdHlwZW9m KChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgcHRvX1RfXzsgaWYgKDApIHsgcHRvX1RfXyBwdG9f dG1wX187IHB0b190bXBfXyA9IChzcDApOyAodm9pZClwdG9fdG1wX187IH0gc3dpdGNoIChzaXpl b2YoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1v diIgImIgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNz LnNwMCkpIDogInFpIiAoKHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0 aWxlICgibW92IiAidyAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3 Lng4Nl90c3Muc3AwKSkgOiAicmkiICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgY2FzZSA0OiBh c20gdm9sYXRpbGUgKCJtb3YiICJsICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKGNw dV90c3NfcncueDg2X3Rzcy5zcDApKSA6ICJyaSIgKChwdG9fVF9fKShzcDApKSk7IGJyZWFrOyBj YXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInJlIiAoKHB0b19UX18pKHNwMCkpKTsg YnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7 IGNhc2UgNDogZG8geyB0eXBlZGVmIHR5cGVvZigoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIHB0 b19UX187IGlmICgwKSB7IHB0b19UX18gcHRvX3RtcF9fOyBwdG9fdG1wX18gPSAoc3AwKTsgKHZv aWQpcHRvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkp IHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICUxLCIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSA6ICJxaSIgKChwdG9fVF9fKShzcDAp KSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgJTEsIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInJpIiAoKHB0b19U X18pKHNwMCkpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAlMSwiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgOiAicmki ICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJx ICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKGNwdV90c3NfcncueDg2X3Rzcy5zcDAp KSA6ICJyZSIgKChwdG9fVF9fKShzcDApKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVf c2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDg6IGRvIHsgdHlwZWRlZiB0eXBlb2Yo KGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSBwdG9fVF9fOyBpZiAoMCkgeyBwdG9fVF9fIHB0b190 bXBfXzsgcHRvX3RtcF9fID0gKHNwMCk7ICh2b2lkKXB0b190bXBfXzsgfSBzd2l0Y2ggKHNpemVv ZigoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92 IiAiYiAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Mu c3AwKSkgOiAicWkiICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRp bGUgKCJtb3YiICJ3ICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKGNwdV90c3Nfcncu eDg2X3Rzcy5zcDApKSA6ICJyaSIgKChwdG9fVF9fKShzcDApKSk7IGJyZWFrOyBjYXNlIDQ6IGFz bSB2b2xhdGlsZSAoIm1vdiIgImwgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1 X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInJpIiAoKHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGNh c2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgOiAicmUiICgocHRvX1RfXykoc3AwKSkpOyBi cmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsg ZGVmYXVsdDogX19iYWRfc2l6ZV9jYWxsX3BhcmFtZXRlcigpO2JyZWFrOyB9IH0gd2hpbGUgKDAp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5hdGl2ZV9zd2FwZ3Modm9pZCkKMTQ0NzQ6 IHsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgic3dhcGdzIiA6OjogIm1lbW9yeSIpOwox NDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgY3VycmVudF90b3Bf b2Zfc3RhY2sodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgcmV0dXJuICh7IHR5cGVvZihjcHVfdHNzX3J3Lng4Nl90c3Muc3AxKSBw Zm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV90c3NfcncueDg2X3Rzcy5zcDEpKSB7IGNhc2Ug MTogYXNtKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIlAxIiIsJTAiIDogIj1xIiAocGZvX3Jl dF9fKSA6ICJwIiAoJihjcHVfdHNzX3J3Lng4Nl90c3Muc3AxKSkpOyBicmVhazsgY2FzZSAyOiBh c20oIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiUDEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18p IDogInAiICgmKGNwdV90c3NfcncueDg2X3Rzcy5zcDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSgi bW92IiAibCAiIiUlIiJncyIiOiIgIiUiICJQMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAi cCIgKCYoY3B1X3Rzc19ydy54ODZfdHNzLnNwMSkpKTsgYnJlYWs7IGNhc2UgODogYXNtKCJtb3Yi ICJxICIiJSUiImdzIiI6IiAiJSIgIlAxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJwIiAo JihjcHVfdHNzX3J3Lng4Nl90c3Muc3AxKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1 X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIG9u X3RocmVhZF9zdGFjayh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodW5zaWduZWQgbG9u ZykoY3VycmVudF90b3Bfb2Zfc3RhY2soKSAtCjE0NDc0OiAgICAgICAgICAgY3VycmVudF9zdGFj a19wb2ludGVyKSA8ICgoKDFVTCkgPDwgMTIpIDw8ICgyICsgMCkpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2Fk X3NwMCh1bnNpZ25lZCBsb25nIHNwMCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBuYXRpdmVfbG9hZF9zcDAo c3AwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIHZvaWQgcmVsZWFzZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoxNDQ3NDogCjE0 NDc0OiB1bnNpZ25lZCBsb25nIGdldF93Y2hhbihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBj cHVpZCh1bnNpZ25lZCBpbnQgb3AsCjE0NDc0OiAgICAgdW5zaWduZWQgaW50ICplYXgsIHVuc2ln bmVkIGludCAqZWJ4LAoxNDQ3NDogICAgIHVuc2lnbmVkIGludCAqZWN4LCB1bnNpZ25lZCBpbnQg KmVkeCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAqZWF4ID0gb3A7CjE0NDc0OiAgKmVjeCA9IDA7CjE0NDc0 OiAgbmF0aXZlX2NwdWlkKGVheCwgZWJ4LCBlY3gsIGVkeCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBjcHVpZF9jb3VudCh1bnNpZ25lZCBpbnQgb3AsIGludCBjb3VudCwK MTQ0NzQ6ICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmVheCwgdW5zaWduZWQgaW50ICplYngsCjE0 NDc0OiAgICAgICAgICAgdW5zaWduZWQgaW50ICplY3gsIHVuc2lnbmVkIGludCAqZWR4KQoxNDQ3 NDogewoxNDQ3NDogICplYXggPSBvcDsKMTQ0NzQ6ICAqZWN4ID0gY291bnQ7CjE0NDc0OiAgbmF0 aXZlX2NwdWlkKGVheCwgZWJ4LCBlY3gsIGVkeCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBjcHVpZF9lYXgodW5zaWduZWQgaW50 IG9wKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGludCBlYXgsIGVieCwgZWN4LCBlZHg7CjE0 NDc0OiAKMTQ0NzQ6ICBjcHVpZChvcCwgJmVheCwgJmVieCwgJmVjeCwgJmVkeCk7CjE0NDc0OiAK MTQ0NzQ6ICByZXR1cm4gZWF4OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQg Y3B1aWRfZWJ4KHVuc2lnbmVkIGludCBvcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg ZWF4LCBlYngsIGVjeCwgZWR4OwoxNDQ3NDogCjE0NDc0OiAgY3B1aWQob3AsICZlYXgsICZlYngs ICZlY3gsICZlZHgpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGVieDsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdW5zaWduZWQgaW50IGNwdWlkX2VjeCh1bnNpZ25lZCBpbnQgb3ApCjE0NDc0OiB7 CjE0NDc0OiAgdW5zaWduZWQgaW50IGVheCwgZWJ4LCBlY3gsIGVkeDsKMTQ0NzQ6IAoxNDQ3NDog IGNwdWlkKG9wLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVy biBlY3g7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBjcHVpZF9lZHgodW5z aWduZWQgaW50IG9wKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGludCBlYXgsIGVieCwgZWN4 LCBlZHg7CjE0NDc0OiAKMTQ0NzQ6ICBjcHVpZChvcCwgJmVheCwgJmVieCwgJmVjeCwgJmVkeCk7 CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZWR4OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCByZXBfbm9wKHZvaWQp CjE0NDc0OiB7CjE0NDc0OiAgYXNtIHZvbGF0aWxlKCJyZXA7IG5vcCIgOjo6ICJtZW1vcnkiKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIGNwdV9yZWxheCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJlcF9ub3AoKTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgNzA1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBzeW5jX2NvcmUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICMgNzM4ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgoxNDQ3NDogIHVuc2lnbmVkIGludCB0bXA7CjE0NDc0 OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUgKAoxNDQ3NDogICAiOTg3OiBcblx0IiAiLnB1c2hzZWN0 aW9uIC5kaXNjYXJkLnVud2luZF9oaW50c1xuXHQiICIubG9uZyA5ODdiIC0gLlxuXHQiICIuc2hv cnQgIiAiMCIgIlxuXHQiICIuYnl0ZSAiICIwIiAiXG5cdCIgIi5ieXRlICIgIjMiICJcblx0IiAi LmJ5dGUgIiAiMCIgIlxuXHQiICIuYmFsaWduIDQgXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIKMTQ0 NzQ6ICAgIm1vdiAlJXNzLCAlMFxuXHQiCjE0NDc0OiAgICJwdXNocSAlcTBcblx0IgoxNDQ3NDog ICAicHVzaHEgJSVyc3Bcblx0IgoxNDQ3NDogICAiYWRkcSAkOCwgKCUlcnNwKVxuXHQiCjE0NDc0 OiAgICJwdXNoZnFcblx0IgoxNDQ3NDogICAibW92ICUlY3MsICUwXG5cdCIKMTQ0NzQ6ICAgInB1 c2hxICVxMFxuXHQiCjE0NDc0OiAgICJwdXNocSAkMWZcblx0IgoxNDQ3NDogICAiaXJldHFcblx0 IgoxNDQ3NDogICAiOTg3OiBcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVud2luZF9oaW50 c1xuXHQiICIubG9uZyA5ODdiIC0gLlxuXHQiICIuc2hvcnQgIiAiMCIgIlxuXHQiICIuYnl0ZSAi ICIwIiAiXG5cdCIgIi5ieXRlICIgIjQiICJcblx0IiAiLmJ5dGUgIiAiMCIgIlxuXHQiICIuYmFs aWduIDQgXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIKMTQ0NzQ6ICAgIjE6IgoxNDQ3NDogICA6ICI9 JnIiICh0bXApLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogOiAiY2MiLCAibWVtb3J5 Iik7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgc2VsZWN0X2lk bGVfcm91dGluZShjb25zdCBzdHJ1Y3QgY3B1aW5mb194ODYgKmMpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgYW1kX2U0MDBfYzFlX2FwaWNfc2V0dXAodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1 bnNpZ25lZCBsb25nIGJvb3Rfb3B0aW9uX2lkbGVfb3ZlcnJpZGU7CjE0NDc0OiAKMTQ0NzQ6IGVu dW0gaWRsZV9ib290X292ZXJyaWRlIHtJRExFX05PX09WRVJSSURFPTAsIElETEVfSEFMVCwgSURM RV9OT01XQUlULAoxNDQ3NDogICAgIElETEVfUE9MTH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2 b2lkIGVuYWJsZV9zZXBfY3B1KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCBzeXNlbnRlcl9zZXR1 cCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVz Y19wdHIgZWFybHlfZ2R0X2Rlc2NyOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzd2l0Y2hf dG9fbmV3X2dkdChpbnQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgbG9hZF9kaXJlY3RfZ2R0KGludCk7 CjE0NDc0OiBleHRlcm4gdm9pZCBsb2FkX2ZpeG1hcF9nZHQoaW50KTsKMTQ0NzQ6IGV4dGVybiB2 b2lkIGxvYWRfcGVyY3B1X3NlZ21lbnQoaW50KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNwdV9pbml0 KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgY3I0X2luaXQodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHVuc2lnbmVkIGxvbmcgZ2V0X2RlYnVnY3RsbXNyKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgdW5z aWduZWQgbG9uZyBkZWJ1Z2N0bG1zciA9IDA7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogICgoZGVidWdjdGxtc3IpID0gbmF0aXZlX3JlYWRfbXNyKCgweDAw MDAwMWQ5KSkpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGRlYnVnY3RsbXNyOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHVwZGF0ZV9kZWJ1Z2N0bG1zcih1bnNpZ25lZCBsb25nIGRlYnVn Y3RsbXNyKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg d3Jtc3JsKDB4MDAwMDAxZDksIGRlYnVnY3RsbXNyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHZvaWQgc2V0X3Rhc2tfYmxvY2tzdGVwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywg Ym9vbCBvbik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBib290bG9hZGVyX3R5 cGU7CjE0NDc0OiBleHRlcm4gaW50IGJvb3Rsb2FkZXJfdmVyc2lvbjsKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIGNoYXIgaWdub3JlX2ZwdV9pcnE7CjE0NDc0OiAjIDgyNiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9wcm9jZXNzb3IuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcHJlZmV0Y2goY29uc3Qgdm9pZCAqeCkK MTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gX19pbmxpbmUgdm9sYXRpbGUgKCIjIEFMVDogb2xkbnN0clxu IiAiNjYxOlxuXHQiICJwcmVmZXRjaHQwICVQMSIgIlxuNjYyOlxuIiAiIyBBTFQ6IHBhZGRpbmdc biIgIi5za2lwIC0oKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpLSgiICI2NjJiLTY2MWIi ICIpKSA+IDApICogIiAiKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpLSgiICI2NjJiLTY2 MWIiICIpKSwweDkwXG4iICI2NjMiICI6XG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RydWN0aW9u cyxcImFcIlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIgLmxvbmcgIiAiNjY0IiIxIiJmIC0gLlxu IiAiIC53b3JkICIgIiggMCozMisyNSkiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYxYiIgIlxu IiAiIC5ieXRlICIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIlxuIiAiIC5ieXRlICIgIjY2MyIi Yi02NjJiIiAiXG4iICIucG9wc2VjdGlvblxuIiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cl9yZXBs YWNlbWVudCwgXCJheFwiXG4iICIjIEFMVDogcmVwbGFjZW1lbnQgIiAiMSIgIlxuIiAiNjY0IiIx IiI6XG5cdCIgInByZWZldGNobnRhICVQMSIgIlxuIiAiNjY1IiIxIiAiOlxuIiAiLnBvcHNlY3Rp b25cbiIgOiA6ICJpIiAoMCksICJtIiAoKihjb25zdCBjaGFyICopeCkpCjE0NDc0OiAKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHByZWZldGNodyhjb25z dCB2b2lkICp4KQoxNDQ3NDogewoxNDQ3NDogIGFzbSBfX2lubGluZSB2b2xhdGlsZSAoIiMgQUxU OiBvbGRuc3RyXG4iICI2NjE6XG5cdCIgInByZWZldGNodDAgJVAxIiAiXG42NjI6XG4iICIjIEFM VDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIiktKCIg IjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikt KCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAuYWx0 aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2NjQi IjEiImYgLSAuXG4iICIgLndvcmQgIiAiKCA2KjMyKyA4KSIgIlxuIiAiIC5ieXRlICIgIjY2MyIi Yi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIgLmJ5 dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rpb24gLmFs dGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIxIiAi XG4iICI2NjQiIjEiIjpcblx0IiAicHJlZmV0Y2h3ICVQMSIgIlxuIiAiNjY1IiIxIiAiOlxuIiAi LnBvcHNlY3Rpb25cbiIgOiA6ICJpIiAoMCksICJtIiAoKihjb25zdCBjaGFyICopeCkpCjE0NDc0 OiAKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgc3Bpbl9sb2NrX3ByZWZldGNoKGNvbnN0IHZvaWQgKngpCjE0NDc0OiB7CjE0 NDc0OiAgcHJlZmV0Y2h3KHgpOwoxNDQ3NDogfQoxNDQ3NDogIyA5MjUgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vcHJvY2Vzc29yLmgiCjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBLU1RLX0VT UChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIHZvaWQgc3RhcnRfdGhyZWFkKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25l ZCBsb25nIG5ld19pcCwKMTQ0NzQ6ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbmV3X3NwKTsK MTQ0NzQ6ICMgOTQ1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgoxNDQ3NDog ZXh0ZXJuIGludCBnZXRfdHNjX21vZGUodW5zaWduZWQgbG9uZyBhZHIpOwoxNDQ3NDogZXh0ZXJu IGludCBzZXRfdHNjX21vZGUodW5zaWduZWQgaW50IHZhbCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiIikpKSBfX3R5cGVvZl9f KHU2NCkgbXNyX21pc2NfZmVhdHVyZXNfc2hhZG93OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiB1MTYgYW1kX2dldF9uYl9pZChpbnQgY3B1KTsKMTQ0NzQ6IGV4dGVybiB1MzIgYW1kX2dl dF9ub2Rlc19wZXJfc29ja2V0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHVpbnQzMl90IGh5cGVydmlzb3JfY3B1aWRfYmFzZShjb25zdCBjaGFy ICpzaWcsIHVpbnQzMl90IGxlYXZlcykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1aW50MzJfdCBiYXNlLCBl YXgsIHNpZ25hdHVyZVszXTsKMTQ0NzQ6IAoxNDQ3NDogIGZvciAoYmFzZSA9IDB4NDAwMDAwMDA7 IGJhc2UgPCAweDQwMDEwMDAwOyBiYXNlICs9IDB4MTAwKSB7CjE0NDc0OiAgIGNwdWlkKGJhc2Us ICZlYXgsICZzaWduYXR1cmVbMF0sICZzaWduYXR1cmVbMV0sICZzaWduYXR1cmVbMl0pOwoxNDQ3 NDogCjE0NDc0OiAgIGlmICghbWVtY21wKHNpZywgc2lnbmF0dXJlLCAxMikgJiYKMTQ0NzQ6ICAg ICAgIChsZWF2ZXMgPT0gMCB8fCAoKGVheCAtIGJhc2UpID49IGxlYXZlcykpKQoxNDQ3NDogICAg cmV0dXJuIGJhc2U7CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIGFyY2hfYWxpZ25fc3RhY2sodW5z aWduZWQgbG9uZyBzcCk7CjE0NDc0OiB2b2lkIGZyZWVfaW5pdF9wYWdlcyhjb25zdCBjaGFyICp3 aGF0LCB1bnNpZ25lZCBsb25nIGJlZ2luLCB1bnNpZ25lZCBsb25nIGVuZCk7CjE0NDc0OiBleHRl cm4gdm9pZCBmcmVlX2tlcm5lbF9pbWFnZV9wYWdlcyhjb25zdCBjaGFyICp3aGF0LCB2b2lkICpi ZWdpbiwgdm9pZCAqZW5kKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkZWZhdWx0X2lkbGUodm9pZCk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2 b2lkIHN0b3BfdGhpc19jcHUodm9pZCAqZHVtbXkpOwoxNDQ3NDogdm9pZCBtaWNyb2NvZGVfY2hl Y2sodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGVudW0gbDF0Zl9taXRpZ2F0aW9ucyB7CjE0NDc0OiAg TDFURl9NSVRJR0FUSU9OX09GRiwKMTQ0NzQ6ICBMMVRGX01JVElHQVRJT05fRkxVU0hfTk9XQVJO LAoxNDQ3NDogIEwxVEZfTUlUSUdBVElPTl9GTFVTSCwKMTQ0NzQ6ICBMMVRGX01JVElHQVRJT05f RkxVU0hfTk9TTVQsCjE0NDc0OiAgTDFURl9NSVRJR0FUSU9OX0ZVTEwsCjE0NDc0OiAgTDFURl9N SVRJR0FUSU9OX0ZVTExfRk9SQ0UKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBlbnVt IGwxdGZfbWl0aWdhdGlvbnMgbDF0Zl9taXRpZ2F0aW9uOwoxNDQ3NDogCjE0NDc0OiBlbnVtIG1k c19taXRpZ2F0aW9ucyB7CjE0NDc0OiAgTURTX01JVElHQVRJT05fT0ZGLAoxNDQ3NDogIE1EU19N SVRJR0FUSU9OX0ZVTEwsCjE0NDc0OiAgTURTX01JVElHQVRJT05fVk1XRVJWLAoxNDQ3NDogfTsK MTQ0NzQ6ICMgNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmgiIDIKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gY3B1 aWRfbGVhZnMKMTQ0NzQ6IHsKMTQ0NzQ6ICBDUFVJRF8xX0VEWCA9IDAsCjE0NDc0OiAgQ1BVSURf ODAwMF8wMDAxX0VEWCwKMTQ0NzQ6ICBDUFVJRF84MDg2XzAwMDFfRURYLAoxNDQ3NDogIENQVUlE X0xOWF8xLAoxNDQ3NDogIENQVUlEXzFfRUNYLAoxNDQ3NDogIENQVUlEX0MwMDBfMDAwMV9FRFgs CjE0NDc0OiAgQ1BVSURfODAwMF8wMDAxX0VDWCwKMTQ0NzQ6ICBDUFVJRF9MTlhfMiwKMTQ0NzQ6 ICBDUFVJRF9MTlhfMywKMTQ0NzQ6ICBDUFVJRF83XzBfRUJYLAoxNDQ3NDogIENQVUlEX0RfMV9F QVgsCjE0NDc0OiAgQ1BVSURfTE5YXzQsCjE0NDc0OiAgQ1BVSURfN18xX0VBWCwKMTQ0NzQ6ICBD UFVJRF84MDAwXzAwMDhfRUJYLAoxNDQ3NDogIENQVUlEXzZfRUFYLAoxNDQ3NDogIENQVUlEXzgw MDBfMDAwQV9FRFgsCjE0NDc0OiAgQ1BVSURfN19FQ1gsCjE0NDc0OiAgQ1BVSURfODAwMF8wMDA3 X0VCWCwKMTQ0NzQ6ICBDUFVJRF83X0VEWCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCB4ODZfY2FwX2ZsYWdzWzE5KjMyXTsKMTQ0NzQ6 IGV4dGVybiBjb25zdCBjaGFyICogY29uc3QgeDg2X3Bvd2VyX2ZsYWdzWzMyXTsKMTQ0NzQ6ICMg NDkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oIgoxNDQ3NDogZXh0ZXJuIGNv bnN0IGNoYXIgKiBjb25zdCB4ODZfYnVnX2ZsYWdzWzEqMzJdOwoxNDQ3NDogIyAxNDEgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0dXBf Y2xlYXJfY3B1X2NhcCh1bnNpZ25lZCBpbnQgYml0KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNsZWFy X2NwdV9jYXAoc3RydWN0IGNwdWluZm9feDg2ICpjLCB1bnNpZ25lZCBpbnQgYml0KTsKMTQ0NzQ6 ICMgMTczICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBfc3RhdGljX2NwdV9oYXModTE2IGJp dCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IGFzbSBnb3RvKCIxOiBqbXAgNmZcbiIgIjI6XG4iICIu c2tpcCAtKCgoNWYtNGYpIC0gKDJiLTFiKSkgPiAwKSAqICIgIigoNWYtNGYpIC0gKDJiLTFiKSks MHg5MFxuIiAiMzpcbiIgIi5zZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAubG9u ZyAxYiAtIC5cbiIgIiAubG9uZyA0ZiAtIC5cbiIgIiAud29yZCAlUFthbHdheXNdXG4iICIgLmJ5 dGUgM2IgLSAxYlxuIiAiIC5ieXRlIDVmIC0gNGZcbiIgIiAuYnl0ZSAzYiAtIDJiXG4iICIucHJl dmlvdXNcbiIgIi5zZWN0aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVudCxcImF4XCJcbiIgIjQ6IGpt cCAlbFt0X25vXVxuIiAiNTpcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gLmFsdGluc3RydWN0 aW9ucyxcImFcIlxuIiAiIC5sb25nIDFiIC0gLlxuIiAiIC5sb25nIDBcbiIgIiAud29yZCAlUFtm ZWF0dXJlXVxuIiAiIC5ieXRlIDNiIC0gMWJcbiIgIiAuYnl0ZSAwXG4iICIgLmJ5dGUgMFxuIiAi LnByZXZpb3VzXG4iICIuc2VjdGlvbiAuYWx0aW5zdHJfYXV4LFwiYXhcIlxuIiAiNjpcbiIgIiB0 ZXN0YiAlW2JpdG51bV0sJVtjYXBfYnl0ZV1cbiIgIiBqbnogJWxbdF95ZXNdXG4iICIgam1wICVs W3Rfbm9dXG4iICIucHJldmlvdXNcbiIgOiA6IFtmZWF0dXJlXSAiaSIgKGJpdCksIFthbHdheXNd ICJpIiAoKCAzKjMyKzIxKSksIFtiaXRudW1dICJpIiAoMSA8PCAoYml0ICYgNykpLCBbY2FwX2J5 dGVdICJtIiAoKChjb25zdCBjaGFyICopYm9vdF9jcHVfZGF0YS54ODZfY2FwYWJpbGl0eSlbYml0 ID4+IDNdKSA6IDogdF95ZXMsIHRfbm8pOyBhc20gKCIiKTsgfSB3aGlsZSAoMCkKMTQ0NzQ6ICMg MjEwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCIKMTQ0NzQ6ICAgICAgICAg ICAgICAgICAgICA7CjE0NDc0OiB0X3llczoKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IHRf bm86CjE0NDc0OiAgcmV0dXJuIGZhbHNlOwoxNDQ3NDogfQoxNDQ3NDogIyA1NCAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IHRocmVhZF9pbmZvIHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGZsYWdzOwoxNDQ3NDogIHUz MiBzdGF0dXM7CjE0NDc0OiB9OwoxNDQ3NDogIyAxODYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v dGhyZWFkX2luZm8uaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBhcmNoX3dpdGhpbl9zdGFja19mcmFtZXMoY29uc3Qg dm9pZCAqIGNvbnN0IHN0YWNrLAoxNDQ3NDogICAgICAgICBjb25zdCB2b2lkICogY29uc3Qgc3Rh Y2tlbmQsCjE0NDc0OiAgICAgICAgIGNvbnN0IHZvaWQgKm9iaiwgdW5zaWduZWQgbG9uZyBsZW4p CjE0NDc0OiB7CjE0NDc0OiAjIDIxOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90aHJlYWRfaW5m by5oIgoxNDQ3NDogIHJldHVybiBOT1RfU1RBQ0s7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6ICMg MjQyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgiCjE0NDc0OiBleHRlcm4g dm9pZCBhcmNoX3Rhc2tfY2FjaGVfaW5pdCh2b2lkKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYXJjaF9k dXBfdGFza19zdHJ1Y3Qoc3RydWN0IHRhc2tfc3RydWN0ICpkc3QsIHN0cnVjdCB0YXNrX3N0cnVj dCAqc3JjKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGFyY2hfcmVsZWFzZV90YXNrX3N0cnVjdChzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRzayk7CjE0NDc0OiBleHRlcm4gdm9pZCBhcmNoX3NldHVwX25ld19l eGVjKHZvaWQpOwoxNDQ3NDogIyAzOSAiLi9pbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmgiIDIK MTQ0NzQ6ICMgNTMgIi4vaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBz ZXRfdGlfdGhyZWFkX2ZsYWcoc3RydWN0IHRocmVhZF9pbmZvICp0aSwgaW50IGZsYWcpCjE0NDc0 OiB7CjE0NDc0OiAgc2V0X2JpdChmbGFnLCAodW5zaWduZWQgbG9uZyAqKSZ0aS0+ZmxhZ3MpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNsZWFyX3RpX3RocmVhZF9mbGFnKHN0cnVjdCB0 aHJlYWRfaW5mbyAqdGksIGludCBmbGFnKQoxNDQ3NDogewoxNDQ3NDogIGNsZWFyX2JpdChmbGFn LCAodW5zaWduZWQgbG9uZyAqKSZ0aS0+ZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHVwZGF0ZV90aV90aHJlYWRfZmxhZyhzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpLCBpbnQgZmxh ZywKMTQ0NzQ6ICAgICAgIGJvb2wgdmFsdWUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKHZhbHVlKQox NDQ3NDogICBzZXRfdGlfdGhyZWFkX2ZsYWcodGksIGZsYWcpOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6 ICAgY2xlYXJfdGlfdGhyZWFkX2ZsYWcodGksIGZsYWcpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgdGVzdF9hbmRfc2V0X3RpX3RocmVhZF9mbGFnKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGks IGludCBmbGFnKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0ZXN0X2FuZF9zZXRfYml0KGZsYWcs ICh1bnNpZ25lZCBsb25nICopJnRpLT5mbGFncyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCB0ZXN0X2FuZF9jbGVhcl90aV90aHJlYWRfZmxhZyhzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpLCBp bnQgZmxhZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KGZsYWcs ICh1bnNpZ25lZCBsb25nICopJnRpLT5mbGFncyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCB0ZXN0X3RpX3RocmVhZF9mbGFnKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGksIGludCBmbGFnKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiB0ZXN0X2JpdChmbGFnLCAodW5zaWduZWQgbG9uZyAqKSZ0 aS0+ZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMjIgIi4vaW5jbHVkZS9saW51eC90aHJlYWRf aW5mby5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBjaGVja19vYmplY3Rfc2l6ZShjb25zdCB2b2lkICpwdHIsIHVu c2lnbmVkIGxvbmcgbiwKMTQ0NzQ6ICAgICAgICAgIGJvb2wgdG9fdXNlcikKMTQ0NzQ6IHsgfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9fZXJyb3Jf XygiY29weSBzb3VyY2Ugc2l6ZSBpcyB0b28gc21hbGwiKSkpCjE0NDc0OiBfX2JhZF9jb3B5X2Zy b20odm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oImNv cHkgZGVzdGluYXRpb24gc2l6ZSBpcyB0b28gc21hbGwiKSkpCjE0NDc0OiBfX2JhZF9jb3B5X3Rv KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNvcHlfb3ZlcmZsb3coaW50IHNpemUsIHVuc2ln bmVkIGxvbmcgY291bnQpCjE0NDc0OiB7CjE0NDc0OiAgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAh ISgxKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IF9f d2Fybl9wcmludGsoIkJ1ZmZlciBvdmVyZmxvdyBkZXRlY3RlZCAoJWQgPCAlbHUpIVxuIiwgc2l6 ZSwgY291bnQpOyBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUg MHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpc dCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQi ICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQg JWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5 OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNs dWRlL2xpbnV4L3RocmVhZF9pbmZvLmgiKSwgImkiICgxMzQpLCAiaSIgKCgxIDw8IDApfCgoMSA8 PCAzKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3 aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2Nh cmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIg OiA6ICJpIiAoMCkpOyB9KTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhw ZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIGJvb2wKMTQ0NzQ6IGNoZWNrX2NvcHlfc2l6ZShjb25zdCB2b2lkICph ZGRyLCBzaXplX3QgYnl0ZXMsIGJvb2wgaXNfc291cmNlKQoxNDQ3NDogewoxNDQ3NDogIGludCBz eiA9IF9fYnVpbHRpbl9vYmplY3Rfc2l6ZShhZGRyLCAwKTsKMTQ0NzQ6ICBpZiAoX19idWlsdGlu X2V4cGVjdCghIShzeiA+PSAwICYmIHN6IDwgYnl0ZXMpLCAwKSkgewoxNDQ3NDogICBpZiAoIV9f YnVpbHRpbl9jb25zdGFudF9wKGJ5dGVzKSkKMTQ0NzQ6ICAgIGNvcHlfb3ZlcmZsb3coc3osIGJ5 dGVzKTsKMTQ0NzQ6ICAgZWxzZSBpZiAoaXNfc291cmNlKQoxNDQ3NDogICAgX19iYWRfY29weV9m cm9tKCk7CjE0NDc0OiAgIGVsc2UKMTQ0NzQ6ICAgIF9fYmFkX2NvcHlfdG8oKTsKMTQ0NzQ6ICAg cmV0dXJuIGZhbHNlOwoxNDQ3NDogIH0KMTQ0NzQ6ICBpZiAoKHsgaW50IF9fcmV0X3dhcm5fb24g PSAhIShieXRlcyA+ICgoaW50KSh+MFUgPj4gMSkpKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEo X19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0 IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdc IlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRk clxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIg Ilx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMg YnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAi aSIgKCJpbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmgiKSwgImkiICgxNTApLCAiaSIgKCgxIDw8 IDApfCgoMSA8PCAxKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRy eSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rp b24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0 aW9uXG5cdCIgOiA6ICJpIiAoMSkpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3Qo ISEoX19yZXRfd2Fybl9vbiksIDApOyB9KSkKMTQ0NzQ6ICAgcmV0dXJuIGZhbHNlOwoxNDQ3NDog IGNoZWNrX29iamVjdF9zaXplKGFkZHIsIGJ5dGVzLCBpc19zb3VyY2UpOwoxNDQ3NDogIHJldHVy biB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogIyA4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3ByZWVt cHQuaCIgMgoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRh dGEuLnBlcmNwdSIgIiIpKSkgX190eXBlb2ZfXyhpbnQpIF9fcHJlZW1wdF9jb3VudDsKMTQ0NzQ6 ICMgMjQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJlZW1wdC5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgcHJlZW1wdF9jb3VudCh2b2lkKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAoeyB0eXBlb2YoX19wcmVlbXB0X2NvdW50KSBwZm9fcmV0X187IHN3 aXRjaCAoc2l6ZW9mKF9fcHJlZW1wdF9jb3VudCkpIHsgY2FzZSAxOiBhc20gKCJtb3YiICJiICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChfX3ByZWVt cHRfY291bnQpKTsgYnJlYWs7IGNhc2UgMjogYXNtICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUi ICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7IGJy ZWFrOyBjYXNlIDQ6IGFzbSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9 ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3VudCkpOyBicmVhazsgY2FzZSA4OiBh c20gKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18p IDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9z aXplKCk7IH0gcGZvX3JldF9fOyB9KSAmIH4weDgwMDAwMDAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgcHJlZW1wdF9jb3Vu dF9zZXQoaW50IHBjKQoxNDQ3NDogewoxNDQ3NDogIGludCBvbGQsIG5ldzsKMTQ0NzQ6IAoxNDQ3 NDogIGRvIHsKMTQ0NzQ6ICAgb2xkID0gKHsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGZvX3Jl dF9fOyBzd2l0Y2ggKHNpemVvZihfX3ByZWVtcHRfY291bnQpKSB7IGNhc2UgMTogYXNtICgibW92 IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAo X19wcmVlbXB0X2NvdW50KSk7IGJyZWFrOyBjYXNlIDI6IGFzbSAoIm1vdiIgIncgIiIlJSIiZ3Mi IjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3Vu dCkpOyBicmVhazsgY2FzZSA0OiBhc20gKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwl MCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGNh c2UgODogYXNtICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZv X3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9w ZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7CjE0NDc0OiAgIG5ldyA9IChvbGQgJiAweDgw MDAwMDAwKSB8CjE0NDc0OiAgICAocGMgJiB+MHg4MDAwMDAwMCk7CjE0NDc0OiAgfSB3aGlsZSAo KHsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGNvX3JldF9fOyB0eXBlb2YoX19wcmVlbXB0X2Nv dW50KSBwY29fb2xkX18gPSAob2xkKTsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGNvX25ld19f ID0gKG5ldyk7IHN3aXRjaCAoc2l6ZW9mKF9fcHJlZW1wdF9jb3VudCkpIHsgY2FzZSAxOiBhc20g KCJjbXB4Y2hnYiAlMiwgIiIlJSIiZ3MiIjoiICIlIiAiMSIgOiAiPWEiIChwY29fcmV0X18pLCAi K20iIChfX3ByZWVtcHRfY291bnQpIDogInEiIChwY29fbmV3X18pLCAiMCIgKHBjb19vbGRfXykg OiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IGFzbSAoImNtcHhjaGd3ICUyLCAiIiUlIiJncyIi OiIgIiUiICIxIiA6ICI9YSIgKHBjb19yZXRfXyksICIrbSIgKF9fcHJlZW1wdF9jb3VudCkgOiAi ciIgKHBjb19uZXdfXyksICIwIiAocGNvX29sZF9fKSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2Ug NDogYXNtICgiY21weGNoZ2wgJTIsICIiJSUiImdzIiI6IiAiJSIgIjEiIDogIj1hIiAocGNvX3Jl dF9fKSwgIittIiAoX19wcmVlbXB0X2NvdW50KSA6ICJyIiAocGNvX25ld19fKSwgIjAiIChwY29f b2xkX18pIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSA4OiBhc20gKCJjbXB4Y2hncSAlMiwgIiIl JSIiZ3MiIjoiICIlIiAiMSIgOiAiPWEiIChwY29fcmV0X18pLCAiK20iIChfX3ByZWVtcHRfY291 bnQpIDogInIiIChwY29fbmV3X18pLCAiMCIgKHBjb19vbGRfXykgOiAibWVtb3J5Iik7IGJyZWFr OyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBjb19yZXRfXzsgfSkgIT0gb2xkKTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgNTggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJlZW1wdC5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNldF9wcmVlbXB0 X25lZWRfcmVzY2hlZCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgdHlwZWRlZiB0eXBlb2Yo KF9fcHJlZW1wdF9jb3VudCkpIHB0b19UX187IGlmICgwKSB7IHB0b19UX18gcHRvX3RtcF9fOyBw dG9fdG1wX18gPSAofjB4ODAwMDAwMDApOyAodm9pZClwdG9fdG1wX187IH0gc3dpdGNoIChzaXpl b2YoKF9fcHJlZW1wdF9jb3VudCkpKSB7IGNhc2UgMTogYXNtICgiYW5kIiAiYiAlMSwiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSA6ICJxaSIgKChwdG9fVF9f KSh+MHg4MDAwMDAwMCkpKTsgYnJlYWs7IGNhc2UgMjogYXNtICgiYW5kIiAidyAlMSwiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSA6ICJyaSIgKChwdG9fVF9f KSh+MHg4MDAwMDAwMCkpKTsgYnJlYWs7IGNhc2UgNDogYXNtICgiYW5kIiAibCAlMSwiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSA6ICJyaSIgKChwdG9fVF9f KSh+MHg4MDAwMDAwMCkpKTsgYnJlYWs7IGNhc2UgODogYXNtICgiYW5kIiAicSAlMSwiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSA6ICJyZSIgKChwdG9fVF9f KSh+MHg4MDAwMDAwMCkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0g fSB3aGlsZSAoMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdm9pZCBjbGVhcl9wcmVlbXB0X25lZWRfcmVzY2hlZCh2b2lkKQoxNDQ3 NDogewoxNDQ3NDogIGRvIHsgdHlwZWRlZiB0eXBlb2YoKF9fcHJlZW1wdF9jb3VudCkpIHB0b19U X187IGlmICgwKSB7IHB0b19UX18gcHRvX3RtcF9fOyBwdG9fdG1wX18gPSAoMHg4MDAwMDAwMCk7 ICh2b2lkKXB0b190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoX19wcmVlbXB0X2NvdW50KSkpIHsg Y2FzZSAxOiBhc20gKCJvciIgImIgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19w cmVlbXB0X2NvdW50KSkgOiAicWkiICgocHRvX1RfXykoMHg4MDAwMDAwMCkpKTsgYnJlYWs7IGNh c2UgMjogYXNtICgib3IiICJ3ICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJl ZW1wdF9jb3VudCkpIDogInJpIiAoKHB0b19UX18pKDB4ODAwMDAwMDApKSk7IGJyZWFrOyBjYXNl IDQ6IGFzbSAoIm9yIiAibCAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVt cHRfY291bnQpKSA6ICJyaSIgKChwdG9fVF9fKSgweDgwMDAwMDAwKSkpOyBicmVhazsgY2FzZSA4 OiBhc20gKCJvciIgInEgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0 X2NvdW50KSkgOiAicmUiICgocHRvX1RfXykoMHg4MDAwMDAwMCkpKTsgYnJlYWs7IGRlZmF1bHQ6 IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCB0ZXN0X3ByZWVtcHRf bmVlZF9yZXNjaGVkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICEoKHsgdHlwZW9mKF9f cHJlZW1wdF9jb3VudCkgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVvZihfX3ByZWVtcHRfY291bnQp KSB7IGNhc2UgMTogYXNtICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1x IiAocGZvX3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7IGJyZWFrOyBjYXNlIDI6IGFz bSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykg OiAibSIgKF9fcHJlZW1wdF9jb3VudCkpOyBicmVhazsgY2FzZSA0OiBhc20gKCJtb3YiICJsICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChfX3ByZWVt cHRfY291bnQpKTsgYnJlYWs7IGNhc2UgODogYXNtICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUi ICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSkgJiAweDgw MDAwMDAwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19wcmVlbXB0 X2NvdW50X2FkZChpbnQgdmFsKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgdHlwZWRlZiB0eXBlb2Yo KF9fcHJlZW1wdF9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0 aW5fY29uc3RhbnRfcCh2YWwpICYmICgodmFsKSA9PSAxIHx8ICh2YWwpID09IC0xKSkgPyAoaW50 KSh2YWwpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9ICh2YWwp OyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKF9fcHJlZW1wdF9jb3VudCkpKSB7 IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkg YXNtICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQp KSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19w cmVlbXB0X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykodmFsKSkpOyBicmVhazsgY2FzZSAyOiBp ZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KChfX3ByZWVtcHRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3 ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBh c20gKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291 bnQpKSA6ICJyaSIgKChwYW9fVF9fKSh2YWwpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURf XyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1w dF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZGwg JTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpIDogInJp IiAoKHBhb19UX18pKHZhbCkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFz bSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmUiICgocGFvX1Rf XykodmFsKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxl ICgwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSB2b2lkIF9fcHJlZW1wdF9jb3VudF9zdWIoaW50IHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBkbyB7IHR5cGVkZWYgdHlwZW9mKChfX3ByZWVtcHRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBp bnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLXZhbCkgJiYgKCgtdmFsKSA9PSAx IHx8ICgtdmFsKSA9PSAtMSkpID8gKGludCkoLXZhbCkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBh b190bXBfXzsgcGFvX3RtcF9fID0gKC12YWwpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChz aXplb2YoKF9fcHJlZW1wdF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFz bSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicWkiICgocGFvX1Rf XykoLXZhbCkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3cg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGlm IChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KChfX3ByZWVtcHRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLXZhbCkp KTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURf XyA9PSAtMSkgYXNtICgiZGVjbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVt cHRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLXZhbCkpKTsgYnJlYWs7 IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkg YXNtICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQp KSk7IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19w cmVlbXB0X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLXZhbCkpKTsgYnJlYWs7IGRlZmF1bHQ6 IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgX19wcmVlbXB0X2NvdW50X2RlY19hbmRfdGVzdCh2 b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAoImRl Y2wiICIgIiAiJSUiImdzIiI6IiAiJSIgIlt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24g Y29kZSAiICJlIiAiKi9cbiIgOiBbdmFyXSAiK20iIChfX3ByZWVtcHRfY291bnQpLCAiPUBjYyIg ImUiIChjKSA6IDogIm1lbW9yeSIpOyBjOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBi b29sIHNob3VsZF9yZXNjaGVkKGludCBwcmVlbXB0X29mZnNldCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gX19idWlsdGluX2V4cGVjdCghISgoeyB0eXBlb2YoX19wcmVlbXB0X2NvdW50KSBwZm9f cmV0X187IHN3aXRjaCAoc2l6ZW9mKF9fcHJlZW1wdF9jb3VudCkpIHsgY2FzZSAxOiBhc20gKCJt b3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0i IChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGNhc2UgMjogYXNtICgibW92IiAidyAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2Nv dW50KSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIi LCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3VudCkpOyBicmVhazsg Y2FzZSA4OiBhc20gKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChw Zm9fcmV0X18pIDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFk X3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KSA9PSBwcmVlbXB0X29mZnNldCksIDApOwox NDQ3NDogfQoxNDQ3NDogIyA3OSAiLi9pbmNsdWRlL2xpbnV4L3ByZWVtcHQuaCIgMgoxNDQ3NDog IyAyNzcgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiCjE0NDc0OiBzdHJ1Y3QgcHJlZW1wdF9u b3RpZmllcjsKMTQ0NzQ6ICMgMjkzICIuL2luY2x1ZGUvbGludXgvcHJlZW1wdC5oIgoxNDQ3NDog c3RydWN0IHByZWVtcHRfb3BzIHsKMTQ0NzQ6ICB2b2lkICgqc2NoZWRfaW4pKHN0cnVjdCBwcmVl bXB0X25vdGlmaWVyICpub3RpZmllciwgaW50IGNwdSk7CjE0NDc0OiAgdm9pZCAoKnNjaGVkX291 dCkoc3RydWN0IHByZWVtcHRfbm90aWZpZXIgKm5vdGlmaWVyLAoxNDQ3NDogICAgICBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKm5leHQpOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzA2ICIuL2luY2x1ZGUvbGlu dXgvcHJlZW1wdC5oIgoxNDQ3NDogc3RydWN0IHByZWVtcHRfbm90aWZpZXIgewoxNDQ3NDogIHN0 cnVjdCBobGlzdF9ub2RlIGxpbms7CjE0NDc0OiAgc3RydWN0IHByZWVtcHRfb3BzICpvcHM7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB2b2lkIHByZWVtcHRfbm90aWZpZXJfaW5jKHZvaWQpOwox NDQ3NDogdm9pZCBwcmVlbXB0X25vdGlmaWVyX2RlYyh2b2lkKTsKMTQ0NzQ6IHZvaWQgcHJlZW1w dF9ub3RpZmllcl9yZWdpc3RlcihzdHJ1Y3QgcHJlZW1wdF9ub3RpZmllciAqbm90aWZpZXIpOwox NDQ3NDogdm9pZCBwcmVlbXB0X25vdGlmaWVyX3VucmVnaXN0ZXIoc3RydWN0IHByZWVtcHRfbm90 aWZpZXIgKm5vdGlmaWVyKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwcmVlbXB0X25vdGlmaWVyX2lu aXQoc3RydWN0IHByZWVtcHRfbm90aWZpZXIgKm5vdGlmaWVyLAoxNDQ3NDogICAgICAgICAgc3Ry dWN0IHByZWVtcHRfb3BzICpvcHMpCjE0NDc0OiB7CjE0NDc0OiAgSU5JVF9ITElTVF9OT0RFKCZu b3RpZmllci0+bGluayk7CjE0NDc0OiAgbm90aWZpZXItPm9wcyA9IG9wczsKMTQ0NzQ6IH0KMTQ0 NzQ6ICMgNTIgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51 eC9ib3R0b21faGFsZi5oIiAxCjE0NDc0OiAjIDEwICIuL2luY2x1ZGUvbGludXgvYm90dG9tX2hh bGYuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX2xv Y2FsX2JoX2Rpc2FibGVfaXAodW5zaWduZWQgbG9uZyBpcCwgdW5zaWduZWQgaW50IGNudCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBfX3ByZWVtcHRfY291bnRfYWRkKGNudCk7CjE0NDc0OiAgX19hc21fXyBf X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGxvY2FsX2JoX2Rpc2FibGUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2xvY2Fs X2JoX2Rpc2FibGVfaXAoKHsgX19sYWJlbF9fIF9faGVyZTsgX19oZXJlOiAodW5zaWduZWQgbG9u ZykmJl9faGVyZTsgfSksICgyICogKDFVTCA8PCAoMCArIDgpKSkpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCBfbG9jYWxfYmhfZW5hYmxlKHZvaWQpOwoxNDQ3NDogZXh0ZXJu IHZvaWQgX19sb2NhbF9iaF9lbmFibGVfaXAodW5zaWduZWQgbG9uZyBpcCwgdW5zaWduZWQgaW50 IGNudCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9jYWxfYmhfZW5hYmxlX2lwKHVuc2lnbmVkIGxv bmcgaXApCjE0NDc0OiB7CjE0NDc0OiAgX19sb2NhbF9iaF9lbmFibGVfaXAoaXAsICgyICogKDFV TCA8PCAoMCArIDgpKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxvY2FsX2JoX2Vu YWJsZSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIF9fbG9jYWxfYmhfZW5hYmxlX2lwKCh7IF9fbGFi ZWxfXyBfX2hlcmU7IF9faGVyZTogKHVuc2lnbmVkIGxvbmcpJiZfX2hlcmU7IH0pLCAoMiAqICgx VUwgPDwgKDAgKyA4KSkpKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTkgIi4vaW5jbHVkZS9saW51eC9z cGlubG9jay5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVy YXRlZC9hc20vbW1pb3diLmgiIDEKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL21t aW93Yi5oIiAxCjE0NDc0OiAjIDIgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvYXNtL21t aW93Yi5oIiAyCjE0NDc0OiAjIDYxICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMgoxNDQ3 NDogIyA4MyAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9zcGlubG9ja190eXBlcy5oIiAxCjE0NDc0OiAjIDE4ICIuL2luY2x1ZGUvbGludXgv c3BpbmxvY2tfdHlwZXMuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaCIg MQoxNDQ3NDogIyAxMyAiLi9pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaCIKMTQ0NzQ6IHN0cnVjdCB0 YXNrX3N0cnVjdDsKMTQ0NzQ6IHN0cnVjdCBsb2NrZGVwX21hcDsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gaW50IHByb3ZlX2xvY2tpbmc7CjE0NDc0OiBleHRlcm4gaW50IGxvY2tfc3Rh dDsKMTQ0NzQ6ICMgNDEzICIuL2luY2x1ZGUvbGludXgvbG9ja2RlcC5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBs b2NrZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCjE0NDc0OiB7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2RlcF9vZmYodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2NrZGVwX29uKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2RlcF9zZXRfc2VsZnRlc3RfdGFzayhzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnRhc2spCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiAjIDQ1OCAiLi9pbmNsdWRl L2xpbnV4L2xvY2tkZXAuaCIKMTQ0NzQ6IHN0cnVjdCBsb2NrX2NsYXNzX2tleSB7IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgbG9ja2RlcF9yZWdpc3Rlcl9rZXkoc3RydWN0IGxvY2tfY2xhc3Nfa2V5 ICprZXkpCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2RlcF91bnJl Z2lzdGVyX2tleShzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSkKMTQ0NzQ6IHsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGxvY2tkZXBfbWFw IHsgfTsKMTQ0NzQ6ICMgNDg0ICIuL2luY2x1ZGUvbGludXgvbG9ja2RlcC5oIgoxNDQ3NDogc3Ry dWN0IHBpbl9jb29raWUgeyB9OwoxNDQ3NDogIyA0OTQgIi4vaW5jbHVkZS9saW51eC9sb2NrZGVw LmgiCjE0NDc0OiBlbnVtIHhobG9ja19jb250ZXh0X3QgewoxNDQ3NDogIFhITE9DS19IQVJELAox NDQ3NDogIFhITE9DS19TT0ZULAoxNDQ3NDogIFhITE9DS19DVFhfTlIsCjE0NDc0OiB9OwoxNDQ3 NDogIyA1MDggIi4vaW5jbHVkZS9saW51eC9sb2NrZGVwLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxvY2tkZXBf aW52YXJpYW50X3N0YXRlKGJvb2wgZm9yY2UpIHt9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxvY2tkZXBfZnJlZV90 YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykge30KMTQ0NzQ6ICMgNTcwICIuL2luY2x1ZGUv bGludXgvbG9ja2RlcC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwcmludF9pcnF0cmFjZV9ldmVudHMoc3RydWN0 IHRhc2tfc3RydWN0ICpjdXJyKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogIyA2NjggIi4vaW5j bHVkZS9saW51eC9sb2NrZGVwLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBsb2NrZGVwX3JjdV9zdXNw aWNpb3VzKGNvbnN0IGNoYXIgKmZpbGUsIGNvbnN0IGludCBsaW5lLCBjb25zdCBjaGFyICpzKQox NDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogIyAxOSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX3R5 cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgcmF3X3NwaW5sb2NrIHsKMTQ0 NzQ6ICBhcmNoX3NwaW5sb2NrX3QgcmF3X2xvY2s7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH0gcmF3X3NwaW5sb2NrX3Q7CjE0 NDc0OiAjIDYxICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2tfdHlwZXMuaCIKMTQ0NzQ6IHR5cGVk ZWYgc3RydWN0IHNwaW5sb2NrIHsKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCByYXdf c3BpbmxvY2sgcmxvY2s7CjE0NDc0OiAjIDcyICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2tfdHlw ZXMuaCIKMTQ0NzQ6ICB9OwoxNDQ3NDogfSBzcGlubG9ja190OwoxNDQ3NDogIyA4MyAiLi9pbmNs dWRlL2xpbnV4L3NwaW5sb2NrX3R5cGVzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9y d2xvY2tfdHlwZXMuaCIgMQoxNDQ3NDogIyAxMSAiLi9pbmNsdWRlL2xpbnV4L3J3bG9ja190eXBl cy5oIgoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgewoxNDQ3NDogIGFyY2hfcndsb2NrX3QgcmF3X2xv Y2s7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IH0gcndsb2NrX3Q7CjE0NDc0OiAjIDg0ICIuL2luY2x1ZGUvbGludXgvc3Bpbmxv Y2tfdHlwZXMuaCIgMgoxNDQ3NDogIyA4NCAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDIK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vc3BpbmxvY2suaCIgMQoxNDQ3NDogIyAxMCAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9zcGlubG9jay5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L3BhcmF2aXJ0LmgiIDEKMTQ0NzQ6ICMgMTggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZp cnQuaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9mcmFtZS5oIiAxCjE0NDc0 OiAjIDE5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0LmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdW5zaWduZWQgbG9uZyBsb25nIHBhcmF2aXJ0X3NjaGVkX2Nsb2NrKHZvaWQpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuICh7IHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JldDsgdW5zaWduZWQgbG9u ZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9f ZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy50aW1lLnNjaGVkX2Nsb2NrKTsgaWYg KHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpID4gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSB7IGFz bSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2Fy ZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNl Y3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1 c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIg IlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5 cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZp cnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMi IChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiPWEiIChfX2VheCksICIrciIg KGN1cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImkiICgoX19idWls dGluX29mZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgdGltZS5zY2hlZF9j bG9jaykgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9vcHMu dGltZS5zY2hlZF9jbG9jaykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgOSkgLSAx KSkgOiAibWVtb3J5IiwgImNjIiAsICJyOCIsICJyOSIsICJyMTAiLCAicjExIik7IF9fcmV0ID0g KHVuc2lnbmVkIGxvbmcgbG9uZykoKCgodTY0KV9fZWR4KSA8PCAzMikgfCBfX2VheCk7IH0gZWxz ZSB7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAu ZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAi LnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxu IiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4 IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2 aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNb cGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkp LCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiPWEiIChfX2VheCks ICIrciIgKGN1cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImkiICgo X19idWlsdGluX29mZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgdGltZS5z Y2hlZF9jbG9jaykgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihw dl9vcHMudGltZS5zY2hlZF9jbG9jaykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwg OSkgLSAxKSkgOiAibWVtb3J5IiwgImNjIiAsICJyOCIsICJyOSIsICJyMTAiLCAicjExIik7IF9f cmV0ID0gKHVuc2lnbmVkIGxvbmcgbG9uZykoX19lYXggJiAoeyB1bnNpZ25lZCBsb25nIF9fbWFz ayA9IH4wVUw7IHN3aXRjaCAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZykpIHsgY2FzZSAxOiBf X21hc2sgPSAweGZmVUw7IGJyZWFrOyBjYXNlIDI6IF9fbWFzayA9IDB4ZmZmZlVMOyBicmVhazsg Y2FzZSA0OiBfX21hc2sgPSAweGZmZmZmZmZmVUw7IGJyZWFrOyBkZWZhdWx0OiBicmVhazsgfSBf X21hc2s7IH0pKTsgfSBfX3JldDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBz dGF0aWNfa2V5OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBzdGF0aWNfa2V5IHBhcmF2aXJ0X3N0ZWFs X2VuYWJsZWQ7CjE0NDc0OiBleHRlcm4gc3RydWN0IHN0YXRpY19rZXkgcGFyYXZpcnRfc3RlYWxf cnFfZW5hYmxlZDsKMTQ0NzQ6IAoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19leHRlcm5hbGx5X3Zp c2libGVfXykpIHZvaWQgX19uYXRpdmVfcXVldWVkX3NwaW5fdW5sb2NrKHN0cnVjdCBxc3Bpbmxv Y2sgKmxvY2spOwoxNDQ3NDogYm9vbCBwdl9pc19uYXRpdmVfc3Bpbl91bmxvY2sodm9pZCk7CjE0 NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSkgYm9vbCBfX25hdGl2 ZV92Y3B1X2lzX3ByZWVtcHRlZChsb25nIGNwdSk7CjE0NDc0OiBib29sIHB2X2lzX25hdGl2ZV92 Y3B1X2lzX3ByZWVtcHRlZCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0IHBhcmF2aXJ0X3N0ZWFs X2Nsb2NrKGludCBjcHUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IHU2NCBfX3JldDsgdW5z aWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBf X2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy50aW1lLnN0ZWFsX2Ns b2NrKTsgaWYgKHNpemVvZih1NjQpID4gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSB7IGFzbSB2b2xh dGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRw b2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25c blx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0 aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAi ICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1d IiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xv YmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2Vz aSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiPWEiIChfX2VheCksICIrciIgKGN1cnJl bnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImkiICgoX19idWlsdGluX29m ZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgdGltZS5zdGVhbF9jbG9jaykg LyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9vcHMudGltZS5z dGVhbF9jbG9jaykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgOSkgLSAxKSksICJE IiAoKHVuc2lnbmVkIGxvbmcpKGNwdSkpIDogIm1lbW9yeSIsICJjYyIgLCAicjgiLCAicjkiLCAi cjEwIiwgInIxMSIpOyBfX3JldCA9ICh1NjQpKCgoKHU2NClfX2VkeCkgPDwgMzIpIHwgX19lYXgp OyB9IGVsc2UgeyBhc20gdm9sYXRpbGUoIiIgIjc3MTpcblx0IiAiOTk5OlxuXHQiICIucHVzaHNl Y3Rpb24gLmRpc2NhcmQucmV0cG9saW5lX3NhZmVcblx0IiAiICIgIi5xdWFkIiAiICIgIiA5OTli XG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgImNhbGwgKiVjW3BhcmF2aXJ0X29wcHRyXTsiICJcbiIg Ijc3MjpcbiIgIi5wdXNoc2VjdGlvbiAucGFyYWluc3RydWN0aW9ucyxcImFcIlxuIiAiICIgIi5i YWxpZ24gOCIgIiAiICJcbiIgIiAiICIucXVhZCIgIiAiICIgNzcxYlxuIiAiICAuYnl0ZSAiICIl Y1twYXJhdmlydF90eXBlbnVtXSIgIlxuIiAiICAuYnl0ZSA3NzJiLTc3MWJcbiIgIiAgLnNob3J0 ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJdIiAiXG4iICIucG9wc2VjdGlvblxuIiAiIiA6ICI9RCIg KF9fZWRpKSwgIj1TIiAoX19lc2kpLCAiPWQiIChfX2VkeCksICI9YyIgKF9fZWN4KSwgIj1hIiAo X19lYXgpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1d ICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUs IHRpbWUuc3RlYWxfY2xvY2spIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAi aSIgKCYocHZfb3BzLnRpbWUuc3RlYWxfY2xvY2spKSwgW3BhcmF2aXJ0X2Nsb2JiZXJdICJpIiAo KCgxIDw8IDkpIC0gMSkpLCAiRCIgKCh1bnNpZ25lZCBsb25nKShjcHUpKSA6ICJtZW1vcnkiLCAi Y2MiICwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgX19yZXQgPSAodTY0KShfX2VheCAmICh7 IHVuc2lnbmVkIGxvbmcgX19tYXNrID0gfjBVTDsgc3dpdGNoIChzaXplb2YodTY0KSkgeyBjYXNl IDE6IF9fbWFzayA9IDB4ZmZVTDsgYnJlYWs7IGNhc2UgMjogX19tYXNrID0gMHhmZmZmVUw7IGJy ZWFrOyBjYXNlIDQ6IF9fbWFzayA9IDB4ZmZmZmZmZmZVTDsgYnJlYWs7IGRlZmF1bHQ6IGJyZWFr OyB9IF9fbWFzazsgfSkpOyB9IF9fcmV0OyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIHNsb3dfZG93bl9pbyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHB2X29wcy5jcHUu aW9fZGVsYXkoKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19mbHVzaF90bGIodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICAoeyB1bnNpZ25lZCBsb25nIF9fZWRpID0gX19lZGksIF9fZXNpID0gX19lc2ksIF9fZWR4ID0g X19lZHgsIF9fZWN4ID0gX19lY3gsIF9fZWF4ID0gX19lYXg7OyAoKHZvaWQpcHZfb3BzLm1tdS5m bHVzaF90bGJfdXNlcik7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5w dXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAi IDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIg IlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIg IiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRl ICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAu c2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDog Ij1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAi K3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9f YnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIG1tdS5mbHVz aF90bGJfdXNlcikgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihw dl9vcHMubW11LmZsdXNoX3RsYl91c2VyKSksIFtwYXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8 PCA5KSAtIDEpKSA6ICJtZW1vcnkiLCAiY2MiICwgInJheCIsICJyOCIsICJyOSIsICJyMTAiLCAi cjExIik7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fZmx1c2hfdGxiX2dsb2Jh bCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogICh7IHVuc2lnbmVkIGxvbmcgX19lZGkgPSBfX2VkaSwg X19lc2kgPSBfX2VzaSwgX19lZHggPSBfX2VkeCwgX19lY3ggPSBfX2VjeCwgX19lYXggPSBfX2Vh eDs7ICgodm9pZClwdl9vcHMubW11LmZsdXNoX3RsYl9rZXJuZWwpOyBhc20gdm9sYXRpbGUoIiIg Ijc3MTpcblx0IiAiOTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0cG9saW5lX3Nh ZmVcblx0IiAiICIgIi5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgImNh bGwgKiVjW3BhcmF2aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2VjdGlvbiAucGFy YWluc3RydWN0aW9ucyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIgIiAiICIucXVh ZCIgIiAiICIgNzcxYlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVtXSIgIlxuIiAi ICAuYnl0ZSA3NzJiLTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJdIiAi XG4iICIucG9wc2VjdGlvblxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1TIiAoX19lc2kpLCAiPWQi IChfX2VkeCksICI9YyIgKF9fZWN4KSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6IFtw YXJhdmlydF90eXBlbnVtXSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBhcmF2aXJ0 X3BhdGNoX3RlbXBsYXRlLCBtbXUuZmx1c2hfdGxiX2tlcm5lbCkgLyBzaXplb2Yodm9pZCAqKSkp LCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9vcHMubW11LmZsdXNoX3RsYl9rZXJuZWwpKSwg W3BhcmF2aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0gMSkpIDogIm1lbW9yeSIsICJjYyIg LCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgX19mbHVzaF90bGJfb25lX3VzZXIodW5zaWduZWQgbG9uZyBhZGRyKQoxNDQ3 NDogewoxNDQ3NDogICh7IHVuc2lnbmVkIGxvbmcgX19lZGkgPSBfX2VkaSwgX19lc2kgPSBfX2Vz aSwgX19lZHggPSBfX2VkeCwgX19lY3ggPSBfX2VjeCwgX19lYXggPSBfX2VheDs7ICgodm9pZClw dl9vcHMubW11LmZsdXNoX3RsYl9vbmVfdXNlcik7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQi ICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIg IiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFy YXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rp b25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3 NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3 MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3Bz ZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwg Ij1jIiAoX19lY3gpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5 cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVt cGxhdGUsIG1tdS5mbHVzaF90bGJfb25lX3VzZXIpIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2 aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLm1tdS5mbHVzaF90bGJfb25lX3VzZXIpKSwgW3BhcmF2 aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0gMSkpLCAiRCIgKCh1bnNpZ25lZCBsb25nKShh ZGRyKSkgOiAibWVtb3J5IiwgImNjIiAsICJyYXgiLCAicjgiLCAicjkiLCAicjEwIiwgInIxMSIp OyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmbHVzaF90bGJfb3RoZXJzKGNvbnN0 IHN0cnVjdCBjcHVtYXNrICpjcHVtYXNrLAoxNDQ3NDogICAgICAgICBjb25zdCBzdHJ1Y3QgZmx1 c2hfdGxiX2luZm8gKmluZm8pCjE0NDc0OiB7CjE0NDc0OiAgKHsgdW5zaWduZWQgbG9uZyBfX2Vk aSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBf X2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5tbXUuZmx1c2hfdGxiX290aGVycyk7IGFzbSB2 b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5y ZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rp b25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hz ZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxu IiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVu dW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRf Y2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChf X2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiK3IiIChjdXJyZW50X3N0YWNrX3Bv aW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1 Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIG1tdS5mbHVzaF90bGJfb3RoZXJzKSAvIHNpemVv Zih2b2lkICopKSksIFtwYXJhdmlydF9vcHB0cl0gImkiICgmKHB2X29wcy5tbXUuZmx1c2hfdGxi X290aGVycykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgOSkgLSAxKSksICJEIiAo KHVuc2lnbmVkIGxvbmcpKGNwdW1hc2spKSwgIlMiICgodW5zaWduZWQgbG9uZykoaW5mbykpIDog Im1lbW9yeSIsICJjYyIgLCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgfSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGFyYXZpcnRfdGxiX3JlbW92ZV90YWJsZShzdHJ1 Y3QgbW11X2dhdGhlciAqdGxiLCB2b2lkICp0YWJsZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bnNp Z25lZCBsb25nIF9fZWRpID0gX19lZGksIF9fZXNpID0gX19lc2ksIF9fZWR4ID0gX19lZHgsIF9f ZWN4ID0gX19lY3gsIF9fZWF4ID0gX19lYXg7OyAoKHZvaWQpcHZfb3BzLm1tdS50bGJfcmVtb3Zl X3RhYmxlKTsgYXNtIHZvbGF0aWxlKCIiICI3NzE6XG5cdCIgIjk5OTpcblx0IiAiLnB1c2hzZWN0 aW9uIC5kaXNjYXJkLnJldHBvbGluZV9zYWZlXG5cdCIgIiAiICIucXVhZCIgIiAiICIgOTk5Ylxu XHQiICIucG9wc2VjdGlvblxuXHQiICJjYWxsIColY1twYXJhdmlydF9vcHB0cl07IiAiXG4iICI3 NzI6XG4iICIucHVzaHNlY3Rpb24gLnBhcmFpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAiICIuYmFs aWduIDgiICIgIiAiXG4iICIgIiAiLnF1YWQiICIgIiAiIDc3MWJcbiIgIiAgLmJ5dGUgIiAiJWNb cGFyYXZpcnRfdHlwZW51bV0iICJcbiIgIiAgLmJ5dGUgNzcyYi03NzFiXG4iICIgIC5zaG9ydCAi ICIlY1twYXJhdmlydF9jbG9iYmVyXSIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIiIgOiAiPUQiIChf X2VkaSksICI9UyIgKF9fZXNpKSwgIj1kIiAoX19lZHgpLCAiPWMiIChfX2VjeCksICIrciIgKGN1 cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImkiICgoX19idWlsdGlu X29mZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgbW11LnRsYl9yZW1vdmVf dGFibGUpIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYocHZfb3Bz Lm1tdS50bGJfcmVtb3ZlX3RhYmxlKSksIFtwYXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCA5 KSAtIDEpKSwgIkQiICgodW5zaWduZWQgbG9uZykodGxiKSksICJTIiAoKHVuc2lnbmVkIGxvbmcp KHRhYmxlKSkgOiAibWVtb3J5IiwgImNjIiAsICJyYXgiLCAicjgiLCAicjkiLCAicjEwIiwgInIx MSIpOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwYXJhdmlydF9hcmNoX2V4aXRf bW1hcChzdHJ1Y3QgbW1fc3RydWN0ICptbSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bnNpZ25lZCBs b25nIF9fZWRpID0gX19lZGksIF9fZXNpID0gX19lc2ksIF9fZWR4ID0gX19lZHgsIF9fZWN4ID0g X19lY3gsIF9fZWF4ID0gX19lYXg7OyAoKHZvaWQpcHZfb3BzLm1tdS5leGl0X21tYXApOyBhc20g dm9sYXRpbGUoIiIgIjc3MTpcblx0IiAiOTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQu cmV0cG9saW5lX3NhZmVcblx0IiAiICIgIi5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0 aW9uXG5cdCIgImNhbGwgKiVjW3BhcmF2aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNo c2VjdGlvbiAucGFyYWluc3RydWN0aW9ucyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJc biIgIiAiICIucXVhZCIgIiAiICIgNzcxYlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBl bnVtXSIgIlxuIiAiICAuYnl0ZSA3NzJiLTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0 X2Nsb2JiZXJdIiAiXG4iICIucG9wc2VjdGlvblxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1TIiAo X19lc2kpLCAiPWQiIChfX2VkeCksICI9YyIgKF9fZWN4KSwgIityIiAoY3VycmVudF9zdGFja19w b2ludGVyKSA6IFtwYXJhdmlydF90eXBlbnVtXSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3Ry dWN0IHBhcmF2aXJ0X3BhdGNoX3RlbXBsYXRlLCBtbXUuZXhpdF9tbWFwKSAvIHNpemVvZih2b2lk ICopKSksIFtwYXJhdmlydF9vcHB0cl0gImkiICgmKHB2X29wcy5tbXUuZXhpdF9tbWFwKSksIFtw YXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCA5KSAtIDEpKSwgIkQiICgodW5zaWduZWQgbG9u ZykobW0pKSA6ICJtZW1vcnkiLCAiY2MiICwgInJheCIsICJyOCIsICJyOSIsICJyMTAiLCAicjEx Iik7IH0pOwoxNDQ3NDogfQoxNDQ3NDogIyA2NDIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFy YXZpcnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBw dl9xdWV1ZWRfc3Bpbl9sb2NrX3Nsb3dwYXRoKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2ssCjE0NDc0 OiAgICAgICAgdTMyIHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bnNpZ25lZCBsb25nIF9fZWRp ID0gX19lZGksIF9fZXNpID0gX19lc2ksIF9fZWR4ID0gX19lZHgsIF9fZWN4ID0gX19lY3gsIF9f ZWF4ID0gX19lYXg7OyAoKHZvaWQpcHZfb3BzLmxvY2sucXVldWVkX3NwaW5fbG9ja19zbG93cGF0 aCk7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAu ZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAi LnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxu IiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4 IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2 aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNb cGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkp LCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiK3IiIChjdXJyZW50 X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZz ZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIGxvY2sucXVldWVkX3NwaW5fbG9j a19zbG93cGF0aCkgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihw dl9vcHMubG9jay5xdWV1ZWRfc3Bpbl9sb2NrX3Nsb3dwYXRoKSksIFtwYXJhdmlydF9jbG9iYmVy XSAiaSIgKCgoMSA8PCA5KSAtIDEpKSwgIkQiICgodW5zaWduZWQgbG9uZykobG9jaykpLCAiUyIg KCh1bnNpZ25lZCBsb25nKSh2YWwpKSA6ICJtZW1vcnkiLCAiY2MiICwgInJheCIsICJyOCIsICJy OSIsICJyMTAiLCAicjExIik7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgcHZfcXVldWVkX3NwaW5fdW5sb2NrKHN0cnVj dCBxc3BpbmxvY2sgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAgKHsgdW5zaWduZWQgbG9uZyBfX2Vk aSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBf X2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5sb2NrLnF1ZXVlZF9zcGluX3VubG9jay5mdW5j KTsgYXNtIHZvbGF0aWxlKCIiICI3NzE6XG5cdCIgIjk5OTpcblx0IiAiLnB1c2hzZWN0aW9uIC5k aXNjYXJkLnJldHBvbGluZV9zYWZlXG5cdCIgIiAiICIucXVhZCIgIiAiICIgOTk5YlxuXHQiICIu cG9wc2VjdGlvblxuXHQiICJjYWxsIColY1twYXJhdmlydF9vcHB0cl07IiAiXG4iICI3NzI6XG4i ICIucHVzaHNlY3Rpb24gLnBhcmFpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAiICIuYmFsaWduIDgi ICIgIiAiXG4iICIgIiAiLnF1YWQiICIgIiAiIDc3MWJcbiIgIiAgLmJ5dGUgIiAiJWNbcGFyYXZp cnRfdHlwZW51bV0iICJcbiIgIiAgLmJ5dGUgNzcyYi03NzFiXG4iICIgIC5zaG9ydCAiICIlY1tw YXJhdmlydF9jbG9iYmVyXSIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIiIgOiAiPWEiIChfX2VheCks ICIrciIgKGN1cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImkiICgo X19idWlsdGluX29mZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgbG9jay5x dWV1ZWRfc3Bpbl91bmxvY2suZnVuYykgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3Bw dHJdICJpIiAoJihwdl9vcHMubG9jay5xdWV1ZWRfc3Bpbl91bmxvY2suZnVuYykpLCBbcGFyYXZp cnRfY2xvYmJlcl0gImkiICgoKDEgPDwgMCkpKSwgIkQiICgodW5zaWduZWQgbG9uZykobG9jaykp IDogIm1lbW9yeSIsICJjYyIgKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBwdl93YWl0KHU4ICpwdHIsIHU4IHZhbCkK MTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bnNpZ25lZCBsb25nIF9fZWRpID0gX19lZGksIF9fZXNpID0g X19lc2ksIF9fZWR4ID0gX19lZHgsIF9fZWN4ID0gX19lY3gsIF9fZWF4ID0gX19lYXg7OyAoKHZv aWQpcHZfb3BzLmxvY2sud2FpdCk7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5c dCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQi ICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3Bw dHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwi XG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIg IC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxu IiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4i ICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19l Y3gpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJp IiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIGxv Y2sud2FpdCkgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9v cHMubG9jay53YWl0KSksIFtwYXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCA5KSAtIDEpKSwg IkQiICgodW5zaWduZWQgbG9uZykocHRyKSksICJTIiAoKHVuc2lnbmVkIGxvbmcpKHZhbCkpIDog Im1lbW9yeSIsICJjYyIgLCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgfSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dm9pZCBwdl9raWNrKGludCBjcHUpCjE0NDc0OiB7CjE0NDc0OiAgKHsgdW5zaWduZWQgbG9uZyBf X2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4 LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5sb2NrLmtpY2spOyBhc20gdm9sYXRpbGUo IiIgIjc3MTpcblx0IiAiOTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0cG9saW5l X3NhZmVcblx0IiAiICIgIi5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIg ImNhbGwgKiVjW3BhcmF2aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2VjdGlvbiAu cGFyYWluc3RydWN0aW9ucyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIgIiAiICIu cXVhZCIgIiAiICIgNzcxYlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVtXSIgIlxu IiAiICAuYnl0ZSA3NzJiLTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJd IiAiXG4iICIucG9wc2VjdGlvblxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1TIiAoX19lc2kpLCAi PWQiIChfX2VkeCksICI9YyIgKF9fZWN4KSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6 IFtwYXJhdmlydF90eXBlbnVtXSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBhcmF2 aXJ0X3BhdGNoX3RlbXBsYXRlLCBsb2NrLmtpY2spIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2 aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLmxvY2sua2ljaykpLCBbcGFyYXZpcnRfY2xvYmJlcl0g ImkiICgoKDEgPDwgOSkgLSAxKSksICJEIiAoKHVuc2lnbmVkIGxvbmcpKGNwdSkpIDogIm1lbW9y eSIsICJjYyIgLCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgfSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBw dl92Y3B1X2lzX3ByZWVtcHRlZChsb25nIGNwdSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsg Ym9vbCBfX3JldDsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBf X2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29w cy5sb2NrLnZjcHVfaXNfcHJlZW1wdGVkLmZ1bmMpOyBpZiAoc2l6ZW9mKGJvb2wpID4gc2l6ZW9m KHVuc2lnbmVkIGxvbmcpKSB7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIg Ii5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIg IiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJd OyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4i ICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5i eXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAi ICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIi IDogIj1hIiAoX19lYXgpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0 X3R5cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hf dGVtcGxhdGUsIGxvY2sudmNwdV9pc19wcmVlbXB0ZWQuZnVuYykgLyBzaXplb2Yodm9pZCAqKSkp LCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9vcHMubG9jay52Y3B1X2lzX3ByZWVtcHRlZC5m dW5jKSksIFtwYXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCAwKSkpLCAiRCIgKCh1bnNpZ25l ZCBsb25nKShjcHUpKSA6ICJtZW1vcnkiLCAiY2MiICk7IF9fcmV0ID0gKGJvb2wpKCgoKHU2NClf X2VkeCkgPDwgMzIpIHwgX19lYXgpOyB9IGVsc2UgeyBhc20gdm9sYXRpbGUoIiIgIjc3MTpcblx0 IiAiOTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0cG9saW5lX3NhZmVcblx0IiAi ICIgIi5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgImNhbGwgKiVjW3Bh cmF2aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2VjdGlvbiAucGFyYWluc3RydWN0 aW9ucyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIgIiAiICIucXVhZCIgIiAiICIg NzcxYlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVtXSIgIlxuIiAiICAuYnl0ZSA3 NzJiLTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJdIiAiXG4iICIucG9w c2VjdGlvblxuIiAiIiA6ICI9YSIgKF9fZWF4KSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVy KSA6IFtwYXJhdmlydF90eXBlbnVtXSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBh cmF2aXJ0X3BhdGNoX3RlbXBsYXRlLCBsb2NrLnZjcHVfaXNfcHJlZW1wdGVkLmZ1bmMpIC8gc2l6 ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLmxvY2sudmNwdV9p c19wcmVlbXB0ZWQuZnVuYykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgMCkpKSwg IkQiICgodW5zaWduZWQgbG9uZykoY3B1KSkgOiAibWVtb3J5IiwgImNjIiApOyBfX3JldCA9IChi b29sKShfX2VheCAmICh7IHVuc2lnbmVkIGxvbmcgX19tYXNrID0gfjBVTDsgc3dpdGNoIChzaXpl b2YoYm9vbCkpIHsgY2FzZSAxOiBfX21hc2sgPSAweGZmVUw7IGJyZWFrOyBjYXNlIDI6IF9fbWFz ayA9IDB4ZmZmZlVMOyBicmVhazsgY2FzZSA0OiBfX21hc2sgPSAweGZmZmZmZmZmVUw7IGJyZWFr OyBkZWZhdWx0OiBicmVhazsgfSBfX21hc2s7IH0pKTsgfSBfX3JldDsgfSk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHZvaWQgX19yYXdfY2FsbGVlX3NhdmVfX19uYXRpdmVfcXVldWVkX3NwaW5f dW5sb2NrKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2spOwoxNDQ3NDogYm9vbCBfX3Jhd19jYWxsZWVf c2F2ZV9fX25hdGl2ZV92Y3B1X2lzX3ByZWVtcHRlZChsb25nIGNwdSk7CjE0NDc0OiAjIDc5OCAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydC5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgZGVm YXVsdF9iYW5uZXIodm9pZCk7CjE0NDc0OiAjIDkzOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w YXJhdmlydC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwYXJhdmlydF9hcmNoX2R1cF9tbWFwKHN0cnVjdCBtbV9z dHJ1Y3QgKm9sZG1tLAoxNDQ3NDogICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQoxNDQ3NDog ewoxNDQ3NDogfQoxNDQ3NDogIyAxMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGlubG9jay5o IiAyCjE0NDc0OiAjIDI3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiCjE0NDc0 OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcXNwaW5sb2NrLmgiIDEKMTQ0NzQ6ICMgMTQg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vcXNwaW5sb2NrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHUzMiBxdWV1ZWRfZmV0Y2hfc2V0X3BlbmRpbmdfYWNxdWly ZShzdHJ1Y3QgcXNwaW5sb2NrICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIHUzMiB2YWw7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdmFsID0g KHsgYm9vbCBjOyBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxu IiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToi ICJcblx0bG9jazsgIiAiYnRzbCIgIiAlW3ZhbF0sICIgIiVbdmFyXSIgIlxuXHQvKiBvdXRwdXQg Y29uZGl0aW9uIGNvZGUgIiAiYyIgIiovXG4iIDogW3Zhcl0gIittIiAobG9jay0+dmFsLmNvdW50 ZXIpLCAiPUBjYyIgImMiIChjKSA6IFt2YWxdICJJIiAoKDAgKyA4KSkgOiAibWVtb3J5Iik7IGM7 IH0pCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAoMVUgPDwgKDAg KyA4KSk7CjE0NDc0OiAgdmFsIHw9IGF0b21pY19yZWFkKCZsb2NrLT52YWwpICYgfigoKDFVIDw8 IDgpIC0gMSkgPDwgKDAgKyA4KSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gdmFsOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIG5hdGl2ZV9xdWV1ZWRfc3Bpbl9s b2NrX3Nsb3dwYXRoKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2ssIHUzMiB2YWwpOwoxNDQ3NDogZXh0 ZXJuIHZvaWQgX19wdl9pbml0X2xvY2tfaGFzaCh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9f cHZfcXVldWVkX3NwaW5fbG9ja19zbG93cGF0aChzdHJ1Y3QgcXNwaW5sb2NrICpsb2NrLCB1MzIg dmFsKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fcmF3X2NhbGxlZV9zYXZlX19fcHZfcXVldWVkX3Nw aW5fdW5sb2NrKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2spOwoxNDQ3NDogIyA0MyAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9xc3BpbmxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbmF0aXZlX3F1ZXVlZF9zcGlu X3VubG9jayhzdHJ1Y3QgcXNwaW5sb2NrICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgZG8g eyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF80NSh2b2lkKSBfX2F0dHJpYnV0ZV9f KChfX2Vycm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9t aWNpdHkuIikpKTsgaWYgKCEoKHNpemVvZigqJmxvY2stPmxvY2tlZCkgPT0gc2l6ZW9mKGNoYXIp IHx8IHNpemVvZigqJmxvY2stPmxvY2tlZCkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiZs b2NrLT5sb2NrZWQpID09IHNpemVvZihpbnQpIHx8IHNpemVvZigqJmxvY2stPmxvY2tlZCkgPT0g c2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzQ1KCk7IH0gd2hpbGUgKDApOyBf X2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7IHR5cGVvZigq JmxvY2stPmxvY2tlZCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0 eXBlb2YoKiZsb2NrLT5sb2NrZWQpKSAoMCkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJmxvY2st PmxvY2tlZCksIF9fdS5fX2MsIHNpemVvZigqJmxvY2stPmxvY2tlZCkpOyBfX3UuX192YWw7IH0p OyB9IHdoaWxlICgwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBxdWV1ZWRfc3Bpbl9s b2NrX3Nsb3dwYXRoKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2ssIHUzMiB2YWwpCjE0NDc0OiB7CjE0 NDc0OiAgcHZfcXVldWVkX3NwaW5fbG9ja19zbG93cGF0aChsb2NrLCB2YWwpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHF1ZXVlZF9zcGluX3VubG9jayhzdHJ1Y3QgcXNwaW5sb2NrICps b2NrKQoxNDQ3NDogewoxNDQ3NDogIHB2X3F1ZXVlZF9zcGluX3VubG9jayhsb2NrKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHZjcHVfaXNfcHJlZW1wdGVkKGxvbmcgY3B1 KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBwdl92Y3B1X2lzX3ByZWVtcHRlZChjcHUpOwoxNDQ3 NDogfQoxNDQ3NDogIyA3MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9xc3BpbmxvY2suaCIKMTQ0 NzQ6IGV4dGVybiBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlIHZpcnRfc3Bpbl9sb2NrX2tleTsKMTQ0 NzQ6IAoxNDQ3NDogdm9pZCBuYXRpdmVfcHZfbG9ja19pbml0KHZvaWQpIF9fYXR0cmlidXRlX18o KF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIDsK MTQ0NzQ6ICMgODYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcXNwaW5sb2NrLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIHZpcnRfc3Bpbl9sb2NrKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2spCjE0NDc0OiB7CjE0NDc0 OiAgaWYgKCEoeyBib29sIGJyYW5jaDsgaWYgKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3Ao dHlwZW9mKComdmlydF9zcGluX2xvY2tfa2V5KSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSkpIGJy YW5jaCA9ICFhcmNoX3N0YXRpY19icmFuY2goJigmdmlydF9zcGluX2xvY2tfa2V5KS0+a2V5LCB0 cnVlKTsgZWxzZSBpZiAoX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKiZ2aXJ0 X3NwaW5fbG9ja19rZXkpLCBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSkpIGJyYW5jaCA9ICFhcmNo X3N0YXRpY19icmFuY2hfanVtcCgmKCZ2aXJ0X3NwaW5fbG9ja19rZXkpLT5rZXksIHRydWUpOyBl bHNlIGJyYW5jaCA9IF9fX193cm9uZ19icmFuY2hfZXJyb3IoKTsgX19idWlsdGluX2V4cGVjdCgh IShicmFuY2gpLCAxKTsgfSkpCjE0NDc0OiAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGRvIHsKMTQ0 NzQ6ICAgd2hpbGUgKGF0b21pY19yZWFkKCZsb2NrLT52YWwpICE9IDApCjE0NDc0OiAgICBjcHVf cmVsYXgoKTsKMTQ0NzQ6ICB9IHdoaWxlIChhdG9taWNfY21weGNoZygmbG9jay0+dmFsLCAwLCAo MVUgPDwgMCkpICE9IDApOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEg Ii4vaW5jbHVkZS9hc20tZ2VuZXJpYy9xc3BpbmxvY2suaCIgMQoxNDQ3NDogIyAyMCAiLi9pbmNs dWRlL2FzbS1nZW5lcmljL3FzcGlubG9jay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSBpbnQgcXVldWVkX3NwaW5faXNfbG9ja2VkKHN0cnVjdCBxc3BpbmxvY2sg KmxvY2spCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBy ZXR1cm4gYXRvbWljX3JlYWQoJmxvY2stPnZhbCk7CjE0NDc0OiB9CjE0NDc0OiAjIDM5ICIuL2lu Y2x1ZGUvYXNtLWdlbmVyaWMvcXNwaW5sb2NrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBxdWV1ZWRfc3Bpbl92YWx1ZV91bmxvY2tlZChzdHJ1Y3QgcXNw aW5sb2NrIGxvY2spCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICFhdG9taWNfcmVhZCgmbG9jay52 YWwpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgcXVldWVk X3NwaW5faXNfY29udGVuZGVkKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2spCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGF0b21pY19yZWFkKCZsb2NrLT52YWwpICYgfigoKDFVIDw8IDgpIC0gMSkgPDwg MCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgcXVldWVkX3NwaW5fdHJ5 bG9jayhzdHJ1Y3QgcXNwaW5sb2NrICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIHUzMiB2YWwgPSBh dG9taWNfcmVhZCgmbG9jay0+dmFsKTsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhw ZWN0KCEhKHZhbCksIDApKQoxNDQ3NDogICByZXR1cm4gMDsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVy biBfX2J1aWx0aW5fZXhwZWN0KCEhKGF0b21pY190cnlfY21weGNoZygmbG9jay0+dmFsLCAmdmFs LCAoMVUgPDwgMCkpKSwgMSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHF1 ZXVlZF9zcGluX2xvY2tfc2xvd3BhdGgoc3RydWN0IHFzcGlubG9jayAqbG9jaywgdTMyIHZhbCk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHF1ZXVlZF9zcGluX2xvY2soc3RydWN0IHFz cGlubG9jayAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1MzIgdmFsID0gMDsKMTQ0NzQ6IAoxNDQ3 NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGF0b21pY190cnlfY21weGNoZygmbG9jay0+dmFs LCAmdmFsLCAoMVUgPDwgMCkpKSwgMSkpCjE0NDc0OiAgIHJldHVybjsKMTQ0NzQ6IAoxNDQ3NDog IHF1ZXVlZF9zcGluX2xvY2tfc2xvd3BhdGgobG9jaywgdmFsKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg MTExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3FzcGlubG9jay5oIiAyCjE0NDc0OiAjIDI4ICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiIDIKMTQ0NzQ6ICMgNDMgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vc3BpbmxvY2suaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9xcndsb2NrLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9xcndsb2NrLmgiIDEKMTQ0NzQ6ICMg MzAgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9xcndsb2NrLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBx dWV1ZWRfcmVhZF9sb2NrX3Nsb3dwYXRoKHN0cnVjdCBxcndsb2NrICpsb2NrKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIHF1ZXVlZF93cml0ZV9sb2NrX3Nsb3dwYXRoKHN0cnVjdCBxcndsb2NrICpsb2Nr KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBxdWV1ZWRfcmVhZF90cnlsb2NrKHN0cnVjdCBxcndsb2NrICpsb2NrKQoxNDQ3NDogewox NDQ3NDogIHUzMiBjbnRzOwoxNDQ3NDogCjE0NDc0OiAgY250cyA9IGF0b21pY19yZWFkKCZsb2Nr LT5jbnRzKTsKMTQ0NzQ6ICBpZiAoX19idWlsdGluX2V4cGVjdCghISghKGNudHMgJiAweDFmZikp LCAxKSkgewoxNDQ3NDogICBjbnRzID0gKHUzMilhdG9taWNfYWRkX3JldHVybigoMVUgPDwgOSks ICZsb2NrLT5jbnRzKTsKMTQ0NzQ6ICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIShjbnRzICYg MHgxZmYpKSwgMSkpCjE0NDc0OiAgICByZXR1cm4gMTsKMTQ0NzQ6ICAgYXRvbWljX3N1YigoMVUg PDwgOSksICZsb2NrLT5jbnRzKTsKMTQ0NzQ6ICB9CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgcXVldWVkX3dyaXRlX3RyeWxvY2soc3RydWN0IHFyd2xvY2sgKmxvY2spCjE0NDc0OiB7CjE0 NDc0OiAgdTMyIGNudHM7CjE0NDc0OiAKMTQ0NzQ6ICBjbnRzID0gYXRvbWljX3JlYWQoJmxvY2st PmNudHMpOwoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGNudHMpLCAwKSkKMTQ0NzQ6 ICAgcmV0dXJuIDA7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gX19idWlsdGluX2V4cGVjdCghIShh dG9taWNfdHJ5X2NtcHhjaGcoJmxvY2stPmNudHMsICZjbnRzLCAweDBmZikpLCAxKQoxNDQ3NDog ICAgICAgICAgICAgICAgIDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBxdWV1ZWRfcmVhZF9sb2NrKHN0cnVjdCBxcndsb2NrICpsb2NrKQoxNDQ3 NDogewoxNDQ3NDogIHUzMiBjbnRzOwoxNDQ3NDogCjE0NDc0OiAgY250cyA9IGF0b21pY19hZGRf cmV0dXJuKCgxVSA8PCA5KSwgJmxvY2stPmNudHMpOwoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhw ZWN0KCEhKCEoY250cyAmIDB4MWZmKSksIDEpKQoxNDQ3NDogICByZXR1cm47CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHF1ZXVlZF9yZWFkX2xvY2tfc2xvd3BhdGgobG9jayk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBxdWV1ZWRf d3JpdGVfbG9jayhzdHJ1Y3QgcXJ3bG9jayAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1MzIgY250 cyA9IDA7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoX19idWlsdGluX2V4cGVjdCghIShhdG9taWNfdHJ5 X2NtcHhjaGcoJmxvY2stPmNudHMsICZjbnRzLCAweDBmZikpLCAxKSkKMTQ0NzQ6ICAgcmV0dXJu OwoxNDQ3NDogCjE0NDc0OiAgcXVldWVkX3dyaXRlX2xvY2tfc2xvd3BhdGgobG9jayk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBx dWV1ZWRfcmVhZF91bmxvY2soc3RydWN0IHFyd2xvY2sgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgKHZvaWQpYXRvbWljX3N1Yl9yZXR1cm4oKDFVIDw8IDkp LCAmbG9jay0+Y250cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBxdWV1ZWRfd3JpdGVfdW5sb2NrKHN0cnVjdCBxcndsb2NrICps b2NrKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1l X2Fzc2VydF8xMTYodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2ZSB3 b3JkIHNpemVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXplb2Yo KiZsb2NrLT53bG9ja2VkKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKCombG9jay0+d2xvY2tl ZCkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiZsb2NrLT53bG9ja2VkKSA9PSBzaXplb2Yo aW50KSB8fCBzaXplb2YoKiZsb2NrLT53bG9ja2VkKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21w aWxldGltZV9hc3NlcnRfMTE2KCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi IjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJmxvY2stPndsb2NrZWQpIF9fdmFs OyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCombG9jay0+d2xvY2tl ZCkpICgwKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKCombG9jay0+d2xvY2tlZCksIF9fdS5fX2Ms IHNpemVvZigqJmxvY2stPndsb2NrZWQpKTsgX191Ll9fdmFsOyB9KTsgfSB3aGlsZSAoMCk7CjE0 NDc0OiB9CjE0NDc0OiAjIDcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcXJ3bG9jay5oIiAyCjE0 NDc0OiAjIDQ0ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiIDIKMTQ0NzQ6ICMg OTAgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCjE0NDc0OiAjIDE3OCAiLi9pbmNsdWRl L2xpbnV4L3NwaW5sb2NrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRvX3Jhd19zcGluX2xvY2socmF3X3NwaW5s b2NrX3QgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAgKHZvaWQpMDsKMTQ0NzQ6ICBxdWV1ZWRfc3Bp bl9sb2NrKCZsb2NrLT5yYXdfbG9jayk7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0 NDc0OiBkb19yYXdfc3Bpbl9sb2NrX2ZsYWdzKHJhd19zcGlubG9ja190ICpsb2NrLCB1bnNpZ25l ZCBsb25nICpmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICAodm9pZCkwOwoxNDQ3NDogIHF1ZXVlZF9z cGluX2xvY2soJmxvY2stPnJhd19sb2NrKTsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZG9fcmF3X3NwaW5fdHJ5bG9jayhyYXdfc3BpbmxvY2tf dCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgcmV0ID0gcXVldWVkX3NwaW5fdHJ5bG9jaygm KGxvY2spLT5yYXdfbG9jayk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAocmV0KQoxNDQ3NDogICBkbyB7 IH0gd2hpbGUgKDApOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHJldDsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBkb19yYXdfc3Bpbl91bmxvY2socmF3X3NwaW5sb2NrX3QgKmxvY2spCjE0 NDc0OiB7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBxdWV1ZWRfc3Bpbl91bmxv Y2soJmxvY2stPnJhd19sb2NrKTsKMTQ0NzQ6ICAodm9pZCkwOwoxNDQ3NDogfQoxNDQ3NDogIyAz MTAgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGlu dXgvcndsb2NrLmgiIDEKMTQ0NzQ6ICMgMzExICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIg MgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9p bmNsdWRlL2xpbnV4L3NwaW5sb2NrX2FwaV9zbXAuaCIgMQoxNDQ3NDogIyAxOCAiLi9pbmNsdWRl L2xpbnV4L3NwaW5sb2NrX2FwaV9zbXAuaCIKMTQ0NzQ6IGludCBpbl9sb2NrX2Z1bmN0aW9ucyh1 bnNpZ25lZCBsb25nIGFkZHIpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBf X2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19zcGluX2xvY2so cmF3X3NwaW5sb2NrX3QgKmxvY2spIDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlv bigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfc3Bpbl9sb2NrX25lc3RlZChyYXdfc3BpbmxvY2tf dCAqbG9jaywgaW50IHN1YmNsYXNzKQoxNDQ3NDogICAgICAgICA7CjE0NDc0OiB2b2lkIF9fYXR0 cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKQoxNDQ3NDogX3Jhd19zcGluX2xv Y2tfbmVzdF9sb2NrKHJhd19zcGlubG9ja190ICpsb2NrLCBzdHJ1Y3QgbG9ja2RlcF9tYXAgKm1h cCkKMTQ0NzQ6ICAgICAgICAgOwoxNDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIu c3BpbmxvY2sudGV4dCIpKSkgX3Jhd19zcGluX2xvY2tfYmgocmF3X3NwaW5sb2NrX3QgKmxvY2sp IDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkp IF9yYXdfc3Bpbl9sb2NrX2lycShyYXdfc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6ICAgICAgICAg OwoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBsb25nIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5z cGlubG9jay50ZXh0IikpKSBfcmF3X3NwaW5fbG9ja19pcnFzYXZlKHJhd19zcGlubG9ja190ICps b2NrKQoxNDQ3NDogICAgICAgICA7CjE0NDc0OiB1bnNpZ25lZCBsb25nIF9fYXR0cmlidXRlX18o KHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKQoxNDQ3NDogX3Jhd19zcGluX2xvY2tfaXJxc2F2 ZV9uZXN0ZWQocmF3X3NwaW5sb2NrX3QgKmxvY2ssIGludCBzdWJjbGFzcykKMTQ0NzQ6ICAgICAg ICAgOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0Iikp KSBfcmF3X3NwaW5fdHJ5bG9jayhyYXdfc3BpbmxvY2tfdCAqbG9jayk7CjE0NDc0OiBpbnQgX19h dHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfc3Bpbl90cnlsb2Nr X2JoKHJhd19zcGlubG9ja190ICpsb2NrKTsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2Vj dGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfc3Bpbl91bmxvY2socmF3X3NwaW5sb2NrX3Qg KmxvY2spIDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRl eHQiKSkpIF9yYXdfc3Bpbl91bmxvY2tfYmgocmF3X3NwaW5sb2NrX3QgKmxvY2spIDsKMTQ0NzQ6 IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfc3Bp bl91bmxvY2tfaXJxKHJhd19zcGlubG9ja190ICpsb2NrKSA7CjE0NDc0OiB2b2lkIF9fYXR0cmli dXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKQoxNDQ3NDogX3Jhd19zcGluX3VubG9j a19pcnFyZXN0b3JlKHJhd19zcGlubG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZsYWdzKQox NDQ3NDogICAgICAgICA7CjE0NDc0OiAjIDg2ICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2tfYXBp X3NtcC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IF9fcmF3X3NwaW5fdHJ5bG9jayhyYXdfc3BpbmxvY2tfdCAqbG9j aykKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OwoxNDQ3NDogIGlmIChkb19yYXdfc3Bpbl90cnlsb2NrKGxvY2spKSB7CjE0NDc0OiAgIGRvIHsg fSB3aGlsZSAoMCk7CjE0NDc0OiAgIHJldHVybiAxOwoxNDQ3NDogIH0KMTQ0NzQ6ICBfX2FzbV9f IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDog fQoxNDQ3NDogIyAxMDQgIi4vaW5jbHVkZS9saW51eC9zcGlubG9ja19hcGlfc21wLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBsb25nIF9fcmF3X3NwaW5fbG9ja19pcnFzYXZlKHJhd19zcGlubG9ja190ICps b2NrKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CjE0NDc0OiAKMTQ0NzQ6 ICBkbyB7IGRvIHsgKHsgdW5zaWduZWQgbG9uZyBfX2R1bW15OyB0eXBlb2YoZmxhZ3MpIF9fZHVt bXkyOyAodm9pZCkoJl9fZHVtbXkgPT0gJl9fZHVtbXkyKTsgMTsgfSk7IGZsYWdzID0gYXJjaF9s b2NhbF9pcnFfc2F2ZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgX19hc21f XyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDAp OwoxNDQ3NDogIyAxMTkgIi4vaW5jbHVkZS9saW51eC9zcGlubG9ja19hcGlfc21wLmgiCjE0NDc0 OiAgZG9fcmF3X3NwaW5fbG9ja19mbGFncyhsb2NrLCAmZmxhZ3MpOwoxNDQ3NDogCjE0NDc0OiAg cmV0dXJuIGZsYWdzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3NwaW5fbG9j a19pcnEocmF3X3NwaW5sb2NrX3QgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBhcmNoX2xv Y2FsX2lycV9kaXNhYmxlKCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBk b19yYXdfc3Bpbl9sb2NrKGxvY2spOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3 X3NwaW5fbG9ja19iaChyYXdfc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2xv Y2FsX2JoX2Rpc2FibGVfaXAoKHVuc2lnbmVkIGxvbmcpX19idWlsdGluX3JldHVybl9hZGRyZXNz KDApLCAoKDIgKiAoMVVMIDw8ICgwICsgOCkpKSArIDApKTsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUg KDApOwoxNDQ3NDogIGRvX3Jhd19zcGluX2xvY2sobG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgX19yYXdfc3Bpbl9sb2NrKHJhd19zcGlubG9ja190ICpsb2NrKQoxNDQ3NDogewox NDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgZG8g eyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkb19yYXdfc3Bpbl9sb2NrKGxvY2spOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd19zcGluX3VubG9jayhyYXdf c3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3 NDogIGRvX3Jhd19zcGluX3VubG9jayhsb2NrKTsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVf XygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3Nw aW5fdW5sb2NrX2lycXJlc3RvcmUocmF3X3NwaW5sb2NrX3QgKmxvY2ssCjE0NDc0OiAgICAgICAg ICB1bnNpZ25lZCBsb25nIGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7 CjE0NDc0OiAgZG9fcmF3X3NwaW5fdW5sb2NrKGxvY2spOwoxNDQ3NDogIGRvIHsgZG8geyAoeyB1 bnNpZ25lZCBsb25nIF9fZHVtbXk7IHR5cGVvZihmbGFncykgX19kdW1teTI7ICh2b2lkKSgmX19k dW1teSA9PSAmX19kdW1teTIpOyAxOyB9KTsgYXJjaF9sb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7 IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi IjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3NwaW5f dW5sb2NrX2lycShyYXdfc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IH0g d2hpbGUgKDApOwoxNDQ3NDogIGRvX3Jhd19zcGluX3VubG9jayhsb2NrKTsKMTQ0NzQ6ICBkbyB7 IGFyY2hfbG9jYWxfaXJxX2VuYWJsZSgpOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBfX2FzbV9fIF9f dm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IF9fcmF3X3NwaW5fdW5sb2NrX2JoKHJhd19zcGlubG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3 NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgZG9fcmF3X3NwaW5fdW5sb2NrKGxvY2spOwox NDQ3NDogIF9fbG9jYWxfYmhfZW5hYmxlX2lwKCh1bnNpZ25lZCBsb25nKV9fYnVpbHRpbl9yZXR1 cm5fYWRkcmVzcygwKSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAwKSk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBfX3Jhd19zcGluX3RyeWxvY2tfYmgocmF3X3NwaW5sb2NrX3QgKmxv Y2spCjE0NDc0OiB7CjE0NDc0OiAgX19sb2NhbF9iaF9kaXNhYmxlX2lwKCh1bnNpZ25lZCBsb25n KV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAw KSk7CjE0NDc0OiAgaWYgKGRvX3Jhd19zcGluX3RyeWxvY2sobG9jaykpIHsKMTQ0NzQ6ICAgZG8g eyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICAgcmV0dXJuIDE7CjE0NDc0OiAgfQoxNDQ3NDogIF9fbG9j YWxfYmhfZW5hYmxlX2lwKCh1bnNpZ25lZCBsb25nKV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygw KSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAwKSk7CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3J3bG9ja19hcGlfc21wLmgi IDEKMTQ0NzQ6ICMgMTggIi4vaW5jbHVkZS9saW51eC9yd2xvY2tfYXBpX3NtcC5oIgoxNDQ3NDog dm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19yZWFk X2xvY2socndsb2NrX3QgKmxvY2spIDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlv bigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfbG9jayhyd2xvY2tfdCAqbG9jaykgOwox NDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jh d19yZWFkX2xvY2tfYmgocndsb2NrX3QgKmxvY2spIDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfbG9ja19iaChyd2xvY2tf dCAqbG9jaykgOwoxNDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2su dGV4dCIpKSkgX3Jhd19yZWFkX2xvY2tfaXJxKHJ3bG9ja190ICpsb2NrKSA7CjE0NDc0OiB2b2lk IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKSBfcmF3X3dyaXRlX2xv Y2tfaXJxKHJ3bG9ja190ICpsb2NrKSA7CjE0NDc0OiB1bnNpZ25lZCBsb25nIF9fYXR0cmlidXRl X18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKSBfcmF3X3JlYWRfbG9ja19pcnFzYXZlKHJ3 bG9ja190ICpsb2NrKQoxNDQ3NDogICAgICAgIDsKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgX19hdHRy aWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfbG9ja19pcnFz YXZlKHJ3bG9ja190ICpsb2NrKQoxNDQ3NDogICAgICAgIDsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0 ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19yZWFkX3RyeWxvY2socndsb2Nr X3QgKmxvY2spOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50 ZXh0IikpKSBfcmF3X3dyaXRlX3RyeWxvY2socndsb2NrX3QgKmxvY2spOwoxNDQ3NDogdm9pZCBf X2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19yZWFkX3VubG9j ayhyd2xvY2tfdCAqbG9jaykgOwoxNDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIu c3BpbmxvY2sudGV4dCIpKSkgX3Jhd193cml0ZV91bmxvY2socndsb2NrX3QgKmxvY2spIDsKMTQ0 NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdf cmVhZF91bmxvY2tfYmgocndsb2NrX3QgKmxvY2spIDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfdW5sb2NrX2JoKHJ3bG9j a190ICpsb2NrKSA7CjE0NDc0OiB2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9j ay50ZXh0IikpKSBfcmF3X3JlYWRfdW5sb2NrX2lycShyd2xvY2tfdCAqbG9jaykgOwoxNDQ3NDog dm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd193cml0 ZV91bmxvY2tfaXJxKHJ3bG9ja190ICpsb2NrKSA7CjE0NDc0OiB2b2lkIF9fYXR0cmlidXRlX18o KHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKQoxNDQ3NDogX3Jhd19yZWFkX3VubG9ja19pcnFy ZXN0b3JlKHJ3bG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZsYWdzKQoxNDQ3NDogICAgICAg IDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkp CjE0NDc0OiBfcmF3X3dyaXRlX3VubG9ja19pcnFyZXN0b3JlKHJ3bG9ja190ICpsb2NrLCB1bnNp Z25lZCBsb25nIGZsYWdzKQoxNDQ3NDogICAgICAgIDsKMTQ0NzQ6ICMgMTE3ICIuL2luY2x1ZGUv bGludXgvcndsb2NrX2FwaV9zbXAuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX3Jhd19yZWFkX3RyeWxvY2socnds b2NrX3QgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDog OiJtZW1vcnkiKTsKMTQ0NzQ6ICBpZiAocXVldWVkX3JlYWRfdHJ5bG9jaygmKGxvY2spLT5yYXdf bG9jaykpIHsKMTQ0NzQ6ICAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICAgcmV0dXJuIDE7CjE0 NDc0OiAgfQoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0 NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX3Jhd193cml0ZV90 cnlsb2NrKHJ3bG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgaWYgKHF1ZXVlZF93cml0ZV90cnlsb2NrKCYo bG9jayktPnJhd19sb2NrKSkgewoxNDQ3NDogICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogICBy ZXR1cm4gMTsKMTQ0NzQ6ICB9CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJt ZW1vcnkiKTsKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQ2ICIuL2luY2x1 ZGUvbGludXgvcndsb2NrX2FwaV9zbXAuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfcmVhZF9sb2NrKHJ3 bG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6 IDoibWVtb3J5Iik7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7KHZvaWQp MDsgcXVldWVkX3JlYWRfbG9jaygmKGxvY2spLT5yYXdfbG9jayk7IH0gd2hpbGUgKDApOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF9fcmF3X3JlYWRfbG9ja19pcnFzYXZl KHJ3bG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CjE0 NDc0OiAKMTQ0NzQ6ICBkbyB7IGRvIHsgKHsgdW5zaWduZWQgbG9uZyBfX2R1bW15OyB0eXBlb2Yo ZmxhZ3MpIF9fZHVtbXkyOyAodm9pZCkoJl9fZHVtbXkgPT0gJl9fZHVtbXkyKTsgMTsgfSk7IGZs YWdzID0gYXJjaF9sb2NhbF9pcnFfc2F2ZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0 NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6ICBkbyB7 IH0gd2hpbGUgKDApOwoxNDQ3NDogIGRvIHsodm9pZCkwOyBxdWV1ZWRfcmVhZF9sb2NrKCYoKGxv Y2spKS0+cmF3X2xvY2spOyB9IHdoaWxlICgwKQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogIHJldHVybiBmbGFnczsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBfX3Jhd19yZWFkX2xvY2tfaXJxKHJ3bG9ja190ICpsb2NrKQoxNDQ3NDog ewoxNDQ3NDogIGRvIHsgYXJjaF9sb2NhbF9pcnFfZGlzYWJsZSgpOyB9IHdoaWxlICgwKTsKMTQ0 NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogIGRvIHsg fSB3aGlsZSAoMCk7CjE0NDc0OiAgZG8geyh2b2lkKTA7IHF1ZXVlZF9yZWFkX2xvY2soJihsb2Nr KS0+cmF3X2xvY2spOyB9IHdoaWxlICgwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBf X3Jhd19yZWFkX2xvY2tfYmgocndsb2NrX3QgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAgX19sb2Nh bF9iaF9kaXNhYmxlX2lwKCh1bnNpZ25lZCBsb25nKV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygw KSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAwKSk7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgw KTsKMTQ0NzQ6ICBkbyB7KHZvaWQpMDsgcXVldWVkX3JlYWRfbG9jaygmKGxvY2spLT5yYXdfbG9j ayk7IH0gd2hpbGUgKDApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF9f cmF3X3dyaXRlX2xvY2tfaXJxc2F2ZShyd2xvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGZsYWdzOwoxNDQ3NDogCjE0NDc0OiAgZG8geyBkbyB7ICh7IHVuc2lnbmVk IGxvbmcgX19kdW1teTsgdHlwZW9mKGZsYWdzKSBfX2R1bW15MjsgKHZvaWQpKCZfX2R1bW15ID09 ICZfX2R1bW15Mik7IDE7IH0pOyBmbGFncyA9IGFyY2hfbG9jYWxfaXJxX3NhdmUoKTsgfSB3aGls ZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoi bWVtb3J5Iik7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7KHZvaWQpMDsg cXVldWVkX3dyaXRlX2xvY2soJigobG9jaykpLT5yYXdfbG9jayk7IH0gd2hpbGUgKDApCjE0NDc0 OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogIHJldHVy biBmbGFnczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd193cml0ZV9sb2NrX2ly cShyd2xvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IGFyY2hfbG9jYWxfaXJxX2Rp c2FibGUoKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDog OiJtZW1vcnkiKTsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGRvIHsodm9pZCkw OyBxdWV1ZWRfd3JpdGVfbG9jaygmKGxvY2spLT5yYXdfbG9jayk7IH0gd2hpbGUgKDApOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3dyaXRlX2xvY2tfYmgocndsb2NrX3QgKmxv Y2spCjE0NDc0OiB7CjE0NDc0OiAgX19sb2NhbF9iaF9kaXNhYmxlX2lwKCh1bnNpZ25lZCBsb25n KV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAw KSk7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7KHZvaWQpMDsgcXVldWVk X3dyaXRlX2xvY2soJihsb2NrKS0+cmF3X2xvY2spOyB9IHdoaWxlICgwKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd193cml0ZV9sb2NrKHJ3bG9ja190ICpsb2NrKQoxNDQ3NDog ewoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAg ZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7KHZvaWQpMDsgcXVldWVkX3dyaXRlX2xvY2so Jihsb2NrKS0+cmF3X2xvY2spOyB9IHdoaWxlICgwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfd3JpdGVfdW5sb2NrKHJ3bG9ja190ICpsb2NrKQox NDQ3NDogewoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgZG8ge3F1ZXVlZF93cml0 ZV91bmxvY2soJihsb2NrKS0+cmF3X2xvY2spOyAodm9pZCkwOyB9IHdoaWxlICgwKTsKMTQ0NzQ6 ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIF9fcmF3X3JlYWRfdW5sb2NrKHJ3bG9ja190ICpsb2NrKQoxNDQ3NDogewox NDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgZG8ge3F1ZXVlZF9yZWFkX3VubG9jaygm KGxvY2spLT5yYXdfbG9jayk7ICh2b2lkKTA7IH0gd2hpbGUgKDApOwoxNDQ3NDogIF9fYXNtX18g X192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQKMTQ0NzQ6IF9fcmF3X3JlYWRfdW5sb2NrX2lycXJlc3RvcmUocndsb2NrX3QgKmxvY2ssIHVu c2lnbmVkIGxvbmcgZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0 NzQ6ICBkbyB7cXVldWVkX3JlYWRfdW5sb2NrKCYobG9jayktPnJhd19sb2NrKTsgKHZvaWQpMDsg fSB3aGlsZSAoMCk7CjE0NDc0OiAgZG8geyBkbyB7ICh7IHVuc2lnbmVkIGxvbmcgX19kdW1teTsg dHlwZW9mKGZsYWdzKSBfX2R1bW15MjsgKHZvaWQpKCZfX2R1bW15ID09ICZfX2R1bW15Mik7IDE7 IH0pOyBhcmNoX2xvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUg KDApOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfcmVhZF91bmxvY2tfaXJxKHJ3bG9ja190ICps b2NrKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgZG8ge3F1ZXVl ZF9yZWFkX3VubG9jaygmKGxvY2spLT5yYXdfbG9jayk7ICh2b2lkKTA7IH0gd2hpbGUgKDApOwox NDQ3NDogIGRvIHsgYXJjaF9sb2NhbF9pcnFfZW5hYmxlKCk7IH0gd2hpbGUgKDApOwoxNDQ3NDog IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgX19yYXdfcmVhZF91bmxvY2tfYmgocndsb2NrX3QgKmxvY2spCjE0NDc0OiB7 CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7cXVldWVkX3JlYWRfdW5sb2Nr KCYobG9jayktPnJhd19sb2NrKTsgKHZvaWQpMDsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgX19sb2Nh bF9iaF9lbmFibGVfaXAoKHVuc2lnbmVkIGxvbmcpX19idWlsdGluX3JldHVybl9hZGRyZXNzKDAp LCAoKDIgKiAoMVVMIDw8ICgwICsgOCkpKSArIDApKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBfX3Jhd193cml0ZV91bmxvY2tfaXJxcmVzdG9yZShyd2xvY2tfdCAqbG9jaywKMTQ0NzQ6 ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgfSB3 aGlsZSAoMCk7CjE0NDc0OiAgZG8ge3F1ZXVlZF93cml0ZV91bmxvY2soJihsb2NrKS0+cmF3X2xv Y2spOyAodm9pZCkwOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7IGRvIHsgKHsgdW5zaWduZWQg bG9uZyBfX2R1bW15OyB0eXBlb2YoZmxhZ3MpIF9fZHVtbXkyOyAodm9pZCkoJl9fZHVtbXkgPT0g Jl9fZHVtbXkyKTsgMTsgfSk7IGFyY2hfbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJt ZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd193cml0ZV91bmxvY2tf aXJxKHJ3bG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0 NDc0OiAgZG8ge3F1ZXVlZF93cml0ZV91bmxvY2soJihsb2NrKS0+cmF3X2xvY2spOyAodm9pZCkw OyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7IGFyY2hfbG9jYWxfaXJxX2VuYWJsZSgpOyB9IHdo aWxlICgwKTsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3dyaXRlX3VubG9ja19iaChyd2xvY2tf dCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGRvIHtx dWV1ZWRfd3JpdGVfdW5sb2NrKCYobG9jayktPnJhd19sb2NrKTsgKHZvaWQpMDsgfSB3aGlsZSAo MCk7CjE0NDc0OiAgX19sb2NhbF9iaF9lbmFibGVfaXAoKHVuc2lnbmVkIGxvbmcpX19idWlsdGlu X3JldHVybl9hZGRyZXNzKDApLCAoKDIgKiAoMVVMIDw8ICgwICsgOCkpKSArIDApKTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgMTkxICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2tfYXBpX3NtcC5oIiAyCjE0 NDc0OiAjIDMxNyAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDIKMTQ0NzQ6ICMgMzI1ICIu L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgcmF3X3NwaW5sb2NrX3QgKnNwaW5sb2NrX2NoZWNrKHNwaW5sb2NrX3QgKmxv Y2spCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICZsb2NrLT5ybG9jazsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNwaW5fbG9jayhzcGlubG9j a190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIF9yYXdfc3Bpbl9sb2NrKCZsb2NrLT5ybG9jayk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkgdm9pZCBzcGluX2xvY2tfYmgoc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBf cmF3X3NwaW5fbG9ja19iaCgmbG9jay0+cmxvY2spOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBzcGluX3RyeWxvY2soc3Bpbmxv Y2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKF9yYXdfc3Bpbl90cnlsb2NrKCZs b2NrLT5ybG9jaykpOwoxNDQ3NDogfQoxNDQ3NDogIyAzNjEgIi4vaW5jbHVkZS9saW51eC9zcGlu bG9jay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNw aW5fbG9ja19pcnEoc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBfcmF3X3NwaW5f bG9ja19pcnEoJmxvY2stPnJsb2NrKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzc2ICIuL2luY2x1ZGUv bGludXgvc3BpbmxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkgdm9pZCBzcGluX3VubG9jayhzcGlubG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIF9f cmF3X3NwaW5fdW5sb2NrKCZsb2NrLT5ybG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzcGluX3VubG9ja19iaChzcGlu bG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIF9yYXdfc3Bpbl91bmxvY2tfYmgoJmxvY2st PnJsb2NrKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkIHNwaW5fdW5sb2NrX2lycShzcGlubG9ja190ICpsb2NrKQoxNDQ3NDog ewoxNDQ3NDogIF9fcmF3X3NwaW5fdW5sb2NrX2lycSgmbG9jay0+cmxvY2spOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgc3Bp bl91bmxvY2tfaXJxcmVzdG9yZShzcGlubG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZsYWdz KQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgKHsgdW5zaWduZWQgbG9uZyBfX2R1bW15OyB0eXBlb2Yo ZmxhZ3MpIF9fZHVtbXkyOyAodm9pZCkoJl9fZHVtbXkgPT0gJl9fZHVtbXkyKTsgMTsgfSk7IF9y YXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbG9jay0+cmxvY2ssIGZsYWdzKTsgfSB3aGlsZSAo MCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgaW50IHNwaW5fdHJ5bG9ja19iaChzcGlubG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiAoX3Jhd19zcGluX3RyeWxvY2tfYmgoJmxvY2stPnJsb2NrKSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IHNw aW5fdHJ5bG9ja19pcnEoc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g KHsgZG8geyBhcmNoX2xvY2FsX2lycV9kaXNhYmxlKCk7IH0gd2hpbGUgKDApOyAoX3Jhd19zcGlu X3RyeWxvY2soJmxvY2stPnJsb2NrKSkgPyAxIDogKHsgZG8geyBhcmNoX2xvY2FsX2lycV9lbmFi bGUoKTsgfSB3aGlsZSAoMCk7IDA7IH0pOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDI5ICIuL2lu Y2x1ZGUvbGludXgvc3BpbmxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgaW50IHNwaW5faXNfbG9ja2VkKHNwaW5sb2NrX3QgKmxvY2spCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIHF1ZXVlZF9zcGluX2lzX2xvY2tlZCgmKCZsb2NrLT5ybG9jayktPnJhd19s b2NrKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSBpbnQgc3Bpbl9pc19jb250ZW5kZWQoc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gcXVldWVkX3NwaW5faXNfY29udGVuZGVkKCYoJmxvY2stPnJsb2NrKS0+ cmF3X2xvY2spOwoxNDQ3NDogfQoxNDQ3NDogIyA0NTQgIi4vaW5jbHVkZS9saW51eC9zcGlubG9j ay5oIgoxNDQ3NDogZXh0ZXJuIGludCBfYXRvbWljX2RlY19hbmRfbG9jayhhdG9taWNfdCAqYXRv bWljLCBzcGlubG9ja190ICpsb2NrKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgX2F0b21pY19kZWNfYW5kX2xvY2tfaXJxc2F2ZShhdG9taWNfdCAqYXRvbWljLCBz cGlubG9ja190ICpsb2NrLAoxNDQ3NDogICAgICB1bnNpZ25lZCBsb25nICpmbGFncyk7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQgX19hbGxvY19idWNrZXRfc3BpbmxvY2tzKHNw aW5sb2NrX3QgKipsb2NrcywgdW5zaWduZWQgaW50ICpsb2NrX21hc2ssCjE0NDc0OiAgICAgICAg IHNpemVfdCBtYXhfc2l6ZSwgdW5zaWduZWQgaW50IGNwdV9tdWx0LAoxNDQ3NDogICAgICAgICBn ZnBfdCBnZnAsIGNvbnN0IGNoYXIgKm5hbWUsCjE0NDc0OiAgICAgICAgIHN0cnVjdCBsb2NrX2Ns YXNzX2tleSAqa2V5KTsKMTQ0NzQ6ICMgNDc4ICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIK MTQ0NzQ6IHZvaWQgZnJlZV9idWNrZXRfc3BpbmxvY2tzKHNwaW5sb2NrX3QgKmxvY2tzKTsKMTQ0 NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51eC9rcmVmLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRl L2xpbnV4L3JlZmNvdW50LmgiIDEKMTQ0NzQ6ICMgODggIi4vaW5jbHVkZS9saW51eC9yZWZjb3Vu dC5oIgoxNDQ3NDogc3RydWN0IG11dGV4OwoxNDQ3NDogIyA5OCAiLi9pbmNsdWRlL2xpbnV4L3Jl ZmNvdW50LmgiCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCByZWZjb3VudF9zdHJ1Y3QgewoxNDQ3NDog IGF0b21pY190IHJlZnM7CjE0NDc0OiB9IHJlZmNvdW50X3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSByZWZjb3VudF9zYXR1cmF0aW9uX3R5cGUg ewoxNDQ3NDogIFJFRkNPVU5UX0FERF9OT1RfWkVST19PVkYsCjE0NDc0OiAgUkVGQ09VTlRfQURE X09WRiwKMTQ0NzQ6ICBSRUZDT1VOVF9BRERfVUFGLAoxNDQ3NDogIFJFRkNPVU5UX1NVQl9VQUYs CjE0NDc0OiAgUkVGQ09VTlRfREVDX0xFQUssCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB2b2lk IHJlZmNvdW50X3dhcm5fc2F0dXJhdGUocmVmY291bnRfdCAqciwgZW51bSByZWZjb3VudF9zYXR1 cmF0aW9uX3R5cGUgdCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHJlZmNvdW50X3NldChyZWZjb3VudF90ICpyLCBpbnQgbikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBhdG9taWNfc2V0KCZyLT5yZWZzLCBuKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5z aWduZWQgaW50IHJlZmNvdW50X3JlYWQoY29uc3QgcmVmY291bnRfdCAqcikKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gYXRvbWljX3JlYWQoJnItPnJlZnMpOwoxNDQ3NDogfQoxNDQ3NDogIyAxNTUg Ii4vaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGJvb2wgcmVmY291bnRfYWRkX25vdF96ZXJvKGludCBpLCByZWZj b3VudF90ICpyKQoxNDQ3NDogewoxNDQ3NDogIGludCBvbGQgPSByZWZjb3VudF9yZWFkKHIpOwox NDQ3NDogCjE0NDc0OiAgZG8gewoxNDQ3NDogICBpZiAoIW9sZCkKMTQ0NzQ6ICAgIGJyZWFrOwox NDQ3NDogIH0gd2hpbGUgKCFhdG9taWNfdHJ5X2NtcHhjaGcoJnItPnJlZnMsICZvbGQsIG9sZCAr IGkpKTsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKG9sZCA8IDAgfHwg b2xkICsgaSA8IDApLCAwKSkKMTQ0NzQ6ICAgcmVmY291bnRfd2Fybl9zYXR1cmF0ZShyLCBSRUZD T1VOVF9BRERfTk9UX1pFUk9fT1ZGKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBvbGQ7CjE0NDc0 OiB9CjE0NDc0OiAjIDE4NiAiLi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IHJlZmNvdW50X2FkZChpbnQgaSwgcmVmY291bnRfdCAqcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQg b2xkID0gYXRvbWljX2ZldGNoX2FkZChpLCAmci0+cmVmcyk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAo X19idWlsdGluX2V4cGVjdCghISghb2xkKSwgMCkpCjE0NDc0OiAgIHJlZmNvdW50X3dhcm5fc2F0 dXJhdGUociwgUkVGQ09VTlRfQUREX1VBRik7CjE0NDc0OiAgZWxzZSBpZiAoX19idWlsdGluX2V4 cGVjdCghIShvbGQgPCAwIHx8IG9sZCArIGkgPCAwKSwgMCkpCjE0NDc0OiAgIHJlZmNvdW50X3dh cm5fc2F0dXJhdGUociwgUkVGQ09VTlRfQUREX09WRik7CjE0NDc0OiB9CjE0NDc0OiAjIDIwOSAi Li9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkgYm9vbCByZWZjb3VudF9pbmNfbm90X3plcm8ocmVmY291bnRfdCAq cikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcmVmY291bnRfYWRkX25vdF96ZXJvKDEsIHIpOwox NDQ3NDogfQoxNDQ3NDogIyAyMjYgIi4vaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCByZWZjb3VudF9pbmMocmVmY291bnRfdCAqcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZWZjb3Vu dF9hZGQoMSwgcik7CjE0NDc0OiB9CjE0NDc0OiAjIDI1MSAiLi9pbmNsdWRlL2xpbnV4L3JlZmNv dW50LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgYm9v bCByZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIpCjE0NDc0OiB7CjE0 NDc0OiAgaW50IG9sZCA9IGF0b21pY19mZXRjaF9zdWIoaSwgJnItPnJlZnMpOwoxNDQ3NDogCjE0 NDc0OiAgaWYgKG9sZCA9PSBpKSB7CjE0NDc0OiAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6 IDoibWVtb3J5Iik7CjE0NDc0OiAgIHJldHVybiB0cnVlOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3 NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKG9sZCA8IDAgfHwgb2xkIC0gaSA8IDApLCAwKSkK MTQ0NzQ6ICAgcmVmY291bnRfd2Fybl9zYXR1cmF0ZShyLCBSRUZDT1VOVF9TVUJfVUFGKTsKMTQ0 NzQ6IAoxNDQ3NDogIHJldHVybiBmYWxzZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjc5ICIuL2luY2x1 ZGUvbGludXgvcmVmY291bnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBib29sIHJlZmNvdW50X2RlY19hbmRfdGVzdChyZWZjb3VudF90ICpyKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiByZWZjb3VudF9zdWJfYW5kX3Rlc3QoMSwgcik7CjE0NDc0OiB9 CjE0NDc0OiAjIDI5NCAiLi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJl ZmNvdW50X2RlYyhyZWZjb3VudF90ICpyKQoxNDQ3NDogewoxNDQ3NDogIGlmIChfX2J1aWx0aW5f ZXhwZWN0KCEhKGF0b21pY19mZXRjaF9zdWIoMSwgJnItPnJlZnMpIDw9IDEpLCAwKSkKMTQ0NzQ6 ICAgcmVmY291bnRfd2Fybl9zYXR1cmF0ZShyLCBSRUZDT1VOVF9ERUNfTEVBSyk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSkgYm9vbCByZWZjb3VudF9kZWNfaWZfb25lKHJlZmNvdW50X3QgKnIpOwoxNDQ3NDogZXh0 ZXJuIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBib29sIHJlZmNvdW50 X2RlY19ub3Rfb25lKHJlZmNvdW50X3QgKnIpOwoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18o KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBib29sIHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9j ayhyZWZjb3VudF90ICpyLCBzdHJ1Y3QgbXV0ZXggKmxvY2spOwoxNDQ3NDogZXh0ZXJuIF9fYXR0 cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBib29sIHJlZmNvdW50X2RlY19hbmRf bG9jayhyZWZjb3VudF90ICpyLCBzcGlubG9ja190ICpsb2NrKTsKMTQ0NzQ6IGV4dGVybiBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgYm9vbCByZWZjb3VudF9kZWNfYW5k X2xvY2tfaXJxc2F2ZShyZWZjb3VudF90ICpyLAoxNDQ3NDogICAgICAgICAgICAgIHNwaW5sb2Nr X3QgKmxvY2ssCjE0NDc0OiAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqZmxhZ3MpOwoxNDQ3 NDogIyAxOCAiLi9pbmNsdWRlL2xpbnV4L2tyZWYuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg a3JlZiB7CjE0NDc0OiAgcmVmY291bnRfdCByZWZjb3VudDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg a3JlZl9pbml0KHN0cnVjdCBrcmVmICprcmVmKQoxNDQ3NDogewoxNDQ3NDogIHJlZmNvdW50X3Nl dCgma3JlZi0+cmVmY291bnQsIDEpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBp bnQga3JlZl9yZWFkKGNvbnN0IHN0cnVjdCBrcmVmICprcmVmKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiByZWZjb3VudF9yZWFkKCZrcmVmLT5yZWZjb3VudCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrcmVmX2dldChzdHJ1Y3Qg a3JlZiAqa3JlZikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZWZjb3VudF9pbmMoJmtyZWYtPnJlZmNvdW50 KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjIgIi4vaW5jbHVkZS9saW51eC9rcmVmLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQga3JlZl9wdXQoc3RydWN0IGtyZWYgKmtyZWYsIHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3Qga3Jl ZiAqa3JlZikpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdCgma3Jl Zi0+cmVmY291bnQpKSB7CjE0NDc0OiAgIHJlbGVhc2Uoa3JlZik7CjE0NDc0OiAgIHJldHVybiAx OwoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50 IGtyZWZfcHV0X211dGV4KHN0cnVjdCBrcmVmICprcmVmLAoxNDQ3NDogICAgICB2b2lkICgqcmVs ZWFzZSkoc3RydWN0IGtyZWYgKmtyZWYpLAoxNDQ3NDogICAgICBzdHJ1Y3QgbXV0ZXggKmxvY2sp CjE0NDc0OiB7CjE0NDc0OiAgaWYgKHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9jaygma3JlZi0+ cmVmY291bnQsIGxvY2spKSB7CjE0NDc0OiAgIHJlbGVhc2Uoa3JlZik7CjE0NDc0OiAgIHJldHVy biAxOwoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IGtyZWZfcHV0X2xvY2soc3RydWN0IGtyZWYgKmtyZWYsCjE0NDc0OiAgICAgdm9pZCAoKnJl bGVhc2UpKHN0cnVjdCBrcmVmICprcmVmKSwKMTQ0NzQ6ICAgICBzcGlubG9ja190ICpsb2NrKQox NDQ3NDogewoxNDQ3NDogIGlmIChyZWZjb3VudF9kZWNfYW5kX2xvY2soJmtyZWYtPnJlZmNvdW50 LCBsb2NrKSkgewoxNDQ3NDogICByZWxlYXNlKGtyZWYpOwoxNDQ3NDogICByZXR1cm4gMTsKMTQ0 NzQ6ICB9CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAjIDEwOSAiLi9pbmNsdWRl L2xpbnV4L2tyZWYuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jl c3VsdF9fKSkga3JlZl9nZXRfdW5sZXNzX3plcm8oc3RydWN0IGtyZWYgKmtyZWYpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIHJlZmNvdW50X2luY19ub3RfemVybygma3JlZi0+cmVmY291bnQpOwox NDQ3NDogfQoxNDQ3NDogIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL29zX3R5cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgv c2xhYi5oIiAxCjE0NDc0OiAjIDE1ICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIgoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvbGludXgvZ2ZwLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvbW1kZWJ1Zy5oIiAxCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBw YWdlOwoxNDQ3NDogc3RydWN0IHZtX2FyZWFfc3RydWN0OwoxNDQ3NDogc3RydWN0IG1tX3N0cnVj dDsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZHVtcF9wYWdlKHN0cnVjdCBwYWdlICpwYWdl LCBjb25zdCBjaGFyICpyZWFzb24pOwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19kdW1wX3BhZ2Uoc3Ry dWN0IHBhZ2UgKnBhZ2UsIGNvbnN0IGNoYXIgKnJlYXNvbik7CjE0NDc0OiB2b2lkIGR1bXBfdm1h KGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKMTQ0NzQ6IHZvaWQgZHVtcF9tbShj b25zdCBzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CjE0NDc0OiAjIDYgIi4vaW5jbHVkZS9saW51eC9n ZnAuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiIDEKMTQ0NzQ6ICMg MTAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4 L3dhaXQuaCIgMQoxNDQ3NDogIyAxMiAiLi9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKMTQ0NzQ6ICMg MSAiLi9pbmNsdWRlL3VhcGkvbGludXgvd2FpdC5oIiAxCjE0NDc0OiAjIDEzICIuL2luY2x1ZGUv bGludXgvd2FpdC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHdhaXRfcXVldWVf ZW50cnkgd2FpdF9xdWV1ZV9lbnRyeV90OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIGludCAoKndh aXRfcXVldWVfZnVuY190KShzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnksIHVuc2ln bmVkIG1vZGUsIGludCBmbGFncywgdm9pZCAqa2V5KTsKMTQ0NzQ6IGludCBkZWZhdWx0X3dha2Vf ZnVuY3Rpb24oc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5LCB1bnNpZ25lZCBtb2Rl LCBpbnQgZmxhZ3MsIHZvaWQgKmtleSk7CjE0NDc0OiAjIDI3ICIuL2luY2x1ZGUvbGludXgvd2Fp dC5oIgoxNDQ3NDogc3RydWN0IHdhaXRfcXVldWVfZW50cnkgewoxNDQ3NDogIHVuc2lnbmVkIGlu dCBmbGFnczsKMTQ0NzQ6ICB2b2lkICpwcml2YXRlOwoxNDQ3NDogIHdhaXRfcXVldWVfZnVuY190 IGZ1bmM7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgewoxNDQ3NDogIHNwaW5sb2NrX3QgbG9jazsK MTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7CjE0NDc0OiB9OwoxNDQ3NDogdHlwZWRlZiBz dHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkIHdhaXRfcXVldWVfaGVhZF90OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgdGFza19zdHJ1Y3Q7CjE0NDc0OiAjIDYxICIuL2luY2x1ZGUvbGludXgvd2FpdC5oIgox NDQ3NDogZXh0ZXJuIHZvaWQgX19pbml0X3dhaXRxdWV1ZV9oZWFkKHN0cnVjdCB3YWl0X3F1ZXVl X2hlYWQgKndxX2hlYWQsIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAq KTsKMTQ0NzQ6ICMgNzkgIi4vaW5jbHVkZS9saW51eC93YWl0LmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGluaXRf d2FpdHF1ZXVlX2VudHJ5KHN0cnVjdCB3YWl0X3F1ZXVlX2VudHJ5ICp3cV9lbnRyeSwgc3RydWN0 IHRhc2tfc3RydWN0ICpwKQoxNDQ3NDogewoxNDQ3NDogIHdxX2VudHJ5LT5mbGFncyA9IDA7CjE0 NDc0OiAgd3FfZW50cnktPnByaXZhdGUgPSBwOwoxNDQ3NDogIHdxX2VudHJ5LT5mdW5jID0gZGVm YXVsdF93YWtlX2Z1bmN0aW9uOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBp bml0X3dhaXRxdWV1ZV9mdW5jX2VudHJ5KHN0cnVjdCB3YWl0X3F1ZXVlX2VudHJ5ICp3cV9lbnRy eSwgd2FpdF9xdWV1ZV9mdW5jX3QgZnVuYykKMTQ0NzQ6IHsKMTQ0NzQ6ICB3cV9lbnRyeS0+Zmxh Z3MgPSAwOwoxNDQ3NDogIHdxX2VudHJ5LT5wcml2YXRlID0gKCh2b2lkICopMCk7CjE0NDc0OiAg d3FfZW50cnktPmZ1bmMgPSBmdW5jOwoxNDQ3NDogfQoxNDQ3NDogIyAxMjQgIi4vaW5jbHVkZS9s aW51eC93YWl0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgd2FpdHF1ZXVlX2FjdGl2ZShzdHJ1Y3Qgd2FpdF9xdWV1 ZV9oZWFkICp3cV9oZWFkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhbGlzdF9lbXB0eSgmd3Ff aGVhZC0+aGVhZCk7CjE0NDc0OiB9CjE0NDc0OiAjIDEzNyAiLi9pbmNsdWRlL2xpbnV4L3dhaXQu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGJvb2wgd3FfaGFzX3NpbmdsZV9zbGVlcGVyKHN0cnVjdCB3YWl0X3F1ZXVlX2hl YWQgKndxX2hlYWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGxpc3RfaXNfc2luZ3VsYXIoJndx X2hlYWQtPmhlYWQpOwoxNDQ3NDogfQoxNDQ3NDogIyAxNTAgIi4vaW5jbHVkZS9saW51eC93YWl0 LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIHdxX2hhc19zbGVlcGVyKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndx X2hlYWQpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoImxvY2s7IGFkZGwgJDAsLTQoJSVy c3ApIiA6OjogIm1lbW9yeSIsICJjYyIpOwoxNDQ3NDogIHJldHVybiB3YWl0cXVldWVfYWN0aXZl KHdxX2hlYWQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBhZGRfd2FpdF9x dWV1ZShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qgd2FpdF9xdWV1ZV9l bnRyeSAqd3FfZW50cnkpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWVfZXhjbHVz aXZlKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHN0cnVjdCB3YWl0X3F1ZXVlX2Vu dHJ5ICp3cV9lbnRyeSk7CjE0NDc0OiBleHRlcm4gdm9pZCByZW1vdmVfd2FpdF9xdWV1ZShzdHJ1 Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3Ff ZW50cnkpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fYWRkX3dhaXRfcXVldWUoc3RydWN0IHdhaXRf cXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5KQox NDQ3NDogewoxNDQ3NDogIGxpc3RfYWRkKCZ3cV9lbnRyeS0+ZW50cnksICZ3cV9oZWFkLT5oZWFk KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAox NDQ3NDogX19hZGRfd2FpdF9xdWV1ZV9leGNsdXNpdmUoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAq d3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5KQoxNDQ3NDogewoxNDQ3 NDogIHdxX2VudHJ5LT5mbGFncyB8PSAweDAxOwoxNDQ3NDogIF9fYWRkX3dhaXRfcXVldWUod3Ff aGVhZCwgd3FfZW50cnkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fYWRkX3dhaXRf cXVldWVfZW50cnlfdGFpbChzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qg d2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgbGlzdF9hZGRfdGFp bCgmd3FfZW50cnktPmVudHJ5LCAmd3FfaGVhZC0+aGVhZCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQKMTQ0NzQ6IF9fYWRkX3dhaXRfcXVldWVfZW50cnlfdGFpbF9leGNsdXNpdmUoc3Ry dWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndx X2VudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHdxX2VudHJ5LT5mbGFncyB8PSAweDAxOwoxNDQ3NDog IF9fYWRkX3dhaXRfcXVldWVfZW50cnlfdGFpbCh3cV9oZWFkLCB3cV9lbnRyeSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6IF9fcmVtb3ZlX3dhaXRfcXVldWUoc3RydWN0IHdh aXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5 KQoxNDQ3NDogewoxNDQ3NDogIGxpc3RfZGVsKCZ3cV9lbnRyeS0+ZW50cnkpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiB2b2lkIF9fd2FrZV91cChzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9o ZWFkLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yLCB2b2lkICprZXkpOwoxNDQ3NDogdm9pZCBf X3dha2VfdXBfbG9ja2VkX2tleShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCB1bnNp Z25lZCBpbnQgbW9kZSwgdm9pZCAqa2V5KTsKMTQ0NzQ6IHZvaWQgX193YWtlX3VwX2xvY2tlZF9r ZXlfYm9va21hcmsoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwKMTQ0NzQ6ICAgdW5z aWduZWQgaW50IG1vZGUsIHZvaWQgKmtleSwgd2FpdF9xdWV1ZV9lbnRyeV90ICpib29rbWFyayk7 CjE0NDc0OiB2b2lkIF9fd2FrZV91cF9zeW5jX2tleShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3 cV9oZWFkLCB1bnNpZ25lZCBpbnQgbW9kZSwgdm9pZCAqa2V5KTsKMTQ0NzQ6IHZvaWQgX193YWtl X3VwX2xvY2tlZF9zeW5jX2tleShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCB1bnNp Z25lZCBpbnQgbW9kZSwgdm9pZCAqa2V5KTsKMTQ0NzQ6IHZvaWQgX193YWtlX3VwX2xvY2tlZChz dHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5y KTsKMTQ0NzQ6IHZvaWQgX193YWtlX3VwX3N5bmMoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3Ff aGVhZCwgdW5zaWduZWQgaW50IG1vZGUpOwoxNDQ3NDogIyAyNDggIi4vaW5jbHVkZS9saW51eC93 YWl0LmgiCjE0NDc0OiBleHRlcm4gdm9pZCBpbml0X3dhaXRfZW50cnkoc3RydWN0IHdhaXRfcXVl dWVfZW50cnkgKndxX2VudHJ5LCBpbnQgZmxhZ3MpOwoxNDQ3NDogIyA3MzIgIi4vaW5jbHVkZS9s aW51eC93YWl0LmgiCjE0NDc0OiBleHRlcm4gaW50IGRvX3dhaXRfaW50cih3YWl0X3F1ZXVlX2hl YWRfdCAqLCB3YWl0X3F1ZXVlX2VudHJ5X3QgKik7CjE0NDc0OiBleHRlcm4gaW50IGRvX3dhaXRf aW50cl9pcnEod2FpdF9xdWV1ZV9oZWFkX3QgKiwgd2FpdF9xdWV1ZV9lbnRyeV90ICopOwoxNDQ3 NDogIyAxMTI2ICIuL2luY2x1ZGUvbGludXgvd2FpdC5oIgoxNDQ3NDogdm9pZCBwcmVwYXJlX3Rv X3dhaXQoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVf ZW50cnkgKndxX2VudHJ5LCBpbnQgc3RhdGUpOwoxNDQ3NDogdm9pZCBwcmVwYXJlX3RvX3dhaXRf ZXhjbHVzaXZlKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHN0cnVjdCB3YWl0X3F1 ZXVlX2VudHJ5ICp3cV9lbnRyeSwgaW50IHN0YXRlKTsKMTQ0NzQ6IGxvbmcgcHJlcGFyZV90b193 YWl0X2V2ZW50KHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHN0cnVjdCB3YWl0X3F1 ZXVlX2VudHJ5ICp3cV9lbnRyeSwgaW50IHN0YXRlKTsKMTQ0NzQ6IHZvaWQgZmluaXNoX3dhaXQo c3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVfZW50cnkg KndxX2VudHJ5KTsKMTQ0NzQ6IGxvbmcgd2FpdF93b2tlbihzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRy eSAqd3FfZW50cnksIHVuc2lnbmVkIG1vZGUsIGxvbmcgdGltZW91dCk7CjE0NDc0OiBpbnQgd29r ZW5fd2FrZV9mdW5jdGlvbihzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnksIHVuc2ln bmVkIG1vZGUsIGludCBzeW5jLCB2b2lkICprZXkpOwoxNDQ3NDogaW50IGF1dG9yZW1vdmVfd2Fr ZV9mdW5jdGlvbihzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnksIHVuc2lnbmVkIG1v ZGUsIGludCBzeW5jLCB2b2lkICprZXkpOwoxNDQ3NDogIyAxMSAiLi9pbmNsdWRlL2xpbnV4L21t em9uZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9s aW51eC9udW1hLmgiIDEKMTQ0NzQ6ICMgMTUgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgox NDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiIDEKMTQ0NzQ6ICMg NDggIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBzZXFj b3VudCB7CjE0NDc0OiAgdW5zaWduZWQgc2VxdWVuY2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiB9IHNlcWNvdW50X3Q7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19zZXFjb3VudF9pbml0 KHNlcWNvdW50X3QgKnMsIGNvbnN0IGNoYXIgKm5hbWUsCjE0NDc0OiAgICAgICAgc3RydWN0IGxv Y2tfY2xhc3Nfa2V5ICprZXkpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgZG8geyAodm9pZCkobmFtZSk7ICh2b2lkKShrZXkpOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBz LT5zZXF1ZW5jZSA9IDA7CjE0NDc0OiB9CjE0NDc0OiAjIDEwOCAiLi9pbmNsdWRlL2xpbnV4L3Nl cWxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIF9fcmVhZF9zZXFjb3VudF9iZWdpbihjb25zdCBzZXFj b3VudF90ICpzKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIHJldDsKMTQ0NzQ6IAoxNDQ3NDog cmVwZWF0OgoxNDQ3NDogIHJldCA9ICh7IHVuaW9uIHsgdHlwZW9mKHMtPnNlcXVlbmNlKSBfX3Zh bDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKHMtPnNlcXVl bmNlKSwgX191Ll9fYywgc2l6ZW9mKHMtPnNlcXVlbmNlKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6 ZV9ub2NoZWNrKCYocy0+c2VxdWVuY2UpLCBfX3UuX19jLCBzaXplb2Yocy0+c2VxdWVuY2UpKTsg ZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICBpZiAoX19idWlsdGluX2V4 cGVjdCghIShyZXQgJiAxKSwgMCkpIHsKMTQ0NzQ6ICAgY3B1X3JlbGF4KCk7CjE0NDc0OiAgIGdv dG8gcmVwZWF0OwoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gcmV0OwoxNDQ3NDogfQoxNDQ3NDog IyAxMzAgIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCByYXdfcmVh ZF9zZXFjb3VudChjb25zdCBzZXFjb3VudF90ICpzKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVk IHJldCA9ICh7IHVuaW9uIHsgdHlwZW9mKHMtPnNlcXVlbmNlKSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKHMtPnNlcXVlbmNlKSwgX191Ll9fYywg c2l6ZW9mKHMtPnNlcXVlbmNlKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYocy0+ c2VxdWVuY2UpLCBfX3UuX19jLCBzaXplb2Yocy0+c2VxdWVuY2UpKTsgZG8geyB9IHdoaWxlICgw KTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1l bW9yeSIpOwoxNDQ3NDogIHJldHVybiByZXQ7CjE0NDc0OiB9CjE0NDc0OiAjIDE0NiAiLi9pbmNs dWRlL2xpbnV4L3NlcWxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIHJhd19yZWFkX3NlcWNvdW50X2Jl Z2luKGNvbnN0IHNlcWNvdW50X3QgKnMpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgcmV0ID0g X19yZWFkX3NlcWNvdW50X2JlZ2luKHMpOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIi OiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgcmV0dXJuIHJldDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTYy ICIuL2luY2x1ZGUvbGludXgvc2VxbG9jay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgcmVhZF9zZXFjb3Vu dF9iZWdpbihjb25zdCBzZXFjb3VudF90ICpzKQoxNDQ3NDogewoxNDQ3NDogIDsKMTQ0NzQ6ICBy ZXR1cm4gcmF3X3JlYWRfc2VxY291bnRfYmVnaW4ocyk7CjE0NDc0OiB9CjE0NDc0OiAjIDE4MiAi Li9pbmNsdWRlL2xpbnV4L3NlcWxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIHJhd19zZXFjb3VudF9i ZWdpbihjb25zdCBzZXFjb3VudF90ICpzKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIHJldCA9 ICh7IHVuaW9uIHsgdHlwZW9mKHMtPnNlcXVlbmNlKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191 OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKHMtPnNlcXVlbmNlKSwgX191Ll9fYywgc2l6ZW9m KHMtPnNlcXVlbmNlKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYocy0+c2VxdWVu Y2UpLCBfX3UuX19jLCBzaXplb2Yocy0+c2VxdWVuY2UpKTsgZG8geyB9IHdoaWxlICgwKTsgX191 Ll9fdmFsOyB9KTsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OwoxNDQ3NDogIHJldHVybiByZXQgJiB+MTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjAzICIuL2luY2x1 ZGUvbGludXgvc2VxbG9jay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fcmVhZF9zZXFjb3VudF9yZXRyeShjb25z dCBzZXFjb3VudF90ICpzLCB1bnNpZ25lZCBzdGFydCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g X19idWlsdGluX2V4cGVjdCghIShzLT5zZXF1ZW5jZSAhPSBzdGFydCksIDApOwoxNDQ3NDogfQox NDQ3NDogIyAyMTggIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmVhZF9z ZXFjb3VudF9yZXRyeShjb25zdCBzZXFjb3VudF90ICpzLCB1bnNpZ25lZCBzdGFydCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDog IHJldHVybiBfX3JlYWRfc2VxY291bnRfcmV0cnkocywgc3RhcnQpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByYXdfd3JpdGVfc2VxY291bnRfYmVnaW4oc2Vx Y291bnRfdCAqcykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzLT5zZXF1ZW5jZSsrOwoxNDQ3NDogIF9fYXNt X18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgcmF3X3dyaXRlX3NlcWNvdW50X2VuZChzZXFjb3VudF90ICpzKQoxNDQ3NDogewoxNDQ3 NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgcy0+c2Vx dWVuY2UrKzsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjcyICIuL2luY2x1ZGUvbGludXgvc2VxbG9jay5o IgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCByYXdfd3JpdGVfc2VxY291bnRfYmFycmllcihzZXFjb3VudF90ICpzKQox NDQ3NDogewoxNDQ3NDogIHMtPnNlcXVlbmNlKys7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxl X18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6ICBzLT5zZXF1ZW5jZSsrOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgcmF3X3JlYWRfc2VxY291bnRfbGF0Y2goc2VxY291bnRfdCAqcykKMTQ0 NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIGludCBzZXEgPSAoeyB1bmlvbiB7IHR5cGVvZihzLT5zZXF1 ZW5jZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUo JihzLT5zZXF1ZW5jZSksIF9fdS5fX2MsIHNpemVvZihzLT5zZXF1ZW5jZSkpOyBlbHNlIF9fcmVh ZF9vbmNlX3NpemVfbm9jaGVjaygmKHMtPnNlcXVlbmNlKSwgX191Ll9fYywgc2l6ZW9mKHMtPnNl cXVlbmNlKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiAgcmV0dXJu IHNlcTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzYzICIuL2luY2x1ZGUvbGludXgvc2VxbG9jay5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCByYXdfd3JpdGVfc2VxY291bnRfbGF0Y2goc2VxY291bnRfdCAqcykKMTQ0NzQ6 IHsKMTQ0NzQ6ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwox NDQ3NDogICAgICAgIHMtPnNlcXVlbmNlKys7CjE0NDc0OiAgICAgICAgX19hc21fXyBfX3ZvbGF0 aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX3NlcWNvdW50X2JlZ2luX25lc3RlZChz ZXFjb3VudF90ICpzLCBpbnQgc3ViY2xhc3MpCjE0NDc0OiB7CjE0NDc0OiAgcmF3X3dyaXRlX3Nl cWNvdW50X2JlZ2luKHMpOwoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgd3JpdGVfc2VxY291bnRfYmVnaW4oc2VxY291bnRfdCAqcykKMTQ0NzQ6 IHsKMTQ0NzQ6ICB3cml0ZV9zZXFjb3VudF9iZWdpbl9uZXN0ZWQocywgMCk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgd3JpdGVfc2VxY291bnRfZW5kKHNlcWNvdW50X3QgKnMpCjE0NDc0 OiB7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICByYXdfd3JpdGVfc2VxY291bnRf ZW5kKHMpOwoxNDQ3NDogfQoxNDQ3NDogIyAzOTggIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHdyaXRlX3NlcWNvdW50X2ludmFsaWRhdGUoc2VxY291bnRfdCAqcykKMTQ0 NzQ6IHsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3 NDogIHMtPnNlcXVlbmNlKz0yOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVj dCB7CjE0NDc0OiAgc3RydWN0IHNlcWNvdW50IHNlcWNvdW50OwoxNDQ3NDogIHNwaW5sb2NrX3Qg bG9jazsKMTQ0NzQ6IH0gc2VxbG9ja190OwoxNDQ3NDogIyA0MzEgIi4vaW5jbHVkZS9saW51eC9z ZXFsb2NrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCByZWFkX3NlcWJlZ2luKGNvbnN0IHNlcWxvY2tfdCAq c2wpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJlYWRfc2VxY291bnRfYmVnaW4oJnNsLT5zZXFj b3VudCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIHJlYWRfc2VxcmV0cnkoY29u c3Qgc2VxbG9ja190ICpzbCwgdW5zaWduZWQgc3RhcnQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IHJlYWRfc2VxY291bnRfcmV0cnkoJnNsLT5zZXFjb3VudCwgc3RhcnQpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3 cml0ZV9zZXFsb2NrKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0NDc0OiAgc3Bpbl9sb2NrKCZz bC0+bG9jayk7CjE0NDc0OiAgd3JpdGVfc2VxY291bnRfYmVnaW4oJnNsLT5zZXFjb3VudCk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgd3JpdGVfc2VxdW5sb2NrKHNlcWxvY2tfdCAqc2wp CjE0NDc0OiB7CjE0NDc0OiAgd3JpdGVfc2VxY291bnRfZW5kKCZzbC0+c2VxY291bnQpOwoxNDQ3 NDogIHNwaW5fdW5sb2NrKCZzbC0+bG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg d3JpdGVfc2VxbG9ja19iaChzZXFsb2NrX3QgKnNsKQoxNDQ3NDogewoxNDQ3NDogIHNwaW5fbG9j a19iaCgmc2wtPmxvY2spOwoxNDQ3NDogIHdyaXRlX3NlcWNvdW50X2JlZ2luKCZzbC0+c2VxY291 bnQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX3NlcXVubG9ja19iaChzZXFs b2NrX3QgKnNsKQoxNDQ3NDogewoxNDQ3NDogIHdyaXRlX3NlcWNvdW50X2VuZCgmc2wtPnNlcWNv dW50KTsKMTQ0NzQ6ICBzcGluX3VubG9ja19iaCgmc2wtPmxvY2spOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHdyaXRlX3NlcWxvY2tfaXJxKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0 NDc0OiAgc3Bpbl9sb2NrX2lycSgmc2wtPmxvY2spOwoxNDQ3NDogIHdyaXRlX3NlcWNvdW50X2Jl Z2luKCZzbC0+c2VxY291bnQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX3Nl cXVubG9ja19pcnEoc2VxbG9ja190ICpzbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB3cml0ZV9zZXFjb3Vu dF9lbmQoJnNsLT5zZXFjb3VudCk7CjE0NDc0OiAgc3Bpbl91bmxvY2tfaXJxKCZzbC0+bG9jayk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgX193cml0ZV9zZXFsb2NrX2ly cXNhdmUoc2VxbG9ja190ICpzbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGZsYWdz OwoxNDQ3NDogCjE0NDc0OiAgZG8geyBkbyB7ICh7IHVuc2lnbmVkIGxvbmcgX19kdW1teTsgdHlw ZW9mKGZsYWdzKSBfX2R1bW15MjsgKHZvaWQpKCZfX2R1bW15ID09ICZfX2R1bW15Mik7IDE7IH0p OyBmbGFncyA9IF9yYXdfc3Bpbl9sb2NrX2lycXNhdmUoc3BpbmxvY2tfY2hlY2soJnNsLT5sb2Nr KSk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICB3cml0ZV9zZXFjb3VudF9iZWdp bigmc2wtPnNlcWNvdW50KTsKMTQ0NzQ6ICByZXR1cm4gZmxhZ3M7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6IHdyaXRlX3NlcXVubG9j a19pcnFyZXN0b3JlKHNlcWxvY2tfdCAqc2wsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCjE0NDc0OiB7 CjE0NDc0OiAgd3JpdGVfc2VxY291bnRfZW5kKCZzbC0+c2VxY291bnQpOwoxNDQ3NDogIHNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnNsLT5sb2NrLCBmbGFncyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlYWRfc2Vx bG9ja19leGNsKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0NDc0OiAgc3Bpbl9sb2NrKCZzbC0+ bG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmVhZF9zZXF1bmxvY2tfZXhjbChz ZXFsb2NrX3QgKnNsKQoxNDQ3NDogewoxNDQ3NDogIHNwaW5fdW5sb2NrKCZzbC0+bG9jayk7CjE0 NDc0OiB9CjE0NDc0OiAjIDUyNiAiLi9pbmNsdWRlL2xpbnV4L3NlcWxvY2suaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgcmVhZF9zZXFiZWdpbl9vcl9sb2NrKHNlcWxvY2tfdCAqbG9jaywgaW50ICpzZXEpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKCEoKnNlcSAmIDEpKQoxNDQ3NDogICAqc2VxID0gcmVhZF9zZXFiZWdp bihsb2NrKTsKMTQ0NzQ6ICBlbHNlCjE0NDc0OiAgIHJlYWRfc2VxbG9ja19leGNsKGxvY2spOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgbmVlZF9zZXFyZXRyeShzZXFsb2NrX3QgKmxvY2ss IGludCBzZXEpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICEoc2VxICYgMSkgJiYgcmVhZF9zZXFy ZXRyeShsb2NrLCBzZXEpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRvbmVfc2VxcmV0 cnkoc2VxbG9ja190ICpsb2NrLCBpbnQgc2VxKQoxNDQ3NDogewoxNDQ3NDogIGlmIChzZXEgJiAx KQoxNDQ3NDogICByZWFkX3NlcXVubG9ja19leGNsKGxvY2spOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIHJlYWRfc2VxbG9ja19leGNsX2JoKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0 NDc0OiAgc3Bpbl9sb2NrX2JoKCZzbC0+bG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgcmVhZF9zZXF1bmxvY2tfZXhjbF9iaChzZXFsb2NrX3QgKnNsKQoxNDQ3NDogewoxNDQ3NDog IHNwaW5fdW5sb2NrX2JoKCZzbC0+bG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg cmVhZF9zZXFsb2NrX2V4Y2xfaXJxKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0NDc0OiAgc3Bp bl9sb2NrX2lycSgmc2wtPmxvY2spOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlYWRf c2VxdW5sb2NrX2V4Y2xfaXJxKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0NDc0OiAgc3Bpbl91 bmxvY2tfaXJxKCZzbC0+bG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxv bmcgX19yZWFkX3NlcWxvY2tfZXhjbF9pcnFzYXZlKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0 NDc0OiAgdW5zaWduZWQgbG9uZyBmbGFnczsKMTQ0NzQ6IAoxNDQ3NDogIGRvIHsgZG8geyAoeyB1 bnNpZ25lZCBsb25nIF9fZHVtbXk7IHR5cGVvZihmbGFncykgX19kdW1teTI7ICh2b2lkKSgmX19k dW1teSA9PSAmX19kdW1teTIpOyAxOyB9KTsgZmxhZ3MgPSBfcmF3X3NwaW5fbG9ja19pcnFzYXZl KHNwaW5sb2NrX2NoZWNrKCZzbC0+bG9jaykpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0 NDc0OiAgcmV0dXJuIGZsYWdzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiByZWFkX3NlcXVubG9ja19leGNsX2lycXJlc3RvcmUoc2Vx bG9ja190ICpzbCwgdW5zaWduZWQgbG9uZyBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZzbC0+bG9jaywgZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBsb25nCjE0NDc0OiByZWFkX3NlcWJlZ2luX29yX2xvY2tfaXJxc2F2ZShzZXFs b2NrX3QgKmxvY2ssIGludCAqc2VxKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxh Z3MgPSAwOwoxNDQ3NDogCjE0NDc0OiAgaWYgKCEoKnNlcSAmIDEpKQoxNDQ3NDogICAqc2VxID0g cmVhZF9zZXFiZWdpbihsb2NrKTsKMTQ0NzQ6ICBlbHNlCjE0NDc0OiAgIGRvIHsgZmxhZ3MgPSBf X3JlYWRfc2VxbG9ja19leGNsX2lycXNhdmUobG9jayk7IH0gd2hpbGUgKDApOwoxNDQ3NDogCjE0 NDc0OiAgcmV0dXJuIGZsYWdzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBk b25lX3NlcXJldHJ5X2lycXJlc3RvcmUoc2VxbG9ja190ICpsb2NrLCBpbnQgc2VxLCB1bnNpZ25l ZCBsb25nIGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIGlmIChzZXEgJiAxKQoxNDQ3NDogICByZWFk X3NlcXVubG9ja19leGNsX2lycXJlc3RvcmUobG9jaywgZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDog IyAxNyAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9s aW51eC9ub2RlbWFzay5oIiAxCjE0NDc0OiAjIDk4ICIuL2luY2x1ZGUvbGludXgvbm9kZW1hc2su aCIKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBiaXRzWygoKCgxIDw8IDAp KSArICgoc2l6ZW9mKGxvbmcpICogOCkpIC0gMSkgLyAoKHNpemVvZihsb25nKSAqIDgpKSldOyB9 IG5vZGVtYXNrX3Q7CjE0NDc0OiBleHRlcm4gbm9kZW1hc2tfdCBfdW51c2VkX25vZGVtYXNrX2Fy Z187CjE0NDc0OiAjIDEwOSAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNp Z25lZCBpbnQgX19ub2RlbWFza19wcl9udW1ub2Rlcyhjb25zdCBub2RlbWFza190ICptKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBtID8gKDEgPDwgMCkgOiAwOwoxNDQ3NDogfQoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY29u c3QgdW5zaWduZWQgbG9uZyAqX19ub2RlbWFza19wcl9iaXRzKGNvbnN0IG5vZGVtYXNrX3QgKm0p CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG0gPyBtLT5iaXRzIDogKCh2b2lkICopMCk7CjE0NDc0 OiB9CjE0NDc0OiAjIDEyOCAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19ub2RlX3NldChpbnQgbm9kZSwg dm9sYXRpbGUgbm9kZW1hc2tfdCAqZHN0cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzZXRfYml0KG5vZGUs IGRzdHAtPmJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19ub2Rl X2NsZWFyKGludCBub2RlLCB2b2xhdGlsZSBub2RlbWFza190ICpkc3RwKQoxNDQ3NDogewoxNDQ3 NDogIGNsZWFyX2JpdChub2RlLCBkc3RwLT5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIF9fbm9kZXNfc2V0YWxsKG5vZGVtYXNrX3QgKmRzdHAsIHVuc2lnbmVkIGlu dCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBfZmlsbChkc3RwLT5iaXRzLCBuYml0cyk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX25vZGVzX2NsZWFyKG5vZGVt YXNrX3QgKmRzdHAsIHVuc2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBf emVybyhkc3RwLT5iaXRzLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19ub2RlX3Rlc3RfYW5kX3NldChp bnQgbm9kZSwgbm9kZW1hc2tfdCAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGVzdF9h bmRfc2V0X2JpdChub2RlLCBhZGRyLT5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgX19ub2Rlc19hbmQobm9kZW1hc2tfdCAqZHN0cCwgY29uc3Qgbm9k ZW1hc2tfdCAqc3JjMXAsCjE0NDc0OiAgICAgIGNvbnN0IG5vZGVtYXNrX3QgKnNyYzJwLCB1bnNp Z25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgYml0bWFwX2FuZChkc3RwLT5iaXRzLCBz cmMxcC0+Yml0cywgc3JjMnAtPmJpdHMsIG5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgX19ub2Rlc19vcihub2RlbWFza190ICpkc3RwLCBjb25zdCBu b2RlbWFza190ICpzcmMxcCwKMTQ0NzQ6ICAgICAgY29uc3Qgbm9kZW1hc2tfdCAqc3JjMnAsIHVu c2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBfb3IoZHN0cC0+Yml0cywg c3JjMXAtPmJpdHMsIHNyYzJwLT5iaXRzLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbm9kZXNfeG9yKG5vZGVtYXNrX3QgKmRzdHAsIGNvbnN0 IG5vZGVtYXNrX3QgKnNyYzFwLAoxNDQ3NDogICAgICBjb25zdCBub2RlbWFza190ICpzcmMycCwg dW5zaWduZWQgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDogIGJpdG1hcF94b3IoZHN0cC0+Yml0 cywgc3JjMXAtPmJpdHMsIHNyYzJwLT5iaXRzLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbm9kZXNfYW5kbm90KG5vZGVtYXNrX3QgKmRzdHAs IGNvbnN0IG5vZGVtYXNrX3QgKnNyYzFwLAoxNDQ3NDogICAgICBjb25zdCBub2RlbWFza190ICpz cmMycCwgdW5zaWduZWQgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDogIGJpdG1hcF9hbmRub3Qo ZHN0cC0+Yml0cywgc3JjMXAtPmJpdHMsIHNyYzJwLT5iaXRzLCBuYml0cyk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbm9kZXNfY29tcGxlbWVudChub2Rl bWFza190ICpkc3RwLAoxNDQ3NDogICAgICBjb25zdCBub2RlbWFza190ICpzcmNwLCB1bnNpZ25l ZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgYml0bWFwX2NvbXBsZW1lbnQoZHN0cC0+Yml0 cywgc3JjcC0+Yml0cywgbmJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgaW50IF9fbm9kZXNfZXF1YWwoY29uc3Qgbm9kZW1hc2tfdCAqc3JjMXAsCjE0NDc0OiAg ICAgIGNvbnN0IG5vZGVtYXNrX3QgKnNyYzJwLCB1bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIGJpdG1hcF9lcXVhbChzcmMxcC0+Yml0cywgc3JjMnAtPmJpdHMsIG5i aXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX25vZGVz X2ludGVyc2VjdHMoY29uc3Qgbm9kZW1hc2tfdCAqc3JjMXAsCjE0NDc0OiAgICAgIGNvbnN0IG5v ZGVtYXNrX3QgKnNyYzJwLCB1bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGJpdG1hcF9pbnRlcnNlY3RzKHNyYzFwLT5iaXRzLCBzcmMycC0+Yml0cywgbmJpdHMpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbm9kZXNfc3Vic2V0 KGNvbnN0IG5vZGVtYXNrX3QgKnNyYzFwLAoxNDQ3NDogICAgICBjb25zdCBub2RlbWFza190ICpz cmMycCwgdW5zaWduZWQgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBiaXRtYXBf c3Vic2V0KHNyYzFwLT5iaXRzLCBzcmMycC0+Yml0cywgbmJpdHMpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBfX25vZGVzX2VtcHR5KGNvbnN0IG5vZGVtYXNrX3QgKnNyY3As IHVuc2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYml0bWFwX2VtcHR5 KHNyY3AtPmJpdHMsIG5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg X19ub2Rlc19mdWxsKGNvbnN0IG5vZGVtYXNrX3QgKnNyY3AsIHVuc2lnbmVkIGludCBuYml0cykK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYml0bWFwX2Z1bGwoc3JjcC0+Yml0cywgbmJpdHMpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX25vZGVzX3dlaWdodChjb25zdCBu b2RlbWFza190ICpzcmNwLCB1bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGJpdG1hcF93ZWlnaHQoc3JjcC0+Yml0cywgbmJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX25vZGVzX3NoaWZ0X3JpZ2h0KG5vZGVtYXNrX3Qg KmRzdHAsCjE0NDc0OiAgICAgIGNvbnN0IG5vZGVtYXNrX3QgKnNyY3AsIGludCBuLCBpbnQgbmJp dHMpCjE0NDc0OiB7CjE0NDc0OiAgYml0bWFwX3NoaWZ0X3JpZ2h0KGRzdHAtPmJpdHMsIHNyY3At PmJpdHMsIG4sIG5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgX19ub2Rlc19zaGlmdF9sZWZ0KG5vZGVtYXNrX3QgKmRzdHAsCjE0NDc0OiAgICAgIGNv bnN0IG5vZGVtYXNrX3QgKnNyY3AsIGludCBuLCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAg Yml0bWFwX3NoaWZ0X2xlZnQoZHN0cC0+Yml0cywgc3JjcC0+Yml0cywgbiwgbmJpdHMpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBf X2ZpcnN0X25vZGUoY29uc3Qgbm9kZW1hc2tfdCAqc3JjcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gX19idWlsdGluX2Nob29zZV9leHByKCgoISEoc2l6ZW9mKCh0eXBlb2YoKGludCkoKDEgPDwg MCkpKSAqKTEgPT0gKHR5cGVvZigoaW50KShmaW5kX2ZpcnN0X2JpdChzcmNwLT5iaXRzLCAoMSA8 PCAwKSkpKSAqKTEpKSkgJiYgKChzaXplb2YoaW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lkICop KChsb25nKSgoaW50KSgoMSA8PCAwKSkpICogMGwpKSA6IChpbnQgKik4KSkpICYmIChzaXplb2Yo aW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lkICopKChsb25nKSgoaW50KShmaW5kX2ZpcnN0X2Jp dChzcmNwLT5iaXRzLCAoMSA8PCAwKSkpKSAqIDBsKSkgOiAoaW50ICopOCkpKSkpLCAoKChpbnQp KCgxIDw8IDApKSkgPCAoKGludCkoZmluZF9maXJzdF9iaXQoc3JjcC0+Yml0cywgKDEgPDwgMCkp KSkgPyAoKGludCkoKDEgPDwgMCkpKSA6ICgoaW50KShmaW5kX2ZpcnN0X2JpdChzcmNwLT5iaXRz LCAoMSA8PCAwKSkpKSksICh7IHR5cGVvZigoaW50KSgoMSA8PCAwKSkpIF9fVU5JUVVFX0lEX19f eDIgPSAoKGludCkoKDEgPDwgMCkpKTsgdHlwZW9mKChpbnQpKGZpbmRfZmlyc3RfYml0KHNyY3At PmJpdHMsICgxIDw8IDApKSkpIF9fVU5JUVVFX0lEX19feTMgPSAoKGludCkoZmluZF9maXJzdF9i aXQoc3JjcC0+Yml0cywgKDEgPDwgMCkpKSk7ICgoX19VTklRVUVfSURfX194MikgPCAoX19VTklR VUVfSURfX195MykgPyAoX19VTklRVUVfSURfX194MikgOiAoX19VTklRVUVfSURfX195MykpOyB9 KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbmV4dF9ub2RlKGludCBu LCBjb25zdCBub2RlbWFza190ICpzcmNwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2J1aWx0 aW5fY2hvb3NlX2V4cHIoKCghIShzaXplb2YoKHR5cGVvZigoaW50KSgoMSA8PCAwKSkpICopMSA9 PSAodHlwZW9mKChpbnQpKGZpbmRfbmV4dF9iaXQoc3JjcC0+Yml0cywgKDEgPDwgMCksIG4rMSkp KSAqKTEpKSkgJiYgKChzaXplb2YoaW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lkICopKChsb25n KSgoaW50KSgoMSA8PCAwKSkpICogMGwpKSA6IChpbnQgKik4KSkpICYmIChzaXplb2YoaW50KSA9 PSBzaXplb2YoKig4ID8gKCh2b2lkICopKChsb25nKSgoaW50KShmaW5kX25leHRfYml0KHNyY3At PmJpdHMsICgxIDw8IDApLCBuKzEpKSkgKiAwbCkpIDogKGludCAqKTgpKSkpKSwgKCgoaW50KSgo MSA8PCAwKSkpIDwgKChpbnQpKGZpbmRfbmV4dF9iaXQoc3JjcC0+Yml0cywgKDEgPDwgMCksIG4r MSkpKSA/ICgoaW50KSgoMSA8PCAwKSkpIDogKChpbnQpKGZpbmRfbmV4dF9iaXQoc3JjcC0+Yml0 cywgKDEgPDwgMCksIG4rMSkpKSksICh7IHR5cGVvZigoaW50KSgoMSA8PCAwKSkpIF9fVU5JUVVF X0lEX19feDQgPSAoKGludCkoKDEgPDwgMCkpKTsgdHlwZW9mKChpbnQpKGZpbmRfbmV4dF9iaXQo c3JjcC0+Yml0cywgKDEgPDwgMCksIG4rMSkpKSBfX1VOSVFVRV9JRF9fX3k1ID0gKChpbnQpKGZp bmRfbmV4dF9iaXQoc3JjcC0+Yml0cywgKDEgPDwgMCksIG4rMSkpKTsgKChfX1VOSVFVRV9JRF9f X3g0KSA8IChfX1VOSVFVRV9JRF9fX3k1KSA/IChfX1VOSVFVRV9JRF9fX3g0KSA6IChfX1VOSVFV RV9JRF9fX3k1KSk7IH0pKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGludCBfX25leHRfbm9kZV9pbihpbnQgbm9kZSwgY29u c3Qgbm9kZW1hc2tfdCAqc3JjcCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW5pdF9ub2RlbWFza19v Zl9ub2RlKG5vZGVtYXNrX3QgKm1hc2ssIGludCBub2RlKQoxNDQ3NDogewoxNDQ3NDogIF9fbm9k ZXNfY2xlYXIoJigqbWFzayksICgxIDw8IDApKTsKMTQ0NzQ6ICBfX25vZGVfc2V0KChub2RlKSwg JigqbWFzaykpOwoxNDQ3NDogfQoxNDQ3NDogIyAyOTkgIi4vaW5jbHVkZS9saW51eC9ub2RlbWFz ay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IF9fZmlyc3RfdW5zZXRfbm9kZShjb25zdCBub2RlbWFza190ICptYXNr cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19idWlsdGluX2Nob29zZV9leHByKCgoISEoc2l6 ZW9mKCh0eXBlb2YoKGludCkoKDEgPDwgMCkpKSAqKTEgPT0gKHR5cGVvZigoaW50KShmaW5kX2Zp cnN0X3plcm9fYml0KG1hc2twLT5iaXRzLCAoMSA8PCAwKSkpKSAqKTEpKSkgJiYgKChzaXplb2Yo aW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lkICopKChsb25nKSgoaW50KSgoMSA8PCAwKSkpICog MGwpKSA6IChpbnQgKik4KSkpICYmIChzaXplb2YoaW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lk ICopKChsb25nKSgoaW50KShmaW5kX2ZpcnN0X3plcm9fYml0KG1hc2twLT5iaXRzLCAoMSA8PCAw KSkpKSAqIDBsKSkgOiAoaW50ICopOCkpKSkpLCAoKChpbnQpKCgxIDw8IDApKSkgPCAoKGludCko ZmluZF9maXJzdF96ZXJvX2JpdChtYXNrcC0+Yml0cywgKDEgPDwgMCkpKSkgPyAoKGludCkoKDEg PDwgMCkpKSA6ICgoaW50KShmaW5kX2ZpcnN0X3plcm9fYml0KG1hc2twLT5iaXRzLCAoMSA8PCAw KSkpKSksICh7IHR5cGVvZigoaW50KSgoMSA8PCAwKSkpIF9fVU5JUVVFX0lEX19feDYgPSAoKGlu dCkoKDEgPDwgMCkpKTsgdHlwZW9mKChpbnQpKGZpbmRfZmlyc3RfemVyb19iaXQobWFza3AtPmJp dHMsICgxIDw8IDApKSkpIF9fVU5JUVVFX0lEX19feTcgPSAoKGludCkoZmluZF9maXJzdF96ZXJv X2JpdChtYXNrcC0+Yml0cywgKDEgPDwgMCkpKSk7ICgoX19VTklRVUVfSURfX194NikgPCAoX19V TklRVUVfSURfX195NykgPyAoX19VTklRVUVfSURfX194NikgOiAoX19VTklRVUVfSURfX195Nykp OyB9KSkKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOwoxNDQ3NDogfQoxNDQ3NDogIyAzMzMgIi4vaW5jbHVkZS9saW51eC9ub2RlbWFzay5o IgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IF9fbm9kZW1hc2tfcGFyc2VfdXNlcihjb25zdCBjaGFyICpidWYsIGludCBs ZW4sCjE0NDc0OiAgICAgIG5vZGVtYXNrX3QgKmRzdHAsIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gYml0bWFwX3BhcnNlX3VzZXIoYnVmLCBsZW4sIGRzdHAtPmJpdHMsIG5iaXRz KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19ub2RlbGlzdF9wYXJzZShj b25zdCBjaGFyICpidWYsIG5vZGVtYXNrX3QgKmRzdHAsIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gYml0bWFwX3BhcnNlbGlzdChidWYsIGRzdHAtPmJpdHMsIG5iaXRzKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX25vZGVfcmVtYXAoaW50 IG9sZGJpdCwKMTQ0NzQ6ICAgY29uc3Qgbm9kZW1hc2tfdCAqb2xkcCwgY29uc3Qgbm9kZW1hc2tf dCAqbmV3cCwgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBiaXRtYXBfYml0cmVt YXAob2xkYml0LCBvbGRwLT5iaXRzLCBuZXdwLT5iaXRzLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbm9kZXNfcmVtYXAobm9kZW1hc2tfdCAq ZHN0cCwgY29uc3Qgbm9kZW1hc2tfdCAqc3JjcCwKMTQ0NzQ6ICAgY29uc3Qgbm9kZW1hc2tfdCAq b2xkcCwgY29uc3Qgbm9kZW1hc2tfdCAqbmV3cCwgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDog IGJpdG1hcF9yZW1hcChkc3RwLT5iaXRzLCBzcmNwLT5iaXRzLCBvbGRwLT5iaXRzLCBuZXdwLT5i aXRzLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IF9fbm9kZXNfb250byhub2RlbWFza190ICpkc3RwLCBjb25zdCBub2RlbWFza190ICpvcmlncCwK MTQ0NzQ6ICAgY29uc3Qgbm9kZW1hc2tfdCAqcmVsbWFwcCwgaW50IG5iaXRzKQoxNDQ3NDogewox NDQ3NDogIGJpdG1hcF9vbnRvKGRzdHAtPmJpdHMsIG9yaWdwLT5iaXRzLCByZWxtYXBwLT5iaXRz LCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9f bm9kZXNfZm9sZChub2RlbWFza190ICpkc3RwLCBjb25zdCBub2RlbWFza190ICpvcmlncCwKMTQ0 NzQ6ICAgaW50IHN6LCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgYml0bWFwX2ZvbGQoZHN0 cC0+Yml0cywgb3JpZ3AtPmJpdHMsIHN6LCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAjIDM5MSAi Li9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgiCjE0NDc0OiBlbnVtIG5vZGVfc3RhdGVzIHsKMTQ0 NzQ6ICBOX1BPU1NJQkxFLAoxNDQ3NDogIE5fT05MSU5FLAoxNDQ3NDogIE5fTk9STUFMX01FTU9S WSwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBOX0hJR0hfTUVNT1JZID0gTl9OT1JN QUxfTUVNT1JZLAoxNDQ3NDogCjE0NDc0OiAgTl9NRU1PUlksCjE0NDc0OiAgTl9DUFUsCjE0NDc0 OiAgTlJfTk9ERV9TVEFURVMKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gbm9kZW1hc2tfdCBub2RlX3N0YXRlc1tO Ul9OT0RFX1NUQVRFU107CjE0NDc0OiAjIDQ2NCAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgbm9kZV9zdGF0ZShpbnQgbm9kZSwgZW51bSBub2RlX3N0YXRlcyBzdGF0ZSkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbm9kZSA9PSAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIG5vZGVfc2V0X3N0YXRlKGludCBub2RlLCBlbnVtIG5vZGVfc3RhdGVzIHN0YXRlKQox NDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5vZGVfY2xlYXJfc3RhdGUoaW50 IG5vZGUsIGVudW0gbm9kZV9zdGF0ZXMgc3RhdGUpCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludCBudW1fbm9kZV9zdGF0ZShlbnVtIG5vZGVfc3RhdGVzIHN0YXRlKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAxOwoxNDQ3NDogfQoxNDQ3NDogIyA0OTkgIi4vaW5jbHVkZS9saW51 eC9ub2RlbWFzay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG5vZGVfcmFuZG9tKGNvbnN0IG5vZGVtYXNrX3QgKm1h c2spCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAjIDUzMSAiLi9p bmNsdWRlL2xpbnV4L25vZGVtYXNrLmgiCjE0NDc0OiBzdHJ1Y3Qgbm9kZW1hc2tfc2NyYXRjaCB7 CjE0NDc0OiAgbm9kZW1hc2tfdCBtYXNrMTsKMTQ0NzQ6ICBub2RlbWFza190IG1hc2syOwoxNDQ3 NDogfTsKMTQ0NzQ6ICMgMTggIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmgiIDEKMTQ0NzQ6ICMgMTggIi4vaW5j bHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaCIKMTQ0NzQ6IGVudW0gcGFnZWJsb2NrX2JpdHMg ewoxNDQ3NDogIFBCX21pZ3JhdGUsCjE0NDc0OiAgUEJfbWlncmF0ZV9lbmQgPSBQQl9taWdyYXRl ICsgMyAtIDEsCjE0NDc0OiAKMTQ0NzQ6ICBQQl9taWdyYXRlX3NraXAsCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIE5SX1BBR0VCTE9DS19CSVRTCjE0NDc0 OiB9OwoxNDQ3NDogIyA1NSAiLi9pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFncy5oIgoxNDQ3 NDogc3RydWN0IHBhZ2U7CjE0NDc0OiAKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgZ2V0X3BmbmJsb2Nr X2ZsYWdzX21hc2soc3RydWN0IHBhZ2UgKnBhZ2UsCjE0NDc0OiAgICAgdW5zaWduZWQgbG9uZyBw Zm4sCjE0NDc0OiAgICAgdW5zaWduZWQgbG9uZyBlbmRfYml0aWR4LAoxNDQ3NDogICAgIHVuc2ln bmVkIGxvbmcgbWFzayk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc2V0X3BmbmJsb2NrX2ZsYWdzX21h c2soc3RydWN0IHBhZ2UgKnBhZ2UsCjE0NDc0OiAgICAgdW5zaWduZWQgbG9uZyBmbGFncywKMTQ0 NzQ6ICAgICB1bnNpZ25lZCBsb25nIHBmbiwKMTQ0NzQ6ICAgICB1bnNpZ25lZCBsb25nIGVuZF9i aXRpZHgsCjE0NDc0OiAgICAgdW5zaWduZWQgbG9uZyBtYXNrKTsKMTQ0NzQ6ICMgMTkgIi4vaW5j bHVkZS9saW51eC9tbXpvbmUuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvcGFnZS1m bGFncy1sYXlvdXQuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2dlbmVyYXRlZC9ib3VuZHMuaCIgMQoxNDQ3NDogIyA3ICIu L2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaCIgMgoxNDQ3NDogIyAyMCAiLi9pbmNs dWRlL2xpbnV4L21tem9uZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4 L21tX3R5cGVzLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXNfdGFzay5oIiAxCjE0NDc0OiAjIDE5ICIuL2luY2x1 ZGUvbGludXgvbW1fdHlwZXNfdGFzay5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL3RsYmJhdGNoLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhcmNoX3RsYmZsdXNoX3VubWFwX2JhdGNoIHsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBjcHVtYXNrIGNwdW1hc2s7 CjE0NDc0OiB9OwoxNDQ3NDogIyAyMCAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzX3Rhc2suaCIg MgoxNDQ3NDogIyAzNCAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzX3Rhc2suaCIKMTQ0NzQ6IHN0 cnVjdCB2bWFjYWNoZSB7CjE0NDc0OiAgdTY0IHNlcW51bTsKMTQ0NzQ6ICBzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYXNbKDFVIDw8IDIpXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgTU1fRklMRVBBR0VTLAox NDQ3NDogIE1NX0FOT05QQUdFUywKMTQ0NzQ6ICBNTV9TV0FQRU5UUywKMTQ0NzQ6ICBNTV9TSE1F TVBBR0VTLAoxNDQ3NDogIE5SX01NX0NPVU5URVJTCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgdGFza19yc3Nfc3RhdCB7CjE0NDc0OiAgaW50 IGV2ZW50czsKMTQ0NzQ6ICBpbnQgY291bnRbTlJfTU1fQ09VTlRFUlNdOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbW1fcnNzX3N0YXQgewoxNDQ3NDogIGF0b21pY19s b25nX3QgY291bnRbTlJfTU1fQ09VTlRFUlNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IHBhZ2VfZnJhZyB7CjE0NDc0OiAgc3RydWN0IHBhZ2UgKnBhZ2U7CjE0NDc0OiAKMTQ0NzQ6 ICBfX3UzMiBvZmZzZXQ7CjE0NDc0OiAgX191MzIgc2l6ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgdGxiZmx1 c2hfdW5tYXBfYmF0Y2ggewoxNDQ3NDogIyA4NSAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzX3Rh c2suaCIKMTQ0NzQ6ICBzdHJ1Y3QgYXJjaF90bGJmbHVzaF91bm1hcF9iYXRjaCBhcmNoOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBib29sIGZsdXNoX3JlcXVpcmVkOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgd3JpdGFibGU7CjE0 NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAjIDYgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAy CjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2F1eHZlYy5oIiAxCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgv YXV4dmVjLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYXV4dmVjLmgiIDEKMTQ0NzQ6ICMgNiAiLi9pbmNs dWRlL3VhcGkvbGludXgvYXV4dmVjLmgiIDIKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL2xpbnV4L2F1 eHZlYy5oIiAyCjE0NDc0OiAjIDggIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAyCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvcmJ0cmVlLmgiIDEKMTQ0NzQ6 ICMgMjIgIi4vaW5jbHVkZS9saW51eC9yYnRyZWUuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xp bnV4L3JjdXBkYXRlLmgiIDEKMTQ0NzQ6ICMgMzggIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5o IgoxNDQ3NDogdm9pZCBjYWxsX3JjdShzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqaGVhZCwgcmN1X2Nh bGxiYWNrX3QgZnVuYyk7CjE0NDc0OiB2b2lkIHJjdV9iYXJyaWVyX3Rhc2tzKHZvaWQpOwoxNDQ3 NDogdm9pZCBzeW5jaHJvbml6ZV9yY3Uodm9pZCk7CjE0NDc0OiAjIDU3ICIuL2luY2x1ZGUvbGlu dXgvcmN1cGRhdGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yY3VfcmVhZF9sb2NrKHZvaWQpCjE0NDc0OiB7 CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3JjdV9yZWFkX3VubG9jayh2b2lkKQoxNDQ3NDogewoxNDQ3 NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGludCByY3VfcHJlZW1wdF9kZXB0aCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2 b2lkIHJjdV9pbml0KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCByY3Vfc2NoZWR1bGVyX2FjdGl2 ZSBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRhdGEuLnJlYWRfbW9zdGx5IikpKTsKMTQ0 NzQ6IHZvaWQgcmN1X3NjaGVkX2Nsb2NrX2lycShpbnQgdXNlcik7CjE0NDc0OiB2b2lkIHJjdV9y ZXBvcnRfZGVhZCh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IHZvaWQgcmN1dHJlZV9taWdyYXRl X2NhbGxiYWNrcyhpbnQgY3B1KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIHJjdV9zeXNy cV9zdGFydCh2b2lkKTsKMTQ0NzQ6IHZvaWQgcmN1X3N5c3JxX2VuZCh2b2lkKTsKMTQ0NzQ6ICMg OTMgIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByY3VfdXNlcl9lbnRl cih2b2lkKSB7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmN1X3VzZXJfZXhpdCh2b2lkKSB7IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJjdV9pbml0X25vaHoo dm9pZCkgeyB9CjE0NDc0OiAjIDE0OCAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGV4aXRfdGFza3NfcmN1X3N0YXJ0KHZvaWQpIHsgfQoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBleGl0X3Rh c2tzX3JjdV9maW5pc2godm9pZCkgeyB9CjE0NDc0OiAjIDE3MSAiLi9pbmNsdWRlL2xpbnV4L3Jj dXBkYXRlLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9yY3V0cmVlLmgiIDEKMTQ0NzQ6 ICMgMjAgIi4vaW5jbHVkZS9saW51eC9yY3V0cmVlLmgiCjE0NDc0OiB2b2lkIHJjdV9zb2Z0aXJx X3FzKHZvaWQpOwoxNDQ3NDogdm9pZCByY3Vfbm90ZV9jb250ZXh0X3N3aXRjaChib29sIHByZWVt cHQpOwoxNDQ3NDogaW50IHJjdV9uZWVkc19jcHUodTY0IGJhc2VtLCB1NjQgKm5leHRldnQpOwox NDQ3NDogdm9pZCByY3VfY3B1X3N0YWxsX3Jlc2V0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByY3VfdmlydF9ub3RlX2Nv bnRleHRfc3dpdGNoKGludCBjcHUpCjE0NDc0OiB7CjE0NDc0OiAgcmN1X25vdGVfY29udGV4dF9z d2l0Y2goZmFsc2UpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB2b2lkIHN5bmNocm9uaXplX3Jj dV9leHBlZGl0ZWQodm9pZCk7CjE0NDc0OiB2b2lkIGtmcmVlX2NhbGxfcmN1KHN0cnVjdCBjYWxs YmFja19oZWFkICpoZWFkLCByY3VfY2FsbGJhY2tfdCBmdW5jKTsKMTQ0NzQ6IAoxNDQ3NDogdm9p ZCByY3VfYmFycmllcih2b2lkKTsKMTQ0NzQ6IGJvb2wgcmN1X2Vxc19zcGVjaWFsX3NldChpbnQg Y3B1KTsKMTQ0NzQ6IHZvaWQgcmN1X21vbWVudGFyeV9keW50aWNrX2lkbGUodm9pZCk7CjE0NDc0 OiB2b2lkIGtmcmVlX3JjdV9zY2hlZHVsZXJfcnVubmluZyh2b2lkKTsKMTQ0NzQ6IHVuc2lnbmVk IGxvbmcgZ2V0X3N0YXRlX3N5bmNocm9uaXplX3JjdSh2b2lkKTsKMTQ0NzQ6IHZvaWQgY29uZF9z eW5jaHJvbml6ZV9yY3UodW5zaWduZWQgbG9uZyBvbGRzdGF0ZSk7CjE0NDc0OiAKMTQ0NzQ6IHZv aWQgcmN1X2lkbGVfZW50ZXIodm9pZCk7CjE0NDc0OiB2b2lkIHJjdV9pZGxlX2V4aXQodm9pZCk7 CjE0NDc0OiB2b2lkIHJjdV9pcnFfZW50ZXIodm9pZCk7CjE0NDc0OiB2b2lkIHJjdV9pcnFfZXhp dCh2b2lkKTsKMTQ0NzQ6IHZvaWQgcmN1X2lycV9lbnRlcl9pcnFzb24odm9pZCk7CjE0NDc0OiB2 b2lkIHJjdV9pcnFfZXhpdF9pcnFzb24odm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZXhpdF9y Y3Uodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgcmN1X3NjaGVkdWxlcl9zdGFydGluZyh2b2lk KTsKMTQ0NzQ6IGV4dGVybiBpbnQgcmN1X3NjaGVkdWxlcl9hY3RpdmUgX19hdHRyaWJ1dGVfXygo X19zZWN0aW9uX18oIi5kYXRhLi5yZWFkX21vc3RseSIpKSk7CjE0NDc0OiB2b2lkIHJjdV9lbmRf aW5rZXJuZWxfYm9vdCh2b2lkKTsKMTQ0NzQ6IGJvb2wgcmN1X2lzX3dhdGNoaW5nKHZvaWQpOwox NDQ3NDogCjE0NDc0OiB2b2lkIHJjdV9hbGxfcXModm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBpbnQgcmN1dHJlZV9wcmVwYXJlX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0 NzQ6IGludCByY3V0cmVlX29ubGluZV9jcHUodW5zaWduZWQgaW50IGNwdSk7CjE0NDc0OiBpbnQg cmN1dHJlZV9vZmZsaW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IGludCByY3V0cmVl X2RlYWRfY3B1KHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDogaW50IHJjdXRyZWVfZHlpbmdfY3B1 KHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDogdm9pZCByY3VfY3B1X3N0YXJ0aW5nKHVuc2lnbmVk IGludCBjcHUpOwoxNDQ3NDogIyAxNzIgIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIiAyCjE0 NDc0OiAjIDE5MiAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGluaXRf cmN1X2hlYWQoc3RydWN0IGNhbGxiYWNrX2hlYWQgKmhlYWQpIHsgfQoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXN0 cm95X3JjdV9oZWFkKHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkKSB7IH0KMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg aW5pdF9yY3VfaGVhZF9vbl9zdGFjayhzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqaGVhZCkgeyB9CjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGRlc3Ryb3lfcmN1X2hlYWRfb25fc3RhY2soc3RydWN0IGNhbGxiYWNrX2hlYWQg KmhlYWQpIHsgfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgcmN1X2xvY2tkZXBfY3VycmVudF9jcHVfb25saW5lKHZvaWQpIHsgcmV0dXJuIHRydWU7 IH0KMTQ0NzQ6ICMgMjMxICIuL2luY2x1ZGUvbGludXgvcmN1cGRhdGUuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBy Y3VfcmVhZF9sb2NrX2hlbGQodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gMTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJjdV9yZWFkX2xvY2tfYmhfaGVsZCh2b2lkKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAxOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmN1X3JlYWRf bG9ja19zY2hlZF9oZWxkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICEwOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQgcmN1X3JlYWRfbG9ja19hbnlfaGVsZCh2b2lkKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAhMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTk3ICIuL2luY2x1ZGUvbGlu dXgvcmN1cGRhdGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dm9pZCByY3VfcmVhZF9sb2NrKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgX19yY3VfcmVhZF9sb2Nr KCk7CjE0NDc0OiAgKHZvaWQpMDsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGRv IHsgfSB3aGlsZSAoMCkKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjQ5ICIuL2luY2x1ZGUvbGludXgvcmN1 cGRhdGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcmN1X3JlYWRfdW5sb2NrKHZvaWQpCjE0NDc0OiB7CjE0NDc0 OiAgZG8geyB9IHdoaWxlICgwKQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiAgKHZvaWQpMDsKMTQ0NzQ6ICBfX3JjdV9yZWFk X3VubG9jaygpOwoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiB9CjE0NDc0OiAjIDY3 MCAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJjdV9yZWFkX2xvY2tf Ymgodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBsb2NhbF9iaF9kaXNhYmxlKCk7CjE0NDc0OiAgKHZv aWQpMDsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCkK MTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgcmN1X3JlYWRfdW5sb2NrX2JoKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAg ZG8geyB9IHdoaWxlICgwKQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICAo dm9pZCkwOwoxNDQ3NDogIGxvY2FsX2JoX2VuYWJsZSgpOwoxNDQ3NDogfQoxNDQ3NDogIyA3MDUg Ii4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByY3VfcmVhZF9sb2NrX3Nj aGVkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJt ZW1vcnkiKTsKMTQ0NzQ6ICAodm9pZCkwOwoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0 OiAgZG8geyB9IHdoaWxlICgwKQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJjdV9yZWFkX2xv Y2tfc2NoZWRfbm90cmFjZSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgKHZvaWQpMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmN1X3Jl YWRfdW5sb2NrX3NjaGVkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKQox NDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICAodm9pZCkwOwoxNDQ3NDog IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgcmN1X3JlYWRfdW5sb2NrX3NjaGVkX25vdHJhY2Uodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAo dm9pZCkwOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0 NDc0OiB9CjE0NDc0OiAjIDg3MCAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHJjdV9oZWFkX2luaXQoc3RydWN0IGNhbGxiYWNrX2hlYWQgKnJocCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByaHAtPmZ1bmMgPSAocmN1X2NhbGxiYWNrX3QpfjBMOwoxNDQ3NDogfQoxNDQ3NDogIyA4 ODggIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogcmN1X2hl YWRfYWZ0ZXJfY2FsbF9yY3Uoc3RydWN0IGNhbGxiYWNrX2hlYWQgKnJocCwgcmN1X2NhbGxiYWNr X3QgZikKMTQ0NzQ6IHsKMTQ0NzQ6ICByY3VfY2FsbGJhY2tfdCBmdW5jID0gKHsgdW5pb24geyB0 eXBlb2YocmhwLT5mdW5jKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFk X29uY2Vfc2l6ZSgmKHJocC0+ZnVuYyksIF9fdS5fX2MsIHNpemVvZihyaHAtPmZ1bmMpKTsgZWxz ZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihyaHAtPmZ1bmMpLCBfX3UuX19jLCBzaXplb2Yo cmhwLT5mdW5jKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiAKMTQ0 NzQ6ICBpZiAoZnVuYyA9PSBmKQoxNDQ3NDogICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6ICAoeyBpbnQg X19yZXRfd2Fybl9vbiA9ICEhKGZ1bmMgIT0gKHJjdV9jYWxsYmFja190KX4wTCk7IGlmIChfX2J1 aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGlu ZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBf X2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1 Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVn X2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0 LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5w b3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIiksICJpIiAoODk1 KSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0 cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0 IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxu XHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDgpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1 aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CjE0NDc0OiAgcmV0dXJuIGZh bHNlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgcmN1X2V4cGVk aXRlZDsKMTQ0NzQ6IGV4dGVybiBpbnQgcmN1X25vcm1hbDsKMTQ0NzQ6ICMgMjMgIi4vaW5jbHVk ZS9saW51eC9yYnRyZWUuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcmJfbm9kZSB7CjE0NDc0 OiAgdW5zaWduZWQgbG9uZyBfX3JiX3BhcmVudF9jb2xvcjsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9k ZSAqcmJfcmlnaHQ7CjE0NDc0OiAgc3RydWN0IHJiX25vZGUgKnJiX2xlZnQ7CjE0NDc0OiB9IF9f YXR0cmlidXRlX18oKGFsaWduZWQoc2l6ZW9mKGxvbmcpKSkpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCByYl9yb290IHsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9kZSAqcmJfbm9kZTsKMTQ0 NzQ6IH07CjE0NDc0OiAjIDQ5ICIuL2luY2x1ZGUvbGludXgvcmJ0cmVlLmgiCjE0NDc0OiBleHRl cm4gdm9pZCByYl9pbnNlcnRfY29sb3Ioc3RydWN0IHJiX25vZGUgKiwgc3RydWN0IHJiX3Jvb3Qg Kik7CjE0NDc0OiBleHRlcm4gdm9pZCByYl9lcmFzZShzdHJ1Y3QgcmJfbm9kZSAqLCBzdHJ1Y3Qg cmJfcm9vdCAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qg cmJfbm9kZSAqcmJfbmV4dChjb25zdCBzdHJ1Y3QgcmJfbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiBz dHJ1Y3QgcmJfbm9kZSAqcmJfcHJldihjb25zdCBzdHJ1Y3QgcmJfbm9kZSAqKTsKMTQ0NzQ6IGV4 dGVybiBzdHJ1Y3QgcmJfbm9kZSAqcmJfZmlyc3QoY29uc3Qgc3RydWN0IHJiX3Jvb3QgKik7CjE0 NDc0OiBleHRlcm4gc3RydWN0IHJiX25vZGUgKnJiX2xhc3QoY29uc3Qgc3RydWN0IHJiX3Jvb3Qg Kik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCByYl9ub2RlICpyYl9maXJz dF9wb3N0b3JkZXIoY29uc3Qgc3RydWN0IHJiX3Jvb3QgKik7CjE0NDc0OiBleHRlcm4gc3RydWN0 IHJiX25vZGUgKnJiX25leHRfcG9zdG9yZGVyKGNvbnN0IHN0cnVjdCByYl9ub2RlICopOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHJiX3JlcGxhY2Vfbm9kZShzdHJ1Y3QgcmJf bm9kZSAqdmljdGltLCBzdHJ1Y3QgcmJfbm9kZSAqbmV3LAoxNDQ3NDogICAgICAgIHN0cnVjdCBy Yl9yb290ICpyb290KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHJiX3JlcGxhY2Vfbm9kZV9yY3Uoc3Ry dWN0IHJiX25vZGUgKnZpY3RpbSwgc3RydWN0IHJiX25vZGUgKm5ldywKMTQ0NzQ6ICAgICBzdHJ1 Y3QgcmJfcm9vdCAqcm9vdCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmJfbGlua19ub2RlKHN0cnVj dCByYl9ub2RlICpub2RlLCBzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50LAoxNDQ3NDogICAgIHN0cnVj dCByYl9ub2RlICoqcmJfbGluaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBub2RlLT5fX3JiX3BhcmVudF9j b2xvciA9ICh1bnNpZ25lZCBsb25nKXBhcmVudDsKMTQ0NzQ6ICBub2RlLT5yYl9sZWZ0ID0gbm9k ZS0+cmJfcmlnaHQgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6IAoxNDQ3NDogICpyYl9saW5rID0gbm9k ZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByYl9saW5rX25vZGVfcmN1KHN0cnVjdCBy Yl9ub2RlICpub2RlLCBzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50LAoxNDQ3NDogICAgICAgICBzdHJ1 Y3QgcmJfbm9kZSAqKnJiX2xpbmspCjE0NDc0OiB7CjE0NDc0OiAgbm9kZS0+X19yYl9wYXJlbnRf Y29sb3IgPSAodW5zaWduZWQgbG9uZylwYXJlbnQ7CjE0NDc0OiAgbm9kZS0+cmJfbGVmdCA9IG5v ZGUtPnJiX3JpZ2h0ID0gKCh2b2lkICopMCk7CjE0NDc0OiAKMTQ0NzQ6ICBkbyB7IHVpbnRwdHJf dCBfcl9hX3BfX3YgPSAodWludHB0cl90KShub2RlKTsgOyBpZiAoX19idWlsdGluX2NvbnN0YW50 X3Aobm9kZSkgJiYgKF9yX2FfcF9fdikgPT0gKHVpbnRwdHJfdCkoKHZvaWQgKikwKSkgKHsgdW5p b24geyB0eXBlb2YoKCpyYl9saW5rKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9f dmFsID0gKCB0eXBlb2YoKCpyYl9saW5rKSkpICgodHlwZW9mKCpyYl9saW5rKSkoX3JfYV9wX192 KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigoKnJiX2xpbmspKSwgX191Ll9fYywgc2l6ZW9mKCgq cmJfbGluaykpKTsgX191Ll9fdmFsOyB9KTsgZWxzZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19j b21waWxldGltZV9hc3NlcnRfODQodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVk IG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICgh KChzaXplb2YoKiYqcmJfbGluaykgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigqJipyYl9saW5r KSA9PSBzaXplb2Yoc2hvcnQpIHx8IHNpemVvZigqJipyYl9saW5rKSA9PSBzaXplb2YoaW50KSB8 fCBzaXplb2YoKiYqcmJfbGluaykgPT0gc2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNz ZXJ0Xzg0KCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9y eSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJipyYl9saW5rKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0g X191ID0geyAuX192YWwgPSAoIHR5cGVvZigqJipyYl9saW5rKSkgKCh0eXBlb2YoKigodHlwZW9m KCpyYl9saW5rKSlfcl9hX3BfX3YpKSAqKSgodHlwZW9mKCpyYl9saW5rKSlfcl9hX3BfX3YpKSB9 OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKComKnJiX2xpbmspLCBfX3UuX19jLCBzaXplb2YoKiYqcmJf bGluaykpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiB9 CjE0NDc0OiAjIDEyNSAiLi9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIgoxNDQ3NDogc3RydWN0IHJi X3Jvb3RfY2FjaGVkIHsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfcm9vdCByYl9yb290OwoxNDQ3NDogIHN0 cnVjdCByYl9ub2RlICpyYl9sZWZ0bW9zdDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJiX2luc2VydF9jb2xvcl9j YWNoZWQoc3RydWN0IHJiX25vZGUgKm5vZGUsCjE0NDc0OiAgICAgICAgc3RydWN0IHJiX3Jvb3Rf Y2FjaGVkICpyb290LAoxNDQ3NDogICAgICAgIGJvb2wgbGVmdG1vc3QpCjE0NDc0OiB7CjE0NDc0 OiAgaWYgKGxlZnRtb3N0KQoxNDQ3NDogICByb290LT5yYl9sZWZ0bW9zdCA9IG5vZGU7CjE0NDc0 OiAgcmJfaW5zZXJ0X2NvbG9yKG5vZGUsICZyb290LT5yYl9yb290KTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCByYl9lcmFzZV9jYWNoZWQoc3RydWN0IHJiX25vZGUgKm5vZGUsCjE0NDc0 OiAgICAgICAgc3RydWN0IHJiX3Jvb3RfY2FjaGVkICpyb290KQoxNDQ3NDogewoxNDQ3NDogIGlm IChyb290LT5yYl9sZWZ0bW9zdCA9PSBub2RlKQoxNDQ3NDogICByb290LT5yYl9sZWZ0bW9zdCA9 IHJiX25leHQobm9kZSk7CjE0NDc0OiAgcmJfZXJhc2Uobm9kZSwgJnJvb3QtPnJiX3Jvb3QpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJiX3JlcGxhY2Vfbm9kZV9jYWNoZWQoc3RydWN0 IHJiX25vZGUgKnZpY3RpbSwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3QgcmJfbm9kZSAqbmV3LAoxNDQ3 NDogICAgICAgIHN0cnVjdCByYl9yb290X2NhY2hlZCAqcm9vdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBp ZiAocm9vdC0+cmJfbGVmdG1vc3QgPT0gdmljdGltKQoxNDQ3NDogICByb290LT5yYl9sZWZ0bW9z dCA9IG5ldzsKMTQ0NzQ6ICByYl9yZXBsYWNlX25vZGUodmljdGltLCBuZXcsICZyb290LT5yYl9y b290KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTEgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAy CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9yd3NlbS5oIiAxCjE0NDc0OiAjIDIwICIuL2lu Y2x1ZGUvbGludXgvcndzZW0uaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L29zcV9sb2Nr LmgiIDEKMTQ0NzQ6ICMgOSAiLi9pbmNsdWRlL2xpbnV4L29zcV9sb2NrLmgiCjE0NDc0OiBzdHJ1 Y3Qgb3B0aW1pc3RpY19zcGluX25vZGUgewoxNDQ3NDogIHN0cnVjdCBvcHRpbWlzdGljX3NwaW5f bm9kZSAqbmV4dCwgKnByZXY7CjE0NDc0OiAgaW50IGxvY2tlZDsKMTQ0NzQ6ICBpbnQgY3B1Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG9wdGltaXN0aWNfc3Bpbl9xdWV1ZSB7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhdG9taWNfdCB0YWlsOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgb3NxX2xvY2tfaW5pdChzdHJ1Y3Qgb3B0aW1pc3RpY19zcGluX3F1ZXVlICpsb2Nr KQoxNDQ3NDogewoxNDQ3NDogIGF0b21pY19zZXQoJmxvY2stPnRhaWwsICgwKSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBib29sIG9zcV9sb2NrKHN0cnVjdCBvcHRpbWlzdGljX3Nw aW5fcXVldWUgKmxvY2spOwoxNDQ3NDogZXh0ZXJuIHZvaWQgb3NxX3VubG9jayhzdHJ1Y3Qgb3B0 aW1pc3RpY19zcGluX3F1ZXVlICpsb2NrKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBvc3FfaXNfbG9j a2VkKHN0cnVjdCBvcHRpbWlzdGljX3NwaW5fcXVldWUgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIGF0b21pY19yZWFkKCZsb2NrLT50YWlsKSAhPSAoMCk7CjE0NDc0OiB9CjE0NDc0OiAj IDIxICIuL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgoxNDQ3NDogIyAzNSAiLi9pbmNsdWRlL2xp bnV4L3J3c2VtLmgiCjE0NDc0OiBzdHJ1Y3Qgcndfc2VtYXBob3JlIHsKMTQ0NzQ6ICBhdG9taWNf bG9uZ190IGNvdW50OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBhdG9taWNfbG9uZ190IG93bmVyOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IG9wdGltaXN0 aWNfc3Bpbl9xdWV1ZSBvc3E7CjE0NDc0OiAKMTQ0NzQ6ICByYXdfc3BpbmxvY2tfdCB3YWl0X2xv Y2s7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCB3YWl0X2xpc3Q7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogIyA2MyAiLi9p bmNsdWRlL2xpbnV4L3J3c2VtLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcndzZW1faXNfbG9ja2VkKHN0cnVjdCBy d19zZW1hcGhvcmUgKnNlbSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljX2xvbmdfcmVh ZCgmc2VtLT5jb3VudCkgIT0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTAzICIuL2luY2x1ZGUvbGlu dXgvcndzZW0uaCIKMTQ0NzQ6IGV4dGVybiB2b2lkIF9faW5pdF9yd3NlbShzdHJ1Y3Qgcndfc2Vt YXBob3JlICpzZW0sIGNvbnN0IGNoYXIgKm5hbWUsCjE0NDc0OiAgICAgc3RydWN0IGxvY2tfY2xh c3Nfa2V5ICprZXkpOwoxNDQ3NDogIyAxMTkgIi4vaW5jbHVkZS9saW51eC9yd3NlbS5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IHJ3c2VtX2lzX2NvbnRlbmRlZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuICFsaXN0X2VtcHR5KCZzZW0tPndhaXRfbGlzdCk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGRvd25f cmVhZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJp YnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZG93bl9yZWFkX2tpbGxhYmxlKHN0cnVj dCByd19zZW1hcGhvcmUgKnNlbSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiBpbnQgZG93bl9yZWFkX3RyeWxvY2soc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2Vt KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZG93 bl93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZG93bl93cml0ZV9raWxsYWJsZShz dHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBleHRlcm4gaW50IGRvd25fd3JpdGVfdHJ5bG9jayhzdHJ1Y3Qgcndfc2VtYXBob3Jl ICpzZW0pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9p ZCB1cF9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHVwX3dyaXRlKHN0cnVjdCByd19zZW1hcGhv cmUgKnNlbSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2 b2lkIGRvd25ncmFkZV93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pOwoxNDQ3NDogIyAx MiAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xp bnV4L2NvbXBsZXRpb24uaCIgMQoxNDQ3NDogIyAyNiAiLi9pbmNsdWRlL2xpbnV4L2NvbXBsZXRp b24uaCIKMTQ0NzQ6IHN0cnVjdCBjb21wbGV0aW9uIHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZG9u ZTsKMTQ0NzQ6ICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY29tcGxldGVfYWNxdWlyZShzdHJ1Y3QgY29tcGxldGlv biAqeCkge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgY29tcGxldGVfcmVsZWFzZShzdHJ1Y3QgY29tcGxldGlvbiAq eCkge30KMTQ0NzQ6ICMgODUgIi4vaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIF9faW5pdF9jb21wbGV0aW9uKHN0cnVjdCBjb21wbGV0aW9uICp4KQoxNDQ3NDogewoxNDQ3 NDogIHgtPmRvbmUgPSAwOwoxNDQ3NDogIGRvIHsgc3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tl eSBfX2tleTsgX19pbml0X3dhaXRxdWV1ZV9oZWFkKCgmeC0+d2FpdCksICImeC0+d2FpdCIsICZf X2tleSk7IH0gd2hpbGUgKDApOwoxNDQ3NDogfQoxNDQ3NDogIyA5OCAiLi9pbmNsdWRlL2xpbnV4 L2NvbXBsZXRpb24uaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmVpbml0X2NvbXBsZXRpb24oc3RydWN0IGNvbXBs ZXRpb24gKngpCjE0NDc0OiB7CjE0NDc0OiAgeC0+ZG9uZSA9IDA7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiB2b2lkIHdhaXRfZm9yX2NvbXBsZXRpb24oc3RydWN0IGNvbXBsZXRpb24g Kik7CjE0NDc0OiBleHRlcm4gdm9pZCB3YWl0X2Zvcl9jb21wbGV0aW9uX2lvKHN0cnVjdCBjb21w bGV0aW9uICopOwoxNDQ3NDogZXh0ZXJuIGludCB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVw dGlibGUoc3RydWN0IGNvbXBsZXRpb24gKngpOwoxNDQ3NDogZXh0ZXJuIGludCB3YWl0X2Zvcl9j b21wbGV0aW9uX2tpbGxhYmxlKHN0cnVjdCBjb21wbGV0aW9uICp4KTsKMTQ0NzQ6IGV4dGVybiB1 bnNpZ25lZCBsb25nIHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChzdHJ1Y3QgY29tcGxldGlv biAqeCwKMTQ0NzQ6ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CjE0NDc0OiBleHRl cm4gdW5zaWduZWQgbG9uZyB3YWl0X2Zvcl9jb21wbGV0aW9uX2lvX3RpbWVvdXQoc3RydWN0IGNv bXBsZXRpb24gKngsCjE0NDc0OiAgICAgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0KTsKMTQ0 NzQ6IGV4dGVybiBsb25nIHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZV90aW1lb3V0 KAoxNDQ3NDogIHN0cnVjdCBjb21wbGV0aW9uICp4LCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwox NDQ3NDogZXh0ZXJuIGxvbmcgd2FpdF9mb3JfY29tcGxldGlvbl9raWxsYWJsZV90aW1lb3V0KAox NDQ3NDogIHN0cnVjdCBjb21wbGV0aW9uICp4LCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwoxNDQ3 NDogZXh0ZXJuIGJvb2wgdHJ5X3dhaXRfZm9yX2NvbXBsZXRpb24oc3RydWN0IGNvbXBsZXRpb24g KngpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgY29tcGxldGlvbl9kb25lKHN0cnVjdCBjb21wbGV0aW9u ICp4KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgY29tcGxldGUoc3RydWN0IGNvbXBsZXRp b24gKik7CjE0NDc0OiBleHRlcm4gdm9pZCBjb21wbGV0ZV9hbGwoc3RydWN0IGNvbXBsZXRpb24g Kik7CjE0NDc0OiAjIDEzICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIgMgoxNDQ3NDogCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC91cHJvYmVzLmgiIDEKMTQ0NzQ6ICMgMTkgIi4vaW5j bHVkZS9saW51eC91cHJvYmVzLmgiCjE0NDc0OiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7CjE0NDc0 OiBzdHJ1Y3QgbW1fc3RydWN0OwoxNDQ3NDogc3RydWN0IGlub2RlOwoxNDQ3NDogc3RydWN0IG5v dGlmaWVyX2Jsb2NrOwoxNDQ3NDogc3RydWN0IHBhZ2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHVwcm9iZV9maWx0ZXJfY3R4IHsK MTQ0NzQ6ICBVUFJPQkVfRklMVEVSX1JFR0lTVEVSLAoxNDQ3NDogIFVQUk9CRV9GSUxURVJfVU5S RUdJU1RFUiwKMTQ0NzQ6ICBVUFJPQkVfRklMVEVSX01NQVAsCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgdXByb2JlX2NvbnN1bWVyIHsKMTQ0NzQ6ICBpbnQgKCpoYW5kbGVyKShzdHJ1 Y3QgdXByb2JlX2NvbnN1bWVyICpzZWxmLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CjE0NDc0OiAg aW50ICgqcmV0X2hhbmRsZXIpKHN0cnVjdCB1cHJvYmVfY29uc3VtZXIgKnNlbGYsCjE0NDc0OiAg ICAgdW5zaWduZWQgbG9uZyBmdW5jLAoxNDQ3NDogICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsK MTQ0NzQ6ICBib29sICgqZmlsdGVyKShzdHJ1Y3QgdXByb2JlX2NvbnN1bWVyICpzZWxmLAoxNDQ3 NDogICAgIGVudW0gdXByb2JlX2ZpbHRlcl9jdHggY3R4LAoxNDQ3NDogICAgIHN0cnVjdCBtbV9z dHJ1Y3QgKm1tKTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB1cHJvYmVfY29uc3VtZXIgKm5leHQ7 CjE0NDc0OiB9OwoxNDQ3NDogIyAxNDIgIi4vaW5jbHVkZS9saW51eC91cHJvYmVzLmgiCjE0NDc0 OiBzdHJ1Y3QgdXByb2Jlc19zdGF0ZSB7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVw cm9iZXNfaW5pdCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50CjE0NDc0OiB1cHJvYmVfcmVnaXN0ZXIoc3RydWN0IGlub2RlICppbm9kZSwg bG9mZl90IG9mZnNldCwgc3RydWN0IHVwcm9iZV9jb25zdW1lciAqdWMpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIC0zODsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB1cHJvYmVfcmVnaXN0ZXJfcmVmY3Ry KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCByZWZfY3RyX29mZnNl dCwgc3RydWN0IHVwcm9iZV9jb25zdW1lciAqdWMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIC0z ODsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogdXByb2JlX2FwcGx5KHN0cnVjdCBpbm9kZSAq aW5vZGUsIGxvZmZfdCBvZmZzZXQsIHN0cnVjdCB1cHJvYmVfY29uc3VtZXIgKnVjLCBib29sIGFk ZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gLTM4OwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3 NDogdXByb2JlX3VucmVnaXN0ZXIoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwg c3RydWN0IHVwcm9iZV9jb25zdW1lciAqdWMpCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg dXByb2JlX21tYXAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiB1cHJvYmVfbXVubWFwKHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25n IGVuZCkKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdXByb2JlX3N0YXJ0X2R1cF9tbWFw KHZvaWQpCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVwcm9iZV9lbmRfZHVwX21tYXAo dm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6IHVwcm9iZV9kdXBfbW1h cChzdHJ1Y3QgbW1fc3RydWN0ICpvbGRtbSwgc3RydWN0IG1tX3N0cnVjdCAqbmV3bW0pCjE0NDc0 OiB7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVwcm9iZV9ub3RpZnlfcmVzdW1lKHN0cnVjdCBwdF9y ZWdzICpyZWdzKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1cHJvYmVfZGVueV9zaWdu YWwodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZmFsc2U7CjE0NDc0OiB9CjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHVwcm9iZV9mcmVlX3V0YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkKMTQ0NzQ6IHsKMTQ0 NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgdXByb2JlX2NvcHlfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnQsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVw cm9iZV9jbGVhcl9zdGF0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKMTQ0NzQ6IHsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgMTUgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6 ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIiAxCjE0NDc0OiAjIDkgIi4vaW5jbHVk ZS9saW51eC93b3JrcXVldWUuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3RpbWVyLmgi IDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4v aW5jbHVkZS9saW51eC9rdGltZS5oIiAxCjE0NDc0OiAjIDI0ICIuL2luY2x1ZGUvbGludXgva3Rp bWUuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMQoxNDQ3NDogIyAxMCAi Li9pbmNsdWRlL2xpbnV4L3RpbWUuaCIKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgdGltZXpvbmUgc3lz X3R6OwoxNDQ3NDogCjE0NDc0OiBpbnQgZ2V0X3RpbWVzcGVjNjQoc3RydWN0IHRpbWVzcGVjNjQg KnRzLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgX19rZXJuZWxfdGltZXNwZWMgKnV0cyk7CjE0NDc0 OiBpbnQgcHV0X3RpbWVzcGVjNjQoY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzLAoxNDQ3NDog ICBzdHJ1Y3QgX19rZXJuZWxfdGltZXNwZWMgKnV0cyk7CjE0NDc0OiBpbnQgZ2V0X2l0aW1lcnNw ZWM2NChzdHJ1Y3QgaXRpbWVyc3BlYzY0ICppdCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBfX2tl cm5lbF9pdGltZXJzcGVjICp1aXQpOwoxNDQ3NDogaW50IHB1dF9pdGltZXJzcGVjNjQoY29uc3Qg c3RydWN0IGl0aW1lcnNwZWM2NCAqaXQsCjE0NDc0OiAgICBzdHJ1Y3QgX19rZXJuZWxfaXRpbWVy c3BlYyAqdWl0KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHRpbWU2NF90IG1rdGltZTY0KGNvbnN0 IHVuc2lnbmVkIGludCB5ZWFyLCBjb25zdCB1bnNpZ25lZCBpbnQgbW9uLAoxNDQ3NDogICAgY29u c3QgdW5zaWduZWQgaW50IGRheSwgY29uc3QgdW5zaWduZWQgaW50IGhvdXIsCjE0NDc0OiAgICBj b25zdCB1bnNpZ25lZCBpbnQgbWluLCBjb25zdCB1bnNpZ25lZCBpbnQgc2VjKTsKMTQ0NzQ6ICMg MzkgIi4vaW5jbHVkZS9saW51eC90aW1lLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBjbGVhcl9pdGlt ZXIodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBs b25nIGRvX3V0aW1lcyhpbnQgZGZkLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IHRpbWVz cGVjNjQgKnRpbWVzLCBpbnQgZmxhZ3MpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0bSB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBpbnQgdG1fc2VjOwoxNDQ3NDogCjE0NDc0OiAgaW50IHRtX21pbjsKMTQ0NzQ6 IAoxNDQ3NDogIGludCB0bV9ob3VyOwoxNDQ3NDogCjE0NDc0OiAgaW50IHRtX21kYXk7CjE0NDc0 OiAKMTQ0NzQ6ICBpbnQgdG1fbW9uOwoxNDQ3NDogCjE0NDc0OiAgbG9uZyB0bV95ZWFyOwoxNDQ3 NDogCjE0NDc0OiAgaW50IHRtX3dkYXk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgdG1feWRheTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgdGltZTY0X3RvX3RtKHRpbWU2NF90IHRvdGFsc2Vj cywgaW50IG9mZnNldCwgc3RydWN0IHRtICpyZXN1bHQpOwoxNDQ3NDogCjE0NDc0OiAjIDEgIi4v aW5jbHVkZS9saW51eC90aW1lMzIuaCIgMQoxNDQ3NDogIyAxMyAiLi9pbmNsdWRlL2xpbnV4L3Rp bWUzMi5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvdGltZXguaCIgMQoxNDQ3NDogIyA1 NiAiLi9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xp bnV4L3RpbWV4LmgiIDEKMTQ0NzQ6ICMgNTYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3RpbWV4Lmgi CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC90aW1lLmgiIDEKMTQ0NzQ6ICMgNTcgIi4vaW5j bHVkZS91YXBpL2xpbnV4L3RpbWV4LmgiIDIKMTQ0NzQ6ICMgOTcgIi4vaW5jbHVkZS91YXBpL2xp bnV4L3RpbWV4LmgiCjE0NDc0OiBzdHJ1Y3QgX19rZXJuZWxfdGltZXhfdGltZXZhbCB7CjE0NDc0 OiAgX19rZXJuZWxfdGltZTY0X3QgdHZfc2VjOwoxNDQ3NDogIGxvbmcgbG9uZyB0dl91c2VjOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF9fa2VybmVsX3RpbWV4IHsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgbW9kZXM7CjE0NDc0OiAgaW50IDozMjsKMTQ0NzQ6ICBsb25nIGxvbmcgb2Zm c2V0OwoxNDQ3NDogIGxvbmcgbG9uZyBmcmVxOwoxNDQ3NDogIGxvbmcgbG9uZyBtYXhlcnJvcjsK MTQ0NzQ6ICBsb25nIGxvbmcgZXN0ZXJyb3I7CjE0NDc0OiAgaW50IHN0YXR1czsKMTQ0NzQ6ICBp bnQgOjMyOwoxNDQ3NDogIGxvbmcgbG9uZyBjb25zdGFudDsKMTQ0NzQ6ICBsb25nIGxvbmcgcHJl Y2lzaW9uOwoxNDQ3NDogIGxvbmcgbG9uZyB0b2xlcmFuY2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHN0cnVjdCBfX2tlcm5lbF90aW1leF90aW1ldmFsIHRpbWU7CjE0NDc0OiAgbG9uZyBsb25n IHRpY2s7CjE0NDc0OiAKMTQ0NzQ6ICBsb25nIGxvbmcgcHBzZnJlcTsKMTQ0NzQ6ICBsb25nIGxv bmcgaml0dGVyOwoxNDQ3NDogIGludCBzaGlmdDsKMTQ0NzQ6ICBpbnQgOjMyOwoxNDQ3NDogIGxv bmcgbG9uZyBzdGFiaWw7CjE0NDc0OiAgbG9uZyBsb25nIGppdGNudDsKMTQ0NzQ6ICBsb25nIGxv bmcgY2FsY250OwoxNDQ3NDogIGxvbmcgbG9uZyBlcnJjbnQ7CjE0NDc0OiAgbG9uZyBsb25nIHN0 YmNudDsKMTQ0NzQ6IAoxNDQ3NDogIGludCB0YWk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgOjMyOyBp bnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwoxNDQ3NDogIGludCA6MzI7IGludCA6MzI7IGludCA6 MzI7IGludCA6MzI7CjE0NDc0OiAgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKMTQ0NzQ6IH07 CjE0NDc0OiAjIDU3ICIuL2luY2x1ZGUvbGludXgvdGltZXguaCIgMgoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFw aS9saW51eC9wYXJhbS5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS9wYXJhbS5oIiAxCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9wYXJhbS5oIiAxCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMv cGFyYW0uaCIgMQoxNDQ3NDogIyA2ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcGFyYW0uaCIgMgox NDQ3NDogIyAyICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3BhcmFtLmgi IDIKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL3VhcGkvbGludXgvcGFyYW0uaCIgMgoxNDQ3NDogIyA2 NCAiLi9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3RpbWV4LmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdHNjLmgiIDEKMTQ0 NzQ6ICMgMTYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdHNjLmgiCjE0NDc0OiB0eXBlZGVmIHVu c2lnbmVkIGxvbmcgbG9uZyBjeWNsZXNfdDsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVk IGludCBjcHVfa2h6OwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGludCB0c2Nfa2h6OwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCBkaXNhYmxlX1RTQyh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY3lj bGVzX3QgZ2V0X2N5Y2xlcyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gcmR0c2MoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIHN0cnVjdCBzeXN0ZW1fY291bnRlcnZhbF90IGNvbnZlcnRfYXJ0X3RvX3Rz Yyh1NjQgYXJ0KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgc3lzdGVtX2NvdW50ZXJ2YWxfdCBjb252 ZXJ0X2FydF9uc190b190c2ModTY0IGFydF9ucyk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lk IHRzY19lYXJseV9pbml0KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgdHNjX2luaXQodm9pZCk7 CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBjYWxpYnJhdGVfZGVsYXlfaXNfa25vd24odm9p ZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBtYXJrX3RzY191bnN0YWJsZShjaGFyICpyZWFzb24pOwox NDQ3NDogZXh0ZXJuIGludCB1bnN5bmNocm9uaXplZF90c2Modm9pZCk7CjE0NDc0OiBleHRlcm4g aW50IGNoZWNrX3RzY191bnN0YWJsZSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIG1hcmtfdHNj X2FzeW5jX3Jlc2V0cyhjaGFyICpyZWFzb24pOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcg bmF0aXZlX2NhbGlicmF0ZV9jcHVfZWFybHkodm9pZCk7CjE0NDc0OiBleHRlcm4gdW5zaWduZWQg bG9uZyBuYXRpdmVfY2FsaWJyYXRlX3RzYyh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBs b25nIGxvbmcgbmF0aXZlX3NjaGVkX2Nsb2NrX2Zyb21fdHNjKHU2NCB0c2MpOwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gaW50IHRzY19jbG9ja3NvdXJjZV9yZWxpYWJsZTsKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIGJvb2wgdHNjX2FzeW5jX3Jlc2V0czsKMTQ0NzQ6ICMgNTkgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vdHNjLmgiCjE0NDc0OiBleHRlcm4gYm9vbCB0c2Nfc3RvcmVfYW5kX2NoZWNrX3Rz Y19hZGp1c3QoYm9vbCBib290Y3B1KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHRzY192ZXJpZnlfdHNj X2FkanVzdChib29sIHJlc3VtZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBjaGVja190c2Nfc3luY19z b3VyY2UoaW50IGNwdSk7CjE0NDc0OiBleHRlcm4gdm9pZCBjaGVja190c2Nfc3luY190YXJnZXQo dm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbm90c2Nfc2V0dXAoY2hhciAqKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIHRzY19zYXZlX3NjaGVkX2Nsb2NrX3N0YXRlKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgdHNjX3Jlc3RvcmVfc2NoZWRfY2xvY2tfc3RhdGUodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHVu c2lnbmVkIGxvbmcgY3B1X2toel9mcm9tX21zcih2b2lkKTsKMTQ0NzQ6ICMgNyAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS90aW1leC5oIiAyCjE0NDc0OiAjIDY2ICIuL2luY2x1ZGUvbGludXgvdGlt ZXguaCIgMgoxNDQ3NDogIyAxMzkgIi4vaW5jbHVkZS9saW51eC90aW1leC5oIgoxNDQ3NDogZXh0 ZXJuIHVuc2lnbmVkIGxvbmcgdGlja191c2VjOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcg dGlja19uc2VjOwoxNDQ3NDogIyAxNTQgIi4vaW5jbHVkZS9saW51eC90aW1leC5oIgoxNDQ3NDog ZXh0ZXJuIGludCBkb19hZGp0aW1leChzdHJ1Y3QgX19rZXJuZWxfdGltZXggKik7CjE0NDc0OiBl eHRlcm4gaW50IGRvX2Nsb2NrX2FkanRpbWUoY29uc3QgY2xvY2tpZF90IHdoaWNoX2Nsb2NrLCBz dHJ1Y3QgX19rZXJuZWxfdGltZXggKiBrdHgpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBo YXJkcHBzKGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICosIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0 ICopOwoxNDQ3NDogCjE0NDc0OiBpbnQgcmVhZF9jdXJyZW50X3RpbWVyKHVuc2lnbmVkIGxvbmcg KnRpbWVyX3ZhbCk7CjE0NDc0OiB2b2lkIG50cF9ub3RpZnlfY21vc190aW1lcih2b2lkKTsKMTQ0 NzQ6ICMgMTQgIi4vaW5jbHVkZS9saW51eC90aW1lMzIuaCIgMgoxNDQ3NDogCjE0NDc0OiB0eXBl ZGVmIHMzMiBvbGRfdGltZTMyX3Q7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBvbGRfdGltZXNwZWMz MiB7CjE0NDc0OiAgb2xkX3RpbWUzMl90IHR2X3NlYzsKMTQ0NzQ6ICBzMzIgdHZfbnNlYzsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBvbGRfdGltZXZhbDMyIHsKMTQ0NzQ6ICBvbGRf dGltZTMyX3QgdHZfc2VjOwoxNDQ3NDogIHMzMiB0dl91c2VjOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IG9sZF9pdGltZXJzcGVjMzIgewoxNDQ3NDogIHN0cnVjdCBvbGRfdGltZXNw ZWMzMiBpdF9pbnRlcnZhbDsKMTQ0NzQ6ICBzdHJ1Y3Qgb2xkX3RpbWVzcGVjMzIgaXRfdmFsdWU7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgb2xkX3V0aW1idWYzMiB7CjE0NDc0OiAg b2xkX3RpbWUzMl90IGFjdGltZTsKMTQ0NzQ6ICBvbGRfdGltZTMyX3QgbW9kdGltZTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBvbGRfdGltZXgzMiB7CjE0NDc0OiAgdTMyIG1vZGVz OwoxNDQ3NDogIHMzMiBvZmZzZXQ7CjE0NDc0OiAgczMyIGZyZXE7CjE0NDc0OiAgczMyIG1heGVy cm9yOwoxNDQ3NDogIHMzMiBlc3RlcnJvcjsKMTQ0NzQ6ICBzMzIgc3RhdHVzOwoxNDQ3NDogIHMz MiBjb25zdGFudDsKMTQ0NzQ6ICBzMzIgcHJlY2lzaW9uOwoxNDQ3NDogIHMzMiB0b2xlcmFuY2U7 CjE0NDc0OiAgc3RydWN0IG9sZF90aW1ldmFsMzIgdGltZTsKMTQ0NzQ6ICBzMzIgdGljazsKMTQ0 NzQ6ICBzMzIgcHBzZnJlcTsKMTQ0NzQ6ICBzMzIgaml0dGVyOwoxNDQ3NDogIHMzMiBzaGlmdDsK MTQ0NzQ6ICBzMzIgc3RhYmlsOwoxNDQ3NDogIHMzMiBqaXRjbnQ7CjE0NDc0OiAgczMyIGNhbGNu dDsKMTQ0NzQ6ICBzMzIgZXJyY250OwoxNDQ3NDogIHMzMiBzdGJjbnQ7CjE0NDc0OiAgczMyIHRh aTsKMTQ0NzQ6IAoxNDQ3NDogIHMzMjozMjsgczMyOjMyOyBzMzI6MzI7IHMzMjozMjsKMTQ0NzQ6 ICBzMzI6MzI7IHMzMjozMjsgczMyOjMyOyBzMzI6MzI7CjE0NDc0OiAgczMyOjMyOyBzMzI6MzI7 IHMzMjozMjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZ2V0X29sZF90aW1l c3BlYzMyKHN0cnVjdCB0aW1lc3BlYzY0ICosIGNvbnN0IHZvaWQgKik7CjE0NDc0OiBleHRlcm4g aW50IHB1dF9vbGRfdGltZXNwZWMzMihjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqLCB2b2lkICop OwoxNDQ3NDogZXh0ZXJuIGludCBnZXRfb2xkX2l0aW1lcnNwZWMzMihzdHJ1Y3QgaXRpbWVyc3Bl YzY0ICppdHMsCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3Qgb2xkX2l0aW1lcnNwZWMzMiAqdWl0cyk7 CjE0NDc0OiBleHRlcm4gaW50IHB1dF9vbGRfaXRpbWVyc3BlYzMyKGNvbnN0IHN0cnVjdCBpdGlt ZXJzcGVjNjQgKml0cywKMTQ0NzQ6ICAgIHN0cnVjdCBvbGRfaXRpbWVyc3BlYzMyICp1aXRzKTsK MTQ0NzQ6IHN0cnVjdCBfX2tlcm5lbF90aW1leDsKMTQ0NzQ6IGludCBnZXRfb2xkX3RpbWV4MzIo c3RydWN0IF9fa2VybmVsX3RpbWV4ICosIGNvbnN0IHN0cnVjdCBvbGRfdGltZXgzMiAqKTsKMTQ0 NzQ6IGludCBwdXRfb2xkX3RpbWV4MzIoc3RydWN0IG9sZF90aW1leDMyICosIGNvbnN0IHN0cnVj dCBfX2tlcm5lbF90aW1leCAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBfX2tlcm5lbF9vbGRfdGlt ZXZhbCBuc190b19rZXJuZWxfb2xkX3RpbWV2YWwoczY0IG5zZWMpOwoxNDQ3NDogIyA3NSAiLi9p bmNsdWRlL2xpbnV4L3RpbWUuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGl0aW1lcnNwZWM2NF92 YWxpZChjb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYzY0ICppdHMpCjE0NDc0OiB7CjE0NDc0OiAgaWYg KCF0aW1lc3BlYzY0X3ZhbGlkKCYoaXRzLT5pdF9pbnRlcnZhbCkpIHx8CjE0NDc0OiAgICF0aW1l c3BlYzY0X3ZhbGlkKCYoaXRzLT5pdF92YWx1ZSkpKQoxNDQ3NDogICByZXR1cm4gZmFsc2U7CjE0 NDc0OiAKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTE0ICIuL2luY2x1 ZGUvbGludXgvdGltZS5oIgoxNDQ3NDogc3RydWN0IHRpbWVuc19vZmZzZXQgewoxNDQ3NDogIHM2 NCBzZWM7CjE0NDc0OiAgdTY0IG5zZWM7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNSAiLi9pbmNsdWRl L2xpbnV4L2t0aW1lLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaCIg MQoxNDQ3NDogIyAxMSAiLi9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaCIKMTQ0NzQ6ICMgMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS9wYXJhbS5oIiAxCjE0NDc0OiAjIDEy ICIuL2luY2x1ZGUvbGludXgvamlmZmllcy5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9nZW5l cmF0ZWQvdGltZWNvbnN0LmgiIDEKMTQ0NzQ6ICMgMTMgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVz LmgiIDIKMTQ0NzQ6ICMgNjAgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVzLmgiCjE0NDc0OiBleHRl cm4gaW50IHJlZ2lzdGVyX3JlZmluZWRfamlmZmllcyhsb25nIGNsb2NrX3RpY2tfcmF0ZSk7CjE0 NDc0OiAjIDgwICIuL2luY2x1ZGUvbGludXgvamlmZmllcy5oIgoxNDQ3NDogZXh0ZXJuIHU2NCBf X2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikpKSwgX19zZWN0aW9uX18oIi5kYXRh Li5jYWNoZWxpbmVfYWxpZ25lZCIpKSkgamlmZmllc182NDsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25l ZCBsb25nIHZvbGF0aWxlIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICg2KSkpLCBf X3NlY3Rpb25fXygiLmRhdGEuLmNhY2hlbGluZV9hbGlnbmVkIikpKSBqaWZmaWVzOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQgZ2V0X2ppZmZpZXNfNjQodm9pZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHU2NClqaWZmaWVzOwoxNDQ3NDogfQoxNDQ3NDogIyAx OTAgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVzLmgiCjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9u ZyBwcmVzZXRfbHBqOwoxNDQ3NDogIyAyOTEgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVzLmgiCjE0 NDc0OiBleHRlcm4gdW5zaWduZWQgaW50IGppZmZpZXNfdG9fbXNlY3MoY29uc3QgdW5zaWduZWQg bG9uZyBqKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQgamlmZmllc190b191c2Vjcyhjb25z dCB1bnNpZ25lZCBsb25nIGopOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQgamlmZmllc190b19uc2Vjcyhj b25zdCB1bnNpZ25lZCBsb25nIGopCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh1NjQpamlmZmll c190b191c2VjcyhqKSAqIDEwMDBMOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdTY0 IGppZmZpZXM2NF90b19uc2Vjcyh1NjQgaik7CjE0NDc0OiBleHRlcm4gdTY0IGppZmZpZXM2NF90 b19tc2Vjcyh1NjQgaik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIF9fbXNl Y3NfdG9famlmZmllcyhjb25zdCB1bnNpZ25lZCBpbnQgbSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF9tc2Vjc190 b19qaWZmaWVzKGNvbnN0IHVuc2lnbmVkIGludCBtKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAo bSArICgxMDAwTCAvIDI1MCkgLSAxKSAvICgxMDAwTCAvIDI1MCk7CjE0NDc0OiB9CjE0NDc0OiAj IDM2NCAiLi9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgdW5zaWduZWQgbG9uZyBtc2Vjc190b19qaWZmaWVzKGNvbnN0IHVu c2lnbmVkIGludCBtKQoxNDQ3NDogewoxNDQ3NDogIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcCht KSkgewoxNDQ3NDogICBpZiAoKGludCltIDwgMCkKMTQ0NzQ6ICAgIHJldHVybiAoKCgobG9uZyko fjBVTCA+PiAxKSkgPj4gMSktMSk7CjE0NDc0OiAgIHJldHVybiBfbXNlY3NfdG9famlmZmllcyht KTsKMTQ0NzQ6ICB9IGVsc2UgewoxNDQ3NDogICByZXR1cm4gX19tc2Vjc190b19qaWZmaWVzKG0p OwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcg X191c2Vjc190b19qaWZmaWVzKGNvbnN0IHVuc2lnbmVkIGludCB1KTsKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dW5zaWduZWQgbG9uZyBfdXNlY3NfdG9famlmZmllcyhjb25zdCB1bnNpZ25lZCBpbnQgdSkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHUgKyAoMTAwMDAwMEwgLyAyNTApIC0gMSkgLyAoMTAwMDAw MEwgLyAyNTApOwoxNDQ3NDogfQoxNDQ3NDogIyA0MTEgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVz LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxv bmcgdXNlY3NfdG9famlmZmllcyhjb25zdCB1bnNpZ25lZCBpbnQgdSkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AodSkpIHsKMTQ0NzQ6ICAgaWYgKHUgPiBqaWZmaWVz X3RvX3VzZWNzKCgoKChsb25nKSh+MFVMID4+IDEpKSA+PiAxKS0xKSkpCjE0NDc0OiAgICByZXR1 cm4gKCgoKGxvbmcpKH4wVUwgPj4gMSkpID4+IDEpLTEpOwoxNDQ3NDogICByZXR1cm4gX3VzZWNz X3RvX2ppZmZpZXModSk7CjE0NDc0OiAgfSBlbHNlIHsKMTQ0NzQ6ICAgcmV0dXJuIF9fdXNlY3Nf dG9famlmZmllcyh1KTsKMTQ0NzQ6ICB9CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1 bnNpZ25lZCBsb25nIHRpbWVzcGVjNjRfdG9famlmZmllcyhjb25zdCBzdHJ1Y3QgdGltZXNwZWM2 NCAqdmFsdWUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgamlmZmllc190b190aW1lc3BlYzY0KGNvbnN0 IHVuc2lnbmVkIGxvbmcgamlmZmllcywKMTQ0NzQ6ICAgICAgIHN0cnVjdCB0aW1lc3BlYzY0ICp2 YWx1ZSk7CjE0NDc0OiBleHRlcm4gY2xvY2tfdCBqaWZmaWVzX3RvX2Nsb2NrX3QodW5zaWduZWQg bG9uZyB4KTsKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGNsb2NrX3QgamlmZmllc19kZWx0YV90b19jbG9ja190KGxvbmcgZGVs dGEpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGppZmZpZXNfdG9fY2xvY2tfdChfX2J1aWx0aW5f Y2hvb3NlX2V4cHIoKCghIShzaXplb2YoKHR5cGVvZigwTCkgKikxID09ICh0eXBlb2YoZGVsdGEp ICopMSkpKSAmJiAoKHNpemVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcp KDBMKSAqIDBsKSkgOiAoaW50ICopOCkpKSAmJiAoc2l6ZW9mKGludCkgPT0gc2l6ZW9mKCooOCA/ ICgodm9pZCAqKSgobG9uZykoZGVsdGEpICogMGwpKSA6IChpbnQgKik4KSkpKSksICgoMEwpID4g KGRlbHRhKSA/ICgwTCkgOiAoZGVsdGEpKSwgKHsgdHlwZW9mKDBMKSBfX1VOSVFVRV9JRF9fX3g5 ID0gKDBMKTsgdHlwZW9mKGRlbHRhKSBfX1VOSVFVRV9JRF9fX3kxMCA9IChkZWx0YSk7ICgoX19V TklRVUVfSURfX194OSkgPiAoX19VTklRVUVfSURfX195MTApID8gKF9fVU5JUVVFX0lEX19feDkp IDogKF9fVU5JUVVFX0lEX19feTEwKSk7IH0pKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVu c2lnbmVkIGludCBqaWZmaWVzX2RlbHRhX3RvX21zZWNzKGxvbmcgZGVsdGEpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIGppZmZpZXNfdG9fbXNlY3MoX19idWlsdGluX2Nob29zZV9leHByKCgoISEo c2l6ZW9mKCh0eXBlb2YoMEwpICopMSA9PSAodHlwZW9mKGRlbHRhKSAqKTEpKSkgJiYgKChzaXpl b2YoaW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lkICopKChsb25nKSgwTCkgKiAwbCkpIDogKGlu dCAqKTgpKSkgJiYgKHNpemVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcp KGRlbHRhKSAqIDBsKSkgOiAoaW50ICopOCkpKSkpLCAoKDBMKSA+IChkZWx0YSkgPyAoMEwpIDog KGRlbHRhKSksICh7IHR5cGVvZigwTCkgX19VTklRVUVfSURfX194MTEgPSAoMEwpOyB0eXBlb2Yo ZGVsdGEpIF9fVU5JUVVFX0lEX19feTEyID0gKGRlbHRhKTsgKChfX1VOSVFVRV9JRF9fX3gxMSkg PiAoX19VTklRVUVfSURfX195MTIpID8gKF9fVU5JUVVFX0lEX19feDExKSA6IChfX1VOSVFVRV9J RF9fX3kxMikpOyB9KSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdW5zaWduZWQg bG9uZyBjbG9ja190X3RvX2ppZmZpZXModW5zaWduZWQgbG9uZyB4KTsKMTQ0NzQ6IGV4dGVybiB1 NjQgamlmZmllc182NF90b19jbG9ja190KHU2NCB4KTsKMTQ0NzQ6IGV4dGVybiB1NjQgbnNlY190 b19jbG9ja190KHU2NCB4KTsKMTQ0NzQ6IGV4dGVybiB1NjQgbnNlY3NfdG9famlmZmllczY0KHU2 NCBuKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIG5zZWNzX3RvX2ppZmZpZXModTY0IG4p OwoxNDQ3NDogIyAyNiAiLi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgiIDIKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiB0eXBlZGVmIHM2NCBrdGltZV90OwoxNDQ3NDogIyAzNyAiLi9pbmNsdWRlL2xpbnV4 L2t0aW1lLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGt0aW1lX3NldChjb25zdCBzNjQgc2VjcywgY29uc3Qg dW5zaWduZWQgbG9uZyBuc2VjcykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoX19idWlsdGluX2V4cGVj dCghIShzZWNzID49ICgoKHM2NCl+KCh1NjQpMSA8PCA2MykpIC8gMTAwMDAwMDAwMEwpKSwgMCkp CjE0NDc0OiAgIHJldHVybiAoKHM2NCl+KCh1NjQpMSA8PCA2MykpOwoxNDQ3NDogCjE0NDc0OiAg cmV0dXJuIHNlY3MgKiAxMDAwMDAwMDAwTCArIChzNjQpbnNlY3M7CjE0NDc0OiB9CjE0NDc0OiAj IDcwICIuL2luY2x1ZGUvbGludXgva3RpbWUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3QgdGltZXNwZWM2NF90 b19rdGltZShzdHJ1Y3QgdGltZXNwZWM2NCB0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga3Rp bWVfc2V0KHRzLnR2X3NlYywgdHMudHZfbnNlYyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IGt0aW1lX3RvX25zKGNvbnN0IGt0aW1l X3Qga3QpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGt0OwoxNDQ3NDogfQoxNDQ3NDogIyA5NCAi Li9pbmNsdWRlL2xpbnV4L2t0aW1lLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQga3RpbWVfY29tcGFyZShjb25zdCBr dGltZV90IGNtcDEsIGNvbnN0IGt0aW1lX3QgY21wMikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoY21w MSA8IGNtcDIpCjE0NDc0OiAgIHJldHVybiAtMTsKMTQ0NzQ6ICBpZiAoY21wMSA+IGNtcDIpCjE0 NDc0OiAgIHJldHVybiAxOwoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogIyAxMTAg Ii4vaW5jbHVkZS9saW51eC9rdGltZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBrdGltZV9hZnRlcihjb25zdCBr dGltZV90IGNtcDEsIGNvbnN0IGt0aW1lX3QgY21wMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g a3RpbWVfY29tcGFyZShjbXAxLCBjbXAyKSA+IDA7CjE0NDc0OiB9CjE0NDc0OiAjIDEyMiAiLi9p bmNsdWRlL2xpbnV4L2t0aW1lLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGt0aW1lX2JlZm9yZShjb25zdCBrdGlt ZV90IGNtcDEsIGNvbnN0IGt0aW1lX3QgY21wMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga3Rp bWVfY29tcGFyZShjbXAxLCBjbXAyKSA8IDA7CjE0NDc0OiB9CjE0NDc0OiAjIDE0NyAiLi9pbmNs dWRlL2xpbnV4L2t0aW1lLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQga3RpbWVfZGl2bnMoY29uc3Qga3RpbWVfdCBr dCwgczY0IGRpdikKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogICh7IGludCBfX3JldF93YXJuX29uID0gISEoZGl2IDwgMCk7IGlmIChfX2J1aWx0aW5fZXhw ZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGls ZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJs ZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6 YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5Ojpm aWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMy IiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9u IiA6IDogImkiICgiaW5jbHVkZS9saW51eC9rdGltZS5oIiksICJpIiAoMTUzKSwgImkiICgoMSA8 PCAwKXwoKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdo aWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2Fy ZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6 IDogImkiICgxMykpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRf d2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6ICByZXR1cm4ga3QgLyBkaXY7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgczY0IGt0aW1lX3RvX3VzKGNvbnN0IGt0aW1lX3Qga3QpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGt0aW1lX2Rpdm5zKGt0LCAxMDAwTCk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NCBrdGltZV90b19tcyhjb25zdCBrdGltZV90IGt0KQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBrdGltZV9kaXZucyhrdCwgMTAwMDAwMEwpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzNjQga3RpbWVfdXNfZGVsdGEoY29uc3Qga3RpbWVfdCBsYXRlciwgY29uc3Qga3RpbWVf dCBlYXJsaWVyKQoxNDQ3NDogewoxNDQ3NDogICAgICAgIHJldHVybiBrdGltZV90b191cygoKGxh dGVyKSAtIChlYXJsaWVyKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQga3RpbWVfbXNf ZGVsdGEoY29uc3Qga3RpbWVfdCBsYXRlciwgY29uc3Qga3RpbWVfdCBlYXJsaWVyKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBrdGltZV90b19tcygoKGxhdGVyKSAtIChlYXJsaWVyKSkpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGt0aW1lX2FkZF91cyhjb25zdCBrdGltZV90IGt0 LCBjb25zdCB1NjQgdXNlYykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKChrdCkgKyAodXNlYyAq IDEwMDBMKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3Qga3RpbWVfYWRkX21zKGNv bnN0IGt0aW1lX3Qga3QsIGNvbnN0IHU2NCBtc2VjKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAo KGt0KSArIChtc2VjICogMTAwMDAwMEwpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVf dCBrdGltZV9zdWJfdXMoY29uc3Qga3RpbWVfdCBrdCwgY29uc3QgdTY0IHVzZWMpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuICgoa3QpIC0gKHVzZWMgKiAxMDAwTCkpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBrdGltZV90IGt0aW1lX3N1Yl9tcyhjb25zdCBrdGltZV90IGt0LCBjb25zdCB1NjQg bXNlYykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKChrdCkgLSAobXNlYyAqIDEwMDAwMDBMKSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBrdGltZV90IGt0aW1lX2FkZF9zYWZlKGNv bnN0IGt0aW1lX3QgbGhzLCBjb25zdCBrdGltZV90IHJocyk7CjE0NDc0OiAjIDIwOCAiLi9pbmNs dWRlL2xpbnV4L2t0aW1lLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jl c3VsdF9fKSkgYm9vbCBrdGltZV90b190aW1lc3BlYzY0X2NvbmQoY29uc3Qga3RpbWVfdCBrdCwK MTQ0NzQ6ICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCjE0NDc0OiB7CjE0NDc0 OiAgaWYgKGt0KSB7CjE0NDc0OiAgICp0cyA9IG5zX3RvX3RpbWVzcGVjNjQoKGt0KSk7CjE0NDc0 OiAgIHJldHVybiB0cnVlOwoxNDQ3NDogIH0gZWxzZSB7CjE0NDc0OiAgIHJldHVybiBmYWxzZTsK MTQ0NzQ6ICB9CjE0NDc0OiB9CjE0NDc0OiAjIDIyOCAiLi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBrdGltZV90IG5zX3RvX2t0aW1lKHU2NCBucykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gbnM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3QgbXNfdG9fa3RpbWUodTY0IG1z KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBtcyAqIDEwMDAwMDBMOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oIiAxCjE0NDc0OiAjIDkg Ii4vaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oIgoxNDQ3NDogdm9pZCB0aW1la2VlcGluZ19p bml0KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCB0aW1la2VlcGluZ19zdXNwZW5kZWQ7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgdXBkYXRlX3Byb2Nlc3NfdGltZXMoaW50IHVz ZXIpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgeHRpbWVfdXBkYXRlKHVuc2lnbmVkIGxvbmcgdGlja3Mp OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGRvX3Nl dHRpbWVvZmRheTY0KGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CjE0NDc0OiBleHRlcm4g aW50IGRvX3N5c19zZXR0aW1lb2ZkYXk2NChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHYsCjE0 NDc0OiAgICAgIGNvbnN0IHN0cnVjdCB0aW1lem9uZSAqdHopOwoxNDQ3NDogIyA0MSAiLi9pbmNs dWRlL2xpbnV4L3RpbWVrZWVwaW5nLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBrdGltZV9nZXRfcmF3 X3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGt0aW1lX2dl dF90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CjE0NDc0OiBleHRlcm4gdm9pZCBrdGltZV9n ZXRfcmVhbF90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0dik7CjE0NDc0OiBleHRlcm4gdm9pZCBr dGltZV9nZXRfY29hcnNlX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIGt0aW1lX2dldF9jb2Fyc2VfcmVhbF90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7 CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZ2V0Ym9vdHRpbWU2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMp OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdGltZTY0X3Qg a3RpbWVfZ2V0X3NlY29uZHModm9pZCk7CjE0NDc0OiBleHRlcm4gdGltZTY0X3QgX19rdGltZV9n ZXRfcmVhbF9zZWNvbmRzKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHRpbWU2NF90IGt0aW1lX2dldF9y ZWFsX3NlY29uZHModm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZW51bSB0a19vZmZzZXRzIHsKMTQ0NzQ6ICBUS19PRkZTX1JFQUwsCjE0NDc0OiAg VEtfT0ZGU19CT09ULAoxNDQ3NDogIFRLX09GRlNfVEFJLAoxNDQ3NDogIFRLX09GRlNfTUFYLAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGt0aW1lX3Qga3RpbWVfZ2V0KHZvaWQpOwox NDQ3NDogZXh0ZXJuIGt0aW1lX3Qga3RpbWVfZ2V0X3dpdGhfb2Zmc2V0KGVudW0gdGtfb2Zmc2V0 cyBvZmZzKTsKMTQ0NzQ6IGV4dGVybiBrdGltZV90IGt0aW1lX2dldF9jb2Fyc2Vfd2l0aF9vZmZz ZXQoZW51bSB0a19vZmZzZXRzIG9mZnMpOwoxNDQ3NDogZXh0ZXJuIGt0aW1lX3Qga3RpbWVfbW9u b190b19hbnkoa3RpbWVfdCB0bW9ubywgZW51bSB0a19vZmZzZXRzIG9mZnMpOwoxNDQ3NDogZXh0 ZXJuIGt0aW1lX3Qga3RpbWVfZ2V0X3Jhdyh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB1MzIga3RpbWVf Z2V0X3Jlc29sdXRpb25fbnModm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGt0aW1lX3Qga3RpbWVfZ2V0X3JlYWwodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4ga3RpbWVfZ2V0X3dpdGhfb2Zmc2V0KFRLX09GRlNfUkVBTCk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGt0aW1lX3Qga3RpbWVfZ2V0X2NvYXJzZV9yZWFsKHZvaWQpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGt0aW1lX2dldF9jb2Fyc2Vfd2l0aF9vZmZzZXQoVEtfT0ZGU19SRUFMKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkga3RpbWVfdCBrdGltZV9nZXRfYm9vdHRpbWUodm9pZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4ga3RpbWVfZ2V0X3dpdGhfb2Zmc2V0KFRLX09GRlNfQk9PVCk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGt0aW1lX3Qga3RpbWVfZ2V0X2NvYXJzZV9ib290dGltZSh2b2lkKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBrdGltZV9nZXRfY29hcnNlX3dpdGhfb2Zmc2V0KFRLX09G RlNfQk9PVCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGt0aW1lX3Qga3RpbWVfZ2V0X2Nsb2NrdGFpKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IGt0aW1lX2dldF93aXRoX29mZnNldChUS19PRkZTX1RBSSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGt0aW1lX3Qga3RpbWVfZ2V0X2NvYXJzZV9jbG9ja3RhaSh2b2lkKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBrdGltZV9nZXRfY29hcnNlX3dpdGhfb2Zmc2V0KFRLX09GRlNfVEFJKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBrdGltZV9nZXRfY29hcnNlKHZvaWQpCjE0NDc0 OiB7CjE0NDc0OiAgc3RydWN0IHRpbWVzcGVjNjQgdHM7CjE0NDc0OiAKMTQ0NzQ6ICBrdGltZV9n ZXRfY29hcnNlX3RzNjQoJnRzKTsKMTQ0NzQ6ICByZXR1cm4gdGltZXNwZWM2NF90b19rdGltZSh0 cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRfY29hcnNlX25zKHZvaWQp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGt0aW1lX3RvX25zKGt0aW1lX2dldF9jb2Fyc2UoKSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRfY29hcnNlX3JlYWxfbnModm9p ZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga3RpbWVfdG9fbnMoa3RpbWVfZ2V0X2NvYXJzZV9y ZWFsKCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQga3RpbWVfZ2V0X2NvYXJzZV9ib290 dGltZV9ucyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrdGltZV90b19ucyhrdGltZV9n ZXRfY29hcnNlX2Jvb3R0aW1lKCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQga3RpbWVf Z2V0X2NvYXJzZV9jbG9ja3RhaV9ucyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrdGlt ZV90b19ucyhrdGltZV9nZXRfY29hcnNlX2Nsb2NrdGFpKCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGt0aW1lX21vbm9fdG9fcmVhbChr dGltZV90IG1vbm8pCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGt0aW1lX21vbm9fdG9fYW55KG1v bm8sIFRLX09GRlNfUkVBTCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRf bnModm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga3RpbWVfdG9fbnMoa3RpbWVfZ2V0KCkp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQga3RpbWVfZ2V0X3JlYWxfbnModm9pZCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga3RpbWVfdG9fbnMoa3RpbWVfZ2V0X3JlYWwoKSk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRfYm9vdHRpbWVfbnModm9pZCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4ga3RpbWVfdG9fbnMoa3RpbWVfZ2V0X2Jvb3R0aW1lKCkpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1NjQga3RpbWVfZ2V0X2Nsb2NrdGFpX25zKHZvaWQpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGt0aW1lX3RvX25zKGt0aW1lX2dldF9jbG9ja3RhaSgpKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0IGt0aW1lX2dldF9yYXdfbnModm9pZCkKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4ga3RpbWVfdG9fbnMoa3RpbWVfZ2V0X3JhdygpKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHU2NCBrdGltZV9nZXRfbW9ub19mYXN0X25zKHZvaWQpOwoxNDQ3 NDogZXh0ZXJuIHU2NCBrdGltZV9nZXRfcmF3X2Zhc3RfbnModm9pZCk7CjE0NDc0OiBleHRlcm4g dTY0IGt0aW1lX2dldF9ib290X2Zhc3RfbnModm9pZCk7CjE0NDc0OiBleHRlcm4gdTY0IGt0aW1l X2dldF9yZWFsX2Zhc3RfbnModm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGt0aW1lX2dldF9ib290dGltZV90czY0KHN0cnVj dCB0aW1lc3BlYzY0ICp0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICAqdHMgPSBuc190b190aW1lc3BlYzY0 KChrdGltZV9nZXRfYm9vdHRpbWUoKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGt0 aW1lX2dldF9jb2Fyc2VfYm9vdHRpbWVfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCjE0NDc0 OiB7CjE0NDc0OiAgKnRzID0gbnNfdG9fdGltZXNwZWM2NCgoa3RpbWVfZ2V0X2NvYXJzZV9ib290 dGltZSgpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHRpbWU2NF90IGt0aW1lX2dldF9ib290 dGltZV9zZWNvbmRzKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGt0aW1lX2Rpdm5zKGt0 aW1lX2dldF9jb2Fyc2VfYm9vdHRpbWUoKSwgMTAwMDAwMDAwMEwpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGt0aW1lX2dldF9jbG9ja3RhaV90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0 cykKMTQ0NzQ6IHsKMTQ0NzQ6ICAqdHMgPSBuc190b190aW1lc3BlYzY0KChrdGltZV9nZXRfY2xv Y2t0YWkoKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGt0aW1lX2dldF9jb2Fyc2Vf Y2xvY2t0YWlfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCjE0NDc0OiB7CjE0NDc0OiAgKnRz ID0gbnNfdG9fdGltZXNwZWM2NCgoa3RpbWVfZ2V0X2NvYXJzZV9jbG9ja3RhaSgpKSk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHRpbWU2NF90IGt0aW1lX2dldF9jbG9ja3RhaV9zZWNvbmRzKHZv aWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGt0aW1lX2Rpdm5zKGt0aW1lX2dldF9jb2Fyc2Vf Y2xvY2t0YWkoKSwgMTAwMDAwMDAwMEwpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCB0aW1la2VlcGluZ19ydGNfc2tpcHN1c3BlbmQo dm9pZCk7CjE0NDc0OiBleHRlcm4gYm9vbCB0aW1la2VlcGluZ19ydGNfc2tpcHJlc3VtZSh2b2lk KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgdGltZWtlZXBpbmdfaW5qZWN0X3NsZWVwdGlt ZTY0KGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICpkZWx0YSk7CjE0NDc0OiAjIDIzNCAiLi9pbmNs dWRlL2xpbnV4L3RpbWVrZWVwaW5nLmgiCjE0NDc0OiBzdHJ1Y3Qgc3lzdGVtX3RpbWVfc25hcHNo b3QgewoxNDQ3NDogIHU2NCBjeWNsZXM7CjE0NDc0OiAga3RpbWVfdCByZWFsOwoxNDQ3NDogIGt0 aW1lX3QgcmF3OwoxNDQ3NDogIHVuc2lnbmVkIGludCBjbG9ja193YXNfc2V0X3NlcTsKMTQ0NzQ6 ICB1OCBjc193YXNfY2hhbmdlZF9zZXE7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNDkgIi4vaW5jbHVk ZS9saW51eC90aW1la2VlcGluZy5oIgoxNDQ3NDogc3RydWN0IHN5c3RlbV9kZXZpY2VfY3Jvc3N0 c3RhbXAgewoxNDQ3NDogIGt0aW1lX3QgZGV2aWNlOwoxNDQ3NDogIGt0aW1lX3Qgc3lzX3JlYWx0 aW1lOwoxNDQ3NDogIGt0aW1lX3Qgc3lzX21vbm9yYXc7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNjIg Ii4vaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oIgoxNDQ3NDogc3RydWN0IHN5c3RlbV9jb3Vu dGVydmFsX3QgewoxNDQ3NDogIHU2NCBjeWNsZXM7CjE0NDc0OiAgc3RydWN0IGNsb2Nrc291cmNl ICpjczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgZ2V0X2RldmljZV9zeXN0ZW1fY3Jvc3N0c3RhbXAoCjE0NDc0OiAgICBpbnQgKCpn ZXRfdGltZV9mbikoa3RpbWVfdCAqZGV2aWNlX3RpbWUsCjE0NDc0OiAgICAgc3RydWN0IHN5c3Rl bV9jb3VudGVydmFsX3QgKnN5c3RlbV9jb3VudGVydmFsLAoxNDQ3NDogICAgIHZvaWQgKmN0eCks CjE0NDc0OiAgICB2b2lkICpjdHgsCjE0NDc0OiAgICBzdHJ1Y3Qgc3lzdGVtX3RpbWVfc25hcHNo b3QgKmhpc3RvcnksCjE0NDc0OiAgICBzdHJ1Y3Qgc3lzdGVtX2RldmljZV9jcm9zc3RzdGFtcCAq eHRzdGFtcCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2 b2lkIGt0aW1lX2dldF9zbmFwc2hvdChzdHJ1Y3Qgc3lzdGVtX3RpbWVfc25hcHNob3QgKnN5c3Rp bWVfc25hcHNob3QpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRl cm4gaW50IHBlcnNpc3RlbnRfY2xvY2tfaXNfbG9jYWw7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2 b2lkIHJlYWRfcGVyc2lzdGVudF9jbG9jazY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CjE0NDc0 OiB2b2lkIHJlYWRfcGVyc2lzdGVudF93YWxsX2FuZF9ib290X29mZnNldChzdHJ1Y3QgdGltZXNw ZWM2NCAqd2FsbF9jbG9jaywKMTQ0NzQ6ICAgICAgICBzdHJ1Y3QgdGltZXNwZWM2NCAqYm9vdF9v ZmZzZXQpOwoxNDQ3NDogZXh0ZXJuIGludCB1cGRhdGVfcGVyc2lzdGVudF9jbG9jazY0KHN0cnVj dCB0aW1lc3BlYzY0IG5vdyk7CjE0NDc0OiAjIDIzOSAiLi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgi IDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3RpbWVrZWVwaW5nMzIuaCIgMQoxNDQ3NDog IyA5ICIuL2luY2x1ZGUvbGludXgvdGltZWtlZXBpbmczMi5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9u ZyBnZXRfc2Vjb25kcyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrdGltZV9nZXRfcmVh bF9zZWNvbmRzKCk7CjE0NDc0OiB9CjE0NDc0OiAjIDI0MCAiLi9pbmNsdWRlL2xpbnV4L2t0aW1l LmgiIDIKMTQ0NzQ6ICMgNyAiLi9pbmNsdWRlL2xpbnV4L3RpbWVyLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogIyAxICIuL2luY2x1ZGUvbGludXgvZGVidWdvYmplY3RzLmgiIDEKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkZWJ1 Z19vYmpfc3RhdGUgewoxNDQ3NDogIE9ERUJVR19TVEFURV9OT05FLAoxNDQ3NDogIE9ERUJVR19T VEFURV9JTklULAoxNDQ3NDogIE9ERUJVR19TVEFURV9JTkFDVElWRSwKMTQ0NzQ6ICBPREVCVUdf U1RBVEVfQUNUSVZFLAoxNDQ3NDogIE9ERUJVR19TVEFURV9ERVNUUk9ZRUQsCjE0NDc0OiAgT0RF QlVHX1NUQVRFX05PVEFWQUlMQUJMRSwKMTQ0NzQ6ICBPREVCVUdfU1RBVEVfTUFYLAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRlYnVnX29ial9kZXNjcjsKMTQ0NzQ6ICMgMjggIi4v aW5jbHVkZS9saW51eC9kZWJ1Z29iamVjdHMuaCIKMTQ0NzQ6IHN0cnVjdCBkZWJ1Z19vYmogewox NDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlIG5vZGU7CjE0NDc0OiAgZW51bSBkZWJ1Z19vYmpfc3Rh dGUgc3RhdGU7CjE0NDc0OiAgdW5zaWduZWQgaW50IGFzdGF0ZTsKMTQ0NzQ6ICB2b2lkICpvYmpl Y3Q7CjE0NDc0OiAgc3RydWN0IGRlYnVnX29ial9kZXNjciAqZGVzY3I7CjE0NDc0OiB9OwoxNDQ3 NDogIyA1NSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnb2JqZWN0cy5oIgoxNDQ3NDogc3RydWN0IGRl YnVnX29ial9kZXNjciB7CjE0NDc0OiAgY29uc3QgY2hhciAqbmFtZTsKMTQ0NzQ6ICB2b2lkICoo KmRlYnVnX2hpbnQpKHZvaWQgKmFkZHIpOwoxNDQ3NDogIGJvb2wgKCppc19zdGF0aWNfb2JqZWN0 KSh2b2lkICphZGRyKTsKMTQ0NzQ6ICBib29sICgqZml4dXBfaW5pdCkodm9pZCAqYWRkciwgZW51 bSBkZWJ1Z19vYmpfc3RhdGUgc3RhdGUpOwoxNDQ3NDogIGJvb2wgKCpmaXh1cF9hY3RpdmF0ZSko dm9pZCAqYWRkciwgZW51bSBkZWJ1Z19vYmpfc3RhdGUgc3RhdGUpOwoxNDQ3NDogIGJvb2wgKCpm aXh1cF9kZXN0cm95KSh2b2lkICphZGRyLCBlbnVtIGRlYnVnX29ial9zdGF0ZSBzdGF0ZSk7CjE0 NDc0OiAgYm9vbCAoKmZpeHVwX2ZyZWUpKHZvaWQgKmFkZHIsIGVudW0gZGVidWdfb2JqX3N0YXRl IHN0YXRlKTsKMTQ0NzQ6ICBib29sICgqZml4dXBfYXNzZXJ0X2luaXQpKHZvaWQgKmFkZHIsIGVu dW0gZGVidWdfb2JqX3N0YXRlIHN0YXRlKTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDg4ICIuL2luY2x1 ZGUvbGludXgvZGVidWdvYmplY3RzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBkZWJ1Z19vYmplY3Rf aW5pdCAodm9pZCAqYWRkciwgc3RydWN0IGRlYnVnX29ial9kZXNjciAqZGVzY3IpIHsgfQoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZAoxNDQ3NDogZGVidWdfb2JqZWN0X2luaXRfb25fc3RhY2sodm9pZCAqYWRkciwgc3Ry dWN0IGRlYnVnX29ial9kZXNjciAqZGVzY3IpIHsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBkZWJ1Z19v YmplY3RfYWN0aXZhdGUgKHZvaWQgKmFkZHIsIHN0cnVjdCBkZWJ1Z19vYmpfZGVzY3IgKmRlc2Ny KSB7IHJldHVybiAwOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBkZWJ1Z19vYmplY3RfZGVhY3RpdmF0 ZSh2b2lkICphZGRyLCBzdHJ1Y3QgZGVidWdfb2JqX2Rlc2NyICpkZXNjcikgeyB9CjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkCjE0NDc0OiBkZWJ1Z19vYmplY3RfZGVzdHJveSAodm9pZCAqYWRkciwgc3RydWN0IGRlYnVn X29ial9kZXNjciAqZGVzY3IpIHsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogZGVidWdfb2JqZWN0X2Zy ZWUgKHZvaWQgKmFkZHIsIHN0cnVjdCBkZWJ1Z19vYmpfZGVzY3IgKmRlc2NyKSB7IH0KMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQKMTQ0NzQ6IGRlYnVnX29iamVjdF9hc3NlcnRfaW5pdCh2b2lkICphZGRyLCBzdHJ1Y3Qg ZGVidWdfb2JqX2Rlc2NyICpkZXNjcikgeyB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZGVidWdfb2Jq ZWN0c19lYXJseV9pbml0KHZvaWQpIHsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZWJ1Z19vYmplY3RzX21lbV9p bml0KHZvaWQpIHsgfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQKMTQ0NzQ6IGRlYnVnX2NoZWNrX25vX29ial9mcmVlZChjb25zdCB2b2lkICphZGRy ZXNzLCB1bnNpZ25lZCBsb25nIHNpemUpIHsgfQoxNDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgv dGltZXIuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0aW1lcl9saXN0IHsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlIGVu dHJ5OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZXhwaXJlczsKMTQ0NzQ6ICB2b2lkICgqZnVuY3Rp b24pKHN0cnVjdCB0aW1lcl9saXN0ICopOwoxNDQ3NDogIHUzMiBmbGFnczsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6ICMgOTAgIi4vaW5jbHVkZS9saW51 eC90aW1lci5oIgoxNDQ3NDogdm9pZCBpbml0X3RpbWVyX2tleShzdHJ1Y3QgdGltZXJfbGlzdCAq dGltZXIsCjE0NDc0OiAgICAgICB2b2lkICgqZnVuYykoc3RydWN0IHRpbWVyX2xpc3QgKiksIHVu c2lnbmVkIGludCBmbGFncywKMTQ0NzQ6ICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBs b2NrX2NsYXNzX2tleSAqa2V5KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbml0X3RpbWVyX29uX3N0YWNrX2tleShz dHJ1Y3QgdGltZXJfbGlzdCAqdGltZXIsCjE0NDc0OiAgICAgICAgIHZvaWQgKCpmdW5jKShzdHJ1 Y3QgdGltZXJfbGlzdCAqKSwKMTQ0NzQ6ICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzLAoxNDQ3 NDogICAgICAgICBjb25zdCBjaGFyICpuYW1lLAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgbG9ja19j bGFzc19rZXkgKmtleSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbml0X3RpbWVyX2tleSh0aW1lciwgZnVu YywgZmxhZ3MsIG5hbWUsIGtleSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE0OSAiLi9pbmNsdWRlL2xp bnV4L3RpbWVyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRlc3Ryb3lfdGltZXJfb25fc3RhY2soc3RydWN0IHRp bWVyX2xpc3QgKnRpbWVyKSB7IH0KMTQ0NzQ6ICMgMTY1ICIuL2luY2x1ZGUvbGludXgvdGltZXIu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGludCB0aW1lcl9wZW5kaW5nKGNvbnN0IHN0cnVjdCB0aW1lcl9saXN0ICogdGlt ZXIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHRpbWVyLT5lbnRyeS5wcHJldiAhPSAoKHZvaWQg KikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgYWRkX3RpbWVyX29uKHN0 cnVjdCB0aW1lcl9saXN0ICp0aW1lciwgaW50IGNwdSk7CjE0NDc0OiBleHRlcm4gaW50IGRlbF90 aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKTsKMTQ0NzQ6IGV4dGVybiBpbnQgbW9kX3Rp bWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lciwgdW5zaWduZWQgbG9uZyBleHBpcmVzKTsKMTQ0 NzQ6IGV4dGVybiBpbnQgbW9kX3RpbWVyX3BlbmRpbmcoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVy LCB1bnNpZ25lZCBsb25nIGV4cGlyZXMpOwoxNDQ3NDogZXh0ZXJuIGludCB0aW1lcl9yZWR1Y2Uo c3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25lZCBsb25nIGV4cGlyZXMpOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gdm9pZCBhZGRfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGludCB0cnlfdG9fZGVsX3RpbWVyX3N5bmMoc3RydWN0IHRpbWVyX2xpc3Qg KnRpbWVyKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIGV4dGVybiBpbnQgZGVsX3RpbWVyX3N5 bmMoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGluaXRfdGltZXJzKHZvaWQp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgcnVuX2xvY2FsX3RpbWVycyh2b2lkKTsKMTQ0NzQ6IHN0cnVj dCBocnRpbWVyOwoxNDQ3NDogZXh0ZXJuIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGl0X3JlYWxfZm4o c3RydWN0IGhydGltZXIgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGN0bF90YWJs ZTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGludCBzeXNjdGxfdGltZXJfbWlncmF0 aW9uOwoxNDQ3NDogaW50IHRpbWVyX21pZ3JhdGlvbl9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUg KnRhYmxlLCBpbnQgd3JpdGUsCjE0NDc0OiAgICAgICAgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxl bnAsCjE0NDc0OiAgICAgICAgbG9mZl90ICpwcG9zKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1 bnNpZ25lZCBsb25nIF9fcm91bmRfamlmZmllcyh1bnNpZ25lZCBsb25nIGosIGludCBjcHUpOwox NDQ3NDogdW5zaWduZWQgbG9uZyBfX3JvdW5kX2ppZmZpZXNfcmVsYXRpdmUodW5zaWduZWQgbG9u ZyBqLCBpbnQgY3B1KTsKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgcm91bmRfamlmZmllcyh1bnNpZ25l ZCBsb25nIGopOwoxNDQ3NDogdW5zaWduZWQgbG9uZyByb3VuZF9qaWZmaWVzX3JlbGF0aXZlKHVu c2lnbmVkIGxvbmcgaik7CjE0NDc0OiAKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgX19yb3VuZF9qaWZm aWVzX3VwKHVuc2lnbmVkIGxvbmcgaiwgaW50IGNwdSk7CjE0NDc0OiB1bnNpZ25lZCBsb25nIF9f cm91bmRfamlmZmllc191cF9yZWxhdGl2ZSh1bnNpZ25lZCBsb25nIGosIGludCBjcHUpOwoxNDQ3 NDogdW5zaWduZWQgbG9uZyByb3VuZF9qaWZmaWVzX3VwKHVuc2lnbmVkIGxvbmcgaik7CjE0NDc0 OiB1bnNpZ25lZCBsb25nIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUodW5zaWduZWQgbG9uZyBq KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQgdGltZXJzX3ByZXBhcmVfY3B1KHVuc2lnbmVk IGludCBjcHUpOwoxNDQ3NDogaW50IHRpbWVyc19kZWFkX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsK MTQ0NzQ6ICMgMTAgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIgMgoxNDQ3NDogIyAxOCAi Li9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIgoxNDQ3NDogc3RydWN0IHdvcmtxdWV1ZV9zdHJ1 Y3Q7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB3b3JrX3N0cnVjdDsKMTQ0NzQ6IHR5cGVkZWYgdm9p ZCAoKndvcmtfZnVuY190KShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwoxNDQ3NDogdm9pZCBk ZWxheWVkX3dvcmtfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsK MTQ0NzQ6ICBXT1JLX1NUUlVDVF9QRU5ESU5HX0JJVCA9IDAsCjE0NDc0OiAgV09SS19TVFJVQ1Rf REVMQVlFRF9CSVQgPSAxLAoxNDQ3NDogIFdPUktfU1RSVUNUX1BXUV9CSVQgPSAyLAoxNDQ3NDog IFdPUktfU1RSVUNUX0xJTktFRF9CSVQgPSAzLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgV09SS19TVFJVQ1RfQ09MT1JfU0hJRlQgPSA0LAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBXT1JLX1NUUlVDVF9DT0xPUl9CSVRTID0gNCwKMTQ0NzQ6IAoxNDQ3NDogIFdPUktf U1RSVUNUX1BFTkRJTkcgPSAxIDw8IFdPUktfU1RSVUNUX1BFTkRJTkdfQklULAoxNDQ3NDogIFdP UktfU1RSVUNUX0RFTEFZRUQgPSAxIDw8IFdPUktfU1RSVUNUX0RFTEFZRURfQklULAoxNDQ3NDog IFdPUktfU1RSVUNUX1BXUSA9IDEgPDwgV09SS19TVFJVQ1RfUFdRX0JJVCwKMTQ0NzQ6ICBXT1JL X1NUUlVDVF9MSU5LRUQgPSAxIDw8IFdPUktfU1RSVUNUX0xJTktFRF9CSVQsCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgV09SS19TVFJVQ1RfU1RBVElDID0gMCwKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBXT1JLX05SX0NPTE9S UyA9ICgxIDw8IFdPUktfU1RSVUNUX0NPTE9SX0JJVFMpIC0gMSwKMTQ0NzQ6ICBXT1JLX05PX0NP TE9SID0gV09SS19OUl9DT0xPUlMsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFdPUktfQ1BVX1VO Qk9VTkQgPSA4LAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIFdPUktfU1RSVUNUX0ZMQUdfQklUUyA9IFdPUktfU1RSVUNUX0NPTE9SX1NISUZU ICsKMTQ0NzQ6ICAgICAgIFdPUktfU1RSVUNUX0NPTE9SX0JJVFMsCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIFdPUktfT0ZGUV9GTEFHX0JBU0UgPSBXT1JLX1NUUlVDVF9DT0xPUl9TSElGVCwKMTQ0 NzQ6IAoxNDQ3NDogIF9fV09SS19PRkZRX0NBTkNFTElORyA9IFdPUktfT0ZGUV9GTEFHX0JBU0Us CjE0NDc0OiAgV09SS19PRkZRX0NBTkNFTElORyA9ICgxIDw8IF9fV09SS19PRkZRX0NBTkNFTElO RyksCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgV09SS19PRkZRX0ZMQUdfQklUUyA9IDEsCjE0NDc0OiAgV09SS19PRkZRX1BPT0xfU0hJRlQg PSBXT1JLX09GRlFfRkxBR19CQVNFICsgV09SS19PRkZRX0ZMQUdfQklUUywKMTQ0NzQ6ICBXT1JL X09GRlFfTEVGVCA9IDY0IC0gV09SS19PRkZRX1BPT0xfU0hJRlQsCjE0NDc0OiAgV09SS19PRkZR X1BPT0xfQklUUyA9IFdPUktfT0ZGUV9MRUZUIDw9IDMxID8gV09SS19PRkZRX0xFRlQgOiAzMSwK MTQ0NzQ6ICBXT1JLX09GRlFfUE9PTF9OT05FID0gKDFMVSA8PCBXT1JLX09GRlFfUE9PTF9CSVRT KSAtIDEsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFdPUktfU1RSVUNUX0ZMQUdfTUFTSyA9ICgx VUwgPDwgV09SS19TVFJVQ1RfRkxBR19CSVRTKSAtIDEsCjE0NDc0OiAgV09SS19TVFJVQ1RfV1Ff REFUQV9NQVNLID0gfldPUktfU1RSVUNUX0ZMQUdfTUFTSywKMTQ0NzQ6ICBXT1JLX1NUUlVDVF9O T19QT09MID0gKHVuc2lnbmVkIGxvbmcpV09SS19PRkZRX1BPT0xfTk9ORSA8PCBXT1JLX09GRlFf UE9PTF9TSElGVCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgV09SS19CVVNZX1BFTkRJTkcgPSAx IDw8IDAsCjE0NDc0OiAgV09SS19CVVNZX1JVTk5JTkcgPSAxIDw8IDEsCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIFdPUktFUl9ERVNDX0xFTiA9IDI0LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IHdvcmtfc3RydWN0IHsKMTQ0NzQ6ICBhdG9taWNfbG9uZ190IGRhdGE7CjE0NDc0OiAg c3RydWN0IGxpc3RfaGVhZCBlbnRyeTsKMTQ0NzQ6ICB3b3JrX2Z1bmNfdCBmdW5jOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGVsYXllZF93b3JrIHsKMTQ0NzQ6ICBzdHJ1Y3Qgd29y a19zdHJ1Y3Qgd29yazsKMTQ0NzQ6ICBzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOwoxNDQ3NDogIGludCBj cHU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcmN1X3dvcmsgewoxNDQ3NDogIHN0 cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwoxNDQ3NDogIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCB3b3JrcXVldWVfYXR0cnMgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIGludCBuaWNlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgY3B1 bWFza192YXJfdCBjcHVtYXNrOwoxNDQ3NDogIyAxNTUgIi4vaW5jbHVkZS9saW51eC93b3JrcXVl dWUuaCIKMTQ0NzQ6ICBib29sIG5vX251bWE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1 Y3QgZGVsYXllZF93b3JrICp0b19kZWxheWVkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAqKSh3b3Jr KTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNjAodm9pZCkgX19hdHRy aWJ1dGVfXygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29udGFpbmVyX29m KCkiKSkpOyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKHdv cmspKSwgdHlwZW9mKCgoc3RydWN0IGRlbGF5ZWRfd29yayAqKTApLT53b3JrKSkgJiYgIV9fYnVp bHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCood29yaykpLCB0eXBlb2Yodm9pZCkpKSkp IF9fY29tcGlsZXRpbWVfYXNzZXJ0XzE2MCgpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgZGVsYXll ZF93b3JrICopKF9fbXB0ciAtIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgZGVsYXllZF93b3Jr LCB3b3JrKSkpOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHJjdV93b3JrICp0 b19yY3Vfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuICh7IHZvaWQgKl9fbXB0ciA9ICh2b2lkICopKHdvcmspOyBkbyB7IGV4dGVybiB2b2lkIF9f Y29tcGlsZXRpbWVfYXNzZXJ0XzE2NSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oInBv aW50ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb250YWluZXJfb2YoKSIpKSk7IGlmICghKCEoIV9fYnVp bHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCood29yaykpLCB0eXBlb2YoKChzdHJ1Y3Qg cmN1X3dvcmsgKikwKS0+d29yaykpICYmICFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5 cGVvZigqKHdvcmspKSwgdHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNjUo KTsgfSB3aGlsZSAoMCk7ICgoc3RydWN0IHJjdV93b3JrICopKF9fbXB0ciAtIF9fYnVpbHRpbl9v ZmZzZXRvZihzdHJ1Y3QgcmN1X3dvcmssIHdvcmspKSk7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZXhlY3V0ZV93b3JrIHsKMTQ0NzQ6ICBzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29y azsKMTQ0NzQ6IH07CjE0NDc0OiAjIDIxNSAiLi9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBfX2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmssIGludCBvbnN0 YWNrKSB7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgZGVzdHJveV93b3JrX29uX3N0YWNrKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykgeyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRlc3Ryb3lfZGVsYXllZF93b3JrX29uX3N0YWNr KHN0cnVjdCBkZWxheWVkX3dvcmsgKndvcmspIHsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IHdvcmtf c3RhdGljKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykgeyByZXR1cm4gMDsgfQoxNDQ3NDogIyAz MDggIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIFdR X1VOQk9VTkQgPSAxIDw8IDEsCjE0NDc0OiAgV1FfRlJFRVpBQkxFID0gMSA8PCAyLAoxNDQ3NDog IFdRX01FTV9SRUNMQUlNID0gMSA8PCAzLAoxNDQ3NDogIFdRX0hJR0hQUkkgPSAxIDw8IDQsCjE0 NDc0OiAgV1FfQ1BVX0lOVEVOU0lWRSA9IDEgPDwgNSwKMTQ0NzQ6ICBXUV9TWVNGUyA9IDEgPDwg NiwKMTQ0NzQ6ICMgMzQxICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCjE0NDc0OiAgV1Ff UE9XRVJfRUZGSUNJRU5UID0gMSA8PCA3LAoxNDQ3NDogCjE0NDc0OiAgX19XUV9EUkFJTklORyA9 IDEgPDwgMTYsCjE0NDc0OiAgX19XUV9PUkRFUkVEID0gMSA8PCAxNywKMTQ0NzQ6ICBfX1dRX0xF R0FDWSA9IDEgPDwgMTgsCjE0NDc0OiAgX19XUV9PUkRFUkVEX0VYUExJQ0lUID0gMSA8PCAxOSwK MTQ0NzQ6IAoxNDQ3NDogIFdRX01BWF9BQ1RJVkUgPSA1MTIsCjE0NDc0OiAgV1FfTUFYX1VOQk9V TkRfUEVSX0NQVSA9IDQsCjE0NDc0OiAgV1FfREZMX0FDVElWRSA9IFdRX01BWF9BQ1RJVkUgLyAy LAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzg1ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCjE0 NDc0OiBleHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV93cTsKMTQ0NzQ6IGV4 dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2hpZ2hwcmlfd3E7CjE0NDc0OiBl eHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9sb25nX3dxOwoxNDQ3NDogZXh0 ZXJuIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fdW5ib3VuZF93cTsKMTQ0NzQ6IGV4 dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2ZyZWV6YWJsZV93cTsKMTQ0NzQ6 IGV4dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93 cTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2ZyZWV6YWJs ZV9wb3dlcl9lZmZpY2llbnRfd3E7CjE0NDc0OiAjIDQwNyAiLi9pbmNsdWRlL2xpbnV4L3dvcmtx dWV1ZS5oIgoxNDQ3NDogc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmFsbG9jX3dvcmtxdWV1ZShj b25zdCBjaGFyICpmbXQsCjE0NDc0OiAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCjE0NDc0OiAg ICAgICBpbnQgbWF4X2FjdGl2ZSwgLi4uKTsKMTQ0NzQ6ICMgNDM2ICIuL2luY2x1ZGUvbGludXgv d29ya3F1ZXVlLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBkZXN0cm95X3dvcmtxdWV1ZShzdHJ1Y3Qg d29ya3F1ZXVlX3N0cnVjdCAqd3EpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgd29ya3F1ZXVlX2F0 dHJzICphbGxvY193b3JrcXVldWVfYXR0cnModm9pZCk7CjE0NDc0OiB2b2lkIGZyZWVfd29ya3F1 ZXVlX2F0dHJzKHN0cnVjdCB3b3JrcXVldWVfYXR0cnMgKmF0dHJzKTsKMTQ0NzQ6IGludCBhcHBs eV93b3JrcXVldWVfYXR0cnMoc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLAoxNDQ3NDogICAg ICBjb25zdCBzdHJ1Y3Qgd29ya3F1ZXVlX2F0dHJzICphdHRycyk7CjE0NDc0OiBpbnQgd29ya3F1 ZXVlX3NldF91bmJvdW5kX2NwdW1hc2soY3B1bWFza192YXJfdCBjcHVtYXNrKTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGJvb2wgcXVldWVfd29ya19vbihpbnQgY3B1LCBzdHJ1Y3Qgd29ya3F1ZXVl X3N0cnVjdCAqd3EsCjE0NDc0OiAgICBzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwoxNDQ3NDog ZXh0ZXJuIGJvb2wgcXVldWVfd29ya19ub2RlKGludCBub2RlLCBzdHJ1Y3Qgd29ya3F1ZXVlX3N0 cnVjdCAqd3EsCjE0NDc0OiAgICAgICAgc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKMTQ0NzQ6 IGV4dGVybiBib29sIHF1ZXVlX2RlbGF5ZWRfd29ya19vbihpbnQgY3B1LCBzdHJ1Y3Qgd29ya3F1 ZXVlX3N0cnVjdCAqd3EsCjE0NDc0OiAgICBzdHJ1Y3QgZGVsYXllZF93b3JrICp3b3JrLCB1bnNp Z25lZCBsb25nIGRlbGF5KTsKMTQ0NzQ6IGV4dGVybiBib29sIG1vZF9kZWxheWVkX3dvcmtfb24o aW50IGNwdSwgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLAoxNDQ3NDogICAgc3RydWN0IGRl bGF5ZWRfd29yayAqZHdvcmssIHVuc2lnbmVkIGxvbmcgZGVsYXkpOwoxNDQ3NDogZXh0ZXJuIGJv b2wgcXVldWVfcmN1X3dvcmsoc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLCBzdHJ1Y3QgcmN1 X3dvcmsgKnJ3b3JrKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZmx1c2hfd29ya3F1ZXVl KHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cSk7CjE0NDc0OiBleHRlcm4gdm9pZCBkcmFpbl93 b3JrcXVldWUoc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIGludCBzY2hlZHVsZV9vbl9lYWNoX2NwdSh3b3JrX2Z1bmNfdCBmdW5jKTsKMTQ0NzQ6IAox NDQ3NDogaW50IGV4ZWN1dGVfaW5fcHJvY2Vzc19jb250ZXh0KHdvcmtfZnVuY190IGZuLCBzdHJ1 Y3QgZXhlY3V0ZV93b3JrICopOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCBmbHVzaF93b3Jr KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CjE0NDc0OiBleHRlcm4gYm9vbCBjYW5jZWxfd29y a19zeW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBi b29sIGZsdXNoX2RlbGF5ZWRfd29yayhzdHJ1Y3QgZGVsYXllZF93b3JrICpkd29yayk7CjE0NDc0 OiBleHRlcm4gYm9vbCBjYW5jZWxfZGVsYXllZF93b3JrKHN0cnVjdCBkZWxheWVkX3dvcmsgKmR3 b3JrKTsKMTQ0NzQ6IGV4dGVybiBib29sIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhzdHJ1Y3Qg ZGVsYXllZF93b3JrICpkd29yayk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBib29sIGZsdXNoX3Jj dV93b3JrKHN0cnVjdCByY3Vfd29yayAqcndvcmspOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9p ZCB3b3JrcXVldWVfc2V0X21heF9hY3RpdmUoc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLAox NDQ3NDogICAgICAgICAgaW50IG1heF9hY3RpdmUpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB3b3Jr X3N0cnVjdCAqY3VycmVudF93b3JrKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgY3VycmVudF9p c193b3JrcXVldWVfcmVzY3Vlcih2b2lkKTsKMTQ0NzQ6IGV4dGVybiBib29sIHdvcmtxdWV1ZV9j b25nZXN0ZWQoaW50IGNwdSwgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxKTsKMTQ0NzQ6IGV4 dGVybiB1bnNpZ25lZCBpbnQgd29ya19idXN5KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CjE0 NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDEsIDIpKSkgdm9p ZCBzZXRfd29ya2VyX2Rlc2MoY29uc3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDogZXh0ZXJuIHZv aWQgcHJpbnRfd29ya2VyX2luZm8oY29uc3QgY2hhciAqbG9nX2x2bCwgc3RydWN0IHRhc2tfc3Ry dWN0ICp0YXNrKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNob3dfd29ya3F1ZXVlX3N0YXRlKHZvaWQp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgd3Ffd29ya2VyX2NvbW0oY2hhciAqYnVmLCBzaXplX3Qgc2l6 ZSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTsKMTQ0NzQ6ICMgNTA0ICIuL2luY2x1ZGUvbGlu dXgvd29ya3F1ZXVlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHF1ZXVlX3dvcmsoc3RydWN0IHdvcmtxdWV1ZV9z dHJ1Y3QgKndxLAoxNDQ3NDogICAgICAgICAgc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBxdWV1ZV93b3JrX29uKFdPUktfQ1BVX1VOQk9VTkQsIHdxLCB3 b3JrKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTE4ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIHF1ZXVlX2RlbGF5ZWRfd29yayhzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAq d3EsCjE0NDc0OiAgICAgICAgICAgc3RydWN0IGRlbGF5ZWRfd29yayAqZHdvcmssCjE0NDc0OiAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBkZWxheSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcXVl dWVfZGVsYXllZF93b3JrX29uKFdPUktfQ1BVX1VOQk9VTkQsIHdxLCBkd29yaywgZGVsYXkpOwox NDQ3NDogfQoxNDQ3NDogIyA1MzMgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgbW9kX2RlbGF5ZWRfd29yayhzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd3EsCjE0NDc0 OiAgICAgICAgIHN0cnVjdCBkZWxheWVkX3dvcmsgKmR3b3JrLAoxNDQ3NDogICAgICAgICB1bnNp Z25lZCBsb25nIGRlbGF5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBtb2RfZGVsYXllZF93b3Jr X29uKFdPUktfQ1BVX1VOQk9VTkQsIHdxLCBkd29yaywgZGVsYXkpOwoxNDQ3NDogfQoxNDQ3NDog IyA1NDcgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgc2NoZWR1bGVf d29ya19vbihpbnQgY3B1LCBzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIHF1ZXVlX3dvcmtfb24oY3B1LCBzeXN0ZW1fd3EsIHdvcmspOwoxNDQ3NDogfQox NDQ3NDogIyA1NjYgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgc2No ZWR1bGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIHF1ZXVlX3dvcmsoc3lzdGVtX3dxLCB3b3JrKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTk1ICIu L2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGZsdXNoX3NjaGVkdWxlZF93 b3JrKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgZmx1c2hfd29ya3F1ZXVlKHN5c3RlbV93cSk7CjE0 NDc0OiB9CjE0NDc0OiAjIDYwOSAiLi9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBzY2hlZHVsZV9kZWxheWVkX3dvcmtfb24oaW50IGNwdSwgc3RydWN0IGRlbGF5ZWRfd29y ayAqZHdvcmssCjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBsb25nIGRlbGF5KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBxdWV1ZV9kZWxheWVkX3dvcmtfb24oY3B1LCBzeXN0ZW1fd3EsIGR3b3Jr LCBkZWxheSk7CjE0NDc0OiB9CjE0NDc0OiAjIDYyMyAiLi9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1 ZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBzY2hlZHVsZV9kZWxheWVkX3dvcmsoc3RydWN0IGRlbGF5ZWRfd29y ayAqZHdvcmssCjE0NDc0OiAgICAgICB1bnNpZ25lZCBsb25nIGRlbGF5KQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCBkd29yaywgZGVsYXkpOwox NDQ3NDogfQoxNDQ3NDogIyA2MzkgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKMTQ0NzQ6 IGxvbmcgd29ya19vbl9jcHUoaW50IGNwdSwgbG9uZyAoKmZuKSh2b2lkICopLCB2b2lkICphcmcp OwoxNDQ3NDogbG9uZyB3b3JrX29uX2NwdV9zYWZlKGludCBjcHUsIGxvbmcgKCpmbikodm9pZCAq KSwgdm9pZCAqYXJnKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lk IGZyZWV6ZV93b3JrcXVldWVzX2JlZ2luKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgZnJlZXpl X3dvcmtxdWV1ZXNfYnVzeSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHRoYXdfd29ya3F1ZXVl cyh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGludCB3b3JrcXVldWVfc3lz ZnNfcmVnaXN0ZXIoc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxKTsKMTQ0NzQ6ICMgNjU5ICIu L2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdxX3dhdGNoZG9nX3RvdWNo KGludCBjcHUpIHsgfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogaW50IHdvcmtxdWV1 ZV9wcmVwYXJlX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IGludCB3b3JrcXVldWVfb25s aW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IGludCB3b3JrcXVldWVfb2ZmbGluZV9j cHUodW5zaWduZWQgaW50IGNwdSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogaW50IF9fYXR0cmli dXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRf XykpIHdvcmtxdWV1ZV9pbml0X2Vhcmx5KHZvaWQpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18o KF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHdv cmtxdWV1ZV9pbml0KHZvaWQpOwoxNDQ3NDogIyAxNyAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVz LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21tdS5oIiAx CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAj IDEgIi4vaW5jbHVkZS9saW51eC9tdXRleC5oIiAxCjE0NDc0OiAjIDIxICIuL2luY2x1ZGUvbGlu dXgvbXV0ZXguaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnX2xvY2tzLmgiIDEK MTQ0NzQ6ICMgOSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnX2xvY2tzLmgiCjE0NDc0OiBzdHJ1Y3Qg dGFza19zdHJ1Y3Q7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZGVidWdfbG9ja3MgX19hdHRy aWJ1dGVfXygoX19zZWN0aW9uX18oIi5kYXRhLi5yZWFkX21vc3RseSIpKSk7CjE0NDc0OiBleHRl cm4gaW50IGRlYnVnX2xvY2tzX3NpbGVudCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRh dGEuLnJlYWRfbW9zdGx5IikpKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19kZWJ1Z19s b2Nrc19vZmYodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdHlwZW9mKCZkZWJ1Z19s b2NrcykgX19haV9wdHIgPSAoJmRlYnVnX2xvY2tzKTsga2FzYW5fY2hlY2tfd3JpdGUoX19haV9w dHIsIHNpemVvZigqX19haV9wdHIpKTsgKHsgX190eXBlb2ZfXyAoKigoX19haV9wdHIpKSkgX19y ZXQgPSAoKDApKTsgc3dpdGNoIChzaXplb2YoKigoX19haV9wdHIpKSkpIHsgY2FzZSAxOiBhc20g dm9sYXRpbGUgKCIiICJ4Y2hnIiAiYiAlYjAsICUxXG4iIDogIitxIiAoX19yZXQpLCAiK20iICgq KChfX2FpX3B0cikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSAyOiBhc20gdm9s YXRpbGUgKCIiICJ4Y2hnIiAidyAldzAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKChf X2FpX3B0cikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRp bGUgKCIiICJ4Y2hnIiAibCAlMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKF9fYWlf cHRyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAo IiIgInhjaGciICJxICVxMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKF9fYWlfcHRy KSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBkZWZhdWx0OiBfX3hjaGdfd3Jvbmdfc2l6 ZSgpOyB9IF9fcmV0OyB9KTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZGVidWdfbG9ja3Nfb2ZmKHZvaWQpOwoxNDQ3NDogIyA0 OSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnX2xvY2tzLmgiCjE0NDc0OiBzdHJ1Y3QgdGFza19zdHJ1 Y3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgZGVidWdfc2hvd19hbGxfbG9ja3Modm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZWJ1Z19zaG93X2hlbGRfbG9ja3Moc3RydWN0IHRhc2tf c3RydWN0ICp0YXNrKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0 OiBkZWJ1Z19jaGVja19ub19sb2Nrc19mcmVlZChjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBs b25nIGxlbikKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogZGVi dWdfY2hlY2tfbm9fbG9ja3NfaGVsZCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogIyAy MiAiLi9pbmNsdWRlL2xpbnV4L211dGV4LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHd3X2Fj cXVpcmVfY3R4OwoxNDQ3NDogIyA1MyAiLi9pbmNsdWRlL2xpbnV4L211dGV4LmgiCjE0NDc0OiBz dHJ1Y3QgbXV0ZXggewoxNDQ3NDogIGF0b21pY19sb25nX3Qgb3duZXI7CjE0NDc0OiAgc3Bpbmxv Y2tfdCB3YWl0X2xvY2s7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgb3B0aW1pc3RpY19zcGluX3F1 ZXVlIG9zcTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgd2FpdF9saXN0OwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbXV0ZXhf d2FpdGVyIHsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CjE0NDc0OiAgc3RydWN0IHRh c2tfc3RydWN0ICp0YXNrOwoxNDQ3NDogIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqd3dfY3R4Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6ICMgOTIgIi4vaW5jbHVkZS9s aW51eC9tdXRleC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtdXRleF9kZXN0cm95KHN0cnVjdCBtdXRleCAqbG9j aykge30KMTQ0NzQ6ICMgMTI4ICIuL2luY2x1ZGUvbGludXgvbXV0ZXguaCIKMTQ0NzQ6IGV4dGVy biB2b2lkIF9fbXV0ZXhfaW5pdChzdHJ1Y3QgbXV0ZXggKmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUs CjE0NDc0OiAgICAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXkpOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9v bCBtdXRleF9pc19sb2NrZWQoc3RydWN0IG11dGV4ICpsb2NrKTsKMTQ0NzQ6ICMgMTY1ICIuL2lu Y2x1ZGUvbGludXgvbXV0ZXguaCIKMTQ0NzQ6IGV4dGVybiB2b2lkIG11dGV4X2xvY2soc3RydWN0 IG11dGV4ICpsb2NrKTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZShzdHJ1Y3QgbXV0ZXggKmxv Y2spOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSkgbXV0ZXhfbG9ja19raWxsYWJsZShzdHJ1Y3QgbXV0ZXggKmxvY2spOwoxNDQ3NDogZXh0 ZXJuIHZvaWQgbXV0ZXhfbG9ja19pbyhzdHJ1Y3QgbXV0ZXggKmxvY2spOwoxNDQ3NDogIyAxODMg Ii4vaW5jbHVkZS9saW51eC9tdXRleC5oIgoxNDQ3NDogZXh0ZXJuIGludCBtdXRleF90cnlsb2Nr KHN0cnVjdCBtdXRleCAqbG9jayk7CjE0NDc0OiBleHRlcm4gdm9pZCBtdXRleF91bmxvY2soc3Ry dWN0IG11dGV4ICpsb2NrKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBhdG9taWNfZGVjX2Fu ZF9tdXRleF9sb2NrKGF0b21pY190ICpjbnQsIHN0cnVjdCBtdXRleCAqbG9jayk7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBtdXRleF90cnlsb2Nr X3JlY3Vyc2l2ZV9lbnVtIHsKMTQ0NzQ6ICBNVVRFWF9UUllMT0NLX0ZBSUxFRCA9IDAsCjE0NDc0 OiAgTVVURVhfVFJZTE9DS19TVUNDRVNTID0gMSwKMTQ0NzQ6ICBNVVRFWF9UUllMT0NLX1JFQ1VS U0lWRSwKMTQ0NzQ6IH07CjE0NDc0OiAjIDIxMCAiLi9pbmNsdWRlL2xpbnV4L211dGV4LmgiCjE0 NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGVudW0g bXV0ZXhfdHJ5bG9ja19yZWN1cnNpdmVfZW51bQoxNDQ3NDogbXV0ZXhfdHJ5bG9ja19yZWN1cnNp dmUoc3RydWN0IG11dGV4ICpsb2NrKTsKMTQ0NzQ6ICMgOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9tbXUuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHR5cGVkZWYgc3RydWN0IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IHU2NCBjdHhfaWQ7CjE0NDc0OiAjIDI4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21tdS5oIgox NDQ3NDogIGF0b21pYzY0X3QgdGxiX2dlbjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0 IHJ3X3NlbWFwaG9yZSBsZHRfdXNyX3NlbTsKMTQ0NzQ6ICBzdHJ1Y3QgbGR0X3N0cnVjdCAqbGR0 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgc2hvcnQg aWEzMl9jb21wYXQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBtdXRleCBsb2NrOwox NDQ3NDogIHZvaWQgKnZkc287CjE0NDc0OiAgY29uc3Qgc3RydWN0IHZkc29faW1hZ2UgKnZkc29f aW1hZ2U7CjE0NDc0OiAKMTQ0NzQ6ICBhdG9taWNfdCBwZXJmX3JkcG1jX2FsbG93ZWQ7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHUxNiBwa2V5X2FsbG9j YXRpb25fbWFwOwoxNDQ3NDogIHMxNiBleGVjdXRlX29ubHlfcGtleTsKMTQ0NzQ6IAoxNDQ3NDog fSBtbV9jb250ZXh0X3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgbGVhdmVfbW0oaW50IGNwdSk7CjE0NDc0OiAjIDE5 ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYWRkcmVzc19zcGFj ZTsKMTQ0NzQ6IHN0cnVjdCBtZW1fY2dyb3VwOwoxNDQ3NDogIyA2OCAiLi9pbmNsdWRlL2xpbnV4 L21tX3R5cGVzLmgiCjE0NDc0OiBzdHJ1Y3QgcGFnZSB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBm bGFnczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxydTsKMTQ0 NzQ6IAoxNDQ3NDogICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7CjE0NDc0OiAgICB1 bnNpZ25lZCBsb25nIGluZGV4OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogICAgdW5zaWduZWQgbG9uZyBwcml2YXRlOwoxNDQ3NDogICB9Owox NDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg ICBkbWFfYWRkcl90IGRtYV9hZGRyOwoxNDQ3NDogICB9OwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3 NDogICAgdW5pb24gewoxNDQ3NDogICAgIHN0cnVjdCBsaXN0X2hlYWQgc2xhYl9saXN0OwoxNDQ3 NDogICAgIHN0cnVjdCB7CjE0NDc0OiAgICAgIHN0cnVjdCBwYWdlICpuZXh0OwoxNDQ3NDogCjE0 NDc0OiAgICAgIGludCBwYWdlczsKMTQ0NzQ6ICAgICAgaW50IHBvYmplY3RzOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgICAgfTsKMTQ0NzQ6ICAgIH07CjE0NDc0OiAg ICBzdHJ1Y3Qga21lbV9jYWNoZSAqc2xhYl9jYWNoZTsKMTQ0NzQ6IAoxNDQ3NDogICAgdm9pZCAq ZnJlZWxpc3Q7CjE0NDc0OiAgICB1bmlvbiB7CjE0NDc0OiAgICAgdm9pZCAqc19tZW07CjE0NDc0 OiAgICAgdW5zaWduZWQgbG9uZyBjb3VudGVyczsKMTQ0NzQ6ICAgICBzdHJ1Y3QgewoxNDQ3NDog ICAgICB1bnNpZ25lZCBpbnVzZToxNjsKMTQ0NzQ6ICAgICAgdW5zaWduZWQgb2JqZWN0czoxNTsK MTQ0NzQ6ICAgICAgdW5zaWduZWQgZnJvemVuOjE7CjE0NDc0OiAgICAgfTsKMTQ0NzQ6ICAgIH07 CjE0NDc0OiAgIH07CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAgICB1bnNpZ25lZCBsb25nIGNv bXBvdW5kX2hlYWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICAgdW5zaWduZWQgY2hhciBjb21w b3VuZF9kdG9yOwoxNDQ3NDogICAgdW5zaWduZWQgY2hhciBjb21wb3VuZF9vcmRlcjsKMTQ0NzQ6 ICAgIGF0b21pY190IGNvbXBvdW5kX21hcGNvdW50OwoxNDQ3NDogICB9OwoxNDQ3NDogICBzdHJ1 Y3QgewoxNDQ3NDogICAgdW5zaWduZWQgbG9uZyBfY29tcG91bmRfcGFkXzE7CjE0NDc0OiAgICB1 bnNpZ25lZCBsb25nIF9jb21wb3VuZF9wYWRfMjsKMTQ0NzQ6IAoxNDQ3NDogICAgc3RydWN0IGxp c3RfaGVhZCBkZWZlcnJlZF9saXN0OwoxNDQ3NDogICB9OwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3 NDogICAgdW5zaWduZWQgbG9uZyBfcHRfcGFkXzE7CjE0NDc0OiAgICBwZ3RhYmxlX3QgcG1kX2h1 Z2VfcHRlOwoxNDQ3NDogICAgdW5zaWduZWQgbG9uZyBfcHRfcGFkXzI7CjE0NDc0OiAgICB1bmlv biB7CjE0NDc0OiAgICAgc3RydWN0IG1tX3N0cnVjdCAqcHRfbW07CjE0NDc0OiAgICAgYXRvbWlj X3QgcHRfZnJhZ19yZWZjb3VudDsKMTQ0NzQ6ICAgIH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgICBzcGlubG9ja190IHB0bDsKMTQ0NzQ6IAoxNDQ3NDogICB9OwoxNDQ3NDogICBz dHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAgICBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwOwoxNDQ3 NDogICAgdm9pZCAqem9uZV9kZXZpY2VfZGF0YTsKMTQ0NzQ6ICMgMTcyICIuL2luY2x1ZGUvbGlu dXgvbW1fdHlwZXMuaCIKMTQ0NzQ6ICAgfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHN0cnVj dCBjYWxsYmFja19oZWFkIGNhbGxiYWNrX2hlYWQ7CjE0NDc0OiAgfTsKMTQ0NzQ6IAoxNDQ3NDog IHVuaW9uIHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBhdG9taWNf dCBfbWFwY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHBhZ2VfdHlwZTsKMTQ0NzQ6IAoxNDQ3 NDogICB1bnNpZ25lZCBpbnQgYWN0aXZlOwoxNDQ3NDogICBpbnQgdW5pdHM7CjE0NDc0OiAgfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYXRvbWljX3QgX3JlZmNvdW50OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtX2Nncm91cDsKMTQ0NzQ6ICMgMjIyICIu L2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6IH0gOwoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBhdG9t aWNfdCAqY29tcG91bmRfbWFwY291bnRfcHRyKHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiAmcGFnZVsxXS5jb21wb3VuZF9tYXBjb3VudDsKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMjQwICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6IHN0cnVjdCBwYWdlX2Zy YWdfY2FjaGUgewoxNDQ3NDogIHZvaWQgKiB2YTsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTE2IG9mZnNl dDsKMTQ0NzQ6ICBfX3UxNiBzaXplOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBwYWdlY250X2JpYXM7CjE0NDc0OiAg Ym9vbCBwZm1lbWFsbG9jOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1bnNpZ25l ZCBsb25nIHZtX2ZsYWdzX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgdm1fcmVnaW9uIHsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9k ZSB2bV9yYjsKMTQ0NzQ6ICB2bV9mbGFnc190IHZtX2ZsYWdzOwoxNDQ3NDogIHVuc2lnbmVkIGxv bmcgdm1fc3RhcnQ7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB2bV9lbmQ7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyB2bV90b3A7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB2bV9wZ29mZjsKMTQ0NzQ6ICBz dHJ1Y3QgZmlsZSAqdm1fZmlsZTsKMTQ0NzQ6IAoxNDQ3NDogIGludCB2bV91c2FnZTsKMTQ0NzQ6 ICBib29sIHZtX2ljYWNoZV9mbHVzaGVkIDogMTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6ICMg MjgzICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6IHN0cnVjdCB2bV91c2VyZmF1 bHRmZF9jdHgge307CjE0NDc0OiAjIDI5MiAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiCjE0 NDc0OiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIHZtX3N0YXJ0OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgdm1fZW5kOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1fbmV4dCwg KnZtX3ByZXY7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9kZSB2bV9yYjsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVu c2lnbmVkIGxvbmcgcmJfc3VidHJlZV9nYXA7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IG1tX3N0cnVjdCAqdm1fbW07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIHBncHJvdF90IHZtX3BhZ2VfcHJvdDsKMTQ0NzQ6ICB1bnNpZ25l ZCBsb25nIHZtX2ZsYWdzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICBzdHJ1Y3QgcmJfbm9kZSByYjsKMTQ0NzQ6ICAgdW5z aWduZWQgbG9uZyByYl9zdWJ0cmVlX2xhc3Q7CjE0NDc0OiAgfSBzaGFyZWQ7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1 Y3QgbGlzdF9oZWFkIGFub25fdm1hX2NoYWluOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGFub25f dm1hICphbm9uX3ZtYTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgY29uc3Qgc3RydWN0IHZtX29w ZXJhdGlvbnNfc3RydWN0ICp2bV9vcHM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVk IGxvbmcgdm1fcGdvZmY7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZmlsZSAqIHZtX2ZpbGU7CjE0 NDc0OiAgdm9pZCAqIHZtX3ByaXZhdGVfZGF0YTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYXRv bWljX2xvbmdfdCBzd2FwX3JlYWRhaGVhZF9pbmZvOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHZtX3VzZXJmYXVs dGZkX2N0eCB2bV91c2VyZmF1bHRmZF9jdHg7CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fZGVz aWduYXRlZF9pbml0X18pKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNvcmVfdGhyZWFkIHsKMTQ0 NzQ6ICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CjE0NDc0OiAgc3RydWN0IGNvcmVfdGhyZWFk ICpuZXh0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNvcmVfc3RhdGUgewoxNDQ3 NDogIGF0b21pY190IG5yX3RocmVhZHM7CjE0NDc0OiAgc3RydWN0IGNvcmVfdGhyZWFkIGR1bXBl cjsKMTQ0NzQ6ICBzdHJ1Y3QgY29tcGxldGlvbiBzdGFydHVwOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGtpb2N0eF90YWJsZTsKMTQ0NzQ6IHN0cnVjdCBtbV9zdHJ1Y3QgewoxNDQ3 NDogIHN0cnVjdCB7CjE0NDc0OiAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqbW1hcDsKMTQ0NzQ6 ICAgc3RydWN0IHJiX3Jvb3QgbW1fcmI7CjE0NDc0OiAgIHU2NCB2bWFjYWNoZV9zZXFudW07CjE0 NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyAoKmdldF91bm1hcHBlZF9hcmVhKSAoc3RydWN0 IGZpbGUgKmZpbHAsCjE0NDc0OiAgICAgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25n IGxlbiwKMTQ0NzQ6ICAgICB1bnNpZ25lZCBsb25nIHBnb2ZmLCB1bnNpZ25lZCBsb25nIGZsYWdz KTsKMTQ0NzQ6IAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIG1tYXBfYmFzZTsKMTQ0NzQ6ICAgdW5z aWduZWQgbG9uZyBtbWFwX2xlZ2FjeV9iYXNlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyB0YXNrX3NpemU7CjE0NDc0OiAgIHVu c2lnbmVkIGxvbmcgaGlnaGVzdF92bV9lbmQ7CjE0NDc0OiAgIHBnZF90ICogcGdkOwoxNDQ3NDog IyA0MDMgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgoxNDQ3NDogICBhdG9taWNfdCBtZW1i YXJyaWVyX3N0YXRlOwoxNDQ3NDogIyA0MTUgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgox NDQ3NDogICBhdG9taWNfdCBtbV91c2VyczsKMTQ0NzQ6ICMgNDI0ICIuL2luY2x1ZGUvbGludXgv bW1fdHlwZXMuaCIKMTQ0NzQ6ICAgYXRvbWljX3QgbW1fY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogICBhdG9taWNfbG9uZ190IHBndGFibGVzX2J5dGVzOwoxNDQ3NDogCjE0NDc0OiAgIGlu dCBtYXBfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6ICAgc3BpbmxvY2tfdCBwYWdlX3RhYmxlX2xvY2s7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3Qgcndfc2VtYXBob3JlIG1tYXBfc2VtOwox NDQ3NDogCjE0NDc0OiAgIHN0cnVjdCBsaXN0X2hlYWQgbW1saXN0OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIGhp d2F0ZXJfcnNzOwoxNDQ3NDogICB1bnNpZ25lZCBsb25nIGhpd2F0ZXJfdm07CjE0NDc0OiAKMTQ0 NzQ6ICAgdW5zaWduZWQgbG9uZyB0b3RhbF92bTsKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyBsb2Nr ZWRfdm07CjE0NDc0OiAgIGF0b21pYzY0X3QgcGlubmVkX3ZtOwoxNDQ3NDogICB1bnNpZ25lZCBs b25nIGRhdGFfdm07CjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgZXhlY192bTsKMTQ0NzQ6ICAgdW5z aWduZWQgbG9uZyBzdGFja192bTsKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyBkZWZfZmxhZ3M7CjE0 NDc0OiAKMTQ0NzQ6ICAgc3BpbmxvY2tfdCBhcmdfbG9jazsKMTQ0NzQ6ICAgdW5zaWduZWQgbG9u ZyBzdGFydF9jb2RlLCBlbmRfY29kZSwgc3RhcnRfZGF0YSwgZW5kX2RhdGE7CjE0NDc0OiAgIHVu c2lnbmVkIGxvbmcgc3RhcnRfYnJrLCBicmssIHN0YXJ0X3N0YWNrOwoxNDQ3NDogICB1bnNpZ25l ZCBsb25nIGFyZ19zdGFydCwgYXJnX2VuZCwgZW52X3N0YXJ0LCBlbnZfZW5kOwoxNDQ3NDogCjE0 NDc0OiAgIHVuc2lnbmVkIGxvbmcgc2F2ZWRfYXV4dlsoMiooMSArIDIwICsgMSkpXTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHN0cnVjdCBtbV9yc3Nf c3RhdCByc3Nfc3RhdDsKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgbGludXhfYmluZm10ICpiaW5m bXQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBtbV9jb250ZXh0X3QgY29udGV4dDsKMTQ0NzQ6 IAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIGZsYWdzOwoxNDQ3NDogCjE0NDc0OiAgIHN0cnVjdCBj b3JlX3N0YXRlICpjb3JlX3N0YXRlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgc3BpbmxvY2tf dCBpb2N0eF9sb2NrOwoxNDQ3NDogICBzdHJ1Y3Qga2lvY3R4X3RhYmxlICppb2N0eF90YWJsZTsK MTQ0NzQ6ICMgNDkxICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6ICAgc3RydWN0 IHRhc2tfc3RydWN0ICpvd25lcjsKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgdXNlcl9uYW1lc3Bh Y2UgKnVzZXJfbnM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgZmlsZSAqZXhlX2Zp bGU7CjE0NDc0OiAKMTQ0NzQ6ICAgc3RydWN0IG1tdV9ub3RpZmllcl9zdWJzY3JpcHRpb25zICpu b3RpZmllcl9zdWJzY3JpcHRpb25zOwoxNDQ3NDogIyA1MjIgIi4vaW5jbHVkZS9saW51eC9tbV90 eXBlcy5oIgoxNDQ3NDogICBhdG9taWNfdCB0bGJfZmx1c2hfcGVuZGluZzsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgIGJvb2wgdGxiX2ZsdXNoX2JhdGNoZWQ7CjE0NDc0OiAKMTQ0NzQ6ICAgc3Ry dWN0IHVwcm9iZXNfc3RhdGUgdXByb2Jlc19zdGF0ZTsKMTQ0NzQ6IAoxNDQ3NDogICBhdG9taWNf bG9uZ190IGh1Z2V0bGJfdXNhZ2U7CjE0NDc0OiAKMTQ0NzQ6ICAgc3RydWN0IHdvcmtfc3RydWN0 IGFzeW5jX3B1dF93b3JrOwoxNDQ3NDogIH0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2lu aXRfXykpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGNwdV9iaXRtYXBbXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBzdHJ1Y3QgbW1fc3RydWN0IGluaXRfbW07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBt bV9pbml0X2NwdW1hc2soc3RydWN0IG1tX3N0cnVjdCAqbW0pCjE0NDc0OiB7CjE0NDc0OiAgdW5z aWduZWQgbG9uZyBjcHVfYml0bWFwID0gKHVuc2lnbmVkIGxvbmcpbW07CjE0NDc0OiAKMTQ0NzQ6 ICBjcHVfYml0bWFwICs9IF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgbW1fc3RydWN0LCBjcHVf Yml0bWFwKTsKMTQ0NzQ6ICBjcHVtYXNrX2NsZWFyKChzdHJ1Y3QgY3B1bWFzayAqKWNwdV9iaXRt YXApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGNwdW1hc2tfdCAqbW1fY3B1bWFz ayhzdHJ1Y3QgbW1fc3RydWN0ICptbSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHN0cnVjdCBj cHVtYXNrICopJm1tLT5jcHVfYml0bWFwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg bW11X2dhdGhlcjsKMTQ0NzQ6IGV4dGVybiB2b2lkIHRsYl9nYXRoZXJfbW11KHN0cnVjdCBtbXVf Z2F0aGVyICp0bGIsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAoxNDQ3NDogICAgIHVuc2lnbmVkIGxv bmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHRsYl9maW5p c2hfbW11KHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsCjE0NDc0OiAgICAgdW5zaWduZWQgbG9uZyBz dGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGluaXRfdGxiX2Zs dXNoX3BlbmRpbmcoc3RydWN0IG1tX3N0cnVjdCAqbW0pCjE0NDc0OiB7CjE0NDc0OiAgYXRvbWlj X3NldCgmbW0tPnRsYl9mbHVzaF9wZW5kaW5nLCAwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBpbmNfdGxiX2ZsdXNoX3BlbmRpbmcoc3RydWN0IG1tX3N0cnVjdCAqbW0pCjE0NDc0OiB7 CjE0NDc0OiAgYXRvbWljX2luYygmbW0tPnRsYl9mbHVzaF9wZW5kaW5nKTsKMTQ0NzQ6ICMgNjA4 ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBkZWNfdGxiX2ZsdXNoX3BlbmRpbmcoc3RydWN0IG1tX3N0cnVjdCAqbW0pCjE0NDc0OiB7CjE0 NDc0OiAjIDYyMCAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiCjE0NDc0OiAgYXRvbWljX2Rl YygmbW0tPnRsYl9mbHVzaF9wZW5kaW5nKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBt bV90bGJfZmx1c2hfcGVuZGluZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSkKMTQ0NzQ6IHsKMTQ0NzQ6 ICMgNjMzICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6ICByZXR1cm4gYXRvbWlj X3JlYWQoJm1tLT50bGJfZmx1c2hfcGVuZGluZyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgbW1fdGxiX2ZsdXNoX25lc3RlZChzdHJ1Y3QgbW1fc3RydWN0ICptbSkKMTQ0NzQ6IHsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHJldHVybiBhdG9taWNfcmVhZCgmbW0tPnRsYl9mbHVzaF9wZW5kaW5nKSA+IDE7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB2bV9mYXVsdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgaW50IHZt X2ZhdWx0X3Q7CjE0NDc0OiAjIDY4MiAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiCjE0NDc0 OiBlbnVtIHZtX2ZhdWx0X3JlYXNvbiB7CjE0NDc0OiAgVk1fRkFVTFRfT09NID0gKCB2bV9mYXVs dF90KTB4MDAwMDAxLAoxNDQ3NDogIFZNX0ZBVUxUX1NJR0JVUyA9ICggdm1fZmF1bHRfdCkweDAw MDAwMiwKMTQ0NzQ6ICBWTV9GQVVMVF9NQUpPUiA9ICggdm1fZmF1bHRfdCkweDAwMDAwNCwKMTQ0 NzQ6ICBWTV9GQVVMVF9XUklURSA9ICggdm1fZmF1bHRfdCkweDAwMDAwOCwKMTQ0NzQ6ICBWTV9G QVVMVF9IV1BPSVNPTiA9ICggdm1fZmF1bHRfdCkweDAwMDAxMCwKMTQ0NzQ6ICBWTV9GQVVMVF9I V1BPSVNPTl9MQVJHRSA9ICggdm1fZmF1bHRfdCkweDAwMDAyMCwKMTQ0NzQ6ICBWTV9GQVVMVF9T SUdTRUdWID0gKCB2bV9mYXVsdF90KTB4MDAwMDQwLAoxNDQ3NDogIFZNX0ZBVUxUX05PUEFHRSA9 ICggdm1fZmF1bHRfdCkweDAwMDEwMCwKMTQ0NzQ6ICBWTV9GQVVMVF9MT0NLRUQgPSAoIHZtX2Zh dWx0X3QpMHgwMDAyMDAsCjE0NDc0OiAgVk1fRkFVTFRfUkVUUlkgPSAoIHZtX2ZhdWx0X3QpMHgw MDA0MDAsCjE0NDc0OiAgVk1fRkFVTFRfRkFMTEJBQ0sgPSAoIHZtX2ZhdWx0X3QpMHgwMDA4MDAs CjE0NDc0OiAgVk1fRkFVTFRfRE9ORV9DT1cgPSAoIHZtX2ZhdWx0X3QpMHgwMDEwMDAsCjE0NDc0 OiAgVk1fRkFVTFRfTkVFRERTWU5DID0gKCB2bV9mYXVsdF90KTB4MDAyMDAwLAoxNDQ3NDogIFZN X0ZBVUxUX0hJTkRFWF9NQVNLID0gKCB2bV9mYXVsdF90KTB4MGYwMDAwLAoxNDQ3NDogfTsKMTQ0 NzQ6ICMgNzIyICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6IHN0cnVjdCB2bV9z cGVjaWFsX21hcHBpbmcgewoxNDQ3NDogIGNvbnN0IGNoYXIgKm5hbWU7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qg cGFnZSAqKnBhZ2VzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICB2bV9mYXVsdF90ICgqZmF1bHQpKGNvbnN0IHN0cnVjdCB2bV9zcGVjaWFsX21hcHBpbmcg KnNtLAoxNDQ3NDogICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAoxNDQ3NDogICAgIHN0 cnVjdCB2bV9mYXVsdCAqdm1mKTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKm1yZW1hcCkoY29uc3Qg c3RydWN0IHZtX3NwZWNpYWxfbWFwcGluZyAqc20sCjE0NDc0OiAgICAgICAgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICpuZXdfdm1hKTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gdGxiX2Zs dXNoX3JlYXNvbiB7CjE0NDc0OiAgVExCX0ZMVVNIX09OX1RBU0tfU1dJVENILAoxNDQ3NDogIFRM Ql9SRU1PVEVfU0hPT1RET1dOLAoxNDQ3NDogIFRMQl9MT0NBTF9TSE9PVERPV04sCjE0NDc0OiAg VExCX0xPQ0FMX01NX1NIT09URE9XTiwKMTQ0NzQ6ICBUTEJfUkVNT1RFX1NFTkRfSVBJLAoxNDQ3 NDogIE5SX1RMQl9GTFVTSF9SRUFTT05TLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyB2YWw7CjE0NDc0OiB9IHN3cF9lbnRyeV90OwoxNDQ3NDogIyAyMiAiLi9pbmNsdWRl L2xpbnV4L21tem9uZS5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdz LmgiIDEKMTQ0NzQ6ICMgOTkgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgiCjE0NDc0OiBl bnVtIHBhZ2VmbGFncyB7CjE0NDc0OiAgUEdfbG9ja2VkLAoxNDQ3NDogIFBHX3JlZmVyZW5jZWQs CjE0NDc0OiAgUEdfdXB0b2RhdGUsCjE0NDc0OiAgUEdfZGlydHksCjE0NDc0OiAgUEdfbHJ1LAox NDQ3NDogIFBHX2FjdGl2ZSwKMTQ0NzQ6ICBQR193b3JraW5nc2V0LAoxNDQ3NDogIFBHX3dhaXRl cnMsCjE0NDc0OiAgUEdfZXJyb3IsCjE0NDc0OiAgUEdfc2xhYiwKMTQ0NzQ6ICBQR19vd25lcl9w cml2XzEsCjE0NDc0OiAgUEdfYXJjaF8xLAoxNDQ3NDogIFBHX3Jlc2VydmVkLAoxNDQ3NDogIFBH X3ByaXZhdGUsCjE0NDc0OiAgUEdfcHJpdmF0ZV8yLAoxNDQ3NDogIFBHX3dyaXRlYmFjaywKMTQ0 NzQ6ICBQR19oZWFkLAoxNDQ3NDogIFBHX21hcHBlZHRvZGlzaywKMTQ0NzQ6ICBQR19yZWNsYWlt LAoxNDQ3NDogIFBHX3N3YXBiYWNrZWQsCjE0NDc0OiAgUEdfdW5ldmljdGFibGUsCjE0NDc0OiAK MTQ0NzQ6ICBQR19tbG9ja2VkLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBQR191bmNhY2hlZCwK MTQ0NzQ6ICMgMTM0ICIuL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgoxNDQ3NDogIF9fTlJf UEFHRUZMQUdTLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBQR19jaGVja2VkID0gUEdfb3duZXJf cHJpdl8xLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBQR19zd2FwY2FjaGUgPSBQR19vd25lcl9w cml2XzEsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFBH X2ZzY2FjaGUgPSBQR19wcml2YXRlXzIsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg UEdfcGlubmVkID0gUEdfb3duZXJfcHJpdl8xLAoxNDQ3NDogCjE0NDc0OiAgUEdfc2F2ZXBpbm5l ZCA9IFBHX2RpcnR5LAoxNDQ3NDogCjE0NDc0OiAgUEdfZm9yZWlnbiA9IFBHX293bmVyX3ByaXZf MSwKMTQ0NzQ6IAoxNDQ3NDogIFBHX3hlbl9yZW1hcHBlZCA9IFBHX293bmVyX3ByaXZfMSwKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgUEdfc2xvYl9mcmVlID0gUEdfcHJpdmF0ZSwKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgUEdfZG91YmxlX21hcCA9IFBHX3ByaXZhdGVfMiwKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgUEdfaXNvbGF0ZWQgPSBQR19yZWNsYWltLAoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwYWdlOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qg cGFnZSAqY29tcG91bmRfaGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGhlYWQgPSAoeyB1bmlvbiB7IHR5cGVvZihwYWdlLT5jb21wb3VuZF9oZWFk KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKHBh Z2UtPmNvbXBvdW5kX2hlYWQpLCBfX3UuX19jLCBzaXplb2YocGFnZS0+Y29tcG91bmRfaGVhZCkp OyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKHBhZ2UtPmNvbXBvdW5kX2hlYWQpLCBf X3UuX19jLCBzaXplb2YocGFnZS0+Y29tcG91bmRfaGVhZCkpOyBkbyB7IH0gd2hpbGUgKDApOyBf X3UuX192YWw7IH0pOwoxNDQ3NDogCjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoaGVh ZCAmIDEpLCAwKSkKMTQ0NzQ6ICAgcmV0dXJuIChzdHJ1Y3QgcGFnZSAqKSAoaGVhZCAtIDEpOwox NDQ3NDogIHJldHVybiBwYWdlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlVGFpbChzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdW5pb24geyB0eXBlb2YocGFnZS0+Y29tcG91bmRfaGVh ZCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihw YWdlLT5jb21wb3VuZF9oZWFkKSwgX191Ll9fYywgc2l6ZW9mKHBhZ2UtPmNvbXBvdW5kX2hlYWQp KTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihwYWdlLT5jb21wb3VuZF9oZWFkKSwg X191Ll9fYywgc2l6ZW9mKHBhZ2UtPmNvbXBvdW5kX2hlYWQpKTsgZG8geyB9IHdoaWxlICgwKTsg X191Ll9fdmFsOyB9KSAmIDE7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VDb21wb3VuZChzdHJ1Y3QgcGFnZSAqcGFnZSkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGVzdF9iaXQoUEdfaGVhZCwgJnBhZ2UtPmZsYWdzKSB8 fCBQYWdlVGFpbChwYWdlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgUGFn ZVBvaXNvbmVkKGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biBwYWdlLT5mbGFncyA9PSAtMWw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgcGFnZV9pbml0X3BvaXNvbihzdHJ1Y3QgcGFnZSAqcGFnZSwgc2l6 ZV90IHNpemUpCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiAjIDMxMiAiLi9pbmNsdWRlL2xpbnV4 L3BhZ2UtZmxhZ3MuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg aW50IFBhZ2VMb2NrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX2xv Y2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFpbChwYWdlKSkpKSk7 ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFn ZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fU2V0UGFnZUxvY2tlZChzdHJ1Y3QgcGFn ZSAqcGFnZSkgeyBfX3NldF9iaXQoUEdfbG9ja2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25n KSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9 KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg X19DbGVhclBhZ2VMb2NrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQoUEdfbG9j a2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsg KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdl KSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVdhaXRlcnMoc3RydWN0IHBh Z2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3dhaXRlcnMsICYoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZVdhaXRlcnMoc3RydWN0IHBhZ2Ug KnBhZ2UpIHsgc2V0X2JpdChQR193YWl0ZXJzLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVk KHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZVdhaXRlcnMoc3RydWN0IHBhZ2UgKnBhZ2UpIHsg Y2xlYXJfYml0KFBHX3dhaXRlcnMsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VUYWls KHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkp KSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHZvaWQgX19DbGVhclBhZ2VXYWl0ZXJzKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xl YXJfYml0KFBHX3dhaXRlcnMsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VUYWlsKHBh Z2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkp OyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSBpbnQgUGFnZUVycm9yKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0 X2JpdChQR19lcnJvciwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFpbChw YWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5k X2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0g c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VFcnJvcihzdHJ1 Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX2Vycm9yLCAmKHsgKCh2b2lkKShzaXplb2YoKCBs b25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2Up OyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgQ2xlYXJQYWdlRXJyb3Ioc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX2Vycm9y LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsg KCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkp KSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlRXJyb3Ioc3RydWN0IHBhZ2Ug KnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19lcnJvciwgJih7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9m KCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRf aGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgaW50IFBhZ2VSZWZlcmVuY2VkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJl dHVybiB0ZXN0X2JpdChQR19yZWZlcmVuY2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2Up OyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBT ZXRQYWdlUmVmZXJlbmNlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3JlZmVyZW5j ZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFk KHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZVJlZmVyZW5jZWQoc3RydWN0 IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3JlZmVyZW5jZWQsICYoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5k X2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6ICBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlUmVmZXJlbmNlZChzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX3JlZmVyZW5jZWQsICYoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNv bXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6ICBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlUmVmZXJlbmNlZChzdHJ1Y3QgcGFnZSAq cGFnZSkgeyBfX3NldF9iaXQoUEdfcmVmZXJlbmNlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9u ZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChw YWdlKTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKSBpbnQgUGFnZURpcnR5KHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQ R19kaXJ0eSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5k X2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZURpcnR5KHN0cnVjdCBw YWdlICpwYWdlKSB7IHNldF9iaXQoUEdfZGlydHksICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFn ZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lk IENsZWFyUGFnZURpcnR5KHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR19kaXJ0eSwg Jih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFn ZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0U2V0UGFnZURpcnR5KHN0cnVjdCBwYWdlICpw YWdlKSB7IHJldHVybiB0ZXN0X2FuZF9zZXRfYml0KFBHX2RpcnR5LCAmKHsgKCh2b2lkKShzaXpl b2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3Vu ZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgaW50IFRlc3RDbGVhclBhZ2VEaXJ0eShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4g dGVzdF9hbmRfY2xlYXJfYml0KFBHX2RpcnR5LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2Up OyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIF9fQ2xlYXJQYWdlRGlydHkoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQo UEdfZGlydHksICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3Vu ZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0KMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VMUlUoc3RydWN0 IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX2xydSwgJih7ICgodm9pZCkoc2l6ZW9m KCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRf aGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgU2V0UGFnZUxSVShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX2xydSwg Jih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFn ZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlTFJVKHN0cnVjdCBwYWdlICpwYWdl KSB7IGNsZWFyX2JpdChQR19scnUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lz b25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5m bGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQ YWdlTFJVKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX2xydSwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsg Y29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUFjdGl2ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBy ZXR1cm4gdGVzdF9iaXQoUEdfYWN0aXZlLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9 KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQ YWdlQWN0aXZlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQoUEdfYWN0aXZlLCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkp OyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdm9pZCBDbGVhclBhZ2VBY3RpdmUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsg Y2xlYXJfYml0KFBHX2FjdGl2ZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNv bmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZs YWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19DbGVhclBh Z2VBY3RpdmUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQoUEdfYWN0aXZlLCAmKHsg KCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkp KSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAgc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZUFjdGl2ZShzdHJ1Y3Qg cGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX2FjdGl2ZSwgJih7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkp KTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVdvcmtpbmdzZXQoc3RydWN0IHBhZ2UgKnBh Z2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3dvcmtpbmdzZXQsICYoeyAoKHZvaWQpKHNpemVvZigo IGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hl YWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIFNldFBhZ2VXb3JraW5nc2V0KHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQoUEdf d29ya2luZ3NldCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBv dW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlV29ya2luZ3Nl dChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfd29ya2luZ3NldCwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsg Y29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogIHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFRlc3RDbGVhclBhZ2VXb3JraW5nc2V0KHN0cnVjdCBw YWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoUEdfd29ya2luZ3NldCwgJih7 ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkp KSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVNsYWIoc3RydWN0IHBhZ2UgKnBhZ2Up IHsgcmV0dXJuIHRlc3RfYml0KFBHX3NsYWIsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAg JiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lz b25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9 KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX1Nl dFBhZ2VTbGFiKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fc2V0X2JpdChQR19zbGFiLCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21w b3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIHZvaWQgX19DbGVhclBhZ2VTbGFiKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9f Y2xlYXJfYml0KFBHX3NsYWIsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRh aWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21w b3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3Mp OyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlU2xv YkZyZWUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3Nsb2JfZnJlZSwg Jih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkp KTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fU2V0UGFnZVNsb2JGcmVlKHN0cnVjdCBwYWdlICpw YWdlKSB7IF9fc2V0X2JpdChQR19zbG9iX2ZyZWUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQ b2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0p OyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBf X0NsZWFyUGFnZVNsb2JGcmVlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX3Ns b2JfZnJlZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkp KSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQo cGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VDaGVja2VkKHN0cnVj dCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19jaGVja2VkLCAmKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKSgwICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7 IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VDaGVja2Vk KHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQoUEdfY2hlY2tlZCwgJih7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVhclBhZ2VDaGVja2Vk KHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR19jaGVja2VkLCAmKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKSgxICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIGludCBQYWdlUGlubmVkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQ R19waW5uZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAgJiYgUGFnZUNvbXBvdW5kKHBh Z2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkp OyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgU2V0UGFnZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3Bp bm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkp KSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBh Z2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dm9pZCBDbGVhclBhZ2VQaW5uZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3Bp bm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkp KSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBh Z2U7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSBpbnQgVGVzdFNldFBhZ2VQaW5uZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJu IHRlc3RfYW5kX3NldF9iaXQoUEdfcGlubmVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgx ICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFn ZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZVBpbm5lZChzdHJ1Y3QgcGFn ZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX3Bpbm5lZCwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+Zmxh Z3MpOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdl U2F2ZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfc2F2ZXBp bm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlQ29tcG91bmQocGFnZSkp KSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBh Z2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dm9pZCBTZXRQYWdlU2F2ZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3Nh dmVwaW5uZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBh Z2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkp OyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgQ2xlYXJQYWdlU2F2ZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9i aXQoUEdfc2F2ZXBpbm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29t cG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChw YWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9OwoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUZvcmVpZ24oc3RydWN0IHBhZ2UgKnBhZ2UpIHsg cmV0dXJuIHRlc3RfYml0KFBHX2ZvcmVpZ24sICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAg JiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZUZvcmVpZ24oc3RydWN0IHBhZ2UgKnBh Z2UpIHsgc2V0X2JpdChQR19mb3JlaWduLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZUZvcmVpZ24oc3RydWN0IHBhZ2UgKnBh Z2UpIHsgY2xlYXJfYml0KFBHX2ZvcmVpZ24sICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEg JiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfTsKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VYZW5SZW1hcHBlZChzdHJ1Y3Qg cGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfeGVuX3JlbWFwcGVkLCAmKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKSgwICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VYZW5S ZW1hcHBlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3hlbl9yZW1hcHBlZCwgJih7 ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9 KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVh clBhZ2VYZW5SZW1hcHBlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfeGVuX3Jl bWFwcGVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VDb21wb3VuZChwYWdl KSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsg cGFnZTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6ICBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlWGVuUmVtYXBwZWQoc3RydWN0IHBhZ2UgKnBhZ2Up IHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR194ZW5fcmVtYXBwZWQsICYoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdz KTsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBQYWdlUmVzZXJ2ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3Jl c2VydmVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgwICYmIFBhZ2VDb21wb3VuZChwYWdl KSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsg cGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIFNldFBhZ2VSZXNlcnZlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3Jl c2VydmVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VDb21wb3VuZChwYWdl KSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsg cGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIENsZWFyUGFnZVJlc2VydmVkKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQ R19yZXNlcnZlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQo cGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkp KSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAgc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQYWdlUmVzZXJ2ZWQoc3RydWN0IHBhZ2UgKnBhZ2Up IHsgX19jbGVhcl9iaXQoUEdfcmVzZXJ2ZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEg JiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogIHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX1NldFBhZ2VSZXNlcnZlZChzdHJ1 Y3QgcGFnZSAqcGFnZSkgeyBfX3NldF9iaXQoUEdfcmVzZXJ2ZWQsICYoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2Yo KCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfQox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVN3YXBCYWNr ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3N3YXBiYWNrZWQsICYo eyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZv aWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7 IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlU3dhcEJhY2tlZChzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyBzZXRfYml0KFBHX3N3YXBiYWNrZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEg JiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lz b25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9 KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVh clBhZ2VTd2FwQmFja2VkKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR19zd2FwYmFj a2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsg KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdl KSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogIHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZVN3YXBCYWNr ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQoUEdfc3dhcGJhY2tlZCwgJih7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29t cG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6ICBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlU3dhcEJhY2tlZChzdHJ1Y3QgcGFn ZSAqcGFnZSkgeyBfX3NldF9iaXQoUEdfc3dhcGJhY2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCgg bG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko UGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdl KTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50 IFBhZ2VQcml2YXRlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19wcml2 YXRlLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBw YWdlOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9p ZCBTZXRQYWdlUHJpdmF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3ByaXZhdGUs ICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7 IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENs ZWFyUGFnZVByaXZhdGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3ByaXZhdGUs ICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7 IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9f U2V0UGFnZVByaXZhdGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19zZXRfYml0KFBHX3ByaXZhdGUs ICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7 IH0pLT5mbGFncyk7IH0KMTQ0NzQ6ICBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IHZvaWQgX19DbGVhclBhZ2VQcml2YXRlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0 KFBHX3ByaXZhdGUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdl KSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgaW50IFBhZ2VQcml2YXRlMihzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4g dGVzdF9iaXQoUEdfcHJpdmF0ZV8yLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9p c29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlUHJpdmF0ZTIoc3RydWN0IHBhZ2UgKnBhZ2UpIHsg c2V0X2JpdChQR19wcml2YXRlXzIsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lz b25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZVByaXZhdGUyKHN0cnVjdCBwYWdlICpwYWdlKSB7 IGNsZWFyX2JpdChQR19wcml2YXRlXzIsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQ b2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSBpbnQgVGVzdFNldFBhZ2VQcml2YXRlMihzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyByZXR1cm4gdGVzdF9hbmRfc2V0X2JpdChQR19wcml2YXRlXzIsICYoeyAoKHZvaWQpKHNp emVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0g c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZVByaXZh dGUyKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoUEdfcHJp dmF0ZV8yLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkp OyBwYWdlOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIGludCBQYWdlT3duZXJQcml2MShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVz dF9iaXQoUEdfb3duZXJfcHJpdl8xLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9p c29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlT3duZXJQcml2MShzdHJ1Y3QgcGFnZSAqcGFnZSkg eyBzZXRfYml0KFBHX293bmVyX3ByaXZfMSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFn ZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlT3duZXJQcml2MShzdHJ1Y3QgcGFnZSAq cGFnZSkgeyBjbGVhcl9iaXQoUEdfb3duZXJfcHJpdl8xLCAmKHsgKCh2b2lkKShzaXplb2YoKCBs b25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAg c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZU93bmVy UHJpdjEoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19v d25lcl9wcml2XzEsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdl KSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQ YWdlV3JpdGViYWNrKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR193cml0 ZWJhY2ssICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAgJiYgUGFnZVRhaWwocGFnZSkpKSkp OyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBh Z2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAg c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdFNldFBhZ2VXcml0ZWJh Y2soc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX3NldF9iaXQoUEdfd3JpdGVi YWNrLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsg KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdl KSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlV3JpdGViYWNrKHN0cnVj dCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoUEdfd3JpdGViYWNrLCAm KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkp OyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZU1hcHBlZFRvRGlzayhzdHJ1Y3QgcGFn ZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfbWFwcGVkdG9kaXNrLCAmKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKSgwICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2Yo KCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9o ZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHZvaWQgU2V0UGFnZU1hcHBlZFRvRGlzayhzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRf Yml0KFBHX21hcHBlZHRvZGlzaywgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdl VGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNv bXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZU1h cHBlZFRvRGlzayhzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfbWFwcGVkdG9kaXNr LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsg KCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkp KSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VSZWNs YWltKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19yZWNsYWltLCAmKHsg KCh2b2lkKShzaXplb2YoKCBsb25nKSgwICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBj b21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZVJlY2xhaW0oc3RydWN0IHBhZ2UgKnBhZ2UpIHsg c2V0X2JpdChQR19yZWNsYWltLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VU YWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29t cG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdz KTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlUmVj bGFpbShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfcmVjbGFpbSwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91 bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6ICBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlUmVjbGFpbShzdHJ1Y3QgcGFnZSAq cGFnZSkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX3JlY2xhaW0sICYoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5k X2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBQYWdlUmVhZGFoZWFkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJl dHVybiB0ZXN0X2JpdChQR19yZWNsYWltLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgwICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VSZWFkYWhlYWQoc3RydWN0IHBhZ2UgKnBh Z2UpIHsgc2V0X2JpdChQR19yZWNsYWltLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZVJlYWRhaGVhZChzdHJ1Y3QgcGFnZSAq cGFnZSkgeyBjbGVhcl9iaXQoUEdfcmVjbGFpbSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko MSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBh Z2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAgc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZVJlYWRhaGVh ZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX3JlY2xh aW0sICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkp KTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdl OyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogIyAzNzYgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZs YWdzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgUGFnZUhpZ2hNZW0oY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UpIHsg cmV0dXJuIDA7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBTZXRQYWdlSGlnaE1lbShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyB9IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgQ2xlYXJQYWdlSGlnaE1lbShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQ YWdlU3dhcENhY2hlKHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAg cGFnZSA9IGNvbXBvdW5kX2hlYWQocGFnZSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gUGFnZVN3 YXBCYWNrZWQocGFnZSkgJiYgdGVzdF9iaXQoUEdfc3dhcGNhY2hlLCAmcGFnZS0+ZmxhZ3MpOwox NDQ3NDogCjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IHZvaWQgU2V0UGFnZVN3YXBDYWNoZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3N3 YXBjYWNoZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkp KSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQo cGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVhclBhZ2VTd2FwQ2Fj aGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3N3YXBjYWNoZSwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91 bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFn ZVVuZXZpY3RhYmxlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR191bmV2 aWN0YWJsZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5k X2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZVVuZXZpY3RhYmxlKHN0 cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQoUEdfdW5ldmljdGFibGUsICYoeyAoKHZvaWQpKHNp emVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBv dW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSB2b2lkIENsZWFyUGFnZVVuZXZpY3RhYmxlKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNs ZWFyX2JpdChQR191bmV2aWN0YWJsZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSkt PmZsYWdzKTsgfQoxNDQ3NDogIHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9p ZCBfX0NsZWFyUGFnZVVuZXZpY3RhYmxlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0 KFBHX3VuZXZpY3RhYmxlLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQo Y29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3Mp OyB9CjE0NDc0OiAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENs ZWFyUGFnZVVuZXZpY3RhYmxlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2FuZF9j bGVhcl9iaXQoUEdfdW5ldmljdGFibGUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQ b2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0p LT5mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIGludCBQYWdlTWxvY2tlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4g dGVzdF9iaXQoUEdfbWxvY2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdl VGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNv bXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VNbG9j a2VkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQoUEdfbWxvY2tlZCwgJih7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9m KCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRf aGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSB2b2lkIENsZWFyUGFnZU1sb2NrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJf Yml0KFBHX21sb2NrZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwo cGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3Vu ZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9 CjE0NDc0OiAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQ YWdlTWxvY2tlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBfX2NsZWFyX2JpdChQR19tbG9ja2VkLCAm KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkp OyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogIHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFRlc3RTZXRQYWdlTWxvY2tlZChzdHJ1Y3Qg cGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9hbmRfc2V0X2JpdChQR19tbG9ja2VkLCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21w b3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlTWxvY2tlZChzdHJ1Y3QgcGFnZSAqcGFnZSkg eyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX21sb2NrZWQsICYoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxv bmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQo cGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IGludCBQYWdlVW5jYWNoZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBH X3VuY2FjaGVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgwICYmIFBhZ2VDb21wb3VuZChw YWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkp KTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKSB2b2lkIFNldFBhZ2VVbmNhY2hlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBH X3VuY2FjaGVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VDb21wb3VuZChw YWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkp KTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKSB2b2lkIENsZWFyUGFnZVVuY2FjaGVkKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2Jp dChQR191bmNhY2hlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91 bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdl KSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAjIDQxOSAiLi9pbmNsdWRlL2xp bnV4L3BhZ2UtZmxhZ3MuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBQYWdlSFdQb2lzb24oY29uc3Qgc3RydWN0IHBh Z2UgKnBhZ2UpIHsgcmV0dXJuIDA7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBTZXRQYWdlSFdQb2lzb24oc3RydWN0IHBhZ2Ug KnBhZ2UpIHsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIENsZWFyUGFnZUhXUG9pc29uKHN0cnVjdCBwYWdlICpwYWdlKSB7IH0K MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgc2V0X2h3cG9pc29uX2ZyZWVfYnVkZHlfcGFnZShzdHJ1Y3QgcGFnZSAqcGFn ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDU2ICIuL2lu Y2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSBpbnQgUGFnZU1hcHBpbmdGbGFncyhzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gKCh1bnNpZ25lZCBsb25nKXBhZ2UtPm1hcHBpbmcgJiAoMHgxIHwg MHgyKSkgIT0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSBpbnQgUGFnZUFub24oc3RydWN0IHBhZ2UgKnBhZ2UpCjE0NDc0OiB7CjE0 NDc0OiAgcGFnZSA9IGNvbXBvdW5kX2hlYWQocGFnZSk7CjE0NDc0OiAgcmV0dXJuICgodW5zaWdu ZWQgbG9uZylwYWdlLT5tYXBwaW5nICYgMHgxKSAhPSAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBfX1BhZ2VNb3ZhYmxlKHN0 cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoKHVuc2lnbmVkIGxvbmcp cGFnZS0+bWFwcGluZyAmICgweDEgfCAweDIpKSA9PQoxNDQ3NDogICAgIDB4MjsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgNDgwICIuL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUtzbShzdHJ1Y3QgcGFnZSAqcGFn ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBwYWdlID0gY29tcG91bmRfaGVhZChwYWdlKTsKMTQ0NzQ6ICBy ZXR1cm4gKCh1bnNpZ25lZCBsb25nKXBhZ2UtPm1hcHBpbmcgJiAoMHgxIHwgMHgyKSkgPT0KMTQ0 NzQ6ICAgICAoMHgxIHwgMHgyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogdTY0IHN0YWJsZV9wYWdlX2ZsYWdzKHN0cnVjdCBwYWdlICpwYWdlKTsKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IFBhZ2VVcHRvZGF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsK MTQ0NzQ6ICBpbnQgcmV0OwoxNDQ3NDogIHBhZ2UgPSBjb21wb3VuZF9oZWFkKHBhZ2UpOwoxNDQ3 NDogIHJldCA9IHRlc3RfYml0KFBHX3VwdG9kYXRlLCAmKHBhZ2UpLT5mbGFncyk7CjE0NDc0OiAj IDUwNSAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCIKMTQ0NzQ6ICBpZiAocmV0KQoxNDQ3 NDogICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogCjE0NDc0 OiAgcmV0dXJuIHJldDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSB2b2lkIF9fU2V0UGFnZVVwdG9kYXRlKHN0cnVjdCBwYWdlICpwYWdl KQoxNDQ3NDogewoxNDQ3NDogICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVRhaWwocGFnZSkp KSkpOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0 OiAgX19zZXRfYml0KFBHX3VwdG9kYXRlLCAmcGFnZS0+ZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZVVw dG9kYXRlKHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogICgodm9pZCkoc2l6ZW9m KCggbG9uZykoUGFnZVRhaWwocGFnZSkpKSkpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OwoxNDQ3NDogIHNldF9iaXQoUEdfdXB0b2RhdGUsICZwYWdlLT5mbGFncyk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVh clBhZ2VVcHRvZGF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfdXB0b2RhdGUs ICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkp KSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAKMTQ0NzQ6 IGludCB0ZXN0X2NsZWFyX3BhZ2Vfd3JpdGViYWNrKHN0cnVjdCBwYWdlICpwYWdlKTsKMTQ0NzQ6 IGludCBfX3Rlc3Rfc2V0X3BhZ2Vfd3JpdGViYWNrKHN0cnVjdCBwYWdlICpwYWdlLCBib29sIGtl ZXBfd3JpdGUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBzZXRfcGFnZV93cml0ZWJhY2soc3RydWN0IHBhZ2UgKnBhZ2UpCjE0NDc0 OiB7CjE0NDc0OiAgX190ZXN0X3NldF9wYWdlX3dyaXRlYmFjayhwYWdlLCBmYWxzZSk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X3BhZ2Vfd3JpdGViYWNrX2tlZXB3cml0ZShzdHJ1 Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX3Rlc3Rfc2V0X3BhZ2Vfd3JpdGViYWNr KHBhZ2UsIHRydWUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBQYWdlSGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4g dGVzdF9iaXQoUEdfaGVhZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVk KHBhZ2UpKSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIHZvaWQgX19TZXRQYWdlSGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBfX3NldF9i aXQoUEdfaGVhZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2Up KSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgX19DbGVhclBhZ2VIZWFkKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0 KFBHX2hlYWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkp KSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIENsZWFyUGFnZUhlYWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX2hl YWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBh Z2U7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkIHNldF9jb21wb3VuZF9oZWFkKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1 Y3QgcGFnZSAqaGVhZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVvZihwYWdlLT5j b21wb3VuZF9oZWFkKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5 cGVvZihwYWdlLT5jb21wb3VuZF9oZWFkKSkgKCh1bnNpZ25lZCBsb25nKWhlYWQgKyAxKSB9OyBf X3dyaXRlX29uY2Vfc2l6ZSgmKHBhZ2UtPmNvbXBvdW5kX2hlYWQpLCBfX3UuX19jLCBzaXplb2Yo cGFnZS0+Y29tcG91bmRfaGVhZCkpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgY2xlYXJfY29tcG91 bmRfaGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5 cGVvZihwYWdlLT5jb21wb3VuZF9oZWFkKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAu X192YWwgPSAoIHR5cGVvZihwYWdlLT5jb21wb3VuZF9oZWFkKSkgKDApIH07IF9fd3JpdGVfb25j ZV9zaXplKCYocGFnZS0+Y29tcG91bmRfaGVhZCksIF9fdS5fX2MsIHNpemVvZihwYWdlLT5jb21w b3VuZF9oZWFkKSk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBDbGVhclBhZ2VDb21wb3VuZChzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0 NzQ6ICBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFQYWdlSGVhZChwYWdlKSksIDApKSBk byB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIg IlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIg IjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIl YzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1 Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAi XHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3Bh Z2UtZmxhZ3MuaCIpLCAiaSIgKDU2NSksICJpIiAoMCksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdf ZW50cnkpKSk7IH0gd2hpbGUgKDApOyBkbyB7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIu cHVzaHNlY3Rpb24gLmRpc2NhcmQudW5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0 IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgxNCkpOyB9KTsgYXNtIHZvbGF0aWxlKCIiKTsg X19idWlsdGluX3VucmVhY2hhYmxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgfSB3aGls ZSAoMCk7CjE0NDc0OiAgQ2xlYXJQYWdlSGVhZChwYWdlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQgUGFnZUh1Z2Uoc3RydWN0IHBh Z2UgKnBhZ2UpOwoxNDQ3NDogaW50IFBhZ2VIZWFkSHVnZShzdHJ1Y3QgcGFnZSAqcGFnZSk7CjE0 NDc0OiBib29sIHBhZ2VfaHVnZV9hY3RpdmUoc3RydWN0IHBhZ2UgKnBhZ2UpOwoxNDQ3NDogIyA1 OTYgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgUGFnZVRyYW5zSHVn ZShzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoKHZvaWQpKHNpemVvZigoIGxv bmcpKFBhZ2VUYWlsKHBhZ2UpKSkpKTsKMTQ0NzQ6ICByZXR1cm4gUGFnZUhlYWQocGFnZSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgUGFnZVRyYW5zQ29tcG91bmQoc3RydWN0IHBhZ2UgKnBhZ2UpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIFBhZ2VDb21wb3VuZChwYWdlKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjMzICIu L2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IFBhZ2VUcmFuc0NvbXBvdW5k TWFwKHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBwYWdlICpoZWFk OwoxNDQ3NDogCjE0NDc0OiAgaWYgKCFQYWdlVHJhbnNDb21wb3VuZChwYWdlKSkKMTQ0NzQ6ICAg cmV0dXJuIDA7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoUGFnZUFub24ocGFnZSkpCjE0NDc0OiAgIHJl dHVybiBhdG9taWNfcmVhZCgmcGFnZS0+X21hcGNvdW50KSA8IDA7CjE0NDc0OiAKMTQ0NzQ6ICBo ZWFkID0gY29tcG91bmRfaGVhZChwYWdlKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBhdG9taWNf cmVhZCgmcGFnZS0+X21hcGNvdW50KSA9PQoxNDQ3NDogICAgICAgICBhdG9taWNfcmVhZChjb21w b3VuZF9tYXBjb3VudF9wdHIoaGVhZCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IFBhZ2VUcmFuc1RhaWwoc3RydWN0 IHBhZ2UgKnBhZ2UpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIFBhZ2VUYWlsKHBhZ2UpOwoxNDQ3 NDogfQoxNDQ3NDogIyA2NzIgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgUGFnZURvdWJsZU1hcChzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gUGFnZUhlYWQocGFnZSkgJiYgdGVzdF9iaXQoUEdfZG91YmxlX21hcCwgJnBhZ2VbMV0uZmxh Z3MpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIFNldFBhZ2VEb3VibGVNYXAoc3RydWN0 IHBhZ2UgKnBhZ2UpCjE0NDc0OiB7CjE0NDc0OiAgKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFn ZUhlYWQocGFnZSkpKSkpOwoxNDQ3NDogIHNldF9iaXQoUEdfZG91YmxlX21hcCwgJnBhZ2VbMV0u ZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIENsZWFyUGFnZURvdWJsZU1hcChz dHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoKHZvaWQpKHNpemVvZigoIGxvbmcp KCFQYWdlSGVhZChwYWdlKSkpKSk7CjE0NDc0OiAgY2xlYXJfYml0KFBHX2RvdWJsZV9tYXAsICZw YWdlWzFdLmZsYWdzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBUZXN0U2V0UGFnZURvdWJsZU1hcChz dHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoKHZvaWQpKHNpemVvZigoIGxvbmcp KCFQYWdlSGVhZChwYWdlKSkpKSk7CjE0NDc0OiAgcmV0dXJuIHRlc3RfYW5kX3NldF9iaXQoUEdf ZG91YmxlX21hcCwgJnBhZ2VbMV0uZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg VGVzdENsZWFyUGFnZURvdWJsZU1hcChzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6 ICAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCFQYWdlSGVhZChwYWdlKSkpKSk7CjE0NDc0OiAgcmV0 dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19kb3VibGVfbWFwLCAmcGFnZVsxXS5mbGFncyk7CjE0 NDc0OiB9CjE0NDc0OiAjIDczMSAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBwYWdlX2hhc190eXBlKHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiAoaW50KXBhZ2UtPnBhZ2VfdHlwZSA8IC0xMjg7CjE0NDc0OiB9CjE0NDc0OiAjIDc1NiAi Li9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgaW50IFBhZ2VCdWRkeShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4g KChwYWdlLT5wYWdlX3R5cGUgJiAoMHhmMDAwMDAwMCB8IDB4MDAwMDAwODApKSA9PSAweGYwMDAw MDAwKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdl QnVkZHkoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSghKChwYWdl LT5wYWdlX3R5cGUgJiAoMHhmMDAwMDAwMCB8IDApKSA9PSAweGYwMDAwMDAwKSkpKSk7IHBhZ2Ut PnBhZ2VfdHlwZSAmPSB+MHgwMDAwMDA4MDsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHZvaWQgX19DbGVhclBhZ2VCdWRkeShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKCFQYWdlQnVkZHkocGFnZSkpKSkpOyBwYWdlLT5wYWdlX3R5cGUgfD0g MHgwMDAwMDA4MDsgfQoxNDQ3NDogIyA3NjUgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlT2ZmbGlu ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gKChwYWdlLT5wYWdlX3R5cGUgJiAoMHhmMDAw MDAwMCB8IDB4MDAwMDAxMDApKSA9PSAweGYwMDAwMDAwKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlT2ZmbGluZShzdHJ1Y3QgcGFnZSAqcGFnZSkg eyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCEoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAw IHwgMCkpID09IDB4ZjAwMDAwMDApKSkpKTsgcGFnZS0+cGFnZV90eXBlICY9IH4weDAwMDAwMTAw OyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZU9m ZmxpbmUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFnZU9m ZmxpbmUocGFnZSkpKSkpOyBwYWdlLT5wYWdlX3R5cGUgfD0gMHgwMDAwMDEwMDsgfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VLbWVtY2coc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0 dXJuICgocGFnZS0+cGFnZV90eXBlICYgKDB4ZjAwMDAwMDAgfCAweDAwMDAwMjAwKSkgPT0gMHhm MDAwMDAwMCk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fU2V0 UGFnZUttZW1jZyhzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCEo KHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAwIHwgMCkpID09IDB4ZjAwMDAwMDApKSkpKTsg cGFnZS0+cGFnZV90eXBlICY9IH4weDAwMDAwMjAwOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZUttZW1jZyhzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKCFQYWdlS21lbWNnKHBhZ2UpKSkpKTsgcGFnZS0+cGFnZV90 eXBlIHw9IDB4MDAwMDAyMDA7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVRhYmxlKHN0cnVj dCBwYWdlICpwYWdlKSB7IHJldHVybiAoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAwIHwg MHgwMDAwMDQwMCkpID09IDB4ZjAwMDAwMDApOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgdm9pZCBfX1NldFBhZ2VUYWJsZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKCEoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAwIHwgMCkpID09 IDB4ZjAwMDAwMDApKSkpKTsgcGFnZS0+cGFnZV90eXBlICY9IH4weDAwMDAwNDAwOyB9IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZVRhYmxlKHN0cnVj dCBwYWdlICpwYWdlKSB7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VUYWJsZShwYWdlKSkp KSk7IHBhZ2UtPnBhZ2VfdHlwZSB8PSAweDAwMDAwNDAwOyB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50 IFBhZ2VHdWFyZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gKChwYWdlLT5wYWdlX3R5cGUg JiAoMHhmMDAwMDAwMCB8IDB4MDAwMDA4MDApKSA9PSAweGYwMDAwMDAwKTsgfSBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlR3VhcmQoc3RydWN0IHBhZ2Ug KnBhZ2UpIHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSghKChwYWdlLT5wYWdlX3R5cGUgJiAoMHhm MDAwMDAwMCB8IDApKSA9PSAweGYwMDAwMDAwKSkpKSk7IHBhZ2UtPnBhZ2VfdHlwZSAmPSB+MHgw MDAwMDgwMDsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19DbGVh clBhZ2VHdWFyZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCFQ YWdlR3VhcmQocGFnZSkpKSkpOyBwYWdlLT5wYWdlX3R5cGUgfD0gMHgwMDAwMDgwMDsgfQoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gYm9vbCBpc19mcmVlX2J1ZGR5X3BhZ2Uoc3RydWN0IHBhZ2UgKnBh Z2UpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBQYWdlSXNvbGF0ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX2lz b2xhdGVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkp OyBwYWdlOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dm9pZCBfX1NldFBhZ2VJc29sYXRlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBfX3NldF9iaXQoUEdf aXNvbGF0ZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkp KSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIF9fQ2xlYXJQYWdlSXNvbGF0ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9i aXQoUEdfaXNvbGF0ZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChw YWdlKSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IFBhZ2VTbGFiUGZtZW1hbGxvYyhzdHJ1Y3QgcGFnZSAq cGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCFQYWdlU2xhYihw YWdlKSkpKSk7CjE0NDc0OiAgcmV0dXJuIFBhZ2VBY3RpdmUocGFnZSk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgU2V0UGFnZVNsYWJQZm1lbWFsbG9jKHN0cnVjdCBwYWdlICpwYWdlKQox NDQ3NDogewoxNDQ3NDogICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VTbGFiKHBhZ2UpKSkp KTsKMTQ0NzQ6ICBTZXRQYWdlQWN0aXZlKHBhZ2UpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIF9fQ2xlYXJQYWdlU2xhYlBmbWVtYWxsb2Moc3RydWN0IHBhZ2UgKnBhZ2UpCjE0NDc0OiB7 CjE0NDc0OiAgKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFnZVNsYWIocGFnZSkpKSkpOwoxNDQ3 NDogIF9fQ2xlYXJQYWdlQWN0aXZlKHBhZ2UpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IENsZWFyUGFnZVNsYWJQZm1lbWFsbG9jKHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3 NDogICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VTbGFiKHBhZ2UpKSkpKTsKMTQ0NzQ6ICBD bGVhclBhZ2VBY3RpdmUocGFnZSk7CjE0NDc0OiB9CjE0NDc0OiAjIDg1MiAiLi9pbmNsdWRlL2xp bnV4L3BhZ2UtZmxhZ3MuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwYWdlX2hhc19wcml2YXRlKHN0cnVjdCBwYWdl ICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhIShwYWdlLT5mbGFncyAmICgxVUwgPDwg UEdfcHJpdmF0ZSB8IDFVTCA8PCBQR19wcml2YXRlXzIpKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjMg Ii4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgoxNDQ3NDogIyA0MSAiLi9pbmNsdWRlL2xpbnV4 L21tem9uZS5oIgoxNDQ3NDogZW51bSBtaWdyYXRldHlwZSB7CjE0NDc0OiAgTUlHUkFURV9VTk1P VkFCTEUsCjE0NDc0OiAgTUlHUkFURV9NT1ZBQkxFLAoxNDQ3NDogIE1JR1JBVEVfUkVDTEFJTUFC TEUsCjE0NDc0OiAgTUlHUkFURV9QQ1BUWVBFUywKMTQ0NzQ6ICBNSUdSQVRFX0hJR0hBVE9NSUMg PSBNSUdSQVRFX1BDUFRZUEVTLAoxNDQ3NDogIyA2NCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5o IgoxNDQ3NDogIE1JR1JBVEVfSVNPTEFURSwKMTQ0NzQ6IAoxNDQ3NDogIE1JR1JBVEVfVFlQRVMK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25z dCBtaWdyYXRldHlwZV9uYW1lc1tNSUdSQVRFX1RZUEVTXTsKMTQ0NzQ6ICMgODAgIi4vaW5jbHVk ZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaXNfbWlncmF0ZV9tb3ZhYmxlKGludCBtdCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZmFsc2UgfHwgbXQgPT0gTUlHUkFURV9NT1ZBQkxFOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgcGFnZV9ncm91cF9ieV9tb2JpbGl0eV9kaXNhYmxlZDsKMTQ0NzQ6ICMgOTggIi4v aW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0cnVjdCBmcmVlX2FyZWEgewoxNDQ3NDog IHN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saXN0W01JR1JBVEVfVFlQRVNdOwoxNDQ3NDogIHVuc2ln bmVkIGxvbmcgbnJfZnJlZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBh ZGRfdG9fZnJlZV9hcmVhKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgZnJlZV9hcmVhICphcmVh LAoxNDQ3NDogICAgICAgICBpbnQgbWlncmF0ZXR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgbGlzdF9h ZGQoJnBhZ2UtPmxydSwgJmFyZWEtPmZyZWVfbGlzdFttaWdyYXRldHlwZV0pOwoxNDQ3NDogIGFy ZWEtPm5yX2ZyZWUrKzsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFkZF90 b19mcmVlX2FyZWFfdGFpbChzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGZyZWVfYXJlYSAqYXJl YSwKMTQ0NzQ6ICAgICAgIGludCBtaWdyYXRldHlwZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBsaXN0X2Fk ZF90YWlsKCZwYWdlLT5scnUsICZhcmVhLT5mcmVlX2xpc3RbbWlncmF0ZXR5cGVdKTsKMTQ0NzQ6 ICBhcmVhLT5ucl9mcmVlKys7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFkZF90b19mcmVlX2FyZWFfcmFuZG9tKHN0 cnVjdCBwYWdlICpwYWdlLAoxNDQ3NDogICBzdHJ1Y3QgZnJlZV9hcmVhICphcmVhLCBpbnQgbWln cmF0ZXR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgYWRkX3RvX2ZyZWVfYXJlYShwYWdlLCBhcmVhLCBt aWdyYXRldHlwZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IG1vdmVfdG9fZnJlZV9hcmVhKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgZnJlZV9hcmVhICph cmVhLAoxNDQ3NDogICAgICAgICBpbnQgbWlncmF0ZXR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgbGlz dF9tb3ZlKCZwYWdlLT5scnUsICZhcmVhLT5mcmVlX2xpc3RbbWlncmF0ZXR5cGVdKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHBhZ2UgKmdldF9wYWdlX2Zyb21fZnJlZV9hcmVhKHN0 cnVjdCBmcmVlX2FyZWEgKmFyZWEsCjE0NDc0OiAgICAgICAgICBpbnQgbWlncmF0ZXR5cGUpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IHN0cnVjdCBsaXN0X2hlYWQgKmhlYWRfXyA9ICgmYXJl YS0+ZnJlZV9saXN0W21pZ3JhdGV0eXBlXSk7IHN0cnVjdCBsaXN0X2hlYWQgKnBvc19fID0gKHsg dW5pb24geyB0eXBlb2YoaGVhZF9fLT5uZXh0KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBp ZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKGhlYWRfXy0+bmV4dCksIF9fdS5fX2MsIHNpemVvZiho ZWFkX18tPm5leHQpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihoZWFkX18tPm5l eHQpLCBfX3UuX19jLCBzaXplb2YoaGVhZF9fLT5uZXh0KSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9f dS5fX3ZhbDsgfSk7IHBvc19fICE9IGhlYWRfXyA/ICh7IHZvaWQgKl9fbXB0ciA9ICh2b2lkICop KHBvc19fKTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNDEodm9pZCkg X19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29udGFp bmVyX29mKCkiKSkpOyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVv ZigqKHBvc19fKSksIHR5cGVvZigoKHN0cnVjdCBwYWdlICopMCktPmxydSkpICYmICFfX2J1aWx0 aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKHBvc19fKSksIHR5cGVvZih2b2lkKSkpKSkg X19jb21waWxldGltZV9hc3NlcnRfMTQxKCk7IH0gd2hpbGUgKDApOyAoKHN0cnVjdCBwYWdlICop KF9fbXB0ciAtIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFnZSwgbHJ1KSkpOyB9KSA6ICgo dm9pZCAqKTApOyB9KQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgIDsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBkZWxfcGFnZV9mcm9tX2ZyZWVfYXJlYShzdHJ1Y3QgcGFnZSAqcGFn ZSwKMTQ0NzQ6ICAgc3RydWN0IGZyZWVfYXJlYSAqYXJlYSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBsaXN0 X2RlbCgmcGFnZS0+bHJ1KTsKMTQ0NzQ6ICBfX0NsZWFyUGFnZUJ1ZGR5KHBhZ2UpOwoxNDQ3NDog ICgocGFnZSktPnByaXZhdGUgPSAoMCkpOwoxNDQ3NDogIGFyZWEtPm5yX2ZyZWUtLTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBmcmVlX2FyZWFfZW1wdHkoc3RydWN0IGZyZWVfYXJlYSAq YXJlYSwgaW50IG1pZ3JhdGV0eXBlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBsaXN0X2VtcHR5 KCZhcmVhLT5mcmVlX2xpc3RbbWlncmF0ZXR5cGVdKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IHBnbGlzdF9kYXRhOwoxNDQ3NDogIyAxNjggIi4vaW5jbHVkZS9saW51eC9tbXpvbmUu aCIKMTQ0NzQ6IHN0cnVjdCB6b25lX3BhZGRpbmcgewoxNDQ3NDogIGNoYXIgeFswXTsKMTQ0NzQ6 IH0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMSA8PCAoNikpKSk7CjE0NDc0OiAjIDE5MCAi Li9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogZW51bSB6b25lX3N0YXRfaXRlbSB7CjE0 NDc0OiAKMTQ0NzQ6ICBOUl9GUkVFX1BBR0VTLAoxNDQ3NDogIE5SX1pPTkVfTFJVX0JBU0UsCjE0 NDc0OiAgTlJfWk9ORV9JTkFDVElWRV9BTk9OID0gTlJfWk9ORV9MUlVfQkFTRSwKMTQ0NzQ6ICBO Ul9aT05FX0FDVElWRV9BTk9OLAoxNDQ3NDogIE5SX1pPTkVfSU5BQ1RJVkVfRklMRSwKMTQ0NzQ6 ICBOUl9aT05FX0FDVElWRV9GSUxFLAoxNDQ3NDogIE5SX1pPTkVfVU5FVklDVEFCTEUsCjE0NDc0 OiAgTlJfWk9ORV9XUklURV9QRU5ESU5HLAoxNDQ3NDogIE5SX01MT0NLLAoxNDQ3NDogIE5SX1BB R0VUQUJMRSwKMTQ0NzQ6ICBOUl9LRVJORUxfU1RBQ0tfS0IsCjE0NDc0OiAKMTQ0NzQ6ICBOUl9C T1VOQ0UsCjE0NDc0OiAKMTQ0NzQ6ICBOUl9aU1BBR0VTLAoxNDQ3NDogCjE0NDc0OiAgTlJfRlJF RV9DTUFfUEFHRVMsCjE0NDc0OiAgTlJfVk1fWk9ORV9TVEFUX0lURU1TIH07CjE0NDc0OiAKMTQ0 NzQ6IGVudW0gbm9kZV9zdGF0X2l0ZW0gewoxNDQ3NDogIE5SX0xSVV9CQVNFLAoxNDQ3NDogIE5S X0lOQUNUSVZFX0FOT04gPSBOUl9MUlVfQkFTRSwKMTQ0NzQ6ICBOUl9BQ1RJVkVfQU5PTiwKMTQ0 NzQ6ICBOUl9JTkFDVElWRV9GSUxFLAoxNDQ3NDogIE5SX0FDVElWRV9GSUxFLAoxNDQ3NDogIE5S X1VORVZJQ1RBQkxFLAoxNDQ3NDogIE5SX1NMQUJfUkVDTEFJTUFCTEUsCjE0NDc0OiAgTlJfU0xB Ql9VTlJFQ0xBSU1BQkxFLAoxNDQ3NDogIE5SX0lTT0xBVEVEX0FOT04sCjE0NDc0OiAgTlJfSVNP TEFURURfRklMRSwKMTQ0NzQ6ICBXT1JLSU5HU0VUX05PREVTLAoxNDQ3NDogIFdPUktJTkdTRVRf UkVGQVVMVCwKMTQ0NzQ6ICBXT1JLSU5HU0VUX0FDVElWQVRFLAoxNDQ3NDogIFdPUktJTkdTRVRf UkVTVE9SRSwKMTQ0NzQ6ICBXT1JLSU5HU0VUX05PREVSRUNMQUlNLAoxNDQ3NDogIE5SX0FOT05f TUFQUEVELAoxNDQ3NDogIE5SX0ZJTEVfTUFQUEVELAoxNDQ3NDogCjE0NDc0OiAgTlJfRklMRV9Q QUdFUywKMTQ0NzQ6ICBOUl9GSUxFX0RJUlRZLAoxNDQ3NDogIE5SX1dSSVRFQkFDSywKMTQ0NzQ6 ICBOUl9XUklURUJBQ0tfVEVNUCwKMTQ0NzQ6ICBOUl9TSE1FTSwKMTQ0NzQ6ICBOUl9TSE1FTV9U SFBTLAoxNDQ3NDogIE5SX1NITUVNX1BNRE1BUFBFRCwKMTQ0NzQ6ICBOUl9GSUxFX1RIUFMsCjE0 NDc0OiAgTlJfRklMRV9QTURNQVBQRUQsCjE0NDc0OiAgTlJfQU5PTl9USFBTLAoxNDQ3NDogIE5S X1VOU1RBQkxFX05GUywKMTQ0NzQ6ICBOUl9WTVNDQU5fV1JJVEUsCjE0NDc0OiAgTlJfVk1TQ0FO X0lNTUVESUFURSwKMTQ0NzQ6ICBOUl9ESVJUSUVELAoxNDQ3NDogIE5SX1dSSVRURU4sCjE0NDc0 OiAgTlJfS0VSTkVMX01JU0NfUkVDTEFJTUFCTEUsCjE0NDc0OiAgTlJfVk1fTk9ERV9TVEFUX0lU RU1TCjE0NDc0OiB9OwoxNDQ3NDogIyAyNjIgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0 NzQ6IGVudW0gbHJ1X2xpc3QgewoxNDQ3NDogIExSVV9JTkFDVElWRV9BTk9OID0gMCwKMTQ0NzQ6 ICBMUlVfQUNUSVZFX0FOT04gPSAwICsgMSwKMTQ0NzQ6ICBMUlVfSU5BQ1RJVkVfRklMRSA9IDAg KyAyLAoxNDQ3NDogIExSVV9BQ1RJVkVfRklMRSA9IDAgKyAyICsgMSwKMTQ0NzQ6ICBMUlVfVU5F VklDVEFCTEUsCjE0NDc0OiAgTlJfTFJVX0xJU1RTCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaXNfZmlsZV9scnUoZW51bSBscnVf bGlzdCBscnUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChscnUgPT0gTFJVX0lOQUNUSVZFX0ZJ TEUgfHwgbHJ1ID09IExSVV9BQ1RJVkVfRklMRSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgaXNfYWN0aXZlX2xydShlbnVtIGxydV9saXN0IGxydSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gKGxydSA9PSBMUlVfQUNUSVZFX0FOT04gfHwgbHJ1ID09IExSVV9BQ1RJVkVfRklMRSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB6b25lX3JlY2xhaW1fc3RhdCB7CjE0NDc0OiAj IDI5NCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgcmVj ZW50X3JvdGF0ZWRbMl07CjE0NDc0OiAgdW5zaWduZWQgbG9uZyByZWNlbnRfc2Nhbm5lZFsyXTsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gbHJ1dmVjX2ZsYWdzIHsKMTQ0NzQ6ICBMUlVW RUNfQ09OR0VTVEVELAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBscnV2ZWMgewoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgbGlzdHNbTlJfTFJVX0xJU1RT XTsKMTQ0NzQ6ICBzdHJ1Y3Qgem9uZV9yZWNsYWltX3N0YXQgcmVjbGFpbV9zdGF0OwoxNDQ3NDog CjE0NDc0OiAgYXRvbWljX2xvbmdfdCBpbmFjdGl2ZV9hZ2U7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIHJlZmF1bHRzOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBmbGFnczsK MTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQ7CjE0NDc0OiAKMTQ0NzQ6 IH07CjE0NDc0OiAjIDMyNiAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogdHlwZWRl ZiB1bnNpZ25lZCBpc29sYXRlX21vZGVfdDsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB6b25lX3dhdGVy bWFya3MgewoxNDQ3NDogIFdNQVJLX01JTiwKMTQ0NzQ6ICBXTUFSS19MT1csCjE0NDc0OiAgV01B UktfSElHSCwKMTQ0NzQ6ICBOUl9XTUFSSwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwZXJfY3B1X3BhZ2VzIHsK MTQ0NzQ6ICBpbnQgY291bnQ7CjE0NDc0OiAgaW50IGhpZ2g7CjE0NDc0OiAgaW50IGJhdGNoOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3RzW01JR1JBVEVfUENQ VFlQRVNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBlcl9jcHVfcGFnZXNldCB7 CjE0NDc0OiAgc3RydWN0IHBlcl9jcHVfcGFnZXMgcGNwOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzOCBzdGF0X3RocmVzaG9sZDsKMTQ0NzQ6ICBzOCB2 bV9zdGF0X2RpZmZbTlJfVk1fWk9ORV9TVEFUX0lURU1TXTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgewoxNDQ3NDogIHM4IHN0YXRfdGhy ZXNob2xkOwoxNDQ3NDogIHM4IHZtX25vZGVfc3RhdF9kaWZmW05SX1ZNX05PREVfU1RBVF9JVEVN U107CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB6b25lX3R5 cGUgewoxNDQ3NDogIyA0MDAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6ICBaT05F X0RNQSwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgWk9ORV9ETUEzMiwKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBaT05FX05PUk1BTCwKMTQ0 NzQ6ICMgNDIyICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiAgWk9ORV9NT1ZBQkxF LAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fTUFYX05SX1pPTkVTCjE0NDc0OiAK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgem9uZSB7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBfd2F0ZXJtYXJrW05S X1dNQVJLXTsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHdhdGVybWFya19ib29zdDsKMTQ0NzQ6IAox NDQ3NDogIHVuc2lnbmVkIGxvbmcgbnJfcmVzZXJ2ZWRfaGlnaGF0b21pYzsKMTQ0NzQ6ICMgNDUw ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiAgbG9uZyBsb3dtZW1fcmVzZXJ2ZVs0 XTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBwZ2xpc3Rf ZGF0YSAqem9uZV9wZ2RhdDsKMTQ0NzQ6ICBzdHJ1Y3QgcGVyX2NwdV9wYWdlc2V0ICpwYWdlc2V0 OwoxNDQ3NDogIyA0NjcgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6ICB1bnNpZ25l ZCBsb25nIHpvbmVfc3RhcnRfcGZuOwoxNDQ3NDogIyA1MDQgIi4vaW5jbHVkZS9saW51eC9tbXpv bmUuaCIKMTQ0NzQ6ICBhdG9taWNfbG9uZ190IG1hbmFnZWRfcGFnZXM7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyBzcGFubmVkX3BhZ2VzOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgcHJlc2VudF9wYWdl czsKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0IGNoYXIgKm5hbWU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IG5yX2lzb2xhdGVfcGFnZWJsb2NrOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgc2VxbG9ja190IHNwYW5fc2VxbG9jazsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50 IGluaXRpYWxpemVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgem9uZV9wYWRkaW5n IF9wYWQxXzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGZyZWVfYXJlYSBmcmVlX2Fy ZWFbMTFdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGZsYWdzOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBzcGlubG9ja190IGxvY2s7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHN0cnVjdCB6b25lX3BhZGRpbmcgX3BhZDJfOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgcGVyY3B1X2RyaWZ0 X21hcms7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBjb21w YWN0X2NhY2hlZF9mcmVlX3BmbjsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgY29tcGFj dF9jYWNoZWRfbWlncmF0ZV9wZm5bMl07CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBjb21wYWN0X2lu aXRfbWlncmF0ZV9wZm47CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBjb21wYWN0X2luaXRfZnJlZV9w Zm47CjE0NDc0OiAjIDU2MyAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogIHVuc2ln bmVkIGludCBjb21wYWN0X2NvbnNpZGVyZWQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IGNvbXBhY3Rf ZGVmZXJfc2hpZnQ7CjE0NDc0OiAgaW50IGNvbXBhY3Rfb3JkZXJfZmFpbGVkOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBjb21wYWN0X2Jsb2Nrc2tpcF9mbHVz aDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBjb250aWd1b3VzOwoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IHpvbmVfcGFkZGluZyBfcGFkM187CjE0NDc0OiAKMTQ0NzQ6ICBhdG9taWNfbG9u Z190IHZtX3N0YXRbTlJfVk1fWk9ORV9TVEFUX0lURU1TXTsKMTQ0NzQ6ICBhdG9taWNfbG9uZ190 IHZtX251bWFfc3RhdFswXTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMSA8 PCAoNikpKSk7CjE0NDc0OiAKMTQ0NzQ6IGVudW0gcGdkYXRfZmxhZ3MgewoxNDQ3NDogIFBHREFU X0RJUlRZLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFBHREFUX1dSSVRFQkFDSywK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgUEdEQVRfUkVDTEFJTV9MT0NLRUQsCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBlbnVtIHpvbmVfZmxhZ3MgewoxNDQ3NDogIFpPTkVfQk9PU1RFRF9XQVRF Uk1BUkssCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQg bG9uZyB6b25lX21hbmFnZWRfcGFnZXMoc3RydWN0IHpvbmUgKnpvbmUpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuICh1bnNpZ25lZCBsb25nKWF0b21pY19sb25nX3JlYWQoJnpvbmUtPm1hbmFnZWRf cGFnZXMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIHpvbmVfZW5kX3Bm bihjb25zdCBzdHJ1Y3Qgem9uZSAqem9uZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gem9uZS0+ em9uZV9zdGFydF9wZm4gKyB6b25lLT5zcGFubmVkX3BhZ2VzOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIHpvbmVfc3BhbnNfcGZuKGNvbnN0IHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25l ZCBsb25nIHBmbikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gem9uZS0+em9uZV9zdGFydF9wZm4g PD0gcGZuICYmIHBmbiA8IHpvbmVfZW5kX3Bmbih6b25lKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCB6b25lX2lzX2luaXRpYWxpemVkKHN0cnVjdCB6b25lICp6b25lKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiB6b25lLT5pbml0aWFsaXplZDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCB6b25lX2lzX2VtcHR5KHN0cnVjdCB6b25lICp6b25lKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiB6b25lLT5zcGFubmVkX3BhZ2VzID09IDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB6b25lX2ludGVyc2VjdHMoc3RydWN0 IHpvbmUgKnpvbmUsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBs b25nIG5yX3BhZ2VzKQoxNDQ3NDogewoxNDQ3NDogIGlmICh6b25lX2lzX2VtcHR5KHpvbmUpKQox NDQ3NDogICByZXR1cm4gZmFsc2U7CjE0NDc0OiAgaWYgKHN0YXJ0X3BmbiA+PSB6b25lX2VuZF9w Zm4oem9uZSkgfHwKMTQ0NzQ6ICAgICAgc3RhcnRfcGZuICsgbnJfcGFnZXMgPD0gem9uZS0+em9u ZV9zdGFydF9wZm4pCjE0NDc0OiAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVy biB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogIyA2NDkgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIK MTQ0NzQ6IGVudW0gewoxNDQ3NDogIFpPTkVMSVNUX0ZBTExCQUNLLAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgTUFYX1pPTkVM SVNUUwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3Qgem9uZXJlZiB7CjE0NDc0OiAgc3RydWN0IHpvbmUgKnpvbmU7CjE0NDc0OiAg aW50IHpvbmVfaWR4OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNjg0ICIuL2luY2x1ZGUvbGludXgvbW16 b25lLmgiCjE0NDc0OiBzdHJ1Y3Qgem9uZWxpc3QgewoxNDQ3NDogIHN0cnVjdCB6b25lcmVmIF96 b25lcmVmc1soKDEgPDwgMCkgKiA0KSArIDFdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgcGFnZSAqbWVtX21hcDsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkZWZlcnJlZF9zcGxpdCB7CjE0NDc0OiAgc3BpbmxvY2tf dCBzcGxpdF9xdWV1ZV9sb2NrOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgc3BsaXRfcXVldWU7 CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBzcGxpdF9xdWV1ZV9sZW47CjE0NDc0OiB9OwoxNDQ3NDog IyA3MDkgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0cnVjdCBib290bWVtX2Rh dGE7CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBwZ2xpc3RfZGF0YSB7CjE0NDc0OiAgc3RydWN0IHpv bmUgbm9kZV96b25lc1s0XTsKMTQ0NzQ6ICBzdHJ1Y3Qgem9uZWxpc3Qgbm9kZV96b25lbGlzdHNb TUFYX1pPTkVMSVNUU107CjE0NDc0OiAgaW50IG5yX3pvbmVzOwoxNDQ3NDogIyA3MzEgIi4vaW5j bHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6ICBzcGlubG9ja190IG5vZGVfc2l6ZV9sb2NrOwox NDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBub2RlX3N0YXJ0X3BmbjsKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIG5vZGVfcHJlc2VudF9wYWdlczsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIG5vZGVf c3Bhbm5lZF9wYWdlczsKMTQ0NzQ6IAoxNDQ3NDogIGludCBub2RlX2lkOwoxNDQ3NDogIHdhaXRf cXVldWVfaGVhZF90IGtzd2FwZF93YWl0OwoxNDQ3NDogIHdhaXRfcXVldWVfaGVhZF90IHBmbWVt YWxsb2Nfd2FpdDsKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmtzd2FwZDsKMTQ0NzQ6IAox NDQ3NDogIGludCBrc3dhcGRfb3JkZXI7CjE0NDc0OiAgZW51bSB6b25lX3R5cGUga3N3YXBkX2Ns YXNzem9uZV9pZHg7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQga3N3YXBkX2ZhaWx1cmVzOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBpbnQga2NvbXBhY3RkX21heF9vcmRlcjsKMTQ0NzQ6ICBlbnVtIHpv bmVfdHlwZSBrY29tcGFjdGRfY2xhc3N6b25lX2lkeDsKMTQ0NzQ6ICB3YWl0X3F1ZXVlX2hlYWRf dCBrY29tcGFjdGRfd2FpdDsKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmtjb21wYWN0ZDsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQg bG9uZyB0b3RhbHJlc2VydmVfcGFnZXM7CjE0NDc0OiAjIDc2OCAiLi9pbmNsdWRlL2xpbnV4L21t em9uZS5oIgoxNDQ3NDogIHN0cnVjdCB6b25lX3BhZGRpbmcgX3BhZDFfOwoxNDQ3NDogIHNwaW5s b2NrX3QgbHJ1X2xvY2s7CjE0NDc0OiAjIDc4MCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgox NDQ3NDogIHN0cnVjdCBkZWZlcnJlZF9zcGxpdCBkZWZlcnJlZF9zcGxpdF9xdWV1ZTsKMTQ0NzQ6 ICMgNzkwICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiAgc3RydWN0IGxydXZlYyBf X2xydXZlYzsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CjE0NDc0OiAKMTQ0 NzQ6ICBzdHJ1Y3Qgem9uZV9wYWRkaW5nIF9wYWQyXzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgKnBlcl9jcHVfbm9kZXN0YXRzOwoxNDQ3NDogIGF0b21p Y19sb25nX3Qgdm1fc3RhdFtOUl9WTV9OT0RFX1NUQVRfSVRFTVNdOwoxNDQ3NDogfSBwZ19kYXRh X3Q7CjE0NDc0OiAjIDgxMyAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWdu ZWQgbG9uZyBwZ2RhdF9lbmRfcGZuKHBnX2RhdGFfdCAqcGdkYXQpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIHBnZGF0LT5ub2RlX3N0YXJ0X3BmbiArIHBnZGF0LT5ub2RlX3NwYW5uZWRfcGFnZXM7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcGdkYXRfaXNfZW1wdHkocGdfZGF0YV90ICpw Z2RhdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gIXBnZGF0LT5ub2RlX3N0YXJ0X3BmbiAmJiAh cGdkYXQtPm5vZGVfc3Bhbm5lZF9wYWdlczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMQoxNDQ3NDog IyA2ICIuL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIgMgoxNDQ3NDogCjE0NDc0OiAj IDEgIi4vaW5jbHVkZS9saW51eC9ub3RpZmllci5oIiAxCjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUv bGludXgvbm90aWZpZXIuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3NyY3UuaCIgMQox NDQ3NDogIyAyMiAiLi9pbmNsdWRlL2xpbnV4L3NyY3UuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRl L2xpbnV4L3JjdV9zZWdjYmxpc3QuaCIgMQoxNDQ3NDogIyAyMSAiLi9pbmNsdWRlL2xpbnV4L3Jj dV9zZWdjYmxpc3QuaCIKMTQ0NzQ6IHN0cnVjdCByY3VfY2JsaXN0IHsKMTQ0NzQ6ICBzdHJ1Y3Qg Y2FsbGJhY2tfaGVhZCAqaGVhZDsKMTQ0NzQ6ICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqKnRhaWw7 CjE0NDc0OiAgbG9uZyBsZW47CjE0NDc0OiB9OwoxNDQ3NDogIyA2NiAiLi9pbmNsdWRlL2xpbnV4 L3JjdV9zZWdjYmxpc3QuaCIKMTQ0NzQ6IHN0cnVjdCByY3Vfc2VnY2JsaXN0IHsKMTQ0NzQ6ICBz dHJ1Y3QgY2FsbGJhY2tfaGVhZCAqaGVhZDsKMTQ0NzQ6ICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAq KnRhaWxzWzRdOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZ3Bfc2VxWzRdOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIGxvbmcgbGVuOwoxNDQ3NDogCjE0NDc0OiAgdTggZW5hYmxlZDsK MTQ0NzQ6ICB1OCBvZmZsb2FkZWQ7CjE0NDc0OiB9OwoxNDQ3NDogIyAyMyAiLi9pbmNsdWRlL2xp bnV4L3NyY3UuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3JjdV9zdHJ1Y3Q7CjE0NDc0OiAj IDQxICIuL2luY2x1ZGUvbGludXgvc3JjdS5oIgoxNDQ3NDogaW50IGluaXRfc3JjdV9zdHJ1Y3Qo c3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zcmN1 dHJlZS5oIiAxCjE0NDc0OiAjIDE0ICIuL2luY2x1ZGUvbGludXgvc3JjdXRyZWUuaCIKMTQ0NzQ6 ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3JjdV9ub2RlX3RyZWUuaCIgMQoxNDQ3NDogIyAxNSAiLi9p bmNsdWRlL2xpbnV4L3NyY3V0cmVlLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg c3JjdV9ub2RlOwoxNDQ3NDogc3RydWN0IHNyY3Vfc3RydWN0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzcmN1X2RhdGEgewoxNDQ3NDogCjE0 NDc0OiAgdW5zaWduZWQgbG9uZyBzcmN1X2xvY2tfY291bnRbMl07CjE0NDc0OiAgdW5zaWduZWQg bG9uZyBzcmN1X3VubG9ja19jb3VudFsyXTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3Bpbmxv Y2tfdCBsb2NrIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDEgPDwgKDYpKSkpOwoxNDQ3NDog IHN0cnVjdCByY3Vfc2VnY2JsaXN0IHNyY3VfY2JsaXN0OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg c3JjdV9ncF9zZXFfbmVlZGVkOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc3JjdV9ncF9zZXFfbmVl ZGVkX2V4cDsKMTQ0NzQ6ICBib29sIHNyY3VfY2JsaXN0X2ludm9raW5nOwoxNDQ3NDogIHN0cnVj dCB0aW1lcl9saXN0IGRlbGF5X3dvcms7CjE0NDc0OiAgc3RydWN0IHdvcmtfc3RydWN0IHdvcms7 CjE0NDc0OiAgc3RydWN0IGNhbGxiYWNrX2hlYWQgc3JjdV9iYXJyaWVyX2hlYWQ7CjE0NDc0OiAg c3RydWN0IHNyY3Vfbm9kZSAqbXlub2RlOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZ3JwbWFzazsK MTQ0NzQ6IAoxNDQ3NDogIGludCBjcHU7CjE0NDc0OiAgc3RydWN0IHNyY3Vfc3RydWN0ICpzc3A7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg c3JjdV9ub2RlIHsKMTQ0NzQ6ICBzcGlubG9ja190IGxvY2s7CjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBzcmN1X2hhdmVfY2JzWzRdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IHNyY3VfZGF0YV9oYXZlX2Nic1s0XTsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc3Jj dV9ncF9zZXFfbmVlZGVkX2V4cDsKMTQ0NzQ6ICBzdHJ1Y3Qgc3JjdV9ub2RlICpzcmN1X3BhcmVu dDsKMTQ0NzQ6ICBpbnQgZ3JwbG87CjE0NDc0OiAgaW50IGdycGhpOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNyY3Vfc3RydWN0IHsKMTQ0 NzQ6ICBzdHJ1Y3Qgc3JjdV9ub2RlIG5vZGVbMV07CjE0NDc0OiAgc3RydWN0IHNyY3Vfbm9kZSAq bGV2ZWxbMSArIDFdOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IG11dGV4IHNyY3VfY2JfbXV0ZXg7 CjE0NDc0OiAgc3BpbmxvY2tfdCBsb2NrOwoxNDQ3NDogIHN0cnVjdCBtdXRleCBzcmN1X2dwX211 dGV4OwoxNDQ3NDogIHVuc2lnbmVkIGludCBzcmN1X2lkeDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IHNyY3VfZ3Bfc2VxOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc3JjdV9ncF9zZXFfbmVlZGVkOwox NDQ3NDogIHVuc2lnbmVkIGxvbmcgc3JjdV9ncF9zZXFfbmVlZGVkX2V4cDsKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIHNyY3VfbGFzdF9ncF9lbmQ7CjE0NDc0OiAgc3RydWN0IHNyY3VfZGF0YSAqc2Rh OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc3JjdV9iYXJyaWVyX3NlcTsKMTQ0NzQ6ICBzdHJ1Y3Qg bXV0ZXggc3JjdV9iYXJyaWVyX211dGV4OwoxNDQ3NDogIHN0cnVjdCBjb21wbGV0aW9uIHNyY3Vf YmFycmllcl9jb21wbGV0aW9uOwoxNDQ3NDogCjE0NDc0OiAgYXRvbWljX3Qgc3JjdV9iYXJyaWVy X2NwdV9jbnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkZWxheWVkX3dvcmsgd29y azsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAjIDEzNyAiLi9pbmNs dWRlL2xpbnV4L3NyY3V0cmVlLmgiCjE0NDc0OiB2b2lkIHN5bmNocm9uaXplX3NyY3VfZXhwZWRp dGVkKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTsKMTQ0NzQ6IHZvaWQgc3JjdV9iYXJyaWVyKHN0 cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTsKMTQ0NzQ6IHZvaWQgc3JjdV90b3J0dXJlX3N0YXRzX3By aW50KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBjaGFyICp0dCwgY2hhciAqdGYpOwoxNDQ3NDog IyA1MCAiLi9pbmNsdWRlL2xpbnV4L3NyY3UuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIGNhbGxfc3JjdShzdHJ1 Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgc3RydWN0IGNhbGxiYWNrX2hlYWQgKmhlYWQsCjE0NDc0OiAg IHZvaWQgKCpmdW5jKShzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqaGVhZCkpOwoxNDQ3NDogdm9pZCBj bGVhbnVwX3NyY3Vfc3RydWN0KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTsKMTQ0NzQ6IGludCBf X3NyY3VfcmVhZF9sb2NrKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKSA7CjE0NDc0OiB2b2lkIF9f c3JjdV9yZWFkX3VubG9jayhzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgaW50IGlkeCkgOwoxNDQ3 NDogdm9pZCBzeW5jaHJvbml6ZV9zcmN1KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTsKMTQ0NzQ6 ICMgOTEgIi4vaW5jbHVkZS9saW51eC9zcmN1LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc3JjdV9yZWFkX2xvY2tf aGVsZChjb25zdCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gMTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTUwICIuL2luY2x1ZGUvbGludXgvc3JjdS5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IHNyY3VfcmVhZF9sb2NrKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKQoxNDQ3NDogewox NDQ3NDogIGludCByZXR2YWw7CjE0NDc0OiAKMTQ0NzQ6ICByZXR2YWwgPSBfX3NyY3VfcmVhZF9s b2NrKHNzcCk7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICByZXR1cm4gcmV0dmFs OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IHNyY3VfcmVhZF9sb2NrX25vdHJhY2Uoc3RydWN0 IHNyY3Vfc3RydWN0ICpzc3ApCjE0NDc0OiB7CjE0NDc0OiAgaW50IHJldHZhbDsKMTQ0NzQ6IAox NDQ3NDogIHJldHZhbCA9IF9fc3JjdV9yZWFkX2xvY2soc3NwKTsKMTQ0NzQ6ICByZXR1cm4gcmV0 dmFsOwoxNDQ3NDogfQoxNDQ3NDogIyAxNzYgIi4vaW5jbHVkZS9saW51eC9zcmN1LmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHNyY3VfcmVhZF91bmxvY2soc3RydWN0IHNyY3Vfc3RydWN0ICpzc3AsIGludCBpZHgp CjE0NDc0OiAKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGlkeCAm IH4weDEpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsg ZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4i ICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIi ICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIg IiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2Vu dHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5v cmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvc3JjdS5o IiksICJpIiAoMTc5KSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJp IiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRp bGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9u ZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDE1KSk7IH0pOyB9IHdo aWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwoxNDQ3 NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgX19zcmN1X3JlYWRfdW5sb2NrKHNzcCwgaWR4 KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogc3JjdV9yZWFkX3VubG9ja19ub3RyYWNlKHN0 cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBpbnQgaWR4KQoxNDQ3NDogewoxNDQ3NDogIF9fc3JjdV9y ZWFkX3VubG9jayhzc3AsIGlkeCk7CjE0NDc0OiB9CjE0NDc0OiAjIDIwMCAiLi9pbmNsdWRlL2xp bnV4L3NyY3UuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc21wX21iX19hZnRlcl9zcmN1X3JlYWRfdW5sb2NrKHZv aWQpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51 eC9ub3RpZmllci5oIiAyCjE0NDc0OiAjIDQ5ICIuL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCIK MTQ0NzQ6IHN0cnVjdCBub3RpZmllcl9ibG9jazsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBpbnQg KCpub3RpZmllcl9mbl90KShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAoxNDQ3NDogICAgdW5z aWduZWQgbG9uZyBhY3Rpb24sIHZvaWQgKmRhdGEpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgbm90 aWZpZXJfYmxvY2sgewoxNDQ3NDogIG5vdGlmaWVyX2ZuX3Qgbm90aWZpZXJfY2FsbDsKMTQ0NzQ6 ICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5leHQ7CjE0NDc0OiAgaW50IHByaW9yaXR5OwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIHsKMTQ0NzQ6 ICBzcGlubG9ja190IGxvY2s7CjE0NDc0OiAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpoZWFkOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJsb2NraW5nX25vdGlmaWVyX2hlYWQgewox NDQ3NDogIHN0cnVjdCByd19zZW1hcGhvcmUgcndzZW07CjE0NDc0OiAgc3RydWN0IG5vdGlmaWVy X2Jsb2NrICpoZWFkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJhd19ub3RpZmll cl9oZWFkIHsKMTQ0NzQ6ICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKmhlYWQ7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3JjdV9ub3RpZmllcl9oZWFkIHsKMTQ0NzQ6ICBzdHJ1Y3Qg bXV0ZXggbXV0ZXg7CjE0NDc0OiAgc3RydWN0IHNyY3Vfc3RydWN0IHNyY3U7CjE0NDc0OiAgc3Ry dWN0IG5vdGlmaWVyX2Jsb2NrICpoZWFkOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgOTMgIi4vaW5jbHVk ZS9saW51eC9ub3RpZmllci5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgc3JjdV9pbml0X25vdGlmaWVy X2hlYWQoc3RydWN0IHNyY3Vfbm90aWZpZXJfaGVhZCAqbmgpOwoxNDQ3NDogIyAxNDQgIi4vaW5j bHVkZS9saW51eC9ub3RpZmllci5oIgoxNDQ3NDogZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJf Y2hhaW5fcmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwKMTQ0NzQ6ICAg c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CjE0NDc0OiBleHRlcm4gaW50IGJsb2NraW5nX25v dGlmaWVyX2NoYWluX3JlZ2lzdGVyKHN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFkICpuaCwK MTQ0NzQ6ICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CjE0NDc0OiBleHRlcm4gaW50IHJh d19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLAox NDQ3NDogICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKMTQ0NzQ6IGV4dGVybiBpbnQgc3Jj dV9ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihzdHJ1Y3Qgc3JjdV9ub3RpZmllcl9oZWFkICpuaCwK MTQ0NzQ6ICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3Rp Zmllcl9oZWFkICpuaCwKMTQ0NzQ6ICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CjE0NDc0 OiBleHRlcm4gaW50IGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGJs b2NraW5nX25vdGlmaWVyX2hlYWQgKm5oLAoxNDQ3NDogICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sg Km5iKTsKMTQ0NzQ6IGV4dGVybiBpbnQgcmF3X25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3Ry dWN0IHJhd19ub3RpZmllcl9oZWFkICpuaCwKMTQ0NzQ6ICAgc3RydWN0IG5vdGlmaWVyX2Jsb2Nr ICpuYik7CjE0NDc0OiBleHRlcm4gaW50IHNyY3Vfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcihz dHJ1Y3Qgc3JjdV9ub3RpZmllcl9oZWFkICpuaCwKMTQ0NzQ6ICAgc3RydWN0IG5vdGlmaWVyX2Js b2NrICpuYik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgYXRvbWljX25vdGlmaWVyX2NhbGxf Y2hhaW4oc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwKMTQ0NzQ6ICAgdW5zaWduZWQg bG9uZyB2YWwsIHZvaWQgKnYpOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0b21pY19ub3RpZmllcl9j YWxsX2NoYWluKHN0cnVjdCBhdG9taWNfbm90aWZpZXJfaGVhZCAqbmgsCjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyB2YWwsIHZvaWQgKnYsIGludCBucl90b19jYWxsLCBpbnQgKm5yX2NhbGxzKTsKMTQ0 NzQ6IGV4dGVybiBpbnQgYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbihzdHJ1Y3QgYmxvY2tp bmdfbm90aWZpZXJfaGVhZCAqbmgsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICp2 KTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19ibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKHN0cnVj dCBibG9ja2luZ19ub3RpZmllcl9oZWFkICpuaCwKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHZhbCwg dm9pZCAqdiwgaW50IG5yX3RvX2NhbGwsIGludCAqbnJfY2FsbHMpOwoxNDQ3NDogZXh0ZXJuIGlu dCByYXdfbm90aWZpZXJfY2FsbF9jaGFpbihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLAox NDQ3NDogICB1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqdik7CjE0NDc0OiBleHRlcm4gaW50IF9f cmF3X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IHJhd19ub3RpZmllcl9oZWFkICpuaCwKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqdiwgaW50IG5yX3RvX2NhbGwsIGludCAqbnJf Y2FsbHMpOwoxNDQ3NDogZXh0ZXJuIGludCBzcmN1X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0 IHNyY3Vfbm90aWZpZXJfaGVhZCAqbmgsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lk ICp2KTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19zcmN1X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0 IHNyY3Vfbm90aWZpZXJfaGVhZCAqbmgsCjE0NDc0OiAgdW5zaWduZWQgbG9uZyB2YWwsIHZvaWQg KnYsIGludCBucl90b19jYWxsLCBpbnQgKm5yX2NhbGxzKTsKMTQ0NzQ6ICMgMTkwICIuL2luY2x1 ZGUvbGludXgvbm90aWZpZXIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBub3RpZmllcl9mcm9tX2Vycm5vKGludCBl cnIpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGVycikKMTQ0NzQ6ICAgcmV0dXJuIDB4ODAwMCB8ICgw eDAwMDEgLSBlcnIpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIDB4MDAwMTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgbm90aWZpZXJfdG9fZXJybm8oaW50IHJldCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXQgJj0gfjB4ODAwMDsKMTQ0NzQ6ICByZXR1cm4gcmV0ID4gMHgwMDAxID8g MHgwMDAxIC0gcmV0IDogMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjM0ICIuL2luY2x1ZGUvbGludXgv bm90aWZpZXIuaCIKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgYmxvY2tpbmdfbm90aWZpZXJfaGVhZCBy ZWJvb3Rfbm90aWZpZXJfbGlzdDsKMTQ0NzQ6ICMgOCAiLi9pbmNsdWRlL2xpbnV4L21lbW9yeV9o b3RwbHVnLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGFnZTsKMTQ0NzQ6IHN0 cnVjdCB6b25lOwoxNDQ3NDogc3RydWN0IHBnbGlzdF9kYXRhOwoxNDQ3NDogc3RydWN0IG1lbV9z ZWN0aW9uOwoxNDQ3NDogc3RydWN0IG1lbW9yeV9ibG9jazsKMTQ0NzQ6IHN0cnVjdCByZXNvdXJj ZTsKMTQ0NzQ6IHN0cnVjdCB2bWVtX2FsdG1hcDsKMTQ0NzQ6ICMgNDAgIi4vaW5jbHVkZS9saW51 eC9tZW1vcnlfaG90cGx1Zy5oIgoxNDQ3NDogZW51bSB7CjE0NDc0OiAgTUVNT1JZX0hPVFBMVUdf TUlOX0JPT1RNRU1fVFlQRSA9IDEyLAoxNDQ3NDogIFNFQ1RJT05fSU5GTyA9IE1FTU9SWV9IT1RQ TFVHX01JTl9CT09UTUVNX1RZUEUsCjE0NDc0OiAgTUlYX1NFQ1RJT05fSU5GTywKMTQ0NzQ6ICBO T0RFX0lORk8sCjE0NDc0OiAgTUVNT1JZX0hPVFBMVUdfTUFYX0JPT1RNRU1fVFlQRSA9IE5PREVf SU5GTywKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgTU1P UF9PRkZMSU5FID0gLTEsCjE0NDc0OiAgTU1PUF9PTkxJTkVfS0VFUCwKMTQ0NzQ6ICBNTU9QX09O TElORV9LRVJORUwsCjE0NDc0OiAgTU1PUF9PTkxJTkVfTU9WQUJMRSwKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg bWhwX3Jlc3RyaWN0aW9ucyB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBmbGFnczsKMTQ0NzQ6ICBz dHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDczICIuL2luY2x1 ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIHpvbmVfc3Bhbl9zZXFi ZWdpbihzdHJ1Y3Qgem9uZSAqem9uZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcmVhZF9zZXFi ZWdpbigmem9uZS0+c3Bhbl9zZXFsb2NrKTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB6b25lX3NwYW5f c2VxcmV0cnkoc3RydWN0IHpvbmUgKnpvbmUsIHVuc2lnbmVkIGl2KQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiByZWFkX3NlcXJldHJ5KCZ6b25lLT5zcGFuX3NlcWxvY2ssIGl2KTsKMTQ0NzQ6IH0K MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgem9uZV9zcGFuX3dyaXRlbG9jayhzdHJ1Y3Qgem9uZSAqem9uZSkKMTQ0NzQ6 IHsKMTQ0NzQ6ICB3cml0ZV9zZXFsb2NrKCZ6b25lLT5zcGFuX3NlcWxvY2spOwoxNDQ3NDogfQox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCB6b25lX3NwYW5fd3JpdGV1bmxvY2soc3RydWN0IHpvbmUgKnpvbmUpCjE0NDc0 OiB7CjE0NDc0OiAgd3JpdGVfc2VxdW5sb2NrKCZ6b25lLT5zcGFuX3NlcWxvY2spOwoxNDQ3NDog fQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCB6b25lX3NlcWxvY2tfaW5pdChzdHJ1Y3Qgem9uZSAqem9uZSkKMTQ0NzQ6 IHsKMTQ0NzQ6ICBkbyB7IF9fc2VxY291bnRfaW5pdCgmKCZ6b25lLT5zcGFuX3NlcWxvY2spLT5z ZXFjb3VudCwgKCh2b2lkICopMCksICgodm9pZCAqKTApKTsgZG8geyBzcGlubG9ja19jaGVjaygm KCZ6b25lLT5zcGFuX3NlcWxvY2spLT5sb2NrKTsgZG8geyAqKCYoJigmem9uZS0+c3Bhbl9zZXFs b2NrKS0+bG9jayktPnJsb2NrKSA9IChyYXdfc3BpbmxvY2tfdCkgeyAucmF3X2xvY2sgPSB7IHsg LnZhbCA9IHsgKDApIH0gfSB9LCB9OyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUg KDApOwoxNDQ3NDogfQoxNDQ3NDogZXh0ZXJuIGludCB6b25lX2dyb3dfZnJlZV9saXN0cyhzdHJ1 Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgbG9uZyBuZXdfbnJfcGFnZXMpOwoxNDQ3NDogZXh0ZXJu IGludCB6b25lX2dyb3dfd2FpdHF1ZXVlcyhzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgbG9u ZyBucl9wYWdlcyk7CjE0NDc0OiBleHRlcm4gaW50IGFkZF9vbmVfaGlnaHBhZ2Uoc3RydWN0IHBh Z2UgKnBhZ2UsIGludCBwZm4sIGludCBiYWRfcHBybyk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBp bnQgb25saW5lX3BhZ2VzKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2Vz LAoxNDQ3NDogICAgaW50IG9ubGluZV90eXBlLCBpbnQgbmlkKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1 Y3Qgem9uZSAqdGVzdF9wYWdlc19pbl9hX3pvbmUodW5zaWduZWQgbG9uZyBzdGFydF9wZm4sCjE0 NDc0OiAgICAgICB1bnNpZ25lZCBsb25nIGVuZF9wZm4pOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVk IGxvbmcgX19vZmZsaW5lX2lzb2xhdGVkX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLAox NDQ3NDogICAgICAgdW5zaWduZWQgbG9uZyBlbmRfcGZuKTsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRl ZiB2b2lkICgqb25saW5lX3BhZ2VfY2FsbGJhY2tfdCkoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2ln bmVkIGludCBvcmRlcik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGdlbmVyaWNfb25saW5l X3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcik7CjE0NDc0OiBleHRl cm4gaW50IHNldF9vbmxpbmVfcGFnZV9jYWxsYmFjayhvbmxpbmVfcGFnZV9jYWxsYmFja190IGNh bGxiYWNrKTsKMTQ0NzQ6IGV4dGVybiBpbnQgcmVzdG9yZV9vbmxpbmVfcGFnZV9jYWxsYmFjayhv bmxpbmVfcGFnZV9jYWxsYmFja190IGNhbGxiYWNrKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGlu dCB0cnlfb25saW5lX25vZGUoaW50IG5pZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgYXJj aF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsCjE0NDc0OiAgICBzdHJ1 Y3QgbWhwX3Jlc3RyaWN0aW9ucyAqcmVzdHJpY3Rpb25zKTsKMTQ0NzQ6IGV4dGVybiB1NjQgbWF4 X21lbV9zaXplOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCBtZW1ocF9hdXRvX29ubGluZTsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wgbW92YWJsZV9ub2RlX2VuYWJsZWQ7CjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIG1vdmFibGVfbm9kZV9pc19lbmFibGVkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IG1vdmFibGVfbm9kZV9lbmFibGVkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9p ZCBhcmNoX3JlbW92ZV9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwKMTQ0NzQ6 ICAgICAgICAgICBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCk7CjE0NDc0OiBleHRlcm4gdm9p ZCBfX3JlbW92ZV9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBu cl9wYWdlcywKMTQ0NzQ6ICAgICAgIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwKTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fYWRkX3BhZ2VzKGludCBuaWQsIHVuc2lnbmVk IGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAoxNDQ3NDogICAgICAgICAg c3RydWN0IG1ocF9yZXN0cmljdGlvbnMgKnJlc3RyaWN0aW9ucyk7CjE0NDc0OiAjIDE0MCAiLi9p bmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgiCjE0NDc0OiBpbnQgYWRkX3BhZ2VzKGludCBu aWQsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAoxNDQ3 NDogICAgICAgIHN0cnVjdCBtaHBfcmVzdHJpY3Rpb25zICpyZXN0cmljdGlvbnMpOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBtZW1vcnlfYWRkX3Bo eXNhZGRyX3RvX25pZCh1NjQgc3RhcnQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0 OiB9CjE0NDc0OiAjIDE5OSAiLi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBwZ19kYXRhX3QgKmdlbmVyaWNfYWxsb2Nfbm9kZWRhdGEoaW50IG5pZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwg MHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5s b25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9u ZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAi XHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFn c1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xp bnV4L21lbW9yeV9ob3RwbHVnLmgiKSwgImkiICgyMDEpLCAiaSIgKDApLCAiaSIgKHNpemVvZihz dHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAoeyBhc20gdm9sYXRpbGUoIiVj MDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hhYmxlXG5cdCIgIi5sb25nICVj MGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMTYpKTsgfSk7IGFzbSB2b2xh dGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAo MCk7CjE0NDc0OiAgcmV0dXJuICgodm9pZCAqKTApOwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBnZW5l cmljX2ZyZWVfbm9kZWRhdGEocGdfZGF0YV90ICpwZ2RhdCkKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgYXJjaF9yZWZyZXNoX25vZGVkYXRhKGludCBuaWQsIHBnX2RhdGFfdCAqcGdkYXQp CjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBf X2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHJlZ2lzdGVyX3BhZ2VfYm9vdG1lbV9pbmZvX25vZGUo c3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgcHV0X3BhZ2VfYm9vdG1lbShzdHJ1Y3QgcGFn ZSAqcGFnZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBnZXRfcGFnZV9ib290bWVtKHVuc2lnbmVkIGxv bmcgaW5nbywgc3RydWN0IHBhZ2UgKnBhZ2UsCjE0NDc0OiAgICAgICAgIHVuc2lnbmVkIGxvbmcg dHlwZSk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZ2V0X29ubGluZV9tZW1zKHZvaWQpOwoxNDQ3NDog dm9pZCBwdXRfb25saW5lX21lbXModm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgbWVtX2hvdHBs dWdfYmVnaW4odm9pZCk7CjE0NDc0OiB2b2lkIG1lbV9ob3RwbHVnX2RvbmUodm9pZCk7CjE0NDc0 OiAjIDI4MyAiLi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKQoxNDQ3NDog dm9pZCBwZ2RhdF9yZXNpemVfbG9jayhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCB1bnNpZ25l ZCBsb25nICpmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IGRvIHsgKHsgdW5zaWduZWQgbG9u ZyBfX2R1bW15OyB0eXBlb2YoKmZsYWdzKSBfX2R1bW15MjsgKHZvaWQpKCZfX2R1bW15ID09ICZf X2R1bW15Mik7IDE7IH0pOyAqZmxhZ3MgPSBfcmF3X3NwaW5fbG9ja19pcnFzYXZlKHNwaW5sb2Nr X2NoZWNrKCZwZ2RhdC0+bm9kZV9zaXplX2xvY2spKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDAp OwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkKMTQ0NzQ6IHZvaWQgcGdkYXRfcmVzaXplX3VubG9jayhzdHJ1Y3Qg cGdsaXN0X2RhdGEgKnBnZGF0LCB1bnNpZ25lZCBsb25nICpmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6 ICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwZ2RhdC0+bm9kZV9zaXplX2xvY2ssICpmbGFncyk7 CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKQoxNDQ3NDogdm9pZCBwZ2RhdF9yZXNpemVfaW5pdChzdHJ1Y3QgcGds aXN0X2RhdGEgKnBnZGF0KQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgc3BpbmxvY2tfY2hlY2soJnBn ZGF0LT5ub2RlX3NpemVfbG9jayk7IGRvIHsgKigmKCZwZ2RhdC0+bm9kZV9zaXplX2xvY2spLT5y bG9jaykgPSAocmF3X3NwaW5sb2NrX3QpIHsgLnJhd19sb2NrID0geyB7IC52YWwgPSB7ICgwKSB9 IH0gfSwgfTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogfQoxNDQ3NDogIyAzMDkg Ii4vaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oIgoxNDQ3NDogZXh0ZXJuIGJvb2wgaXNf bWVtX3NlY3Rpb25fcmVtb3ZhYmxlKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5y X3BhZ2VzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHRyeV9vZmZsaW5lX25vZGUoaW50IG5pZCk7CjE0 NDc0OiBleHRlcm4gaW50IG9mZmxpbmVfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVu c2lnbmVkIGxvbmcgbnJfcGFnZXMpOwoxNDQ3NDogZXh0ZXJuIGludCByZW1vdmVfbWVtb3J5KGlu dCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19yZW1vdmVf bWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUpOwoxNDQ3NDogIyAzMzcgIi4vaW5j bHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0X3pvbmVf Y29udGlndW91cyhzdHJ1Y3Qgem9uZSAqem9uZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBjbGVhcl96 b25lX2NvbnRpZ3VvdXMoc3RydWN0IHpvbmUgKnpvbmUpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g dm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLnJlZi50ZXh0IikpKSBfX2F0dHJpYnV0 ZV9fKChfX25vaW5saW5lX18pKSBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoaW50IG5pZCk7 CjE0NDc0OiBleHRlcm4gaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBz aXplKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2 NCBzaXplKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBz dHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIG1vdmVfcGZuX3Jh bmdlX3RvX3pvbmUoc3RydWN0IHpvbmUgKnpvbmUsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLAox NDQ3NDogICB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1h cCk7CjE0NDc0OiBleHRlcm4gdm9pZCByZW1vdmVfcGZuX3JhbmdlX2Zyb21fem9uZShzdHJ1Y3Qg em9uZSAqem9uZSwKMTQ0NzQ6ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sCjE0 NDc0OiAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpOwoxNDQ3NDogZXh0ZXJuIGJv b2wgaXNfbWVtYmxvY2tfb2ZmbGluZWQoc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgc3BhcnNlX2FkZF9zZWN0aW9uKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgcGZu LAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFs dG1hcCk7CjE0NDc0OiBleHRlcm4gdm9pZCBzcGFyc2VfcmVtb3ZlX3NlY3Rpb24oc3RydWN0IG1l bV9zZWN0aW9uICptcywKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcg bnJfcGFnZXMsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgbWFwX29mZnNldCwgc3RydWN0IHZtZW1f YWx0bWFwICphbHRtYXApOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBwYWdlICpzcGFyc2VfZGVjb2Rl X21lbV9tYXAodW5zaWduZWQgbG9uZyBjb2RlZF9tZW1fbWFwLAoxNDQ3NDogICAgICAgIHVuc2ln bmVkIGxvbmcgcG51bSk7CjE0NDc0OiBleHRlcm4gYm9vbCBhbGxvd19vbmxpbmVfcGZuX3Jhbmdl KGludCBuaWQsIHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAoxNDQ3 NDogICBpbnQgb25saW5lX3R5cGUpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB6b25lICp6b25lX2Zv cl9wZm5fcmFuZ2UoaW50IG9ubGluZV90eXBlLCBpbnQgbmlkLCB1bnNpZ25lZCBzdGFydF9wZm4s CjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpOwoxNDQ3NDogIyA4MjQgIi4vaW5jbHVk ZS9saW51eC9tbXpvbmUuaCIgMgoxNDQ3NDogCjE0NDc0OiB2b2lkIGJ1aWxkX2FsbF96b25lbGlz dHMocGdfZGF0YV90ICpwZ2RhdCk7CjE0NDc0OiB2b2lkIHdha2V1cF9rc3dhcGQoc3RydWN0IHpv bmUgKnpvbmUsIGdmcF90IGdmcF9tYXNrLCBpbnQgb3JkZXIsCjE0NDc0OiAgICAgIGVudW0gem9u ZV90eXBlIGNsYXNzem9uZV9pZHgpOwoxNDQ3NDogYm9vbCBfX3pvbmVfd2F0ZXJtYXJrX29rKHN0 cnVjdCB6b25lICp6LCB1bnNpZ25lZCBpbnQgb3JkZXIsIHVuc2lnbmVkIGxvbmcgbWFyaywKMTQ0 NzQ6ICAgICBpbnQgY2xhc3N6b25lX2lkeCwgdW5zaWduZWQgaW50IGFsbG9jX2ZsYWdzLAoxNDQ3 NDogICAgIGxvbmcgZnJlZV9wYWdlcyk7CjE0NDc0OiBib29sIHpvbmVfd2F0ZXJtYXJrX29rKHN0 cnVjdCB6b25lICp6LCB1bnNpZ25lZCBpbnQgb3JkZXIsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcg bWFyaywgaW50IGNsYXNzem9uZV9pZHgsCjE0NDc0OiAgIHVuc2lnbmVkIGludCBhbGxvY19mbGFn cyk7CjE0NDc0OiBib29sIHpvbmVfd2F0ZXJtYXJrX29rX3NhZmUoc3RydWN0IHpvbmUgKnosIHVu c2lnbmVkIGludCBvcmRlciwKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyBtYXJrLCBpbnQgY2xhc3N6 b25lX2lkeCk7CjE0NDc0OiBlbnVtIG1lbW1hcF9jb250ZXh0IHsKMTQ0NzQ6ICBNRU1NQVBfRUFS TFksCjE0NDc0OiAgTUVNTUFQX0hPVFBMVUcsCjE0NDc0OiB9OwoxNDQ3NDogZXh0ZXJuIHZvaWQg aW5pdF9jdXJyZW50bHlfZW1wdHlfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgbG9u ZyBzdGFydF9wZm4sCjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCBscnV2ZWNfaW5pdChzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpOwox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBzdHJ1Y3QgcGdsaXN0X2RhdGEgKmxydXZlY19wZ2RhdChzdHJ1Y3QgbHJ1 dmVjICpscnV2ZWMpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gbHJ1dmVjLT5wZ2Rh dDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHVuc2lnbmVkIGxvbmcgbHJ1dmVjX2xydV9zaXplKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgZW51 bSBscnVfbGlzdCBscnUsIGludCB6b25lX2lkeCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9p ZCBtZW1vcnlfcHJlc2VudChpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBs b25nIGVuZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog dm9pZCBtZW1ibG9ja3NfcHJlc2VudCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGxvY2FsX21lbW9yeV9ub2Rl KGludCBub2RlX2lkKSB7IHJldHVybiBub2RlX2lkOyB9OwoxNDQ3NDogIyA4ODUgIi4vaW5jbHVk ZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgbWFuYWdlZF96b25lKHN0cnVjdCB6b25lICp6 b25lKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB6b25lX21hbmFnZWRfcGFnZXMoem9uZSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBwb3B1bGF0ZWRfem9uZShzdHJ1Y3Qg em9uZSAqem9uZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gem9uZS0+cHJlc2VudF9wYWdlczsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgOTA3ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgem9uZV90b19uaWQoc3RydWN0IHpvbmUgKnpvbmUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgem9uZV9zZXRfbmlkKHN0cnVjdCB6b25l ICp6b25lLCBpbnQgbmlkKSB7fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbW92 YWJsZV96b25lOwoxNDQ3NDogIyA5MjggIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBpc19oaWdobWVtX2lkeChlbnVtIHpvbmVfdHlwZSBpZHgpCjE0NDc0OiB7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IAoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgaXNfaGlnaG1lbShzdHJ1Y3Qgem9uZSAqem9uZSkKMTQ0NzQ6IHsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjdGxfdGFibGU7CjE0NDc0OiBpbnQgbWluX2ZyZWVf a2J5dGVzX3N5c2N0bF9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAoxNDQ3NDogICAg ICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBpbnQgd2F0ZXJtYXJrX2Jvb3N0 X2ZhY3Rvcl9zeXNjdGxfaGFuZGxlcihzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwKMTQ0NzQ6ICAg ICAgdm9pZCAqLCBzaXplX3QgKiwgbG9mZl90ICopOwoxNDQ3NDogaW50IHdhdGVybWFya19zY2Fs ZV9mYWN0b3Jfc3lzY3RsX2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0OiAg ICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgc3lzY3Rs X2xvd21lbV9yZXNlcnZlX3JhdGlvWzRdOwoxNDQ3NDogaW50IGxvd21lbV9yZXNlcnZlX3JhdGlv X3N5c2N0bF9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAoxNDQ3NDogICAgICB2b2lk ICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBpbnQgcGVyY3B1X3BhZ2VsaXN0X2ZyYWN0 aW9uX3N5c2N0bF9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAoxNDQ3NDogICAgICB2 b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBpbnQgc3lzY3RsX21pbl91bm1hcHBl ZF9yYXRpb19zeXNjdGxfaGFuZGxlcihzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwKMTQ0NzQ6ICAg IHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKMTQ0NzQ6IGludCBzeXNjdGxfbWluX3NsYWJf cmF0aW9fc3lzY3RsX2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0OiAgICB2 b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbnVt YV96b25lbGlzdF9vcmRlcl9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAoxNDQ3NDog ICAgdm9pZCAqLCBzaXplX3QgKiwgbG9mZl90ICopOwoxNDQ3NDogZXh0ZXJuIGNoYXIgbnVtYV96 b25lbGlzdF9vcmRlcltdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gc3RydWN0IHBnbGlzdF9kYXRhIGNvbnRpZ19wYWdlX2RhdGE7CjE0NDc0OiAjIDk4OCAi Li9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBwZ2xpc3RfZGF0 YSAqZmlyc3Rfb25saW5lX3BnZGF0KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBwZ2xpc3Rf ZGF0YSAqbmV4dF9vbmxpbmVfcGdkYXQoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCk7CjE0NDc0 OiBleHRlcm4gc3RydWN0IHpvbmUgKm5leHRfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSk7CjE0NDc0 OiAjIDEwMjAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB6b25lICp6 b25lbGlzdF96b25lKHN0cnVjdCB6b25lcmVmICp6b25lcmVmKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiB6b25lcmVmLT56b25lOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgem9uZWxpc3Rf em9uZV9pZHgoc3RydWN0IHpvbmVyZWYgKnpvbmVyZWYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IHpvbmVyZWYtPnpvbmVfaWR4OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgem9uZWxpc3Rf bm9kZV9pZHgoc3RydWN0IHpvbmVyZWYgKnpvbmVyZWYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IHpvbmVfdG9fbmlkKHpvbmVyZWYtPnpvbmUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3Qgem9uZXJlZiAqX19uZXh0X3pvbmVzX3pvbmVsaXN0KHN0cnVjdCB6b25lcmVmICp6LAoxNDQ3 NDogICAgICBlbnVtIHpvbmVfdHlwZSBoaWdoZXN0X3pvbmVpZHgsCjE0NDc0OiAgICAgIG5vZGVt YXNrX3QgKm5vZGVzKTsKMTQ0NzQ6ICMgMTA1MSAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdHJ1Y3Qgem9uZXJlZiAq bmV4dF96b25lc196b25lbGlzdChzdHJ1Y3Qgem9uZXJlZiAqeiwKMTQ0NzQ6ICAgICAgZW51bSB6 b25lX3R5cGUgaGlnaGVzdF96b25laWR4LAoxNDQ3NDogICAgICBub2RlbWFza190ICpub2RlcykK MTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoX19idWlsdGluX2V4cGVjdCghISghbm9kZXMgJiYgem9uZWxp c3Rfem9uZV9pZHgoeikgPD0gaGlnaGVzdF96b25laWR4KSwgMSkpCjE0NDc0OiAgIHJldHVybiB6 OwoxNDQ3NDogIHJldHVybiBfX25leHRfem9uZXNfem9uZWxpc3QoeiwgaGlnaGVzdF96b25laWR4 LCBub2Rlcyk7CjE0NDc0OiB9CjE0NDc0OiAjIDEwNzYgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHN0cnVjdCB6b25lcmVmICpmaXJzdF96b25lc196b25lbGlzdChzdHJ1Y3Qgem9u ZWxpc3QgKnpvbmVsaXN0LAoxNDQ3NDogICAgICBlbnVtIHpvbmVfdHlwZSBoaWdoZXN0X3pvbmVp ZHgsCjE0NDc0OiAgICAgIG5vZGVtYXNrX3QgKm5vZGVzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biBuZXh0X3pvbmVzX3pvbmVsaXN0KHpvbmVsaXN0LT5fem9uZXJlZnMsCjE0NDc0OiAgICAgICAg aGlnaGVzdF96b25laWR4LCBub2Rlcyk7CjE0NDc0OiB9CjE0NDc0OiAjIDExNjAgIi4vaW5jbHVk ZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgcGZuX3RvX3NlY3Rpb25fbnIo dW5zaWduZWQgbG9uZyBwZm4pCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHBmbiA+PiAoMjcgLSAx Mik7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIHNlY3Rpb25fbnJfdG9fcGZuKHVuc2ln bmVkIGxvbmcgc2VjKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBzZWMgPDwgKDI3IC0gMTIpOwox NDQ3NDogfQoxNDQ3NDogIyAxMTg3ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiBz dHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UgewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc3Vic2VjdGlv bl9tYXBbKCgoKDFVTCA8PCAoMjcgLSAyMSkpKSArICgoc2l6ZW9mKGxvbmcpICogOCkpIC0gMSkg LyAoKHNpemVvZihsb25nKSAqIDgpKSldOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBw YWdlYmxvY2tfZmxhZ3NbMF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB2b2lkIHN1YnNlY3Rp b25fbWFwX2luaXQodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpOwox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGFnZTsKMTQ0NzQ6IHN0cnVjdCBwYWdlX2V4dDsKMTQ0NzQ6 IHN0cnVjdCBtZW1fc2VjdGlvbiB7CjE0NDc0OiAjIDEyMTAgIi4vaW5jbHVkZS9saW51eC9tbXpv bmUuaCIKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNlY3Rpb25fbWVtX21hcDsKMTQ0NzQ6IAoxNDQ3 NDogIHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSAqdXNhZ2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBwYWdlX2V4dCAqcGFnZV9leHQ7CjE0 NDc0OiAgdW5zaWduZWQgbG9uZyBwYWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTIzOCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5o IgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBtZW1fc2VjdGlvbiAqKm1lbV9zZWN0aW9uOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nICpzZWN0aW9uX3Rv X3VzZW1hcChzdHJ1Y3QgbWVtX3NlY3Rpb24gKm1zKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBt cy0+dXNhZ2UtPnBhZ2VibG9ja19mbGFnczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IG1lbV9zZWN0aW9uICpfX25yX3RvX3NlY3Rpb24odW5zaWduZWQgbG9uZyBucikKMTQ0NzQ6IHsK MTQ0NzQ6IAoxNDQ3NDogIGlmICghbWVtX3NlY3Rpb24pCjE0NDc0OiAgIHJldHVybiAoKHZvaWQg KikwKTsKMTQ0NzQ6IAoxNDQ3NDogIGlmICghbWVtX3NlY3Rpb25bKChucikgLyAoKCgxVUwpIDw8 IDEyKSAvIHNpemVvZiAoc3RydWN0IG1lbV9zZWN0aW9uKSkpXSkKMTQ0NzQ6ICAgcmV0dXJuICgo dm9pZCAqKTApOwoxNDQ3NDogIHJldHVybiAmbWVtX3NlY3Rpb25bKChucikgLyAoKCgxVUwpIDw8 IDEyKSAvIHNpemVvZiAoc3RydWN0IG1lbV9zZWN0aW9uKSkpXVtuciAmICgoKCgxVUwpIDw8IDEy KSAvIHNpemVvZiAoc3RydWN0IG1lbV9zZWN0aW9uKSkgLSAxKV07CjE0NDc0OiB9CjE0NDc0OiBl eHRlcm4gdW5zaWduZWQgbG9uZyBfX3NlY3Rpb25fbnIoc3RydWN0IG1lbV9zZWN0aW9uICptcyk7 CjE0NDc0OiBleHRlcm4gc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZCk7CjE0NDc0 OiAjIDEyODIgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBwYWdlICpf X3NlY3Rpb25fbWVtX21hcF9hZGRyKHN0cnVjdCBtZW1fc2VjdGlvbiAqc2VjdGlvbikKMTQ0NzQ6 IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIG1hcCA9IHNlY3Rpb24tPnNlY3Rpb25fbWVtX21hcDsK MTQ0NzQ6ICBtYXAgJj0gKH4oKDFVTDw8NCktMSkpOwoxNDQ3NDogIHJldHVybiAoc3RydWN0IHBh Z2UgKiltYXA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwcmVzZW50X3NlY3Rpb24oc3Ry dWN0IG1lbV9zZWN0aW9uICpzZWN0aW9uKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoc2VjdGlv biAmJiAoc2VjdGlvbi0+c2VjdGlvbl9tZW1fbWFwICYgKDFVTDw8MCkpKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IHByZXNlbnRfc2VjdGlvbl9ucih1bnNpZ25lZCBsb25nIG5yKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBwcmVzZW50X3NlY3Rpb24oX19ucl90b19zZWN0aW9uKG5yKSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB2YWxpZF9zZWN0aW9uKHN0cnVjdCBtZW1fc2Vj dGlvbiAqc2VjdGlvbikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHNlY3Rpb24gJiYgKHNlY3Rp b24tPnNlY3Rpb25fbWVtX21hcCAmICgxVUw8PDEpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBlYXJseV9zZWN0aW9uKHN0cnVjdCBtZW1fc2VjdGlvbiAqc2VjdGlvbikKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gKHNlY3Rpb24gJiYgKHNlY3Rpb24tPnNlY3Rpb25fbWVtX21hcCAmICgx VUw8PDMpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB2YWxpZF9zZWN0aW9uX25yKHVu c2lnbmVkIGxvbmcgbnIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHZhbGlkX3NlY3Rpb24oX19u cl90b19zZWN0aW9uKG5yKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBvbmxpbmVfc2Vj dGlvbihzdHJ1Y3QgbWVtX3NlY3Rpb24gKnNlY3Rpb24pCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IChzZWN0aW9uICYmIChzZWN0aW9uLT5zZWN0aW9uX21lbV9tYXAgJiAoMVVMPDwyKSkpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgb25saW5lX3NlY3Rpb25fbnIodW5zaWduZWQgbG9uZyBu cikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gb25saW5lX3NlY3Rpb24oX19ucl90b19zZWN0aW9u KG5yKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBvbmxpbmVfbWVtX3Nl Y3Rpb25zKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIGVuZF9wZm4pOwox NDQ3NDogCjE0NDc0OiB2b2lkIG9mZmxpbmVfbWVtX3NlY3Rpb25zKHVuc2lnbmVkIGxvbmcgc3Rh cnRfcGZuLCB1bnNpZ25lZCBsb25nIGVuZF9wZm4pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgc3RydWN0IG1lbV9zZWN0aW9uICpfX3Bmbl90b19zZWN0aW9uKHVuc2lnbmVkIGxvbmcg cGZuKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX25yX3RvX3NlY3Rpb24ocGZuX3RvX3NlY3Rp b25fbnIocGZuKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25n IF9faGlnaGVzdF9wcmVzZW50X3NlY3Rpb25fbnI7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBzdWJzZWN0 aW9uX21hcF9pbmRleCh1bnNpZ25lZCBsb25nIHBmbikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g KHBmbiAmIH4oKH4oKDFVTCA8PCAoMjcgLSAxMikpLTEpKSkpIC8gKDFVTCA8PCAoMjEgLSAxMikp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwZm5fc2VjdGlvbl92YWxpZChz dHJ1Y3QgbWVtX3NlY3Rpb24gKm1zLCB1bnNpZ25lZCBsb25nIHBmbikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBpbnQgaWR4ID0gc3Vic2VjdGlvbl9tYXBfaW5kZXgocGZuKTsKMTQ0NzQ6IAoxNDQ3NDogIHJl dHVybiB0ZXN0X2JpdChpZHgsIG1zLT51c2FnZS0+c3Vic2VjdGlvbl9tYXApOwoxNDQ3NDogfQox NDQ3NDogIyAxMzU4ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGZuX3Zh bGlkKHVuc2lnbmVkIGxvbmcgcGZuKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBtZW1fc2VjdGlv biAqbXM7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAocGZuX3RvX3NlY3Rpb25fbnIocGZuKSA+PSAoMVVM IDw8ICgoMCA/IDUyIDogNDYpIC0gMjcpKSkKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAgbXMg PSBfX25yX3RvX3NlY3Rpb24ocGZuX3RvX3NlY3Rpb25fbnIocGZuKSk7CjE0NDc0OiAgaWYgKCF2 YWxpZF9zZWN0aW9uKG1zKSkKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZWFybHlfc2VjdGlvbihtcykgfHwgcGZuX3NlY3Rp b25fdmFsaWQobXMsIHBmbik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHBm bl9wcmVzZW50KHVuc2lnbmVkIGxvbmcgcGZuKQoxNDQ3NDogewoxNDQ3NDogIGlmIChwZm5fdG9f c2VjdGlvbl9ucihwZm4pID49ICgxVUwgPDwgKCgwID8gNTIgOiA0NikgLSAyNykpKQoxNDQ3NDog ICByZXR1cm4gMDsKMTQ0NzQ6ICByZXR1cm4gcHJlc2VudF9zZWN0aW9uKF9fbnJfdG9fc2VjdGlv bihwZm5fdG9fc2VjdGlvbl9ucihwZm4pKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGxvbmcgbmV4dF9wcmVzZW50X3NlY3Rpb25fbnIodW5zaWduZWQgbG9uZyBzZWN0aW9uX25y KQoxNDQ3NDogewoxNDQ3NDogIHdoaWxlICgrK3NlY3Rpb25fbnIgPD0gX19oaWdoZXN0X3ByZXNl bnRfc2VjdGlvbl9ucikgewoxNDQ3NDogICBpZiAocHJlc2VudF9zZWN0aW9uX25yKHNlY3Rpb25f bnIpKQoxNDQ3NDogICAgcmV0dXJuIHNlY3Rpb25fbnI7CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0 OiAgcmV0dXJuIC0xOwoxNDQ3NDogfQoxNDQ3NDogIyAxNDA4ICIuL2luY2x1ZGUvbGludXgvbW16 b25lLmgiCjE0NDc0OiB2b2lkIHNwYXJzZV9pbml0KHZvaWQpOwoxNDQ3NDogIyAxNDIxICIuL2lu Y2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiBzdHJ1Y3QgbW1pbml0X3Bmbm5pZF9jYWNoZSB7 CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsYXN0X3N0YXJ0OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg bGFzdF9lbmQ7CjE0NDc0OiAgaW50IGxhc3RfbmlkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIG1lbW9yeV9wcmVzZW50KGludCBu aWQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKMTQ0NzQ6ICMgMTQ2 OSAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBtZW1tYXBfdmFsaWRfd2l0 aGluKHVuc2lnbmVkIGxvbmcgcGZuLAoxNDQ3NDogICAgICBzdHJ1Y3QgcGFnZSAqcGFnZSwgc3Ry dWN0IHpvbmUgKnpvbmUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0 NDc0OiAjIDcgIi4vaW5jbHVkZS9saW51eC9nZnAuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3RvcG9sb2d5LmgiIDEKMTQ0NzQ6ICMgMzAgIi4vaW5jbHVk ZS9saW51eC90b3BvbG9neS5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvYXJjaF90b3Bv bG9neS5oIiAxCjE0NDc0OiAjIDkgIi4vaW5jbHVkZS9saW51eC9hcmNoX3RvcG9sb2d5LmgiCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgv c21wLmgiIDEKMTQ0NzQ6ICMgMTUgIi4vaW5jbHVkZS9saW51eC9zbXAuaCIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L2xsaXN0LmgiIDEKMTQ0NzQ6ICMgNTQgIi4vaW5jbHVkZS9saW51eC9s bGlzdC5oIgoxNDQ3NDogc3RydWN0IGxsaXN0X2hlYWQgewoxNDQ3NDogIHN0cnVjdCBsbGlzdF9u b2RlICpmaXJzdDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBsbGlzdF9ub2RlIHsK MTQ0NzQ6ICBzdHJ1Y3QgbGxpc3Rfbm9kZSAqbmV4dDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDY5ICIu L2luY2x1ZGUvbGludXgvbGxpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW5pdF9sbGlzdF9oZWFkKHN0cnVj dCBsbGlzdF9oZWFkICpsaXN0KQoxNDQ3NDogewoxNDQ3NDogIGxpc3QtPmZpcnN0ID0gKCh2b2lk ICopMCk7CjE0NDc0OiB9CjE0NDc0OiAjIDE4NyAiLi9pbmNsdWRlL2xpbnV4L2xsaXN0LmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIGxsaXN0X2VtcHR5KGNvbnN0IHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiAoeyB1bmlvbiB7IHR5cGVvZihoZWFkLT5maXJzdCkgX192YWw7 IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihoZWFkLT5maXJz dCksIF9fdS5fX2MsIHNpemVvZihoZWFkLT5maXJzdCkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVf bm9jaGVjaygmKGhlYWQtPmZpcnN0KSwgX191Ll9fYywgc2l6ZW9mKGhlYWQtPmZpcnN0KSk7IGRv IHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSkgPT0gKCh2b2lkICopMCk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHN0cnVjdCBsbGlzdF9ub2RlICpsbGlzdF9uZXh0KHN0cnVjdCBsbGlzdF9u b2RlICpub2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBub2RlLT5uZXh0OwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCBsbGlzdF9hZGRfYmF0Y2goc3RydWN0IGxsaXN0X25v ZGUgKm5ld19maXJzdCwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3QgbGxpc3Rfbm9kZSAqbmV3X2xhc3Qs CjE0NDc0OiAgICAgICAgc3RydWN0IGxsaXN0X2hlYWQgKmhlYWQpOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGxsaXN0 X2FkZChzdHJ1Y3QgbGxpc3Rfbm9kZSAqbmV3LCBzdHJ1Y3QgbGxpc3RfaGVhZCAqaGVhZCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbGxpc3RfYWRkX2JhdGNoKG5ldywgbmV3LCBoZWFkKTsKMTQ0 NzQ6IH0KMTQ0NzQ6ICMgMjIwICIuL2luY2x1ZGUvbGludXgvbGxpc3QuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVj dCBsbGlzdF9ub2RlICpsbGlzdF9kZWxfYWxsKHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiAoeyB0eXBlb2YoJmhlYWQtPmZpcnN0KSBfX2FpX3B0ciA9ICgm aGVhZC0+Zmlyc3QpOyBrYXNhbl9jaGVja193cml0ZShfX2FpX3B0ciwgc2l6ZW9mKCpfX2FpX3B0 cikpOyAoeyBfX3R5cGVvZl9fICgqKChfX2FpX3B0cikpKSBfX3JldCA9ICgoKCh2b2lkICopMCkp KTsgc3dpdGNoIChzaXplb2YoKigoX19haV9wdHIpKSkpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUg KCIiICJ4Y2hnIiAiYiAlYjAsICUxXG4iIDogIitxIiAoX19yZXQpLCAiK20iICgqKChfX2FpX3B0 cikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCIi ICJ4Y2hnIiAidyAldzAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKChfX2FpX3B0cikp KSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCIiICJ4 Y2hnIiAibCAlMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKF9fYWlfcHRyKSkpIDog OiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIiIgInhjaGci ICJxICVxMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKF9fYWlfcHRyKSkpIDogOiAi bWVtb3J5IiwgImNjIik7IGJyZWFrOyBkZWZhdWx0OiBfX3hjaGdfd3Jvbmdfc2l6ZSgpOyB9IF9f cmV0OyB9KTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgbGxpc3Rf bm9kZSAqbGxpc3RfZGVsX2ZpcnN0KHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGxsaXN0X25vZGUgKmxsaXN0X3JldmVyc2Vfb3JkZXIoc3RydWN0IGxsaXN0 X25vZGUgKmhlYWQpOwoxNDQ3NDogIyAxNiAiLi9pbmNsdWRlL2xpbnV4L3NtcC5oIiAyCjE0NDc0 OiAKMTQ0NzQ6IHR5cGVkZWYgdm9pZCAoKnNtcF9jYWxsX2Z1bmNfdCkodm9pZCAqaW5mbyk7CjE0 NDc0OiB0eXBlZGVmIGJvb2wgKCpzbXBfY29uZF9mdW5jX3QpKGludCBjcHUsIHZvaWQgKmluZm8p OwoxNDQ3NDogc3RydWN0IF9fY2FsbF9zaW5nbGVfZGF0YSB7CjE0NDc0OiAgc3RydWN0IGxsaXN0 X25vZGUgbGxpc3Q7CjE0NDc0OiAgc21wX2NhbGxfZnVuY190IGZ1bmM7CjE0NDc0OiAgdm9pZCAq aW5mbzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZmxhZ3M7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF9fY2FsbF9zaW5nbGVfZGF0YSBjYWxsX3NpbmdsZV9k YXRhX3QKMTQ0NzQ6ICBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyhzaXplb2Yoc3RydWN0IF9f Y2FsbF9zaW5nbGVfZGF0YSkpKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2ln bmVkIGludCB0b3RhbF9jcHVzOwoxNDQ3NDogCjE0NDc0OiBpbnQgc21wX2NhbGxfZnVuY3Rpb25f c2luZ2xlKGludCBjcHVpZCwgc21wX2NhbGxfZnVuY190IGZ1bmMsIHZvaWQgKmluZm8sCjE0NDc0 OiAgICAgICAgIGludCB3YWl0KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogdm9pZCBvbl9lYWNoX2NwdShzbXBfY2FsbF9mdW5jX3QgZnVuYywgdm9pZCAqaW5mbywgaW50 IHdhaXQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZv aWQgb25fZWFjaF9jcHVfbWFzayhjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaywgc21wX2NhbGxf ZnVuY190IGZ1bmMsCjE0NDc0OiAgIHZvaWQgKmluZm8sIGJvb2wgd2FpdCk7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIG9uX2VhY2hf Y3B1X2NvbmQoc21wX2NvbmRfZnVuY190IGNvbmRfZnVuYywgc21wX2NhbGxfZnVuY190IGZ1bmMs CjE0NDc0OiAgICAgICAgIHZvaWQgKmluZm8sIGJvb2wgd2FpdCk7CjE0NDc0OiAKMTQ0NzQ6IHZv aWQgb25fZWFjaF9jcHVfY29uZF9tYXNrKHNtcF9jb25kX2Z1bmNfdCBjb25kX2Z1bmMsIHNtcF9j YWxsX2Z1bmNfdCBmdW5jLAoxNDQ3NDogICAgICAgdm9pZCAqaW5mbywgYm9vbCB3YWl0LCBjb25z dCBzdHJ1Y3QgY3B1bWFzayAqbWFzayk7CjE0NDc0OiAKMTQ0NzQ6IGludCBzbXBfY2FsbF9mdW5j dGlvbl9zaW5nbGVfYXN5bmMoaW50IGNwdSwgY2FsbF9zaW5nbGVfZGF0YV90ICpjc2QpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmgiIDEKMTQ0NzQ6ICMgMTIgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vc21wLmgiCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vbXBzcGVjLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVjX2RlZi5oIiAxCjE0NDc0OiAj IDIyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3BlY19kZWYuaCIKMTQ0NzQ6IHN0cnVjdCBt cGZfaW50ZWwgewoxNDQ3NDogIGNoYXIgc2lnbmF0dXJlWzRdOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBwaHlzcHRyOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgbGVuZ3RoOwoxNDQ3NDogIHVuc2lnbmVk IGNoYXIgc3BlY2lmaWNhdGlvbjsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGNoZWNrc3VtOwoxNDQ3 NDogIHVuc2lnbmVkIGNoYXIgZmVhdHVyZTE7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBmZWF0dXJl MjsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGZlYXR1cmUzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIg ZmVhdHVyZTQ7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBmZWF0dXJlNTsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbXBjX3RhYmxlIHsKMTQ0NzQ6ICBjaGFy IHNpZ25hdHVyZVs0XTsKMTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CjE0NDc0OiAgY2hh ciBzcGVjOwoxNDQ3NDogIGNoYXIgY2hlY2tzdW07CjE0NDc0OiAgY2hhciBvZW1bOF07CjE0NDc0 OiAgY2hhciBwcm9kdWN0aWRbMTJdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBvZW1wdHI7CjE0NDc0 OiAgdW5zaWduZWQgc2hvcnQgb2Vtc2l6ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBvZW1jb3Vu dDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbGFwaWM7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlc2Vy dmVkOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNjggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVj X2RlZi5oIgoxNDQ3NDogc3RydWN0IG1wY19jcHUgewoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgdHlw ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGFwaWNpZDsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGFw aWN2ZXI7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBjcHVmbGFnOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBjcHVmZWF0dXJlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBmZWF0dXJlZmxhZzsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgcmVzZXJ2ZWRbMl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg bXBjX2J1cyB7CjE0NDc0OiAgdW5zaWduZWQgY2hhciB0eXBlOwoxNDQ3NDogIHVuc2lnbmVkIGNo YXIgYnVzaWQ7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBidXN0eXBlWzZdOwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgMTA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3BlY19kZWYuaCIKMTQ0NzQ6IHN0 cnVjdCBtcGNfaW9hcGljIHsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIHR5cGU7CjE0NDc0OiAgdW5z aWduZWQgY2hhciBhcGljaWQ7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBhcGljdmVyOwoxNDQ3NDog IHVuc2lnbmVkIGNoYXIgZmxhZ3M7CjE0NDc0OiAgdW5zaWduZWQgaW50IGFwaWNhZGRyOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1wY19pbnRzcmMgewoxNDQ3NDogIHVuc2lnbmVk IGNoYXIgdHlwZTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGlycXR5cGU7CjE0NDc0OiAgdW5zaWdu ZWQgc2hvcnQgaXJxZmxhZzsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIHNyY2J1czsKMTQ0NzQ6ICB1 bnNpZ25lZCBjaGFyIHNyY2J1c2lycTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRzdGFwaWM7CjE0 NDc0OiAgdW5zaWduZWQgY2hhciBkc3RpcnE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVt IG1wX2lycV9zb3VyY2VfdHlwZXMgewoxNDQ3NDogIG1wX0lOVCA9IDAsCjE0NDc0OiAgbXBfTk1J ID0gMSwKMTQ0NzQ6ICBtcF9TTUkgPSAyLAoxNDQ3NDogIG1wX0V4dElOVCA9IDMKMTQ0NzQ6IH07 CjE0NDc0OiAjIDE0NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tcHNwZWNfZGVmLmgiCjE0NDc0 OiBzdHJ1Y3QgbXBjX2xpbnRzcmMgewoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgdHlwZTsKMTQ0NzQ6 ICB1bnNpZ25lZCBjaGFyIGlycXR5cGU7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgaXJxZmxhZzsK MTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIHNyY2J1c2lkOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgc3Jj YnVzaXJxOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgZGVzdGFwaWM7CjE0NDc0OiAgdW5zaWduZWQg Y2hhciBkZXN0YXBpY2xpbnQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IG1wY19vZW10YWJsZSB7CjE0NDc0OiAgY2hhciBzaWduYXR1cmVbNF07CjE0NDc0 OiAgdW5zaWduZWQgc2hvcnQgbGVuZ3RoOwoxNDQ3NDogIGNoYXIgcmV2OwoxNDQ3NDogIGNoYXIg Y2hlY2tzdW07CjE0NDc0OiAgY2hhciBtcGNbOF07CjE0NDc0OiB9OwoxNDQ3NDogIyAxNzcgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVjX2RlZi5oIgoxNDQ3NDogZW51bSBtcF9idXN0eXBl IHsKMTQ0NzQ6ICBNUF9CVVNfSVNBID0gMSwKMTQ0NzQ6ICBNUF9CVVNfRUlTQSwKMTQ0NzQ6ICBN UF9CVVNfUENJLAoxNDQ3NDogfTsKMTQ0NzQ6ICMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9t cHNwZWMuaCIgMgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0Lmgi IDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBtcGNfYnVzOwoxNDQ3NDogc3RydWN0IG1wY19jcHU7CjE0NDc0OiBzdHJ1Y3QgbXBj X3RhYmxlOwoxNDQ3NDogc3RydWN0IGNwdWluZm9feDg2OwoxNDQ3NDogIyAyMyAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgoxNDQ3NDogc3RydWN0IHg4Nl9pbml0X21wcGFyc2Ug ewoxNDQ3NDogIHZvaWQgKCptcGNfcmVjb3JkKSh1bnNpZ25lZCBpbnQgbW9kZSk7CjE0NDc0OiAg dm9pZCAoKnNldHVwX2lvYXBpY19pZHMpKHZvaWQpOwoxNDQ3NDogIGludCAoKm1wY19hcGljX2lk KShzdHJ1Y3QgbXBjX2NwdSAqbSk7CjE0NDc0OiAgdm9pZCAoKnNtcF9yZWFkX21wY19vZW0pKHN0 cnVjdCBtcGNfdGFibGUgKm1wYyk7CjE0NDc0OiAgdm9pZCAoKm1wY19vZW1fcGNpX2J1cykoc3Ry dWN0IG1wY19idXMgKm0pOwoxNDQ3NDogIHZvaWQgKCptcGNfb2VtX2J1c19pbmZvKShzdHJ1Y3Qg bXBjX2J1cyAqbSwgY2hhciAqbmFtZSk7CjE0NDc0OiAgdm9pZCAoKmZpbmRfc21wX2NvbmZpZyko dm9pZCk7CjE0NDc0OiAgdm9pZCAoKmdldF9zbXBfY29uZmlnKSh1bnNpZ25lZCBpbnQgZWFybHkp OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNDIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20veDg2X2luaXQu aCIKMTQ0NzQ6IHN0cnVjdCB4ODZfaW5pdF9yZXNvdXJjZXMgewoxNDQ3NDogIHZvaWQgKCpwcm9i ZV9yb21zKSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqcmVzZXJ2ZV9yZXNvdXJjZXMpKHZvaWQpOwox NDQ3NDogIGNoYXIgKigqbWVtb3J5X3NldHVwKSh2b2lkKTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDU3 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0LmgiCjE0NDc0OiBzdHJ1Y3QgeDg2X2lu aXRfaXJxcyB7CjE0NDc0OiAgdm9pZCAoKnByZV92ZWN0b3JfaW5pdCkodm9pZCk7CjE0NDc0OiAg dm9pZCAoKmludHJfaW5pdCkodm9pZCk7CjE0NDc0OiAgdm9pZCAoKnRyYXBfaW5pdCkodm9pZCk7 CjE0NDc0OiAgdm9pZCAoKmludHJfbW9kZV9zZWxlY3QpKHZvaWQpOwoxNDQ3NDogIHZvaWQgKCpp bnRyX21vZGVfaW5pdCkodm9pZCk7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHg4Nl9pbml0X29lbSB7CjE0NDc0 OiAgdm9pZCAoKmFyY2hfc2V0dXApKHZvaWQpOwoxNDQ3NDogIHZvaWQgKCpiYW5uZXIpKHZvaWQp OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgODIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20veDg2X2luaXQu aCIKMTQ0NzQ6IHN0cnVjdCB4ODZfaW5pdF9wYWdpbmcgewoxNDQ3NDogIHZvaWQgKCpwYWdldGFi bGVfaW5pdCkodm9pZCk7CjE0NDc0OiB9OwoxNDQ3NDogIyA5MyAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS94ODZfaW5pdC5oIgoxNDQ3NDogc3RydWN0IHg4Nl9pbml0X3RpbWVycyB7CjE0NDc0OiAg dm9pZCAoKnNldHVwX3BlcmNwdV9jbG9ja2V2KSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqdGltZXJf aW5pdCkodm9pZCk7CjE0NDc0OiAgdm9pZCAoKndhbGxjbG9ja19pbml0KSh2b2lkKTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IHg4Nl9pbml0X2lvbW11IHsKMTQ0NzQ6ICBpbnQgKCppb21tdV9pbml0KSh2b2lkKTsKMTQ0NzQ6 IH07CjE0NDc0OiAjIDExNCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgoxNDQ3 NDogc3RydWN0IHg4Nl9pbml0X3BjaSB7CjE0NDc0OiAgaW50ICgqYXJjaF9pbml0KSh2b2lkKTsK MTQ0NzQ6ICBpbnQgKCppbml0KSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqaW5pdF9pcnEpKHZvaWQp OwoxNDQ3NDogIHZvaWQgKCpmaXh1cF9pcnFzKSh2b2lkKTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDEy OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgoxNDQ3NDogc3RydWN0IHg4Nl9o eXBlcl9pbml0IHsKMTQ0NzQ6ICB2b2lkICgqaW5pdF9wbGF0Zm9ybSkodm9pZCk7CjE0NDc0OiAg dm9pZCAoKmd1ZXN0X2xhdGVfaW5pdCkodm9pZCk7CjE0NDc0OiAgYm9vbCAoKngyYXBpY19hdmFp bGFibGUpKHZvaWQpOwoxNDQ3NDogIHZvaWQgKCppbml0X21lbV9tYXBwaW5nKSh2b2lkKTsKMTQ0 NzQ6ICB2b2lkICgqaW5pdF9hZnRlcl9ib290bWVtKSh2b2lkKTsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCB4ODZfaW5pdF9hY3BpIHsKMTQ0NzQ6ICB2b2lkICgqc2V0X3Jvb3RfcG9pbnRlcikodTY0 IGFkZHIpOwoxNDQ3NDogIHU2NCAoKmdldF9yb290X3BvaW50ZXIpKHZvaWQpOwoxNDQ3NDogIHZv aWQgKCpyZWR1Y2VkX2h3X2Vhcmx5X2luaXQpKHZvaWQpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgeDg2X2luaXRfb3BzIHsK MTQ0NzQ6ICBzdHJ1Y3QgeDg2X2luaXRfcmVzb3VyY2VzIHJlc291cmNlczsKMTQ0NzQ6ICBzdHJ1 Y3QgeDg2X2luaXRfbXBwYXJzZSBtcHBhcnNlOwoxNDQ3NDogIHN0cnVjdCB4ODZfaW5pdF9pcnFz IGlycXM7CjE0NDc0OiAgc3RydWN0IHg4Nl9pbml0X29lbSBvZW07CjE0NDc0OiAgc3RydWN0IHg4 Nl9pbml0X3BhZ2luZyBwYWdpbmc7CjE0NDc0OiAgc3RydWN0IHg4Nl9pbml0X3RpbWVycyB0aW1l cnM7CjE0NDc0OiAgc3RydWN0IHg4Nl9pbml0X2lvbW11IGlvbW11OwoxNDQ3NDogIHN0cnVjdCB4 ODZfaW5pdF9wY2kgcGNpOwoxNDQ3NDogIHN0cnVjdCB4ODZfaHlwZXJfaW5pdCBoeXBlcjsKMTQ0 NzQ6ICBzdHJ1Y3QgeDg2X2luaXRfYWNwaSBhY3BpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB4ODZfY3B1aW5p dF9vcHMgewoxNDQ3NDogIHZvaWQgKCpzZXR1cF9wZXJjcHVfY2xvY2tldikodm9pZCk7CjE0NDc0 OiAgdm9pZCAoKmVhcmx5X3BlcmNwdV9jbG9ja19pbml0KSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgq Zml4dXBfY3B1X2lkKShzdHJ1Y3QgY3B1aW5mb194ODYgKmMsIGludCBub2RlKTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0aW1lc3BlYzY0OwoxNDQ3NDogIyAxOTggIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20veDg2X2luaXQuaCIKMTQ0NzQ6IHN0cnVjdCB4ODZfbGVnYWN5X2Rldmlj ZXMgewoxNDQ3NDogIGludCBwbnBiaW9zOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjExICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0LmgiCjE0NDc0OiBlbnVtIHg4Nl9sZWdhY3lfaTgwNDJf c3RhdGUgewoxNDQ3NDogIFg4Nl9MRUdBQ1lfSTgwNDJfUExBVEZPUk1fQUJTRU5ULAoxNDQ3NDog IFg4Nl9MRUdBQ1lfSTgwNDJfRklSTVdBUkVfQUJTRU5ULAoxNDQ3NDogIFg4Nl9MRUdBQ1lfSTgw NDJfRVhQRUNURURfUFJFU0VOVCwKMTQ0NzQ6IH07CjE0NDc0OiAjIDIyOSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS94ODZfaW5pdC5oIgoxNDQ3NDogc3RydWN0IHg4Nl9sZWdhY3lfZmVhdHVyZXMg ewoxNDQ3NDogIGVudW0geDg2X2xlZ2FjeV9pODA0Ml9zdGF0ZSBpODA0MjsKMTQ0NzQ6ICBpbnQg cnRjOwoxNDQ3NDogIGludCB3YXJtX3Jlc2V0OwoxNDQ3NDogIGludCBub192Z2E7CjE0NDc0OiAg aW50IHJlc2VydmVfYmlvc19yZWdpb25zOwoxNDQ3NDogIHN0cnVjdCB4ODZfbGVnYWN5X2Rldmlj ZXMgZGV2aWNlczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgeDg2X2h5cGVyX3J1bnRpbWUgewoxNDQ3NDogIHZv aWQgKCpwaW5fdmNwdSkoaW50IGNwdSk7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNjggIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20veDg2X2luaXQuaCIKMTQ0NzQ6IHN0cnVjdCB4ODZfcGxhdGZvcm1fb3Bz IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nICgqY2FsaWJyYXRlX2NwdSkodm9pZCk7CjE0NDc0OiAg dW5zaWduZWQgbG9uZyAoKmNhbGlicmF0ZV90c2MpKHZvaWQpOwoxNDQ3NDogIHZvaWQgKCpnZXRf d2FsbGNsb2NrKShzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwoxNDQ3NDogIGludCAoKnNldF93YWxs Y2xvY2spKGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CjE0NDc0OiAgdm9pZCAoKmlvbW11 X3NodXRkb3duKSh2b2lkKTsKMTQ0NzQ6ICBib29sICgqaXNfdW50cmFja2VkX3BhdF9yYW5nZSko dTY0IHN0YXJ0LCB1NjQgZW5kKTsKMTQ0NzQ6ICB2b2lkICgqbm1pX2luaXQpKHZvaWQpOwoxNDQ3 NDogIHVuc2lnbmVkIGNoYXIgKCpnZXRfbm1pX3JlYXNvbikodm9pZCk7CjE0NDc0OiAgdm9pZCAo KnNhdmVfc2NoZWRfY2xvY2tfc3RhdGUpKHZvaWQpOwoxNDQ3NDogIHZvaWQgKCpyZXN0b3JlX3Nj aGVkX2Nsb2NrX3N0YXRlKSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqYXBpY19wb3N0X2luaXQpKHZv aWQpOwoxNDQ3NDogIHN0cnVjdCB4ODZfbGVnYWN5X2ZlYXR1cmVzIGxlZ2FjeTsKMTQ0NzQ6ICB2 b2lkICgqc2V0X2xlZ2FjeV9mZWF0dXJlcykodm9pZCk7CjE0NDc0OiAgc3RydWN0IHg4Nl9oeXBl cl9ydW50aW1lIGh5cGVyOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBjaV9kZXY7 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB4ODZfbXNpX29wcyB7CjE0NDc0OiAgaW50ICgqc2V0dXBf bXNpX2lycXMpKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBudmVjLCBpbnQgdHlwZSk7CjE0NDc0 OiAgdm9pZCAoKnRlYXJkb3duX21zaV9pcnEpKHVuc2lnbmVkIGludCBpcnEpOwoxNDQ3NDogIHZv aWQgKCp0ZWFyZG93bl9tc2lfaXJxcykoc3RydWN0IHBjaV9kZXYgKmRldik7CjE0NDc0OiAgdm9p ZCAoKnJlc3RvcmVfbXNpX2lycXMpKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IHg4Nl9hcGljX29wcyB7CjE0NDc0OiAgdW5zaWduZWQgaW50ICgq aW9fYXBpY19yZWFkKSAodW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCByZWcpOwoxNDQ3 NDogIHZvaWQgKCpyZXN0b3JlKSh2b2lkKTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBzdHJ1Y3QgeDg2X2luaXRfb3BzIHg4Nl9pbml0OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB4ODZf Y3B1aW5pdF9vcHMgeDg2X2NwdWluaXQ7CjE0NDc0OiBleHRlcm4gc3RydWN0IHg4Nl9wbGF0Zm9y bV9vcHMgeDg2X3BsYXRmb3JtOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB4ODZfbXNpX29wcyB4ODZf bXNpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB4ODZfYXBpY19vcHMgeDg2X2FwaWNfb3BzOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gdm9pZCB4ODZfZWFybHlfaW5pdF9wbGF0Zm9ybV9xdWlya3Modm9p ZCk7CjE0NDc0OiBleHRlcm4gdm9pZCB4ODZfaW5pdF9ub29wKHZvaWQpOwoxNDQ3NDogZXh0ZXJu IHZvaWQgeDg2X2luaXRfdWludF9ub29wKHVuc2lnbmVkIGludCB1bnVzZWQpOwoxNDQ3NDogZXh0 ZXJuIGJvb2wgYm9vbF94ODZfaW5pdF9ub29wKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgeDg2 X29wX2ludF9ub29wKGludCBjcHUpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgeDg2X3BucGJpb3NfZGlz YWJsZWQodm9pZCk7CjE0NDc0OiAjIDggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVjLmgi IDIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljZGVmLmgiIDEKMTQ0NzQ6 ICMgMTc5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FwaWNkZWYuaCIKMTQ0NzQ6IHN0cnVjdCBs b2NhbF9hcGljIHsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQg X19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzAxOwoxNDQ3NDogCjE0NDc0OiAgICAgICAgIHN0 cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDI7CjE0NDc0 OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2 ZWRfMSA6IDI0LAoxNDQ3NDogICAgcGh5c19hcGljX2lkIDogNCwKMTQ0NzQ6ICAgIF9fcmVzZXJ2 ZWRfMiA6IDQ7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwoxNDQ3NDogIH0g aWQ7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgY29uc3QKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDog ICB1bnNpZ25lZCBpbnQgdmVyc2lvbiA6IDgsCjE0NDc0OiAgICBfX3Jlc2VydmVkXzEgOiA4LAox NDQ3NDogICAgbWF4X2x2dCA6IDgsCjE0NDc0OiAgICBfX3Jlc2VydmVkXzIgOiA4OwoxNDQ3NDog ICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKMTQ0NzQ6ICB9IHZlcnNpb247CjE0NDc0OiAK MTQ0NzQ6ICAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y ZXNlcnZlZF8wMzsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQg X19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA0OwoxNDQ3NDogCjE0NDc0OiAgICAgICAgIHN0 cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDU7CjE0NDc0 OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0g X19yZXNlcnZlZF8wNjsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgewoxNDQ3NDogICB1 bnNpZ25lZCBpbnQgcHJpb3JpdHkgOiA4LAoxNDQ3NDogICAgX19yZXNlcnZlZF8xIDogMjQ7CjE0 NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CjE0NDc0OiAgfSB0cHI7CjE0NDc0 OiAKMTQ0NzQ6ICAgICAgICAgY29uc3QKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25l ZCBpbnQgcHJpb3JpdHkgOiA4LAoxNDQ3NDogICAgX19yZXNlcnZlZF8xIDogMjQ7CjE0NDc0OiAg IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CjE0NDc0OiAgfSBhcHI7CjE0NDc0OiAKMTQ0 NzQ6ICAgICAgICAgY29uc3QKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQg cHJpb3JpdHkgOiA4LAoxNDQ3NDogICAgX19yZXNlcnZlZF8xIDogMjQ7CjE0NDc0OiAgIHVuc2ln bmVkIGludCBfX3Jlc2VydmVkXzJbM107CjE0NDc0OiAgfSBwcHI7CjE0NDc0OiAKMTQ0NzQ6ICAg ICAgICAgc3RydWN0IHsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IGVvaTsKMTQ0NzQ6ICAgdW5zaWdu ZWQgaW50IF9fcmVzZXJ2ZWRbM107CjE0NDc0OiAgfSBlb2k7CjE0NDc0OiAKMTQ0NzQ6ICAgICAg ICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wNzsK MTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgX19y ZXNlcnZlZF8xIDogMjQsCjE0NDc0OiAgICBsb2dpY2FsX2Rlc3QgOiA4OwoxNDQ3NDogICB1bnNp Z25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwoxNDQ3NDogIH0gbGRyOwoxNDQ3NDogCjE0NDc0OiAg ICAgICAgIHN0cnVjdCB7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyOCwK MTQ0NzQ6ICAgIG1vZGVsIDogNDsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlsz XTsKMTQ0NzQ6ICB9IGRmcjsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgewoxNDQ3NDog ICB1bnNpZ25lZCBpbnQgc3B1cmlvdXNfdmVjdG9yIDogOCwKMTQ0NzQ6ICAgIGFwaWNfZW5hYmxl ZCA6IDEsCjE0NDc0OiAgICBmb2N1c19jcHUgOiAxLAoxNDQ3NDogICAgX19yZXNlcnZlZF8yIDog MjI7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CjE0NDc0OiAgfSBzdnI7 CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHsKMTQ0NzQ6ICAgICAgICAgIHVuc2lnbmVk IGludCBiaXRmaWVsZDsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CjE0NDc0 OiAgfSBpc3IgWzhdOwoxNDQ3NDogCjE0NDc0OiAgICAgICAgIHN0cnVjdCB7CjE0NDc0OiAgICAg ICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2Vy dmVkWzNdOwoxNDQ3NDogIH0gdG1yIFs4XTsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3Qg ewoxNDQ3NDogICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwoxNDQ3NDogICB1bnNpZ25l ZCBpbnQgX19yZXNlcnZlZFszXTsKMTQ0NzQ6ICB9IGlyciBbOF07CjE0NDc0OiAKMTQ0NzQ6ICAg ICAgICAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgdW5zaWduZWQgaW50IHNl bmRfY3NfZXJyb3IgOiAxLAoxNDQ3NDogICAgIHJlY2VpdmVfY3NfZXJyb3IgOiAxLAoxNDQ3NDog ICAgIHNlbmRfYWNjZXB0X2Vycm9yIDogMSwKMTQ0NzQ6ICAgICByZWNlaXZlX2FjY2VwdF9lcnJv ciA6IDEsCjE0NDc0OiAgICAgX19yZXNlcnZlZF8xIDogMSwKMTQ0NzQ6ICAgICBzZW5kX2lsbGVn YWxfdmVjdG9yIDogMSwKMTQ0NzQ6ICAgICByZWNlaXZlX2lsbGVnYWxfdmVjdG9yIDogMSwKMTQ0 NzQ6ICAgICBpbGxlZ2FsX3JlZ2lzdGVyX2FkZHJlc3MgOiAxLAoxNDQ3NDogICAgIF9fcmVzZXJ2 ZWRfMiA6IDI0OwoxNDQ3NDogICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKMTQ0NzQ6 ICAgfSBlcnJvcl9iaXRzOwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgdW5zaWduZWQgaW50 IGVycm9yczsKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CjE0NDc0OiAg IH0gYWxsX2Vycm9yczsKMTQ0NzQ6ICB9IGVzcjsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1 Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA4OwoxNDQ3NDog CjE0NDc0OiAgICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9f cmVzZXJ2ZWRfMDk7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50 IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMDsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBz dHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzExOwoxNDQ3 NDogCjE0NDc0OiAgICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9 IF9fcmVzZXJ2ZWRfMTI7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHsgdW5zaWduZWQg aW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMzsKMTQ0NzQ6IAoxNDQ3NDogICAgICAg ICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE0Owox NDQ3NDogCjE0NDc0OiAgICAgICAgIHN0cnVjdCB7CjE0NDc0OiAgIHVuc2lnbmVkIGludCB2ZWN0 b3IgOiA4LAoxNDQ3NDogICAgZGVsaXZlcnlfbW9kZSA6IDMsCjE0NDc0OiAgICBkZXN0aW5hdGlv bl9tb2RlIDogMSwKMTQ0NzQ6ICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCjE0NDc0OiAgICBfX3Jl c2VydmVkXzEgOiAxLAoxNDQ3NDogICAgbGV2ZWwgOiAxLAoxNDQ3NDogICAgdHJpZ2dlciA6IDEs CjE0NDc0OiAgICBfX3Jlc2VydmVkXzIgOiAyLAoxNDQ3NDogICAgc2hvcnRoYW5kIDogMiwKMTQ0 NzQ6ICAgIF9fcmVzZXJ2ZWRfMyA6IDEyOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgX19yZXNlcnZl ZF80WzNdOwoxNDQ3NDogIH0gaWNyMTsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3Qgewox NDQ3NDogICB1bmlvbiB7CjE0NDc0OiAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjQs CjE0NDc0OiAgICAgcGh5c19kZXN0IDogNCwKMTQ0NzQ6ICAgICBfX3Jlc2VydmVkXzIgOiA0Owox NDQ3NDogICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMyA6IDI0LAoxNDQ3NDogICAgIGxvZ2lj YWxfZGVzdCA6IDg7CjE0NDc0OiAgIH0gZGVzdDsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9fcmVz ZXJ2ZWRfNFszXTsKMTQ0NzQ6ICB9IGljcjI7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0 IHsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCjE0NDc0OiAgICBfX3Jlc2VydmVk XzEgOiA0LAoxNDQ3NDogICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKMTQ0NzQ6ICAgIF9fcmVzZXJ2 ZWRfMiA6IDMsCjE0NDc0OiAgICBtYXNrIDogMSwKMTQ0NzQ6ICAgIHRpbWVyX21vZGUgOiAxLAox NDQ3NDogICAgX19yZXNlcnZlZF8zIDogMTQ7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2Vy dmVkXzRbM107CjE0NDc0OiAgfSBsdnRfdGltZXI7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3Ry dWN0IHsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCjE0NDc0OiAgICBkZWxpdmVy eV9tb2RlIDogMywKMTQ0NzQ6ICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCjE0NDc0OiAgICBkZWxpdmVy eV9zdGF0dXMgOiAxLAoxNDQ3NDogICAgX19yZXNlcnZlZF8yIDogMywKMTQ0NzQ6ICAgIG1hc2sg OiAxLAoxNDQ3NDogICAgX19yZXNlcnZlZF8zIDogMTU7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBf X3Jlc2VydmVkXzRbM107CjE0NDc0OiAgfSBsdnRfdGhlcm1hbDsKMTQ0NzQ6IAoxNDQ3NDogICAg ICAgICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKMTQ0NzQ6ICAg IGRlbGl2ZXJ5X21vZGUgOiAzLAoxNDQ3NDogICAgX19yZXNlcnZlZF8xIDogMSwKMTQ0NzQ6ICAg IGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCjE0NDc0OiAgICBfX3Jlc2VydmVkXzIgOiAzLAoxNDQ3NDog ICAgbWFzayA6IDEsCjE0NDc0OiAgICBfX3Jlc2VydmVkXzMgOiAxNTsKMTQ0NzQ6ICAgdW5zaWdu ZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKMTQ0NzQ6ICB9IGx2dF9wYzsKMTQ0NzQ6IAoxNDQ3NDog ICAgICAgICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKMTQ0NzQ6 ICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAoxNDQ3NDogICAgX19yZXNlcnZlZF8xIDogMSwKMTQ0NzQ6 ICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCjE0NDc0OiAgICBwb2xhcml0eSA6IDEsCjE0NDc0OiAg ICByZW1vdGVfaXJyIDogMSwKMTQ0NzQ6ICAgIHRyaWdnZXIgOiAxLAoxNDQ3NDogICAgbWFzayA6 IDEsCjE0NDc0OiAgICBfX3Jlc2VydmVkXzIgOiAxNTsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9f cmVzZXJ2ZWRfM1szXTsKMTQ0NzQ6ICB9IGx2dF9saW50MDsKMTQ0NzQ6IAoxNDQ3NDogICAgICAg ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKMTQ0NzQ6ICAgIGRl bGl2ZXJ5X21vZGUgOiAzLAoxNDQ3NDogICAgX19yZXNlcnZlZF8xIDogMSwKMTQ0NzQ6ICAgIGRl bGl2ZXJ5X3N0YXR1cyA6IDEsCjE0NDc0OiAgICBwb2xhcml0eSA6IDEsCjE0NDc0OiAgICByZW1v dGVfaXJyIDogMSwKMTQ0NzQ6ICAgIHRyaWdnZXIgOiAxLAoxNDQ3NDogICAgbWFzayA6IDEsCjE0 NDc0OiAgICBfX3Jlc2VydmVkXzIgOiAxNTsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2 ZWRfM1szXTsKMTQ0NzQ6ICB9IGx2dF9saW50MTsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1 Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKMTQ0NzQ6ICAgIF9fcmVzZXJ2 ZWRfMSA6IDQsCjE0NDc0OiAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAoxNDQ3NDogICAgX19yZXNl cnZlZF8yIDogMywKMTQ0NzQ6ICAgIG1hc2sgOiAxLAoxNDQ3NDogICAgX19yZXNlcnZlZF8zIDog MTU7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CjE0NDc0OiAgfSBsdnRf ZXJyb3I7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHsKMTQ0NzQ6ICAgdW5zaWduZWQg aW50IGluaXRpYWxfY291bnQ7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107 CjE0NDc0OiAgfSB0aW1lcl9pY3I7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgY29uc3QKMTQ0NzQ6 ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgY3Vycl9jb3VudDsKMTQ0NzQ6ICAgdW5z aWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKMTQ0NzQ6ICB9IHRpbWVyX2NjcjsKMTQ0NzQ6IAox NDQ3NDogICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jl c2VydmVkXzE2OwoxNDQ3NDogCjE0NDc0OiAgICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTc7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3Ry dWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xODsKMTQ0NzQ6 IAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBf X3Jlc2VydmVkXzE5OwoxNDQ3NDogCjE0NDc0OiAgICAgICAgIHN0cnVjdCB7CjE0NDc0OiAgIHVu c2lnbmVkIGludCBkaXZpc29yIDogNCwKMTQ0NzQ6ICAgIF9fcmVzZXJ2ZWRfMSA6IDI4OwoxNDQ3 NDogICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwoxNDQ3NDogIH0gdGltZXJfZGNyOwox NDQ3NDogCjE0NDc0OiAgICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRd OyB9IF9fcmVzZXJ2ZWRfMjA7CjE0NDc0OiAKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tl ZCkpOwoxNDQ3NDogIyA0MzUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXBpY2RlZi5oIgoxNDQ3 NDogZW51bSBpb2FwaWNfaXJxX2Rlc3RpbmF0aW9uX3R5cGVzIHsKMTQ0NzQ6ICBkZXN0X0ZpeGVk ID0gMCwKMTQ0NzQ6ICBkZXN0X0xvd2VzdFByaW8gPSAxLAoxNDQ3NDogIGRlc3RfU01JID0gMiwK MTQ0NzQ6ICBkZXN0X19yZXNlcnZlZF8xID0gMywKMTQ0NzQ6ICBkZXN0X05NSSA9IDQsCjE0NDc0 OiAgZGVzdF9JTklUID0gNSwKMTQ0NzQ6ICBkZXN0X19yZXNlcnZlZF8yID0gNiwKMTQ0NzQ6ICBk ZXN0X0V4dElOVCA9IDcKMTQ0NzQ6IH07CjE0NDc0OiAjIDkgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vbXBzcGVjLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBwaWNfbW9kZTsKMTQ0NzQ6 ICMgNDAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVjLmgiCjE0NDc0OiBleHRlcm4gdW5z aWduZWQgbG9uZyBtcF9idXNfbm90X3BjaVsoKCgyNTYpICsgKChzaXplb2YobG9uZykgKiA4KSkg LSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkpKV07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1bnNp Z25lZCBpbnQgYm9vdF9jcHVfcGh5c2ljYWxfYXBpY2lkOwoxNDQ3NDogZXh0ZXJuIHU4IGJvb3Rf Y3B1X2FwaWNfdmVyc2lvbjsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIG1wX2xhcGljX2Fk ZHI7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBzbXBfZm91bmRfY29uZmlnOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGdldF9zbXBfY29uZmln KHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgeDg2X2luaXQubXBwYXJzZS5nZXRfc21wX2NvbmZpZygw KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBlYXJseV9nZXRfc21wX2NvbmZpZyh2b2lk KQoxNDQ3NDogewoxNDQ3NDogIHg4Nl9pbml0Lm1wcGFyc2UuZ2V0X3NtcF9jb25maWcoMSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZmluZF9zbXBfY29uZmlnKHZvaWQpCjE0NDc0OiB7 CjE0NDc0OiAgeDg2X2luaXQubXBwYXJzZS5maW5kX3NtcF9jb25maWcoKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBlODIwX19tZW1ibG9ja19hbGxvY19yZXNl cnZlZF9tcGNfbmV3KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCBlbmFibGVfdXBkYXRlX21wdGFi bGU7CjE0NDc0OiBleHRlcm4gaW50IGRlZmF1bHRfbXBjX2FwaWNfaWQoc3RydWN0IG1wY19jcHUg Km0pOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGVmYXVsdF9zbXBfcmVhZF9tcGNfb2VtKHN0cnVjdCBt cGNfdGFibGUgKm1wYyk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGRlZmF1bHRfbXBjX29l bV9idXNfaW5mbyhzdHJ1Y3QgbXBjX2J1cyAqbSwgY2hhciAqc3RyKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGRlZmF1bHRfZmluZF9zbXBfY29uZmlnKHZvaWQp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGVmYXVsdF9nZXRfc21wX2NvbmZpZyh1bnNpZ25lZCBpbnQg ZWFybHkpOwoxNDQ3NDogIyA4OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tcHNwZWMuaCIKMTQ0 NzQ6IGludCBnZW5lcmljX3Byb2Nlc3Nvcl9pbmZvKGludCBhcGljaWQsIGludCB2ZXJzaW9uKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwaHlzaWRfbWFzayB7CjE0NDc0 OiAgdW5zaWduZWQgbG9uZyBtYXNrWygoKDMyNzY4KSArICgoc2l6ZW9mKGxvbmcpICogOCkpIC0g MSkgLyAoKHNpemVvZihsb25nKSAqIDgpKSldOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdHlw ZWRlZiBzdHJ1Y3QgcGh5c2lkX21hc2sgcGh5c2lkX21hc2tfdDsKMTQ0NzQ6ICMgMTMyICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL21wc3BlYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBwaHlzaWRz X2NvZXJjZShwaHlzaWRfbWFza190ICptYXApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG1hcC0+ bWFza1swXTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwaHlzaWRzX3Byb21vdGUodW5z aWduZWQgbG9uZyBwaHlzaWRzLCBwaHlzaWRfbWFza190ICptYXApCjE0NDc0OiB7CjE0NDc0OiAg Yml0bWFwX3plcm8oKCptYXApLm1hc2ssIDMyNzY4KTsKMTQ0NzQ6ICBtYXAtPm1hc2tbMF0gPSBw aHlzaWRzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBoeXNpZF9zZXRfbWFza19vZl9w aHlzaWQoaW50IHBoeXNpZCwgcGh5c2lkX21hc2tfdCAqbWFwKQoxNDQ3NDogewoxNDQ3NDogIGJp dG1hcF96ZXJvKCgqbWFwKS5tYXNrLCAzMjc2OCk7CjE0NDc0OiAgc2V0X2JpdChwaHlzaWQsICgq bWFwKS5tYXNrKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIHBoeXNpZF9tYXNrX3QgcGh5c19jcHVfcHJlc2VudF9tYXA7CjE0NDc0OiAjIDEz ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NtcC5oIiAyCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYXBpYy5oIiAxCjE0NDc0OiAjIDExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L2FwaWMuaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMQox NDQ3NDogIyAyOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIKMTQ0NzQ6ICMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hY3BpLmgiIDEKMTQ0NzQ6ICMgOSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9hY3BpLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hY3BpL3BkY19pbnRlbC5o IiAxCjE0NDc0OiAjIDEwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FjcGkuaCIgMgoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbnVtYS5oIiAxCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaCIgMQoxNDQ3NDogIyA4NSAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS90b3BvbG9neS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG51bWFfbm9kZV9pZCh2b2lkKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludCBlYXJseV9jcHVfdG9fbm9kZShpbnQgY3B1KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldHVwX25v ZGVfdG9fY3B1bWFza19tYXAodm9pZCkgeyB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy90b3BvbG9neS5oIiAxCjE0NDc0OiAjIDEwNCAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90b3BvbG9neS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X2NvcmVncm91cF9tYXNrKGludCBjcHUpOwoxNDQ3 NDogIyAxMTggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaCIKMTQ0NzQ6IGV4dGVy biB1bnNpZ25lZCBpbnQgX19tYXhfbG9naWNhbF9wYWNrYWdlczsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gdW5zaWduZWQgaW50IF9fbWF4X2RpZV9wZXJfcGFja2FnZTsKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgaW50IHRvcG9sb2d5X21heF9kaWVfcGVyX3BhY2thZ2Uodm9pZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gX19tYXhfZGllX3Blcl9wYWNrYWdlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gaW50IF9fbWF4X3NtdF90aHJlYWRzOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdG9wb2xv Z3lfbWF4X3NtdF90aHJlYWRzKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fbWF4X3Nt dF90aHJlYWRzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBpbnQgdG9wb2xvZ3lfdXBkYXRlX3Bh Y2thZ2VfbWFwKHVuc2lnbmVkIGludCBhcGljaWQsIHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDog aW50IHRvcG9sb2d5X3VwZGF0ZV9kaWVfbWFwKHVuc2lnbmVkIGludCBkaWVpZCwgdW5zaWduZWQg aW50IGNwdSk7CjE0NDc0OiBpbnQgdG9wb2xvZ3lfcGh5c190b19sb2dpY2FsX3BrZyh1bnNpZ25l ZCBpbnQgcGtnKTsKMTQ0NzQ6IGludCB0b3BvbG9neV9waHlzX3RvX2xvZ2ljYWxfZGllKHVuc2ln bmVkIGludCBkaWUsIHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDogYm9vbCB0b3BvbG9neV9pc19w cmltYXJ5X3RocmVhZCh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IGJvb2wgdG9wb2xvZ3lfc210 X3N1cHBvcnRlZCh2b2lkKTsKMTQ0NzQ6ICMgMTU2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Rv cG9sb2d5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hfZml4X3BoeXNfcGFja2FnZV9pZChpbnQgbnVtLCB1 MzIgc2xvdCkKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBjaV9idXM7 CjE0NDc0OiBpbnQgeDg2X3BjaV9yb290X2J1c19ub2RlKGludCBidXMpOwoxNDQ3NDogdm9pZCB4 ODZfcGNpX3Jvb3RfYnVzX3Jlc291cmNlcyhpbnQgYnVzLCBzdHJ1Y3QgbGlzdF9oZWFkICpyZXNv dXJjZXMpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCB4ODZfdG9wb2xvZ3lfdXBkYXRlOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIi4ucmVhZF9tb3N0bHkiKSkpIF9fdHlwZW9mX18o aW50KSBzY2hlZF9jb3JlX3ByaW9yaXR5OwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGludCBfX2F0 dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRhdGEuLnJlYWRfbW9zdGx5IikpKSBzeXNjdGxfc2No ZWRfaXRtdF9lbmFibGVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc2NoZWRfc2V0X2l0 bXRfY29yZV9wcmlvKGludCBwcmlvLCBpbnQgY29yZV9jcHUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGludCBzY2hlZF9zZXRfaXRtdF9zdXBwb3J0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgc2NoZWRfY2xlYXJfaXRtdF9zdXBwb3J0KHZvaWQpOwoxNDQ3NDogIyA4ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL251bWEuaCIgMgoxNDQ3NDogIyA0NSAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9udW1hLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldF9hcGljaWRfdG9fbm9kZShpbnQgYXBpY2lk LCBzMTYgbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG51bWFfY3B1 X25vZGUoaW50IGNwdSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKC0xKTsKMTQ0NzQ6IH0KMTQ0 NzQ6ICMgNjYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbnVtYS5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBudW1h X3NldF9ub2RlKGludCBjcHUsIGludCBub2RlKSB7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbnVtYV9jbGVhcl9u b2RlKGludCBjcHUpIHsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbml0X2NwdV90b19ub2RlKHZvaWQpIHsgfQox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBudW1hX2FkZF9jcHUoaW50IGNwdSkgeyB9CjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG51bWFfcmVt b3ZlX2NwdShpbnQgY3B1KSB7IH0KMTQ0NzQ6ICMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v YWNwaS5oIiAyCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZml4bWFwLmgiIDEK MTQ0NzQ6ICMgMTMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYWNwaS5oIiAyCjE0NDc0OiAjIDIz ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FjcGkuaCIKMTQ0NzQ6IGV4dGVybiBpbnQgYWNwaV9s YXBpYzsKMTQ0NzQ6IGV4dGVybiBpbnQgYWNwaV9pb2FwaWM7CjE0NDc0OiBleHRlcm4gaW50IGFj cGlfbm9pcnE7CjE0NDc0OiBleHRlcm4gaW50IGFjcGlfc3RyaWN0OwoxNDQ3NDogZXh0ZXJuIGlu dCBhY3BpX2Rpc2FibGVkOwoxNDQ3NDogZXh0ZXJuIGludCBhY3BpX3BjaV9kaXNhYmxlZDsKMTQ0 NzQ6IGV4dGVybiBpbnQgYWNwaV9za2lwX3RpbWVyX292ZXJyaWRlOwoxNDQ3NDogZXh0ZXJuIGlu dCBhY3BpX3VzZV90aW1lcl9vdmVycmlkZTsKMTQ0NzQ6IGV4dGVybiBpbnQgYWNwaV9maXhfcGlu Ml9wb2xhcml0eTsKMTQ0NzQ6IGV4dGVybiBpbnQgYWNwaV9kaXNhYmxlX2NtY2ZmOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdTggYWNwaV9zY2lfZmxhZ3M7CjE0NDc0OiBleHRlcm4gdTMyIGFjcGlf c2NpX292ZXJyaWRlX2dzaTsKMTQ0NzQ6IHZvaWQgYWNwaV9waWNfc2NpX3NldF90cmlnZ2VyKHVu c2lnbmVkIGludCwgdTE2KTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRldmljZTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGludCAoKl9fYWNwaV9yZWdpc3Rlcl9nc2kpKHN0cnVjdCBkZXZpY2UgKmRl diwgdTMyIGdzaSwKMTQ0NzQ6ICAgICAgIGludCB0cmlnZ2VyLCBpbnQgcG9sYXJpdHkpOwoxNDQ3 NDogZXh0ZXJuIHZvaWQgKCpfX2FjcGlfdW5yZWdpc3Rlcl9nc2kpKHUzMiBnc2kpOwoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGRpc2FibGVfYWNwaSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIGFjcGlfZGlz YWJsZWQgPSAxOwoxNDQ3NDogIGFjcGlfcGNpX2Rpc2FibGVkID0gMTsKMTQ0NzQ6ICBhY3BpX25v aXJxID0gMTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBhY3BpX2dzaV90b19p cnEodTMyIGdzaSwgdW5zaWduZWQgaW50ICppcnEpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFjcGlf bm9pcnFfc2V0KHZvaWQpIHsgYWNwaV9ub2lycSA9IDE7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYWNwaV9kaXNh YmxlX3BjaSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIGFjcGlfcGNpX2Rpc2FibGVkID0gMTsKMTQ0 NzQ6ICBhY3BpX25vaXJxX3NldCgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgKCphY3BpX3N1c3BlbmRfbG93bGV2ZWwpKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHVuc2lnbmVkIGxvbmcgYWNwaV9nZXRfd2FrZXVwX2FkZHJlc3Modm9pZCk7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBhY3BpX3Byb2Nl c3Nvcl9jc3RhdGVfY2hlY2sodW5zaWduZWQgaW50IG1heF9jc3RhdGUpCjE0NDc0OiB7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaWYgKGJv b3RfY3B1X2RhdGEueDg2ID09IDB4MEYgJiYKMTQ0NzQ6ICAgICAgYm9vdF9jcHVfZGF0YS54ODZf dmVuZG9yID09IDIgJiYKMTQ0NzQ6ICAgICAgYm9vdF9jcHVfZGF0YS54ODZfbW9kZWwgPD0gMHgw NSAmJgoxNDQ3NDogICAgICBib290X2NwdV9kYXRhLng4Nl9zdGVwcGluZyA8IDB4MEEpCjE0NDc0 OiAgIHJldHVybiAxOwoxNDQ3NDogIGVsc2UgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcCgoMTkq MzIgKyAoNCkpKSAmJiAoICgoKCgxOSozMiArICg0KSkpPj41KT09KDApICYmICgxVUw8PCgoKDE5 KjMyICsgKDQpKSkmMzEpICYgKCgxPDwoKCAwKjMyKyAwKSAmIDMxKSl8MHwoMTw8KCggMCozMisg NSkgJiAzMSkpfCgxPDwoKCAwKjMyKyA2KSAmIDMxKSl8ICgxPDwoKCAwKjMyKyA4KSAmIDMxKSl8 MHwoMTw8KCggMCozMisyNCkgJiAzMSkpfCgxPDwoKCAwKjMyKzE1KSAmIDMxKSl8ICgxPDwoKCAw KjMyKzI1KSAmIDMxKSl8KDE8PCgoIDAqMzIrMjYpICYgMzEpKSkgKSkgfHwgKCgoKDE5KjMyICsg KDQpKSk+PjUpPT0oMSkgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAoKDE8PCgoIDEq MzIrMjkpICYgMzEpKXwwKSApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+NSk9PSgyKSAmJiAoMVVM PDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0o MykgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAoKDE8PCgoIDMqMzIrMjApICYgMzEp KSkgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oNCkgJiYgKDFVTDw8KCgoMTkqMzIgKyAo NCkpKSYzMSkgJiAoMCkgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oNSkgJiYgKDFVTDw8 KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09KDYp ICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEpICYgMCApKSB8fCAoKCgoMTkqMzIgKyAoNCkp KT4+NSk9PSg3KSAmJiAoMVVMPDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5 KjMyICsgKDQpKSk+PjUpPT0oOCkgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkp IHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09KDkpICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkm MzEpICYgMCApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+NSk9PSgxMCkgJiYgKDFVTDw8KCgoMTkq MzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09KDExKSAmJiAo MVVMPDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUp PT0oMTIpICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEpICYgMCApKSB8fCAoKCgoMTkqMzIg KyAoNCkpKT4+NSk9PSgxMykgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8 ICgoKCgxOSozMiArICg0KSkpPj41KT09KDE0KSAmJiAoMVVMPDwoKCgxOSozMiArICg0KSkpJjMx KSAmIDAgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oMTUpICYmICgxVUw8PCgoKDE5KjMy ICsgKDQpKSkmMzEpICYgMCApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+NSk9PSgxNikgJiYgKDFV TDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09 KDE3KSAmJiAoMVVMPDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMyICsg KDQpKSk+PjUpPT0oMTgpICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEpICYgMCApKSB8fCAo KGludCkoc2l6ZW9mKHN0cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0pKSkgfHwgKChpbnQp KHNpemVvZihzdHJ1Y3QgeyBpbnQ6KC0hISgxOSAhPSAxOSkpOyB9KSkpKSA/IDEgOiB0ZXN0X2Jp dCgoMTkqMzIgKyAoNCkpLCAodW5zaWduZWQgbG9uZyAqKSgoJmJvb3RfY3B1X2RhdGEpLT54ODZf Y2FwYWJpbGl0eSkpKSkKMTQ0NzQ6ICAgcmV0dXJuIDE7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICBy ZXR1cm4gbWF4X2NzdGF0ZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBhcmNoX2hhc19h Y3BpX3BkYyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBjcHVpbmZvX3g4NiAqYyA9ICYo Kih7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJihjcHVfaW5mbykp ICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsgfSB3aGlsZSAoMCk7ICh7IHVu c2lnbmVkIGxvbmcgX19wdHI7IF9fYXNtX18gKCIiIDogIj1yIihfX3B0cikgOiAiMCIoKHR5cGVv ZigqKCgmKGNwdV9pbmZvKSkpKSAqKSgoJihjcHVfaW5mbykpKSkpOyAodHlwZW9mKCh0eXBlb2Yo KigoJihjcHVfaW5mbykpKSkgKikoKCYoY3B1X2luZm8pKSkpKSAoX19wdHIgKyAoKChfX3Blcl9j cHVfb2Zmc2V0WygwKV0pKSkpOyB9KTsgfSkpOwoxNDQ3NDogIHJldHVybiAoYy0+eDg2X3ZlbmRv ciA9PSAwIHx8CjE0NDc0OiAgIGMtPng4Nl92ZW5kb3IgPT0gNSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgYXJjaF9hY3BpX3NldF9wZGNfYml0cyh1MzIgKmJ1ZikKMTQ0NzQ6IHsKMTQ0 NzQ6ICBzdHJ1Y3QgY3B1aW5mb194ODYgKmMgPSAmKCooeyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBw X3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X2luZm8pKSArIDApKSgodm9pZCAqKTApOyAodm9pZClf X3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25lZCBsb25nIF9fcHRyOyBfX2FzbV9f ICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigoJihjcHVfaW5mbykpKSkgKikoKCYo Y3B1X2luZm8pKSkpKTsgKHR5cGVvZigodHlwZW9mKCooKCYoY3B1X2luZm8pKSkpICopKCgmKGNw dV9pbmZvKSkpKSkgKF9fcHRyICsgKCgoX19wZXJfY3B1X29mZnNldFsoMCldKSkpKTsgfSk7IH0p KTsKMTQ0NzQ6IAoxNDQ3NDogIGJ1ZlsyXSB8PSAoKDB4MDAxMCkgfCAoMHgwMDA4KSB8ICgweDAw MDIpIHwgKDB4MDEwMCkgfCAoMHgwMjAwKSk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRp bl9jb25zdGFudF9wKCggNCozMisgNykpICYmICggKCgoKCA0KjMyKyA3KSk+PjUpPT0oMCkgJiYg KDFVTDw8KCgoIDQqMzIrIDcpKSYzMSkgJiAoKDE8PCgoIDAqMzIrIDApICYgMzEpKXwwfCgxPDwo KCAwKjMyKyA1KSAmIDMxKSl8KDE8PCgoIDAqMzIrIDYpICYgMzEpKXwgKDE8PCgoIDAqMzIrIDgp ICYgMzEpKXwwfCgxPDwoKCAwKjMyKzI0KSAmIDMxKSl8KDE8PCgoIDAqMzIrMTUpICYgMzEpKXwg KDE8PCgoIDAqMzIrMjUpICYgMzEpKXwoMTw8KCggMCozMisyNikgJiAzMSkpKSApKSB8fCAoKCgo IDQqMzIrIDcpKT4+NSk9PSgxKSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmICgoMTw8KCgg MSozMisyOSkgJiAzMSkpfDApICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDIpICYmICgxVUw8 PCgoKCA0KjMyKyA3KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSgzKSAmJiAo MVVMPDwoKCggNCozMisgNykpJjMxKSAmICgoMTw8KCggMyozMisyMCkgJiAzMSkpKSApKSB8fCAo KCgoIDQqMzIrIDcpKT4+NSk9PSg0KSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmICgwKSAp KSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSg1KSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAm IDAgKSkgfHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oNikgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYz MSkgJiAwICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDcpICYmICgxVUw8PCgoKCA0KjMyKyA3 KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSg4KSAmJiAoMVVMPDwoKCggNCoz MisgNykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oOSkgJiYgKDFVTDw8KCgo IDQqMzIrIDcpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDEwKSAmJiAoMVVM PDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oMTEpICYm ICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSgx MikgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgNykpPj41 KT09KDEzKSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyA3 KSk+PjUpPT0oMTQpICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgMCApKSB8fCAoKCgoIDQq MzIrIDcpKT4+NSk9PSgxNSkgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYzMSkgJiAwICkpIHx8ICgo KCggNCozMisgNykpPj41KT09KDE2KSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkg fHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oMTcpICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYg MCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSgxOCkgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYz MSkgJiAwICkpIHx8ICgoaW50KShzaXplb2Yoc3RydWN0IHsgaW50OigtISEoMTkgIT0gMTkpKTsg fSkpKSB8fCAoKGludCkoc2l6ZW9mKHN0cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0pKSkp ID8gMSA6IHRlc3RfYml0KCggNCozMisgNyksICh1bnNpZ25lZCBsb25nICopKChjKS0+eDg2X2Nh cGFiaWxpdHkpKSkpCjE0NDc0OiAgIGJ1ZlsyXSB8PSAoKDB4MDAwOCkgfCAoMHgwMDAyKSB8ICgw eDAwMjApIHwgKDB4MDgwMCkgfCAoMHgwMDAxKSk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoKF9fYnVp bHRpbl9jb25zdGFudF9wKCggMCozMisyMikpICYmICggKCgoKCAwKjMyKzIyKSk+PjUpPT0oMCkg JiYgKDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkgJiAoKDE8PCgoIDAqMzIrIDApICYgMzEpKXwwfCgx PDwoKCAwKjMyKyA1KSAmIDMxKSl8KDE8PCgoIDAqMzIrIDYpICYgMzEpKXwgKDE8PCgoIDAqMzIr IDgpICYgMzEpKXwwfCgxPDwoKCAwKjMyKzI0KSAmIDMxKSl8KDE8PCgoIDAqMzIrMTUpICYgMzEp KXwgKDE8PCgoIDAqMzIrMjUpICYgMzEpKXwoMTw8KCggMCozMisyNikgJiAzMSkpKSApKSB8fCAo KCgoIDAqMzIrMjIpKT4+NSk9PSgxKSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmICgoMTw8 KCggMSozMisyOSkgJiAzMSkpfDApICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDIpICYmICgx VUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSgzKSAm JiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmICgoMTw8KCggMyozMisyMCkgJiAzMSkpKSApKSB8 fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSg0KSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmICgw KSApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSg1KSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMx KSAmIDAgKSkgfHwgKCgoKCAwKjMyKzIyKSk+PjUpPT0oNikgJiYgKDFVTDw8KCgoIDAqMzIrMjIp KSYzMSkgJiAwICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDcpICYmICgxVUw8PCgoKCAwKjMy KzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSg4KSAmJiAoMVVMPDwoKCgg MCozMisyMikpJjMxKSAmIDAgKSkgfHwgKCgoKCAwKjMyKzIyKSk+PjUpPT0oOSkgJiYgKDFVTDw8 KCgoIDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDEwKSAmJiAo MVVMPDwoKCggMCozMisyMikpJjMxKSAmIDAgKSkgfHwgKCgoKCAwKjMyKzIyKSk+PjUpPT0oMTEp ICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9 PSgxMikgJiYgKDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8ICgoKCggMCozMisyMikp Pj41KT09KDEzKSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmIDAgKSkgfHwgKCgoKCAwKjMy KzIyKSk+PjUpPT0oMTQpICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgMCApKSB8fCAoKCgo IDAqMzIrMjIpKT4+NSk9PSgxNSkgJiYgKDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8 ICgoKCggMCozMisyMikpPj41KT09KDE2KSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmIDAg KSkgfHwgKCgoKCAwKjMyKzIyKSk+PjUpPT0oMTcpICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEp ICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSgxOCkgJiYgKDFVTDw8KCgoIDAqMzIrMjIp KSYzMSkgJiAwICkpIHx8ICgoaW50KShzaXplb2Yoc3RydWN0IHsgaW50OigtISEoMTkgIT0gMTkp KTsgfSkpKSB8fCAoKGludCkoc2l6ZW9mKHN0cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0p KSkpID8gMSA6IHRlc3RfYml0KCggMCozMisyMiksICh1bnNpZ25lZCBsb25nICopKChjKS0+eDg2 X2NhcGFiaWxpdHkpKSkpCjE0NDc0OiAgIGJ1ZlsyXSB8PSAoMHgwMDA0KTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGlmICghKF9fYnVpbHRpbl9jb25zdGFudF9wKCgg NCozMisgMykpICYmICggKCgoKCA0KjMyKyAzKSk+PjUpPT0oMCkgJiYgKDFVTDw8KCgoIDQqMzIr IDMpKSYzMSkgJiAoKDE8PCgoIDAqMzIrIDApICYgMzEpKXwwfCgxPDwoKCAwKjMyKyA1KSAmIDMx KSl8KDE8PCgoIDAqMzIrIDYpICYgMzEpKXwgKDE8PCgoIDAqMzIrIDgpICYgMzEpKXwwfCgxPDwo KCAwKjMyKzI0KSAmIDMxKSl8KDE8PCgoIDAqMzIrMTUpICYgMzEpKXwgKDE8PCgoIDAqMzIrMjUp ICYgMzEpKXwoMTw8KCggMCozMisyNikgJiAzMSkpKSApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9 PSgxKSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmICgoMTw8KCggMSozMisyOSkgJiAzMSkp fDApICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDIpICYmICgxVUw8PCgoKCA0KjMyKyAzKSkm MzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSgzKSAmJiAoMVVMPDwoKCggNCozMisg MykpJjMxKSAmICgoMTw8KCggMyozMisyMCkgJiAzMSkpKSApKSB8fCAoKCgoIDQqMzIrIDMpKT4+ NSk9PSg0KSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmICgwKSApKSB8fCAoKCgoIDQqMzIr IDMpKT4+NSk9PSg1KSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0 KjMyKyAzKSk+PjUpPT0oNikgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgo KCggNCozMisgMykpPj41KT09KDcpICYmICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgMCApKSB8 fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSg4KSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmIDAg KSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUpPT0oOSkgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkg JiAwICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDEwKSAmJiAoMVVMPDwoKCggNCozMisgMykp JjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUpPT0oMTEpICYmICgxVUw8PCgoKCA0KjMy KyAzKSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSgxMikgJiYgKDFVTDw8KCgo IDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDEzKSAmJiAoMVVM PDwoKCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUpPT0oMTQpICYm ICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSgx NSkgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgMykpPj41 KT09KDE2KSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyAz KSk+PjUpPT0oMTcpICYmICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgMCApKSB8fCAoKCgoIDQq MzIrIDMpKT4+NSk9PSgxOCkgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgo aW50KShzaXplb2Yoc3RydWN0IHsgaW50OigtISEoMTkgIT0gMTkpKTsgfSkpKSB8fCAoKGludCko c2l6ZW9mKHN0cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0pKSkpID8gMSA6IHRlc3RfYml0 KCggNCozMisgMyksICh1bnNpZ25lZCBsb25nICopKChjKS0+eDg2X2NhcGFiaWxpdHkpKSkpCjE0 NDc0OiAgIGJ1ZlsyXSAmPSB+KCgweDAyMDApKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCBhY3BpX2hhc19jcHVfaW5fbWFkdCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhIWFj cGlfbGFwaWM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhY3BpX2FyY2hf c2V0X3Jvb3RfcG9pbnRlcih1NjQgYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICB4ODZfaW5pdC5hY3Bp LnNldF9yb290X3BvaW50ZXIoYWRkcik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dTY0IGFjcGlfYXJjaF9nZXRfcm9vdF9wb2ludGVyKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIHg4Nl9pbml0LmFjcGkuZ2V0X3Jvb3RfcG9pbnRlcigpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiB2b2lkIGFjcGlfZ2VuZXJpY19yZWR1Y2VkX2h3X2luaXQodm9pZCk7CjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgeDg2X2RlZmF1bHRfc2V0X3Jvb3RfcG9pbnRlcih1NjQgYWRkcik7CjE0NDc0OiB1 NjQgeDg2X2RlZmF1bHRfZ2V0X3Jvb3RfcG9pbnRlcih2b2lkKTsKMTQ0NzQ6ICMgMTY1ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL2FjcGkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBncHJvdF90IGFyY2hfYXBlaV9nZXRf bWVtX2F0dHJpYnV0ZShwaHlzX2FkZHJfdCBhZGRyKQoxNDQ3NDogewoxNDQ3NDogIyAxODAgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vYWNwaS5oIgoxNDQ3NDogIHJldHVybiAoKHBncHJvdF90KSB7 ICgoKCgoKHB0ZXZhbF90KSgxKSkgPDwgMCl8KCgocHRldmFsX3QpKDEpKSA8PCAxKXwgMHwoKChw dGV2YWxfdCkoMSkpIDw8IDUpfCgoKHB0ZXZhbF90KSgxKSkgPDwgNjMpfCgoKHB0ZXZhbF90KSgx KSkgPDwgNil8IDB8KCgocHRldmFsX3QpKDEpKSA8PCA4KSkgfCAwKSAmIF9fZGVmYXVsdF9rZXJu ZWxfcHRlX21hc2spIH0gKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzAgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vZml4bWFwLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3ZzeXNjYWxs LmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB2c3lzY2Fs bF9udW0gewoxNDQ3NDogIF9fTlJfdmdldHRpbWVvZmRheSwKMTQ0NzQ6ICBfX05SX3Z0aW1lLAox NDQ3NDogIF9fTlJfdmdldGNwdSwKMTQ0NzQ6IH07CjE0NDc0OiAjIDM3ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCjE0NDc0OiAjIDc1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L2ZpeG1hcC5oIgoxNDQ3NDogZW51bSBmaXhlZF9hZGRyZXNzZXMgewoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgVlNZU0NBTExfUEFHRSA9ICgoKCgoKCgtMTBVTCA8PCAy MCkgKyAoKDFVTCkgPDwgMTIpKS0xKSB8ICgoX190eXBlb2ZfXygoLTEwVUwgPDwgMjApICsgKCgx VUwpIDw8IDEyKSkpKCgxPDwyMSktMSkpKSsxKSAtICgoMVVMKSA8PCAxMikpIC0gKC0xMFVMIDw8 IDIwKSkgPj4gMTIsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIEZJWF9EQkdQX0JBU0UsCjE0NDc0 OiAgRklYX0VBUkxZQ09OX01FTV9CQVNFLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgRklYX0FQSUNfQkFTRSwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRklYX0lPX0FQ SUNfQkFTRV8wLAoxNDQ3NDogIEZJWF9JT19BUElDX0JBU0VfRU5EID0gRklYX0lPX0FQSUNfQkFT RV8wICsgMTI4IC0gMSwKMTQ0NzQ6ICMgMTAzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2ZpeG1h cC5oIgoxNDQ3NDogIEZJWF9QQVJBVklSVF9CT09UTUFQLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRklYX0FQRUlfR0hFU19J UlEsCjE0NDc0OiAgRklYX0FQRUlfR0hFU19OTUksCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9f ZW5kX29mX3Blcm1hbmVudF9maXhlZF9hZGRyZXNzZXMsCjE0NDc0OiAjIDEyNyAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIKMTQ0NzQ6ICBGSVhfQlRNQVBfRU5EID0KMTQ0NzQ6ICAg KF9fZW5kX29mX3Blcm1hbmVudF9maXhlZF9hZGRyZXNzZXMgXgoxNDQ3NDogICAgKF9fZW5kX29m X3Blcm1hbmVudF9maXhlZF9hZGRyZXNzZXMgKyAoNjQgKiA4KSAtIDEpKSAmCjE0NDc0OiAgIC01 MTIKMTQ0NzQ6ICAgPyBfX2VuZF9vZl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2VzICsgKDY0ICog OCkgLQoxNDQ3NDogICAgIChfX2VuZF9vZl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2VzICYgKCg2 NCAqIDgpIC0gMSkpCjE0NDc0OiAgIDogX19lbmRfb2ZfcGVybWFuZW50X2ZpeGVkX2FkZHJlc3Nl cywKMTQ0NzQ6ICBGSVhfQlRNQVBfQkVHSU4gPSBGSVhfQlRNQVBfRU5EICsgKDY0ICogOCkgLSAx LAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IF9fZW5kX29mX2ZpeGVkX2FkZHJlc3NlcwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gdm9pZCByZXNlcnZlX3RvcF9hZGRyZXNzKHVuc2lnbmVkIGxvbmcgcmVzZXJ2ZSk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gaW50IGZpeG1hcHNfc2V0OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gcHRlX3QgKmttYXBf cHRlOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gcHRlX3QgKnBrbWFwX3BhZ2VfdGFibGU7CjE0NDc0 OiAKMTQ0NzQ6IHZvaWQgX19uYXRpdmVfc2V0X2ZpeG1hcChlbnVtIGZpeGVkX2FkZHJlc3NlcyBp ZHgsIHB0ZV90IHB0ZSk7CjE0NDc0OiB2b2lkIG5hdGl2ZV9zZXRfZml4bWFwKHVuc2lnbmVkIGlk eCwKMTQ0NzQ6ICAgICAgICAgIHBoeXNfYWRkcl90IHBoeXMsIHBncHJvdF90IGZsYWdzKTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fc2V0X2ZpeG1hcChlbnVtIGZpeGVkX2FkZHJlc3Nl cyBpZHgsCjE0NDc0OiAgICAgcGh5c19hZGRyX3QgcGh5cywgcGdwcm90X3QgZmxhZ3MpCjE0NDc0 OiB7CjE0NDc0OiAgbmF0aXZlX3NldF9maXhtYXAoaWR4LCBwaHlzLCBmbGFncyk7CjE0NDc0OiB9 CjE0NDc0OiAjIDE4MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIKMTQ0NzQ6IHZv aWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRl X18oKF9fY29sZF9fKSkgKmVhcmx5X21lbXJlbWFwX2VuY3J5cHRlZChyZXNvdXJjZV9zaXplX3Qg cGh5c19hZGRyLAoxNDQ3NDogICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CjE0NDc0OiB2 b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbGRfXykpICplYXJseV9tZW1yZW1hcF9lbmNyeXB0ZWRfd3AocmVzb3VyY2Vfc2l6 ZV90IHBoeXNfYWRkciwKMTQ0NzQ6ICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CjE0NDc0OiB2 b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbGRfXykpICplYXJseV9tZW1yZW1hcF9kZWNyeXB0ZWQocmVzb3VyY2Vfc2l6ZV90 IHBoeXNfYWRkciwKMTQ0NzQ6ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOwoxNDQ3NDog dm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1 dGVfXygoX19jb2xkX18pKSAqZWFybHlfbWVtcmVtYXBfZGVjcnlwdGVkX3dwKHJlc291cmNlX3Np emVfdCBwaHlzX2FkZHIsCjE0NDc0OiAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOwoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9maXhtYXAuaCIgMQoxNDQ3NDogIyAz MCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2ZpeG1hcC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB1bnNpZ25lZCBsb25nIGZpeF90b192aXJ0KGNvbnN0IHVuc2ln bmVkIGludCBpZHgpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0 aW1lX2Fzc2VydF8zMih2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIkJVSUxEX0JVR19P TiBmYWlsZWQ6ICIgImlkeCA+PSBfX2VuZF9vZl9maXhlZF9hZGRyZXNzZXMiKSkpOyBpZiAoISgh KGlkeCA+PSBfX2VuZF9vZl9maXhlZF9hZGRyZXNzZXMpKSkgX19jb21waWxldGltZV9hc3NlcnRf MzIoKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgcmV0dXJuICgoKCgoKCgtMTBVTCA8PCAyMCkgKyAo KDFVTCkgPDwgMTIpKS0xKSB8ICgoX190eXBlb2ZfXygoLTEwVUwgPDwgMjApICsgKCgxVUwpIDw8 IDEyKSkpKCgxPDwyMSktMSkpKSsxKSAtICgoMVVMKSA8PCAxMikpIC0gKChpZHgpIDw8IDEyKSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgdmlydF90b19maXgoY29uc3Qg dW5zaWduZWQgbG9uZyB2YWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IGlmIChfX2J1aWx0aW5f ZXhwZWN0KCEhKHZhZGRyID49ICgoKCgoKC0xMFVMIDw8IDIwKSArICgoMVVMKSA8PCAxMikpLTEp IHwgKChfX3R5cGVvZl9fKCgtMTBVTCA8PCAyMCkgKyAoKDFVTCkgPDwgMTIpKSkoKDE8PDIxKS0x KSkpKzEpIC0gKCgxVUwpIDw8IDEyKSkgfHwgdmFkZHIgPCAoKCgoKCgoLTEwVUwgPDwgMjApICsg KCgxVUwpIDw8IDEyKSktMSkgfCAoKF9fdHlwZW9mX18oKC0xMFVMIDw8IDIwKSArICgoMVVMKSA8 PCAxMikpKSgoMTw8MjEpLTEpKSkrMSkgLSAoKDFVTCkgPDwgMTIpKSAtIChfX2VuZF9vZl9wZXJt YW5lbnRfZml4ZWRfYWRkcmVzc2VzIDw8IDEyKSkpLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGlu ZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBf X2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1 Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVn X2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0 LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5w b3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9hc20tZ2VuZXJpYy9maXhtYXAuaCIpLCAiaSIg KDM4KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAo MCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2Fy ZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQi IDogOiAiaSIgKDE3KSk7IH0pOyBhc20gdm9sYXRpbGUoIiIpOyBfX2J1aWx0aW5fdW5yZWFjaGFi bGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICByZXR1 cm4gKCgoKCgoKCgtMTBVTCA8PCAyMCkgKyAoKDFVTCkgPDwgMTIpKS0xKSB8ICgoX190eXBlb2Zf XygoLTEwVUwgPDwgMjApICsgKCgxVUwpIDw8IDEyKSkpKCgxPDwyMSktMSkpKSsxKSAtICgoMVVM KSA8PCAxMikpIC0gKCh2YWRkcikmKH4oKCgxVUwpIDw8IDEyKS0xKSkpKSA+PiAxMik7CjE0NDc0 OiB9CjE0NDc0OiAjIDE5MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMgoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIF9fZWFybHlfc2V0X2ZpeG1h cChlbnVtIGZpeGVkX2FkZHJlc3NlcyBpZHgsCjE0NDc0OiAgICBwaHlzX2FkZHJfdCBwaHlzLCBw Z3Byb3RfdCBmbGFncyk7CjE0NDc0OiAjIDEyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FwaWMu aCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9o YXJkaXJxLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHsKMTQ0NzQ6ICB1MTYgX19zb2Z0aXJxX3BlbmRpbmc7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IF9fbm1pX2NvdW50 OwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IGFwaWNfdGltZXJfaXJxczsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgaXJxX3NwdXJpb3VzX2NvdW50OwoxNDQ3NDogIHVuc2lnbmVkIGludCBpY3Jf cmVhZF9yZXRyeV9jb3VudDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IGt2 bV9wb3N0ZWRfaW50cl9pcGlzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBrdm1fcG9zdGVkX2ludHJf d2FrZXVwX2lwaXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGt2bV9wb3N0ZWRfaW50cl9uZXN0ZWRf aXBpczsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCB4ODZfcGxhdGZvcm1faXBpczsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgYXBpY19wZXJmX2lycXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGFw aWNfaXJxX3dvcmtfaXJxczsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBpcnFfcmVzY2hl ZF9jb3VudDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaXJxX2NhbGxfY291bnQ7CjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgaXJxX3RsYl9jb3VudDsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVk IGludCBpcnFfdGhlcm1hbF9jb3VudDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQg aW50IGlycV90aHJlc2hvbGRfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVk IGludCBpcnFfZGVmZXJyZWRfZXJyb3JfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVu c2lnbmVkIGludCBpcnFfaHZfY2FsbGJhY2tfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IHVuc2lnbmVkIGludCBpcnFfaHZfcmVlbmxpZ2h0ZW5tZW50X2NvdW50OwoxNDQ3NDogIHVuc2ln bmVkIGludCBoeXBlcnZfc3RpbWVyMF9jb3VudDsKMTQ0NzQ6IAoxNDQ3NDogfSBfX2F0dHJpYnV0 ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikpKSkpIGlycV9jcHVzdGF0X3Q7CjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiIikpKSBf X3R5cGVvZl9fKGlycV9jcHVzdGF0X3QpIGlycV9zdGF0IF9fYXR0cmlidXRlX18oKF9fYWxpZ25l ZF9fKCgxIDw8ICg2KSkpKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIHZvaWQgYWNrX2JhZF9pcnEodW5zaWduZWQgaW50IGlycSk7CjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiB1NjQgYXJjaF9pcnFfc3RhdF9jcHUodW5zaWduZWQgaW50IGNwdSk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHU2NCBhcmNoX2lycV9zdGF0KHZvaWQpOwox NDQ3NDogIyA4MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9oYXJkaXJxLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGt2bV9zZXRfY3B1X2wxdGZfZmx1c2hfbDFkKHZvaWQpIHsgfQoxNDQ3NDogIyAxNSAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiIDIKMTQ0NzQ6ICMgNDUgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vYXBpYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBnZW5lcmljX2FwaWNfcHJvYmUodm9pZCkKMTQ0NzQ6 IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGludCBhcGljX3ZlcmJvc2l0eTsKMTQ0NzQ6IGV4dGVybiBpbnQgbG9jYWxfYXBpY190aW1lcl9j Ml9vazsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBkaXNhYmxlX2FwaWM7CjE0NDc0OiBleHRl cm4gdW5zaWduZWQgaW50IGxhcGljX3RpbWVyX3BlcmlvZDsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGVudW0gYXBpY19pbnRyX21vZGVfaWQgYXBpY19pbnRyX21vZGU7CjE0NDc0OiBlbnVtIGFwaWNf aW50cl9tb2RlX2lkIHsKMTQ0NzQ6ICBBUElDX1BJQywKMTQ0NzQ6ICBBUElDX1ZJUlRVQUxfV0lS RSwKMTQ0NzQ6ICBBUElDX1ZJUlRVQUxfV0lSRV9OT19DT05GSUcsCjE0NDc0OiAgQVBJQ19TWU1N RVRSSUNfSU8sCjE0NDc0OiAgQVBJQ19TWU1NRVRSSUNfSU9fTk9fUk9VVElORwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBfX2lucXVpcmVfcmVtb3RlX2FwaWMo aW50IGFwaWNpZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGRlZmF1bHRfaW5xdWlyZV9yZW1vdGVfYXBpYyhpbnQgYXBpY2lkKQox NDQ3NDogewoxNDQ3NDogIGlmIChhcGljX3ZlcmJvc2l0eSA+PSAyKQoxNDQ3NDogICBfX2lucXVp cmVfcmVtb3RlX2FwaWMoYXBpY2lkKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgODkgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYXBpYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBhcGljX2Zyb21fc21wX2NvbmZpZyh2b2lk KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBzbXBfZm91bmRfY29uZmlnICYmICFkaXNhYmxlX2Fw aWM7CjE0NDc0OiB9CjE0NDc0OiAjIDEwMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgi CjE0NDc0OiBleHRlcm4gaW50IHNldHVwX3Byb2ZpbGluZ190aW1lcih1bnNpZ25lZCBpbnQpOwox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIG5hdGl2ZV9hcGljX21lbV93cml0ZSh1MzIgcmVnLCB1MzIgdikK MTQ0NzQ6IHsKMTQ0NzQ6ICB2b2xhdGlsZSB1MzIgKmFkZHIgPSAodm9sYXRpbGUgdTMyICopKChm aXhfdG9fdmlydChGSVhfQVBJQ19CQVNFKSkgKyByZWcpOwoxNDQ3NDogCjE0NDc0OiAgYXNtIF9f aW5saW5lIHZvbGF0aWxlICgiIyBBTFQ6IG9sZG5zdHJcbiIgIjY2MTpcblx0IiAibW92bCAlMCwg JVAxIiAiXG42NjI6XG4iICIjIEFMVDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIi Zi0iIjY2NCIiMSIiZiIgIiktKCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIi MSIiZi0iIjY2NCIiMSIiZiIgIiktKCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpc biIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAt IC5cbiIgIiAubG9uZyAiICI2NjQiIjEiImYgLSAuXG4iICIgLndvcmQgIiAiKDE5KjMyICsgKDUp KSIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJm LSIiNjY0IiIxIiJmIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0 aW9uXG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCJcbiIgIiMg QUxUOiByZXBsYWNlbWVudCAiICIxIiAiXG4iICI2NjQiIjEiIjpcblx0IiAieGNoZ2wgJTAsICVQ MSIgIlxuIiAiNjY1IiIxIiAiOlxuIiAiLnBvcHNlY3Rpb25cbiIgOiAiPXIiICh2KSwgIj1tIiAo KmFkZHIpIDogImkiICgwKSwgIjAiICh2KSwgIm0iICgqYWRkcikpCjE0NDc0OiAKMTQ0NzQ6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHUzMiBuYXRpdmVfYXBpY19tZW1fcmVhZCh1MzIgcmVnKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiAqKCh2b2xhdGlsZSB1MzIgKikoKGZpeF90b192aXJ0KEZJWF9BUElDX0JBU0Up KSArIHJlZykpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBuYXRpdmVfYXBp Y193YWl0X2ljcl9pZGxlKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHUzMiBuYXRpdmVfc2FmZV9hcGlj X3dhaXRfaWNyX2lkbGUodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBuYXRpdmVfYXBpY19pY3Jf d3JpdGUodTMyIGxvdywgdTMyIGlkKTsKMTQ0NzQ6IGV4dGVybiB1NjQgbmF0aXZlX2FwaWNfaWNy X3JlYWQodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYXBpY19pc194MmFwaWNfZW5hYmxlZCh2 b2lkKQoxNDQ3NDogewoxNDQ3NDogIHU2NCBtc3I7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAocmRtc3Js X3NhZmUoMHgwMDAwMDAxYiwgJm1zcikpCjE0NDc0OiAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6ICBy ZXR1cm4gbXNyICYgKDFVTCA8PCAxMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2 b2lkIGVuYWJsZV9JUl94MmFwaWModm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZ2V0 X3BoeXNpY2FsX2Jyb2FkY2FzdCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBsYXBp Y19nZXRfbWF4bHZ0KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgY2xlYXJfbG9jYWxfQVBJQyh2 b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRpc2Nvbm5lY3RfYnNwX0FQSUMoaW50IHZpcnRfd2ly ZV9zZXR1cCk7CjE0NDc0OiBleHRlcm4gdm9pZCBkaXNhYmxlX2xvY2FsX0FQSUModm9pZCk7CjE0 NDc0OiBleHRlcm4gdm9pZCBhcGljX3NvZnRfZGlzYWJsZSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2 b2lkIGxhcGljX3NodXRkb3duKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgc3luY19BcmJfSURz KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgaW5pdF9ic3BfQVBJQyh2b2lkKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIGFwaWNfaW50cl9tb2RlX3NlbGVjdCh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lk IGFwaWNfaW50cl9tb2RlX2luaXQodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBpbml0X2FwaWNf bWFwcGluZ3Modm9pZCk7CjE0NDc0OiB2b2lkIHJlZ2lzdGVyX2xhcGljX2FkZHJlc3ModW5zaWdu ZWQgbG9uZyBhZGRyZXNzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNldHVwX2Jvb3RfQVBJQ19jbG9j ayh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNldHVwX3NlY29uZGFyeV9BUElDX2Nsb2NrKHZv aWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgbGFwaWNfdXBkYXRlX3RzY19mcmVxKHZvaWQpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludCBhcGljX2ZvcmNlX2VuYWJsZSh1bnNpZ25lZCBsb25nIGFk ZHIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIC0xOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBhcGljX2FwX3NldHVwKHZvaWQpOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQg YXBpY19pc19jbHVzdGVyZWRfYm94KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHNldHVwX0FQSUNf ZWlsdnQodTggbHZ0X29mZiwgdTggdmVjdG9yLCB1OCBtc2dfdHlwZSwgdTggbWFzayk7CjE0NDc0 OiBleHRlcm4gdm9pZCBsYXBpY19hc3NpZ25fc3lzdGVtX3ZlY3RvcnModm9pZCk7CjE0NDc0OiBl eHRlcm4gdm9pZCBsYXBpY19hc3NpZ25fbGVnYWN5X3ZlY3Rvcih1bnNpZ25lZCBpbnQgaXNhaXJx LCBib29sIHJlcGxhY2UpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgbGFwaWNfb25saW5lKHZvaWQpOwox NDQ3NDogZXh0ZXJuIHZvaWQgbGFwaWNfb2ZmbGluZSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiBib29s IGFwaWNfbmVlZHNfcGl0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBhcGljX3Nl bmRfSVBJX2FsbGJ1dHNlbGYodW5zaWduZWQgaW50IHZlY3Rvcik7CjE0NDc0OiAjIDI3MSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNoZWNrX3gyYXBpYyh2b2lk KSB7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgeDJhcGljX3NldHVwKHZvaWQpIHsgfQoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHgyYXBp Y19lbmFibGVkKHZvaWQpIHsgcmV0dXJuIDA7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaXJxX2RhdGE7CjE0NDc0OiAjIDI5MCAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiCjE0NDc0OiBzdHJ1Y3QgYXBpYyB7CjE0NDc0OiAKMTQ0 NzQ6ICB2b2lkICgqZW9pX3dyaXRlKSh1MzIgcmVnLCB1MzIgdik7CjE0NDc0OiAgdm9pZCAoKm5h dGl2ZV9lb2lfd3JpdGUpKHUzMiByZWcsIHUzMiB2KTsKMTQ0NzQ6ICB2b2lkICgqd3JpdGUpKHUz MiByZWcsIHUzMiB2KTsKMTQ0NzQ6ICB1MzIgKCpyZWFkKSh1MzIgcmVnKTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgdm9pZCAoKndhaXRfaWNyX2lkbGUpKHZvaWQpOwoxNDQ3NDogIHUzMiAoKnNh ZmVfd2FpdF9pY3JfaWRsZSkodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2VuZF9JUEkp KGludCBjcHUsIGludCB2ZWN0b3IpOwoxNDQ3NDogIHZvaWQgKCpzZW5kX0lQSV9tYXNrKShjb25z dCBzdHJ1Y3QgY3B1bWFzayAqbWFzaywgaW50IHZlY3Rvcik7CjE0NDc0OiAgdm9pZCAoKnNlbmRf SVBJX21hc2tfYWxsYnV0c2VsZikoY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1zaywgaW50IHZlYyk7 CjE0NDc0OiAgdm9pZCAoKnNlbmRfSVBJX2FsbGJ1dHNlbGYpKGludCB2ZWN0b3IpOwoxNDQ3NDog IHZvaWQgKCpzZW5kX0lQSV9hbGwpKGludCB2ZWN0b3IpOwoxNDQ3NDogIHZvaWQgKCpzZW5kX0lQ SV9zZWxmKShpbnQgdmVjdG9yKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTMyIGRlc3RfbG9n aWNhbDsKMTQ0NzQ6ICB1MzIgZGlzYWJsZV9lc3I7CjE0NDc0OiAgdTMyIGlycV9kZWxpdmVyeV9t b2RlOwoxNDQ3NDogIHUzMiBpcnFfZGVzdF9tb2RlOwoxNDQ3NDogCjE0NDc0OiAgdTMyICgqY2Fs Y19kZXN0X2FwaWNpZCkodW5zaWduZWQgaW50IGNwdSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IHU2NCAoKmljcl9yZWFkKSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqaWNyX3dyaXRlKSh1MzIgbG93 LCB1MzIgaGlnaCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKnByb2JlKSh2b2lkKTsK MTQ0NzQ6ICBpbnQgKCphY3BpX21hZHRfb2VtX2NoZWNrKShjaGFyICpvZW1faWQsIGNoYXIgKm9l bV90YWJsZV9pZCk7CjE0NDc0OiAgaW50ICgqYXBpY19pZF92YWxpZCkodTMyIGFwaWNpZCk7CjE0 NDc0OiAgaW50ICgqYXBpY19pZF9yZWdpc3RlcmVkKSh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogIGJv b2wgKCpjaGVja19hcGljaWRfdXNlZCkocGh5c2lkX21hc2tfdCAqbWFwLCBpbnQgYXBpY2lkKTsK MTQ0NzQ6ICB2b2lkICgqaW5pdF9hcGljX2xkcikodm9pZCk7CjE0NDc0OiAgdm9pZCAoKmlvYXBp Y19waHlzX2lkX21hcCkocGh5c2lkX21hc2tfdCAqcGh5c19tYXAsIHBoeXNpZF9tYXNrX3QgKnJl dG1hcCk7CjE0NDc0OiAgdm9pZCAoKnNldHVwX2FwaWNfcm91dGluZykodm9pZCk7CjE0NDc0OiAg aW50ICgqY3B1X3ByZXNlbnRfdG9fYXBpY2lkKShpbnQgbXBzX2NwdSk7CjE0NDc0OiAgdm9pZCAo KmFwaWNpZF90b19jcHVfcHJlc2VudCkoaW50IHBoeXNfYXBpY2lkLCBwaHlzaWRfbWFza190ICpy ZXRtYXApOwoxNDQ3NDogIGludCAoKmNoZWNrX3BoeXNfYXBpY2lkX3ByZXNlbnQpKGludCBwaHlz X2FwaWNpZCk7CjE0NDc0OiAgaW50ICgqcGh5c19wa2dfaWQpKGludCBjcHVpZF9hcGljLCBpbnQg aW5kZXhfbXNiKTsKMTQ0NzQ6IAoxNDQ3NDogIHUzMiAoKmdldF9hcGljX2lkKSh1bnNpZ25lZCBs b25nIHgpOwoxNDQ3NDogIHUzMiAoKnNldF9hcGljX2lkKSh1bnNpZ25lZCBpbnQgaWQpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCp3YWtldXBfc2Vjb25kYXJ5X2NwdSkoaW50IGFwaWNp ZCwgdW5zaWduZWQgbG9uZyBzdGFydF9laXApOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmlucXVp cmVfcmVtb3RlX2FwaWMpKGludCBhcGljaWQpOwoxNDQ3NDogIyAzNTYgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vYXBpYy5oIgoxNDQ3NDogIGNoYXIgKm5hbWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVj dCBhcGljICphcGljOwoxNDQ3NDogIyAzODQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXBpYy5o IgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBhcGljICpfX2FwaWNkcml2ZXJzW10sICpfX2FwaWNkcml2 ZXJzX2VuZFtdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGV4dGVybiBpbnQgd2FrZXVwX3NlY29uZGFyeV9jcHVfdmlhX25taShpbnQgYXBpY2lkLCB1bnNp Z25lZCBsb25nIHN0YXJ0X2VpcCk7CjE0NDc0OiBleHRlcm4gaW50IGxhcGljX2Nhbl91bnBsdWdf Y3B1KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgYXBp Y19yZWFkKHUzMiByZWcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGFwaWMtPnJlYWQocmVnKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcGljX3dyaXRlKHUzMiByZWcsIHUzMiB2YWwp CjE0NDc0OiB7CjE0NDc0OiAgYXBpYy0+d3JpdGUocmVnLCB2YWwpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGFwaWNfZW9pKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgYXBpYy0+ZW9pX3dy aXRlKDB4QjAsIDB4MCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBhcGljX2ljcl9yZWFk KHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGFwaWMtPmljcl9yZWFkKCk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgYXBpY19pY3Jfd3JpdGUodTMyIGxvdywgdTMyIGhpZ2gpCjE0 NDc0OiB7CjE0NDc0OiAgYXBpYy0+aWNyX3dyaXRlKGxvdywgaGlnaCk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgYXBpY193YWl0X2ljcl9pZGxlKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAg YXBpYy0+d2FpdF9pY3JfaWRsZSgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgc2FmZV9h cGljX3dhaXRfaWNyX2lkbGUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXBpYy0+c2Fm ZV93YWl0X2ljcl9pZGxlKCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIF9f YXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChf X2NvbGRfXykpIGFwaWNfc2V0X2VvaV93cml0ZSh2b2lkICgqZW9pX3dyaXRlKSh1MzIgcmVnLCB1 MzIgdikpOwoxNDQ3NDogIyA0NDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXBpYy5oIgoxNDQ3 NDogZXh0ZXJuIHZvaWQgYXBpY19hY2tfaXJxKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSk7CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgYWNrX0FQSUNfaXJxKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhcGljX2VvaSgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgbGFwaWNfdmVjdG9yX3NldF9pbl9pcnIodW5zaWduZWQgaW50IHZl Y3RvcikKMTQ0NzQ6IHsKMTQ0NzQ6ICB1MzIgaXJyID0gYXBpY19yZWFkKDB4MjAwICsgKHZlY3Rv ciAvIDMyICogMHgxMCkpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuICEhKGlyciAmICgxVSA8PCAo dmVjdG9yICUgMzIpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGRlZmF1bHRf Z2V0X2FwaWNfaWQodW5zaWduZWQgbG9uZyB4KQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGlu dCB2ZXIgPSAoKGFwaWNfcmVhZCgweDMwKSkgJiAweEZGdSk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAo KCh2ZXIpID49IDB4MTQpIHx8IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoIDMqMzIrMjYpKSAmJiAo ICgoKCggMyozMisyNikpPj41KT09KDApICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgKCgx PDwoKCAwKjMyKyAwKSAmIDMxKSl8MHwoMTw8KCggMCozMisgNSkgJiAzMSkpfCgxPDwoKCAwKjMy KyA2KSAmIDMxKSl8ICgxPDwoKCAwKjMyKyA4KSAmIDMxKSl8MHwoMTw8KCggMCozMisyNCkgJiAz MSkpfCgxPDwoKCAwKjMyKzE1KSAmIDMxKSl8ICgxPDwoKCAwKjMyKzI1KSAmIDMxKSl8KDE8PCgo IDAqMzIrMjYpICYgMzEpKSkgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oMSkgJiYgKDFVTDw8 KCgoIDMqMzIrMjYpKSYzMSkgJiAoKDE8PCgoIDEqMzIrMjkpICYgMzEpKXwwKSApKSB8fCAoKCgo IDMqMzIrMjYpKT4+NSk9PSgyKSAmJiAoMVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAgKSkgfHwg KCgoKCAzKjMyKzI2KSk+PjUpPT0oMykgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAoKDE8 PCgoIDMqMzIrMjApICYgMzEpKSkgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oNCkgJiYgKDFV TDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAoMCkgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oNSkg JiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8ICgoKCggMyozMisyNikpPj41KT09 KDYpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKCgoIDMqMzIrMjYpKT4+ NSk9PSg3KSAmJiAoMVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAgKSkgfHwgKCgoKCAzKjMyKzI2 KSk+PjUpPT0oOCkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8ICgoKCggMyoz MisyNikpPj41KT09KDkpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKCgo IDMqMzIrMjYpKT4+NSk9PSgxMCkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8 ICgoKCggMyozMisyNikpPj41KT09KDExKSAmJiAoMVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAg KSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oMTIpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEp ICYgMCApKSB8fCAoKCgoIDMqMzIrMjYpKT4+NSk9PSgxMykgJiYgKDFVTDw8KCgoIDMqMzIrMjYp KSYzMSkgJiAwICkpIHx8ICgoKCggMyozMisyNikpPj41KT09KDE0KSAmJiAoMVVMPDwoKCggMyoz MisyNikpJjMxKSAmIDAgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oMTUpICYmICgxVUw8PCgo KCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKCgoIDMqMzIrMjYpKT4+NSk9PSgxNikgJiYgKDFV TDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8ICgoKCggMyozMisyNikpPj41KT09KDE3KSAm JiAoMVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0o MTgpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKGludCkoc2l6ZW9mKHN0 cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0pKSkgfHwgKChpbnQpKHNpemVvZihzdHJ1Y3Qg eyBpbnQ6KC0hISgxOSAhPSAxOSkpOyB9KSkpKSA/IDEgOiB0ZXN0X2JpdCgoIDMqMzIrMjYpLCAo dW5zaWduZWQgbG9uZyAqKSgoJmJvb3RfY3B1X2RhdGEpLT54ODZfY2FwYWJpbGl0eSkpKSkKMTQ0 NzQ6ICAgcmV0dXJuICh4ID4+IDI0KSAmIDB4RkY7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICByZXR1 cm4gKHggPj4gMjQpICYgMHgwRjsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZ2VuZXJpY19i aWdzbXBfcHJvYmUodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmgiIDEKMTQ0NzQ6ICMgNDg2ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2FwaWMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIuLnJlYWRfbW9zdGx5Iikp KSBfX3R5cGVvZl9fKHUxNikgeDg2X2Jpb3NfY3B1X2FwaWNpZDsgZXh0ZXJuIF9fdHlwZW9mX18o dTE2KSAqeDg2X2Jpb3NfY3B1X2FwaWNpZF9lYXJseV9wdHI7IGV4dGVybiBfX3R5cGVvZl9fKHUx NikgeDg2X2Jpb3NfY3B1X2FwaWNpZF9lYXJseV9tYXBbXTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHN0cnVjdCBhcGljIGFwaWNfbm9vcDsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IHJlYWRf YXBpY19pZCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGludCByZWcgPSBhcGljX3Jl YWQoMHgyMCk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gYXBpYy0+Z2V0X2FwaWNfaWQocmVnKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBkZWZhdWx0X2FwaWNfaWRfdmFsaWQo dTMyIGFwaWNpZCk7CjE0NDc0OiBleHRlcm4gaW50IGRlZmF1bHRfYWNwaV9tYWR0X29lbV9jaGVj ayhjaGFyICosIGNoYXIgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBkZWZhdWx0X3NldHVwX2FwaWNf cm91dGluZyh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHUzMiBhcGljX2RlZmF1bHRfY2Fs Y19hcGljaWQodW5zaWduZWQgaW50IGNwdSk7CjE0NDc0OiBleHRlcm4gdTMyIGFwaWNfZmxhdF9j YWxjX2FwaWNpZCh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wg ZGVmYXVsdF9jaGVja19hcGljaWRfdXNlZChwaHlzaWRfbWFza190ICptYXAsIGludCBhcGljaWQp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGVmYXVsdF9pb2FwaWNfcGh5c19pZF9tYXAocGh5c2lkX21h c2tfdCAqcGh5c19tYXAsIHBoeXNpZF9tYXNrX3QgKnJldG1hcCk7CjE0NDc0OiBleHRlcm4gaW50 IGRlZmF1bHRfY3B1X3ByZXNlbnRfdG9fYXBpY2lkKGludCBtcHNfY3B1KTsKMTQ0NzQ6IGV4dGVy biBpbnQgZGVmYXVsdF9jaGVja19waHlzX2FwaWNpZF9wcmVzZW50KGludCBwaHlzX2FwaWNpZCk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGJvb2wgYXBpY19pZF9pc19w cmltYXJ5X3RocmVhZCh1bnNpZ25lZCBpbnQgaWQpOwoxNDQ3NDogdm9pZCBhcGljX3NtdF91cGRh dGUodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHZvaWQgaXJxX2VudGVyKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgaXJxX2V4aXQo dm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZW50ZXJpbmdfaXJxKHZvaWQpCjE0NDc0OiB7CjE0 NDc0OiAgaXJxX2VudGVyKCk7CjE0NDc0OiAga3ZtX3NldF9jcHVfbDF0Zl9mbHVzaF9sMWQoKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBlbnRlcmluZ19hY2tfaXJxKHZvaWQpCjE0NDc0 OiB7CjE0NDc0OiAgZW50ZXJpbmdfaXJxKCk7CjE0NDc0OiAgYWNrX0FQSUNfaXJxKCk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaXBpX2VudGVyaW5nX2Fja19pcnEodm9pZCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICBpcnFfZW50ZXIoKTsKMTQ0NzQ6ICBhY2tfQVBJQ19pcnEoKTsKMTQ0NzQ6ICBr dm1fc2V0X2NwdV9sMXRmX2ZsdXNoX2wxZCgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGV4aXRpbmdfaXJxKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgaXJxX2V4aXQoKTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBleGl0aW5nX2Fja19pcnEodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBhY2tfQVBJQ19pcnEoKTsKMTQ0NzQ6ICBpcnFfZXhpdCgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gdm9pZCBpb2FwaWNfemFwX2xvY2tzKHZvaWQpOwoxNDQ3NDogIyAxNCAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9zbXAuaCIgMgoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vaW9fYXBpYy5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9pcnFfdmVjdG9ycy5oIiAxCjE0NDc0OiAjIDkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v aW9fYXBpYy5oIiAyCjE0NDc0OiAjIDI4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lvX2FwaWMu aCIKMTQ0NzQ6IHVuaW9uIElPX0FQSUNfcmVnXzAwIHsKMTQ0NzQ6ICB1MzIgcmF3OwoxNDQ3NDog IHN0cnVjdCB7CjE0NDc0OiAgIHUzMiBfX3Jlc2VydmVkXzIgOiAxNCwKMTQ0NzQ6ICAgIExUUyA6 IDEsCjE0NDc0OiAgICBkZWxpdmVyeV90eXBlIDogMSwKMTQ0NzQ6ICAgIF9fcmVzZXJ2ZWRfMSA6 IDgsCjE0NDc0OiAgICBJRCA6IDg7CjE0NDc0OiAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkg Yml0czsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIElPX0FQSUNfcmVnXzAxIHsKMTQ0 NzQ6ICB1MzIgcmF3OwoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHUzMiB2ZXJzaW9uIDogOCwK MTQ0NzQ6ICAgIF9fcmVzZXJ2ZWRfMiA6IDcsCjE0NDc0OiAgICBQUlEgOiAxLAoxNDQ3NDogICAg ZW50cmllcyA6IDgsCjE0NDc0OiAgICBfX3Jlc2VydmVkXzEgOiA4OwoxNDQ3NDogIH0gX19hdHRy aWJ1dGVfXyAoKHBhY2tlZCkpIGJpdHM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBJ T19BUElDX3JlZ18wMiB7CjE0NDc0OiAgdTMyIHJhdzsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDog ICB1MzIgX19yZXNlcnZlZF8yIDogMjQsCjE0NDc0OiAgICBhcmJpdHJhdGlvbiA6IDQsCjE0NDc0 OiAgICBfX3Jlc2VydmVkXzEgOiA0OwoxNDQ3NDogIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkp IGJpdHM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBJT19BUElDX3JlZ18wMyB7CjE0 NDc0OiAgdTMyIHJhdzsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1MzIgYm9vdF9EVCA6IDEs CjE0NDc0OiAgICBfX3Jlc2VydmVkXzEgOiAzMTsKMTQ0NzQ6ICB9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKSBiaXRzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IElPX0FQSUNfcm91 dGVfZW50cnkgewoxNDQ3NDogIF9fdTMyIHZlY3RvciA6IDgsCjE0NDc0OiAgIGRlbGl2ZXJ5X21v ZGUgOiAzLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBkZXN0X21vZGUgOiAxLAox NDQ3NDogICBkZWxpdmVyeV9zdGF0dXMgOiAxLAoxNDQ3NDogICBwb2xhcml0eSA6IDEsCjE0NDc0 OiAgIGlyciA6IDEsCjE0NDc0OiAgIHRyaWdnZXIgOiAxLAoxNDQ3NDogICBtYXNrIDogMSwKMTQ0 NzQ6ICAgX19yZXNlcnZlZF8yIDogMTU7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBfX3Jlc2VydmVk XzMgOiAyNCwKMTQ0NzQ6ICAgZGVzdCA6IDg7CjE0NDc0OiB9IF9fYXR0cmlidXRlX18gKChwYWNr ZWQpKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IElSX0lPX0FQSUNfcm91dGVfZW50cnkgewoxNDQ3 NDogIF9fdTY0IHZlY3RvciA6IDgsCjE0NDc0OiAgIHplcm8gOiAzLAoxNDQ3NDogICBpbmRleDIg OiAxLAoxNDQ3NDogICBkZWxpdmVyeV9zdGF0dXMgOiAxLAoxNDQ3NDogICBwb2xhcml0eSA6IDEs CjE0NDc0OiAgIGlyciA6IDEsCjE0NDc0OiAgIHRyaWdnZXIgOiAxLAoxNDQ3NDogICBtYXNrIDog MSwKMTQ0NzQ6ICAgcmVzZXJ2ZWQgOiAzMSwKMTQ0NzQ6ICAgZm9ybWF0IDogMSwKMTQ0NzQ6ICAg aW5kZXggOiAxNTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgaXJxX2FsbG9jX2luZm87CjE0NDc0OiBzdHJ1Y3QgaW9hcGljX2RvbWFpbl9j Zmc7CjE0NDc0OiAjIDEyMyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pb19hcGljLmgiCjE0NDc0 OiBleHRlcm4gaW50IG5yX2lvYXBpY3M7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbXBjX2lv YXBpY19pZChpbnQgaW9hcGljKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQgbXBjX2lvYXBp Y19hZGRyKGludCBpb2FwaWMpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbXBf aXJxX2VudHJpZXM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBtcGNfaW50 c3JjIG1wX2lycXNbKDI1NiAqIDQpXTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50 IHNraXBfaW9hcGljX3NldHVwOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbm9p b2FwaWNxdWlyazsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IG5vaW9hcGljcmVy b3V0ZTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHUzMiBnc2lfdG9wOwoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gdW5zaWduZWQgbG9uZyBpb19hcGljX2lycXM7CjE0NDc0OiAjIDE1NiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9pb19hcGljLmgiCjE0NDc0OiBzdHJ1Y3QgaXJxX2NmZzsKMTQ0NzQ6IGV4 dGVybiB2b2lkIGlvYXBpY19pbnNlcnRfcmVzb3VyY2VzKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGlu dCBhcmNoX2Vhcmx5X2lvYXBpY19pbml0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50 IHNhdmVfaW9hcGljX2VudHJpZXModm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBtYXNrX2lvYXBp Y19lbnRyaWVzKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCByZXN0b3JlX2lvYXBpY19lbnRyaWVz KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzZXR1cF9pb2FwaWNfaWRzX2Zyb21f bXBjKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0dXBfaW9hcGljX2lkc19mcm9tX21wY19u b2NoZWNrKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IG1wX2ZpbmRfaW9hcGljKHUz MiBnc2kpOwoxNDQ3NDogZXh0ZXJuIGludCBtcF9maW5kX2lvYXBpY19waW4oaW50IGlvYXBpYywg dTMyIGdzaSk7CjE0NDc0OiBleHRlcm4gaW50IG1wX21hcF9nc2lfdG9faXJxKHUzMiBnc2ksIHVu c2lnbmVkIGludCBmbGFncywKMTQ0NzQ6ICAgICAgICAgc3RydWN0IGlycV9hbGxvY19pbmZvICpp bmZvKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIG1wX3VubWFwX2lycShpbnQgaXJxKTsKMTQ0NzQ6IGV4 dGVybiBpbnQgbXBfcmVnaXN0ZXJfaW9hcGljKGludCBpZCwgdTMyIGFkZHJlc3MsIHUzMiBnc2lf YmFzZSwKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBpb2FwaWNfZG9tYWluX2NmZyAqY2ZnKTsKMTQ0 NzQ6IGV4dGVybiBpbnQgbXBfdW5yZWdpc3Rlcl9pb2FwaWModTMyIGdzaV9iYXNlKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgbXBfaW9hcGljX3JlZ2lzdGVyZWQodTMyIGdzaV9iYXNlKTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIHZvaWQgaW9hcGljX3NldF9hbGxvY19hdHRyKHN0cnVjdCBpcnFfYWxsb2Nf aW5mbyAqaW5mbywKMTQ0NzQ6ICAgICAgIGludCBub2RlLCBpbnQgdHJpZ2dlciwgaW50IHBvbGFy aXR5KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgbXBfc2F2ZV9pcnEoc3RydWN0IG1wY19p bnRzcmMgKm0pOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBkaXNhYmxlX2lvYXBpY19zdXBw b3J0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3Nl Y3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBpb19hcGlj X2luaXRfbWFwcGluZ3Modm9pZCk7CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgaW50IG5hdGl2ZV9p b19hcGljX3JlYWQodW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCByZWcpOwoxNDQ3NDog ZXh0ZXJuIHZvaWQgbmF0aXZlX3Jlc3RvcmVfYm9vdF9pcnFfbW9kZSh2b2lkKTsKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdW5zaWduZWQgaW50IGlvX2FwaWNfcmVhZCh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWdu ZWQgaW50IHJlZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4geDg2X2FwaWNfb3BzLmlvX2FwaWNf cmVhZChhcGljLCByZWcpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzZXR1 cF9JT19BUElDKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZW5hYmxlX0lPX0FQSUModm9pZCk7 CjE0NDc0OiBleHRlcm4gdm9pZCBjbGVhcl9JT19BUElDKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgcmVzdG9yZV9ib290X2lycV9tb2RlKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCBJT19BUElD X2dldF9QQ0lfaXJxX3ZlY3RvcihpbnQgYnVzLCBpbnQgZGV2Zm4sIGludCBwaW4pOwoxNDQ3NDog ZXh0ZXJuIHZvaWQgcHJpbnRfSU9fQVBJQ3Modm9pZCk7CjE0NDc0OiAjIDE2ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3NtcC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBzbXBfbnVtX3NpYmxpbmdzOwoxNDQ3NDogZXh0ZXJuIHVu c2lnbmVkIGludCBudW1fcHJvY2Vzc29yczsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIF9fYXR0cmli dXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIuLnJlYWRfbW9zdGx5IikpKSBfX3R5cGVv Zl9fKGNwdW1hc2tfdmFyX3QpIGNwdV9zaWJsaW5nX21hcDsKMTQ0NzQ6IGV4dGVybiBfX2F0dHJp YnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBl b2ZfXyhjcHVtYXNrX3Zhcl90KSBjcHVfY29yZV9tYXA7CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1 dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIi4ucmVhZF9tb3N0bHkiKSkpIF9fdHlwZW9m X18oY3B1bWFza192YXJfdCkgY3B1X2RpZV9tYXA7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0 dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190 eXBlb2ZfXyhjcHVtYXNrX3Zhcl90KSBjcHVfbGxjX3NoYXJlZF9tYXA7CjE0NDc0OiBleHRlcm4g X19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIi4ucmVhZF9tb3N0bHkiKSkp IF9fdHlwZW9mX18odTE2KSBjcHVfbGxjX2lkOwoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18o KHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIuLnJlYWRfbW9zdGx5IikpKSBfX3R5cGVvZl9fKGlu dCkgY3B1X251bWJlcjsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGNwdW1hc2sgKmNwdV9sbGNfc2hh cmVkX21hc2soaW50IGNwdSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCooeyBkbyB7IGNvbnN0 IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X2xsY19zaGFyZWRfbWFwKSkgKyAw KSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsgKHsgdW5zaWdu ZWQgbG9uZyBfX3B0cjsgX19hc21fXyAoIiIgOiAiPXIiKF9fcHRyKSA6ICIwIigodHlwZW9mKCoo KCYoY3B1X2xsY19zaGFyZWRfbWFwKSkpKSAqKSgoJihjcHVfbGxjX3NoYXJlZF9tYXApKSkpKTsg KHR5cGVvZigodHlwZW9mKCooKCYoY3B1X2xsY19zaGFyZWRfbWFwKSkpKSAqKSgoJihjcHVfbGxj X3NoYXJlZF9tYXApKSkpKSAoX19wdHIgKyAoKChfX3Blcl9jcHVfb2Zmc2V0WyhjcHUpXSkpKSk7 IH0pOyB9KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChz ZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyh1MTYp IHg4Nl9jcHVfdG9fYXBpY2lkOyBleHRlcm4gX190eXBlb2ZfXyh1MTYpICp4ODZfY3B1X3RvX2Fw aWNpZF9lYXJseV9wdHI7IGV4dGVybiBfX3R5cGVvZl9fKHUxNikgeDg2X2NwdV90b19hcGljaWRf ZWFybHlfbWFwW107CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRhdGEu LnBlcmNwdSIgIi4ucmVhZF9tb3N0bHkiKSkpIF9fdHlwZW9mX18odTMyKSB4ODZfY3B1X3RvX2Fj cGlpZDsgZXh0ZXJuIF9fdHlwZW9mX18odTMyKSAqeDg2X2NwdV90b19hY3BpaWRfZWFybHlfcHRy OyBleHRlcm4gX190eXBlb2ZfXyh1MzIpIHg4Nl9jcHVfdG9fYWNwaWlkX2Vhcmx5X21hcFtdOwox NDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIuLnJl YWRfbW9zdGx5IikpKSBfX3R5cGVvZl9fKHUxNikgeDg2X2Jpb3NfY3B1X2FwaWNpZDsgZXh0ZXJu IF9fdHlwZW9mX18odTE2KSAqeDg2X2Jpb3NfY3B1X2FwaWNpZF9lYXJseV9wdHI7IGV4dGVybiBf X3R5cGVvZl9fKHUxNikgeDg2X2Jpb3NfY3B1X2FwaWNpZF9lYXJseV9tYXBbXTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3Qgc21wX29wcyB7CjE0NDc0OiAgdm9pZCAoKnNtcF9wcmVwYXJlX2Jvb3Rf Y3B1KSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqc21wX3ByZXBhcmVfY3B1cykodW5zaWduZWQgbWF4 X2NwdXMpOwoxNDQ3NDogIHZvaWQgKCpzbXBfY3B1c19kb25lKSh1bnNpZ25lZCBtYXhfY3B1cyk7 CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc3RvcF9vdGhlcl9jcHVzKShpbnQgd2FpdCk7CjE0NDc0 OiAgdm9pZCAoKmNyYXNoX3N0b3Bfb3RoZXJfY3B1cykodm9pZCk7CjE0NDc0OiAgdm9pZCAoKnNt cF9zZW5kX3Jlc2NoZWR1bGUpKGludCBjcHUpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqY3B1X3Vw KSh1bnNpZ25lZCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpOwoxNDQ3NDogIGludCAo KmNwdV9kaXNhYmxlKSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqY3B1X2RpZSkodW5zaWduZWQgaW50 IGNwdSk7CjE0NDc0OiAgdm9pZCAoKnBsYXlfZGVhZCkodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqc2VuZF9jYWxsX2Z1bmNfaXBpKShjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzayk7CjE0 NDc0OiAgdm9pZCAoKnNlbmRfY2FsbF9mdW5jX3NpbmdsZV9pcGkpKGludCBjcHUpOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzZXRfY3B1X3NpYmxpbmdfbWFw KGludCBjcHUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgc21wX29wcyBz bXBfb3BzOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNtcF9zZW5kX3N0b3Aodm9pZCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBzbXBfb3BzLnN0b3Bfb3RoZXJfY3B1cygwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBzdG9wX290aGVyX2NwdXModm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzbXBfb3BzLnN0 b3Bfb3RoZXJfY3B1cygxKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzbXBfcHJlcGFy ZV9ib290X2NwdSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHNtcF9vcHMuc21wX3ByZXBhcmVfYm9v dF9jcHUoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzbXBfcHJlcGFyZV9jcHVzKHVu c2lnbmVkIGludCBtYXhfY3B1cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzbXBfb3BzLnNtcF9wcmVwYXJl X2NwdXMobWF4X2NwdXMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNtcF9jcHVzX2Rv bmUodW5zaWduZWQgaW50IG1heF9jcHVzKQoxNDQ3NDogewoxNDQ3NDogIHNtcF9vcHMuc21wX2Nw dXNfZG9uZShtYXhfY3B1cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2NwdV91cCh1 bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRpZGxlKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBzbXBfb3BzLmNwdV91cChjcHUsIHRpZGxlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgaW50IF9fY3B1X2Rpc2FibGUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gc21w X29wcy5jcHVfZGlzYWJsZSgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fY3B1X2Rp ZSh1bnNpZ25lZCBpbnQgY3B1KQoxNDQ3NDogewoxNDQ3NDogIHNtcF9vcHMuY3B1X2RpZShjcHUp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBsYXlfZGVhZCh2b2lkKQoxNDQ3NDogewox NDQ3NDogIHNtcF9vcHMucGxheV9kZWFkKCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg c21wX3NlbmRfcmVzY2hlZHVsZShpbnQgY3B1KQoxNDQ3NDogewoxNDQ3NDogIHNtcF9vcHMuc21w X3NlbmRfcmVzY2hlZHVsZShjcHUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hf c2VuZF9jYWxsX2Z1bmN0aW9uX3NpbmdsZV9pcGkoaW50IGNwdSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBz bXBfb3BzLnNlbmRfY2FsbF9mdW5jX3NpbmdsZV9pcGkoY3B1KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBhcmNoX3NlbmRfY2FsbF9mdW5jdGlvbl9pcGlfbWFzayhjb25zdCBzdHJ1Y3Qg Y3B1bWFzayAqbWFzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzbXBfb3BzLnNlbmRfY2FsbF9mdW5jX2lw aShtYXNrKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdm9pZCBjcHVfZGlzYWJsZV9jb21tb24o dm9pZCk7CjE0NDc0OiB2b2lkIG5hdGl2ZV9zbXBfcHJlcGFyZV9ib290X2NwdSh2b2lkKTsKMTQ0 NzQ6IHZvaWQgbmF0aXZlX3NtcF9wcmVwYXJlX2NwdXModW5zaWduZWQgaW50IG1heF9jcHVzKTsK MTQ0NzQ6IHZvaWQgY2FsY3VsYXRlX21heF9sb2dpY2FsX3BhY2thZ2VzKHZvaWQpOwoxNDQ3NDog dm9pZCBuYXRpdmVfc21wX2NwdXNfZG9uZSh1bnNpZ25lZCBpbnQgbWF4X2NwdXMpOwoxNDQ3NDog aW50IGNvbW1vbl9jcHVfdXAodW5zaWduZWQgaW50IGNwdW51bSwgc3RydWN0IHRhc2tfc3RydWN0 ICp0aWRsZSk7CjE0NDc0OiBpbnQgbmF0aXZlX2NwdV91cCh1bnNpZ25lZCBpbnQgY3B1bnVtLCBz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRpZGxlKTsKMTQ0NzQ6IGludCBuYXRpdmVfY3B1X2Rpc2FibGUo dm9pZCk7CjE0NDc0OiBpbnQgY29tbW9uX2NwdV9kaWUodW5zaWduZWQgaW50IGNwdSk7CjE0NDc0 OiB2b2lkIG5hdGl2ZV9jcHVfZGllKHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDogdm9pZCBobHRf cGxheV9kZWFkKHZvaWQpOwoxNDQ3NDogdm9pZCBuYXRpdmVfcGxheV9kZWFkKHZvaWQpOwoxNDQ3 NDogdm9pZCBwbGF5X2RlYWRfY29tbW9uKHZvaWQpOwoxNDQ3NDogdm9pZCB3YmludmRfb25fY3B1 KGludCBjcHUpOwoxNDQ3NDogaW50IHdiaW52ZF9vbl9hbGxfY3B1cyh2b2lkKTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCBuYXRpdmVfc21wX3NlbmRfcmVzY2hlZHVsZShpbnQgY3B1KTsKMTQ0NzQ6IHZv aWQgbmF0aXZlX3NlbmRfY2FsbF9mdW5jX2lwaShjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzayk7 CjE0NDc0OiB2b2lkIG5hdGl2ZV9zZW5kX2NhbGxfZnVuY19zaW5nbGVfaXBpKGludCBjcHUpOwox NDQ3NDogdm9pZCB4ODZfaWRsZV90aHJlYWRfaW5pdCh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKmlkbGUpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIHNtcF9zdG9yZV9ib290X2Nw dV9pbmZvKHZvaWQpOwoxNDQ3NDogdm9pZCBzbXBfc3RvcmVfY3B1X2luZm8oaW50IGlkKTsKMTQ0 NzQ6IAoxNDQ3NDogIF9fYXR0cmlidXRlX18oKF9fZXh0ZXJuYWxseV92aXNpYmxlX18pKSB2b2lk IHNtcF9yZWJvb3RfaW50ZXJydXB0KHZvaWQpOwoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19leHRl cm5hbGx5X3Zpc2libGVfXykpIHZvaWQgc21wX3Jlc2NoZWR1bGVfaW50ZXJydXB0KHN0cnVjdCBw dF9yZWdzICpyZWdzKTsKMTQ0NzQ6IF9fYXR0cmlidXRlX18oKF9fZXh0ZXJuYWxseV92aXNpYmxl X18pKSB2b2lkIHNtcF9jYWxsX2Z1bmN0aW9uX2ludGVycnVwdChzdHJ1Y3QgcHRfcmVncyAqcmVn cyk7CjE0NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSkgdm9pZCBz bXBfY2FsbF9mdW5jdGlvbl9zaW5nbGVfaW50ZXJydXB0KHN0cnVjdCBwdF9yZWdzICpyKTsKMTQ0 NzQ6ICMgMTg1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NtcC5oIgoxNDQ3NDogZXh0ZXJuIHVu c2lnbmVkIGRpc2FibGVkX2NwdXM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBo YXJkX3NtcF9wcm9jZXNzb3JfaWQodm9pZCk7CjE0NDc0OiAjIDY4ICIuL2luY2x1ZGUvbGludXgv c21wLmgiIDIKMTQ0NzQ6ICMgNzcgIi4vaW5jbHVkZS9saW51eC9zbXAuaCIKMTQ0NzQ6IGV4dGVy biB2b2lkIHNtcF9zZW5kX3N0b3Aodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHNtcF9zZW5kX3Jlc2NoZWR1bGUoaW50IGNwdSk7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgc21w X3ByZXBhcmVfY3B1cyh1bnNpZ25lZCBpbnQgbWF4X2NwdXMpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fY3B1X3VwKHVuc2lnbmVkIGludCBjcHVu dW0sIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzbXBfY3B1c19kb25lKHVuc2lnbmVkIGludCBtYXhf Y3B1cyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc21wX2Nh bGxfZnVuY3Rpb24oc21wX2NhbGxfZnVuY190IGZ1bmMsIHZvaWQgKmluZm8sIGludCB3YWl0KTsK MTQ0NzQ6IHZvaWQgc21wX2NhbGxfZnVuY3Rpb25fbWFueShjb25zdCBzdHJ1Y3QgY3B1bWFzayAq bWFzaywKMTQ0NzQ6ICAgICAgICBzbXBfY2FsbF9mdW5jX3QgZnVuYywgdm9pZCAqaW5mbywgYm9v bCB3YWl0KTsKMTQ0NzQ6IAoxNDQ3NDogaW50IHNtcF9jYWxsX2Z1bmN0aW9uX2FueShjb25zdCBz dHJ1Y3QgY3B1bWFzayAqbWFzaywKMTQ0NzQ6ICAgICAgc21wX2NhbGxfZnVuY190IGZ1bmMsIHZv aWQgKmluZm8sIGludCB3YWl0KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBraWNrX2FsbF9jcHVzX3N5 bmModm9pZCk7CjE0NDc0OiB2b2lkIHdha2VfdXBfYWxsX2lkbGVfY3B1cyh2b2lkKTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3Nl Y3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBjYWxsX2Z1 bmN0aW9uX2luaXQodm9pZCk7CjE0NDc0OiB2b2lkIGdlbmVyaWNfc21wX2NhbGxfZnVuY3Rpb25f c2luZ2xlX2ludGVycnVwdCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBzbXBfcHJlcGFyZV9ib290X2NwdSh2 b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGludCBzZXR1cF9tYXhfY3B1czsK MTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0 IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHNldHVwX25yX2NwdV9pZHModm9pZCk7CjE0 NDc0OiBleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIp KSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBzbXBfaW5pdCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIGludCBfX2Jvb3RfY3B1X2lkOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZ2V0X2Jvb3Rf Y3B1X2lkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fYm9vdF9jcHVfaWQ7CjE0NDc0 OiB9CjE0NDc0OiAjIDIyOCAiLi9pbmNsdWRlL2xpbnV4L3NtcC5oIgoxNDQ3NDogZXh0ZXJuIHZv aWQgYXJjaF9kaXNhYmxlX3NtcF9zdXBwb3J0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g dm9pZCBhcmNoX2VuYWJsZV9ub25ib290X2NwdXNfYmVnaW4odm9pZCk7CjE0NDc0OiBleHRlcm4g dm9pZCBhcmNoX2VuYWJsZV9ub25ib290X2NwdXNfZW5kKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiB2 b2lkIHNtcF9zZXR1cF9wcm9jZXNzb3JfaWQodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGludCBzbXBf Y2FsbF9vbl9jcHUodW5zaWduZWQgaW50IGNwdSwgaW50ICgqZnVuYykodm9pZCAqKSwgdm9pZCAq cGFyLAoxNDQ3NDogICAgICAgYm9vbCBwaHlzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQg c21wY2ZkX3ByZXBhcmVfY3B1KHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDogaW50IHNtcGNmZF9k ZWFkX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IGludCBzbXBjZmRfZHlpbmdfY3B1KHVu c2lnbmVkIGludCBjcHUpOwoxNDQ3NDogIyA4ICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LmgiIDIK MTQ0NzQ6ICMgNjUgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUuaCIKMTQ0NzQ6IGV4dGVybiB2b2lk ICpwY3B1X2Jhc2VfYWRkcjsKMTQ0NzQ6IGV4dGVybiBjb25zdCB1bnNpZ25lZCBsb25nICpwY3B1 X3VuaXRfb2Zmc2V0czsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBjcHVfZ3JvdXBfaW5mbyB7CjE0 NDc0OiAgaW50IG5yX3VuaXRzOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgYmFzZV9vZmZzZXQ7CjE0 NDc0OiAgdW5zaWduZWQgaW50ICpjcHVfbWFwOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgcGNwdV9hbGxvY19pbmZvIHsKMTQ0NzQ6ICBzaXplX3Qgc3RhdGljX3NpemU7 CjE0NDc0OiAgc2l6ZV90IHJlc2VydmVkX3NpemU7CjE0NDc0OiAgc2l6ZV90IGR5bl9zaXplOwox NDQ3NDogIHNpemVfdCB1bml0X3NpemU7CjE0NDc0OiAgc2l6ZV90IGF0b21fc2l6ZTsKMTQ0NzQ6 ICBzaXplX3QgYWxsb2Nfc2l6ZTsKMTQ0NzQ6ICBzaXplX3QgX19haV9zaXplOwoxNDQ3NDogIGlu dCBucl9ncm91cHM7CjE0NDc0OiAgc3RydWN0IHBjcHVfZ3JvdXBfaW5mbyBncm91cHNbXTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gcGNwdV9mYyB7CjE0NDc0OiAgUENQVV9GQ19BVVRP LAoxNDQ3NDogIFBDUFVfRkNfRU1CRUQsCjE0NDc0OiAgUENQVV9GQ19QQUdFLAoxNDQ3NDogCjE0 NDc0OiAgUENQVV9GQ19OUiwKMTQ0NzQ6IH07CjE0NDc0OiBleHRlcm4gY29uc3QgY2hhciAqIGNv bnN0IHBjcHVfZmNfbmFtZXNbUENQVV9GQ19OUl07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBlbnVt IHBjcHVfZmMgcGNwdV9jaG9zZW5fZmM7CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdm9pZCAqICgq cGNwdV9mY19hbGxvY19mbl90KSh1bnNpZ25lZCBpbnQgY3B1LCBzaXplX3Qgc2l6ZSwKMTQ0NzQ6 ICAgICAgICAgIHNpemVfdCBhbGlnbik7CjE0NDc0OiB0eXBlZGVmIHZvaWQgKCpwY3B1X2ZjX2Zy ZWVfZm5fdCkodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CjE0NDc0OiB0eXBlZGVmIHZvaWQgKCpw Y3B1X2ZjX3BvcHVsYXRlX3B0ZV9mbl90KSh1bnNpZ25lZCBsb25nIGFkZHIpOwoxNDQ3NDogdHlw ZWRlZiBpbnQgKHBjcHVfZmNfY3B1X2Rpc3RhbmNlX2ZuX3QpKHVuc2lnbmVkIGludCBmcm9tLCB1 bnNpZ25lZCBpbnQgdG8pOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHBjcHVfYWxsb2Nf aW5mbyAqIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJp YnV0ZV9fKChfX2NvbGRfXykpIHBjcHVfYWxsb2NfYWxsb2NfaW5mbyhpbnQgbnJfZ3JvdXBzLAox NDQ3NDogICAgICAgICAgICAgaW50IG5yX3VuaXRzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0 cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2Nv bGRfXykpIHBjcHVfZnJlZV9hbGxvY19pbmZvKHN0cnVjdCBwY3B1X2FsbG9jX2luZm8gKmFpKTsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5p bml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgcGNwdV9zZXR1cF9maXJzdF9j aHVuayhjb25zdCBzdHJ1Y3QgcGNwdV9hbGxvY19pbmZvICphaSwKMTQ0NzQ6ICAgICAgIHZvaWQg KmJhc2VfYWRkcik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0 ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18p KSBwY3B1X2VtYmVkX2ZpcnN0X2NodW5rKHNpemVfdCByZXNlcnZlZF9zaXplLCBzaXplX3QgZHlu X3NpemUsCjE0NDc0OiAgICAgc2l6ZV90IGF0b21fc2l6ZSwKMTQ0NzQ6ICAgICBwY3B1X2ZjX2Nw dV9kaXN0YW5jZV9mbl90IGNwdV9kaXN0YW5jZV9mbiwKMTQ0NzQ6ICAgICBwY3B1X2ZjX2FsbG9j X2ZuX3QgYWxsb2NfZm4sCjE0NDc0OiAgICAgcGNwdV9mY19mcmVlX2ZuX3QgZnJlZV9mbik7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9f c2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHBjcHVf cGFnZV9maXJzdF9jaHVuayhzaXplX3QgcmVzZXJ2ZWRfc2l6ZSwKMTQ0NzQ6ICAgICBwY3B1X2Zj X2FsbG9jX2ZuX3QgYWxsb2NfZm4sCjE0NDc0OiAgICAgcGNwdV9mY19mcmVlX2ZuX3QgZnJlZV9m biwKMTQ0NzQ6ICAgICBwY3B1X2ZjX3BvcHVsYXRlX3B0ZV9mbl90IHBvcHVsYXRlX3B0ZV9mbik7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgKl9fYWxsb2NfcmVzZXJ2ZWRfcGVy Y3B1KHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ24pOwoxNDQ3NDogZXh0ZXJuIGJvb2wgX19pc19r ZXJuZWxfcGVyY3B1X2FkZHJlc3ModW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nICpj YW5fYWRkcik7CjE0NDc0OiBleHRlcm4gYm9vbCBpc19rZXJuZWxfcGVyY3B1X2FkZHJlc3ModW5z aWduZWQgbG9uZyBhZGRyKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCAqX19hbGxvY19wZXJjcHVfZ2ZwKHNpemVfdCBzaXplLCBzaXpl X3QgYWxpZ24sIGdmcF90IGdmcCk7CjE0NDc0OiBleHRlcm4gdm9pZCAqX19hbGxvY19wZXJjcHUo c2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbik7CjE0NDc0OiBleHRlcm4gdm9pZCBmcmVlX3BlcmNw dSh2b2lkICpfX3BkYXRhKTsKMTQ0NzQ6IGV4dGVybiBwaHlzX2FkZHJfdCBwZXJfY3B1X3B0cl90 b19waHlzKHZvaWQgKmFkZHIpOwoxNDQ3NDogIyAxNDYgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUu aCIKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIHBjcHVfbnJfcGFnZXModm9pZCk7CjE0NDc0 OiAjIDEwICIuL2luY2x1ZGUvbGludXgvYXJjaF90b3BvbG9neS5oIiAyCjE0NDc0OiAKMTQ0NzQ6 IHZvaWQgdG9wb2xvZ3lfbm9ybWFsaXplX2NwdV9zY2FsZSh2b2lkKTsKMTQ0NzQ6IGludCB0b3Bv bG9neV91cGRhdGVfY3B1X3RvcG9sb2d5KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGV2 aWNlX25vZGU7CjE0NDc0OiBib29sIHRvcG9sb2d5X3BhcnNlX2NwdV9jYXBhY2l0eShzdHJ1Y3Qg ZGV2aWNlX25vZGUgKmNwdV9ub2RlLCBpbnQgY3B1KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIF9f YXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIiKSkpIF9fdHlwZW9mX18odW5z aWduZWQgbG9uZykgY3B1X3NjYWxlOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2NoZWRfZG9tYWlu OwoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgdG9wb2xvZ3lfZ2V0X2NwdV9zY2FsZShpbnQg Y3B1KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoKih7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBf dmVyaWZ5ID0gKHR5cGVvZigoJihjcHVfc2NhbGUpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClf X3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25lZCBsb25nIF9fcHRyOyBfX2FzbV9f ICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigoJihjcHVfc2NhbGUpKSkpICopKCgm KGNwdV9zY2FsZSkpKSkpOyAodHlwZW9mKCh0eXBlb2YoKigoJihjcHVfc2NhbGUpKSkpICopKCgm KGNwdV9zY2FsZSkpKSkpIChfX3B0ciArICgoKF9fcGVyX2NwdV9vZmZzZXRbKGNwdSldKSkpKTsg fSk7IH0pKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdm9pZCB0b3BvbG9neV9zZXRfY3B1X3Nj YWxlKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGxvbmcgY2FwYWNpdHkpOwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIiIpKSkg X190eXBlb2ZfXyh1bnNpZ25lZCBsb25nKSBmcmVxX3NjYWxlOwoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKQoxNDQ3 NDogdW5zaWduZWQgbG9uZyB0b3BvbG9neV9nZXRfZnJlcV9zY2FsZShpbnQgY3B1KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAoKih7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5 cGVvZigoJihmcmVxX3NjYWxlKSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5 OyB9IHdoaWxlICgwKTsgKHsgdW5zaWduZWQgbG9uZyBfX3B0cjsgX19hc21fXyAoIiIgOiAiPXIi KF9fcHRyKSA6ICIwIigodHlwZW9mKCooKCYoZnJlcV9zY2FsZSkpKSkgKikoKCYoZnJlcV9zY2Fs ZSkpKSkpOyAodHlwZW9mKCh0eXBlb2YoKigoJihmcmVxX3NjYWxlKSkpKSAqKSgoJihmcmVxX3Nj YWxlKSkpKSkgKF9fcHRyICsgKCgoX19wZXJfY3B1X29mZnNldFsoY3B1KV0pKSkpOyB9KTsgfSkp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY3B1X3RvcG9sb2d5IHsKMTQ0NzQ6ICBp bnQgdGhyZWFkX2lkOwoxNDQ3NDogIGludCBjb3JlX2lkOwoxNDQ3NDogIGludCBwYWNrYWdlX2lk OwoxNDQ3NDogIGludCBsbGNfaWQ7CjE0NDc0OiAgY3B1bWFza190IHRocmVhZF9zaWJsaW5nOwox NDQ3NDogIGNwdW1hc2tfdCBjb3JlX3NpYmxpbmc7CjE0NDc0OiAgY3B1bWFza190IGxsY19zaWJs aW5nOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzEgIi4vaW5jbHVkZS9saW51eC90b3BvbG9neS5oIiAy CjE0NDc0OiAjIDQ2ICIuL2luY2x1ZGUvbGludXgvdG9wb2xvZ3kuaCIKMTQ0NzQ6IGludCBhcmNo X3VwZGF0ZV9jcHVfdG9wb2xvZ3kodm9pZCk7CjE0NDc0OiAjIDc1ICIuL2luY2x1ZGUvbGludXgv dG9wb2xvZ3kuaCIKMTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18o Ii5kYXRhLi5yZWFkX21vc3RseSIpKSkgbm9kZV9yZWNsYWltX2Rpc3RhbmNlOwoxNDQ3NDogIyAx NzcgIi4vaW5jbHVkZS9saW51eC90b3BvbG9neS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG51bWFfbWVtX2lkKHZv aWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG51bWFfbm9kZV9pZCgpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG5vZGVfdG9fbWVtX25vZGUoaW50IG5vZGUp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG5vZGU7CjE0NDc0OiB9CjE0NDc0OiAjIDIxOSAiLi9p bmNsdWRlL2xpbnV4L3RvcG9sb2d5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1 X3NtdF9tYXNrKGludCBjcHUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgoKih7IGRvIHsgY29u c3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJihjcHVfc2libGluZ19tYXApKSArIDAp KSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25l ZCBsb25nIF9fcHRyOyBfX2FzbV9fICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigo JihjcHVfc2libGluZ19tYXApKSkpICopKCgmKGNwdV9zaWJsaW5nX21hcCkpKSkpOyAodHlwZW9m KCh0eXBlb2YoKigoJihjcHVfc2libGluZ19tYXApKSkpICopKCgmKGNwdV9zaWJsaW5nX21hcCkp KSkpIChfX3B0ciArICgoKF9fcGVyX2NwdV9vZmZzZXRbKGNwdSldKSkpKTsgfSk7IH0pKSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdV9j cHVfbWFzayhpbnQgY3B1KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoKHZvaWQpKCh2b2lkKShj cHUpLDApLCAoKGNvbnN0IHN0cnVjdCBjcHVtYXNrICopJl9fY3B1X29ubGluZV9tYXNrKSk7CjE0 NDc0OiB9CjE0NDc0OiAjIDEwICIuL2luY2x1ZGUvbGludXgvZ2ZwLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IHZtX2FyZWFfc3RydWN0OwoxNDQ3NDogIyAzMDggIi4vaW5jbHVkZS9saW51eC9n ZnAuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBnZnBmbGFnc190b19taWdyYXRldHlwZShjb25zdCBnZnBfdCBnZnBf ZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAgKCh2b2lkKShzaXplb2YoKCBsb25nKSgoZ2ZwX2ZsYWdz ICYgKCgoIGdmcF90KTB4MTB1KXwoKCBnZnBfdCkweDA4dSkpKSA9PSAoKCggZ2ZwX3QpMHgxMHUp fCgoIGdmcF90KTB4MDh1KSkpKSkpOwoxNDQ3NDogIGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxl dGltZV9hc3NlcnRfMzExKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQlVJTERfQlVH X09OIGZhaWxlZDogIiAiKDFVTCA8PCBHRlBfTU9WQUJMRV9TSElGVCkgIT0gX19fR0ZQX01PVkFC TEUiKSkpOyBpZiAoISghKCgxVUwgPDwgMykgIT0gMHgwOHUpKSkgX19jb21waWxldGltZV9hc3Nl cnRfMzExKCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxl dGltZV9hc3NlcnRfMzEyKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQlVJTERfQlVH X09OIGZhaWxlZDogIiAiKF9fX0dGUF9NT1ZBQkxFID4+IEdGUF9NT1ZBQkxFX1NISUZUKSAhPSBN SUdSQVRFX01PVkFCTEUiKSkpOyBpZiAoISghKCgweDA4dSA+PiAzKSAhPSBNSUdSQVRFX01PVkFC TEUpKSkgX19jb21waWxldGltZV9hc3NlcnRfMzEyKCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogCjE0 NDc0OiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEocGFnZV9ncm91cF9ieV9tb2JpbGl0eV9kaXNh YmxlZCksIDApKQoxNDQ3NDogICByZXR1cm4gTUlHUkFURV9VTk1PVkFCTEU7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHJldHVybiAoZ2ZwX2ZsYWdzICYgKCgoIGdmcF90KTB4MTB1KXwoKCBnZnBf dCkweDA4dSkpKSA+PiAzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBnZnBmbGFnc19hbGxvd19ibG9ja2luZyhjb25zdCBnZnBfdCBnZnBfZmxhZ3MpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuICEhKGdmcF9mbGFncyAmICgoIGdmcF90KTB4NDAwdSkpOwoxNDQ3 NDogfQoxNDQ3NDogIyAzNDUgIi4vaW5jbHVkZS9saW51eC9nZnAuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZ2Zw ZmxhZ3Nfbm9ybWFsX2NvbnRleHQoY29uc3QgZ2ZwX3QgZ2ZwX2ZsYWdzKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiAoZ2ZwX2ZsYWdzICYgKCgoIGdmcF90KTB4NDAwdSkgfCAoKCBnZnBfdCkweDIw MDAwdSkpKSA9PQoxNDQ3NDogICAoKCBnZnBfdCkweDQwMHUpOwoxNDQ3NDogfQoxNDQ3NDogIyA0 NDEgIi4vaW5jbHVkZS9saW51eC9nZnAuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGVudW0gem9uZV90eXBlIGdmcF96b25l KGdmcF90IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIGVudW0gem9uZV90eXBlIHo7CjE0NDc0OiAg aW50IGJpdCA9ICggaW50KSAoZmxhZ3MgJiAoKCggZ2ZwX3QpMHgwMXUpfCgoIGdmcF90KTB4MDJ1 KXwoKCBnZnBfdCkweDA0dSl8KCggZ2ZwX3QpMHgwOHUpKSk7CjE0NDc0OiAKMTQ0NzQ6ICB6ID0g KCggKFpPTkVfTk9STUFMIDw8IDAgKiAyKSB8IChaT05FX0RNQSA8PCAweDAxdSAqIDIpIHwgKFpP TkVfTk9STUFMIDw8IDB4MDJ1ICogMikgfCAoWk9ORV9ETUEzMiA8PCAweDA0dSAqIDIpIHwgKFpP TkVfTk9STUFMIDw8IDB4MDh1ICogMikgfCAoWk9ORV9ETUEgPDwgKDB4MDh1IHwgMHgwMXUpICog MikgfCAoWk9ORV9NT1ZBQkxFIDw8ICgweDA4dSB8IDB4MDJ1KSAqIDIpIHwgKFpPTkVfRE1BMzIg PDwgKDB4MDh1IHwgMHgwNHUpICogMikpID4+IChiaXQgKiAyKSkgJgoxNDQ3NDogICAgICAgKCgx IDw8IDIpIC0gMSk7CjE0NDc0OiAgKCh2b2lkKShzaXplb2YoKCBsb25nKSgoKCAxIDw8ICgweDAx dSB8IDB4MDJ1KSB8IDEgPDwgKDB4MDF1IHwgMHgwNHUpIHwgMSA8PCAoMHgwNHUgfCAweDAydSkg fCAxIDw8ICgweDAxdSB8IDB4MDR1IHwgMHgwMnUpIHwgMSA8PCAoMHgwOHUgfCAweDAydSB8IDB4 MDF1KSB8IDEgPDwgKDB4MDh1IHwgMHgwNHUgfCAweDAxdSkgfCAxIDw8ICgweDA4dSB8IDB4MDR1 IHwgMHgwMnUpIHwgMSA8PCAoMHgwOHUgfCAweDA0dSB8IDB4MDF1IHwgMHgwMnUpICkgPj4gYml0 KSAmIDEpKSkpOwoxNDQ3NDogIHJldHVybiB6OwoxNDQ3NDogfQoxNDQ3NDogIyA0NTkgIi4vaW5j bHVkZS9saW51eC9nZnAuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBnZnBfem9uZWxpc3QoZ2ZwX3QgZmxhZ3MpCjE0 NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gWk9O RUxJU1RfRkFMTEJBQ0s7CjE0NDc0OiB9CjE0NDc0OiAjIDQ3NyAiLi9pbmNsdWRlL2xpbnV4L2dm cC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgc3RydWN0IHpvbmVsaXN0ICpub2RlX3pvbmVsaXN0KGludCBuaWQsIGdmcF90 IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoJmNvbnRpZ19wYWdlX2RhdGEpLT5ub2Rl X3pvbmVsaXN0cyArIGdmcF96b25lbGlzdChmbGFncyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBhcmNoX2ZyZWVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG9yZGVy KSB7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hfYWxsb2NfcGFnZShzdHJ1Y3Qg cGFnZSAqcGFnZSwgaW50IG9yZGVyKSB7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg cGFnZSAqCjE0NDc0OiBfX2FsbG9jX3BhZ2VzX25vZGVtYXNrKGdmcF90IGdmcF9tYXNrLCB1bnNp Z25lZCBpbnQgb3JkZXIsIGludCBwcmVmZXJyZWRfbmlkLAoxNDQ3NDogICAgICAgIG5vZGVtYXNr X3QgKm5vZGVtYXNrKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHBhZ2UgKgoxNDQ3NDogX19hbGxv Y19wYWdlcyhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCBpbnQgcHJlZmVycmVk X25pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19hbGxvY19wYWdlc19ub2RlbWFzayhnZnBf bWFzaywgb3JkZXIsIHByZWZlcnJlZF9uaWQsICgodm9pZCAqKTApKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgcGFnZSAqCjE0 NDc0OiBfX2FsbG9jX3BhZ2VzX25vZGUoaW50IG5pZCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVk IGludCBvcmRlcikKMTQ0NzQ6IHsKMTQ0NzQ6ICAoKHZvaWQpKHNpemVvZigoIGxvbmcpKG5pZCA8 IDAgfHwgbmlkID49ICgxIDw8IDApKSkpKTsKMTQ0NzQ6ICAoKHZvaWQpKHNpemVvZigoIGxvbmcp KChnZnBfbWFzayAmICgoIGdmcF90KTB4MjAwMDAwdSkpICYmICFub2RlX3N0YXRlKChuaWQpLCBO X09OTElORSkpKSkpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIF9fYWxsb2NfcGFnZXMoZ2ZwX21h c2ssIG9yZGVyLCBuaWQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHBhZ2UgKmFsbG9jX3BhZ2VzX25vZGUoaW50 IG5pZCwgZ2ZwX3QgZ2ZwX21hc2ssCjE0NDc0OiAgICAgICB1bnNpZ25lZCBpbnQgb3JkZXIpCjE0 NDc0OiB7CjE0NDc0OiAgaWYgKG5pZCA9PSAoLTEpKQoxNDQ3NDogICBuaWQgPSBudW1hX21lbV9p ZCgpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIF9fYWxsb2NfcGFnZXNfbm9kZShuaWQsIGdmcF9t YXNrLCBvcmRlcik7CjE0NDc0OiB9CjE0NDc0OiAjIDU1MyAiLi9pbmNsdWRlL2xpbnV4L2dmcC5o IgoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19nZXRfZnJlZV9wYWdlcyhnZnBfdCBnZnBf bWFzaywgdW5zaWduZWQgaW50IG9yZGVyKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIGdl dF96ZXJvZWRfcGFnZShnZnBfdCBnZnBfbWFzayk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgKmFsbG9j X3BhZ2VzX2V4YWN0KHNpemVfdCBzaXplLCBnZnBfdCBnZnBfbWFzayk7CjE0NDc0OiB2b2lkIGZy ZWVfcGFnZXNfZXhhY3Qodm9pZCAqdmlydCwgc2l6ZV90IHNpemUpOwoxNDQ3NDogdm9pZCAqIF9f YXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIubWVtaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9f KChfX2NvbGRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBhbGxv Y19wYWdlc19leGFjdF9uaWQoaW50IG5pZCwgc2l6ZV90IHNpemUsIGdmcF90IGdmcF9tYXNrKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIHZvaWQgX19mcmVlX3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25l ZCBpbnQgb3JkZXIpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25n IGFkZHIsIHVuc2lnbmVkIGludCBvcmRlcik7CjE0NDc0OiBleHRlcm4gdm9pZCBmcmVlX3VucmVm X3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZnJlZV91bnJlZl9w YWdlX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBw YWdlX2ZyYWdfY2FjaGU7CjE0NDc0OiBleHRlcm4gdm9pZCBfX3BhZ2VfZnJhZ19jYWNoZV9kcmFp bihzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IGNvdW50KTsKMTQ0NzQ6IGV4dGVybiB2 b2lkICpwYWdlX2ZyYWdfYWxsb2Moc3RydWN0IHBhZ2VfZnJhZ19jYWNoZSAqbmMsCjE0NDc0OiAg ICAgICAgIHVuc2lnbmVkIGludCBmcmFnc3osIGdmcF90IGdmcF9tYXNrKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIHBhZ2VfZnJhZ19mcmVlKHZvaWQgKmFkZHIpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiB2b2lkIHBhZ2VfYWxsb2NfaW5pdCh2b2lkKTsKMTQ0NzQ6IHZvaWQg ZHJhaW5fem9uZV9wYWdlcyhzdHJ1Y3Qgem9uZSAqem9uZSwgc3RydWN0IHBlcl9jcHVfcGFnZXMg KnBjcCk7CjE0NDc0OiB2b2lkIGRyYWluX2FsbF9wYWdlcyhzdHJ1Y3Qgem9uZSAqem9uZSk7CjE0 NDc0OiB2b2lkIGRyYWluX2xvY2FsX3BhZ2VzKHN0cnVjdCB6b25lICp6b25lKTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCBwYWdlX2FsbG9jX2luaXRfbGF0ZSh2b2lkKTsKMTQ0NzQ6ICMgNTk0ICIuL2lu Y2x1ZGUvbGludXgvZ2ZwLmgiCjE0NDc0OiBleHRlcm4gZ2ZwX3QgZ2ZwX2FsbG93ZWRfbWFzazsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBib29sIGdmcF9wZm1lbWFsbG9jX2FsbG93ZWQoZ2ZwX3Qg Z2ZwX21hc2spOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBwbV9yZXN0cmljdF9nZnBfbWFz ayh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHBtX3Jlc3RvcmVfZ2ZwX21hc2sodm9pZCk7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wgcG1fc3VzcGVuZGVkX3N0b3JhZ2Uodm9p ZCk7CjE0NDc0OiAjIDYxMyAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIgoxNDQ3NDogZXh0ZXJuIGlu dCBhbGxvY19jb250aWdfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBl bmQsCjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBtaWdyYXRldHlwZSwgZ2ZwX3QgZ2ZwX21hc2sp OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBwYWdlICphbGxvY19jb250aWdfcGFnZXModW5zaWduZWQg bG9uZyBucl9wYWdlcywgZ2ZwX3QgZ2ZwX21hc2ssCjE0NDc0OiAgICAgICAgICAgIGludCBuaWQs IG5vZGVtYXNrX3QgKm5vZGVtYXNrKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBmcmVlX2NvbnRpZ19y YW5nZSh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTsKMTQ0NzQ6ICMg MTYgIi4vaW5jbHVkZS9saW51eC9zbGFiLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4 L292ZXJmbG93LmgiIDEKMTQ0NzQ6ICMgMjUzICIuL2luY2x1ZGUvbGludXgvb3ZlcmZsb3cuaCIK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzaXplX3QgYXJy YXlfc2l6ZShzaXplX3QgYSwgc2l6ZV90IGIpCjE0NDc0OiB7CjE0NDc0OiAgc2l6ZV90IGJ5dGVz OwoxNDQ3NDogCjE0NDc0OiAgaWYgKCh7IHR5cGVvZihhKSBfX2EgPSAoYSk7IHR5cGVvZihiKSBf X2IgPSAoYik7IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAodm9pZCkgKCZfX2EgPT0g Jl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fbXVsX292ZXJmbG93KF9fYSwg X19iLCBfX2QpOyB9KSkKMTQ0NzQ6ICAgcmV0dXJuICh+KHNpemVfdCkwKTsKMTQ0NzQ6IAoxNDQ3 NDogIHJldHVybiBieXRlczsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjc1ICIuL2luY2x1ZGUvbGludXgv b3ZlcmZsb3cuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p KSBzaXplX3QgYXJyYXkzX3NpemUoc2l6ZV90IGEsIHNpemVfdCBiLCBzaXplX3QgYykKMTQ0NzQ6 IHsKMTQ0NzQ6ICBzaXplX3QgYnl0ZXM7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoKHsgdHlwZW9mKGEp IF9fYSA9IChhKTsgdHlwZW9mKGIpIF9fYiA9IChiKTsgdHlwZW9mKCZieXRlcykgX19kID0gKCZi eXRlcyk7ICh2b2lkKSAoJl9fYSA9PSAmX19iKTsgKHZvaWQpICgmX19hID09IF9fZCk7IF9fYnVp bHRpbl9tdWxfb3ZlcmZsb3coX19hLCBfX2IsIF9fZCk7IH0pKQoxNDQ3NDogICByZXR1cm4gKH4o c2l6ZV90KTApOwoxNDQ3NDogIGlmICgoeyB0eXBlb2YoYnl0ZXMpIF9fYSA9IChieXRlcyk7IHR5 cGVvZihjKSBfX2IgPSAoYyk7IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAodm9pZCkg KCZfX2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fbXVsX292ZXJm bG93KF9fYSwgX19iLCBfX2QpOyB9KSkKMTQ0NzQ6ICAgcmV0dXJuICh+KHNpemVfdCkwKTsKMTQ0 NzQ6IAoxNDQ3NDogIHJldHVybiBieXRlczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jl c3VsdF9fKSkgc2l6ZV90IF9fYWJfY19zaXplKHNpemVfdCBhLCBzaXplX3QgYiwgc2l6ZV90IGMp CjE0NDc0OiB7CjE0NDc0OiAgc2l6ZV90IGJ5dGVzOwoxNDQ3NDogCjE0NDc0OiAgaWYgKCh7IHR5 cGVvZihhKSBfX2EgPSAoYSk7IHR5cGVvZihiKSBfX2IgPSAoYik7IHR5cGVvZigmYnl0ZXMpIF9f ZCA9ICgmYnl0ZXMpOyAodm9pZCkgKCZfX2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2Qp OyBfX2J1aWx0aW5fbXVsX292ZXJmbG93KF9fYSwgX19iLCBfX2QpOyB9KSkKMTQ0NzQ6ICAgcmV0 dXJuICh+KHNpemVfdCkwKTsKMTQ0NzQ6ICBpZiAoKHsgdHlwZW9mKGJ5dGVzKSBfX2EgPSAoYnl0 ZXMpOyB0eXBlb2YoYykgX19iID0gKGMpOyB0eXBlb2YoJmJ5dGVzKSBfX2QgPSAoJmJ5dGVzKTsg KHZvaWQpICgmX19hID09ICZfX2IpOyAodm9pZCkgKCZfX2EgPT0gX19kKTsgX19idWlsdGluX2Fk ZF9vdmVyZmxvdyhfX2EsIF9fYiwgX19kKTsgfSkpCjE0NDc0OiAgIHJldHVybiAofihzaXplX3Qp MCk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gYnl0ZXM7CjE0NDc0OiB9CjE0NDc0OiAjIDE3ICIu L2luY2x1ZGUvbGludXgvc2xhYi5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2lu Y2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmgiIDEKMTQ0NzQ6ICMgNTkgIi4vaW5jbHVkZS9s aW51eC9wZXJjcHUtcmVmY291bnQuaCIKMTQ0NzQ6IHN0cnVjdCBwZXJjcHVfcmVmOwoxNDQ3NDog dHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNfdCkoc3RydWN0IHBlcmNwdV9yZWYgKik7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgX19QRVJDUFVfUkVGX0FUT01JQyA9 IDFMVSA8PCAwLAoxNDQ3NDogIF9fUEVSQ1BVX1JFRl9ERUFEID0gMUxVIDw8IDEsCjE0NDc0OiAg X19QRVJDUFVfUkVGX0FUT01JQ19ERUFEID0gX19QRVJDUFVfUkVGX0FUT01JQyB8IF9fUEVSQ1BV X1JFRl9ERUFELAoxNDQ3NDogCjE0NDc0OiAgX19QRVJDUFVfUkVGX0ZMQUdfQklUUyA9IDIsCjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgUEVSQ1BVX1JFRl9J TklUX0FUT01JQyA9IDEgPDwgMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBQRVJDUFVfUkVGX0lOSVRfREVBRCA9IDEgPDwgMSwKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFBFUkNQVV9SRUZfQUxMT1dfUkVJTklU ID0gMSA8PCAyLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBlcmNwdV9yZWYgewox NDQ3NDogIGF0b21pY19sb25nX3QgY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHBlcmNwdV9jb3VudF9wdHI7CjE0NDc0OiAgcGVyY3B1 X3JlZl9mdW5jX3QgKnJlbGVhc2U7CjE0NDc0OiAgcGVyY3B1X3JlZl9mdW5jX3QgKmNvbmZpcm1f c3dpdGNoOwoxNDQ3NDogIGJvb2wgZm9yY2VfYXRvbWljOjE7CjE0NDc0OiAgYm9vbCBhbGxvd19y ZWluaXQ6MTsKMTQ0NzQ6ICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCByY3U7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHBl cmNwdV9yZWZfaW5pdChzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLAoxNDQ3NDogICAgICBwZXJjcHVf cmVmX2Z1bmNfdCAqcmVsZWFzZSwgdW5zaWduZWQgaW50IGZsYWdzLAoxNDQ3NDogICAgICBnZnBf dCBnZnApOwoxNDQ3NDogdm9pZCBwZXJjcHVfcmVmX2V4aXQoc3RydWN0IHBlcmNwdV9yZWYgKnJl Zik7CjE0NDc0OiB2b2lkIHBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pYyhzdHJ1Y3QgcGVyY3B1 X3JlZiAqcmVmLAoxNDQ3NDogICAgICBwZXJjcHVfcmVmX2Z1bmNfdCAqY29uZmlybV9zd2l0Y2gp OwoxNDQ3NDogdm9pZCBwZXJjcHVfcmVmX3N3aXRjaF90b19hdG9taWNfc3luYyhzdHJ1Y3QgcGVy Y3B1X3JlZiAqcmVmKTsKMTQ0NzQ6IHZvaWQgcGVyY3B1X3JlZl9zd2l0Y2hfdG9fcGVyY3B1KHN0 cnVjdCBwZXJjcHVfcmVmICpyZWYpOwoxNDQ3NDogdm9pZCBwZXJjcHVfcmVmX2tpbGxfYW5kX2Nv bmZpcm0oc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwKMTQ0NzQ6ICAgICAgcGVyY3B1X3JlZl9mdW5j X3QgKmNvbmZpcm1fa2lsbCk7CjE0NDc0OiB2b2lkIHBlcmNwdV9yZWZfcmVzdXJyZWN0KHN0cnVj dCBwZXJjcHVfcmVmICpyZWYpOwoxNDQ3NDogdm9pZCBwZXJjcHVfcmVmX3JlaW5pdChzdHJ1Y3Qg cGVyY3B1X3JlZiAqcmVmKTsKMTQ0NzQ6ICMgMTM0ICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LXJl ZmNvdW50LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBlcmNwdV9yZWZfa2lsbChzdHJ1Y3QgcGVyY3B1X3JlZiAq cmVmKQoxNDQ3NDogewoxNDQ3NDogIHBlcmNwdV9yZWZfa2lsbF9hbmRfY29uZmlybShyZWYsICgo dm9pZCAqKTApKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBfX3JlZl9pc19wZXJjcHUoc3RydWN0IHBl cmNwdV9yZWYgKnJlZiwKMTQ0NzQ6ICAgICAgICB1bnNpZ25lZCBsb25nICoqcGVyY3B1X2NvdW50 cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHBlcmNwdV9wdHI7CjE0NDc0OiAjIDE2 MSAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgoxNDQ3NDogIHBlcmNwdV9wdHIg PSAoeyB1bmlvbiB7IHR5cGVvZihyZWYtPnBlcmNwdV9jb3VudF9wdHIpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYocmVmLT5wZXJjcHVfY291bnRf cHRyKSwgX191Ll9fYywgc2l6ZW9mKHJlZi0+cGVyY3B1X2NvdW50X3B0cikpOyBlbHNlIF9fcmVh ZF9vbmNlX3NpemVfbm9jaGVjaygmKHJlZi0+cGVyY3B1X2NvdW50X3B0ciksIF9fdS5fX2MsIHNp emVvZihyZWYtPnBlcmNwdV9jb3VudF9wdHIpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFs OyB9KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHBlcmNwdV9wdHIgJiBfX1BFUkNQ VV9SRUZfQVRPTUlDX0RFQUQpLCAwKSkKMTQ0NzQ6ICAgcmV0dXJuIGZhbHNlOwoxNDQ3NDogCjE0 NDc0OiAgKnBlcmNwdV9jb3VudHAgPSAodW5zaWduZWQgbG9uZyAqKXBlcmNwdV9wdHI7CjE0NDc0 OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiAjIDE4NSAiLi9pbmNsdWRlL2xpbnV4L3Bl cmNwdS1yZWZjb3VudC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZXJjcHVfcmVmX2dldF9tYW55KHN0cnVjdCBw ZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyAqcGVyY3B1X2NvdW50OwoxNDQ3NDogCjE0NDc0OiAgcmN1X3JlYWRfbG9jaygpOwox NDQ3NDogCjE0NDc0OiAgaWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsICZwZXJjcHVfY291bnQpKQox NDQ3NDogICBkbyB7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJigq cGVyY3B1X2NvdW50KSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdo aWxlICgwKTsgc3dpdGNoKHNpemVvZigqcGVyY3B1X2NvdW50KSkgeyBjYXNlIDE6IGRvIHsgdHlw ZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18g PSAoX19idWlsdGluX2NvbnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkp ID8gKGludCkobnIpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9 IChucik7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkp KSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lE X18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXyko bnIpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJp bmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2Ug aWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAl MSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAo KHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZv bGF0aWxlICgiaW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGls ZSAoImFkZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSA6ICJyaSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09 IDEpIGFzbSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRl Y3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBh c20gdm9sYXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVy Y3B1X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2Jh ZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDI6IGRvIHsgdHlwZWRl ZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAo X19idWlsdGluX2NvbnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8g KGludCkobnIpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChu cik7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7 IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18g PT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIp KSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3 ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBh b19UX18pKG5yKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0 aWxlICgiaW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAo ImFkZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6 ICJyaSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEp IGFzbSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3Eg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20g dm9sYXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1 X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9w ZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDQ6IGRvIHsgdHlwZWRlZiB0 eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19i dWlsdGluX2NvbnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8gKGlu dCkobnIpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChucik7 ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNh c2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0g LTEpIGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIpKSk7 IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19U X18pKG5yKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxl ICgiaW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBl bHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFk ZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJy aSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFz bSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3EgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9s YXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2Nv dW50KSkgOiAicmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJj cHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDg6IGRvIHsgdHlwZWRlZiB0eXBl b2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWls dGluX2NvbnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8gKGludCko bnIpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChucik7ICh2 b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2Ug MTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEp IGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIpKSk7IGJy ZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19J RF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18p KG5yKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgi aW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNl IGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwg JTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIg KChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2 b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3EgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRp bGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkgOiAicmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVf c2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFy YW1ldGVyKCk7YnJlYWs7IH0gfSB3aGlsZSAoMCk7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICBhdG9t aWNfbG9uZ19hZGQobnIsICZyZWYtPmNvdW50KTsKMTQ0NzQ6IAoxNDQ3NDogIHJjdV9yZWFkX3Vu bG9jaygpOwoxNDQ3NDogfQoxNDQ3NDogIyAyMDcgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcmVm Y291bnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X3JlZl9nZXQoc3RydWN0IHBlcmNwdV9yZWYgKnJl ZikKMTQ0NzQ6IHsKMTQ0NzQ6ICBwZXJjcHVfcmVmX2dldF9tYW55KHJlZiwgMSk7CjE0NDc0OiB9 CjE0NDc0OiAjIDIyMiAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBwZXJjcHVfcmVmX3RyeWdldF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsCjE0NDc0 OiAgICAgICAgdW5zaWduZWQgbG9uZyBucikKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n ICpwZXJjcHVfY291bnQ7CjE0NDc0OiAgYm9vbCByZXQ7CjE0NDc0OiAKMTQ0NzQ6ICByY3VfcmVh ZF9sb2NrKCk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgJnBlcmNw dV9jb3VudCkpIHsKMTQ0NzQ6ICAgZG8geyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9 ICh0eXBlb2YoKCYoKnBlcmNwdV9jb3VudCkpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBw X3ZlcmlmeTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoKnBlcmNwdV9jb3VudCkpIHsgY2Fz ZSAxOiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFvX1RfXzsgY29uc3Qg aW50IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKG5yKSAmJiAoKG5yKSA9PSAxIHx8 IChucikgPT0gLTEpKSA/IChpbnQpKG5yKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9f OyBwYW9fdG1wX18gPSAobnIpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpw ZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUg KCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVs c2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRk YiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFp IiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNt IHZvbGF0aWxlICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2Nv dW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjdyAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xh dGlsZSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSA6ICJyaSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9f ID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAo ImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxz ZSBhc20gdm9sYXRpbGUgKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq cGVyY3B1X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDg6IGlm IChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20g dm9sYXRpbGUgKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsg ZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSAy OiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50 IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKG5yKSAmJiAoKG5yKSA9PSAxIHx8IChu cikgPT0gLTEpKSA/IChpbnQpKG5yKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBw YW9fdG1wX18gPSAobnIpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpwZXJj cHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJp bmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2Ug aWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkYiAl MSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFpIiAo KHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZv bGF0aWxlICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjdyAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGls ZSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSA6ICJyaSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09 IDEpIGFzbSB2b2xhdGlsZSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRl Y2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBh c20gdm9sYXRpbGUgKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVy Y3B1X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChw YW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9s YXRpbGUgKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnBlcmNwdV9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgZGVm YXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSA0OiBk byB7IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBh b19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKG5yKSAmJiAoKG5yKSA9PSAxIHx8IChucikg PT0gLTEpKSA/IChpbnQpKG5yKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9f dG1wX18gPSAobnIpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpwZXJjcHVf Y291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNi ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkYiAlMSwg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFpIiAoKHBh b19UX18pKG5yKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0 aWxlICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjdyAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAo ImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6 ICJyaSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEp IGFzbSB2b2xhdGlsZSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2wg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20g dm9sYXRpbGUgKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1 X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9f SURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRp bGUgKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7 IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnBlcmNwdV9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgZGVmYXVs dDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSA4OiBkbyB7 IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19J RF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKG5yKSAmJiAoKG5yKSA9PSAxIHx8IChucikgPT0g LTEpKSA/IChpbnQpKG5yKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1w X18gPSAobnIpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpwZXJjcHVfY291 bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNiICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkYiAlMSwgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFpIiAoKHBhb19U X18pKG5yKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxl ICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBl bHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjdyAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFk ZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJy aSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFz bSB2b2xhdGlsZSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2wgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9s YXRpbGUgKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2Nv dW50KSkgOiAicmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURf XyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUg KCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVs c2UgYXNtIHZvbGF0aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgZGVmYXVsdDog X19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgZGVmYXVsdDogX19iYWRf c2l6ZV9jYWxsX3BhcmFtZXRlcigpO2JyZWFrOyB9IH0gd2hpbGUgKDApOwoxNDQ3NDogICByZXQg PSB0cnVlOwoxNDQ3NDogIH0gZWxzZSB7CjE0NDc0OiAgIHJldCA9IGF0b21pY19sb25nX2FkZF91 bmxlc3MoJnJlZi0+Y291bnQsIG5yLCAwKTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6ICByY3Vf cmVhZF91bmxvY2soKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiByZXQ7CjE0NDc0OiB9CjE0NDc0 OiAjIDI1MSAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBw ZXJjcHVfcmVmX3RyeWdldChzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiBwZXJjcHVfcmVmX3RyeWdldF9tYW55KHJlZiwgMSk7CjE0NDc0OiB9CjE0NDc0OiAj IDI3MSAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBwZXJj cHVfcmVmX3RyeWdldF9saXZlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpCjE0NDc0OiB7CjE0NDc0 OiAgdW5zaWduZWQgbG9uZyAqcGVyY3B1X2NvdW50OwoxNDQ3NDogIGJvb2wgcmV0ID0gZmFsc2U7 CjE0NDc0OiAKMTQ0NzQ6ICByY3VfcmVhZF9sb2NrKCk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoX19y ZWZfaXNfcGVyY3B1KHJlZiwgJnBlcmNwdV9jb3VudCkpIHsKMTQ0NzQ6ICAgZG8geyBkbyB7IGNv bnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoKnBlcmNwdV9jb3VudCkpICsgMCkp KCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXpl b2YoKnBlcmNwdV9jb3VudCkpIHsgY2FzZSAxOiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1 X2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFu dF9wKDEpICYmICgoMSkgPT0gMSB8fCAoMSkgPT0gLTEpKSA/IChpbnQpKDEpIDogMDsgaWYgKDAp IHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9ICgxKTsgKHZvaWQpcGFvX3RtcF9fOyB9 IHN3aXRjaCAoc2l6ZW9mKCgqcGVyY3B1X2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18g PT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq cGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgi ZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNl IGFzbSB2b2xhdGlsZSAoImFkZGIgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpw ZXJjcHVfY291bnQpKSA6ICJxaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSAyOiBpZiAo cGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZv bGF0aWxlICgiZGVjdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2Fz ZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jbCAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAt MSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVy Y3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwgJTEsICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgxKSkpOyBi cmVhazsgY2FzZSA4OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9f SURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9f KSgxKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgw KTticmVhazsgY2FzZSAyOiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFv X1RfXzsgY29uc3QgaW50IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKDEpICYmICgo MSkgPT0gMSB8fCAoMSkgPT0gLTEpKSA/IChpbnQpKDEpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBw YW9fdG1wX187IHBhb190bXBfXyA9ICgxKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6 ZW9mKCgqcGVyY3B1X2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZv bGF0aWxlICgiaW5jYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGls ZSAoImFkZGIgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSA6ICJxaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0g MSkgYXNtIHZvbGF0aWxlICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVy Y3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVj dyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFz bSB2b2xhdGlsZSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJj cHVfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFv X0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0 aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkp OyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSA4 OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkg YXNtIHZvbGF0aWxlICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1 X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKSgxKSkpOyBicmVh azsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2Fz ZSA0OiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFvX1RfXzsgY29uc3Qg aW50IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKDEpICYmICgoMSkgPT0gMSB8fCAo MSkgPT0gLTEpKSA/IChpbnQpKDEpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBh b190bXBfXyA9ICgxKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqcGVyY3B1 X2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5j YiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlm IChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGIgJTEs ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJxaSIgKChw YW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0 aWxlICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjdyAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAo ImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6 ICJyaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkg YXNtIHZvbGF0aWxlICgiaW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1 X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2 b2xhdGlsZSAoImFkZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVf Y291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFvX0lE X18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxl ICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBl bHNlIGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgZGVmYXVsdDog X19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSA4OiBkbyB7IHR5 cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19JRF9f ID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKDEpICYmICgoMSkgPT0gMSB8fCAoMSkgPT0gLTEpKSA/ IChpbnQpKDEpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9ICgx KTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqcGVyY3B1X2NvdW50KSkpIHsg Y2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jYiAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9 PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq cGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGIgJTEsICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJxaSIgKChwYW9fVF9fKSgxKSkp OyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jdyAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChw YW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZHcgJTEsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChwYW9f VF9fKSgxKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxl ICgiaW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBl bHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFk ZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJy aSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFvX0lEX18gPT0gMSkgYXNt IHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2Nv dW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjcSAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xh dGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSA6ICJyZSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1 X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgZGVmYXVsdDogX19iYWRfc2l6ZV9jYWxsX3Bh cmFtZXRlcigpO2JyZWFrOyB9IH0gd2hpbGUgKDApOwoxNDQ3NDogICByZXQgPSB0cnVlOwoxNDQ3 NDogIH0gZWxzZSBpZiAoIShyZWYtPnBlcmNwdV9jb3VudF9wdHIgJiBfX1BFUkNQVV9SRUZfREVB RCkpIHsKMTQ0NzQ6ICAgcmV0ID0gYXRvbWljX2xvbmdfaW5jX25vdF96ZXJvKCZyZWYtPmNvdW50 KTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6ICByY3VfcmVhZF91bmxvY2soKTsKMTQ0NzQ6IAox NDQ3NDogIHJldHVybiByZXQ7CjE0NDc0OiB9CjE0NDc0OiAjIDMwMCAiLi9pbmNsdWRlL2xpbnV4 L3BlcmNwdS1yZWZjb3VudC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVj dCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpCjE0NDc0OiB7CjE0NDc0OiAgdW5z aWduZWQgbG9uZyAqcGVyY3B1X2NvdW50OwoxNDQ3NDogCjE0NDc0OiAgcmN1X3JlYWRfbG9jaygp OwoxNDQ3NDogCjE0NDc0OiAgaWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsICZwZXJjcHVfY291bnQp KQoxNDQ3NDogICBkbyB7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigo JigqcGVyY3B1X2NvdW50KSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9 IHdoaWxlICgwKTsgc3dpdGNoKHNpemVvZigqcGVyY3B1X2NvdW50KSkgeyBjYXNlIDE6IGRvIHsg dHlwZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lE X18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkg JiYgKCgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA9PSAxIHx8ICgtKHR5cGVvZigqcGVy Y3B1X2NvdW50KSkobnIpKSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkp KG5yKSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKC0odHlw ZW9mKCpwZXJjcHVfY291bnQpKShucikpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXpl b2YoKCpwZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9s YXRpbGUgKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxl ICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp IDogInFpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFr OyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9f ID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0o dHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURf XyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUg KCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVs c2UgYXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQp KShucikpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUg KCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVs c2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNxICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRk cSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJl IiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFrOyBkZWZh dWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDI6IGRv IHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFv X0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5y KSkgJiYgKCgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA9PSAxIHx8ICgtKHR5cGVvZigq cGVyY3B1X2NvdW50KSkobnIpKSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnBlcmNwdV9jb3Vu dCkpKG5yKSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKC0o dHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChz aXplb2YoKCpwZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20g dm9sYXRpbGUgKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0 aWxlICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpIDogInFpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJy ZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19J RF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18p KC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9f SURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRp bGUgKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7 IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291 bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRp bGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7 IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNxICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgi YWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDog InJlIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFrOyBk ZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDQ6 IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQg cGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkp KG5yKSkgJiYgKCgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA9PSAxIHx8ICgtKHR5cGVv ZigqcGVyY3B1X2NvdW50KSkobnIpKSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnBlcmNwdV9j b3VudCkpKG5yKSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0g KC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNo IChzaXplb2YoKCpwZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBh c20gdm9sYXRpbGUgKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVf Y291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZv bGF0aWxlICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpIDogInFpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7 IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19U X18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChw YW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9s YXRpbGUgKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVf Y291bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9s YXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNxICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxl ICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp IDogInJlIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFr OyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNl IDg6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBp bnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnBlcmNwdV9jb3Vu dCkpKG5yKSkgJiYgKCgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA9PSAxIHx8ICgtKHR5 cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnBlcmNw dV9jb3VudCkpKG5yKSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9f ID0gKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpOyAodm9pZClwYW9fdG1wX187IH0gc3dp dGNoIChzaXplb2YoKCpwZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAx KSBhc20gdm9sYXRpbGUgKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJj cHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNi ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNt IHZvbGF0aWxlICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikp KSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3 ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBh b19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDQ6IGlm IChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20g dm9sYXRpbGUgKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJj cHVfY291bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20g dm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNxICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0 aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpIDogInJlIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBk ZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7YnJlYWs7IH0gfSB3aGlsZSAoMCk7 CjE0NDc0OiAgZWxzZSBpZiAoX19idWlsdGluX2V4cGVjdCghIShhdG9taWNfbG9uZ19zdWJfYW5k X3Rlc3QobnIsICZyZWYtPmNvdW50KSksIDApKQoxNDQ3NDogICByZWYtPnJlbGVhc2UocmVmKTsK MTQ0NzQ6IAoxNDQ3NDogIHJjdV9yZWFkX3VubG9jaygpOwoxNDQ3NDogfQoxNDQ3NDogIyAzMjMg Ii4vaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X3Jl Zl9wdXQoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikKMTQ0NzQ6IHsKMTQ0NzQ6ICBwZXJjcHVfcmVm X3B1dF9tYW55KHJlZiwgMSk7CjE0NDc0OiB9CjE0NDc0OiAjIDMzNyAiLi9pbmNsdWRlL2xpbnV4 L3BlcmNwdS1yZWZjb3VudC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBwZXJjcHVfcmVmX2lzX2R5aW5nKHN0cnVj dCBwZXJjcHVfcmVmICpyZWYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJlZi0+cGVyY3B1X2Nv dW50X3B0ciAmIF9fUEVSQ1BVX1JFRl9ERUFEOwoxNDQ3NDogfQoxNDQ3NDogIyAzNTAgIi4vaW5j bHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcGVyY3B1X3JlZl9pc196 ZXJvKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9u ZyAqcGVyY3B1X2NvdW50OwoxNDQ3NDogCjE0NDc0OiAgaWYgKF9fcmVmX2lzX3BlcmNwdShyZWYs ICZwZXJjcHVfY291bnQpKQoxNDQ3NDogICByZXR1cm4gZmFsc2U7CjE0NDc0OiAgcmV0dXJuICFh dG9taWNfbG9uZ19yZWFkKCZyZWYtPmNvdW50KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjAgIi4vaW5j bHVkZS9saW51eC9zbGFiLmgiIDIKMTQ0NzQ6ICMgMTM2ICIuL2luY2x1ZGUvbGludXgvc2xhYi5o IgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgva2FzYW4uaCIgMQoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGttZW1fY2FjaGU7 CjE0NDc0OiBzdHJ1Y3QgcGFnZTsKMTQ0NzQ6IHN0cnVjdCB2bV9zdHJ1Y3Q7CjE0NDc0OiBzdHJ1 Y3QgdGFza19zdHJ1Y3Q7CjE0NDc0OiAjIDEwMSAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGthc2FuX3VucG9pc29uX3NoYWRvdyhjb25zdCB2b2lkICphZGRyZXNzLCBzaXpl X3Qgc2l6ZSkge30KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl91bnBvaXNvbl90YXNrX3N0YWNr KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fdW5wb2lzb25f c3RhY2tfYWJvdmVfc3BfdG8oY29uc3Qgdm9pZCAqd2F0ZXJtYXJrKSB7fQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGthc2FuX2VuYWJsZV9jdXJyZW50KHZvaWQpIHt9CjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX2Rp c2FibGVfY3VycmVudCh2b2lkKSB7fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX2FsbG9jX3Bh Z2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpIHt9CjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGthc2FuX2ZyZWVfcGFnZXMoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcikg e30KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl9jYWNoZV9jcmVhdGUoc3RydWN0IGttZW1fY2Fj aGUgKmNhY2hlLAoxNDQ3NDogICAgICAgICAgIHVuc2lnbmVkIGludCAqc2l6ZSwKMTQ0NzQ6ICAg ICAgICAgICBzbGFiX2ZsYWdzX3QgKmZsYWdzKSB7fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2Fu X3BvaXNvbl9zbGFiKHN0cnVjdCBwYWdlICpwYWdlKSB7fQoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl91bnBv aXNvbl9vYmplY3RfZGF0YShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsCjE0NDc0OiAgICAgIHZv aWQgKm9iamVjdCkge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fcG9pc29uX29iamVjdF9kYXRhKHN0cnVj dCBrbWVtX2NhY2hlICpjYWNoZSwKMTQ0NzQ6ICAgICAgdm9pZCAqb2JqZWN0KSB7fQoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCAqa2FzYW5faW5pdF9zbGFiX29iaihzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsCjE0NDc0 OiAgICAgY29uc3Qgdm9pZCAqb2JqZWN0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodm9pZCAq KW9iamVjdDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqa2FzYW5fa21hbGxvY19sYXJn ZSh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBnZnBfdCBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gcHRyOwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl9rZnJlZV9sYXJnZSh2b2lkICpw dHIsIHVuc2lnbmVkIGxvbmcgaXApIHt9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX3BvaXNvbl9rZnJlZSh2 b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgaXApIHt9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICprYXNhbl9rbWFsbG9j KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjb25zdCB2b2lkICpvYmplY3QsCjE0NDc0OiAgICAgc2l6 ZV90IHNpemUsIGdmcF90IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodm9pZCAqKW9i amVjdDsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKmthc2FuX2tyZWFsbG9jKGNvbnN0IHZvaWQgKm9i amVjdCwgc2l6ZV90IG5ld19zaXplLAoxNDQ3NDogICAgICBnZnBfdCBmbGFncykKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gKHZvaWQgKilvYmplY3Q7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgKmthc2FuX3NsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdCwK MTQ0NzQ6ICAgICAgICBnZnBfdCBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gb2JqZWN0 OwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBrYXNhbl9zbGFiX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUg KnMsIHZvaWQgKm9iamVjdCwKMTQ0NzQ6ICAgICAgICB1bnNpZ25lZCBsb25nIGlwKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBmYWxzZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGthc2Fu X21vZHVsZV9hbGxvYyh2b2lkICphZGRyLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gMDsgfQoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBrYXNhbl9mcmVlX3NoYWRvdyhjb25zdCBzdHJ1Y3Qgdm1fc3RydWN0ICp2bSkge30K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IGthc2FuX2FkZF96ZXJvX3NoYWRvdyh2b2lkICpzdGFydCwgdW5z aWduZWQgbG9uZyBzaXplKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBrYXNhbl9yZW1vdmVfemVyb19zaGFkb3codm9pZCAqc3RhcnQsCjE0NDc0OiAgICAg IHVuc2lnbmVkIGxvbmcgc2l6ZSkKMTQ0NzQ6IHt9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5f dW5wb2lzb25fc2xhYihjb25zdCB2b2lkICpwdHIpIHsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc2l6ZV90IGthc2FuX21l dGFkYXRhX3NpemUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKSB7IHJldHVybiAwOyB9CjE0NDc0 OiAjIDE4MCAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX2NhY2hl X3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHt9CjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX2Nh Y2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkge30KMTQ0NzQ6ICMgMTk4ICIu L2luY2x1ZGUvbGludXgva2FzYW4uaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5faW5pdF90YWdzKHZvaWQp IHsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICprYXNhbl9yZXNldF90YWcoY29uc3Qgdm9pZCAqYWRk cikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHZvaWQgKilhZGRyOwoxNDQ3NDogfQoxNDQ3NDog IyAyMTUgIi4vaW5jbHVkZS9saW51eC9rYXNhbi5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGthc2FuX3BvcHVsYXRl X3ZtYWxsb2ModW5zaWduZWQgbG9uZyBzdGFydCwKMTQ0NzQ6ICAgICAgdW5zaWduZWQgbG9uZyBz aXplKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGthc2FuX3BvaXNvbl92bWFsbG9jKGNvbnN0IHZvaWQgKnN0YXJ0LCB1bnNpZ25lZCBsb25n IHNpemUpCjE0NDc0OiB7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fdW5wb2lzb25fdm1hbGxvYyhjb25z dCB2b2lkICpzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplKQoxNDQ3NDogeyB9CjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGthc2FuX3JlbGVhc2Vfdm1hbGxvYyh1bnNpZ25lZCBsb25nIHN0YXJ0LAoxNDQ3NDogICAgICAg dW5zaWduZWQgbG9uZyBlbmQsCjE0NDc0OiAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVfcmVnaW9u X3N0YXJ0LAoxNDQ3NDogICAgICAgdW5zaWduZWQgbG9uZyBmcmVlX3JlZ2lvbl9lbmQpIHt9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl9u b25fY2Fub25pY2FsX2hvb2sodW5zaWduZWQgbG9uZyBhZGRyKSB7IH0KMTQ0NzQ6ICMgMTM3ICIu L2luY2x1ZGUvbGludXgvc2xhYi5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtZW1fY2dyb3Vw OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3Nl Y3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBrbWVtX2Nh Y2hlX2luaXQodm9pZCk7CjE0NDc0OiBib29sIHNsYWJfaXNfYXZhaWxhYmxlKHZvaWQpOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gYm9vbCB1c2VyY29weV9mYWxsYmFjazsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGttZW1fY2FjaGUgKmttZW1fY2FjaGVfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIHVu c2lnbmVkIGludCBzaXplLAoxNDQ3NDogICAgdW5zaWduZWQgaW50IGFsaWduLCBzbGFiX2ZsYWdz X3QgZmxhZ3MsCjE0NDc0OiAgICB2b2lkICgqY3Rvcikodm9pZCAqKSk7CjE0NDc0OiBzdHJ1Y3Qg a21lbV9jYWNoZSAqa21lbV9jYWNoZV9jcmVhdGVfdXNlcmNvcHkoY29uc3QgY2hhciAqbmFtZSwK MTQ0NzQ6ICAgIHVuc2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBpbnQgYWxpZ24sCjE0NDc0OiAg ICBzbGFiX2ZsYWdzX3QgZmxhZ3MsCjE0NDc0OiAgICB1bnNpZ25lZCBpbnQgdXNlcm9mZnNldCwg dW5zaWduZWQgaW50IHVzZXJzaXplLAoxNDQ3NDogICAgdm9pZCAoKmN0b3IpKHZvaWQgKikpOwox NDQ3NDogdm9pZCBrbWVtX2NhY2hlX2Rlc3Ryb3koc3RydWN0IGttZW1fY2FjaGUgKik7CjE0NDc0 OiBpbnQga21lbV9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKik7CjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgbWVtY2dfY3JlYXRlX2ttZW1fY2FjaGUoc3RydWN0IG1lbV9jZ3JvdXAgKiwgc3Ry dWN0IGttZW1fY2FjaGUgKik7CjE0NDc0OiB2b2lkIG1lbWNnX2RlYWN0aXZhdGVfa21lbV9jYWNo ZXMoc3RydWN0IG1lbV9jZ3JvdXAgKiwgc3RydWN0IG1lbV9jZ3JvdXAgKik7CjE0NDc0OiAjIDE4 NyAiLi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKMTQ0NzQ6IHZvaWQgKiBfX2F0dHJpYnV0ZV9fKChf X3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3JlYWxsb2MoY29uc3Qgdm9pZCAqLCBzaXplX3QsIGdm cF90KTsKMTQ0NzQ6IHZvaWQga2ZyZWUoY29uc3Qgdm9pZCAqKTsKMTQ0NzQ6IHZvaWQga3pmcmVl KGNvbnN0IHZvaWQgKik7CjE0NDc0OiBzaXplX3QgX19rc2l6ZShjb25zdCB2b2lkICopOwoxNDQ3 NDogc2l6ZV90IGtzaXplKGNvbnN0IHZvaWQgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9p ZCBfX2NoZWNrX2hlYXBfb2JqZWN0KGNvbnN0IHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBuLCBz dHJ1Y3QgcGFnZSAqcGFnZSwKMTQ0NzQ6ICAgIGJvb2wgdG9fdXNlcik7CjE0NDc0OiAjIDMwOCAi Li9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKMTQ0NzQ6IGVudW0ga21hbGxvY19jYWNoZV90eXBlIHsK MTQ0NzQ6ICBLTUFMTE9DX05PUk1BTCA9IDAsCjE0NDc0OiAgS01BTExPQ19SRUNMQUlNLAoxNDQ3 NDogCjE0NDc0OiAgS01BTExPQ19ETUEsCjE0NDc0OiAKMTQ0NzQ6ICBOUl9LTUFMTE9DX1RZUEVT CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga21lbV9jYWNo ZSAqCjE0NDc0OiBrbWFsbG9jX2NhY2hlc1tOUl9LTUFMTE9DX1RZUEVTXVsoKDExICsgMTIgLSAx KSA8PSAyNSA/ICgxMSArIDEyIC0gMSkgOiAyNSkgKyAxXTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBlbnVtIGttYWxsb2NfY2FjaGVfdHlwZSBrbWFs bG9jX3R5cGUoZ2ZwX3QgZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKChmbGFncyAmICgo KCBnZnBfdCkweDAxdSkgfCAoKCBnZnBfdCkweDEwdSkpKSA9PSAwKSwgMSkpCjE0NDc0OiAgIHJl dHVybiBLTUFMTE9DX05PUk1BTDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgcmV0dXJuIGZsYWdzICYgKCggZ2ZwX3QpMHgwMXUpID8gS01BTExPQ19ETUEg OiBLTUFMTE9DX1JFQ0xBSU07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0 OiAjIDM0OSAiLi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgdW5zaWduZWQgaW50IGttYWxsb2NfaW5kZXgoc2l6ZV90IHNpemUp CjE0NDc0OiB7CjE0NDc0OiAgaWYgKCFzaXplKQoxNDQ3NDogICByZXR1cm4gMDsKMTQ0NzQ6IAox NDQ3NDogIGlmIChzaXplIDw9ICgxIDw8IDUpKQoxNDQ3NDogICByZXR1cm4gNTsKMTQ0NzQ6IAox NDQ3NDogIGlmICgoMSA8PCA1KSA8PSAzMiAmJiBzaXplID4gNjQgJiYgc2l6ZSA8PSA5NikKMTQ0 NzQ6ICAgcmV0dXJuIDE7CjE0NDc0OiAgaWYgKCgxIDw8IDUpIDw9IDY0ICYmIHNpemUgPiAxMjgg JiYgc2l6ZSA8PSAxOTIpCjE0NDc0OiAgIHJldHVybiAyOwoxNDQ3NDogIGlmIChzaXplIDw9IDgp IHJldHVybiAzOwoxNDQ3NDogIGlmIChzaXplIDw9IDE2KSByZXR1cm4gNDsKMTQ0NzQ6ICBpZiAo c2l6ZSA8PSAzMikgcmV0dXJuIDU7CjE0NDc0OiAgaWYgKHNpemUgPD0gNjQpIHJldHVybiA2Owox NDQ3NDogIGlmIChzaXplIDw9IDEyOCkgcmV0dXJuIDc7CjE0NDc0OiAgaWYgKHNpemUgPD0gMjU2 KSByZXR1cm4gODsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSA1MTIpIHJldHVybiA5OwoxNDQ3NDogIGlm IChzaXplIDw9IDEwMjQpIHJldHVybiAxMDsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSAyICogMTAyNCkg cmV0dXJuIDExOwoxNDQ3NDogIGlmIChzaXplIDw9IDQgKiAxMDI0KSByZXR1cm4gMTI7CjE0NDc0 OiAgaWYgKHNpemUgPD0gOCAqIDEwMjQpIHJldHVybiAxMzsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSAx NiAqIDEwMjQpIHJldHVybiAxNDsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSAzMiAqIDEwMjQpIHJldHVy biAxNTsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSA2NCAqIDEwMjQpIHJldHVybiAxNjsKMTQ0NzQ6ICBp ZiAoc2l6ZSA8PSAxMjggKiAxMDI0KSByZXR1cm4gMTc7CjE0NDc0OiAgaWYgKHNpemUgPD0gMjU2 ICogMTAyNCkgcmV0dXJuIDE4OwoxNDQ3NDogIGlmIChzaXplIDw9IDUxMiAqIDEwMjQpIHJldHVy biAxOTsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSAxMDI0ICogMTAyNCkgcmV0dXJuIDIwOwoxNDQ3NDog IGlmIChzaXplIDw9IDIgKiAxMDI0ICogMTAyNCkgcmV0dXJuIDIxOwoxNDQ3NDogIGlmIChzaXpl IDw9IDQgKiAxMDI0ICogMTAyNCkgcmV0dXJuIDIyOwoxNDQ3NDogIGlmIChzaXplIDw9IDggKiAx MDI0ICogMTAyNCkgcmV0dXJuIDIzOwoxNDQ3NDogIGlmIChzaXplIDw9IDE2ICogMTAyNCAqIDEw MjQpIHJldHVybiAyNDsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSAzMiAqIDEwMjQgKiAxMDI0KSByZXR1 cm4gMjU7CjE0NDc0OiAgaWYgKHNpemUgPD0gNjQgKiAxMDI0ICogMTAyNCkgcmV0dXJuIDI2Owox NDQ3NDogIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBm LCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAi LmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5s b25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEi ICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZs YWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUv bGludXgvc2xhYi5oIiksICJpIiAoMzg1KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1 Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIg Ii5wdXNoc2VjdGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxu XHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDE4KSk7IH0pOyBhc20gdm9sYXRpbGUoIiIp OyBfX2J1aWx0aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gLTE7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogdm9pZCAqX19rbWFsbG9jKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncykgX19hdHRyaWJ1 dGVfXygoX19hc3N1bWVfYWxpZ25lZF9fKF9fYWxpZ25vZl9fKHVuc2lnbmVkIGxvbmcgbG9uZykp KSkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpOwoxNDQ3NDogdm9pZCAqa21lbV9jYWNoZV9h bGxvYyhzdHJ1Y3Qga21lbV9jYWNoZSAqLCBnZnBfdCBmbGFncykgX19hdHRyaWJ1dGVfXygoX19h c3N1bWVfYWxpZ25lZF9fKF9fYWxpZ25vZl9fKHVuc2lnbmVkIGxvbmcgbG9uZykpKSkgX19hdHRy aWJ1dGVfXygoX19tYWxsb2NfXykpOwoxNDQ3NDogdm9pZCBrbWVtX2NhY2hlX2ZyZWUoc3RydWN0 IGttZW1fY2FjaGUgKiwgdm9pZCAqKTsKMTQ0NzQ6ICMgNDAzICIuL2luY2x1ZGUvbGludXgvc2xh Yi5oIgoxNDQ3NDogdm9pZCBrbWVtX2NhY2hlX2ZyZWVfYnVsayhzdHJ1Y3Qga21lbV9jYWNoZSAq LCBzaXplX3QsIHZvaWQgKiopOwoxNDQ3NDogaW50IGttZW1fY2FjaGVfYWxsb2NfYnVsayhzdHJ1 Y3Qga21lbV9jYWNoZSAqLCBnZnBfdCwgc2l6ZV90LCB2b2lkICoqKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIHZvaWQga2ZyZWVfYnVsayhzaXplX3Qgc2l6ZSwgdm9pZCAqKnApCjE0NDc0OiB7 CjE0NDc0OiAga21lbV9jYWNoZV9mcmVlX2J1bGsoKCh2b2lkICopMCksIHNpemUsIHApOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCAqX19rbWFsbG9jX25vZGUoc2l6ZV90 IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19r bWFsbG9jKHNpemUsIGZsYWdzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkICprbWVtX2NhY2hlX2FsbG9jX25vZGUoc3RydWN0 IGttZW1fY2FjaGUgKnMsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4ga21lbV9jYWNoZV9hbGxvYyhzLCBmbGFncyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCAqa21lbV9jYWNoZV9hbGxvY190cmFjZShzdHJ1 Y3Qga21lbV9jYWNoZSAqLCBnZnBfdCwgc2l6ZV90KSBfX2F0dHJpYnV0ZV9fKChfX2Fzc3VtZV9h bGlnbmVkX18oX19hbGlnbm9mX18odW5zaWduZWQgbG9uZyBsb25nKSkpKSBfX2F0dHJpYnV0ZV9f KChfX21hbGxvY19fKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgKgox NDQ3NDoga21lbV9jYWNoZV9hbGxvY19ub2RlX3RyYWNlKHN0cnVjdCBrbWVtX2NhY2hlICpzLAox NDQ3NDogICAgICAgICAgZ2ZwX3QgZ2ZwZmxhZ3MsCjE0NDc0OiAgICAgICAgICBpbnQgbm9kZSwg c2l6ZV90IHNpemUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGttZW1fY2FjaGVfYWxsb2NfdHJh Y2UocywgZ2ZwZmxhZ3MsIHNpemUpOwoxNDQ3NDogfQoxNDQ3NDogIyA0NjkgIi4vaW5jbHVkZS9s aW51eC9zbGFiLmgiCjE0NDc0OiBleHRlcm4gdm9pZCAqa21hbGxvY19vcmRlcihzaXplX3Qgc2l6 ZSwgZ2ZwX3QgZmxhZ3MsIHVuc2lnbmVkIGludCBvcmRlcikgX19hdHRyaWJ1dGVfXygoX19hc3N1 bWVfYWxpZ25lZF9fKCgoMVVMKSA8PCAxMikpKSkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykp OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkICprbWFsbG9jX29yZGVyX3RyYWNl KHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgdW5zaWduZWQgaW50IG9yZGVyKSBfX2F0dHJpYnV0 ZV9fKChfX2Fzc3VtZV9hbGlnbmVkX18oKCgxVUwpIDw8IDEyKSkpKSBfX2F0dHJpYnV0ZV9fKChf X21hbGxvY19fKSk7CjE0NDc0OiAjIDQ4MSAiLi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCAqa21hbGxvY19sYXJnZShz aXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgaW50IG9y ZGVyID0gZ2V0X29yZGVyKHNpemUpOwoxNDQ3NDogIHJldHVybiBrbWFsbG9jX29yZGVyX3RyYWNl KHNpemUsIGZsYWdzLCBvcmRlcik7CjE0NDc0OiB9CjE0NDc0OiAjIDU0MSAiLi9pbmNsdWRlL2xp bnV4L3NsYWIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9p ZCAqa21hbGxvYyhzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAgaWYg KF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpKSB7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQg aW50IGluZGV4OwoxNDQ3NDogCjE0NDc0OiAgIGlmIChzaXplID4gKDFVTCA8PCAoKDExICsgMTIg LSAxKSA8PSAyNSA/ICgxMSArIDEyIC0gMSkgOiAyNSkpKQoxNDQ3NDogICAgcmV0dXJuIGttYWxs b2NfbGFyZ2Uoc2l6ZSwgZmxhZ3MpOwoxNDQ3NDogCjE0NDc0OiAgIGluZGV4ID0ga21hbGxvY19p bmRleChzaXplKTsKMTQ0NzQ6IAoxNDQ3NDogICBpZiAoIWluZGV4KQoxNDQ3NDogICAgcmV0dXJu ICgodm9pZCAqKTE2KTsKMTQ0NzQ6IAoxNDQ3NDogICByZXR1cm4ga21lbV9jYWNoZV9hbGxvY190 cmFjZSgKMTQ0NzQ6ICAgICBrbWFsbG9jX2NhY2hlc1trbWFsbG9jX3R5cGUoZmxhZ3MpXVtpbmRl eF0sCjE0NDc0OiAgICAgZmxhZ3MsIHNpemUpOwoxNDQ3NDogCjE0NDc0OiAgfQoxNDQ3NDogIHJl dHVybiBfX2ttYWxsb2Moc2l6ZSwgZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgKmttYWxsb2Nfbm9kZShzaXplX3Qg c2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgaWYg KF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpICYmCjE0NDc0OiAgIHNpemUgPD0gKDFVTCA8PCAo KDExICsgMTIgLSAxKSA8PSAyNSA/ICgxMSArIDEyIC0gMSkgOiAyNSkpKSB7CjE0NDc0OiAgIHVu c2lnbmVkIGludCBpID0ga21hbGxvY19pbmRleChzaXplKTsKMTQ0NzQ6IAoxNDQ3NDogICBpZiAo IWkpCjE0NDc0OiAgICByZXR1cm4gKCh2b2lkICopMTYpOwoxNDQ3NDogCjE0NDc0OiAgIHJldHVy biBrbWVtX2NhY2hlX2FsbG9jX25vZGVfdHJhY2UoCjE0NDc0OiAgICAga21hbGxvY19jYWNoZXNb a21hbGxvY190eXBlKGZsYWdzKV1baV0sCjE0NDc0OiAgICAgICBmbGFncywgbm9kZSwgc2l6ZSk7 CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIF9fa21hbGxvY19ub2RlKHNpemUsIGZs YWdzLCBub2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogaW50IG1lbWNnX3VwZGF0ZV9hbGxf Y2FjaGVzKGludCBudW1fbWVtY2dzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqa21hbGxvY19hcnJheShzaXplX3Qg biwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIHNpemVfdCBieXRl czsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCh7IHR5cGVvZihuKSBf X2EgPSAobik7IHR5cGVvZihzaXplKSBfX2IgPSAoc2l6ZSk7IHR5cGVvZigmYnl0ZXMpIF9fZCA9 ICgmYnl0ZXMpOyAodm9pZCkgKCZfX2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBf X2J1aWx0aW5fbXVsX292ZXJmbG93KF9fYSwgX19iLCBfX2QpOyB9KSksIDApKQoxNDQ3NDogICBy ZXR1cm4gKCh2b2lkICopMCk7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG4pICYm IF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpKQoxNDQ3NDogICByZXR1cm4ga21hbGxvYyhieXRl cywgZmxhZ3MpOwoxNDQ3NDogIHJldHVybiBfX2ttYWxsb2MoYnl0ZXMsIGZsYWdzKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCAqa2NhbGxvYyhzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdz KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrbWFsbG9jX2FycmF5KG4sIHNpemUsIGZsYWdzIHwg KCggZ2ZwX3QpMHgxMDB1KSk7CjE0NDc0OiB9CjE0NDc0OiAjIDYxOSAiLi9pbmNsdWRlL2xpbnV4 L3NsYWIuaCIKMTQ0NzQ6IGV4dGVybiB2b2lkICpfX2ttYWxsb2NfdHJhY2tfY2FsbGVyKHNpemVf dCwgZ2ZwX3QsIHVuc2lnbmVkIGxvbmcpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCAqa21hbGxvY19hcnJheV9ub2RlKHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxh Z3MsCjE0NDc0OiAgICAgICAgICAgIGludCBub2RlKQoxNDQ3NDogewoxNDQ3NDogIHNpemVfdCBi eXRlczsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCh7IHR5cGVvZihu KSBfX2EgPSAobik7IHR5cGVvZihzaXplKSBfX2IgPSAoc2l6ZSk7IHR5cGVvZigmYnl0ZXMpIF9f ZCA9ICgmYnl0ZXMpOyAodm9pZCkgKCZfX2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2Qp OyBfX2J1aWx0aW5fbXVsX292ZXJmbG93KF9fYSwgX19iLCBfX2QpOyB9KSksIDApKQoxNDQ3NDog ICByZXR1cm4gKCh2b2lkICopMCk7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG4p ICYmIF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpKQoxNDQ3NDogICByZXR1cm4ga21hbGxvY19u b2RlKGJ5dGVzLCBmbGFncywgbm9kZSk7CjE0NDc0OiAgcmV0dXJuIF9fa21hbGxvY19ub2RlKGJ5 dGVzLCBmbGFncywgbm9kZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKmtjYWxsb2Nf bm9kZShzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4ga21hbGxvY19hcnJheV9ub2RlKG4sIHNpemUsIGZsYWdzIHwgKCgg Z2ZwX3QpMHgxMDB1KSwgbm9kZSk7CjE0NDc0OiB9CjE0NDc0OiAjIDY1NyAiLi9pbmNsdWRlL2xp bnV4L3NsYWIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKmttZW1fY2FjaGVfemFsbG9jKHN0cnVjdCBrbWVtX2Nh Y2hlICprLCBnZnBfdCBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga21lbV9jYWNoZV9h bGxvYyhrLCBmbGFncyB8ICgoIGdmcF90KTB4MTAwdSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqa3phbGxvYyhz aXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGttYWxsb2Mo c2l6ZSwgZmxhZ3MgfCAoKCBnZnBfdCkweDEwMHUpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqa3ph bGxvY19ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIGttYWxsb2Nfbm9kZShzaXplLCBmbGFncyB8ICgoIGdmcF90KTB4MTAwdSks IG5vZGUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBpbnQga21lbV9jYWNoZV9z aXplKHN0cnVjdCBrbWVtX2NhY2hlICpzKTsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoX19z ZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkga21lbV9j YWNoZV9pbml0X2xhdGUodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogaW50IHNsYWJfcHJl cGFyZV9jcHUodW5zaWduZWQgaW50IGNwdSk7CjE0NDc0OiBpbnQgc2xhYl9kZWFkX2NwdSh1bnNp Z25lZCBpbnQgY3B1KTsKMTQ0NzQ6ICMgMzQgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9vc190eXBlcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAjIDEgIi4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiIDEKMTQ0NzQ6ICMgMzEgIi4vaW5jbHVk ZS9kcm0vZHJtX3ByaW50LmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zZXFfZmlsZS5o IiAxCjE0NDc0OiAjIDExICIuL2luY2x1ZGUvbGludXgvc2VxX2ZpbGUuaCIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L2ZzLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC93YWl0X2JpdC5oIiAxCjE0NDc0OiAj IDEwICIuL2luY2x1ZGUvbGludXgvd2FpdF9iaXQuaCIKMTQ0NzQ6IHN0cnVjdCB3YWl0X2JpdF9r ZXkgewoxNDQ3NDogIHZvaWQgKmZsYWdzOwoxNDQ3NDogIGludCBiaXRfbnI7CjE0NDc0OiAgdW5z aWduZWQgbG9uZyB0aW1lb3V0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHdhaXRf Yml0X3F1ZXVlX2VudHJ5IHsKMTQ0NzQ6ICBzdHJ1Y3Qgd2FpdF9iaXRfa2V5IGtleTsKMTQ0NzQ6 ICBzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSB3cV9lbnRyeTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgaW50IHdhaXRfYml0X2FjdGlvbl9m KHN0cnVjdCB3YWl0X2JpdF9rZXkgKmtleSwgaW50IG1vZGUpOwoxNDQ3NDogCjE0NDc0OiB2b2lk IF9fd2FrZV91cF9iaXQoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgdm9pZCAqd29y ZCwgaW50IGJpdCk7CjE0NDc0OiBpbnQgX193YWl0X29uX2JpdChzdHJ1Y3Qgd2FpdF9xdWV1ZV9o ZWFkICp3cV9oZWFkLCBzdHJ1Y3Qgd2FpdF9iaXRfcXVldWVfZW50cnkgKndicV9lbnRyeSwgd2Fp dF9iaXRfYWN0aW9uX2YgKmFjdGlvbiwgdW5zaWduZWQgaW50IG1vZGUpOwoxNDQ3NDogaW50IF9f d2FpdF9vbl9iaXRfbG9jayhzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qg d2FpdF9iaXRfcXVldWVfZW50cnkgKndicV9lbnRyeSwgd2FpdF9iaXRfYWN0aW9uX2YgKmFjdGlv biwgdW5zaWduZWQgaW50IG1vZGUpOwoxNDQ3NDogdm9pZCB3YWtlX3VwX2JpdCh2b2lkICp3b3Jk LCBpbnQgYml0KTsKMTQ0NzQ6IGludCBvdXRfb2ZfbGluZV93YWl0X29uX2JpdCh2b2lkICp3b3Jk LCBpbnQsIHdhaXRfYml0X2FjdGlvbl9mICphY3Rpb24sIHVuc2lnbmVkIGludCBtb2RlKTsKMTQ0 NzQ6IGludCBvdXRfb2ZfbGluZV93YWl0X29uX2JpdF90aW1lb3V0KHZvaWQgKndvcmQsIGludCwg d2FpdF9iaXRfYWN0aW9uX2YgKmFjdGlvbiwgdW5zaWduZWQgaW50IG1vZGUsIHVuc2lnbmVkIGxv bmcgdGltZW91dCk7CjE0NDc0OiBpbnQgb3V0X29mX2xpbmVfd2FpdF9vbl9iaXRfbG9jayh2b2lk ICp3b3JkLCBpbnQsIHdhaXRfYml0X2FjdGlvbl9mICphY3Rpb24sIHVuc2lnbmVkIGludCBtb2Rl KTsKMTQ0NzQ6IHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKmJpdF93YWl0cXVldWUodm9pZCAqd29y ZCwgaW50IGJpdCk7CjE0NDc0OiBleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25f XygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSB3YWl0X2JpdF9pbml0 KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBpbnQgd2FrZV9iaXRfZnVuY3Rpb24oc3RydWN0IHdhaXRf cXVldWVfZW50cnkgKndxX2VudHJ5LCB1bnNpZ25lZCBtb2RlLCBpbnQgc3luYywgdm9pZCAqa2V5 KTsKMTQ0NzQ6ICMgNDkgIi4vaW5jbHVkZS9saW51eC93YWl0X2JpdC5oIgoxNDQ3NDogZXh0ZXJu IGludCBiaXRfd2FpdChzdHJ1Y3Qgd2FpdF9iaXRfa2V5ICprZXksIGludCBtb2RlKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgYml0X3dhaXRfaW8oc3RydWN0IHdhaXRfYml0X2tleSAqa2V5LCBpbnQgbW9k ZSk7CjE0NDc0OiBleHRlcm4gaW50IGJpdF93YWl0X3RpbWVvdXQoc3RydWN0IHdhaXRfYml0X2tl eSAqa2V5LCBpbnQgbW9kZSk7CjE0NDc0OiBleHRlcm4gaW50IGJpdF93YWl0X2lvX3RpbWVvdXQo c3RydWN0IHdhaXRfYml0X2tleSAqa2V5LCBpbnQgbW9kZSk7CjE0NDc0OiAjIDcwICIuL2luY2x1 ZGUvbGludXgvd2FpdF9iaXQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogd2FpdF9vbl9iaXQodW5zaWdu ZWQgbG9uZyAqd29yZCwgaW50IGJpdCwgdW5zaWduZWQgbW9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBk byB7IGRvIHsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGlmICghdGVzdF9iaXQo Yml0LCB3b3JkKSkKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAgcmV0dXJuIG91dF9vZl9saW5l X3dhaXRfb25fYml0KHdvcmQsIGJpdCwKMTQ0NzQ6ICAgICAgICAgICAgYml0X3dhaXQsCjE0NDc0 OiAgICAgICAgICAgIG1vZGUpOwoxNDQ3NDogfQoxNDQ3NDogIyA5NSAiLi9pbmNsdWRlL2xpbnV4 L3dhaXRfYml0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IHdhaXRfb25fYml0X2lvKHVuc2lnbmVkIGxv bmcgKndvcmQsIGludCBiaXQsIHVuc2lnbmVkIG1vZGUpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBk byB7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBpZiAoIXRlc3RfYml0KGJpdCwg d29yZCkpCjE0NDc0OiAgIHJldHVybiAwOwoxNDQ3NDogIHJldHVybiBvdXRfb2ZfbGluZV93YWl0 X29uX2JpdCh3b3JkLCBiaXQsCjE0NDc0OiAgICAgICAgICAgIGJpdF93YWl0X2lvLAoxNDQ3NDog ICAgICAgICAgICBtb2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTIxICIuL2luY2x1ZGUvbGludXgv d2FpdF9iaXQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogd2FpdF9vbl9iaXRfdGltZW91dCh1bnNpZ25l ZCBsb25nICp3b3JkLCBpbnQgYml0LCB1bnNpZ25lZCBtb2RlLAoxNDQ3NDogICAgICAgdW5zaWdu ZWQgbG9uZyB0aW1lb3V0KQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgZG8geyB9IHdoaWxlICgwKTsg fSB3aGlsZSAoMCk7CjE0NDc0OiAgaWYgKCF0ZXN0X2JpdChiaXQsIHdvcmQpKQoxNDQ3NDogICBy ZXR1cm4gMDsKMTQ0NzQ6ICByZXR1cm4gb3V0X29mX2xpbmVfd2FpdF9vbl9iaXRfdGltZW91dCh3 b3JkLCBiaXQsCjE0NDc0OiAgICAgICAgICAgICBiaXRfd2FpdF90aW1lb3V0LAoxNDQ3NDogICAg ICAgICAgICAgbW9kZSwgdGltZW91dCk7CjE0NDc0OiB9CjE0NDc0OiAjIDE0OSAiLi9pbmNsdWRl L2xpbnV4L3dhaXRfYml0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IHdhaXRfb25fYml0X2FjdGlvbih1 bnNpZ25lZCBsb25nICp3b3JkLCBpbnQgYml0LCB3YWl0X2JpdF9hY3Rpb25fZiAqYWN0aW9uLAox NDQ3NDogICAgICB1bnNpZ25lZCBtb2RlKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgZG8geyB9IHdo aWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgaWYgKCF0ZXN0X2JpdChiaXQsIHdvcmQpKQox NDQ3NDogICByZXR1cm4gMDsKMTQ0NzQ6ICByZXR1cm4gb3V0X29mX2xpbmVfd2FpdF9vbl9iaXQo d29yZCwgYml0LCBhY3Rpb24sIG1vZGUpOwoxNDQ3NDogfQoxNDQ3NDogIyAxNzggIi4vaW5jbHVk ZS9saW51eC93YWl0X2JpdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiB3YWl0X29uX2JpdF9sb2NrKHVu c2lnbmVkIGxvbmcgKndvcmQsIGludCBiaXQsIHVuc2lnbmVkIG1vZGUpCjE0NDc0OiB7CjE0NDc0 OiAgZG8geyBkbyB7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBpZiAoIXRlc3Rf YW5kX3NldF9iaXQoYml0LCB3b3JkKSkKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAgcmV0dXJu IG91dF9vZl9saW5lX3dhaXRfb25fYml0X2xvY2sod29yZCwgYml0LCBiaXRfd2FpdCwgbW9kZSk7 CjE0NDc0OiB9CjE0NDc0OiAjIDIwMiAiLi9pbmNsdWRlL2xpbnV4L3dhaXRfYml0LmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQKMTQ0NzQ6IHdhaXRfb25fYml0X2xvY2tfaW8odW5zaWduZWQgbG9uZyAqd29yZCwgaW50 IGJpdCwgdW5zaWduZWQgbW9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IGRvIHsgfSB3aGlsZSAo MCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGlmICghdGVzdF9hbmRfc2V0X2JpdChiaXQsIHdvcmQp KQoxNDQ3NDogICByZXR1cm4gMDsKMTQ0NzQ6ICByZXR1cm4gb3V0X29mX2xpbmVfd2FpdF9vbl9i aXRfbG9jayh3b3JkLCBiaXQsIGJpdF93YWl0X2lvLCBtb2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg MjI4ICIuL2luY2x1ZGUvbGludXgvd2FpdF9iaXQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogd2FpdF9v bl9iaXRfbG9ja19hY3Rpb24odW5zaWduZWQgbG9uZyAqd29yZCwgaW50IGJpdCwgd2FpdF9iaXRf YWN0aW9uX2YgKmFjdGlvbiwKMTQ0NzQ6ICAgIHVuc2lnbmVkIG1vZGUpCjE0NDc0OiB7CjE0NDc0 OiAgZG8geyBkbyB7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBpZiAoIXRlc3Rf YW5kX3NldF9iaXQoYml0LCB3b3JkKSkKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAgcmV0dXJu IG91dF9vZl9saW5lX3dhaXRfb25fYml0X2xvY2sod29yZCwgYml0LCBhY3Rpb24sIG1vZGUpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBpbml0X3dhaXRfdmFyX2VudHJ5KHN0 cnVjdCB3YWl0X2JpdF9xdWV1ZV9lbnRyeSAqd2JxX2VudHJ5LCB2b2lkICp2YXIsIGludCBmbGFn cyk7CjE0NDc0OiBleHRlcm4gdm9pZCB3YWtlX3VwX3Zhcih2b2lkICp2YXIpOwoxNDQ3NDogZXh0 ZXJuIHdhaXRfcXVldWVfaGVhZF90ICpfX3Zhcl93YWl0cXVldWUodm9pZCAqcCk7CjE0NDc0OiAj IDMzMCAiLi9pbmNsdWRlL2xpbnV4L3dhaXRfYml0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNsZWFyX2FuZF93 YWtlX3VwX2JpdChpbnQgYml0LCB2b2lkICp3b3JkKQoxNDQ3NDogewoxNDQ3NDogIGNsZWFyX2Jp dF91bmxvY2soYml0LCB3b3JkKTsKMTQ0NzQ6IAoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0 NDc0OiAgd2FrZV91cF9iaXQod29yZCwgYml0KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNyAiLi9pbmNs dWRlL2xpbnV4L2ZzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAx CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3Vh cGkvbGludXgva2Rldl90LmgiIDEKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL2xpbnV4L2tkZXZfdC5o IiAyCjE0NDc0OiAjIDI0ICIuL2luY2x1ZGUvbGludXgva2Rldl90LmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIG9s ZF92YWxpZF9kZXYoZGV2X3QgZGV2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoKHVuc2lnbmVk IGludCkgKChkZXYpID4+IDIwKSkgPCAyNTYgJiYgKCh1bnNpZ25lZCBpbnQpICgoZGV2KSAmICgo MVUgPDwgMjApIC0gMSkpKSA8IDI1NjsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTE2IG9sZF9l bmNvZGVfZGV2KGRldl90IGRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCgodW5zaWduZWQg aW50KSAoKGRldikgPj4gMjApKSA8PCA4KSB8ICgodW5zaWduZWQgaW50KSAoKGRldikgJiAoKDFV IDw8IDIwKSAtIDEpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGRldl90IG9sZF9kZWNvZGVf ZGV2KHUxNiB2YWwpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgoKCh2YWwgPj4gOCkgJiAyNTUp IDw8IDIwKSB8ICh2YWwgJiAyNTUpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMyIG5ld19l bmNvZGVfZGV2KGRldl90IGRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBtYWpvciA9ICgo dW5zaWduZWQgaW50KSAoKGRldikgPj4gMjApKTsKMTQ0NzQ6ICB1bnNpZ25lZCBtaW5vciA9ICgo dW5zaWduZWQgaW50KSAoKGRldikgJiAoKDFVIDw8IDIwKSAtIDEpKSk7CjE0NDc0OiAgcmV0dXJu IChtaW5vciAmIDB4ZmYpIHwgKG1ham9yIDw8IDgpIHwgKChtaW5vciAmIH4weGZmKSA8PCAxMik7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGRldl90IG5ld19kZWNvZGVfZGV2KHUzMiBkZXYpCjE0 NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbWFqb3IgPSAoZGV2ICYgMHhmZmYwMCkgPj4gODsKMTQ0 NzQ6ICB1bnNpZ25lZCBtaW5vciA9IChkZXYgJiAweGZmKSB8ICgoZGV2ID4+IDEyKSAmIDB4ZmZm MDApOwoxNDQ3NDogIHJldHVybiAoKChtYWpvcikgPDwgMjApIHwgKG1pbm9yKSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHU2NCBodWdlX2VuY29kZV9kZXYoZGV2X3QgZGV2KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBuZXdfZW5jb2RlX2RldihkZXYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBkZXZfdCBodWdlX2RlY29kZV9kZXYodTY0IGRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g bmV3X2RlY29kZV9kZXYoZGV2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHN5c3ZfdmFs aWRfZGV2KGRldl90IGRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCh1bnNpZ25lZCBpbnQp ICgoZGV2KSA+PiAyMCkpIDwgKDE8PDE0KSAmJiAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgx VSA8PCAyMCkgLSAxKSkpIDwgKDE8PDE4KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMyIHN5 c3ZfZW5jb2RlX2RldihkZXZfdCBkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgodW5zaWdu ZWQgaW50KSAoKGRldikgJiAoKDFVIDw8IDIwKSAtIDEpKSkgfCAoKCh1bnNpZ25lZCBpbnQpICgo ZGV2KSA+PiAyMCkpIDw8IDE4KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgc3lz dl9tYWpvcih1MzIgZGV2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoZGV2ID4+IDE4KSAmIDB4 M2ZmZjsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgc3lzdl9taW5vcih1MzIgZGV2 KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkZXYgJiAweDNmZmZmOwoxNDQ3NDogfQoxNDQ3NDog IyA4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgv ZGNhY2hlLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIgMQoxNDQ3NDogIyAzMSAi Li9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgSU5JVF9MSVNUX0hFQURfUkNV KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCjE0NDc0OiB7CjE0NDc0OiAgKHsgdW5pb24geyB0eXBl b2YobGlzdC0+bmV4dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0 eXBlb2YobGlzdC0+bmV4dCkpIChsaXN0KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKGxpc3QtPm5l eHQpLCBfX3UuX19jLCBzaXplb2YobGlzdC0+bmV4dCkpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDog ICh7IHVuaW9uIHsgdHlwZW9mKGxpc3QtPnByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3Ug PSB7IC5fX3ZhbCA9ICggdHlwZW9mKGxpc3QtPnByZXYpKSAobGlzdCkgfTsgX193cml0ZV9vbmNl X3NpemUoJihsaXN0LT5wcmV2KSwgX191Ll9fYywgc2l6ZW9mKGxpc3QtPnByZXYpKTsgX191Ll9f dmFsOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzcgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0Lmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIF9fbGlzdF9hZGRfcmN1KHN0cnVjdCBsaXN0X2hlYWQgKm5ldywKMTQ0NzQ6 ICAgc3RydWN0IGxpc3RfaGVhZCAqcHJldiwgc3RydWN0IGxpc3RfaGVhZCAqbmV4dCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICBpZiAoIV9fbGlzdF9hZGRfdmFsaWQobmV3LCBwcmV2LCBuZXh0KSkKMTQ0NzQ6 ICAgcmV0dXJuOwoxNDQ3NDogCjE0NDc0OiAgbmV3LT5uZXh0ID0gbmV4dDsKMTQ0NzQ6ICBuZXct PnByZXYgPSBwcmV2OwoxNDQ3NDogIGRvIHsgdWludHB0cl90IF9yX2FfcF9fdiA9ICh1aW50cHRy X3QpKG5ldyk7IDsgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG5ldykgJiYgKF9yX2FfcF9fdikg PT0gKHVpbnRwdHJfdCkoKHZvaWQgKikwKSkgKHsgdW5pb24geyB0eXBlb2YoKCgqKChzdHJ1Y3Qg bGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYp LT5uZXh0KSkpKSkpICgodHlwZW9mKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5u ZXh0KSkpKSkoX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigoKCooKHN0cnVjdCBs aXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpKSwgX191Ll9fYywgc2l6ZW9mKCgoKigoc3Ry dWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpKTsgX191Ll9fdmFsOyB9KTsgZWxz ZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfODUodm9pZCkgX19h dHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9sb2Fk cyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVh ZCAqKikoJihwcmV2KS0+bmV4dCkpKSkgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigqJigqKChz dHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2Yoc2hvcnQpIHx8 IHNpemVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSA9PSBz aXplb2YoaW50KSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+ bmV4dCkpKSkgPT0gc2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0Xzg1KCk7IH0g d2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1bmlv biB7IHR5cGVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSBf X3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqJigqKChzdHJ1 Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSkgKCh0eXBlb2YoKigodHlwZW9mKCgq KChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSlfcl9hX3BfX3YpKSAqKSgo dHlwZW9mKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSlfcl9hX3Bf X3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYo cHJldiktPm5leHQpKSkpLCBfX3UuX19jLCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAq KikoJihwcmV2KS0+bmV4dCkpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGls ZSAoMCk7CjE0NDc0OiAgbmV4dC0+cHJldiA9IG5ldzsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTA1ICIu L2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X2FkZF9yY3Uoc3RydWN0 IGxpc3RfaGVhZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoxNDQ3NDogewoxNDQ3NDog IF9fbGlzdF9hZGRfcmN1KG5ldywgaGVhZCwgaGVhZC0+bmV4dCk7CjE0NDc0OiB9CjE0NDc0OiAj IDEyNiAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9hZGRfdGFp bF9yY3Uoc3RydWN0IGxpc3RfaGVhZCAqbmV3LAoxNDQ3NDogICAgICBzdHJ1Y3QgbGlzdF9oZWFk ICpoZWFkKQoxNDQ3NDogewoxNDQ3NDogIF9fbGlzdF9hZGRfcmN1KG5ldywgaGVhZC0+cHJldiwg aGVhZCk7CjE0NDc0OiB9CjE0NDc0OiAjIDE1NiAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgbGlzdF9kZWxfcmN1KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQoxNDQ3NDog ewoxNDQ3NDogIF9fbGlzdF9kZWxfZW50cnkoZW50cnkpOwoxNDQ3NDogIGVudHJ5LT5wcmV2ID0g KCh2b2lkICopIDB4MTIyICsgKDB4ZGVhZDAwMDAwMDAwMDAwMFVMKSk7CjE0NDc0OiB9CjE0NDc0 OiAjIDE4MiAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3RfZGVs X2luaXRfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIGlmICghaGxp c3RfdW5oYXNoZWQobikpIHsKMTQ0NzQ6ICAgX19obGlzdF9kZWwobik7CjE0NDc0OiAgICh7IHVu aW9uIHsgdHlwZW9mKG4tPnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192 YWwgPSAoIHR5cGVvZihuLT5wcHJldikpICgoKHZvaWQgKikwKSkgfTsgX193cml0ZV9vbmNlX3Np emUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihuLT5wcHJldikpOyBfX3UuX192YWw7IH0p OwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTk4ICIuL2luY2x1ZGUvbGludXgvcmN1bGlz dC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3JlcGxhY2VfcmN1KHN0cnVjdCBsaXN0X2hlYWQgKm9sZCwK MTQ0NzQ6ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXcpCjE0NDc0OiB7CjE0NDc0OiAgbmV3LT5u ZXh0ID0gb2xkLT5uZXh0OwoxNDQ3NDogIG5ldy0+cHJldiA9IG9sZC0+cHJldjsKMTQ0NzQ6ICBk byB7IHVpbnRwdHJfdCBfcl9hX3BfX3YgPSAodWludHB0cl90KShuZXcpOyA7IGlmIChfX2J1aWx0 aW5fY29uc3RhbnRfcChuZXcpICYmIChfcl9hX3BfX3YpID09ICh1aW50cHRyX3QpKCh2b2lkICop MCkpICh7IHVuaW9uIHsgdHlwZW9mKCgoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihuZXctPnBy ZXYpLT5uZXh0KSkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0 eXBlb2YoKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpKSkg KCh0eXBlb2YoKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYobmV3LT5wcmV2KS0+bmV4dCkpKSkp KF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKCgqKChzdHJ1Y3QgbGlzdF9oZWFk ICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpKSwgX191Ll9fYywgc2l6ZW9mKCgoKigoc3RydWN0 IGxpc3RfaGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSkpOyBfX3UuX192YWw7IH0pOyBl bHNlIGRvIHsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8yMDModm9pZCkg X19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9s b2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXplb2YoKiYoKigoc3RydWN0IGxpc3Rf aGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9m KComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYobmV3LT5wcmV2KS0+bmV4dCkpKSkgPT0gc2l6 ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihuZXctPnBy ZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3Rf aGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21w aWxldGltZV9hc3NlcnRfMjAzKCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi IjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFk ICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7 IC5fX3ZhbCA9ICggdHlwZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYobmV3LT5wcmV2 KS0+bmV4dCkpKSkpICgodHlwZW9mKCooKHR5cGVvZigoKigoc3RydWN0IGxpc3RfaGVhZCAqKiko JihuZXctPnByZXYpLT5uZXh0KSkpKSlfcl9hX3BfX3YpKSAqKSgodHlwZW9mKCgqKChzdHJ1Y3Qg bGlzdF9oZWFkICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpKV9yX2FfcF9fdikpIH07IF9fd3Jp dGVfb25jZV9zaXplKCYoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihuZXctPnByZXYpLT5u ZXh0KSkpKSwgX191Ll9fYywgc2l6ZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYobmV3 LT5wcmV2KS0+bmV4dCkpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAo MCk7CjE0NDc0OiAgbmV3LT5uZXh0LT5wcmV2ID0gbmV3OwoxNDQ3NDogIG9sZC0+cHJldiA9ICgo dm9pZCAqKSAweDEyMiArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpOwoxNDQ3NDogfQoxNDQ3NDog IyAyMjcgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbGlzdF9zcGxp Y2VfaW5pdF9yY3Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3Qg bGlzdF9oZWFkICpwcmV2LAoxNDQ3NDogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5leHQsCjE0 NDc0OiAgICAgICAgdm9pZCAoKnN5bmMpKHZvaWQpKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBs aXN0X2hlYWQgKmZpcnN0ID0gbGlzdC0+bmV4dDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkICps YXN0ID0gbGlzdC0+cHJldjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIElOSVRfTElTVF9IRUFEX1JDVShsaXN0KTsKMTQ0NzQ6 ICMgMjUwICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgoxNDQ3NDogIHN5bmMoKTsKMTQ0NzQ6 ICMgMjYwICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgoxNDQ3NDogIGxhc3QtPm5leHQgPSBu ZXh0OwoxNDQ3NDogIGRvIHsgdWludHB0cl90IF9yX2FfcF9fdiA9ICh1aW50cHRyX3QpKGZpcnN0 KTsgOyBpZiAoX19idWlsdGluX2NvbnN0YW50X3AoZmlyc3QpICYmIChfcl9hX3BfX3YpID09ICh1 aW50cHRyX3QpKCh2b2lkICopMCkpICh7IHVuaW9uIHsgdHlwZW9mKCgoKigoc3RydWN0IGxpc3Rf aGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7 IC5fX3ZhbCA9ICggdHlwZW9mKCgoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4 dCkpKSkpKSAoKHR5cGVvZigoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkp KSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKCgqKChzdHJ1Y3QgbGlzdF9o ZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSksIF9fdS5fX2MsIHNpemVvZigoKCooKHN0cnVjdCBs aXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpKSk7IF9fdS5fX3ZhbDsgfSk7IGVsc2UgZG8g eyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzI2MSh2b2lkKSBfX2F0dHJp YnV0ZV9fKChfX2Vycm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZv ciBhdG9taWNpdHkuIikpKTsgaWYgKCEoKHNpemVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoq KSgmKHByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComKCooKHN0cnVj dCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVvZihzaG9ydCkgfHwgc2l6 ZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVv ZihpbnQpIHx8IHNpemVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0 KSkpKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfMjYxKCk7IH0gd2hp bGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7 IHR5cGVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSBfX3Zh bDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqJigqKChzdHJ1Y3Qg bGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSkgKCh0eXBlb2YoKigodHlwZW9mKCgqKChz dHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSlfcl9hX3BfX3YpKSAqKSgodHlw ZW9mKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSlfcl9hX3BfX3Yp KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJl diktPm5leHQpKSkpLCBfX3UuX19jLCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKiko JihwcmV2KS0+bmV4dCkpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAo MCk7CjE0NDc0OiAgZmlyc3QtPnByZXYgPSBwcmV2OwoxNDQ3NDogIG5leHQtPnByZXYgPSBsYXN0 OwoxNDQ3NDogfQoxNDQ3NDogIyAyNzMgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0LmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGxpc3Rfc3BsaWNlX2luaXRfcmN1KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCjE0NDc0 OiAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCjE0NDc0OiAgICAgIHZvaWQgKCpzeW5jKSh2 b2lkKSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoIWxpc3RfZW1wdHkobGlzdCkpCjE0NDc0OiAgIF9f bGlzdF9zcGxpY2VfaW5pdF9yY3UobGlzdCwgaGVhZCwgaGVhZC0+bmV4dCwgc3luYyk7CjE0NDc0 OiB9CjE0NDc0OiAjIDI4OCAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg bGlzdF9zcGxpY2VfdGFpbF9pbml0X3JjdShzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAoxNDQ3NDog ICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCjE0NDc0OiAgICAgICAgICAgdm9pZCAo KnN5bmMpKHZvaWQpKQoxNDQ3NDogewoxNDQ3NDogIGlmICghbGlzdF9lbXB0eShsaXN0KSkKMTQ0 NzQ6ICAgX19saXN0X3NwbGljZV9pbml0X3JjdShsaXN0LCBoZWFkLT5wcmV2LCBoZWFkLCBzeW5j KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDgzICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBobGlzdF9kZWxfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3 NDogIF9faGxpc3RfZGVsKG4pOwoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKG4tPnBwcmV2KSBf X3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5wcHJldikp ICgoKHZvaWQgKikgMHgxMjIgKyAoMHhkZWFkMDAwMDAwMDAwMDAwVUwpKSkgfTsgX193cml0ZV9v bmNlX3NpemUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihuLT5wcHJldikpOyBfX3UuX192 YWw7IH0pOwoxNDQ3NDogfQoxNDQ3NDogIyA0OTYgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0Lmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGhsaXN0X3JlcGxhY2VfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpvbGQsCjE0 NDc0OiAgICAgIHN0cnVjdCBobGlzdF9ub2RlICpuZXcpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0 IGhsaXN0X25vZGUgKm5leHQgPSBvbGQtPm5leHQ7CjE0NDc0OiAKMTQ0NzQ6ICBuZXctPm5leHQg PSBuZXh0OwoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKG5ldy0+cHByZXYpIF9fdmFsOyBjaGFy IF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG5ldy0+cHByZXYpKSAob2xkLT5w cHJldikgfTsgX193cml0ZV9vbmNlX3NpemUoJihuZXctPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9m KG5ldy0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICBkbyB7IHVpbnRwdHJfdCBfcl9h X3BfX3YgPSAodWludHB0cl90KShuZXcpOyA7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChuZXcp ICYmIChfcl9hX3BfX3YpID09ICh1aW50cHRyX3QpKCh2b2lkICopMCkpICh7IHVuaW9uIHsgdHlw ZW9mKCgqKHN0cnVjdCBobGlzdF9ub2RlICoqKW5ldy0+cHByZXYpKSBfX3ZhbDsgY2hhciBfX2Nb MV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigoKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKilu ZXctPnBwcmV2KSkpICgodHlwZW9mKCooc3RydWN0IGhsaXN0X25vZGUgKiopbmV3LT5wcHJldikp KF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKCooc3RydWN0IGhsaXN0X25vZGUg KiopbmV3LT5wcHJldikpLCBfX3UuX19jLCBzaXplb2YoKCooc3RydWN0IGhsaXN0X25vZGUgKiop bmV3LT5wcHJldikpKTsgX191Ll9fdmFsOyB9KTsgZWxzZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQg X19jb21waWxldGltZV9hc3NlcnRfNTAzKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygi TmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9yZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBp ZiAoISgoc2l6ZW9mKComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiluZXctPnBwcmV2KSA9PSBzaXpl b2YoY2hhcikgfHwgc2l6ZW9mKComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiluZXctPnBwcmV2KSA9 PSBzaXplb2Yoc2hvcnQpIHx8IHNpemVvZigqJiooc3RydWN0IGhsaXN0X25vZGUgKiopbmV3LT5w cHJldikgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKilu ZXctPnBwcmV2KSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfNTAzKCk7 IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1 bmlvbiB7IHR5cGVvZigqJiooc3RydWN0IGhsaXN0X25vZGUgKiopbmV3LT5wcHJldikgX192YWw7 IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKiYqKHN0cnVjdCBobGlz dF9ub2RlICoqKW5ldy0+cHByZXYpKSAoKHR5cGVvZigqKCh0eXBlb2YoKihzdHJ1Y3QgaGxpc3Rf bm9kZSAqKiluZXctPnBwcmV2KSlfcl9hX3BfX3YpKSAqKSgodHlwZW9mKCooc3RydWN0IGhsaXN0 X25vZGUgKiopbmV3LT5wcHJldikpX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigq Jiooc3RydWN0IGhsaXN0X25vZGUgKiopbmV3LT5wcHJldiksIF9fdS5fX2MsIHNpemVvZigqJioo c3RydWN0IGhsaXN0X25vZGUgKiopbmV3LT5wcHJldikpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgaWYgKG5leHQpCjE0NDc0OiAgICh7IHVuaW9uIHsg dHlwZW9mKG5ldy0+bmV4dC0+cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5f X3ZhbCA9ICggdHlwZW9mKG5ldy0+bmV4dC0+cHByZXYpKSAoJm5ldy0+bmV4dCkgfTsgX193cml0 ZV9vbmNlX3NpemUoJihuZXctPm5leHQtPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG5ldy0+bmV4 dC0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVvZihvbGQt PnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihv bGQtPnBwcmV2KSkgKCgodm9pZCAqKSAweDEyMiArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpKSB9 OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKG9sZC0+cHByZXYpLCBfX3UuX19jLCBzaXplb2Yob2xkLT5w cHJldikpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDogfQoxNDQ3NDogIyA1MzUgIi4vaW5jbHVkZS9s aW51eC9yY3VsaXN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2FkZF9oZWFkX3JjdShzdHJ1Y3QgaGxp c3Rfbm9kZSAqbiwKMTQ0NzQ6ICAgICAgc3RydWN0IGhsaXN0X2hlYWQgKmgpCjE0NDc0OiB7CjE0 NDc0OiAgc3RydWN0IGhsaXN0X25vZGUgKmZpcnN0ID0gaC0+Zmlyc3Q7CjE0NDc0OiAKMTQ0NzQ6 ICBuLT5uZXh0ID0gZmlyc3Q7CjE0NDc0OiAgKHsgdW5pb24geyB0eXBlb2Yobi0+cHByZXYpIF9f dmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4tPnBwcmV2KSkg KCZoLT5maXJzdCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNp emVvZihuLT5wcHJldikpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDogIGRvIHsgdWludHB0cl90IF9y X2FfcF9fdiA9ICh1aW50cHRyX3QpKG4pOyA7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChuKSAm JiAoX3JfYV9wX192KSA9PSAodWludHB0cl90KSgodm9pZCAqKTApKSAoeyB1bmlvbiB7IHR5cGVv ZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkpKSkpIF9fdmFsOyBjaGFy IF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCgoKigoc3RydWN0IGhsaXN0X25v ZGUgKiopKCYoaCktPmZpcnN0KSkpKSkpICgodHlwZW9mKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAq KikoJihoKS0+Zmlyc3QpKSkpKShfcl9hX3BfX3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKCgo Kigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYoaCktPmZpcnN0KSkpKSksIF9fdS5fX2MsIHNpemVv ZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkpKSkpKTsgX191Ll9fdmFs OyB9KTsgZWxzZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfNTQy KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBz dG9yZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKComKCooKHN0cnVj dCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkpKSkgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVv ZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihoKS0+Zmlyc3QpKSkpID09IHNpemVvZihz aG9ydCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkp KSkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgm KGgpLT5maXJzdCkpKSkgPT0gc2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzU0 MigpOyB9IHdoaWxlICgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsg KHsgdW5pb24geyB0eXBlb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYoaCktPmZpcnN0 KSkpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqJigq KChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihoKS0+Zmlyc3QpKSkpKSAoKHR5cGVvZigqKCh0eXBl b2YoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkpKSkpX3JfYV9wX192KSkg KikoKHR5cGVvZigoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYoaCktPmZpcnN0KSkpKSlfcl9h X3BfX3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoq KSgmKGgpLT5maXJzdCkpKSksIF9fdS5fX2MsIHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9k ZSAqKikoJihoKS0+Zmlyc3QpKSkpKTsgX191Ll9fdmFsOyB9KTsgfSB3aGlsZSAoMCk7IH0gd2hp bGUgKDApOwoxNDQ3NDogIGlmIChmaXJzdCkKMTQ0NzQ6ICAgKHsgdW5pb24geyB0eXBlb2YoZmly c3QtPnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVv ZihmaXJzdC0+cHByZXYpKSAoJm4tPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoZmlyc3Qt PnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKGZpcnN0LT5wcHJldikpOyBfX3UuX192YWw7IH0pOwox NDQ3NDogfQoxNDQ3NDogIyA1NjYgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0LmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGhsaXN0X2FkZF90YWlsX3JjdShzdHJ1Y3QgaGxpc3Rfbm9kZSAqbiwKMTQ0NzQ6ICAgICAg ICAgICBzdHJ1Y3QgaGxpc3RfaGVhZCAqaCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgaGxpc3Rf bm9kZSAqaSwgKmxhc3QgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgZm9y IChpID0gaC0+Zmlyc3Q7IGk7IGkgPSBpLT5uZXh0KQoxNDQ3NDogICBsYXN0ID0gaTsKMTQ0NzQ6 IAoxNDQ3NDogIGlmIChsYXN0KSB7CjE0NDc0OiAgIG4tPm5leHQgPSBsYXN0LT5uZXh0OwoxNDQ3 NDogICAoeyB1bmlvbiB7IHR5cGVvZihuLT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+cHByZXYpKSAoJmxhc3QtPm5leHQpIH07IF9fd3Jp dGVfb25jZV9zaXplKCYobi0+cHByZXYpLCBfX3UuX19jLCBzaXplb2Yobi0+cHByZXYpKTsgX191 Ll9fdmFsOyB9KTsKMTQ0NzQ6ICAgZG8geyB1aW50cHRyX3QgX3JfYV9wX192ID0gKHVpbnRwdHJf dCkobik7IDsgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG4pICYmIChfcl9hX3BfX3YpID09ICh1 aW50cHRyX3QpKCh2b2lkICopMCkpICh7IHVuaW9uIHsgdHlwZW9mKCgoKigoc3RydWN0IGhsaXN0 X25vZGUgKiopKCYobGFzdCktPm5leHQpKSkpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0g eyAuX192YWwgPSAoIHR5cGVvZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5u ZXh0KSkpKSkpICgodHlwZW9mKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4 dCkpKSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKCgqKChzdHJ1Y3QgaGxp c3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4dCkpKSkpLCBfX3UuX19jLCBzaXplb2YoKCgqKChzdHJ1 Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4dCkpKSkpKTsgX191Ll9fdmFsOyB9KTsgZWxz ZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfNTc4KHZvaWQpIF9f YXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9yZXMvbG9h ZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9u b2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComKCoo KHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSA9PSBzaXplb2Yoc2hvcnQp IHx8IHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4dCkpKSkg PT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxh c3QpLT5uZXh0KSkpKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfNTc4 KCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAo eyB1bmlvbiB7IHR5cGVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4 dCkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKiYo Kigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYobGFzdCktPm5leHQpKSkpKSAoKHR5cGVvZigqKCh0 eXBlb2YoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSlfcl9hX3Bf X3YpKSAqKSgodHlwZW9mKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4dCkp KSkpX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJigqKChzdHJ1Y3QgaGxpc3Rf bm9kZSAqKikoJihsYXN0KS0+bmV4dCkpKSksIF9fdS5fX2MsIHNpemVvZigqJigqKChzdHJ1Y3Qg aGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4dCkpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgfSBlbHNlIHsKMTQ0NzQ6ICAgaGxpc3RfYWRkX2hl YWRfcmN1KG4sIGgpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjAyICIuL2luY2x1ZGUv bGludXgvcmN1bGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9hZGRfYmVmb3JlX3JjdShzdHJ1Y3Qg aGxpc3Rfbm9kZSAqbiwKMTQ0NzQ6ICAgICAgc3RydWN0IGhsaXN0X25vZGUgKm5leHQpCjE0NDc0 OiB7CjE0NDc0OiAgKHsgdW5pb24geyB0eXBlb2Yobi0+cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sx XTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4tPnBwcmV2KSkgKG5leHQtPnBwcmV2KSB9 OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKG4tPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG4tPnBwcmV2 KSk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiAgbi0+bmV4dCA9IG5leHQ7CjE0NDc0OiAgZG8geyB1 aW50cHRyX3QgX3JfYV9wX192ID0gKHVpbnRwdHJfdCkobik7IDsgaWYgKF9fYnVpbHRpbl9jb25z dGFudF9wKG4pICYmIChfcl9hX3BfX3YpID09ICh1aW50cHRyX3QpKCh2b2lkICopMCkpICh7IHVu aW9uIHsgdHlwZW9mKCgoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKChuKS0+cHByZXYpKSkpKSBf X3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigoKCooKHN0cnVj dCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSkpICgodHlwZW9mKCgqKChzdHJ1Y3QgaGxp c3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9z aXplKCYoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpLCBfX3UuX19j LCBzaXplb2YoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpKTsgX191 Ll9fdmFsOyB9KTsgZWxzZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3Nl cnRfNjA3KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBz aXplZCBzdG9yZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKComKCoo KHN0cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSA9PSBzaXplb2YoY2hhcikgfHwg c2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSA9PSBzaXpl b2Yoc2hvcnQpIHx8IHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJl dikpKSkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoq KSgobiktPnBwcmV2KSkpKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRf NjA3KCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OyAoeyB1bmlvbiB7IHR5cGVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJl dikpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKiYo Kigoc3RydWN0IGhsaXN0X25vZGUgKiopKChuKS0+cHByZXYpKSkpKSAoKHR5cGVvZigqKCh0eXBl b2YoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSlfcl9hX3BfX3YpKSAq KSgodHlwZW9mKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpX3JfYV9w X192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiko KG4pLT5wcHJldikpKSksIF9fdS5fX2MsIHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAq KikoKG4pLT5wcHJldikpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAo MCk7CjE0NDc0OiAgKHsgdW5pb24geyB0eXBlb2YobmV4dC0+cHByZXYpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG5leHQtPnBwcmV2KSkgKCZuLT5uZXh0 KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKG5leHQtPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG5l eHQtPnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDYyOSAiLi9pbmNs dWRlL2xpbnV4L3JjdWxpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3RfYWRkX2JlaGluZF9yY3Uoc3Ry dWN0IGhsaXN0X25vZGUgKm4sCjE0NDc0OiAgICAgIHN0cnVjdCBobGlzdF9ub2RlICpwcmV2KQox NDQ3NDogewoxNDQ3NDogIG4tPm5leHQgPSBwcmV2LT5uZXh0OwoxNDQ3NDogICh7IHVuaW9uIHsg dHlwZW9mKG4tPnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAo IHR5cGVvZihuLT5wcHJldikpICgmcHJldi0+bmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihu LT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihuLT5wcHJldikpOyBfX3UuX192YWw7IH0pOwoxNDQ3 NDogIGRvIHsgdWludHB0cl90IF9yX2FfcF9fdiA9ICh1aW50cHRyX3QpKG4pOyA7IGlmIChfX2J1 aWx0aW5fY29uc3RhbnRfcChuKSAmJiAoX3JfYV9wX192KSA9PSAodWludHB0cl90KSgodm9pZCAq KTApKSAoeyB1bmlvbiB7IHR5cGVvZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKHByZXYp LT5uZXh0KSkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBl b2YoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4dCkpKSkpKSAoKHR5cGVv ZigoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpKShfcl9hX3BfX3Yp KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKCgoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJl diktPm5leHQpKSkpKSwgX191Ll9fYywgc2l6ZW9mKCgoKigoc3RydWN0IGhsaXN0X25vZGUgKiop KCYocHJldiktPm5leHQpKSkpKSk7IF9fdS5fX3ZhbDsgfSk7IGVsc2UgZG8geyBkbyB7IGV4dGVy biB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzYzNCh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vy cm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHku IikpKTsgaWYgKCEoKHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+ bmV4dCkpKSkgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9k ZSAqKikoJihwcmV2KS0+bmV4dCkpKSkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYoKigo c3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVvZihpbnQpIHx8 IHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4dCkpKSkgPT0g c2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzYzNCgpOyB9IHdoaWxlICgwKTsg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgKHsgdW5pb24geyB0eXBlb2Yo KiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpIF9fdmFsOyBjaGFy IF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKComKCooKHN0cnVjdCBobGlzdF9u b2RlICoqKSgmKHByZXYpLT5uZXh0KSkpKSkgKCh0eXBlb2YoKigodHlwZW9mKCgqKChzdHJ1Y3Qg aGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4dCkpKSkpX3JfYV9wX192KSkgKikoKHR5cGVvZigo Kigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpKV9yX2FfcF9fdikpIH07 IF9fd3JpdGVfb25jZV9zaXplKCYoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldikt Pm5leHQpKSkpLCBfX3UuX19jLCBzaXplb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYo cHJldiktPm5leHQpKSkpKTsgX191Ll9fdmFsOyB9KTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDAp OwoxNDQ3NDogIGlmIChuLT5uZXh0KQoxNDQ3NDogICAoeyB1bmlvbiB7IHR5cGVvZihuLT5uZXh0 LT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yo bi0+bmV4dC0+cHByZXYpKSAoJm4tPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobi0+bmV4 dC0+cHByZXYpLCBfX3UuX19jLCBzaXplb2Yobi0+bmV4dC0+cHByZXYpKTsgX191Ll9fdmFsOyB9 KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgOCAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAyCjE0NDc0 OiAjIDEgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0X2JsLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvbGludXgvbGlzdF9ibC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvYml0X3NwaW5sb2NrLmgiIDEKMTQ0NzQ6 ICMgMTYgIi4vaW5jbHVkZS9saW51eC9iaXRfc3BpbmxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYml0X3Nw aW5fbG9jayhpbnQgYml0bnVtLCB1bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IAoxNDQ3NDogIHdo aWxlIChfX2J1aWx0aW5fZXhwZWN0KCEhKHRlc3RfYW5kX3NldF9iaXRfbG9jayhiaXRudW0sIGFk ZHIpKSwgMCkpIHsKMTQ0NzQ6ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnki KTsKMTQ0NzQ6ICAgZG8gewoxNDQ3NDogICAgY3B1X3JlbGF4KCk7CjE0NDc0OiAgIH0gd2hpbGUg KHRlc3RfYml0KGJpdG51bSwgYWRkcikpOwoxNDQ3NDogICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi IjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogICh2b2lkKTA7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRfc3Bpbl90 cnlsb2NrKGludCBiaXRudW0sIHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IAoxNDQ3NDogIGlm IChfX2J1aWx0aW5fZXhwZWN0KCEhKHRlc3RfYW5kX3NldF9iaXRfbG9jayhiaXRudW0sIGFkZHIp KSwgMCkpIHsKMTQ0NzQ6ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsK MTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0OiAgKHZvaWQpMDsKMTQ0 NzQ6ICByZXR1cm4gMTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBiaXRfc3Bpbl91bmxvY2soaW50IGJpdG51bSwgdW5zaWduZWQgbG9uZyAqYWRk cikKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGNsZWFy X2JpdF91bmxvY2soYml0bnVtLCBhZGRyKTsKMTQ0NzQ6IAoxNDQ3NDogIF9fYXNtX18gX192b2xh dGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgKHZvaWQpMDsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19i aXRfc3Bpbl91bmxvY2soaW50IGJpdG51bSwgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fY2xlYXJfYml0X3VubG9j ayhiaXRudW0sIGFkZHIpOwoxNDQ3NDogCjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6 IDogOiJtZW1vcnkiKTsKMTQ0NzQ6ICAodm9pZCkwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgYml0X3NwaW5faXNfbG9ja2VkKGludCBiaXRudW0s IHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gdGVz dF9iaXQoYml0bnVtLCBhZGRyKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiB9CjE0NDc0OiAjIDcgIi4vaW5jbHVkZS9saW51eC9saXN0X2JsLmgiIDIKMTQ0 NzQ6ICMgMzQgIi4vaW5jbHVkZS9saW51eC9saXN0X2JsLmgiCjE0NDc0OiBzdHJ1Y3QgaGxpc3Rf YmxfaGVhZCB7CjE0NDc0OiAgc3RydWN0IGhsaXN0X2JsX25vZGUgKmZpcnN0OwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGhsaXN0X2JsX25vZGUgewoxNDQ3NDogIHN0cnVjdCBobGlz dF9ibF9ub2RlICpuZXh0LCAqKnBwcmV2OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgSU5JVF9ITElTVF9CTF9OT0RFKHN0cnVjdCBobGlzdF9ibF9ub2RlICpo KQoxNDQ3NDogewoxNDQ3NDogIGgtPm5leHQgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6ICBoLT5wcHJl diA9ICgodm9pZCAqKTApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBobGlzdF9ibF91bmhhc2hlZChjb25zdCBzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqaCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gIWgtPnBwcmV2OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBz dHJ1Y3QgaGxpc3RfYmxfbm9kZSAqaGxpc3RfYmxfZmlyc3Qoc3RydWN0IGhsaXN0X2JsX2hlYWQg KmgpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqKQoxNDQ3 NDogICAoKHVuc2lnbmVkIGxvbmcpaC0+Zmlyc3QgJiB+MVVMKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBobGlzdF9ibF9zZXRfZmlyc3Qoc3RydWN0IGhsaXN0X2JsX2hlYWQgKmgsCjE0 NDc0OiAgICAgIHN0cnVjdCBobGlzdF9ibF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsg aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoKHVuc2lnbmVkIGxvbmcpbiAmIDFVTCksIDApKSBkbyB7 IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxu IiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFi IiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAi ICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19l bnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQu b3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L2xpc3Rf YmwuaCIpLCAiaSIgKDY2KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkp KTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2Vj dGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9w c2VjdGlvblxuXHQiIDogOiAiaSIgKDE5KSk7IH0pOyBhc20gdm9sYXRpbGUoIiIpOyBfX2J1aWx0 aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsK MTQ0NzQ6ICBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCgodW5zaWduZWQgbG9uZyloLT5m aXJzdCAmIDFVTCkgIT0gMVVMKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUo IjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUs XCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1 Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6Zmls ZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIg Ilx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIg OiA6ICJpIiAoImluY2x1ZGUvbGludXgvbGlzdF9ibC5oIiksICJpIiAoNjcpLCAiaSIgKDApLCAi aSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAoeyBhc20g dm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hhYmxlXG5c dCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMjApKTsg fSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdoaWxlICgw KTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAg ICA7CjE0NDc0OiAgaC0+Zmlyc3QgPSAoc3RydWN0IGhsaXN0X2JsX25vZGUgKikoKHVuc2lnbmVk IGxvbmcpbiB8IDFVTCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaGxpc3RfYmxfZW1w dHkoY29uc3Qgc3RydWN0IGhsaXN0X2JsX2hlYWQgKmgpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu ICEoKHVuc2lnbmVkIGxvbmcpKHsgdW5pb24geyB0eXBlb2YoaC0+Zmlyc3QpIF9fdmFsOyBjaGFy IF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoaC0+Zmlyc3QpLCBfX3Uu X19jLCBzaXplb2YoaC0+Zmlyc3QpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJiho LT5maXJzdCksIF9fdS5fX2MsIHNpemVvZihoLT5maXJzdCkpOyBkbyB7IH0gd2hpbGUgKDApOyBf X3UuX192YWw7IH0pICYgfjFVTCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3Rf YmxfYWRkX2hlYWQoc3RydWN0IGhsaXN0X2JsX25vZGUgKm4sCjE0NDc0OiAgICAgIHN0cnVjdCBo bGlzdF9ibF9oZWFkICpoKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBobGlzdF9ibF9ub2RlICpm aXJzdCA9IGhsaXN0X2JsX2ZpcnN0KGgpOwoxNDQ3NDogCjE0NDc0OiAgbi0+bmV4dCA9IGZpcnN0 OwoxNDQ3NDogIGlmIChmaXJzdCkKMTQ0NzQ6ICAgZmlyc3QtPnBwcmV2ID0gJm4tPm5leHQ7CjE0 NDc0OiAgbi0+cHByZXYgPSAmaC0+Zmlyc3Q7CjE0NDc0OiAgaGxpc3RfYmxfc2V0X2ZpcnN0KGgs IG4pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2JsX2FkZF9iZWZvcmUoc3Ry dWN0IGhsaXN0X2JsX25vZGUgKm4sCjE0NDc0OiAgICAgICAgICAgIHN0cnVjdCBobGlzdF9ibF9u b2RlICpuZXh0KQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBobGlzdF9ibF9ub2RlICoqcHByZXYg PSBuZXh0LT5wcHJldjsKMTQ0NzQ6IAoxNDQ3NDogIG4tPnBwcmV2ID0gcHByZXY7CjE0NDc0OiAg bi0+bmV4dCA9IG5leHQ7CjE0NDc0OiAgbmV4dC0+cHByZXYgPSAmbi0+bmV4dDsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgKHsgdW5pb24geyB0eXBlb2YoKnBwcmV2KSBfX3ZhbDsgY2hhciBfX2Nb MV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqcHByZXYpKSAoKHN0cnVjdCBobGlzdF9i bF9ub2RlICopICgodWludHB0cl90KW4gfCAoKHVpbnRwdHJfdCkqcHByZXYgJiAxVUwpKSkgfTsg X193cml0ZV9vbmNlX3NpemUoJigqcHByZXYpLCBfX3UuX19jLCBzaXplb2YoKnBwcmV2KSk7IF9f dS5fX3ZhbDsgfSkKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgaGxpc3RfYmxfYWRkX2JlaGluZChzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqbiwKMTQ0NzQ6ICAg ICAgICAgICAgc3RydWN0IGhsaXN0X2JsX25vZGUgKnByZXYpCjE0NDc0OiB7CjE0NDc0OiAgbi0+ bmV4dCA9IHByZXYtPm5leHQ7CjE0NDc0OiAgbi0+cHByZXYgPSAmcHJldi0+bmV4dDsKMTQ0NzQ6 ICBwcmV2LT5uZXh0ID0gbjsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChuLT5uZXh0KQoxNDQ3NDogICBu LT5uZXh0LT5wcHJldiA9ICZuLT5uZXh0OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9f aGxpc3RfYmxfZGVsKHN0cnVjdCBobGlzdF9ibF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIHN0 cnVjdCBobGlzdF9ibF9ub2RlICpuZXh0ID0gbi0+bmV4dDsKMTQ0NzQ6ICBzdHJ1Y3QgaGxpc3Rf Ymxfbm9kZSAqKnBwcmV2ID0gbi0+cHByZXY7CjE0NDc0OiAKMTQ0NzQ6ICBkbyB7IGlmIChfX2J1 aWx0aW5fZXhwZWN0KCEhKCh1bnNpZ25lZCBsb25nKW4gJiAxVUwpLCAwKSkgZG8geyBkbyB7IGFz bSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNo c2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJi IiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIi ICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6Omxp bmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYisl YzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9saXN0X2JsLmgiKSwg ImkiICgxMjApLCAiaSIgKDApLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdo aWxlICgwKTsgZG8geyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5k aXNjYXJkLnVucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9u XG5cdCIgOiA6ICJpIiAoMjEpKTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJl YWNoYWJsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVvZigqcHByZXYpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCpwcHJldikpICgoc3RydWN0IGhsaXN0 X2JsX25vZGUgKikgKCh1bnNpZ25lZCBsb25nKW5leHQgfCAoKHVuc2lnbmVkIGxvbmcpKnBwcmV2 ICYgMVVMKSkpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKnBwcmV2KSwgX191Ll9fYywgc2l6ZW9m KCpwcHJldikpOyBfX3UuX192YWw7IH0pCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogIGlmIChuZXh0 KQoxNDQ3NDogICBuZXh0LT5wcHJldiA9IHBwcmV2OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGhsaXN0X2JsX2RlbChzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqbikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBfX2hsaXN0X2JsX2RlbChuKTsKMTQ0NzQ6ICBuLT5uZXh0ID0gKCh2b2lkICopIDB4MTAwICsg KDB4ZGVhZDAwMDAwMDAwMDAwMFVMKSk7CjE0NDc0OiAgbi0+cHByZXYgPSAoKHZvaWQgKikgMHgx MjIgKyAoMHhkZWFkMDAwMDAwMDAwMDAwVUwpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBobGlzdF9ibF9kZWxfaW5pdChzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqbikKMTQ0NzQ6IHsKMTQ0 NzQ6ICBpZiAoIWhsaXN0X2JsX3VuaGFzaGVkKG4pKSB7CjE0NDc0OiAgIF9faGxpc3RfYmxfZGVs KG4pOwoxNDQ3NDogICBJTklUX0hMSVNUX0JMX05PREUobik7CjE0NDc0OiAgfQoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2JsX2xvY2soc3RydWN0IGhsaXN0X2JsX2hlYWQgKmIp CjE0NDc0OiB7CjE0NDc0OiAgYml0X3NwaW5fbG9jaygwLCAodW5zaWduZWQgbG9uZyAqKWIpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2JsX3VubG9jayhzdHJ1Y3QgaGxpc3Rf YmxfaGVhZCAqYikKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2JpdF9zcGluX3VubG9jaygwLCAodW5zaWdu ZWQgbG9uZyAqKWIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGhsaXN0X2JsX2lzX2xv Y2tlZChzdHJ1Y3QgaGxpc3RfYmxfaGVhZCAqYikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYml0 X3NwaW5faXNfbG9ja2VkKDAsICh1bnNpZ25lZCBsb25nICopYik7CjE0NDc0OiB9CjE0NDc0OiAj IDkgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0X2JsLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGhsaXN0X2JsX3NldF9maXJzdF9yY3Uoc3RydWN0IGhsaXN0X2JsX2hlYWQgKmgsCjE0 NDc0OiAgICAgIHN0cnVjdCBobGlzdF9ibF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsg aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoKHVuc2lnbmVkIGxvbmcpbiAmIDFVTCksIDApKSBkbyB7 IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxu IiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFi IiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAi ICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19l bnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQu b3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3JjdWxp c3RfYmwuaCIpLCAiaSIgKDE0KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRy eSkpKTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNo c2VjdGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIu cG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDIyKSk7IH0pOyBhc20gdm9sYXRpbGUoIiIpOyBfX2J1 aWx0aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgw KTsKMTQ0NzQ6ICBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCgodW5zaWduZWQgbG9uZylo LT5maXJzdCAmIDFVTCkgIT0gMVVMKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRp bGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFi bGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6 OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6 ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVj MiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlv biIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvcmN1bGlzdF9ibC5oIiksICJpIiAoMTUpLCAiaSIg KDApLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAo eyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hh YmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAo MjMpKTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdo aWxlICgwKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApCjE0NDc0OiAgICAgICAgICAgICAgICAg ICAgICAgICA7CjE0NDc0OiAgZG8geyB1aW50cHRyX3QgX3JfYV9wX192ID0gKHVpbnRwdHJfdCko KHN0cnVjdCBobGlzdF9ibF9ub2RlICopKCh1bnNpZ25lZCBsb25nKW4gfCAxVUwpKTsgOyBpZiAo X19idWlsdGluX2NvbnN0YW50X3AoKHN0cnVjdCBobGlzdF9ibF9ub2RlICopKCh1bnNpZ25lZCBs b25nKW4gfCAxVUwpKSAmJiAoX3JfYV9wX192KSA9PSAodWludHB0cl90KSgodm9pZCAqKTApKSAo eyB1bmlvbiB7IHR5cGVvZigoaC0+Zmlyc3QpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0g eyAuX192YWwgPSAoIHR5cGVvZigoaC0+Zmlyc3QpKSkgKCh0eXBlb2YoaC0+Zmlyc3QpKShfcl9h X3BfX3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKChoLT5maXJzdCkpLCBfX3UuX19jLCBzaXpl b2YoKGgtPmZpcnN0KSkpOyBfX3UuX192YWw7IH0pOyBlbHNlIGRvIHsgZG8geyBleHRlcm4gdm9p ZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNyh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18o Ik5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikpKTsg aWYgKCEoKHNpemVvZigqJmgtPmZpcnN0KSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComaC0+ Zmlyc3QpID09IHNpemVvZihzaG9ydCkgfHwgc2l6ZW9mKComaC0+Zmlyc3QpID09IHNpemVvZihp bnQpIHx8IHNpemVvZigqJmgtPmZpcnN0KSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGlt ZV9hc3NlcnRfMTcoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoi bWVtb3J5Iik7ICh7IHVuaW9uIHsgdHlwZW9mKComaC0+Zmlyc3QpIF9fdmFsOyBjaGFyIF9fY1sx XTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKComaC0+Zmlyc3QpKSAoKHR5cGVvZigqKCh0 eXBlb2YoaC0+Zmlyc3QpKV9yX2FfcF9fdikpICopKCh0eXBlb2YoaC0+Zmlyc3QpKV9yX2FfcF9f dikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKiZoLT5maXJzdCksIF9fdS5fX2MsIHNpemVvZigq JmgtPmZpcnN0KSk7IF9fdS5fX3ZhbDsgfSk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKQoxNDQ3 NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGhsaXN0X2JsX25vZGUg KmhsaXN0X2JsX2ZpcnN0X3JjdShzdHJ1Y3QgaGxpc3RfYmxfaGVhZCAqaCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gKHN0cnVjdCBobGlzdF9ibF9ub2RlICopCjE0NDc0OiAgICgodW5zaWduZWQg bG9uZykoeyB0eXBlb2YoKihoLT5maXJzdCkpICpfX19fX19fX3AxID0gKHR5cGVvZigqKGgtPmZp cnN0KSkgKikoeyB1bmlvbiB7IHR5cGVvZigoaC0+Zmlyc3QpKSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKChoLT5maXJzdCkpLCBfX3UuX19jLCBz aXplb2YoKGgtPmZpcnN0KSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKChoLT5m aXJzdCkpLCBfX3UuX19jLCBzaXplb2YoKGgtPmZpcnN0KSkpOyBkbyB7IH0gd2hpbGUgKDApOyBf X3UuX192YWw7IH0pOyBkbyB7IH0gd2hpbGUgKDApOyA7ICgodHlwZW9mKCooaC0+Zmlyc3QpKSAq KShfX19fX19fX3AxKSk7IH0pICYgfjFVTCk7CjE0NDc0OiB9CjE0NDc0OiAjIDQ2ICIuL2luY2x1 ZGUvbGludXgvcmN1bGlzdF9ibC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9ibF9kZWxfcmN1KHN0cnVj dCBobGlzdF9ibF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIF9faGxpc3RfYmxfZGVsKG4pOwox NDQ3NDogIG4tPnBwcmV2ID0gKCh2b2lkICopIDB4MTIyICsgKDB4ZGVhZDAwMDAwMDAwMDAwMFVM KSk7CjE0NDc0OiB9CjE0NDc0OiAjIDcxICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdF9ibC5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBobGlzdF9ibF9hZGRfaGVhZF9yY3Uoc3RydWN0IGhsaXN0X2JsX25vZGUgKm4s CjE0NDc0OiAgICAgIHN0cnVjdCBobGlzdF9ibF9oZWFkICpoKQoxNDQ3NDogewoxNDQ3NDogIHN0 cnVjdCBobGlzdF9ibF9ub2RlICpmaXJzdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgZmlyc3Qg PSBobGlzdF9ibF9maXJzdChoKTsKMTQ0NzQ6IAoxNDQ3NDogIG4tPm5leHQgPSBmaXJzdDsKMTQ0 NzQ6ICBpZiAoZmlyc3QpCjE0NDc0OiAgIGZpcnN0LT5wcHJldiA9ICZuLT5uZXh0OwoxNDQ3NDog IG4tPnBwcmV2ID0gJmgtPmZpcnN0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBobGlzdF9ibF9z ZXRfZmlyc3RfcmN1KGgsIG4pOwoxNDQ3NDogfQoxNDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgv ZGNhY2hlLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2luY2x1ZGUvbGludXgvbG9ja3JlZi5oIiAxCjE0NDc0OiAjIDI1ICIuL2luY2x1ZGUvbGludXgv bG9ja3JlZi5oIgoxNDQ3NDogc3RydWN0IGxvY2tyZWYgewoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6 IAoxNDQ3NDogICBfX3U2NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkgbG9ja19jb3VudDsK MTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgc3BpbmxvY2tfdCBsb2NrOwoxNDQ3 NDogICAgaW50IGNvdW50OwoxNDQ3NDogICB9OwoxNDQ3NDogIH07CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCBsb2NrcmVmX2dldChzdHJ1Y3QgbG9ja3JlZiAqKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgbG9ja3JlZl9wdXRfcmV0dXJuKHN0cnVjdCBsb2NrcmVmICopOwoxNDQ3NDog ZXh0ZXJuIGludCBsb2NrcmVmX2dldF9ub3RfemVybyhzdHJ1Y3QgbG9ja3JlZiAqKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgbG9ja3JlZl9wdXRfbm90X3plcm8oc3RydWN0IGxvY2tyZWYgKik7CjE0NDc0 OiBleHRlcm4gaW50IGxvY2tyZWZfZ2V0X29yX2xvY2soc3RydWN0IGxvY2tyZWYgKik7CjE0NDc0 OiBleHRlcm4gaW50IGxvY2tyZWZfcHV0X29yX2xvY2soc3RydWN0IGxvY2tyZWYgKik7CjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGxvY2tyZWZfbWFya19kZWFkKHN0cnVjdCBsb2NrcmVmICop OwoxNDQ3NDogZXh0ZXJuIGludCBsb2NrcmVmX2dldF9ub3RfZGVhZChzdHJ1Y3QgbG9ja3JlZiAq KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIF9fbG9ja3JlZl9pc19kZWFkKGNvbnN0IHN0 cnVjdCBsb2NrcmVmICpsKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoKGludClsLT5jb3VudCA8 IDApOwoxNDQ3NDogfQoxNDQ3NDogIyAxNCAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAyCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zdHJpbmdoYXNoLmgiIDEKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xp bnV4L2hhc2guaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS90eXBlcy5oIiAx CjE0NDc0OiAjIDcgIi4vaW5jbHVkZS9saW51eC9oYXNoLmgiIDIKMTQ0NzQ6ICMgNjAgIi4vaW5j bHVkZS9saW51eC9oYXNoLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgX19oYXNoXzMyX2dlbmVyaWModTMyIHZhbCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdmFsICogMHg2MUM4ODY0NzsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMyIGhhc2hfMzJfZ2VuZXJpYyh1MzIg dmFsLCB1bnNpZ25lZCBpbnQgYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBf X2hhc2hfMzJfZ2VuZXJpYyh2YWwpID4+ICgzMiAtIGJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHUzMiBoYXNoXzY0X2dlbmVyaWModTY0IHZhbCwgdW5zaWduZWQgaW50IGJpdHMpCjE0 NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiB2YWwgKiAweDYxQzg4NjQ2ODBC NTgzRUJ1bGwgPj4gKDY0IC0gYml0cyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMyIGhhc2hfcHRyKGNvbnN0IHZvaWQgKnB0ciwgdW5z aWduZWQgaW50IGJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGhhc2hfNjRfZ2VuZXJpYygo dW5zaWduZWQgbG9uZylwdHIsIGJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHUzMiBoYXNoMzJfcHRyKGNvbnN0IHZvaWQgKnB0cikKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25l ZCBsb25nIHZhbCA9ICh1bnNpZ25lZCBsb25nKXB0cjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg dmFsIF49ICh2YWwgPj4gMzIpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuICh1MzIpdmFsOwoxNDQ3 NDogfQoxNDQ3NDogIyA4ICIuL2luY2x1ZGUvbGludXgvc3RyaW5naGFzaC5oIiAyCjE0NDc0OiAj IDQyICIuL2luY2x1ZGUvbGludXgvc3RyaW5naGFzaC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZwox NDQ3NDogcGFydGlhbF9uYW1lX2hhc2godW5zaWduZWQgbG9uZyBjLCB1bnNpZ25lZCBsb25nIHBy ZXZoYXNoKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAocHJldmhhc2ggKyAoYyA8PCA0KSArIChj ID4+IDQpKSAqIDExOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGVuZF9uYW1lX2hhc2godW5zaWduZWQg bG9uZyBoYXNoKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBoYXNoXzY0X2dlbmVyaWMoaGFzaCwg MzIpOwoxNDQ3NDogfQoxNDQ3NDogIyA2NiAiLi9pbmNsdWRlL2xpbnV4L3N0cmluZ2hhc2guaCIK MTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygoX19wdXJlX18pKSBmdWxs X25hbWVfaGFzaChjb25zdCB2b2lkICpzYWx0LCBjb25zdCBjaGFyICosIHVuc2lnbmVkIGludCk7 CjE0NDc0OiAjIDc3ICIuL2luY2x1ZGUvbGludXgvc3RyaW5naGFzaC5oIgoxNDQ3NDogZXh0ZXJu IHU2NCBfX2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpIGhhc2hsZW5fc3RyaW5nKGNvbnN0IHZvaWQg KnNhbHQsIGNvbnN0IGNoYXIgKm5hbWUpOwoxNDQ3NDogIyAxNSAiLi9pbmNsdWRlL2xpbnV4L2Rj YWNoZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBhdGg7CjE0NDc0OiBzdHJ1 Y3QgdmZzbW91bnQ7CjE0NDc0OiAjIDQ3ICIuL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCjE0NDc0 OiBzdHJ1Y3QgcXN0ciB7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDog ICAgdTMyIGhhc2g7IHUzMiBsZW47CjE0NDc0OiAgIH07CjE0NDc0OiAgIHU2NCBoYXNoX2xlbjsK MTQ0NzQ6ICB9OwoxNDQ3NDogIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5hbWU7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNvbnN0IHN0cnVjdCBxc3RyIGVt cHR5X25hbWU7CjE0NDc0OiBleHRlcm4gY29uc3Qgc3RydWN0IHFzdHIgc2xhc2hfbmFtZTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGRlbnRyeV9zdGF0X3QgewoxNDQ3NDogIGxvbmcgbnJfZGVudHJ5 OwoxNDQ3NDogIGxvbmcgbnJfdW51c2VkOwoxNDQ3NDogIGxvbmcgYWdlX2xpbWl0OwoxNDQ3NDog IGxvbmcgd2FudF9wYWdlczsKMTQ0NzQ6ICBsb25nIG5yX25lZ2F0aXZlOwoxNDQ3NDogIGxvbmcg ZHVtbXk7CjE0NDc0OiB9OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3RhdF90IGRlbnRy eV9zdGF0OwoxNDQ3NDogIyA4OSAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgoxNDQ3NDogc3Ry dWN0IGRlbnRyeSB7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZF9mbGFnczsKMTQ0NzQ6 ICBzZXFjb3VudF90IGRfc2VxOwoxNDQ3NDogIHN0cnVjdCBobGlzdF9ibF9ub2RlIGRfaGFzaDsK MTQ0NzQ6ICBzdHJ1Y3QgZGVudHJ5ICpkX3BhcmVudDsKMTQ0NzQ6ICBzdHJ1Y3QgcXN0ciBkX25h bWU7CjE0NDc0OiAgc3RydWN0IGlub2RlICpkX2lub2RlOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWdu ZWQgY2hhciBkX2luYW1lWzMyXTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGxvY2ty ZWYgZF9sb2NrcmVmOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyAqZF9v cDsKMTQ0NzQ6ICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmRfc2I7CjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBkX3RpbWU7CjE0NDc0OiAgdm9pZCAqZF9mc2RhdGE7CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiB7 CjE0NDc0OiAgIHN0cnVjdCBsaXN0X2hlYWQgZF9scnU7CjE0NDc0OiAgIHdhaXRfcXVldWVfaGVh ZF90ICpkX3dhaXQ7CjE0NDc0OiAgfTsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGRfY2hpbGQ7 CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBkX3N1YmRpcnM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgaGxpc3Rfbm9kZSBkX2FsaWFzOwox NDQ3NDogICBzdHJ1Y3QgaGxpc3RfYmxfbm9kZSBkX2luX2xvb2t1cF9oYXNoOwoxNDQ3NDogICAg c3RydWN0IGNhbGxiYWNrX2hlYWQgZF9yY3U7CjE0NDc0OiAgfSBkX3U7CjE0NDc0OiB9IF9fYXR0 cmlidXRlX18oKF9fZGVzaWduYXRlZF9pbml0X18pKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkZW50cnlfZF9sb2Nr X2NsYXNzCjE0NDc0OiB7CjE0NDc0OiAgREVOVFJZX0RfTE9DS19OT1JNQUwsCjE0NDc0OiAgREVO VFJZX0RfTE9DS19ORVNURUQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkZW50cnlf b3BlcmF0aW9ucyB7CjE0NDc0OiAgaW50ICgqZF9yZXZhbGlkYXRlKShzdHJ1Y3QgZGVudHJ5ICos IHVuc2lnbmVkIGludCk7CjE0NDc0OiAgaW50ICgqZF93ZWFrX3JldmFsaWRhdGUpKHN0cnVjdCBk ZW50cnkgKiwgdW5zaWduZWQgaW50KTsKMTQ0NzQ6ICBpbnQgKCpkX2hhc2gpKGNvbnN0IHN0cnVj dCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CjE0NDc0OiAgaW50ICgqZF9jb21wYXJlKShjb25z dCBzdHJ1Y3QgZGVudHJ5ICosCjE0NDc0OiAgICB1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKiwg Y29uc3Qgc3RydWN0IHFzdHIgKik7CjE0NDc0OiAgaW50ICgqZF9kZWxldGUpKGNvbnN0IHN0cnVj dCBkZW50cnkgKik7CjE0NDc0OiAgaW50ICgqZF9pbml0KShzdHJ1Y3QgZGVudHJ5ICopOwoxNDQ3 NDogIHZvaWQgKCpkX3JlbGVhc2UpKHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiAgdm9pZCAoKmRf cHJ1bmUpKHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiAgdm9pZCAoKmRfaXB1dCkoc3RydWN0IGRl bnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiAgY2hhciAqKCpkX2RuYW1lKShzdHJ1Y3Qg ZGVudHJ5ICosIGNoYXIgKiwgaW50KTsKMTQ0NzQ6ICBzdHJ1Y3QgdmZzbW91bnQgKigqZF9hdXRv bW91bnQpKHN0cnVjdCBwYXRoICopOwoxNDQ3NDogIGludCAoKmRfbWFuYWdlKShjb25zdCBzdHJ1 Y3QgcGF0aCAqLCBib29sKTsKMTQ0NzQ6ICBzdHJ1Y3QgZGVudHJ5ICooKmRfcmVhbCkoc3RydWN0 IGRlbnRyeSAqLCBjb25zdCBzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiB9IF9fYXR0cmlidXRlX18o KF9fYWxpZ25lZF9fKCgxIDw8ICg2KSkpKSk7CjE0NDc0OiAjIDIyMSAiLi9pbmNsdWRlL2xpbnV4 L2RjYWNoZS5oIgoxNDQ3NDogZXh0ZXJuIHNlcWxvY2tfdCByZW5hbWVfbG9jazsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZF9pbnN0YW50aWF0ZShz dHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRfaW5z dGFudGlhdGVfbmV3KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICopOwoxNDQ3NDogZXh0 ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2luc3RhbnRpYXRlX3VuaXF1ZShzdHJ1Y3QgZGVudHJ5ICos IHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9pbnN0YW50 aWF0ZV9hbm9uKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICopOwoxNDQ3NDogZXh0ZXJu IHZvaWQgX19kX2Ryb3Aoc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKMTQ0NzQ6IGV4dGVybiB2b2lk IGRfZHJvcChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZF9kZWxl dGUoc3RydWN0IGRlbnRyeSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRfc2V0X2Rfb3Aoc3RydWN0 IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgKm9wKTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfYWxsb2Moc3RydWN0 IGRlbnRyeSAqLCBjb25zdCBzdHJ1Y3QgcXN0ciAqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVu dHJ5ICogZF9hbGxvY19hbm9uKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKMTQ0NzQ6IGV4dGVybiBz dHJ1Y3QgZGVudHJ5ICogZF9hbGxvY19wYXJhbGxlbChzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IHN0 cnVjdCBxc3RyICosCjE0NDc0OiAgICAgIHdhaXRfcXVldWVfaGVhZF90ICopOwoxNDQ3NDogZXh0 ZXJuIHN0cnVjdCBkZW50cnkgKiBkX3NwbGljZV9hbGlhcyhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0 IGRlbnRyeSAqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9hZGRfY2koc3RydWN0 IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHFzdHIgKik7CjE0NDc0OiBleHRlcm4g c3RydWN0IGRlbnRyeSAqIGRfZXhhY3RfYWxpYXMoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5v ZGUgKik7CjE0NDc0OiBleHRlcm4gc3RydWN0IGRlbnRyeSAqZF9maW5kX2FueV9hbGlhcyhzdHJ1 Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9vYnRhaW5f YWxpYXMoc3RydWN0IGlub2RlICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX29i dGFpbl9yb290KHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNocmlua19kY2Fj aGVfc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgc2hyaW5rX2Rj YWNoZV9wYXJlbnQoc3RydWN0IGRlbnRyeSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNocmlua19k Y2FjaGVfZm9yX3Vtb3VudChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CjE0NDc0OiBleHRlcm4gdm9p ZCBkX2ludmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfbWFrZV9yb290KHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBkX2dlbm9jaWRlKHN0cnVjdCBkZW50cnkgKik7 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGRfdG1wZmlsZShzdHJ1Y3QgZGVudHJ5ICosIHN0 cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZW50cnkgKmRfZmlu ZF9hbGlhcyhzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBkX3BydW5lX2FsaWFz ZXMoc3RydWN0IGlub2RlICopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgcGF0 aF9oYXNfc3VibW91bnRzKGNvbnN0IHN0cnVjdCBwYXRoICopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBkX3JlaGFzaChzdHJ1Y3QgZGVudHJ5ICop OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBkX2FkZChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVj dCBpbm9kZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBkX21vdmUoc3Ry dWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZF9leGNo YW5nZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiBleHRlcm4gc3Ry dWN0IGRlbnRyeSAqZF9hbmNlc3RvcihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKik7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZW50cnkgKmRfbG9va3VwKGNv bnN0IHN0cnVjdCBkZW50cnkgKiwgY29uc3Qgc3RydWN0IHFzdHIgKik7CjE0NDc0OiBleHRlcm4g c3RydWN0IGRlbnRyeSAqZF9oYXNoX2FuZF9sb29rdXAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg cXN0ciAqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpfX2RfbG9va3VwKGNvbnN0IHN0 cnVjdCBkZW50cnkgKiwgY29uc3Qgc3RydWN0IHFzdHIgKik7CjE0NDc0OiBleHRlcm4gc3RydWN0 IGRlbnRyeSAqX19kX2xvb2t1cF9yY3UoY29uc3Qgc3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3 NDogICAgIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lLCB1bnNpZ25lZCAqc2VxKTsKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdW5zaWduZWQgZF9jb3VudChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGRlbnRyeS0+ZF9sb2NrcmVmLmNvdW50OwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygo X19mb3JtYXRfXyhwcmludGYsIDQsIDUpKSkKMTQ0NzQ6IGNoYXIgKmR5bmFtaWNfZG5hbWUoc3Ry dWN0IGRlbnRyeSAqLCBjaGFyICosIGludCwgY29uc3QgY2hhciAqLCAuLi4pOwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gY2hhciAqX19kX3BhdGgoY29uc3Qgc3RydWN0IHBhdGggKiwgY29uc3Qgc3Ry dWN0IHBhdGggKiwgY2hhciAqLCBpbnQpOwoxNDQ3NDogZXh0ZXJuIGNoYXIgKmRfYWJzb2x1dGVf cGF0aChjb25zdCBzdHJ1Y3QgcGF0aCAqLCBjaGFyICosIGludCk7CjE0NDc0OiBleHRlcm4gY2hh ciAqZF9wYXRoKGNvbnN0IHN0cnVjdCBwYXRoICosIGNoYXIgKiwgaW50KTsKMTQ0NzQ6IGV4dGVy biBjaGFyICpkZW50cnlfcGF0aF9yYXcoc3RydWN0IGRlbnRyeSAqLCBjaGFyICosIGludCk7CjE0 NDc0OiBleHRlcm4gY2hhciAqZGVudHJ5X3BhdGgoc3RydWN0IGRlbnRyeSAqLCBjaGFyICosIGlu dCk7CjE0NDc0OiAjIDMxMSAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IGRlbnRyeSAqZGdldF9kbG9jayhzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0OiB7CjE0NDc0 OiAgaWYgKGRlbnRyeSkKMTQ0NzQ6ICAgZGVudHJ5LT5kX2xvY2tyZWYuY291bnQrKzsKMTQ0NzQ6 ICByZXR1cm4gZGVudHJ5OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGVudHJ5ICpk Z2V0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoZGVudHJ5KQox NDQ3NDogICBsb2NrcmVmX2dldCgmZGVudHJ5LT5kX2xvY2tyZWYpOwoxNDQ3NDogIHJldHVybiBk ZW50cnk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpkZ2V0 X3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwoxNDQ3NDogIyAzMzQgIi4vaW5jbHVkZS9s aW51eC9kY2FjaGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkX3VuaGFzaGVkKGNvbnN0IHN0cnVjdCBkZW50cnkg KmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gaGxpc3RfYmxfdW5oYXNoZWQoJmRlbnRy eS0+ZF9oYXNoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGRfdW5saW5rZWQoY29uc3Qg c3RydWN0IGRlbnRyeSAqZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkX3VuaGFzaGVk KGRlbnRyeSkgJiYgISgoZGVudHJ5KSA9PSAoZGVudHJ5KS0+ZF9wYXJlbnQpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgY2FudF9tb3VudChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChkZW50cnktPmRfZmxhZ3MgJiAweDAwMDAwMTAwKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkb250X21vdW50KHN0cnVjdCBkZW50cnkgKmRl bnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzcGluX2xvY2soJmRlbnRyeS0+ZF9sb2NrcmVmLmxvY2sp OwoxNDQ3NDogIGRlbnRyeS0+ZF9mbGFncyB8PSAweDAwMDAwMTAwOwoxNDQ3NDogIHNwaW5fdW5s b2NrKCZkZW50cnktPmRfbG9ja3JlZi5sb2NrKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIHZvaWQgX19kX2xvb2t1cF9kb25lKHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBkX2luX2xvb2t1cChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIGRlbnRyeS0+ZF9mbGFncyAmIDB4MTAwMDAwMDA7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgZF9sb29rdXBfZG9uZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoZF9pbl9sb29rdXAoZGVudHJ5KSks IDApKSB7CjE0NDc0OiAgIHNwaW5fbG9jaygmZGVudHJ5LT5kX2xvY2tyZWYubG9jayk7CjE0NDc0 OiAgIF9fZF9sb29rdXBfZG9uZShkZW50cnkpOwoxNDQ3NDogICBzcGluX3VubG9jaygmZGVudHJ5 LT5kX2xvY2tyZWYubG9jayk7CjE0NDc0OiAgfQoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBkcHV0KHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZF9tYW5h Z2VkKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g ZGVudHJ5LT5kX2ZsYWdzICYgKDB4MDAwMTAwMDB8MHgwMDAyMDAwMHwweDAwMDQwMDAwKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX21vdW50cG9pbnQoY29uc3Qgc3RydWN0IGRlbnRy eSAqZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkZW50cnktPmRfZmxhZ3MgJiAweDAw MDEwMDAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1 bnNpZ25lZCBfX2RfZW50cnlfdHlwZShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGRlbnRyeS0+ZF9mbGFncyAmIDB4MDA3MDAwMDA7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgZF9pc19taXNzKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRy eSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19kX2VudHJ5X3R5cGUoZGVudHJ5KSA9PSAweDAw MDAwMDAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRfaXNfd2hpdGVvdXQoY29uc3Qg c3RydWN0IGRlbnRyeSAqZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2RfZW50cnlf dHlwZShkZW50cnkpID09IDB4MDAxMDAwMDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg ZF9jYW5fbG9va3VwKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gX19kX2VudHJ5X3R5cGUoZGVudHJ5KSA9PSAweDAwMjAwMDAwOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sIGRfaXNfYXV0b2Rpcihjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fZF9lbnRyeV90eXBlKGRlbnRyeSkgPT0gMHgw MDMwMDAwMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX2Rpcihjb25zdCBzdHJ1 Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRfY2FuX2xvb2t1cChk ZW50cnkpIHx8IGRfaXNfYXV0b2RpcihkZW50cnkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIGRfaXNfc3ltbGluayhjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIF9fZF9lbnRyeV90eXBlKGRlbnRyeSkgPT0gMHgwMDYwMDAwMDsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX3JlZyhjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fZF9lbnRyeV90eXBlKGRlbnRyeSkgPT0gMHgw MDQwMDAwMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX3NwZWNpYWwoY29uc3Qg c3RydWN0IGRlbnRyeSAqZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2RfZW50cnlf dHlwZShkZW50cnkpID09IDB4MDA1MDAwMDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg ZF9pc19maWxlKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gZF9pc19yZWcoZGVudHJ5KSB8fCBkX2lzX3NwZWNpYWwoZGVudHJ5KTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX25lZ2F0aXZlKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRl bnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBkX2lzX21pc3MoZGVudHJ5KTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2ZsYWdzX25lZ2F0aXZlKHVuc2lnbmVkIGZs YWdzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoZmxhZ3MgJiAweDAwNzAwMDAwKSA9PSAweDAw MDAwMDAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRfaXNfcG9zaXRpdmUoY29uc3Qg c3RydWN0IGRlbnRyeSAqZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhZF9pc19uZWdh dGl2ZShkZW50cnkpOwoxNDQ3NDogfQoxNDQ3NDogIyA0NjggIi4vaW5jbHVkZS9saW51eC9kY2Fj aGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgZF9yZWFsbHlfaXNfbmVnYXRpdmUoY29uc3Qgc3RydWN0IGRlbnRy eSAqZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkZW50cnktPmRfaW5vZGUgPT0gKCh2 b2lkICopMCk7CjE0NDc0OiB9CjE0NDc0OiAjIDQ4NiAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5o IgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBkX3JlYWxseV9pc19wb3NpdGl2ZShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpk ZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRlbnRyeS0+ZF9pbm9kZSAhPSAoKHZvaWQg KikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHNpbXBsZV9wb3NpdGl2ZShjb25zdCBz dHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRfcmVhbGx5X2lz X3Bvc2l0aXZlKGRlbnRyeSkgJiYgIWRfdW5oYXNoZWQoZGVudHJ5KTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZF9zZXRfZmFsbHRocnUoc3RydWN0IGRlbnRyeSAqZGVudHJ5 KTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX2ZhbGx0aHJ1KGNvbnN0IHN0cnVjdCBkZW50cnkg KmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZGVudHJ5LT5kX2ZsYWdzICYgMHgwMTAw MDAwMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHN5c2N0bF92 ZnNfY2FjaGVfcHJlc3N1cmU7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgdmZzX3ByZXNz dXJlX3JhdGlvKHVuc2lnbmVkIGxvbmcgdmFsKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoIHsg dHlwZW9mKHZhbCkgcXVvdCA9ICh2YWwpIC8gKDEwMCk7IHR5cGVvZih2YWwpIHJlbSA9ICh2YWwp ICUgKDEwMCk7IChxdW90ICogKHN5c2N0bF92ZnNfY2FjaGVfcHJlc3N1cmUpKSArICgocmVtICog KHN5c2N0bF92ZnNfY2FjaGVfcHJlc3N1cmUpKSAvICgxMDApKTsgfSApOwoxNDQ3NDogfQoxNDQ3 NDogIyA1MTggIi4vaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBpbm9kZSAq ZF9pbm9kZShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGRlbnRyeS0+ZF9pbm9kZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTMwICIuL2luY2x1ZGUvbGlu dXgvZGNhY2hlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgaW5vZGUgKmRfaW5vZGVfcmN1KGNvbnN0IHN0cnVj dCBkZW50cnkgKmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdW5pb24geyB0eXBl b2YoZGVudHJ5LT5kX2lub2RlKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19y ZWFkX29uY2Vfc2l6ZSgmKGRlbnRyeS0+ZF9pbm9kZSksIF9fdS5fX2MsIHNpemVvZihkZW50cnkt PmRfaW5vZGUpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihkZW50cnktPmRfaW5v ZGUpLCBfX3UuX19jLCBzaXplb2YoZGVudHJ5LT5kX2lub2RlKSk7IGRvIHsgfSB3aGlsZSAoMCk7 IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDU0NSAiLi9pbmNsdWRlL2xpbnV4L2Rj YWNoZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgc3RydWN0IGlub2RlICpkX2JhY2tpbmdfaW5vZGUoY29uc3Qgc3RydWN0 IGRlbnRyeSAqdXBwZXIpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGlub2RlICppbm9kZSA9IHVw cGVyLT5kX2lub2RlOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGlub2RlOwoxNDQ3NDogfQoxNDQ3 NDogIyA1NjIgIi4vaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZW50cnkg KmRfYmFja2luZ19kZW50cnkoc3RydWN0IGRlbnRyeSAqdXBwZXIpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIHVwcGVyOwoxNDQ3NDogfQoxNDQ3NDogIyA1NzcgIi4vaW5jbHVkZS9saW51eC9kY2Fj aGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHN0cnVjdCBkZW50cnkgKmRfcmVhbChzdHJ1Y3QgZGVudHJ5ICpkZW50cnks CjE0NDc0OiAgICAgICAgIGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0 OiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoZGVudHJ5LT5kX2ZsYWdzICYgMHgwNDAwMDAwMCks IDApKQoxNDQ3NDogICByZXR1cm4gZGVudHJ5LT5kX29wLT5kX3JlYWwoZGVudHJ5LCBpbm9kZSk7 CjE0NDc0OiAgZWxzZQoxNDQ3NDogICByZXR1cm4gZGVudHJ5OwoxNDQ3NDogfQoxNDQ3NDogIyA1 OTMgIi4vaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBpbm9kZSAqZF9yZWFs X2lub2RlKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3 NDogIHJldHVybiBkX2JhY2tpbmdfaW5vZGUoZF9yZWFsKChzdHJ1Y3QgZGVudHJ5ICopIGRlbnRy eSwgKCh2b2lkICopMCkpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG5hbWVfc25h cHNob3QgewoxNDQ3NDogIHN0cnVjdCBxc3RyIG5hbWU7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBp bmxpbmVfbmFtZVszMl07CjE0NDc0OiB9OwoxNDQ3NDogdm9pZCB0YWtlX2RlbnRyeV9uYW1lX3Nu YXBzaG90KHN0cnVjdCBuYW1lX3NuYXBzaG90ICosIHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiB2 b2lkIHJlbGVhc2VfZGVudHJ5X25hbWVfc25hcHNob3Qoc3RydWN0IG5hbWVfc25hcHNob3QgKik7 CjE0NDc0OiAjIDkgIi4vaW5jbHVkZS9saW51eC9mcy5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9wYXRoLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGRlbnRyeTsKMTQ0NzQ6IHN0cnVjdCB2ZnNtb3VudDsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IHBhdGggewoxNDQ3NDogIHN0cnVjdCB2ZnNtb3VudCAqbW50OwoxNDQ3NDogIHN0cnVjdCBk ZW50cnkgKmRlbnRyeTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRf XykpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBwYXRoX2dldChjb25zdCBzdHJ1Y3QgcGF0 aCAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHBhdGhfcHV0KGNvbnN0IHN0cnVjdCBwYXRoICopOwox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgcGF0aF9lcXVhbChjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aDEsIGNv bnN0IHN0cnVjdCBwYXRoICpwYXRoMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcGF0aDEtPm1u dCA9PSBwYXRoMi0+bW50ICYmIHBhdGgxLT5kZW50cnkgPT0gcGF0aDItPmRlbnRyeTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwYXRoX3B1dF9pbml0KHN0cnVjdCBwYXRoICpwYXRoKQox NDQ3NDogewoxNDQ3NDogIHBhdGhfcHV0KHBhdGgpOwoxNDQ3NDogICpwYXRoID0gKHN0cnVjdCBw YXRoKSB7IH07CjE0NDc0OiB9CjE0NDc0OiAjIDEwICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgox NDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9h c20vc3RhdC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIiAxCjE0NDc0OiAjIDYgIi4vYXJj aC94ODYvaW5jbHVkZS91YXBpL2FzbS9zdGF0LmgiIDIKMTQ0NzQ6ICMgODMgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9zdGF0LmgiCjE0NDc0OiBzdHJ1Y3Qgc3RhdCB7CjE0NDc0OiAgX19r ZXJuZWxfdWxvbmdfdCBzdF9kZXY7CjE0NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBzdF9pbm87CjE0 NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBzdF9ubGluazsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVk IGludCBzdF9tb2RlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBzdF91aWQ7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IHN0X2dpZDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgX19wYWQwOwoxNDQ3NDogIF9fa2Vy bmVsX3Vsb25nX3Qgc3RfcmRldjsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3Qgc3Rfc2l6ZTsKMTQ0 NzQ6ICBfX2tlcm5lbF9sb25nX3Qgc3RfYmxrc2l6ZTsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3Qg c3RfYmxvY2tzOwoxNDQ3NDogCjE0NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBzdF9hdGltZTsKMTQ0 NzQ6ICBfX2tlcm5lbF91bG9uZ190IHN0X2F0aW1lX25zZWM7CjE0NDc0OiAgX19rZXJuZWxfdWxv bmdfdCBzdF9tdGltZTsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IHN0X210aW1lX25zZWM7CjE0 NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBzdF9jdGltZTsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190 IHN0X2N0aW1lX25zZWM7CjE0NDc0OiAgX19rZXJuZWxfbG9uZ190IF9fdW51c2VkWzNdOwoxNDQ3 NDogfTsKMTQ0NzQ6ICMgMTE3ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc3RhdC5oIgox NDQ3NDogc3RydWN0IF9fb2xkX2tlcm5lbF9zdGF0IHsKMTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBz dF9kZXY7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgc3RfaW5vOwoxNDQ3NDogIHVuc2lnbmVkIHNo b3J0IHN0X21vZGU7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgc3Rfbmxpbms7CjE0NDc0OiAgdW5z aWduZWQgc2hvcnQgc3RfdWlkOwoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IHN0X2dpZDsKMTQ0NzQ6 ICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBzdF9zaXplOwoxNDQ3NDogIHVu c2lnbmVkIGludCBzdF9hdGltZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3RfbXRpbWU7CjE0NDc0 OiAgdW5zaWduZWQgaW50IHN0X2N0aW1lOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogIyA3ICIu L2luY2x1ZGUvbGludXgvc3RhdC5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4 L3N0YXQuaCIgMQoxNDQ3NDogIyA1NiAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3RhdC5oIgoxNDQ3 NDogc3RydWN0IHN0YXR4X3RpbWVzdGFtcCB7CjE0NDc0OiAgX19zNjQgdHZfc2VjOwoxNDQ3NDog IF9fdTMyIHR2X25zZWM7CjE0NDc0OiAgX19zMzIgX19yZXNlcnZlZDsKMTQ0NzQ6IH07CjE0NDc0 OiAjIDk5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zdGF0LmgiCjE0NDc0OiBzdHJ1Y3Qgc3RhdHgg ewoxNDQ3NDogCjE0NDc0OiAgX191MzIgc3R4X21hc2s7CjE0NDc0OiAgX191MzIgc3R4X2Jsa3Np emU7CjE0NDc0OiAgX191NjQgc3R4X2F0dHJpYnV0ZXM7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBz dHhfbmxpbms7CjE0NDc0OiAgX191MzIgc3R4X3VpZDsKMTQ0NzQ6ICBfX3UzMiBzdHhfZ2lkOwox NDQ3NDogIF9fdTE2IHN0eF9tb2RlOwoxNDQ3NDogIF9fdTE2IF9fc3BhcmUwWzFdOwoxNDQ3NDog CjE0NDc0OiAgX191NjQgc3R4X2lubzsKMTQ0NzQ6ICBfX3U2NCBzdHhfc2l6ZTsKMTQ0NzQ6ICBf X3U2NCBzdHhfYmxvY2tzOwoxNDQ3NDogIF9fdTY0IHN0eF9hdHRyaWJ1dGVzX21hc2s7CjE0NDc0 OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc3RhdHhfdGltZXN0YW1wIHN0eF9hdGltZTsKMTQ0NzQ6ICBzdHJ1 Y3Qgc3RhdHhfdGltZXN0YW1wIHN0eF9idGltZTsKMTQ0NzQ6ICBzdHJ1Y3Qgc3RhdHhfdGltZXN0 YW1wIHN0eF9jdGltZTsKMTQ0NzQ6ICBzdHJ1Y3Qgc3RhdHhfdGltZXN0YW1wIHN0eF9tdGltZTsK MTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIHN0eF9yZGV2X21ham9yOwoxNDQ3NDogIF9fdTMyIHN0eF9y ZGV2X21pbm9yOwoxNDQ3NDogIF9fdTMyIHN0eF9kZXZfbWFqb3I7CjE0NDc0OiAgX191MzIgc3R4 X2Rldl9taW5vcjsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTY0IF9fc3BhcmUyWzE0XTsKMTQ0NzQ6IAox NDQ3NDogfTsKMTQ0NzQ6ICMgOCAiLi9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMgoxNDQ3NDogIyAy MCAiLi9pbmNsdWRlL2xpbnV4L3N0YXQuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3Vp ZGdpZC5oIiAxCjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgvdWlkZ2lkLmgiCjE0NDc0OiAj IDEgIi4vaW5jbHVkZS9saW51eC9oaWdodWlkLmgiIDEKMTQ0NzQ6ICMgMzUgIi4vaW5jbHVkZS9s aW51eC9oaWdodWlkLmgiCjE0NDc0OiBleHRlcm4gaW50IG92ZXJmbG93dWlkOwoxNDQ3NDogZXh0 ZXJuIGludCBvdmVyZmxvd2dpZDsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgX19iYWRfdWlk KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19iYWRfZ2lkKHZvaWQpOwoxNDQ3NDogIyA4MiAi Li9pbmNsdWRlL2xpbnV4L2hpZ2h1aWQuaCIKMTQ0NzQ6IGV4dGVybiBpbnQgZnNfb3ZlcmZsb3d1 aWQ7CjE0NDc0OiBleHRlcm4gaW50IGZzX292ZXJmbG93Z2lkOwoxNDQ3NDogIyAxNyAiLi9pbmNs dWRlL2xpbnV4L3VpZGdpZC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB1c2VyX25hbWVzcGFj ZTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgaW5pdF91c2VyX25zOwoxNDQ3 NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7CjE0NDc0OiAgdWlkX3QgdmFsOwoxNDQ3NDogfSBr dWlkX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgewoxNDQ3NDogIGdp ZF90IHZhbDsKMTQ0NzQ6IH0ga2dpZF90OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHVpZF90IF9fa3VpZF92YWwoa3VpZF90IHVpZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gdWlkLnZhbDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgZ2lkX3QgX19rZ2lk X3ZhbChrZ2lkX3QgZ2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBnaWQudmFsOwoxNDQ3NDog fQoxNDQ3NDogIyA2MSAiLi9pbmNsdWRlL2xpbnV4L3VpZGdpZC5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1aWRf ZXEoa3VpZF90IGxlZnQsIGt1aWRfdCByaWdodCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19r dWlkX3ZhbChsZWZ0KSA9PSBfX2t1aWRfdmFsKHJpZ2h0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCBnaWRfZXEoa2dpZF90IGxlZnQsIGtnaWRfdCByaWdodCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gX19rZ2lkX3ZhbChsZWZ0KSA9PSBfX2tnaWRfdmFsKHJpZ2h0KTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCB1aWRfZ3Qoa3VpZF90IGxlZnQsIGt1aWRfdCByaWdodCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19rdWlkX3ZhbChsZWZ0KSA+IF9fa3VpZF92YWwocmlnaHQp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGdpZF9ndChrZ2lkX3QgbGVmdCwga2dpZF90 IHJpZ2h0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2tnaWRfdmFsKGxlZnQpID4gX19rZ2lk X3ZhbChyaWdodCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdWlkX2d0ZShrdWlkX3Qg bGVmdCwga3VpZF90IHJpZ2h0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2t1aWRfdmFsKGxl ZnQpID49IF9fa3VpZF92YWwocmlnaHQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGdp ZF9ndGUoa2dpZF90IGxlZnQsIGtnaWRfdCByaWdodCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g X19rZ2lkX3ZhbChsZWZ0KSA+PSBfX2tnaWRfdmFsKHJpZ2h0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCB1aWRfbHQoa3VpZF90IGxlZnQsIGt1aWRfdCByaWdodCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gX19rdWlkX3ZhbChsZWZ0KSA8IF9fa3VpZF92YWwocmlnaHQpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGdpZF9sdChrZ2lkX3QgbGVmdCwga2dpZF90IHJpZ2h0KQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2tnaWRfdmFsKGxlZnQpIDwgX19rZ2lkX3ZhbChyaWdo dCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdWlkX2x0ZShrdWlkX3QgbGVmdCwga3Vp ZF90IHJpZ2h0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2t1aWRfdmFsKGxlZnQpIDw9IF9f a3VpZF92YWwocmlnaHQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGdpZF9sdGUoa2dp ZF90IGxlZnQsIGtnaWRfdCByaWdodCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19rZ2lkX3Zh bChsZWZ0KSA8PSBfX2tnaWRfdmFsKHJpZ2h0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCB1aWRfdmFsaWQoa3VpZF90IHVpZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19rdWlkX3Zh bCh1aWQpICE9ICh1aWRfdCkgLTE7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZ2lkX3Zh bGlkKGtnaWRfdCBnaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fa2dpZF92YWwoZ2lkKSAh PSAoZ2lkX3QpIC0xOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIGt1aWRfdCBtYWtlX2t1aWQoc3RydWN0IHVzZXJfbmFtZXNwYWNlICpmcm9tLCB1aWRfdCB1 aWQpOwoxNDQ3NDogZXh0ZXJuIGtnaWRfdCBtYWtlX2tnaWQoc3RydWN0IHVzZXJfbmFtZXNwYWNl ICpmcm9tLCBnaWRfdCBnaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdWlkX3QgZnJvbV9rdWlk KHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqdG8sIGt1aWRfdCB1aWQpOwoxNDQ3NDogZXh0ZXJuIGdp ZF90IGZyb21fa2dpZChzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnRvLCBrZ2lkX3QgZ2lkKTsKMTQ0 NzQ6IGV4dGVybiB1aWRfdCBmcm9tX2t1aWRfbXVuZ2VkKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAq dG8sIGt1aWRfdCB1aWQpOwoxNDQ3NDogZXh0ZXJuIGdpZF90IGZyb21fa2dpZF9tdW5nZWQoc3Ry dWN0IHVzZXJfbmFtZXNwYWNlICp0bywga2dpZF90IGdpZCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg a3VpZF9oYXNfbWFwcGluZyhzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm5zLCBrdWlkX3QgdWlkKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBmcm9tX2t1aWQobnMsIHVpZCkgIT0gKHVpZF90KSAtMTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBrZ2lkX2hhc19tYXBwaW5nKHN0cnVjdCB1c2Vy X25hbWVzcGFjZSAqbnMsIGtnaWRfdCBnaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZyb21f a2dpZChucywgZ2lkKSAhPSAoZ2lkX3QpIC0xOwoxNDQ3NDogfQoxNDQ3NDogIyAyMSAiLi9pbmNs dWRlL2xpbnV4L3N0YXQuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGtzdGF0IHsKMTQ0NzQ6ICB1MzIgcmVzdWx0X21hc2s7CjE0NDc0OiAgdW1vZGVfdCBtb2RlOwox NDQ3NDogIHVuc2lnbmVkIGludCBubGluazsKMTQ0NzQ6ICB1aW50MzJfdCBibGtzaXplOwoxNDQ3 NDogIHU2NCBhdHRyaWJ1dGVzOwoxNDQ3NDogIHU2NCBhdHRyaWJ1dGVzX21hc2s7CjE0NDc0OiAj IDM5ICIuL2luY2x1ZGUvbGludXgvc3RhdC5oIgoxNDQ3NDogIHU2NCBpbm87CjE0NDc0OiAgZGV2 X3QgZGV2OwoxNDQ3NDogIGRldl90IHJkZXY7CjE0NDc0OiAga3VpZF90IHVpZDsKMTQ0NzQ6ICBr Z2lkX3QgZ2lkOwoxNDQ3NDogIGxvZmZfdCBzaXplOwoxNDQ3NDogIHN0cnVjdCB0aW1lc3BlYzY0 IGF0aW1lOwoxNDQ3NDogIHN0cnVjdCB0aW1lc3BlYzY0IG10aW1lOwoxNDQ3NDogIHN0cnVjdCB0 aW1lc3BlYzY0IGN0aW1lOwoxNDQ3NDogIHN0cnVjdCB0aW1lc3BlYzY0IGJ0aW1lOwoxNDQ3NDog IHU2NCBibG9ja3M7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9saXN0X2xydS5o IiAxCjE0NDc0OiAjIDEzICIuL2luY2x1ZGUvbGludXgvbGlzdF9scnUuaCIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3Nocmlua2VyLmgiIDEKMTQ0NzQ6ICMgMTIgIi4vaW5jbHVkZS9saW51 eC9zaHJpbmtlci5oIgoxNDQ3NDogc3RydWN0IHNocmlua19jb250cm9sIHsKMTQ0NzQ6ICBnZnBf dCBnZnBfbWFzazsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50IG5pZDsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IG5yX3RvX3NjYW47CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBucl9zY2FubmVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7CjE0NDc0OiB9OwoxNDQ3NDogIyA2MCAiLi9p bmNsdWRlL2xpbnV4L3Nocmlua2VyLmgiCjE0NDc0OiBzdHJ1Y3Qgc2hyaW5rZXIgewoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgKCpjb3VudF9vYmplY3RzKShzdHJ1Y3Qgc2hyaW5rZXIgKiwKMTQ0NzQ6 ICAgICAgICAgICAgc3RydWN0IHNocmlua19jb250cm9sICpzYyk7CjE0NDc0OiAgdW5zaWduZWQg bG9uZyAoKnNjYW5fb2JqZWN0cykoc3RydWN0IHNocmlua2VyICosCjE0NDc0OiAgICAgICAgICAg c3RydWN0IHNocmlua19jb250cm9sICpzYyk7CjE0NDc0OiAKMTQ0NzQ6ICBsb25nIGJhdGNoOwox NDQ3NDogIGludCBzZWVrczsKMTQ0NzQ6ICB1bnNpZ25lZCBmbGFnczsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBp bnQgaWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGF0b21pY19sb25nX3QgKm5yX2RlZmVycmVk OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgOTAgIi4vaW5jbHVkZS9saW51eC9zaHJpbmtlci5oIgoxNDQ3 NDogZXh0ZXJuIGludCBwcmVhbGxvY19zaHJpbmtlcihzdHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2Vy KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHJlZ2lzdGVyX3Nocmlua2VyX3ByZXBhcmVkKHN0cnVjdCBz aHJpbmtlciAqc2hyaW5rZXIpOwoxNDQ3NDogZXh0ZXJuIGludCByZWdpc3Rlcl9zaHJpbmtlcihz dHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2VyKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHVucmVnaXN0ZXJf c2hyaW5rZXIoc3RydWN0IHNocmlua2VyICpzaHJpbmtlcik7CjE0NDc0OiBleHRlcm4gdm9pZCBm cmVlX3ByZWFsbG9jZWRfc2hyaW5rZXIoc3RydWN0IHNocmlua2VyICpzaHJpbmtlcik7CjE0NDc0 OiAjIDE0ICIuL2luY2x1ZGUvbGludXgvbGlzdF9scnUuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgbWVtX2Nncm91cDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGxydV9zdGF0dXMgewox NDQ3NDogIExSVV9SRU1PVkVELAoxNDQ3NDogIExSVV9SRU1PVkVEX1JFVFJZLAoxNDQ3NDogCjE0 NDc0OiAgTFJVX1JPVEFURSwKMTQ0NzQ6ICBMUlVfU0tJUCwKMTQ0NzQ6ICBMUlVfUkVUUlksCjE0 NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBsaXN0X2xydV9vbmUgewoxNDQ3 NDogIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKMTQ0NzQ6IAoxNDQ3NDogIGxvbmcgbnJfaXRlbXM7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbGlzdF9scnVfbWVtY2cgewoxNDQ3NDog IHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2xy dV9vbmUgKmxydVswXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBsaXN0X2xydV9u b2RlIHsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5sb2NrX3QgbG9jazsKMTQ0NzQ6IAoxNDQ3NDogIHN0 cnVjdCBsaXN0X2xydV9vbmUgbHJ1OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbGlz dF9scnVfbWVtY2cgKm1lbWNnX2xydXM7CjE0NDc0OiAKMTQ0NzQ6ICBsb25nIG5yX2l0ZW1zOwox NDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikpKSkpOwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgbGlzdF9scnUgewoxNDQ3NDogIHN0cnVjdCBsaXN0X2xydV9ub2RlICpu b2RlOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwoxNDQ3NDogIGludCBz aHJpbmtlcl9pZDsKMTQ0NzQ6ICBib29sIG1lbWNnX2F3YXJlOwoxNDQ3NDogCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiB2b2lkIGxpc3RfbHJ1X2Rlc3Ryb3koc3RydWN0IGxpc3RfbHJ1ICpscnUp OwoxNDQ3NDogaW50IF9fbGlzdF9scnVfaW5pdChzdHJ1Y3QgbGlzdF9scnUgKmxydSwgYm9vbCBt ZW1jZ19hd2FyZSwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5LCBzdHJ1 Y3Qgc2hyaW5rZXIgKnNocmlua2VyKTsKMTQ0NzQ6ICMgNzIgIi4vaW5jbHVkZS9saW51eC9saXN0 X2xydS5oIgoxNDQ3NDogaW50IG1lbWNnX3VwZGF0ZV9hbGxfbGlzdF9scnVzKGludCBudW1fbWVt Y2dzKTsKMTQ0NzQ6IHZvaWQgbWVtY2dfZHJhaW5fYWxsX2xpc3RfbHJ1cyhpbnQgc3JjX2lkeCwg c3RydWN0IG1lbV9jZ3JvdXAgKmRzdF9tZW1jZyk7CjE0NDc0OiAjIDkxICIuL2luY2x1ZGUvbGlu dXgvbGlzdF9scnUuaCIKMTQ0NzQ6IGJvb2wgbGlzdF9scnVfYWRkKHN0cnVjdCBsaXN0X2xydSAq bHJ1LCBzdHJ1Y3QgbGlzdF9oZWFkICppdGVtKTsKMTQ0NzQ6ICMgMTA0ICIuL2luY2x1ZGUvbGlu dXgvbGlzdF9scnUuaCIKMTQ0NzQ6IGJvb2wgbGlzdF9scnVfZGVsKHN0cnVjdCBsaXN0X2xydSAq bHJ1LCBzdHJ1Y3QgbGlzdF9oZWFkICppdGVtKTsKMTQ0NzQ6ICMgMTE2ICIuL2luY2x1ZGUvbGlu dXgvbGlzdF9scnUuaCIKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgbGlzdF9scnVfY291bnRfb25lKHN0 cnVjdCBsaXN0X2xydSAqbHJ1LAoxNDQ3NDogICAgICBpbnQgbmlkLCBzdHJ1Y3QgbWVtX2Nncm91 cCAqbWVtY2cpOwoxNDQ3NDogdW5zaWduZWQgbG9uZyBsaXN0X2xydV9jb3VudF9ub2RlKHN0cnVj dCBsaXN0X2xydSAqbHJ1LCBpbnQgbmlkKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBs aXN0X2xydV9zaHJpbmtfY291bnQoc3RydWN0IGxpc3RfbHJ1ICpscnUsCjE0NDc0OiAgICAgICAg IHN0cnVjdCBzaHJpbmtfY29udHJvbCAqc2MpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGxpc3Rf bHJ1X2NvdW50X29uZShscnUsIHNjLT5uaWQsIHNjLT5tZW1jZyk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGxvbmcgbGlzdF9scnVfY291bnQoc3RydWN0IGxpc3RfbHJ1ICpscnUp CjE0NDc0OiB7CjE0NDc0OiAgbG9uZyBjb3VudCA9IDA7CjE0NDc0OiAgaW50IG5pZDsKMTQ0NzQ6 IAoxNDQ3NDogIGZvciAoIChuaWQpID0gMDsgKG5pZCkgPT0gMDsgKG5pZCkgPSAxKQoxNDQ3NDog ICBjb3VudCArPSBsaXN0X2xydV9jb3VudF9ub2RlKGxydSwgbmlkKTsKMTQ0NzQ6IAoxNDQ3NDog IHJldHVybiBjb3VudDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdm9pZCBsaXN0X2xydV9pc29s YXRlKHN0cnVjdCBsaXN0X2xydV9vbmUgKmxpc3QsIHN0cnVjdCBsaXN0X2hlYWQgKml0ZW0pOwox NDQ3NDogdm9pZCBsaXN0X2xydV9pc29sYXRlX21vdmUoc3RydWN0IGxpc3RfbHJ1X29uZSAqbGlz dCwgc3RydWN0IGxpc3RfaGVhZCAqaXRlbSwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg KmhlYWQpOwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIGVudW0gbHJ1X3N0YXR1cyAoKmxpc3RfbHJ1 X3dhbGtfY2IpKHN0cnVjdCBsaXN0X2hlYWQgKml0ZW0sCjE0NDc0OiAgIHN0cnVjdCBsaXN0X2xy dV9vbmUgKmxpc3QsIHNwaW5sb2NrX3QgKmxvY2ssIHZvaWQgKmNiX2FyZyk7CjE0NDc0OiAjIDE2 NiAiLi9pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1LmgiCjE0NDc0OiB1bnNpZ25lZCBsb25nIGxpc3Rf bHJ1X3dhbGtfb25lKHN0cnVjdCBsaXN0X2xydSAqbHJ1LAoxNDQ3NDogICAgIGludCBuaWQsIHN0 cnVjdCBtZW1fY2dyb3VwICptZW1jZywKMTQ0NzQ6ICAgICBsaXN0X2xydV93YWxrX2NiIGlzb2xh dGUsIHZvaWQgKmNiX2FyZywKMTQ0NzQ6ICAgICB1bnNpZ25lZCBsb25nICpucl90b193YWxrKTsK MTQ0NzQ6ICMgMTgzICIuL2luY2x1ZGUvbGludXgvbGlzdF9scnUuaCIKMTQ0NzQ6IHVuc2lnbmVk IGxvbmcgbGlzdF9scnVfd2Fsa19vbmVfaXJxKHN0cnVjdCBsaXN0X2xydSAqbHJ1LAoxNDQ3NDog ICAgICAgICBpbnQgbmlkLCBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csCjE0NDc0OiAgICAgICAg IGxpc3RfbHJ1X3dhbGtfY2IgaXNvbGF0ZSwgdm9pZCAqY2JfYXJnLAoxNDQ3NDogICAgICAgICB1 bnNpZ25lZCBsb25nICpucl90b193YWxrKTsKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgbGlzdF9scnVf d2Fsa19ub2RlKHN0cnVjdCBsaXN0X2xydSAqbHJ1LCBpbnQgbmlkLAoxNDQ3NDogICAgICBsaXN0 X2xydV93YWxrX2NiIGlzb2xhdGUsIHZvaWQgKmNiX2FyZywKMTQ0NzQ6ICAgICAgdW5zaWduZWQg bG9uZyAqbnJfdG9fd2Fsayk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcKMTQ0NzQ6IGxp c3RfbHJ1X3Nocmlua193YWxrKHN0cnVjdCBsaXN0X2xydSAqbHJ1LCBzdHJ1Y3Qgc2hyaW5rX2Nv bnRyb2wgKnNjLAoxNDQ3NDogICAgICAgIGxpc3RfbHJ1X3dhbGtfY2IgaXNvbGF0ZSwgdm9pZCAq Y2JfYXJnKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBsaXN0X2xydV93YWxrX29uZShscnUsIHNj LT5uaWQsIHNjLT5tZW1jZywgaXNvbGF0ZSwgY2JfYXJnLAoxNDQ3NDogICAgICAmc2MtPm5yX3Rv X3NjYW4pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nCjE0NDc0OiBsaXN0 X2xydV9zaHJpbmtfd2Fsa19pcnEoc3RydWN0IGxpc3RfbHJ1ICpscnUsIHN0cnVjdCBzaHJpbmtf Y29udHJvbCAqc2MsCjE0NDc0OiAgICAgbGlzdF9scnVfd2Fsa19jYiBpc29sYXRlLCB2b2lkICpj Yl9hcmcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGxpc3RfbHJ1X3dhbGtfb25lX2lycShscnUs IHNjLT5uaWQsIHNjLT5tZW1jZywgaXNvbGF0ZSwgY2JfYXJnLAoxNDQ3NDogICAgICAgICAgJnNj LT5ucl90b19zY2FuKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZwoxNDQ3 NDogbGlzdF9scnVfd2FsayhzdHJ1Y3QgbGlzdF9scnUgKmxydSwgbGlzdF9scnVfd2Fsa19jYiBp c29sYXRlLAoxNDQ3NDogICAgICAgIHZvaWQgKmNiX2FyZywgdW5zaWduZWQgbG9uZyBucl90b193 YWxrKQoxNDQ3NDogewoxNDQ3NDogIGxvbmcgaXNvbGF0ZWQgPSAwOwoxNDQ3NDogIGludCBuaWQ7 CjE0NDc0OiAKMTQ0NzQ6ICBmb3IgKCAobmlkKSA9IDA7IChuaWQpID09IDA7IChuaWQpID0gMSkg ewoxNDQ3NDogICBpc29sYXRlZCArPSBsaXN0X2xydV93YWxrX25vZGUobHJ1LCBuaWQsIGlzb2xh dGUsCjE0NDc0OiAgICAgICAgICAgICBjYl9hcmcsICZucl90b193YWxrKTsKMTQ0NzQ6ICAgaWYg KG5yX3RvX3dhbGsgPD0gMCkKMTQ0NzQ6ICAgIGJyZWFrOwoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1 cm4gaXNvbGF0ZWQ7CjE0NDc0OiB9CjE0NDc0OiAjIDE0ICIuL2luY2x1ZGUvbGludXgvZnMuaCIg MgoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiIDEKMTQ0 NzQ6ICMgMTggIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiCjE0NDc0OiAjIDEgIi4vaW5j bHVkZS9saW51eC94YXJyYXkuaCIgMQoxNDQ3NDogIyAxNSAiLi9pbmNsdWRlL2xpbnV4L3hhcnJh eS5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgva2NvbmZpZy5oIiAxCjE0NDc0OiAjIDE2 ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiIDIKMTQ0NzQ6ICMgNTIgIi4vaW5jbHVkZS9saW51 eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX21rX3ZhbHVlKHVuc2lnbmVkIGxvbmcgdikKMTQ0 NzQ6IHsKMTQ0NzQ6ICAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKChsb25nKXYgPCAwKTsgaWYg KF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9f aW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0 aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJc dCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0 IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxu IiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xu IiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3hhcnJheS5oIiksICJpIiAo NTQpLCAiaSIgKCgxIDw8IDApfCgoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdf ZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hz ZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9w c2VjdGlvblxuXHQiIDogOiAiaSIgKDI0KSk7IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGluX2V4 cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwoxNDQ3NDogIHJldHVybiAodm9pZCAqKSgo diA8PCAxKSB8IDEpOwoxNDQ3NDogfQoxNDQ3NDogIyA2NSAiLi9pbmNsdWRlL2xpbnV4L3hhcnJh eS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyB4YV90b192YWx1ZShjb25zdCB2b2lkICplbnRyeSkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpZW50cnkgPj4gMTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgNzcgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgeGFf aXNfdmFsdWUoY29uc3Qgdm9pZCAqZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh1bnNp Z25lZCBsb25nKWVudHJ5ICYgMTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgOTUgIi4vaW5jbHVkZS9saW51 eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX3RhZ19wb2ludGVyKHZvaWQgKnAsIHVuc2lnbmVk IGxvbmcgdGFnKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodm9pZCAqKSgodW5zaWduZWQgbG9u ZylwIHwgdGFnKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTEwICIuL2luY2x1ZGUvbGludXgveGFycmF5 LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkICp4YV91bnRhZ19wb2ludGVyKHZvaWQgKmVudHJ5KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiAodm9pZCAqKSgodW5zaWduZWQgbG9uZyllbnRyeSAmIH4zVUwpOwoxNDQ3 NDogfQoxNDQ3NDogIyAxMjUgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGludCB4YV9wb2ludGVyX3RhZyh2b2lkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gKHVuc2lnbmVkIGxvbmcpZW50cnkgJiAzVUw7CjE0NDc0OiB9CjE0NDc0OiAjIDE0MyAiLi9p bmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFfbWtfaW50ZXJuYWwodW5zaWdu ZWQgbG9uZyB2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodm9pZCAqKSgodiA8PCAyKSB8IDIp OwoxNDQ3NDogfQoxNDQ3NDogIyAxNTUgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHVuc2lnbmVkIGxvbmcgeGFfdG9faW50ZXJuYWwoY29uc3Qgdm9pZCAqZW50cnkpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuICh1bnNpZ25lZCBsb25nKWVudHJ5ID4+IDI7CjE0NDc0OiB9CjE0NDc0 OiAjIDE2NyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4YV9pc19pbnRl cm5hbChjb25zdCB2b2lkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCh1bnNpZ25l ZCBsb25nKWVudHJ5ICYgMykgPT0gMjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTgzICIuL2luY2x1ZGUv bGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhX2lzX3plcm8oY29uc3Qgdm9pZCAqZW50cnkp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoISEoZW50cnkgPT0geGFf bWtfaW50ZXJuYWwoMjU3KSksIDApOwoxNDQ3NDogfQoxNDQ3NDogIyAxOTkgIi4vaW5jbHVkZS9s aW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgeGFfaXNfZXJyKGNvbnN0IHZvaWQgKmVudHJ5KQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KCEhKHhhX2lzX2ludGVybmFs KGVudHJ5KSAmJiBlbnRyeSA+PSB4YV9ta19pbnRlcm5hbCgtNDA5NSkpLCAwKQoxNDQ3NDogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogfQoxNDQ3NDogIyAy MTcgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB4YV9lcnIodm9pZCAqZW50 cnkpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoeGFfaXNfZXJyKGVudHJ5KSkKMTQ0NzQ6 ICAgcmV0dXJuIChsb25nKWVudHJ5ID4+IDI7CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0 NDc0OiAjIDIzNiAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RydWN0IHhhX2xp bWl0IHsKMTQ0NzQ6ICB1MzIgbWF4OwoxNDQ3NDogIHUzMiBtaW47CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1 bnNpZ25lZCB4YV9tYXJrX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0geGFfbG9ja190eXBlIHsKMTQ0NzQ6ICBYQV9M T0NLX0lSUSA9IDEsCjE0NDc0OiAgWEFfTE9DS19CSCA9IDIsCjE0NDc0OiB9OwoxNDQ3NDogIyAy OTIgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0cnVjdCB4YXJyYXkgewoxNDQ3 NDogIHNwaW5sb2NrX3QgeGFfbG9jazsKMTQ0NzQ6IAoxNDQ3NDogIGdmcF90IHhhX2ZsYWdzOwox NDQ3NDogIHZvaWQgKiB4YV9oZWFkOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzQ3ICIuL2luY2x1ZGUv bGludXgveGFycmF5LmgiCjE0NDc0OiB2b2lkICp4YV9sb2FkKHN0cnVjdCB4YXJyYXkgKiwgdW5z aWduZWQgbG9uZyBpbmRleCk7CjE0NDc0OiB2b2lkICp4YV9zdG9yZShzdHJ1Y3QgeGFycmF5ICos IHVuc2lnbmVkIGxvbmcgaW5kZXgsIHZvaWQgKmVudHJ5LCBnZnBfdCk7CjE0NDc0OiB2b2lkICp4 YV9lcmFzZShzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwoxNDQ3NDogdm9p ZCAqeGFfc3RvcmVfcmFuZ2Uoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGZpcnN0LCB1 bnNpZ25lZCBsb25nIGxhc3QsCjE0NDc0OiAgICB2b2lkICplbnRyeSwgZ2ZwX3QpOwoxNDQ3NDog Ym9vbCB4YV9nZXRfbWFyayhzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgsIHhh X21hcmtfdCk7CjE0NDc0OiB2b2lkIHhhX3NldF9tYXJrKHN0cnVjdCB4YXJyYXkgKiwgdW5zaWdu ZWQgbG9uZyBpbmRleCwgeGFfbWFya190KTsKMTQ0NzQ6IHZvaWQgeGFfY2xlYXJfbWFyayhzdHJ1 Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgsIHhhX21hcmtfdCk7CjE0NDc0OiB2b2lk ICp4YV9maW5kKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nICppbmRleCwKMTQ0NzQ6 ICAgdW5zaWduZWQgbG9uZyBtYXgsIHhhX21hcmtfdCkgX19hdHRyaWJ1dGVfXygobm9ubnVsbCgy KSkpOwoxNDQ3NDogdm9pZCAqeGFfZmluZF9hZnRlcihzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWdu ZWQgbG9uZyAqaW5kZXgsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgbWF4LCB4YV9tYXJrX3QpIF9f YXR0cmlidXRlX18oKG5vbm51bGwoMikpKTsKMTQ0NzQ6IHVuc2lnbmVkIGludCB4YV9leHRyYWN0 KHN0cnVjdCB4YXJyYXkgKiwgdm9pZCAqKmRzdCwgdW5zaWduZWQgbG9uZyBzdGFydCwKMTQ0NzQ6 ICAgdW5zaWduZWQgbG9uZyBtYXgsIHVuc2lnbmVkIGludCBuLCB4YV9tYXJrX3QpOwoxNDQ3NDog dm9pZCB4YV9kZXN0cm95KHN0cnVjdCB4YXJyYXkgKik7CjE0NDc0OiAjIDM3NCAiLi9pbmNsdWRl L2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB4YV9pbml0X2ZsYWdzKHN0cnVjdCB4YXJyYXkg KnhhLCBnZnBfdCBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IHNwaW5sb2NrX2NoZWNrKCZ4 YS0+eGFfbG9jayk7IGRvIHsgKigmKCZ4YS0+eGFfbG9jayktPnJsb2NrKSA9IChyYXdfc3Bpbmxv Y2tfdCkgeyAucmF3X2xvY2sgPSB7IHsgLnZhbCA9IHsgKDApIH0gfSB9LCB9OyB9IHdoaWxlICgw KTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgeGEtPnhhX2ZsYWdzID0gZmxhZ3M7CjE0NDc0OiAgeGEt PnhhX2hlYWQgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzg5ICIuL2luY2x1ZGUv bGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHhhX2luaXQoc3RydWN0IHhhcnJheSAqeGEpCjE0 NDc0OiB7CjE0NDc0OiAgeGFfaW5pdF9mbGFncyh4YSwgMCk7CjE0NDc0OiB9CjE0NDc0OiAjIDQw MSAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4YV9lbXB0eShjb25zdCBz dHJ1Y3QgeGFycmF5ICp4YSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4geGEtPnhhX2hlYWQgPT0g KCh2b2lkICopMCk7CjE0NDc0OiB9CjE0NDc0OiAjIDQxNCAiLi9pbmNsdWRlL2xpbnV4L3hhcnJh eS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCB4YV9tYXJrZWQoY29uc3Qgc3RydWN0IHhhcnJheSAqeGEsIHhhX21h cmtfdCBtYXJrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB4YS0+eGFfZmxhZ3MgJiAoKCBnZnBf dCkoKDFVIDw8ICgyMyArIDApKSA8PCAoIHVuc2lnbmVkKShtYXJrKSkpOwoxNDQ3NDogfQoxNDQ3 NDogIyA1NTQgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHZvaWQgKl9feGFfZXJh c2Uoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKMTQ0NzQ6IHZvaWQgKl9f eGFfc3RvcmUoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4LCB2b2lkICplbnRy eSwgZ2ZwX3QpOwoxNDQ3NDogdm9pZCAqX194YV9jbXB4Y2hnKHN0cnVjdCB4YXJyYXkgKiwgdW5z aWduZWQgbG9uZyBpbmRleCwgdm9pZCAqb2xkLAoxNDQ3NDogICB2b2lkICplbnRyeSwgZ2ZwX3Qp OwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBfX3hh X2luc2VydChzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgsCjE0NDc0OiAgIHZv aWQgKmVudHJ5LCBnZnBfdCk7CjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIF9feGFfYWxsb2Moc3RydWN0IHhhcnJheSAqLCB1MzIgKmlkLCB2b2lkICpl bnRyeSwKMTQ0NzQ6ICAgc3RydWN0IHhhX2xpbWl0LCBnZnBfdCk7CjE0NDc0OiBpbnQgX19hdHRy aWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIF9feGFfYWxsb2NfY3ljbGljKHN0cnVj dCB4YXJyYXkgKiwgdTMyICppZCwgdm9pZCAqZW50cnksCjE0NDc0OiAgIHN0cnVjdCB4YV9saW1p dCwgdTMyICpuZXh0LCBnZnBfdCk7CjE0NDc0OiB2b2lkIF9feGFfc2V0X21hcmsoc3RydWN0IHhh cnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4LCB4YV9tYXJrX3QpOwoxNDQ3NDogdm9pZCBfX3hh X2NsZWFyX21hcmsoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4LCB4YV9tYXJr X3QpOwoxNDQ3NDogIyA1ODEgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg KnhhX3N0b3JlX2JoKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGluZGV4LAoxNDQ3 NDogICB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQoxNDQ3NDogewoxNDQ3NDogIHZvaWQgKmN1cnI7 CjE0NDc0OiAKMTQ0NzQ6ICBzcGluX2xvY2tfYmgoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogIGN1 cnIgPSBfX3hhX3N0b3JlKHhhLCBpbmRleCwgZW50cnksIGdmcCk7CjE0NDc0OiAgc3Bpbl91bmxv Y2tfYmgoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGN1cnI7CjE0NDc0 OiB9CjE0NDc0OiAjIDYwNyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAq eGFfc3RvcmVfaXJxKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGluZGV4LAoxNDQ3 NDogICB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQoxNDQ3NDogewoxNDQ3NDogIHZvaWQgKmN1cnI7 CjE0NDc0OiAKMTQ0NzQ6ICBzcGluX2xvY2tfaXJxKCYoeGEpLT54YV9sb2NrKTsKMTQ0NzQ6ICBj dXJyID0gX194YV9zdG9yZSh4YSwgaW5kZXgsIGVudHJ5LCBnZnApOwoxNDQ3NDogIHNwaW5fdW5s b2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gY3VycjsKMTQ0 NzQ6IH0KMTQ0NzQ6ICMgNjMyICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk ICp4YV9lcmFzZV9iaChzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICB2b2lkICplbnRyeTsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5fbG9ja19iaCgm KHhhKS0+eGFfbG9jayk7CjE0NDc0OiAgZW50cnkgPSBfX3hhX2VyYXNlKHhhLCBpbmRleCk7CjE0 NDc0OiAgc3Bpbl91bmxvY2tfYmgoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogCjE0NDc0OiAgcmV0 dXJuIGVudHJ5OwoxNDQ3NDogfQoxNDQ3NDogIyA2NTYgIi4vaW5jbHVkZS9saW51eC94YXJyYXku aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgKnhhX2VyYXNlX2lycShzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQg bG9uZyBpbmRleCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB2b2lkICplbnRyeTsKMTQ0NzQ6IAoxNDQ3NDog IHNwaW5fbG9ja19pcnEoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogIGVudHJ5ID0gX194YV9lcmFz ZSh4YSwgaW5kZXgpOwoxNDQ3NDogIHNwaW5fdW5sb2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CjE0 NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZW50cnk7CjE0NDc0OiB9CjE0NDc0OiAjIDY4MiAiLi9pbmNs dWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFfY21weGNoZyhzdHJ1Y3QgeGFycmF5 ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCwKMTQ0NzQ6ICAgIHZvaWQgKm9sZCwgdm9pZCAqZW50 cnksIGdmcF90IGdmcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB2b2lkICpjdXJyOwoxNDQ3NDogCjE0NDc0 OiAgc3Bpbl9sb2NrKCYoeGEpLT54YV9sb2NrKTsKMTQ0NzQ6ICBjdXJyID0gX194YV9jbXB4Y2hn KHhhLCBpbmRleCwgb2xkLCBlbnRyeSwgZ2ZwKTsKMTQ0NzQ6ICBzcGluX3VubG9jaygmKHhhKS0+ eGFfbG9jayk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gY3VycjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg NzA5ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICp4YV9jbXB4Y2hnX2Jo KHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGluZGV4LAoxNDQ3NDogICAgdm9pZCAq b2xkLCB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQoxNDQ3NDogewoxNDQ3NDogIHZvaWQgKmN1cnI7 CjE0NDc0OiAKMTQ0NzQ6ICBzcGluX2xvY2tfYmgoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogIGN1 cnIgPSBfX3hhX2NtcHhjaGcoeGEsIGluZGV4LCBvbGQsIGVudHJ5LCBnZnApOwoxNDQ3NDogIHNw aW5fdW5sb2NrX2JoKCYoeGEpLT54YV9sb2NrKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBjdXJy OwoxNDQ3NDogfQoxNDQ3NDogIyA3MzYgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgKnhhX2NtcHhjaGdfaXJxKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGlu ZGV4LAoxNDQ3NDogICAgdm9pZCAqb2xkLCB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQoxNDQ3NDog ewoxNDQ3NDogIHZvaWQgKmN1cnI7CjE0NDc0OiAKMTQ0NzQ6ICBzcGluX2xvY2tfaXJxKCYoeGEp LT54YV9sb2NrKTsKMTQ0NzQ6ICBjdXJyID0gX194YV9jbXB4Y2hnKHhhLCBpbmRleCwgb2xkLCBl bnRyeSwgZ2ZwKTsKMTQ0NzQ6ICBzcGluX3VubG9ja19pcnEoJih4YSktPnhhX2xvY2spOwoxNDQ3 NDogCjE0NDc0OiAgcmV0dXJuIGN1cnI7CjE0NDc0OiB9CjE0NDc0OiAjIDc2NSAiLi9pbmNsdWRl L2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSB4YV9pbnNlcnQoc3RydWN0IHhhcnJheSAqeGEsCjE0NDc0OiAgIHVuc2lnbmVk IGxvbmcgaW5kZXgsIHZvaWQgKmVudHJ5LCBnZnBfdCBnZnApCjE0NDc0OiB7CjE0NDc0OiAgaW50 IGVycjsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5fbG9jaygmKHhhKS0+eGFfbG9jayk7CjE0NDc0OiAg ZXJyID0gX194YV9pbnNlcnQoeGEsIGluZGV4LCBlbnRyeSwgZ2ZwKTsKMTQ0NzQ6ICBzcGluX3Vu bG9jaygmKHhhKS0+eGFfbG9jayk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZXJyOwoxNDQ3NDog fQoxNDQ3NDogIyA3OTQgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgeGFfaW5zZXJ0X2JoKHN0cnVjdCB4 YXJyYXkgKnhhLAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIGluZGV4LCB2b2lkICplbnRyeSwgZ2Zw X3QgZ2ZwKQoxNDQ3NDogewoxNDQ3NDogIGludCBlcnI7CjE0NDc0OiAKMTQ0NzQ6ICBzcGluX2xv Y2tfYmgoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogIGVyciA9IF9feGFfaW5zZXJ0KHhhLCBpbmRl eCwgZW50cnksIGdmcCk7CjE0NDc0OiAgc3Bpbl91bmxvY2tfYmgoJih4YSktPnhhX2xvY2spOwox NDQ3NDogCjE0NDc0OiAgcmV0dXJuIGVycjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgODIzICIuL2luY2x1 ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIHhhX2luc2VydF9pcnEoc3RydWN0IHhhcnJheSAqeGEsCjE0NDc0OiAgIHVu c2lnbmVkIGxvbmcgaW5kZXgsIHZvaWQgKmVudHJ5LCBnZnBfdCBnZnApCjE0NDc0OiB7CjE0NDc0 OiAgaW50IGVycjsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5fbG9ja19pcnEoJih4YSktPnhhX2xvY2sp OwoxNDQ3NDogIGVyciA9IF9feGFfaW5zZXJ0KHhhLCBpbmRleCwgZW50cnksIGdmcCk7CjE0NDc0 OiAgc3Bpbl91bmxvY2tfaXJxKCYoeGEpLT54YV9sb2NrKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVy biBlcnI7CjE0NDc0OiB9CjE0NDc0OiAjIDg1MiAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGludCB4YV9hbGxv YyhzdHJ1Y3QgeGFycmF5ICp4YSwgdTMyICppZCwKMTQ0NzQ6ICAgdm9pZCAqZW50cnksIHN0cnVj dCB4YV9saW1pdCBsaW1pdCwgZ2ZwX3QgZ2ZwKQoxNDQ3NDogewoxNDQ3NDogIGludCBlcnI7CjE0 NDc0OiAKMTQ0NzQ6ICBzcGluX2xvY2soJih4YSktPnhhX2xvY2spOwoxNDQ3NDogIGVyciA9IF9f eGFfYWxsb2MoeGEsIGlkLCBlbnRyeSwgbGltaXQsIGdmcCk7CjE0NDc0OiAgc3Bpbl91bmxvY2so Jih4YSktPnhhX2xvY2spOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGVycjsKMTQ0NzQ6IH0KMTQ0 NzQ6ICMgODgxICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1 dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHhhX2FsbG9jX2JoKHN0cnVjdCB4YXJyYXkg KnhhLCB1MzIgKmlkLAoxNDQ3NDogICB2b2lkICplbnRyeSwgc3RydWN0IHhhX2xpbWl0IGxpbWl0 LCBnZnBfdCBnZnApCjE0NDc0OiB7CjE0NDc0OiAgaW50IGVycjsKMTQ0NzQ6IAoxNDQ3NDogIHNw aW5fbG9ja19iaCgmKHhhKS0+eGFfbG9jayk7CjE0NDc0OiAgZXJyID0gX194YV9hbGxvYyh4YSwg aWQsIGVudHJ5LCBsaW1pdCwgZ2ZwKTsKMTQ0NzQ6ICBzcGluX3VubG9ja19iaCgmKHhhKS0+eGFf bG9jayk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZXJyOwoxNDQ3NDogfQoxNDQ3NDogIyA5MTAg Ii4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dh cm5fdW51c2VkX3Jlc3VsdF9fKSkgeGFfYWxsb2NfaXJxKHN0cnVjdCB4YXJyYXkgKnhhLCB1MzIg KmlkLAoxNDQ3NDogICB2b2lkICplbnRyeSwgc3RydWN0IHhhX2xpbWl0IGxpbWl0LCBnZnBfdCBn ZnApCjE0NDc0OiB7CjE0NDc0OiAgaW50IGVycjsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5fbG9ja19p cnEoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogIGVyciA9IF9feGFfYWxsb2MoeGEsIGlkLCBlbnRy eSwgbGltaXQsIGdmcCk7CjE0NDc0OiAgc3Bpbl91bmxvY2tfaXJxKCYoeGEpLT54YV9sb2NrKTsK MTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBlcnI7CjE0NDc0OiB9CjE0NDc0OiAjIDk0MyAiLi9pbmNs dWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHhhX2FsbG9jX2N5Y2xpYyhzdHJ1Y3QgeGFy cmF5ICp4YSwgdTMyICppZCwgdm9pZCAqZW50cnksCjE0NDc0OiAgIHN0cnVjdCB4YV9saW1pdCBs aW1pdCwgdTMyICpuZXh0LCBnZnBfdCBnZnApCjE0NDc0OiB7CjE0NDc0OiAgaW50IGVycjsKMTQ0 NzQ6IAoxNDQ3NDogIHNwaW5fbG9jaygmKHhhKS0+eGFfbG9jayk7CjE0NDc0OiAgZXJyID0gX194 YV9hbGxvY19jeWNsaWMoeGEsIGlkLCBlbnRyeSwgbGltaXQsIG5leHQsIGdmcCk7CjE0NDc0OiAg c3Bpbl91bmxvY2soJih4YSktPnhhX2xvY2spOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGVycjsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgOTc2ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgeGFfYWxsb2NfY3ljbGljX2JoKHN0cnVjdCB4YXJyYXkgKnhhLCB1MzIgKmlkLCB2b2lkICpl bnRyeSwKMTQ0NzQ6ICAgc3RydWN0IHhhX2xpbWl0IGxpbWl0LCB1MzIgKm5leHQsIGdmcF90IGdm cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgZXJyOwoxNDQ3NDogCjE0NDc0OiAgc3Bpbl9sb2NrX2Jo KCYoeGEpLT54YV9sb2NrKTsKMTQ0NzQ6ICBlcnIgPSBfX3hhX2FsbG9jX2N5Y2xpYyh4YSwgaWQs IGVudHJ5LCBsaW1pdCwgbmV4dCwgZ2ZwKTsKMTQ0NzQ6ICBzcGluX3VubG9ja19iaCgmKHhhKS0+ eGFfbG9jayk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZXJyOwoxNDQ3NDogfQoxNDQ3NDogIyAx MDA5ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgeGFfYWxsb2NfY3ljbGlj X2lycShzdHJ1Y3QgeGFycmF5ICp4YSwgdTMyICppZCwgdm9pZCAqZW50cnksCjE0NDc0OiAgIHN0 cnVjdCB4YV9saW1pdCBsaW1pdCwgdTMyICpuZXh0LCBnZnBfdCBnZnApCjE0NDc0OiB7CjE0NDc0 OiAgaW50IGVycjsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5fbG9ja19pcnEoJih4YSktPnhhX2xvY2sp OwoxNDQ3NDogIGVyciA9IF9feGFfYWxsb2NfY3ljbGljKHhhLCBpZCwgZW50cnksIGxpbWl0LCBu ZXh0LCBnZnApOwoxNDQ3NDogIHNwaW5fdW5sb2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CjE0NDc0 OiAKMTQ0NzQ6ICByZXR1cm4gZXJyOwoxNDQ3NDogfQoxNDQ3NDogIyAxMDM5ICIuL2luY2x1ZGUv bGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSkKMTQ0NzQ6IGludCB4YV9yZXNlcnZlKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBs b25nIGluZGV4LCBnZnBfdCBnZnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHhhX2Vycih4YV9j bXB4Y2hnKHhhLCBpbmRleCwgKCh2b2lkICopMCksIHhhX21rX2ludGVybmFsKDI1NyksIGdmcCkp OwoxNDQ3NDogfQoxNDQ3NDogIyAxMDU3ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkKMTQ0NzQ6IGludCB4YV9y ZXNlcnZlX2JoKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGluZGV4LCBnZnBfdCBn ZnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHhhX2Vycih4YV9jbXB4Y2hnX2JoKHhhLCBpbmRl eCwgKCh2b2lkICopMCksIHhhX21rX2ludGVybmFsKDI1NyksIGdmcCkpOwoxNDQ3NDogfQoxNDQ3 NDogIyAxMDc1ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkKMTQ0NzQ6IGludCB4YV9yZXNlcnZlX2lycShzdHJ1 Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCwgZ2ZwX3QgZ2ZwKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiB4YV9lcnIoeGFfY21weGNoZ19pcnEoeGEsIGluZGV4LCAoKHZvaWQgKikw KSwgeGFfbWtfaW50ZXJuYWwoMjU3KSwgZ2ZwKSk7CjE0NDc0OiB9CjE0NDc0OiAjIDEwOTAgIi4v aW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgeGFfcmVsZWFzZShzdHJ1Y3QgeGFy cmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB4YV9jbXB4Y2hn KHhhLCBpbmRleCwgeGFfbWtfaW50ZXJuYWwoMjU3KSwgKCh2b2lkICopMCksIDApOwoxNDQ3NDog fQoxNDQ3NDogIyAxMTIyICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdHJ1Y3Qg eGFfbm9kZSB7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBzaGlmdDsKMTQ0NzQ6ICB1bnNpZ25lZCBj aGFyIG9mZnNldDsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGNvdW50OwoxNDQ3NDogIHVuc2lnbmVk IGNoYXIgbnJfdmFsdWVzOwoxNDQ3NDogIHN0cnVjdCB4YV9ub2RlICpwYXJlbnQ7CjE0NDc0OiAg c3RydWN0IHhhcnJheSAqYXJyYXk7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgbGlz dF9oZWFkIHByaXZhdGVfbGlzdDsKMTQ0NzQ6ICAgc3RydWN0IGNhbGxiYWNrX2hlYWQgY2FsbGJh Y2tfaGVhZDsKMTQ0NzQ6ICB9OwoxNDQ3NDogIHZvaWQgKnNsb3RzWygxVUwgPDwgKDAgPyA0IDog NikpXTsKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgdGFnc1szXVsoKCgo MVVMIDw8ICgwID8gNCA6IDYpKSkgKyAoNjQpIC0gMSkgLyAoNjQpKV07CjE0NDc0OiAgIHVuc2ln bmVkIGxvbmcgbWFya3NbM11bKCgoKDFVTCA8PCAoMCA/IDQgOiA2KSkpICsgKDY0KSAtIDEpIC8g KDY0KSldOwoxNDQ3NDogIH07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB2b2lkIHhhX2R1bXAo Y29uc3Qgc3RydWN0IHhhcnJheSAqKTsKMTQ0NzQ6IHZvaWQgeGFfZHVtcF9ub2RlKGNvbnN0IHN0 cnVjdCB4YV9ub2RlICopOwoxNDQ3NDogIyAxMTYyICIuL2luY2x1ZGUvbGludXgveGFycmF5Lmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkICp4YV9oZWFkKGNvbnN0IHN0cnVjdCB4YXJyYXkgKnhhKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiAoeyB0eXBlb2YoKih4YS0+eGFfaGVhZCkpICpfX19fX19fX3AxID0gKHR5 cGVvZigqKHhhLT54YV9oZWFkKSkgKikoeyB1bmlvbiB7IHR5cGVvZigoeGEtPnhhX2hlYWQpKSBf X3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKCh4YS0+ eGFfaGVhZCkpLCBfX3UuX19jLCBzaXplb2YoKHhhLT54YV9oZWFkKSkpOyBlbHNlIF9fcmVhZF9v bmNlX3NpemVfbm9jaGVjaygmKCh4YS0+eGFfaGVhZCkpLCBfX3UuX19jLCBzaXplb2YoKHhhLT54 YV9oZWFkKSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOyBkbyB7IH0gd2hpbGUg KDApOyA7ICgodHlwZW9mKCooeGEtPnhhX2hlYWQpKSAqKShfX19fX19fX3AxKSk7IH0pCjE0NDc0 OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFfaGVhZF9sb2NrZWQoY29uc3Qgc3RydWN0IHhhcnJheSAq eGEpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBl b2YoKih4YS0+eGFfaGVhZCkpICopKCh4YS0+eGFfaGVhZCkpKTsgfSkKMTQ0NzQ6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkICp4YV9lbnRyeShjb25zdCBzdHJ1Y3QgeGFycmF5ICp4YSwKMTQ0NzQ6ICAgICBj b25zdCBzdHJ1Y3QgeGFfbm9kZSAqbm9kZSwgdW5zaWduZWQgaW50IG9mZnNldCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogIHJldHVybiAoeyB0eXBlb2YoKihub2Rl LT5zbG90c1tvZmZzZXRdKSkgKl9fX19fX19fcDEgPSAodHlwZW9mKCoobm9kZS0+c2xvdHNbb2Zm c2V0XSkpICopKHsgdW5pb24geyB0eXBlb2YoKG5vZGUtPnNsb3RzW29mZnNldF0pKSBfX3ZhbDsg Y2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKChub2RlLT5zbG90 c1tvZmZzZXRdKSksIF9fdS5fX2MsIHNpemVvZigobm9kZS0+c2xvdHNbb2Zmc2V0XSkpKTsgZWxz ZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigobm9kZS0+c2xvdHNbb2Zmc2V0XSkpLCBfX3Uu X19jLCBzaXplb2YoKG5vZGUtPnNsb3RzW29mZnNldF0pKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9f dS5fX3ZhbDsgfSk7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBlb2YoKihub2RlLT5zbG90c1tv ZmZzZXRdKSkgKikoX19fX19fX19wMSkpOyB9KQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhh X2VudHJ5X2xvY2tlZChjb25zdCBzdHJ1Y3QgeGFycmF5ICp4YSwKMTQ0NzQ6ICAgICBjb25zdCBz dHJ1Y3QgeGFfbm9kZSAqbm9kZSwgdW5zaWduZWQgaW50IG9mZnNldCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogIHJldHVybiAoeyBkbyB7IH0gd2hpbGUgKDApOyA7 ICgodHlwZW9mKCoobm9kZS0+c2xvdHNbb2Zmc2V0XSkpICopKChub2RlLT5zbG90c1tvZmZzZXRd KSkpOyB9KQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB4YV9ub2RlICp4YV9wYXJlbnQoY29u c3Qgc3RydWN0IHhhcnJheSAqeGEsCjE0NDc0OiAgICAgIGNvbnN0IHN0cnVjdCB4YV9ub2RlICpu b2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyB0eXBlb2YoKihub2RlLT5wYXJlbnQpKSAq X19fX19fX19wMSA9ICh0eXBlb2YoKihub2RlLT5wYXJlbnQpKSAqKSh7IHVuaW9uIHsgdHlwZW9m KChub2RlLT5wYXJlbnQpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFk X29uY2Vfc2l6ZSgmKChub2RlLT5wYXJlbnQpKSwgX191Ll9fYywgc2l6ZW9mKChub2RlLT5wYXJl bnQpKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoKG5vZGUtPnBhcmVudCkpLCBf X3UuX19jLCBzaXplb2YoKG5vZGUtPnBhcmVudCkpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9f dmFsOyB9KTsgZG8geyB9IHdoaWxlICgwKTsgOyAoKHR5cGVvZigqKG5vZGUtPnBhcmVudCkpICop KF9fX19fX19fcDEpKTsgfSkKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgeGFfbm9kZSAqeGFf cGFyZW50X2xvY2tlZChjb25zdCBzdHJ1Y3QgeGFycmF5ICp4YSwKMTQ0NzQ6ICAgICAgY29uc3Qg c3RydWN0IHhhX25vZGUgKm5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGRvIHsgfSB3 aGlsZSAoMCk7IDsgKCh0eXBlb2YoKihub2RlLT5wYXJlbnQpKSAqKSgobm9kZS0+cGFyZW50KSkp OyB9KQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX21rX25vZGUoY29uc3Qgc3RydWN0IHhh X25vZGUgKm5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh2b2lkICopKCh1bnNpZ25lZCBs b25nKW5vZGUgfCAyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgeGFf bm9kZSAqeGFfdG9fbm9kZShjb25zdCB2b2lkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gKHN0cnVjdCB4YV9ub2RlICopKCh1bnNpZ25lZCBsb25nKWVudHJ5IC0gMik7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4YV9pc19ub2RlKGNvbnN0IHZvaWQgKmVudHJ5 KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB4YV9pc19pbnRlcm5hbChlbnRyeSkgJiYgKHVuc2ln bmVkIGxvbmcpZW50cnkgPiA0MDk2OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgKnhhX21rX3NpYmxpbmcodW5zaWduZWQgaW50IG9mZnNldCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4geGFfbWtfaW50ZXJuYWwob2Zmc2V0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBsb25nIHhhX3RvX3NpYmxpbmcoY29uc3Qgdm9pZCAqZW50cnkpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIHhhX3RvX2ludGVybmFsKGVudHJ5KTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCB4YV9pc19zaWJsaW5nKGNvbnN0IHZvaWQgKmVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiAxICYmIHhhX2lzX2ludGVybmFsKGVudHJ5KSAmJgoxNDQ3NDogICAoZW50cnkgPCB4YV9t a19zaWJsaW5nKCgxVUwgPDwgKDAgPyA0IDogNikpIC0gMSkpOwoxNDQ3NDogfQoxNDQ3NDogIyAx MjU5ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhX2lzX3JldHJ5KGNv bnN0IHZvaWQgKmVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2J1aWx0aW5fZXhwZWN0 KCEhKGVudHJ5ID09IHhhX21rX2ludGVybmFsKDI1NikpLCAwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCB4YV9pc19hZHZhbmNlZChjb25zdCB2b2lkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4geGFfaXNfaW50ZXJuYWwoZW50cnkpICYmIChlbnRyeSA8PSB4YV9ta19pbnRlcm5hbCgyNTYp KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTI4NyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3 NDogdHlwZWRlZiB2b2lkICgqeGFfdXBkYXRlX25vZGVfdCkoc3RydWN0IHhhX25vZGUgKm5vZGUp OwoxNDQ3NDogIyAxMzA2ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdHJ1Y3Qg eGFfc3RhdGUgewoxNDQ3NDogIHN0cnVjdCB4YXJyYXkgKnhhOwoxNDQ3NDogIHVuc2lnbmVkIGxv bmcgeGFfaW5kZXg7CjE0NDc0OiAgdW5zaWduZWQgY2hhciB4YV9zaGlmdDsKMTQ0NzQ6ICB1bnNp Z25lZCBjaGFyIHhhX3NpYnM7CjE0NDc0OiAgdW5zaWduZWQgY2hhciB4YV9vZmZzZXQ7CjE0NDc0 OiAgdW5zaWduZWQgY2hhciB4YV9wYWQ7CjE0NDc0OiAgc3RydWN0IHhhX25vZGUgKnhhX25vZGU7 CjE0NDc0OiAgc3RydWN0IHhhX25vZGUgKnhhX2FsbG9jOwoxNDQ3NDogIHhhX3VwZGF0ZV9ub2Rl X3QgeGFfdXBkYXRlOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTM4NSAiLi9pbmNsdWRlL2xpbnV4L3hh cnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHhhc19lcnJvcihjb25zdCBzdHJ1Y3QgeGFfc3RhdGUgKnhhcykK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4geGFfZXJyKHhhcy0+eGFfbm9kZSk7CjE0NDc0OiB9CjE0 NDc0OiAjIDEzOTkgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgeGFzX3Nl dF9lcnIoc3RydWN0IHhhX3N0YXRlICp4YXMsIGxvbmcgZXJyKQoxNDQ3NDogewoxNDQ3NDogIHhh cy0+eGFfbm9kZSA9ICgoc3RydWN0IHhhX25vZGUgKikoKCh1bnNpZ25lZCBsb25nKWVyciA8PCAy KSB8IDJVTCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhc19pbnZhbGlkKGNvbnN0IHN0cnVjdCB4 YV9zdGF0ZSAqeGFzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodW5zaWduZWQgbG9uZyl4YXMt PnhhX25vZGUgJiAzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhc192YWxpZChjb25zdCBzdHJ1Y3Qg eGFfc3RhdGUgKnhhcykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gIXhhc19pbnZhbGlkKHhhcyk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgeGFzX2lzX25vZGUoY29uc3Qgc3RydWN0IHhhX3N0YXRlICp4 YXMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHhhc192YWxpZCh4YXMpICYmIHhhcy0+eGFfbm9k ZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhc19ub3Rfbm9kZShzdHJ1 Y3QgeGFfbm9kZSAqbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCh1bnNpZ25lZCBsb25n KW5vZGUgJiAzKSB8fCAhbm9kZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s IHhhc19mcm96ZW4oc3RydWN0IHhhX25vZGUgKm5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu ICh1bnNpZ25lZCBsb25nKW5vZGUgJiAyOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgeGFzX3RvcChzdHJ1Y3QgeGFfbm9kZSAqbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gbm9kZSA8PSAoKHN0cnVjdCB4YV9ub2RlICopM1VMKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQ2 NSAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB4YXNfcmVzZXQoc3RydWN0 IHhhX3N0YXRlICp4YXMpCjE0NDc0OiB7CjE0NDc0OiAgeGFzLT54YV9ub2RlID0gKChzdHJ1Y3Qg eGFfbm9kZSAqKTNVTCk7CjE0NDc0OiB9CjE0NDc0OiAjIDE0ODIgIi4vaW5jbHVkZS9saW51eC94 YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgeGFzX3JldHJ5KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCBjb25z dCB2b2lkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoeGFfaXNfemVybyhlbnRyeSkpCjE0 NDc0OiAgIHJldHVybiB0cnVlOwoxNDQ3NDogIGlmICgheGFfaXNfcmV0cnkoZW50cnkpKQoxNDQ3 NDogICByZXR1cm4gZmFsc2U7CjE0NDc0OiAgeGFzX3Jlc2V0KHhhcyk7CjE0NDc0OiAgcmV0dXJu IHRydWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgKnhhc19sb2FkKHN0cnVjdCB4YV9z dGF0ZSAqKTsKMTQ0NzQ6IHZvaWQgKnhhc19zdG9yZShzdHJ1Y3QgeGFfc3RhdGUgKiwgdm9pZCAq ZW50cnkpOwoxNDQ3NDogdm9pZCAqeGFzX2ZpbmQoc3RydWN0IHhhX3N0YXRlICosIHVuc2lnbmVk IGxvbmcgbWF4KTsKMTQ0NzQ6IHZvaWQgKnhhc19maW5kX2NvbmZsaWN0KHN0cnVjdCB4YV9zdGF0 ZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCB4YXNfZ2V0X21hcmsoY29uc3Qgc3RydWN0IHhhX3N0 YXRlICosIHhhX21hcmtfdCk7CjE0NDc0OiB2b2lkIHhhc19zZXRfbWFyayhjb25zdCBzdHJ1Y3Qg eGFfc3RhdGUgKiwgeGFfbWFya190KTsKMTQ0NzQ6IHZvaWQgeGFzX2NsZWFyX21hcmsoY29uc3Qg c3RydWN0IHhhX3N0YXRlICosIHhhX21hcmtfdCk7CjE0NDc0OiB2b2lkICp4YXNfZmluZF9tYXJr ZWQoc3RydWN0IHhhX3N0YXRlICosIHVuc2lnbmVkIGxvbmcgbWF4LCB4YV9tYXJrX3QpOwoxNDQ3 NDogdm9pZCB4YXNfaW5pdF9tYXJrcyhjb25zdCBzdHJ1Y3QgeGFfc3RhdGUgKik7CjE0NDc0OiAK MTQ0NzQ6IGJvb2wgeGFzX25vbWVtKHN0cnVjdCB4YV9zdGF0ZSAqLCBnZnBfdCk7CjE0NDc0OiB2 b2lkIHhhc19wYXVzZShzdHJ1Y3QgeGFfc3RhdGUgKik7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgeGFz X2NyZWF0ZV9yYW5nZShzdHJ1Y3QgeGFfc3RhdGUgKik7CjE0NDc0OiAjIDE1MjIgIi4vaW5jbHVk ZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhc19yZWxvYWQoc3RydWN0IHhhX3N0YXRl ICp4YXMpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IHhhX25vZGUgKm5vZGUgPSB4YXMtPnhhX25v ZGU7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAobm9kZSkKMTQ0NzQ6ICAgcmV0dXJuIHhhX2VudHJ5KHhh cy0+eGEsIG5vZGUsIHhhcy0+eGFfb2Zmc2V0KTsKMTQ0NzQ6ICByZXR1cm4geGFfaGVhZCh4YXMt PnhhKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTU0MCAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCB4YXNfc2V0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB1bnNpZ25lZCBsb25nIGlu ZGV4KQoxNDQ3NDogewoxNDQ3NDogIHhhcy0+eGFfaW5kZXggPSBpbmRleDsKMTQ0NzQ6ICB4YXMt PnhhX25vZGUgPSAoKHN0cnVjdCB4YV9ub2RlICopM1VMKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB4 YXNfc2V0X29yZGVyKHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB1bnNpZ25lZCBsb25nIGluZGV4LAox NDQ3NDogICAgICB1bnNpZ25lZCBpbnQgb3JkZXIpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICB4 YXMtPnhhX2luZGV4ID0gb3JkZXIgPCA2NCA/IChpbmRleCA+PiBvcmRlcikgPDwgb3JkZXIgOiAw OwoxNDQ3NDogIHhhcy0+eGFfc2hpZnQgPSBvcmRlciAtIChvcmRlciAlICgwID8gNCA6IDYpKTsK MTQ0NzQ6ICB4YXMtPnhhX3NpYnMgPSAoMSA8PCAob3JkZXIgJSAoMCA/IDQgOiA2KSkpIC0gMTsK MTQ0NzQ6ICB4YXMtPnhhX25vZGUgPSAoKHN0cnVjdCB4YV9ub2RlICopM1VMKTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogIyAxNTc0ICIuL2luY2x1ZGUv bGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHhhc19zZXRfdXBkYXRlKHN0cnVjdCB4YV9zdGF0 ZSAqeGFzLCB4YV91cGRhdGVfbm9kZV90IHVwZGF0ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICB4YXMtPnhh X3VwZGF0ZSA9IHVwZGF0ZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTU5MCAiLi9pbmNsdWRlL2xpbnV4 L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFzX25leHRfZW50cnkoc3RydWN0IHhhX3N0YXRlICp4 YXMsIHVuc2lnbmVkIGxvbmcgbWF4KQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCB4YV9ub2RlICpu b2RlID0geGFzLT54YV9ub2RlOwoxNDQ3NDogIHZvaWQgKmVudHJ5OwoxNDQ3NDogCjE0NDc0OiAg aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoeGFzX25vdF9ub2RlKG5vZGUpIHx8IG5vZGUtPnNoaWZ0 IHx8IHhhcy0+eGFfb2Zmc2V0ICE9ICh4YXMtPnhhX2luZGV4ICYgKCgxVUwgPDwgKDAgPyA0IDog NikpIC0gMSkpKSwgMCkKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQoxNDQ3NDogICByZXR1cm4geGFzX2ZpbmQoeGFzLCBtYXgpOwox NDQ3NDogCjE0NDc0OiAgZG8gewoxNDQ3NDogICBpZiAoX19idWlsdGluX2V4cGVjdCghISh4YXMt PnhhX2luZGV4ID49IG1heCksIDApKQoxNDQ3NDogICAgcmV0dXJuIHhhc19maW5kKHhhcywgbWF4 KTsKMTQ0NzQ6ICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoeGFzLT54YV9vZmZzZXQgPT0gKCgx VUwgPDwgKDAgPyA0IDogNikpIC0gMSkpLCAwKSkKMTQ0NzQ6ICAgIHJldHVybiB4YXNfZmluZCh4 YXMsIG1heCk7CjE0NDc0OiAgIGVudHJ5ID0geGFfZW50cnkoeGFzLT54YSwgbm9kZSwgeGFzLT54 YV9vZmZzZXQgKyAxKTsKMTQ0NzQ6ICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoeGFfaXNfaW50 ZXJuYWwoZW50cnkpKSwgMCkpCjE0NDc0OiAgICByZXR1cm4geGFzX2ZpbmQoeGFzLCBtYXgpOwox NDQ3NDogICB4YXMtPnhhX29mZnNldCsrOwoxNDQ3NDogICB4YXMtPnhhX2luZGV4Kys7CjE0NDc0 OiAgfSB3aGlsZSAoIWVudHJ5KTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBlbnRyeTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgeGFzX2ZpbmRfY2h1bmsoc3Ry dWN0IHhhX3N0YXRlICp4YXMsIGJvb2wgYWR2YW5jZSwKMTQ0NzQ6ICAgeGFfbWFya190IG1hcmsp CjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyAqYWRkciA9IHhhcy0+eGFfbm9kZS0+bWFy a3NbKCB1bnNpZ25lZCltYXJrXTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgb2Zmc2V0ID0geGFzLT54 YV9vZmZzZXQ7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoYWR2YW5jZSkKMTQ0NzQ6ICAgb2Zmc2V0Kys7 CjE0NDc0OiAgaWYgKCgxVUwgPDwgKDAgPyA0IDogNikpID09IDY0KSB7CjE0NDc0OiAgIGlmIChv ZmZzZXQgPCAoMVVMIDw8ICgwID8gNCA6IDYpKSkgewoxNDQ3NDogICAgdW5zaWduZWQgbG9uZyBk YXRhID0gKmFkZHIgJiAofjBVTCA8PCBvZmZzZXQpOwoxNDQ3NDogICAgaWYgKGRhdGEpCjE0NDc0 OiAgICAgcmV0dXJuIF9fZmZzKGRhdGEpOwoxNDQ3NDogICB9CjE0NDc0OiAgIHJldHVybiAoMVVM IDw8ICgwID8gNCA6IDYpKTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZmluZF9u ZXh0X2JpdChhZGRyLCAoMVVMIDw8ICgwID8gNCA6IDYpKSwgb2Zmc2V0KTsKMTQ0NzQ6IH0KMTQ0 NzQ6ICMgMTY0NyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFzX25l eHRfbWFya2VkKHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB1bnNpZ25lZCBsb25nIG1heCwKMTQ0NzQ6 ICAgICAgICAgeGFfbWFya190IG1hcmspCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IHhhX25vZGUg Km5vZGUgPSB4YXMtPnhhX25vZGU7CjE0NDc0OiAgdW5zaWduZWQgaW50IG9mZnNldDsKMTQ0NzQ6 IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHhhc19ub3Rfbm9kZShub2RlKSB8fCBu b2RlLT5zaGlmdCksIDApKQoxNDQ3NDogICByZXR1cm4geGFzX2ZpbmRfbWFya2VkKHhhcywgbWF4 LCBtYXJrKTsKMTQ0NzQ6ICBvZmZzZXQgPSB4YXNfZmluZF9jaHVuayh4YXMsIHRydWUsIG1hcmsp OwoxNDQ3NDogIHhhcy0+eGFfb2Zmc2V0ID0gb2Zmc2V0OwoxNDQ3NDogIHhhcy0+eGFfaW5kZXgg PSAoeGFzLT54YV9pbmRleCAmIH4oKDFVTCA8PCAoMCA/IDQgOiA2KSkgLSAxKSkgKyBvZmZzZXQ7 CjE0NDc0OiAgaWYgKHhhcy0+eGFfaW5kZXggPiBtYXgpCjE0NDc0OiAgIHJldHVybiAoKHZvaWQg KikwKTsKMTQ0NzQ6ICBpZiAob2Zmc2V0ID09ICgxVUwgPDwgKDAgPyA0IDogNikpKQoxNDQ3NDog ICByZXR1cm4geGFzX2ZpbmRfbWFya2VkKHhhcywgbWF4LCBtYXJrKTsKMTQ0NzQ6ICByZXR1cm4g eGFfZW50cnkoeGFzLT54YSwgbm9kZSwgb2Zmc2V0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBYQV9DSEVDS19T Q0hFRCA9IDQwOTYsCjE0NDc0OiB9OwoxNDQ3NDogIyAxNzI0ICIuL2luY2x1ZGUvbGludXgveGFy cmF5LmgiCjE0NDc0OiB2b2lkICpfX3hhc19uZXh0KHN0cnVjdCB4YV9zdGF0ZSAqKTsKMTQ0NzQ6 IHZvaWQgKl9feGFzX3ByZXYoc3RydWN0IHhhX3N0YXRlICopOwoxNDQ3NDogIyAxNzQzICIuL2lu Y2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICp4YXNfcHJldihzdHJ1Y3QgeGFfc3Rh dGUgKnhhcykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgeGFfbm9kZSAqbm9kZSA9IHhhcy0+eGFf bm9kZTsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHhhc19ub3Rfbm9k ZShub2RlKSB8fCBub2RlLT5zaGlmdCB8fCB4YXMtPnhhX29mZnNldCA9PSAwKSwgMCkKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICkKMTQ0NzQ6ICAgcmV0dXJuIF9feGFzX3ByZXYoeGFz KTsKMTQ0NzQ6IAoxNDQ3NDogIHhhcy0+eGFfaW5kZXgtLTsKMTQ0NzQ6ICB4YXMtPnhhX29mZnNl dC0tOwoxNDQ3NDogIHJldHVybiB4YV9lbnRyeSh4YXMtPnhhLCBub2RlLCB4YXMtPnhhX29mZnNl dCk7CjE0NDc0OiB9CjE0NDc0OiAjIDE3NzIgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgKnhhc19uZXh0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzKQoxNDQ3NDogewoxNDQ3NDog IHN0cnVjdCB4YV9ub2RlICpub2RlID0geGFzLT54YV9ub2RlOwoxNDQ3NDogCjE0NDc0OiAgaWYg KF9fYnVpbHRpbl9leHBlY3QoISEoeGFzX25vdF9ub2RlKG5vZGUpIHx8IG5vZGUtPnNoaWZ0IHx8 IHhhcy0+eGFfb2Zmc2V0ID09ICgoMVVMIDw8ICgwID8gNCA6IDYpKSAtIDEpKSwgMCkKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKMTQ0NzQ6ICAgcmV0dXJuIF9f eGFzX25leHQoeGFzKTsKMTQ0NzQ6IAoxNDQ3NDogIHhhcy0+eGFfaW5kZXgrKzsKMTQ0NzQ6ICB4 YXMtPnhhX29mZnNldCsrOwoxNDQ3NDogIHJldHVybiB4YV9lbnRyeSh4YXMtPnhhLCBub2RlLCB4 YXMtPnhhX29mZnNldCk7CjE0NDc0OiB9CjE0NDc0OiAjIDE5ICIuL2luY2x1ZGUvbGludXgvcmFk aXgtdHJlZS5oIiAyCjE0NDc0OiAjIDQzICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCByYWRpeF90cmVlX2lzX2ludGVybmFsX25vZGUodm9pZCAqcHRyKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAoKHVuc2lnbmVkIGxvbmcpcHRyICYgM1VMKSA9PQoxNDQ3NDogICAg IDJVTDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzQgIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIHJhZGl4X3RyZWVfZW1wdHkoY29uc3Qgc3RydWN0IHhhcnJheSAqcm9vdCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcm9vdC0+eGFfaGVhZCA9PSAoKHZvaWQgKikwKTsKMTQ0 NzQ6IH0KMTQ0NzQ6ICMgOTQgIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiCjE0NDc0OiBz dHJ1Y3QgcmFkaXhfdHJlZV9pdGVyIHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGluZGV4OwoxNDQ3 NDogIHVuc2lnbmVkIGxvbmcgbmV4dF9pbmRleDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHRhZ3M7 CjE0NDc0OiAgc3RydWN0IHhhX25vZGUgKm5vZGU7CjE0NDc0OiB9OwoxNDQ3NDogIyAxNjUgIi4v aW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICpyYWRpeF90cmVlX2RlcmVm X3Nsb3Qodm9pZCAqKnNsb3QpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IHR5cGVvZigqKCpz bG90KSkgKl9fX19fX19fcDEgPSAodHlwZW9mKCooKnNsb3QpKSAqKSh7IHVuaW9uIHsgdHlwZW9m KCgqc2xvdCkpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9z aXplKCYoKCpzbG90KSksIF9fdS5fX2MsIHNpemVvZigoKnNsb3QpKSk7IGVsc2UgX19yZWFkX29u Y2Vfc2l6ZV9ub2NoZWNrKCYoKCpzbG90KSksIF9fdS5fX2MsIHNpemVvZigoKnNsb3QpKSk7IGRv IHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBl b2YoKigqc2xvdCkpICopKF9fX19fX19fcDEpKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE3OSAi Li9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnJhZGl4X3RyZWVfZGVy ZWZfc2xvdF9wcm90ZWN0ZWQodm9pZCAqKnNsb3QsCjE0NDc0OiAgICAgICAgc3BpbmxvY2tfdCAq dHJlZWxvY2spCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGRvIHsgfSB3aGlsZSAoMCk7IDsg KCh0eXBlb2YoKigqc2xvdCkpICopKCgqc2xvdCkpKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE5 MiAiLi9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCByYWRpeF90cmVlX2Rl cmVmX3JldHJ5KHZvaWQgKmFyZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19idWlsdGluX2V4 cGVjdCghIShyYWRpeF90cmVlX2lzX2ludGVybmFsX25vZGUoYXJnKSksIDApOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50 IHJhZGl4X3RyZWVfZXhjZXB0aW9uKHZvaWQgKmFyZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g X19idWlsdGluX2V4cGVjdCghISgodW5zaWduZWQgbG9uZylhcmcgJiAzVUwpLCAwKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogaW50IHJhZGl4X3RyZWVfaW5zZXJ0KHN0cnVjdCB4YXJyYXkgKiwg dW5zaWduZWQgbG9uZyBpbmRleCwKMTQ0NzQ6ICAgIHZvaWQgKik7CjE0NDc0OiB2b2lkICpfX3Jh ZGl4X3RyZWVfbG9va3VwKGNvbnN0IHN0cnVjdCB4YXJyYXkgKiwgdW5zaWduZWQgbG9uZyBpbmRl eCwKMTQ0NzQ6ICAgICAgc3RydWN0IHhhX25vZGUgKipub2RlcCwgdm9pZCAqKipzbG90cCk7CjE0 NDc0OiB2b2lkICpyYWRpeF90cmVlX2xvb2t1cChjb25zdCBzdHJ1Y3QgeGFycmF5ICosIHVuc2ln bmVkIGxvbmcpOwoxNDQ3NDogdm9pZCAqKnJhZGl4X3RyZWVfbG9va3VwX3Nsb3QoY29uc3Qgc3Ry dWN0IHhhcnJheSAqLAoxNDQ3NDogICAgICB1bnNpZ25lZCBsb25nIGluZGV4KTsKMTQ0NzQ6IHZv aWQgX19yYWRpeF90cmVlX3JlcGxhY2Uoc3RydWN0IHhhcnJheSAqLCBzdHJ1Y3QgeGFfbm9kZSAq LAoxNDQ3NDogICAgICB2b2lkICoqc2xvdCwgdm9pZCAqZW50cnkpOwoxNDQ3NDogdm9pZCByYWRp eF90cmVlX2l0ZXJfcmVwbGFjZShzdHJ1Y3QgeGFycmF5ICosCjE0NDc0OiAgIGNvbnN0IHN0cnVj dCByYWRpeF90cmVlX2l0ZXIgKiwgdm9pZCAqKnNsb3QsIHZvaWQgKmVudHJ5KTsKMTQ0NzQ6IHZv aWQgcmFkaXhfdHJlZV9yZXBsYWNlX3Nsb3Qoc3RydWN0IHhhcnJheSAqLAoxNDQ3NDogICAgICAg ICB2b2lkICoqc2xvdCwgdm9pZCAqZW50cnkpOwoxNDQ3NDogdm9pZCByYWRpeF90cmVlX2l0ZXJf ZGVsZXRlKHN0cnVjdCB4YXJyYXkgKiwKMTQ0NzQ6ICAgIHN0cnVjdCByYWRpeF90cmVlX2l0ZXIg Kml0ZXIsIHZvaWQgKipzbG90KTsKMTQ0NzQ6IHZvaWQgKnJhZGl4X3RyZWVfZGVsZXRlX2l0ZW0o c3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwoxNDQ3NDogdm9pZCAqcmFk aXhfdHJlZV9kZWxldGUoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nKTsKMTQ0NzQ6IHVu c2lnbmVkIGludCByYWRpeF90cmVlX2dhbmdfbG9va3VwKGNvbnN0IHN0cnVjdCB4YXJyYXkgKiwK MTQ0NzQ6ICAgIHZvaWQgKipyZXN1bHRzLCB1bnNpZ25lZCBsb25nIGZpcnN0X2luZGV4LAoxNDQ3 NDogICAgdW5zaWduZWQgaW50IG1heF9pdGVtcyk7CjE0NDc0OiBpbnQgcmFkaXhfdHJlZV9wcmVs b2FkKGdmcF90IGdmcF9tYXNrKTsKMTQ0NzQ6IGludCByYWRpeF90cmVlX21heWJlX3ByZWxvYWQo Z2ZwX3QgZ2ZwX21hc2spOwoxNDQ3NDogdm9pZCByYWRpeF90cmVlX2luaXQodm9pZCk7CjE0NDc0 OiB2b2lkICpyYWRpeF90cmVlX3RhZ19zZXQoc3RydWN0IHhhcnJheSAqLAoxNDQ3NDogICAgdW5z aWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgaW50IHRhZyk7CjE0NDc0OiB2b2lkICpyYWRpeF90 cmVlX3RhZ19jbGVhcihzdHJ1Y3QgeGFycmF5ICosCjE0NDc0OiAgICB1bnNpZ25lZCBsb25nIGlu ZGV4LCB1bnNpZ25lZCBpbnQgdGFnKTsKMTQ0NzQ6IGludCByYWRpeF90cmVlX3RhZ19nZXQoY29u c3Qgc3RydWN0IHhhcnJheSAqLAoxNDQ3NDogICAgdW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWdu ZWQgaW50IHRhZyk7CjE0NDc0OiB2b2lkIHJhZGl4X3RyZWVfaXRlcl90YWdfY2xlYXIoc3RydWN0 IHhhcnJheSAqLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVyICppdGVyLCB1 bnNpZ25lZCBpbnQgdGFnKTsKMTQ0NzQ6IHVuc2lnbmVkIGludCByYWRpeF90cmVlX2dhbmdfbG9v a3VwX3RhZyhjb25zdCBzdHJ1Y3QgeGFycmF5ICosCjE0NDc0OiAgIHZvaWQgKipyZXN1bHRzLCB1 bnNpZ25lZCBsb25nIGZpcnN0X2luZGV4LAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbWF4X2l0ZW1z LCB1bnNpZ25lZCBpbnQgdGFnKTsKMTQ0NzQ6IHVuc2lnbmVkIGludCByYWRpeF90cmVlX2dhbmdf bG9va3VwX3RhZ19zbG90KGNvbnN0IHN0cnVjdCB4YXJyYXkgKiwKMTQ0NzQ6ICAgdm9pZCAqKipy ZXN1bHRzLCB1bnNpZ25lZCBsb25nIGZpcnN0X2luZGV4LAoxNDQ3NDogICB1bnNpZ25lZCBpbnQg bWF4X2l0ZW1zLCB1bnNpZ25lZCBpbnQgdGFnKTsKMTQ0NzQ6IGludCByYWRpeF90cmVlX3RhZ2dl ZChjb25zdCBzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGludCB0YWcpOwoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHJhZGl4X3RyZWVfcHJlbG9hZF9lbmQodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2Fz bV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiB2b2lkICoqaWRyX2dldF9mcmVlKHN0cnVjdCB4YXJyYXkgKnJvb3QsCjE0NDc0OiAgICAgICAg ICBzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVyICppdGVyLCBnZnBfdCBnZnAsCjE0NDc0OiAgICAgICAg ICB1bnNpZ25lZCBsb25nIG1heCk7CjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIFJBRElY X1RSRUVfSVRFUl9UQUdfTUFTSyA9IDB4MGYsCjE0NDc0OiAgUkFESVhfVFJFRV9JVEVSX1RBR0dF RCA9IDB4MTAsCjE0NDc0OiAgUkFESVhfVFJFRV9JVEVSX0NPTlRJRyA9IDB4MjAsCjE0NDc0OiB9 OwoxNDQ3NDogIyAyNjggIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgKioKMTQ0NzQ6IHJhZGl4X3RyZWVf aXRlcl9pbml0KHN0cnVjdCByYWRpeF90cmVlX2l0ZXIgKml0ZXIsIHVuc2lnbmVkIGxvbmcgc3Rh cnQpCjE0NDc0OiB7CjE0NDc0OiAjIDI3OSAiLi9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIK MTQ0NzQ6ICBpdGVyLT5pbmRleCA9IDA7CjE0NDc0OiAgaXRlci0+bmV4dF9pbmRleCA9IHN0YXJ0 OwoxNDQ3NDogIHJldHVybiAoKHZvaWQgKikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjk3ICIuL2lu Y2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgoxNDQ3NDogdm9pZCAqKnJhZGl4X3RyZWVfbmV4dF9j aHVuayhjb25zdCBzdHJ1Y3QgeGFycmF5ICosCjE0NDc0OiAgICAgICAgIHN0cnVjdCByYWRpeF90 cmVlX2l0ZXIgKml0ZXIsIHVuc2lnbmVkIGZsYWdzKTsKMTQ0NzQ6ICMgMzEwICIuL2luY2x1ZGUv bGludXgvcmFkaXgtdHJlZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqKgoxNDQ3NDogcmFkaXhfdHJlZV9pdGVy X2xvb2t1cChjb25zdCBzdHJ1Y3QgeGFycmF5ICpyb290LAoxNDQ3NDogICAgc3RydWN0IHJhZGl4 X3RyZWVfaXRlciAqaXRlciwgdW5zaWduZWQgbG9uZyBpbmRleCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy YWRpeF90cmVlX2l0ZXJfaW5pdChpdGVyLCBpbmRleCk7CjE0NDc0OiAgcmV0dXJuIHJhZGl4X3Ry ZWVfbmV4dF9jaHVuayhyb290LCBpdGVyLCBSQURJWF9UUkVFX0lURVJfQ09OVElHKTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgMzI3ICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpCjE0NDc0OiB2b2lkICoqcmFkaXhf dHJlZV9pdGVyX3JldHJ5KHN0cnVjdCByYWRpeF90cmVlX2l0ZXIgKml0ZXIpCjE0NDc0OiB7CjE0 NDc0OiAgaXRlci0+bmV4dF9pbmRleCA9IGl0ZXItPmluZGV4OwoxNDQ3NDogIGl0ZXItPnRhZ3Mg PSAwOwoxNDQ3NDogIHJldHVybiAoKHZvaWQgKikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dW5zaWduZWQgbG9uZwoxNDQ3NDogX19yYWRpeF90cmVlX2l0ZXJfYWRkKHN0cnVjdCByYWRpeF90 cmVlX2l0ZXIgKml0ZXIsIHVuc2lnbmVkIGxvbmcgc2xvdHMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGl0ZXItPmluZGV4ICsgc2xvdHM7CjE0NDc0OiB9CjE0NDc0OiAjIDM1MSAiLi9pbmNsdWRl L2xpbnV4L3JhZGl4LXRyZWUuaCIKMTQ0NzQ6IHZvaWQgKipfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkgcmFkaXhfdHJlZV9pdGVyX3Jlc3VtZSh2b2lkICoqc2xvdCwKMTQ0 NzQ6ICAgICAgc3RydWN0IHJhZGl4X3RyZWVfaXRlciAqaXRlcik7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgbG9uZwoxNDQ3NDogcmFkaXhfdHJlZV9jaHVua19zaXpl KHN0cnVjdCByYWRpeF90cmVlX2l0ZXIgKml0ZXIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGl0 ZXItPm5leHRfaW5kZXggLSBpdGVyLT5pbmRleDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzg1ICIuL2lu Y2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkICoqcmFkaXhfdHJlZV9uZXh0X3Nsb3Qodm9pZCAqKnNsb3QsCjE0NDc0 OiAgICAgc3RydWN0IHJhZGl4X3RyZWVfaXRlciAqaXRlciwgdW5zaWduZWQgZmxhZ3MpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKGZsYWdzICYgUkFESVhfVFJFRV9JVEVSX1RBR0dFRCkgewoxNDQ3NDog ICBpdGVyLT50YWdzID4+PSAxOwoxNDQ3NDogICBpZiAoX19idWlsdGluX2V4cGVjdCghISghaXRl ci0+dGFncyksIDApKQoxNDQ3NDogICAgcmV0dXJuICgodm9pZCAqKTApOwoxNDQ3NDogICBpZiAo X19idWlsdGluX2V4cGVjdCghIShpdGVyLT50YWdzICYgMXVsKSwgMSkpIHsKMTQ0NzQ6ICAgIGl0 ZXItPmluZGV4ID0gX19yYWRpeF90cmVlX2l0ZXJfYWRkKGl0ZXIsIDEpOwoxNDQ3NDogICAgc2xv dCsrOwoxNDQ3NDogICAgZ290byBmb3VuZDsKMTQ0NzQ6ICAgfQoxNDQ3NDogICBpZiAoIShmbGFn cyAmIFJBRElYX1RSRUVfSVRFUl9DT05USUcpKSB7CjE0NDc0OiAgICB1bnNpZ25lZCBvZmZzZXQg PSBfX2ZmcyhpdGVyLT50YWdzKTsKMTQ0NzQ6IAoxNDQ3NDogICAgaXRlci0+dGFncyA+Pj0gb2Zm c2V0Kys7CjE0NDc0OiAgICBpdGVyLT5pbmRleCA9IF9fcmFkaXhfdHJlZV9pdGVyX2FkZChpdGVy LCBvZmZzZXQpOwoxNDQ3NDogICAgc2xvdCArPSBvZmZzZXQ7CjE0NDc0OiAgICBnb3RvIGZvdW5k OwoxNDQ3NDogICB9CjE0NDc0OiAgfSBlbHNlIHsKMTQ0NzQ6ICAgbG9uZyBjb3VudCA9IHJhZGl4 X3RyZWVfY2h1bmtfc2l6ZShpdGVyKTsKMTQ0NzQ6IAoxNDQ3NDogICB3aGlsZSAoLS1jb3VudCA+ IDApIHsKMTQ0NzQ6ICAgIHNsb3QrKzsKMTQ0NzQ6ICAgIGl0ZXItPmluZGV4ID0gX19yYWRpeF90 cmVlX2l0ZXJfYWRkKGl0ZXIsIDEpOwoxNDQ3NDogCjE0NDc0OiAgICBpZiAoX19idWlsdGluX2V4 cGVjdCghISgqc2xvdCksIDEpKQoxNDQ3NDogICAgIGdvdG8gZm91bmQ7CjE0NDc0OiAgICBpZiAo ZmxhZ3MgJiBSQURJWF9UUkVFX0lURVJfQ09OVElHKSB7CjE0NDc0OiAKMTQ0NzQ6ICAgICBpdGVy LT5uZXh0X2luZGV4ID0gMDsKMTQ0NzQ6ICAgICBicmVhazsKMTQ0NzQ6ICAgIH0KMTQ0NzQ6ICAg fQoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gKCh2b2lkICopMCk7CjE0NDc0OiAKMTQ0NzQ6ICBm b3VuZDoKMTQ0NzQ6ICByZXR1cm4gc2xvdDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTYgIi4vaW5jbHVk ZS9saW51eC9mcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5j bHVkZS9saW51eC9waWQuaCIgMQoxNDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgvcGlkLmgiCjE0 NDc0OiBlbnVtIHBpZF90eXBlCjE0NDc0OiB7CjE0NDc0OiAgUElEVFlQRV9QSUQsCjE0NDc0OiAg UElEVFlQRV9UR0lELAoxNDQ3NDogIFBJRFRZUEVfUEdJRCwKMTQ0NzQ6ICBQSURUWVBFX1NJRCwK MTQ0NzQ6ICBQSURUWVBFX01BWCwKMTQ0NzQ6IH07CjE0NDc0OiAjIDU0ICIuL2luY2x1ZGUvbGlu dXgvcGlkLmgiCjE0NDc0OiBzdHJ1Y3QgdXBpZCB7CjE0NDc0OiAgaW50IG5yOwoxNDQ3NDogIHN0 cnVjdCBwaWRfbmFtZXNwYWNlICpuczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBw aWQKMTQ0NzQ6IHsKMTQ0NzQ6ICByZWZjb3VudF90IGNvdW50OwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBsZXZlbDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBobGlzdF9oZWFkIHRhc2tzW1BJRFRZUEVf TUFYXTsKMTQ0NzQ6IAoxNDQ3NDogIHdhaXRfcXVldWVfaGVhZF90IHdhaXRfcGlkZmQ7CjE0NDc0 OiAgc3RydWN0IGNhbGxiYWNrX2hlYWQgcmN1OwoxNDQ3NDogIHN0cnVjdCB1cGlkIG51bWJlcnNb MV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHBpZCBpbml0X3N0cnVj dF9waWQ7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IHBpZGZkX2ZvcHM7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmaWxlOwoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gc3RydWN0IHBpZCAqcGlkZmRfcGlkKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKTsKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgc3RydWN0IHBpZCAqZ2V0X3BpZChzdHJ1Y3QgcGlkICpwaWQpCjE0NDc0OiB7 CjE0NDc0OiAgaWYgKHBpZCkKMTQ0NzQ6ICAgcmVmY291bnRfaW5jKCZwaWQtPmNvdW50KTsKMTQ0 NzQ6ICByZXR1cm4gcGlkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBwdXRf cGlkKHN0cnVjdCBwaWQgKnBpZCk7CjE0NDc0OiBleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpw aWRfdGFzayhzdHJ1Y3QgcGlkICpwaWQsIGVudW0gcGlkX3R5cGUpOwoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBwaWRf aGFzX3Rhc2soc3RydWN0IHBpZCAqcGlkLCBlbnVtIHBpZF90eXBlIHR5cGUpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICFobGlzdF9lbXB0eSgmcGlkLT50YXNrc1t0eXBlXSk7CjE0NDc0OiB9CjE0 NDc0OiBleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpnZXRfcGlkX3Rhc2soc3RydWN0IHBpZCAq cGlkLCBlbnVtIHBpZF90eXBlKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBwaWQgKmdl dF90YXNrX3BpZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGVudW0gcGlkX3R5cGUgdHlwZSk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGF0dGFj aF9waWQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBlbnVtIHBpZF90eXBlKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIGRldGFjaF9waWQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBlbnVtIHBpZF90 eXBlKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNoYW5nZV9waWQoc3RydWN0IHRhc2tfc3RydWN0ICp0 YXNrLCBlbnVtIHBpZF90eXBlLAoxNDQ3NDogICAgc3RydWN0IHBpZCAqcGlkKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIHRyYW5zZmVyX3BpZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm9sZCwgc3RydWN0IHRh c2tfc3RydWN0ICpuZXcsCjE0NDc0OiAgICAgZW51bSBwaWRfdHlwZSk7CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBwaWRfbmFtZXNwYWNlOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBwaWRfbmFtZXNwYWNl IGluaXRfcGlkX25zOwoxNDQ3NDogIyAxMTggIi4vaW5jbHVkZS9saW51eC9waWQuaCIKMTQ0NzQ6 IGV4dGVybiBzdHJ1Y3QgcGlkICpmaW5kX3BpZF9ucyhpbnQgbnIsIHN0cnVjdCBwaWRfbmFtZXNw YWNlICpucyk7CjE0NDc0OiBleHRlcm4gc3RydWN0IHBpZCAqZmluZF92cGlkKGludCBucik7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgcGlkICpm aW5kX2dldF9waWQoaW50IG5yKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgcGlkICpmaW5kX2dlX3Bp ZChpbnQgbnIsIHN0cnVjdCBwaWRfbmFtZXNwYWNlICopOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g c3RydWN0IHBpZCAqYWxsb2NfcGlkKHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucywgcGlkX3QgKnNl dF90aWQsCjE0NDc0OiAgICAgICAgIHNpemVfdCBzZXRfdGlkX3NpemUpOwoxNDQ3NDogZXh0ZXJu IHZvaWQgZnJlZV9waWQoc3RydWN0IHBpZCAqcGlkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRpc2Fi bGVfcGlkX2FsbG9jYXRpb24oc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zKTsKMTQ0NzQ6ICMgMTQy ICIuL2luY2x1ZGUvbGludXgvcGlkLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnNf b2ZfcGlkKHN0cnVjdCBwaWQgKnBpZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgcGlkX25hbWVz cGFjZSAqbnMgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6ICBpZiAocGlkKQoxNDQ3NDogICBucyA9IHBp ZC0+bnVtYmVyc1twaWQtPmxldmVsXS5uczsKMTQ0NzQ6ICByZXR1cm4gbnM7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgaXNfY2hpbGRfcmVhcGVyKHN0cnVjdCBwaWQgKnBpZCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gcGlkLT5udW1iZXJzW3BpZC0+bGV2ZWxdLm5yID09IDE7CjE0NDc0OiB9CjE0NDc0 OiAjIDE3MiAiLi9pbmNsdWRlL2xpbnV4L3BpZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgcGlkX25yKHN0cnVj dCBwaWQgKnBpZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBwaWRfdCBuciA9IDA7CjE0NDc0OiAgaWYgKHBp ZCkKMTQ0NzQ6ICAgbnIgPSBwaWQtPm51bWJlcnNbMF0ubnI7CjE0NDc0OiAgcmV0dXJuIG5yOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBwaWRfdCBwaWRfbnJfbnMoc3RydWN0IHBpZCAqcGlkLCBz dHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMpOwoxNDQ3NDogcGlkX3QgcGlkX3ZucihzdHJ1Y3QgcGlk ICpwaWQpOwoxNDQ3NDogIyAyMCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0 eS5oIiAxCjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgoxNDQ3NDog IyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9jYXBhYmlsaXR5LmgiIDEKMTQ0NzQ6ICMgMzkgIi4v aW5jbHVkZS91YXBpL2xpbnV4L2NhcGFiaWxpdHkuaCIKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF9f dXNlcl9jYXBfaGVhZGVyX3N0cnVjdCB7CjE0NDc0OiAgX191MzIgdmVyc2lvbjsKMTQ0NzQ6ICBp bnQgcGlkOwoxNDQ3NDogfSAqY2FwX3VzZXJfaGVhZGVyX3Q7CjE0NDc0OiAKMTQ0NzQ6IHR5cGVk ZWYgc3RydWN0IF9fdXNlcl9jYXBfZGF0YV9zdHJ1Y3QgewoxNDQ3NDogICAgICAgICBfX3UzMiBl ZmZlY3RpdmU7CjE0NDc0OiAgICAgICAgIF9fdTMyIHBlcm1pdHRlZDsKMTQ0NzQ6ICAgICAgICAg X191MzIgaW5oZXJpdGFibGU7CjE0NDc0OiB9ICpjYXBfdXNlcl9kYXRhX3Q7CjE0NDc0OiAjIDcy ICIuL2luY2x1ZGUvdWFwaS9saW51eC9jYXBhYmlsaXR5LmgiCjE0NDc0OiBzdHJ1Y3QgdmZzX2Nh cF9kYXRhIHsKMTQ0NzQ6ICBfX2xlMzIgbWFnaWNfZXRjOwoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0 OiAgIF9fbGUzMiBwZXJtaXR0ZWQ7CjE0NDc0OiAgIF9fbGUzMiBpbmhlcml0YWJsZTsKMTQ0NzQ6 ICB9IGRhdGFbMl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgdmZzX25zX2NhcF9kYXRhIHsKMTQ0NzQ6ICBfX2xlMzIgbWFnaWNfZXRjOwox NDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIF9fbGUzMiBwZXJtaXR0ZWQ7CjE0NDc0OiAgIF9fbGUz MiBpbmhlcml0YWJsZTsKMTQ0NzQ6ICB9IGRhdGFbMl07CjE0NDc0OiAgX19sZTMyIHJvb3RpZDsK MTQ0NzQ6IH07CjE0NDc0OiAjIDE3ICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAyCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBm aWxlX2NhcHNfZW5hYmxlZDsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3Qga2VybmVsX2Nh cF9zdHJ1Y3QgewoxNDQ3NDogIF9fdTMyIGNhcFsyXTsKMTQ0NzQ6IH0ga2VybmVsX2NhcF90Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjcHVfdmZzX2NhcF9kYXRhIHsKMTQ0NzQ6ICBf X3UzMiBtYWdpY19ldGM7CjE0NDc0OiAga2VybmVsX2NhcF90IHBlcm1pdHRlZDsKMTQ0NzQ6ICBr ZXJuZWxfY2FwX3QgaW5oZXJpdGFibGU7CjE0NDc0OiAga3VpZF90IHJvb3RpZDsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZp bGU7CjE0NDc0OiBzdHJ1Y3QgaW5vZGU7CjE0NDc0OiBzdHJ1Y3QgZGVudHJ5OwoxNDQ3NDogc3Ry dWN0IHRhc2tfc3RydWN0OwoxNDQ3NDogc3RydWN0IHVzZXJfbmFtZXNwYWNlOwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gY29uc3Qga2VybmVsX2NhcF90IF9fY2FwX2VtcHR5X3NldDsKMTQ0NzQ6IGV4 dGVybiBjb25zdCBrZXJuZWxfY2FwX3QgX19jYXBfaW5pdF9lZmZfc2V0OwoxNDQ3NDogIyAxMTgg Ii4vaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrZXJuZWxfY2FwX3QgY2FwX2Nv bWJpbmUoY29uc3Qga2VybmVsX2NhcF90IGEsCjE0NDc0OiAgICAgICAgICAgIGNvbnN0IGtlcm5l bF9jYXBfdCBiKQoxNDQ3NDogewoxNDQ3NDogIGtlcm5lbF9jYXBfdCBkZXN0OwoxNDQ3NDogIGRv IHsgdW5zaWduZWQgX19jYXBpOyBmb3IgKF9fY2FwaSA9IDA7IF9fY2FwaSA8IDI7ICsrX19jYXBp KSB7IGRlc3QuY2FwW19fY2FwaV0gPSBhLmNhcFtfX2NhcGldIHwgYi5jYXBbX19jYXBpXTsgfSB9 IHdoaWxlICgwKTsKMTQ0NzQ6ICByZXR1cm4gZGVzdDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg a2VybmVsX2NhcF90IGNhcF9pbnRlcnNlY3QoY29uc3Qga2VybmVsX2NhcF90IGEsCjE0NDc0OiAg ICAgICBjb25zdCBrZXJuZWxfY2FwX3QgYikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrZXJuZWxfY2FwX3Qg ZGVzdDsKMTQ0NzQ6ICBkbyB7IHVuc2lnbmVkIF9fY2FwaTsgZm9yIChfX2NhcGkgPSAwOyBfX2Nh cGkgPCAyOyArK19fY2FwaSkgeyBkZXN0LmNhcFtfX2NhcGldID0gYS5jYXBbX19jYXBpXSAmIGIu Y2FwW19fY2FwaV07IH0gfSB3aGlsZSAoMCk7CjE0NDc0OiAgcmV0dXJuIGRlc3Q7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGtlcm5lbF9jYXBfdCBjYXBfZHJvcChjb25zdCBrZXJuZWxfY2FwX3Qg YSwKMTQ0NzQ6ICAgICAgICAgY29uc3Qga2VybmVsX2NhcF90IGRyb3ApCjE0NDc0OiB7CjE0NDc0 OiAga2VybmVsX2NhcF90IGRlc3Q7CjE0NDc0OiAgZG8geyB1bnNpZ25lZCBfX2NhcGk7IGZvciAo X19jYXBpID0gMDsgX19jYXBpIDwgMjsgKytfX2NhcGkpIHsgZGVzdC5jYXBbX19jYXBpXSA9IGEu Y2FwW19fY2FwaV0gJn4gZHJvcC5jYXBbX19jYXBpXTsgfSB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBy ZXR1cm4gZGVzdDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga2VybmVsX2NhcF90IGNhcF9pbnZl cnQoY29uc3Qga2VybmVsX2NhcF90IGMpCjE0NDc0OiB7CjE0NDc0OiAga2VybmVsX2NhcF90IGRl c3Q7CjE0NDc0OiAgZG8geyB1bnNpZ25lZCBfX2NhcGk7IGZvciAoX19jYXBpID0gMDsgX19jYXBp IDwgMjsgKytfX2NhcGkpIHsgZGVzdC5jYXBbX19jYXBpXSA9IH4gYy5jYXBbX19jYXBpXTsgfSB9 IHdoaWxlICgwKTsKMTQ0NzQ6ICByZXR1cm4gZGVzdDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBjYXBfaXNjbGVhcihjb25zdCBrZXJuZWxfY2FwX3QgYSkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1 bnNpZ25lZCBfX2NhcGk7CjE0NDc0OiAgZm9yIChfX2NhcGkgPSAwOyBfX2NhcGkgPCAyOyArK19f Y2FwaSkgewoxNDQ3NDogICBpZiAoYS5jYXBbX19jYXBpXSAhPSAwKQoxNDQ3NDogICAgcmV0dXJu IGZhbHNlOwoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg MTY2ICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBjYXBfaXNzdWJz ZXQoY29uc3Qga2VybmVsX2NhcF90IGEsIGNvbnN0IGtlcm5lbF9jYXBfdCBzZXQpCjE0NDc0OiB7 CjE0NDc0OiAga2VybmVsX2NhcF90IGRlc3Q7CjE0NDc0OiAgZGVzdCA9IGNhcF9kcm9wKGEsIHNl dCk7CjE0NDc0OiAgcmV0dXJuIGNhcF9pc2NsZWFyKGRlc3QpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkga2VybmVsX2NhcF90IGNhcF9kcm9wX2ZzX3NldChjb25zdCBr ZXJuZWxfY2FwX3QgYSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBjb25zdCBrZXJuZWxfY2FwX3QgX19jYXBf ZnNfc2V0ID0gKChrZXJuZWxfY2FwX3Qpe3sgKCgxIDw8ICgoMCkgJiAzMSkpIHwgKDEgPDwgKCgy NykgJiAzMSkpIHwgKDEgPDwgKCgxKSAmIDMxKSkgfCAoMSA8PCAoKDIpICYgMzEpKSB8ICgxIDw8 ICgoMykgJiAzMSkpIHwgKDEgPDwgKCg0KSAmIDMxKSkpIHwgKDEgPDwgKCg5KSAmIDMxKSksICgo MSA8PCAoKDMyKSAmIDMxKSkpIH0gfSk7CjE0NDc0OiAgcmV0dXJuIGNhcF9kcm9wKGEsIF9fY2Fw X2ZzX3NldCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGtlcm5lbF9jYXBfdCBjYXBfcmFpc2Vf ZnNfc2V0KGNvbnN0IGtlcm5lbF9jYXBfdCBhLAoxNDQ3NDogICAgICAgICAgY29uc3Qga2VybmVs X2NhcF90IHBlcm1pdHRlZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBjb25zdCBrZXJuZWxfY2FwX3QgX19j YXBfZnNfc2V0ID0gKChrZXJuZWxfY2FwX3Qpe3sgKCgxIDw8ICgoMCkgJiAzMSkpIHwgKDEgPDwg KCgyNykgJiAzMSkpIHwgKDEgPDwgKCgxKSAmIDMxKSkgfCAoMSA8PCAoKDIpICYgMzEpKSB8ICgx IDw8ICgoMykgJiAzMSkpIHwgKDEgPDwgKCg0KSAmIDMxKSkpIHwgKDEgPDwgKCg5KSAmIDMxKSks ICgoMSA8PCAoKDMyKSAmIDMxKSkpIH0gfSk7CjE0NDc0OiAgcmV0dXJuIGNhcF9jb21iaW5lKGEs CjE0NDc0OiAgICAgICBjYXBfaW50ZXJzZWN0KHBlcm1pdHRlZCwgX19jYXBfZnNfc2V0KSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGtlcm5lbF9jYXBfdCBjYXBfZHJvcF9uZnNkX3NldChjb25z dCBrZXJuZWxfY2FwX3QgYSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBjb25zdCBrZXJuZWxfY2FwX3QgX19j YXBfZnNfc2V0ID0gKChrZXJuZWxfY2FwX3Qpe3sgKCgxIDw8ICgoMCkgJiAzMSkpIHwgKDEgPDwg KCgyNykgJiAzMSkpIHwgKDEgPDwgKCgxKSAmIDMxKSkgfCAoMSA8PCAoKDIpICYgMzEpKSB8ICgx IDw8ICgoMykgJiAzMSkpIHwgKDEgPDwgKCg0KSAmIDMxKSkpIHwgKDEgPDwgKCgyNCkgJiAzMSkp LCAoKDEgPDwgKCgzMikgJiAzMSkpKSB9IH0pOwoxNDQ3NDogIHJldHVybiBjYXBfZHJvcChhLCBf X2NhcF9mc19zZXQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrZXJuZWxfY2FwX3QgY2FwX3Jh aXNlX25mc2Rfc2V0KGNvbnN0IGtlcm5lbF9jYXBfdCBhLAoxNDQ3NDogICAgICAgICAgICBjb25z dCBrZXJuZWxfY2FwX3QgcGVybWl0dGVkKQoxNDQ3NDogewoxNDQ3NDogIGNvbnN0IGtlcm5lbF9j YXBfdCBfX2NhcF9uZnNkX3NldCA9ICgoa2VybmVsX2NhcF90KXt7ICgoMSA8PCAoKDApICYgMzEp KSB8ICgxIDw8ICgoMjcpICYgMzEpKSB8ICgxIDw8ICgoMSkgJiAzMSkpIHwgKDEgPDwgKCgyKSAm IDMxKSkgfCAoMSA8PCAoKDMpICYgMzEpKSB8ICgxIDw8ICgoNCkgJiAzMSkpKSB8ICgxIDw8ICgo MjQpICYgMzEpKSwgKCgxIDw8ICgoMzIpICYgMzEpKSkgfSB9KTsKMTQ0NzQ6ICByZXR1cm4gY2Fw X2NvbWJpbmUoYSwKMTQ0NzQ6ICAgICAgIGNhcF9pbnRlcnNlY3QocGVybWl0dGVkLCBfX2NhcF9u ZnNkX3NldCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBib29sIGhh c19jYXBhYmlsaXR5KHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwgaW50IGNhcCk7CjE0NDc0OiBleHRl cm4gYm9vbCBoYXNfbnNfY2FwYWJpbGl0eShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsCjE0NDc0OiAg ICAgICAgICBzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm5zLCBpbnQgY2FwKTsKMTQ0NzQ6IGV4dGVy biBib29sIGhhc19jYXBhYmlsaXR5X25vYXVkaXQoc3RydWN0IHRhc2tfc3RydWN0ICp0LCBpbnQg Y2FwKTsKMTQ0NzQ6IGV4dGVybiBib29sIGhhc19uc19jYXBhYmlsaXR5X25vYXVkaXQoc3RydWN0 IHRhc2tfc3RydWN0ICp0LAoxNDQ3NDogICAgICAgICAgIHN0cnVjdCB1c2VyX25hbWVzcGFjZSAq bnMsIGludCBjYXApOwoxNDQ3NDogZXh0ZXJuIGJvb2wgY2FwYWJsZShpbnQgY2FwKTsKMTQ0NzQ6 IGV4dGVybiBib29sIG5zX2NhcGFibGUoc3RydWN0IHVzZXJfbmFtZXNwYWNlICpucywgaW50IGNh cCk7CjE0NDc0OiBleHRlcm4gYm9vbCBuc19jYXBhYmxlX25vYXVkaXQoc3RydWN0IHVzZXJfbmFt ZXNwYWNlICpucywgaW50IGNhcCk7CjE0NDc0OiBleHRlcm4gYm9vbCBuc19jYXBhYmxlX3NldGlk KHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqbnMsIGludCBjYXApOwoxNDQ3NDogIyAyNTAgIi4vaW5j bHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCjE0NDc0OiBleHRlcm4gYm9vbCBwcml2aWxlZ2VkX3dy dF9pbm9kZV91aWRnaWQoc3RydWN0IHVzZXJfbmFtZXNwYWNlICpucywgY29uc3Qgc3RydWN0IGlu b2RlICppbm9kZSk7CjE0NDc0OiBleHRlcm4gYm9vbCBjYXBhYmxlX3dydF9pbm9kZV91aWRnaWQo Y29uc3Qgc3RydWN0IGlub2RlICppbm9kZSwgaW50IGNhcCk7CjE0NDc0OiBleHRlcm4gYm9vbCBm aWxlX25zX2NhcGFibGUoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB1c2VyX25hbWVz cGFjZSAqbnMsIGludCBjYXApOwoxNDQ3NDogZXh0ZXJuIGJvb2wgcHRyYWNlcl9jYXBhYmxlKHN0 cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm5zKTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGdldF92ZnNfY2Fwc19mcm9tX2Rpc2soY29uc3Qg c3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgY3B1X3Zmc19jYXBfZGF0YSAqY3B1X2NhcHMp OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGNhcF9jb252ZXJ0X25zY2FwKHN0cnVjdCBkZW50 cnkgKmRlbnRyeSwgdm9pZCAqKml2YWx1ZSwgc2l6ZV90IHNpemUpOwoxNDQ3NDogIyAyNSAiLi9p bmNsdWRlL2xpbnV4L2ZzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3NlbWFwaG9y ZS5oIiAxCjE0NDc0OiAjIDE1ICIuL2luY2x1ZGUvbGludXgvc2VtYXBob3JlLmgiCjE0NDc0OiBz dHJ1Y3Qgc2VtYXBob3JlIHsKMTQ0NzQ6ICByYXdfc3BpbmxvY2tfdCBsb2NrOwoxNDQ3NDogIHVu c2lnbmVkIGludCBjb3VudDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIHdhaXRfbGlzdDsKMTQ0 NzQ6IH07CjE0NDc0OiAjIDMxICIuL2luY2x1ZGUvbGludXgvc2VtYXBob3JlLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHNlbWFfaW5pdChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0sIGludCB2YWwpCjE0NDc0OiB7CjE0 NDc0OiAgc3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBfX2tleTsKMTQ0NzQ6ICAqc2VtID0g KHN0cnVjdCBzZW1hcGhvcmUpIHsgLmxvY2sgPSAocmF3X3NwaW5sb2NrX3QpIHsgLnJhd19sb2Nr ID0geyB7IC52YWwgPSB7ICgwKSB9IH0gfSwgfSwgLmNvdW50ID0gdmFsLCAud2FpdF9saXN0ID0g eyAmKCgqc2VtKS53YWl0X2xpc3QpLCAmKCgqc2VtKS53YWl0X2xpc3QpIH0sIH07CjE0NDc0OiAg ZG8geyAodm9pZCkoInNlbWFwaG9yZS0+bG9jayIpOyAodm9pZCkoJl9fa2V5KTsgfSB3aGlsZSAo MCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGRvd24oc3RydWN0IHNlbWFw aG9yZSAqc2VtKTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIGRvd25faW50ZXJydXB0aWJsZShzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pOwox NDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkg ZG93bl9raWxsYWJsZShzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pOwoxNDQ3NDogZXh0ZXJuIGludCBf X2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZG93bl90cnlsb2NrKHN0cnVj dCBzZW1hcGhvcmUgKnNlbSk7CjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fy bl91bnVzZWRfcmVzdWx0X18pKSBkb3duX3RpbWVvdXQoc3RydWN0IHNlbWFwaG9yZSAqc2VtLCBs b25nIGppZmZpZXMpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgdXAoc3RydWN0IHNlbWFwaG9yZSAqc2Vt KTsKMTQ0NzQ6ICMgMjYgIi4vaW5jbHVkZS9saW51eC9mcy5oIiAyCjE0NDc0OiAjIDEgIi4vaW5j bHVkZS9saW51eC9mY250bC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9mY250bC5oIiAxCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dl bmVyYXRlZC91YXBpL2FzbS9mY250bC5oIiAxCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2Fz bS1nZW5lcmljL2ZjbnRsLmgiIDEKMTQ0NzQ6ICMgMTU2ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2Vu ZXJpYy9mY250bC5oIgoxNDQ3NDogc3RydWN0IGZfb3duZXJfZXggewoxNDQ3NDogIGludCB0eXBl OwoxNDQ3NDogIF9fa2VybmVsX3BpZF90IHBpZDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDE5NiAiLi9p bmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvZmNudGwuaCIKMTQ0NzQ6IHN0cnVjdCBmbG9jayB7CjE0 NDc0OiAgc2hvcnQgbF90eXBlOwoxNDQ3NDogIHNob3J0IGxfd2hlbmNlOwoxNDQ3NDogIF9fa2Vy bmVsX29mZl90IGxfc3RhcnQ7CjE0NDc0OiAgX19rZXJuZWxfb2ZmX3QgbF9sZW47CjE0NDc0OiAg X19rZXJuZWxfcGlkX3QgbF9waWQ7CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmbG9j azY0IHsKMTQ0NzQ6ICBzaG9ydCBsX3R5cGU7CjE0NDc0OiAgc2hvcnQgbF93aGVuY2U7CjE0NDc0 OiAgX19rZXJuZWxfbG9mZl90IGxfc3RhcnQ7CjE0NDc0OiAgX19rZXJuZWxfbG9mZl90IGxfbGVu OwoxNDQ3NDogIF9fa2VybmVsX3BpZF90IGxfcGlkOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDog IyAyICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2ZjbnRsLmgiIDIKMTQ0 NzQ6ICMgNiAiLi9pbmNsdWRlL3VhcGkvbGludXgvZmNudGwuaCIgMgoxNDQ3NDogIyAxICIuL2lu Y2x1ZGUvdWFwaS9saW51eC9vcGVuYXQyLmgiIDEKMTQ0NzQ6ICMgMTkgIi4vaW5jbHVkZS91YXBp L2xpbnV4L29wZW5hdDIuaCIKMTQ0NzQ6IHN0cnVjdCBvcGVuX2hvdyB7CjE0NDc0OiAgX191NjQg ZmxhZ3M7CjE0NDc0OiAgX191NjQgbW9kZTsKMTQ0NzQ6ICBfX3U2NCByZXNvbHZlOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgNyAiLi9pbmNsdWRlL3VhcGkvbGludXgvZmNudGwuaCIgMgoxNDQ3NDogIyA3 ICIuL2luY2x1ZGUvbGludXgvZmNudGwuaCIgMgoxNDQ3NDogIyAyNyAiLi9pbmNsdWRlL2xpbnV4 L2ZzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZmllbWFwLmgiIDEKMTQ0 NzQ6ICMgMTcgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2ZpZW1hcC5oIgoxNDQ3NDogc3RydWN0IGZp ZW1hcF9leHRlbnQgewoxNDQ3NDogIF9fdTY0IGZlX2xvZ2ljYWw7CjE0NDc0OiAKMTQ0NzQ6ICBf X3U2NCBmZV9waHlzaWNhbDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTY0IGZlX2xlbmd0aDsKMTQ0NzQ6 ICBfX3U2NCBmZV9yZXNlcnZlZDY0WzJdOwoxNDQ3NDogIF9fdTMyIGZlX2ZsYWdzOwoxNDQ3NDog IF9fdTMyIGZlX3Jlc2VydmVkWzNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZp ZW1hcCB7CjE0NDc0OiAgX191NjQgZm1fc3RhcnQ7CjE0NDc0OiAKMTQ0NzQ6ICBfX3U2NCBmbV9s ZW5ndGg7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBmbV9mbGFnczsKMTQ0NzQ6ICBfX3UzMiBmbV9t YXBwZWRfZXh0ZW50czsKMTQ0NzQ6ICBfX3UzMiBmbV9leHRlbnRfY291bnQ7CjE0NDc0OiAgX191 MzIgZm1fcmVzZXJ2ZWQ7CjE0NDc0OiAgc3RydWN0IGZpZW1hcF9leHRlbnQgZm1fZXh0ZW50c1sw XTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDI4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvbWlncmF0ZV9tb2Rl LmgiIDEKMTQ0NzQ6ICMgMTUgIi4vaW5jbHVkZS9saW51eC9taWdyYXRlX21vZGUuaCIKMTQ0NzQ6 IGVudW0gbWlncmF0ZV9tb2RlIHsKMTQ0NzQ6ICBNSUdSQVRFX0FTWU5DLAoxNDQ3NDogIE1JR1JB VEVfU1lOQ19MSUdIVCwKMTQ0NzQ6ICBNSUdSQVRFX1NZTkMsCjE0NDc0OiAgTUlHUkFURV9TWU5D X05PX0NPUFksCjE0NDc0OiB9OwoxNDQ3NDogIyAzMiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcndzZW0u aCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9yY3V3YWl0LmgiIDEKMTQ0NzQ6ICMgMTUg Ii4vaW5jbHVkZS9saW51eC9yY3V3YWl0LmgiCjE0NDc0OiBzdHJ1Y3QgcmN1d2FpdCB7CjE0NDc0 OiAgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByY3V3YWl0X2luaXQoc3RydWN0IHJjdXdhaXQgKncp CjE0NDc0OiB7CjE0NDc0OiAgdy0+dGFzayA9ICgodm9pZCAqKTApOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCByY3V3YWl0X3dha2VfdXAoc3RydWN0IHJjdXdhaXQgKncpOwox NDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LXJ3c2VtLmgiIDIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3JjdV9zeW5jLmgiIDEKMTQ0NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51 eC9yY3Vfc3luYy5oIgoxNDQ3NDogc3RydWN0IHJjdV9zeW5jIHsKMTQ0NzQ6ICBpbnQgZ3Bfc3Rh dGU7CjE0NDc0OiAgaW50IGdwX2NvdW50OwoxNDQ3NDogIHdhaXRfcXVldWVfaGVhZF90IGdwX3dh aXQ7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCBjYl9oZWFkOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgMzIgIi4vaW5jbHVkZS9saW51eC9yY3Vfc3luYy5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBy Y3Vfc3luY19pc19pZGxlKHN0cnVjdCByY3Vfc3luYyAqcnNwKQoxNDQ3NDogewoxNDQ3NDogIGRv IHsgfSB3aGlsZSAoMCkKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKMTQ0NzQ6ICByZXR1cm4gISh7IHVuaW9uIHsgdHlwZW9mKHJzcC0+Z3Bfc3RhdGUp IF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYocnNw LT5ncF9zdGF0ZSksIF9fdS5fX2MsIHNpemVvZihyc3AtPmdwX3N0YXRlKSk7IGVsc2UgX19yZWFk X29uY2Vfc2l6ZV9ub2NoZWNrKCYocnNwLT5ncF9zdGF0ZSksIF9fdS5fX2MsIHNpemVvZihyc3At PmdwX3N0YXRlKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHJjdV9zeW5jX2luaXQoc3RydWN0IHJjdV9zeW5jICop OwoxNDQ3NDogZXh0ZXJuIHZvaWQgcmN1X3N5bmNfZW50ZXJfc3RhcnQoc3RydWN0IHJjdV9zeW5j ICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgcmN1X3N5bmNfZW50ZXIoc3RydWN0IHJjdV9zeW5jICop OwoxNDQ3NDogZXh0ZXJuIHZvaWQgcmN1X3N5bmNfZXhpdChzdHJ1Y3QgcmN1X3N5bmMgKik7CjE0 NDc0OiBleHRlcm4gdm9pZCByY3Vfc3luY19kdG9yKHN0cnVjdCByY3Vfc3luYyAqKTsKMTQ0NzQ6 ICMgMTAgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcndzZW0uaCIgMgoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlIHsKMTQ0NzQ6ICBzdHJ1Y3QgcmN1X3N5 bmMgcnNzOwoxNDQ3NDogIHVuc2lnbmVkIGludCAqcmVhZF9jb3VudDsKMTQ0NzQ6ICBzdHJ1Y3Qg cndfc2VtYXBob3JlIHJ3X3NlbTsKMTQ0NzQ6ICBzdHJ1Y3QgcmN1d2FpdCB3cml0ZXI7CjE0NDc0 OiAgaW50IHJlYWRlcnNfYmxvY2s7CjE0NDc0OiB9OwoxNDQ3NDogIyAzMyAiLi9pbmNsdWRlL2xp bnV4L3BlcmNwdS1yd3NlbS5oIgoxNDQ3NDogZXh0ZXJuIGludCBfX3BlcmNwdV9kb3duX3JlYWQo c3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKiwgaW50KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9f cGVyY3B1X3VwX3JlYWQoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKik7CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgcGVyY3B1X2Rvd25fcmVhZChzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFwaG9yZSAqc2Vt KQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgZG8geyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0 NDc0OiAKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogCjE0NDc0OiAgX19hc21fXyBf X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6ICMgNTEgIi4vaW5jbHVkZS9saW51 eC9wZXJjcHUtcndzZW0uaCIKMTQ0NzQ6ICAoeyBfX3RoaXNfY3B1X3ByZWVtcHRfY2hlY2soImFk ZCIpOyBkbyB7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJigqc2Vt LT5yZWFkX2NvdW50KSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdo aWxlICgwKTsgc3dpdGNoKHNpemVvZigqc2VtLT5yZWFkX2NvdW50KSkgeyBjYXNlIDE6IGRvIHsg dHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFv X0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAt MSkpID8gKGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9f ID0gKDEpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpzZW0tPnJlYWRfY291 bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNiICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9f ID09IC0xKSBhc20gKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJl YWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBj YXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBh c20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQp KSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNl bS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlm IChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNs ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2Ug YXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURf XyA9PSAxKSBhc20gKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJl YWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNxICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRk cSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDog InJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgp OyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDI6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpzZW0t PnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2Nv bnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCkoMSkgOiAwOyBp ZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9pZClwYW9fdG1w X187IH0gc3dpdGNoIChzaXplb2YoKCpzZW0tPnJlYWRfY291bnQpKSkgeyBjYXNlIDE6IGlmIChw YW9fSURfXyA9PSAxKSBhc20gKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpz ZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNiICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNt ICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3Vu dCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9 PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRf Y291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAl MSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJp IiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20g KCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7 IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19U X18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNxICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKDEpKSk7 IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFr OyBjYXNlIDQ6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9f OyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9 PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190 bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2Yo KCpzZW0tPnJlYWRfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJp bmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVs c2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInFpIiAoKHBhb19UX18p KDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpz ZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJy ZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09 IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRf Y291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNl IDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20g KCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7 IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2Jh ZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDg6IGRvIHsgdHlwZWRl ZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18g PSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8g KGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEp OyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpzZW0tPnJlYWRfY291bnQpKSkg eyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNiICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0x KSBhc20gKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291 bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6 IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJk ZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVs c2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9f SURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0t PnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgi YWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp IDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAx KSBhc20gKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291 bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNxICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkcSAlMSwg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJlIiAo KHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0g d2hpbGUgKDApO2JyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7YnJl YWs7IH0gfSB3aGlsZSAoMCk7IH0pOwoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFy Y3Vfc3luY19pc19pZGxlKCZzZW0tPnJzcykpLCAwKSkKMTQ0NzQ6ICAgX19wZXJjcHVfZG93bl9y ZWFkKHNlbSwgZmFsc2UpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgaW50IHBlcmNwdV9kb3duX3JlYWRfdHJ5bG9jayhzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFw aG9yZSAqc2VtKQoxNDQ3NDogewoxNDQ3NDogIGludCByZXQgPSAxOwoxNDQ3NDogCjE0NDc0OiAg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICAoeyBfX3RoaXNfY3B1X3ByZWVtcHRfY2hlY2soImFkZCIpOyBkbyB7IGRv IHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJigqc2VtLT5yZWFkX2NvdW50 KSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsgc3dp dGNoKHNpemVvZigqc2VtLT5yZWFkX2NvdW50KSkgeyBjYXNlIDE6IGRvIHsgdHlwZWRlZiB0eXBl b2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19i dWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCko MSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9p ZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpzZW0tPnJlYWRfY291bnQpKSkgeyBjYXNl IDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20g KCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7 IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChw YW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpz ZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNt ICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3Vu dCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9 PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRf Y291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAl MSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJp IiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20g KCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7 IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJlIiAoKHBhb19U X18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUg KDApO2JyZWFrOyBjYXNlIDI6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQp KSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkg JiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9f VF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNo IChzaXplb2YoKCpzZW0tPnJlYWRfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAx KSBhc20gKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291 bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNiICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInFpIiAo KHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJp bmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVs c2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18p KDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpz ZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJy ZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNxICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09 IC0xKSBhc20gKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRf Y291bnQpKSk7IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZh dWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDQ6IGRv IHsgdHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQg cGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9 PSAtMSkpID8gKGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3Rt cF9fID0gKDEpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpzZW0tPnJlYWRf Y291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNiICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19J RF9fID09IC0xKSBhc20gKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0t PnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFr OyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0x KSBhc20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291 bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6 IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJk ZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVs c2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9f SURfXyA9PSAxKSBhc20gKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0t PnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNxICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgi YWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp IDogInJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6 ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDg6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpz ZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGlu X2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCkoMSkgOiAw OyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9pZClwYW9f dG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpzZW0tPnJlYWRfY291bnQpKSkgeyBjYXNlIDE6IGlm IChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNi ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2Ug YXNtICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURf XyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJl YWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRk dyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDog InJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBh c20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQp KSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBh b19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNx ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2Ug aWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKDEp KSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2Jy ZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7YnJlYWs7IH0gfSB3aGls ZSAoMCk7IH0pOwoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFyY3Vfc3luY19pc19p ZGxlKCZzZW0tPnJzcykpLCAwKSkKMTQ0NzQ6ICAgcmV0ID0gX19wZXJjcHVfZG93bl9yZWFkKHNl bSwgdHJ1ZSk7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaWYgKHJldCkK MTQ0NzQ6ICAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiByZXQ7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X3VwX3JlYWQoc3RydWN0IHBlcmNwdV9y d19zZW1hcGhvcmUgKnNlbSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi IjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1 aWx0aW5fZXhwZWN0KCEhKHJjdV9zeW5jX2lzX2lkbGUoJnNlbS0+cnNzKSksIDEpKQoxNDQ3NDog ICAoeyBfX3RoaXNfY3B1X3ByZWVtcHRfY2hlY2soImFkZCIpOyBkbyB7IGRvIHsgY29uc3Qgdm9p ZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJigqc2VtLT5yZWFkX2NvdW50KSkgKyAwKSkoKHZv aWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsgc3dpdGNoKHNpemVvZigq c2VtLT5yZWFkX2NvdW50KSkgeyBjYXNlIDE6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJl YWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0 YW50X3AoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSAmJiAoKC0odHlwZW9mKCpzZW0t PnJlYWRfY291bnQpKSgxKSkgPT0gMSB8fCAoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEp KSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSA6IDA7IGlm ICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoLSh0eXBlb2YoKnNlbS0+cmVh ZF9jb3VudCkpKDEpKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqc2VtLT5y ZWFkX2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jYiAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChw YW9fSURfXyA9PSAtMSkgYXNtICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq c2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZGIgJTEsICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6ICJxaSIgKChwYW9fVF9fKSgtKHR5cGVv Zigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9 PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRf Y291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAl MSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJp IiAoKHBhb19UX18pKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkpKTsgYnJlYWs7IGNh c2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFz bSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp KTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2Vt LT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3Vu dCkpKDEpKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jcSAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGlm IChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKSgtKHR5 cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJj cHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDI6IGRvIHsgdHlwZWRlZiB0eXBl b2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19i dWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSAmJiAoKC0o dHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgPT0gMSB8fCAoLSh0eXBlb2YoKnNlbS0+cmVh ZF9jb3VudCkpKDEpKSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkp KDEpKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoLSh0eXBl b2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6 ZW9mKCgqc2VtLT5yZWFkX2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNt ICgiaW5jYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZGIgJTEsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6ICJxaSIgKChwYW9f VF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFrOyBjYXNlIDI6IGlm IChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3 ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2Ug YXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkp KTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lE X18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLSh0eXBlb2YoKnNl bS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFvX0lEX18gPT0gMSkg YXNtICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50 KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjcSAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZHEgJTEsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6ICJyZSIgKChw YW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFrOyBkZWZhdWx0 OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDQ6IGRvIHsg dHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFv X0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkp KDEpKSAmJiAoKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgPT0gMSB8fCAoLSh0eXBl b2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnNlbS0+ cmVhZF9jb3VudCkpKDEpKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1w X18gPSAoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKTsgKHZvaWQpcGFvX3RtcF9fOyB9 IHN3aXRjaCAoc2l6ZW9mKCgqc2VtLT5yZWFkX2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lE X18gPT0gMSkgYXNtICgiaW5jYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5y ZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjYiAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFk ZGIgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6 ICJxaSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFr OyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0x KSBhc20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291 bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpzZW0tPnJlYWRf Y291bnQpKSgxKSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImlu Y2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXyko LSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFv X0lEX18gPT0gMSkgYXNtICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2Vt LT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjcSAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAo ImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQp KSA6ICJyZSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBj YXNlIDg6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBj b25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnNlbS0+ cmVhZF9jb3VudCkpKDEpKSAmJiAoKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgPT0g MSB8fCAoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSA9PSAtMSkpID8gKGludCkoLSh0 eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3Rt cF9fOyBwYW9fdG1wX18gPSAoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKTsgKHZvaWQp cGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqc2VtLT5yZWFkX2NvdW50KSkpIHsgY2FzZSAx OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgi ZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBl bHNlIGFzbSAoImFkZGIgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJl YWRfY291bnQpKSA6ICJxaSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSko MSkpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpz ZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9m KCpzZW0tPnJlYWRfY291bnQpKSgxKSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09 IDEpIGFzbSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUx LCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmki ICgocGFvX1RfXykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgY2Fz ZSA4OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNt ICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkp OyBlbHNlIGFzbSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0t PnJlYWRfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50 KSkoMSkpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUg KDApO2JyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7YnJlYWs7IH0g fSB3aGlsZSAoMCk7IH0pOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgX19wZXJjcHVfdXBfcmVhZChz ZW0pOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0 OiAKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBwZXJjcHVfZG93bl93cml0ZShzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFwaG9yZSAqKTsK MTQ0NzQ6IGV4dGVybiB2b2lkIHBlcmNwdV91cF93cml0ZShzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFw aG9yZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBfX3BlcmNwdV9pbml0X3J3c2VtKHN0 cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlICosCjE0NDc0OiAgICAgY29uc3QgY2hhciAqLCBzdHJ1 Y3QgbG9ja19jbGFzc19rZXkgKik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHBlcmNwdV9m cmVlX3J3c2VtKHN0cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlICopOwoxNDQ3NDogIyAxMTggIi4v aW5jbHVkZS9saW51eC9wZXJjcHUtcndzZW0uaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X3J3c2VtX3Jl bGVhc2Uoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKnNlbSwKMTQ0NzQ6ICAgICAgYm9vbCBy ZWFkLCB1bnNpZ25lZCBsb25nIGlwKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7 CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoIXJlYWQpCjE0NDc0OiAgIGF0b21pY19sb25nX3NldCgmc2Vt LT5yd19zZW0ub3duZXIsICgtMkwpKTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHBlcmNwdV9yd3NlbV9hY3F1aXJlKHN0cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlICpzZW0s CjE0NDc0OiAgICAgIGJvb2wgcmVhZCwgdW5zaWduZWQgbG9uZyBpcCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogCjE0NDc0OiAgaWYgKCFyZWFkKQoxNDQ3NDogICBh dG9taWNfbG9uZ19zZXQoJnNlbS0+cndfc2VtLm93bmVyLCAobG9uZylnZXRfY3VycmVudCgpKTsK MTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogIyAzNSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKMTQ0 NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvZGVsYXllZF9jYWxsLmgiIDEKMTQ0NzQ6 ICMgMTAgIi4vaW5jbHVkZS9saW51eC9kZWxheWVkX2NhbGwuaCIKMTQ0NzQ6IHN0cnVjdCBkZWxh eWVkX2NhbGwgewoxNDQ3NDogIHZvaWQgKCpmbikodm9pZCAqKTsKMTQ0NzQ6ICB2b2lkICphcmc7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNl dF9kZWxheWVkX2NhbGwoc3RydWN0IGRlbGF5ZWRfY2FsbCAqY2FsbCwKMTQ0NzQ6ICAgdm9pZCAo KmZuKSh2b2lkICopLCB2b2lkICphcmcpCjE0NDc0OiB7CjE0NDc0OiAgY2FsbC0+Zm4gPSBmbjsK MTQ0NzQ6ICBjYWxsLT5hcmcgPSBhcmc7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZG9f ZGVsYXllZF9jYWxsKHN0cnVjdCBkZWxheWVkX2NhbGwgKmNhbGwpCjE0NDc0OiB7CjE0NDc0OiAg aWYgKGNhbGwtPmZuKQoxNDQ3NDogICBjYWxsLT5mbihjYWxsLT5hcmcpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGNsZWFyX2RlbGF5ZWRfY2FsbChzdHJ1Y3QgZGVsYXllZF9jYWxsICpj YWxsKQoxNDQ3NDogewoxNDQ3NDogIGNhbGwtPmZuID0gKCh2b2lkICopMCk7CjE0NDc0OiB9CjE0 NDc0OiAjIDM3ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUv bGludXgvdXVpZC5oIiAxCjE0NDc0OiAjIDExICIuL2luY2x1ZGUvbGludXgvdXVpZC5oIgoxNDQ3 NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC91dWlkLmgiIDEKMTQ0NzQ6ICMgMjMgIi4vaW5j bHVkZS91YXBpL2xpbnV4L3V1aWQuaCIKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHsKMTQ0NzQ6ICBf X3U4IGJbMTZdOwoxNDQ3NDogfSBndWlkX3Q7CjE0NDc0OiAjIDM1ICIuL2luY2x1ZGUvdWFwaS9s aW51eC91dWlkLmgiCjE0NDc0OiB0eXBlZGVmIGd1aWRfdCB1dWlkX2xlOwoxNDQ3NDogIyAxMiAi Li9pbmNsdWRlL2xpbnV4L3V1aWQuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7CjE0NDc0OiAgX191OCBiWzE2XTsKMTQ0NzQ6IH0gdXVp ZF90OwoxNDQ3NDogIyAzMyAiLi9pbmNsdWRlL2xpbnV4L3V1aWQuaCIKMTQ0NzQ6IGV4dGVybiBj b25zdCBndWlkX3QgZ3VpZF9udWxsOwoxNDQ3NDogZXh0ZXJuIGNvbnN0IHV1aWRfdCB1dWlkX251 bGw7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZ3VpZF9lcXVhbChjb25zdCBndWlkX3QgKnUxLCBjb25z dCBndWlkX3QgKnUyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBtZW1jbXAodTEsIHUyLCBzaXpl b2YoZ3VpZF90KSkgPT0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBndWlkX2NvcHko Z3VpZF90ICpkc3QsIGNvbnN0IGd1aWRfdCAqc3JjKQoxNDQ3NDogewoxNDQ3NDogIG1lbWNweShk c3QsIHNyYywgc2l6ZW9mKGd1aWRfdCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGd1 aWRfaXNfbnVsbChjb25zdCBndWlkX3QgKmd1aWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGd1 aWRfZXF1YWwoZ3VpZCwgJmd1aWRfbnVsbCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg dXVpZF9lcXVhbChjb25zdCB1dWlkX3QgKnUxLCBjb25zdCB1dWlkX3QgKnUyKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBtZW1jbXAodTEsIHUyLCBzaXplb2YodXVpZF90KSkgPT0gMDsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB1dWlkX2NvcHkodXVpZF90ICpkc3QsIGNvbnN0IHV1aWRf dCAqc3JjKQoxNDQ3NDogewoxNDQ3NDogIG1lbWNweShkc3QsIHNyYywgc2l6ZW9mKHV1aWRfdCkp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHV1aWRfaXNfbnVsbChjb25zdCB1dWlkX3Qg KnV1aWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHV1aWRfZXF1YWwodXVpZCwgJnV1aWRfbnVs bCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZ2VuZXJhdGVfcmFuZG9tX3V1aWQodW5z aWduZWQgY2hhciB1dWlkWzE2XSk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGd1aWRfZ2Vu KGd1aWRfdCAqdSk7CjE0NDc0OiBleHRlcm4gdm9pZCB1dWlkX2dlbih1dWlkX3QgKnUpOwoxNDQ3 NDogCjE0NDc0OiBib29sIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSB1 dWlkX2lzX3ZhbGlkKGNvbnN0IGNoYXIgKnV1aWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gY29u c3QgdTggZ3VpZF9pbmRleFsxNl07CjE0NDc0OiBleHRlcm4gY29uc3QgdTggdXVpZF9pbmRleFsx Nl07CjE0NDc0OiAKMTQ0NzQ6IGludCBndWlkX3BhcnNlKGNvbnN0IGNoYXIgKnV1aWQsIGd1aWRf dCAqdSk7CjE0NDc0OiBpbnQgdXVpZF9wYXJzZShjb25zdCBjaGFyICp1dWlkLCB1dWlkX3QgKnUp OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB1dWlk X2xlX2NtcChjb25zdCBndWlkX3QgdTEsIGNvbnN0IGd1aWRfdCB1MikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gbWVtY21wKCZ1MSwgJnUyLCBzaXplb2YoZ3VpZF90KSk7CjE0NDc0OiB9CjE0NDc0 OiAjIDM4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGlu dXgvZXJyc2VxLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1MzIgZXJyc2VxX3Q7CjE0NDc0OiAKMTQ0NzQ6 IGVycnNlcV90IGVycnNlcV9zZXQoZXJyc2VxX3QgKmVzZXEsIGludCBlcnIpOwoxNDQ3NDogZXJy c2VxX3QgZXJyc2VxX3NhbXBsZShlcnJzZXFfdCAqZXNlcSk7CjE0NDc0OiBpbnQgZXJyc2VxX2No ZWNrKGVycnNlcV90ICplc2VxLCBlcnJzZXFfdCBzaW5jZSk7CjE0NDc0OiBpbnQgZXJyc2VxX2No ZWNrX2FuZF9hZHZhbmNlKGVycnNlcV90ICplc2VxLCBlcnJzZXFfdCAqc2luY2UpOwoxNDQ3NDog IyAzOSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4 L2lvcHJpby5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKMTQ0NzQ6ICMgMTAgIi4vaW5jbHVkZS9saW51eC9z Y2hlZC5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zY2hlZC5oIiAxCjE0NDc0 OiAjIDg5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zY2hlZC5oIgoxNDQ3NDogc3RydWN0IGNsb25l X2FyZ3MgewoxNDQ3NDogIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBmbGFnczsK MTQ0NzQ6ICBfX3U2NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkgcGlkZmQ7CjE0NDc0OiAg X191NjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpIGNoaWxkX3RpZDsKMTQ0NzQ6ICBfX3U2 NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkgcGFyZW50X3RpZDsKMTQ0NzQ6ICBfX3U2NCBf X2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkgZXhpdF9zaWduYWw7CjE0NDc0OiAgX191NjQgX19h dHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpIHN0YWNrOwoxNDQ3NDogIF9fdTY0IF9fYXR0cmlidXRl X18oKGFsaWduZWQoOCkpKSBzdGFja19zaXplOwoxNDQ3NDogIF9fdTY0IF9fYXR0cmlidXRlX18o KGFsaWduZWQoOCkpKSB0bHM7CjE0NDc0OiAgX191NjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4 KSkpIHNldF90aWQ7CjE0NDc0OiAgX191NjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpIHNl dF90aWRfc2l6ZTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDExICIuL2luY2x1ZGUvbGludXgvc2NoZWQu aCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9zZW0uaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAj IDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NlbS5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2lwYy5oIiAxCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9yaGFzaHRhYmxlLXR5cGVzLmgiIDEKMTQ0NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51 eC9yaGFzaHRhYmxlLXR5cGVzLmgiCjE0NDc0OiBzdHJ1Y3Qgcmhhc2hfaGVhZCB7CjE0NDc0OiAg c3RydWN0IHJoYXNoX2hlYWQgKm5leHQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg cmhsaXN0X2hlYWQgewoxNDQ3NDogIHN0cnVjdCByaGFzaF9oZWFkIHJoZWFkOwoxNDQ3NDogIHN0 cnVjdCByaGxpc3RfaGVhZCAqbmV4dDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBi dWNrZXRfdGFibGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3Qgcmhhc2h0YWJsZV9jb21wYXJlX2FyZyB7CjE0NDc0OiAgc3RydWN0 IHJoYXNodGFibGUgKmh0OwoxNDQ3NDogIGNvbnN0IHZvaWQgKmtleTsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHR5cGVkZWYgdTMyICgqcmh0X2hhc2hmbl90KShjb25zdCB2b2lkICpkYXRhLCB1 MzIgbGVuLCB1MzIgc2VlZCk7CjE0NDc0OiB0eXBlZGVmIHUzMiAoKnJodF9vYmpfaGFzaGZuX3Qp KGNvbnN0IHZvaWQgKmRhdGEsIHUzMiBsZW4sIHUzMiBzZWVkKTsKMTQ0NzQ6IHR5cGVkZWYgaW50 ICgqcmh0X29ial9jbXBmbl90KShzdHJ1Y3Qgcmhhc2h0YWJsZV9jb21wYXJlX2FyZyAqYXJnLAox NDQ3NDogICAgICAgICAgIGNvbnN0IHZvaWQgKm9iaik7CjE0NDc0OiAjIDU2ICIuL2luY2x1ZGUv bGludXgvcmhhc2h0YWJsZS10eXBlcy5oIgoxNDQ3NDogc3RydWN0IHJoYXNodGFibGVfcGFyYW1z IHsKMTQ0NzQ6ICB1MTYgbmVsZW1faGludDsKMTQ0NzQ6ICB1MTYga2V5X2xlbjsKMTQ0NzQ6ICB1 MTYga2V5X29mZnNldDsKMTQ0NzQ6ICB1MTYgaGVhZF9vZmZzZXQ7CjE0NDc0OiAgdW5zaWduZWQg aW50IG1heF9zaXplOwoxNDQ3NDogIHUxNiBtaW5fc2l6ZTsKMTQ0NzQ6ICBib29sIGF1dG9tYXRp Y19zaHJpbmtpbmc7CjE0NDc0OiAgcmh0X2hhc2hmbl90IGhhc2hmbjsKMTQ0NzQ6ICByaHRfb2Jq X2hhc2hmbl90IG9ial9oYXNoZm47CjE0NDc0OiAgcmh0X29ial9jbXBmbl90IG9ial9jbXBmbjsK MTQ0NzQ6IH07CjE0NDc0OiAjIDgxICIuL2luY2x1ZGUvbGludXgvcmhhc2h0YWJsZS10eXBlcy5o IgoxNDQ3NDogc3RydWN0IHJoYXNodGFibGUgewoxNDQ3NDogIHN0cnVjdCBidWNrZXRfdGFibGUg KnRibDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQga2V5X2xlbjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg bWF4X2VsZW1zOwoxNDQ3NDogIHN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyBwOwoxNDQ3NDogIGJv b2wgcmhsaXN0OwoxNDQ3NDogIHN0cnVjdCB3b3JrX3N0cnVjdCBydW5fd29yazsKMTQ0NzQ6ICBz dHJ1Y3QgbXV0ZXggbXV0ZXg7CjE0NDc0OiAgc3BpbmxvY2tfdCBsb2NrOwoxNDQ3NDogIGF0b21p Y190IG5lbGVtczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IHJobHRhYmxlIHsKMTQ0NzQ6ICBzdHJ1Y3Qgcmhhc2h0YWJsZSBo dDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3Qgcmhhc2h0YWJsZV93YWxrZXIgewoxNDQ3NDogIHN0cnVjdCBsaXN0 X2hlYWQgbGlzdDsKMTQ0NzQ6ICBzdHJ1Y3QgYnVja2V0X3RhYmxlICp0Ymw7CjE0NDc0OiB9Owox NDQ3NDogIyAxMjAgIi4vaW5jbHVkZS9saW51eC9yaGFzaHRhYmxlLXR5cGVzLmgiCjE0NDc0OiBz dHJ1Y3Qgcmhhc2h0YWJsZV9pdGVyIHsKMTQ0NzQ6ICBzdHJ1Y3Qgcmhhc2h0YWJsZSAqaHQ7CjE0 NDc0OiAgc3RydWN0IHJoYXNoX2hlYWQgKnA7CjE0NDc0OiAgc3RydWN0IHJobGlzdF9oZWFkICps aXN0OwoxNDQ3NDogIHN0cnVjdCByaGFzaHRhYmxlX3dhbGtlciB3YWxrZXI7CjE0NDc0OiAgdW5z aWduZWQgaW50IHNsb3Q7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNraXA7CjE0NDc0OiAgYm9vbCBl bmRfb2ZfdGFibGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBpbnQgcmhhc2h0YWJsZV9pbml0 KHN0cnVjdCByaGFzaHRhYmxlICpodCwKMTQ0NzQ6ICAgICAgIGNvbnN0IHN0cnVjdCByaGFzaHRh YmxlX3BhcmFtcyAqcGFyYW1zKTsKMTQ0NzQ6IGludCByaGx0YWJsZV9pbml0KHN0cnVjdCByaGx0 YWJsZSAqaGx0LAoxNDQ3NDogICAgIGNvbnN0IHN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyAqcGFy YW1zKTsKMTQ0NzQ6ICMgOCAiLi9pbmNsdWRlL2xpbnV4L2lwYy5oIiAyCjE0NDc0OiAjIDEgIi4v aW5jbHVkZS91YXBpL2xpbnV4L2lwYy5oIiAxCjE0NDc0OiAjIDEwICIuL2luY2x1ZGUvdWFwaS9s aW51eC9pcGMuaCIKMTQ0NzQ6IHN0cnVjdCBpcGNfcGVybQoxNDQ3NDogewoxNDQ3NDogIF9fa2Vy bmVsX2tleV90IGtleTsKMTQ0NzQ6ICBfX2tlcm5lbF91aWRfdCB1aWQ7CjE0NDc0OiAgX19rZXJu ZWxfZ2lkX3QgZ2lkOwoxNDQ3NDogIF9fa2VybmVsX3VpZF90IGN1aWQ7CjE0NDc0OiAgX19rZXJu ZWxfZ2lkX3QgY2dpZDsKMTQ0NzQ6ICBfX2tlcm5lbF9tb2RlX3QgbW9kZTsKMTQ0NzQ6ICB1bnNp Z25lZCBzaG9ydCBzZXE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS9pcGNidWYuaCIgMQoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9pcGNidWYuaCIgMQoxNDQ3NDogIyAyMiAiLi9p bmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvaXBjYnVmLmgiCjE0NDc0OiBzdHJ1Y3QgaXBjNjRfcGVy bSB7CjE0NDc0OiAgX19rZXJuZWxfa2V5X3Qga2V5OwoxNDQ3NDogIF9fa2VybmVsX3VpZDMyX3Qg dWlkOwoxNDQ3NDogIF9fa2VybmVsX2dpZDMyX3QgZ2lkOwoxNDQ3NDogIF9fa2VybmVsX3VpZDMy X3QgY3VpZDsKMTQ0NzQ6ICBfX2tlcm5lbF9naWQzMl90IGNnaWQ7CjE0NDc0OiAgX19rZXJuZWxf bW9kZV90IG1vZGU7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIF9fcGFkMVs0IC0gc2l6 ZW9mKF9fa2VybmVsX21vZGVfdCldOwoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IHNlcTsKMTQ0NzQ6 ICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CjE0NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBfX3VudXNl ZDE7CjE0NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBfX3VudXNlZDI7CjE0NDc0OiB9OwoxNDQ3NDog IyAyICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2lwY2J1Zi5oIiAyCjE0 NDc0OiAjIDIzICIuL2luY2x1ZGUvdWFwaS9saW51eC9pcGMuaCIgMgoxNDQ3NDogIyA1OCAiLi9p bmNsdWRlL3VhcGkvbGludXgvaXBjLmgiCjE0NDc0OiBzdHJ1Y3QgaXBjX2tsdWRnZSB7CjE0NDc0 OiAgc3RydWN0IG1zZ2J1ZiAqbXNncDsKMTQ0NzQ6ICBsb25nIG1zZ3R5cDsKMTQ0NzQ6IH07CjE0 NDc0OiAjIDkgIi4vaW5jbHVkZS9saW51eC9pcGMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGtlcm5faXBjX3Blcm0gewoxNDQ3NDogIHNwaW5sb2NrX3QgbG9jazsK MTQ0NzQ6ICBib29sIGRlbGV0ZWQ7CjE0NDc0OiAgaW50IGlkOwoxNDQ3NDogIGtleV90IGtleTsK MTQ0NzQ6ICBrdWlkX3QgdWlkOwoxNDQ3NDogIGtnaWRfdCBnaWQ7CjE0NDc0OiAga3VpZF90IGN1 aWQ7CjE0NDc0OiAga2dpZF90IGNnaWQ7CjE0NDc0OiAgdW1vZGVfdCBtb2RlOwoxNDQ3NDogIHVu c2lnbmVkIGxvbmcgc2VxOwoxNDQ3NDogIHZvaWQgKnNlY3VyaXR5OwoxNDQ3NDogCjE0NDc0OiAg c3RydWN0IHJoYXNoX2hlYWQga2h0bm9kZTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBjYWxsYmFj a19oZWFkIHJjdTsKMTQ0NzQ6ICByZWZjb3VudF90IHJlZmNvdW50OwoxNDQ3NDogfSBfX2F0dHJp YnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikpKSkpIF9fYXR0cmlidXRlX18oKF9fZGVzaWdu YXRlZF9pbml0X18pKTsKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL3VhcGkvbGludXgvc2VtLmgiIDIK MTQ0NzQ6ICMgMjUgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NlbS5oIgoxNDQ3NDogc3RydWN0IHNl bWlkX2RzIHsKMTQ0NzQ6ICBzdHJ1Y3QgaXBjX3Blcm0gc2VtX3Blcm07CjE0NDc0OiAgX19rZXJu ZWxfb2xkX3RpbWVfdCBzZW1fb3RpbWU7CjE0NDc0OiAgX19rZXJuZWxfb2xkX3RpbWVfdCBzZW1f Y3RpbWU7CjE0NDc0OiAgc3RydWN0IHNlbSAqc2VtX2Jhc2U7CjE0NDc0OiAgc3RydWN0IHNlbV9x dWV1ZSAqc2VtX3BlbmRpbmc7CjE0NDc0OiAgc3RydWN0IHNlbV9xdWV1ZSAqKnNlbV9wZW5kaW5n X2xhc3Q7CjE0NDc0OiAgc3RydWN0IHNlbV91bmRvICp1bmRvOwoxNDQ3NDogIHVuc2lnbmVkIHNo b3J0IHNlbV9uc2VtczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2Fy Y2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2VtYnVmLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkv YXNtL2lwY2J1Zi5oIiAxCjE0NDc0OiAjIDYgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9z ZW1idWYuaCIgMgoxNDQ3NDogIyAxOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3NlbWJ1 Zi5oIgoxNDQ3NDogc3RydWN0IHNlbWlkNjRfZHMgewoxNDQ3NDogIHN0cnVjdCBpcGM2NF9wZXJt IHNlbV9wZXJtOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIF9fa2VybmVsX2xvbmdfdCBzZW1fb3RpbWU7CjE0NDc0OiAgX19rZXJuZWxfdWxv bmdfdCBfX3VudXNlZDE7CjE0NDc0OiAgX19rZXJuZWxfbG9uZ190IHNlbV9jdGltZTsKMTQ0NzQ6 ICBfX2tlcm5lbF91bG9uZ190IF9fdW51c2VkMjsKMTQ0NzQ6IAoxNDQ3NDogIF9fa2VybmVsX3Vs b25nX3Qgc2VtX25zZW1zOwoxNDQ3NDogIF9fa2VybmVsX3Vsb25nX3QgX191bnVzZWQzOwoxNDQ3 NDogIF9fa2VybmVsX3Vsb25nX3QgX191bnVzZWQ0OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzggIi4v aW5jbHVkZS91YXBpL2xpbnV4L3NlbS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IHNlbWJ1ZiB7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgc2VtX251bTsKMTQ0NzQ6ICBzaG9ydCBz ZW1fb3A7CjE0NDc0OiAgc2hvcnQgc2VtX2ZsZzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogdW5pb24gc2VtdW4gewoxNDQ3NDogIGludCB2YWw7CjE0NDc0OiAgc3RydWN0IHNlbWlk X2RzICpidWY7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgKmFycmF5OwoxNDQ3NDogIHN0cnVjdCBz ZW1pbmZvICpfX2J1ZjsKMTQ0NzQ6ICB2b2lkICpfX3BhZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBzZW1pbmZvIHsKMTQ0NzQ6ICBpbnQgc2VtbWFwOwoxNDQ3NDogIGludCBzZW1t bmk7CjE0NDc0OiAgaW50IHNlbW1uczsKMTQ0NzQ6ICBpbnQgc2VtbW51OwoxNDQ3NDogIGludCBz ZW1tc2w7CjE0NDc0OiAgaW50IHNlbW9wbTsKMTQ0NzQ6ICBpbnQgc2VtdW1lOwoxNDQ3NDogIGlu dCBzZW11c3o7CjE0NDc0OiAgaW50IHNlbXZteDsKMTQ0NzQ6ICBpbnQgc2VtYWVtOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL2xpbnV4L3NlbS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCB0YXNrX3N0cnVjdDsKMTQ0NzQ6IHN0cnVjdCBzZW1fdW5kb19saXN0OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHN5c3Zfc2VtIHsKMTQ0NzQ6ICBzdHJ1Y3Qgc2Vt X3VuZG9fbGlzdCAqdW5kb19saXN0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGlu dCBjb3B5X3NlbXVuZG8odW5zaWduZWQgbG9uZyBjbG9uZV9mbGFncywgc3RydWN0IHRhc2tfc3Ry dWN0ICp0c2spOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZXhpdF9zZW0oc3RydWN0IHRhc2tfc3RydWN0 ICp0c2spOwoxNDQ3NDogIyAxNiAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKMTQ0NzQ6ICMg MSAiLi9pbmNsdWRlL2xpbnV4L3NobS5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NobS5o IiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAjIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2h1Z2V0bGJfZW5jb2RlLmgiIDEKMTQ0 NzQ6ICMgOCAiLi9pbmNsdWRlL3VhcGkvbGludXgvc2htLmgiIDIKMTQ0NzQ6ICMgMjggIi4vaW5j bHVkZS91YXBpL2xpbnV4L3NobS5oIgoxNDQ3NDogc3RydWN0IHNobWlkX2RzIHsKMTQ0NzQ6ICBz dHJ1Y3QgaXBjX3Blcm0gc2htX3Blcm07CjE0NDc0OiAgaW50IHNobV9zZWdzejsKMTQ0NzQ6ICBf X2tlcm5lbF9vbGRfdGltZV90IHNobV9hdGltZTsKMTQ0NzQ6ICBfX2tlcm5lbF9vbGRfdGltZV90 IHNobV9kdGltZTsKMTQ0NzQ6ICBfX2tlcm5lbF9vbGRfdGltZV90IHNobV9jdGltZTsKMTQ0NzQ6 ICBfX2tlcm5lbF9pcGNfcGlkX3Qgc2htX2NwaWQ7CjE0NDc0OiAgX19rZXJuZWxfaXBjX3BpZF90 IHNobV9scGlkOwoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IHNobV9uYXR0Y2g7CjE0NDc0OiAgdW5z aWduZWQgc2hvcnQgc2htX3VudXNlZDsKMTQ0NzQ6ICB2b2lkICpzaG1fdW51c2VkMjsKMTQ0NzQ6 ICB2b2lkICpzaG1fdW51c2VkMzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAx ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2htYnVmLmgiIDEKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1n ZW5lcmljL3NobWJ1Zi5oIiAxCjE0NDc0OiAjIDI1ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJp Yy9zaG1idWYuaCIKMTQ0NzQ6IHN0cnVjdCBzaG1pZDY0X2RzIHsKMTQ0NzQ6ICBzdHJ1Y3QgaXBj NjRfcGVybSBzaG1fcGVybTsKMTQ0NzQ6ICBzaXplX3Qgc2htX3NlZ3N6OwoxNDQ3NDogCjE0NDc0 OiAgbG9uZyBzaG1fYXRpbWU7CjE0NDc0OiAgbG9uZyBzaG1fZHRpbWU7CjE0NDc0OiAgbG9uZyBz aG1fY3RpbWU7CjE0NDc0OiAjIDQwICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9zaG1idWYu aCIKMTQ0NzQ6ICBfX2tlcm5lbF9waWRfdCBzaG1fY3BpZDsKMTQ0NzQ6ICBfX2tlcm5lbF9waWRf dCBzaG1fbHBpZDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNobV9uYXR0Y2g7CjE0NDc0OiAgdW5z aWduZWQgbG9uZyBfX3VudXNlZDQ7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDU7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2htaW5mbzY0IHsKMTQ0NzQ6ICB1bnNpZ25l ZCBsb25nIHNobW1heDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNobW1pbjsKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIHNobW1uaTsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNobXNlZzsKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIHNobWFsbDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMTsKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIF9fdW51 c2VkMzsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIF9fdW51c2VkNDsKMTQ0NzQ6IH07CjE0NDc0OiAj IDcgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaG1idWYuaCIgMgoxNDQ3NDogIyA0NCAi Li9pbmNsdWRlL3VhcGkvbGludXgvc2htLmgiIDIKMTQ0NzQ6ICMgOTMgIi4vaW5jbHVkZS91YXBp L2xpbnV4L3NobS5oIgoxNDQ3NDogc3RydWN0IHNobWluZm8gewoxNDQ3NDogIGludCBzaG1tYXg7 CjE0NDc0OiAgaW50IHNobW1pbjsKMTQ0NzQ6ICBpbnQgc2htbW5pOwoxNDQ3NDogIGludCBzaG1z ZWc7CjE0NDc0OiAgaW50IHNobWFsbDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBz aG1faW5mbyB7CjE0NDc0OiAgaW50IHVzZWRfaWRzOwoxNDQ3NDogIF9fa2VybmVsX3Vsb25nX3Qg c2htX3RvdDsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IHNobV9yc3M7CjE0NDc0OiAgX19rZXJu ZWxfdWxvbmdfdCBzaG1fc3dwOwoxNDQ3NDogIF9fa2VybmVsX3Vsb25nX3Qgc3dhcF9hdHRlbXB0 czsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IHN3YXBfc3VjY2Vzc2VzOwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgOCAiLi9pbmNsdWRlL2xpbnV4L3NobS5oIiAyCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vc2htcGFyYW0uaCIgMQoxNDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgvc2ht LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZpbGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IHN5c3Zfc2htIHsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIHNobV9jbGlzdDsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGxvbmcgZG9fc2htYXQoaW50IHNobWlkLCBjaGFyICpzaG1h ZGRyLCBpbnQgc2htZmxnLCB1bnNpZ25lZCBsb25nICphZGRyLAoxNDQ3NDogICAgICAgIHVuc2ln bmVkIGxvbmcgc2htbGJhKTsKMTQ0NzQ6IGJvb2wgaXNfZmlsZV9zaG1faHVnZXBhZ2VzKHN0cnVj dCBmaWxlICpmaWxlKTsKMTQ0NzQ6IHZvaWQgZXhpdF9zaG0oc3RydWN0IHRhc2tfc3RydWN0ICp0 YXNrKTsKMTQ0NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCjE0NDc0OiAjIDEg Ii4vaW5jbHVkZS9saW51eC9rY292LmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9rY292LmgiIDEKMTQ0NzQ6ICMgMTEg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L2tjb3YuaCIKMTQ0NzQ6IHN0cnVjdCBrY292X3JlbW90ZV9h cmcgewoxNDQ3NDogIF9fdTMyIHRyYWNlX21vZGU7CjE0NDc0OiAgX191MzIgYXJlYV9zaXplOwox NDQ3NDogIF9fdTMyIG51bV9oYW5kbGVzOwoxNDQ3NDogIF9fdTY0IF9fYXR0cmlidXRlX18oKGFs aWduZWQoOCkpKSBjb21tb25faGFuZGxlOwoxNDQ3NDogIF9fdTY0IF9fYXR0cmlidXRlX18oKGFs aWduZWQoOCkpKSBoYW5kbGVzWzBdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjYgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L2tjb3YuaCIKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIyAzNSAiLi9pbmNsdWRlL3Vh cGkvbGludXgva2Nvdi5oIgoxNDQ3NDogIEtDT1ZfVFJBQ0VfUEMgPSAwLAoxNDQ3NDogCjE0NDc0 OiAgS0NPVl9UUkFDRV9DTVAgPSAxLAoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTYgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L2tjb3YuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fdTY0IGtjb3ZfcmVtb3RlX2hhbmRsZShfX3U2NCBz dWJzeXMsIF9fdTY0IGluc3QpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKHN1YnN5cyAmIH4oMHhmZnVs bCA8PCA1NikgfHwgaW5zdCAmIH4oMHhmZmZmZmZmZnVsbCkpCjE0NDc0OiAgIHJldHVybiAwOwox NDQ3NDogIHJldHVybiBzdWJzeXMgfCBpbnN0OwoxNDQ3NDogfQoxNDQ3NDogIyA2ICIuL2luY2x1 ZGUvbGludXgva2Nvdi5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0YXNrX3N0cnVjdDsKMTQ0 NzQ6ICMgNTcgIi4vaW5jbHVkZS9saW51eC9rY292LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGtjb3ZfdGFza19p bml0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2Nvdl90YXNrX2V4aXQo c3RydWN0IHRhc2tfc3RydWN0ICp0KSB7fQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrY292X3ByZXBhcmVfc3dpdGNo KHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2Nvdl9maW5pc2hfc3dpdGNo KHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2Nvdl9yZW1vdGVfc3RhcnQo dTY0IGhhbmRsZSkge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2Nvdl9yZW1vdGVfc3RvcCh2b2lkKSB7fQoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdTY0IGtjb3ZfY29tbW9uX2hhbmRsZSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAw OwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrY292X3JlbW90ZV9zdGFydF9jb21tb24odTY0IGlkKSB7 fQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBrY292X3JlbW90ZV9zdGFydF91c2IodTY0IGlkKSB7fQoxNDQ3NDogIyAx OCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvbGludXgvcGxpc3QuaCIgMQoxNDQ3NDogIyA3OSAiLi9pbmNsdWRlL2xpbnV4L3BsaXN0Lmgi CjE0NDc0OiBzdHJ1Y3QgcGxpc3RfaGVhZCB7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBub2Rl X2xpc3Q7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGxpc3Rfbm9kZSB7CjE0NDc0 OiAgaW50IHByaW87CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBwcmlvX2xpc3Q7CjE0NDc0OiAg c3RydWN0IGxpc3RfaGVhZCBub2RlX2xpc3Q7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMjEgIi4vaW5j bHVkZS9saW51eC9wbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogcGxpc3RfaGVhZF9pbml0KHN0 cnVjdCBwbGlzdF9oZWFkICpoZWFkKQoxNDQ3NDogewoxNDQ3NDogIElOSVRfTElTVF9IRUFEKCZo ZWFkLT5ub2RlX2xpc3QpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwbGlzdF9ub2RlX2luaXQoc3RydWN0IHBsaXN0 X25vZGUgKm5vZGUsIGludCBwcmlvKQoxNDQ3NDogewoxNDQ3NDogIG5vZGUtPnByaW8gPSBwcmlv OwoxNDQ3NDogIElOSVRfTElTVF9IRUFEKCZub2RlLT5wcmlvX2xpc3QpOwoxNDQ3NDogIElOSVRf TElTVF9IRUFEKCZub2RlLT5ub2RlX2xpc3QpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBwbGlzdF9hZGQoc3RydWN0IHBsaXN0X25vZGUgKm5vZGUsIHN0cnVjdCBwbGlzdF9o ZWFkICpoZWFkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHBsaXN0X2RlbChzdHJ1Y3QgcGxpc3Rfbm9k ZSAqbm9kZSwgc3RydWN0IHBsaXN0X2hlYWQgKmhlYWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g dm9pZCBwbGlzdF9yZXF1ZXVlKHN0cnVjdCBwbGlzdF9ub2RlICpub2RlLCBzdHJ1Y3QgcGxpc3Rf aGVhZCAqaGVhZCk7CjE0NDc0OiAjIDIxMCAiLi9pbmNsdWRlL2xpbnV4L3BsaXN0LmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgcGxpc3RfaGVhZF9lbXB0eShjb25zdCBzdHJ1Y3QgcGxpc3RfaGVhZCAqaGVhZCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbGlzdF9lbXB0eSgmaGVhZC0+bm9kZV9saXN0KTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGxp c3Rfbm9kZV9lbXB0eShjb25zdCBzdHJ1Y3QgcGxpc3Rfbm9kZSAqbm9kZSkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gbGlzdF9lbXB0eSgmbm9kZS0+bm9kZV9saXN0KTsKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMjgwICIuL2luY2x1ZGUvbGludXgvcGxpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBwbGlzdF9ub2Rl ICpwbGlzdF9maXJzdChjb25zdCBzdHJ1Y3QgcGxpc3RfaGVhZCAqaGVhZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gKHsgdm9pZCAqX19tcHRyID0gKHZvaWQgKikoaGVhZC0+bm9kZV9saXN0Lm5l eHQpOyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzI4Mih2b2lkKSBfX2F0 dHJpYnV0ZV9fKChfX2Vycm9yX18oInBvaW50ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb250YWluZXJf b2YoKSIpKSk7IGlmICghKCEoIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCoo aGVhZC0+bm9kZV9saXN0Lm5leHQpKSwgdHlwZW9mKCgoc3RydWN0IHBsaXN0X25vZGUgKikwKS0+ bm9kZV9saXN0KSkgJiYgIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCooaGVh ZC0+bm9kZV9saXN0Lm5leHQpKSwgdHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2Vy dF8yODIoKTsgfSB3aGlsZSAoMCk7ICgoc3RydWN0IHBsaXN0X25vZGUgKikoX19tcHRyIC0gX19i dWlsdGluX29mZnNldG9mKHN0cnVjdCBwbGlzdF9ub2RlLCBub2RlX2xpc3QpKSk7IH0pCjE0NDc0 OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1 Y3QgcGxpc3Rfbm9kZSAqcGxpc3RfbGFzdChjb25zdCBzdHJ1Y3QgcGxpc3RfaGVhZCAqaGVhZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdm9pZCAqX19tcHRyID0gKHZvaWQgKikoaGVhZC0+ bm9kZV9saXN0LnByZXYpOyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzI5 NCh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oInBvaW50ZXIgdHlwZSBtaXNtYXRjaCBp biBjb250YWluZXJfb2YoKSIpKSk7IGlmICghKCEoIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxl X3AodHlwZW9mKCooaGVhZC0+bm9kZV9saXN0LnByZXYpKSwgdHlwZW9mKCgoc3RydWN0IHBsaXN0 X25vZGUgKikwKS0+bm9kZV9saXN0KSkgJiYgIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3Ao dHlwZW9mKCooaGVhZC0+bm9kZV9saXN0LnByZXYpKSwgdHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBp bGV0aW1lX2Fzc2VydF8yOTQoKTsgfSB3aGlsZSAoMCk7ICgoc3RydWN0IHBsaXN0X25vZGUgKiko X19tcHRyIC0gX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBwbGlzdF9ub2RlLCBub2RlX2xpc3Qp KSk7IH0pCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDog fQoxNDQ3NDogIyAyMCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKMTQ0NzQ6ICMgMSAiLi9p bmNsdWRlL2xpbnV4L2hydGltZXIuaCIgMQoxNDQ3NDogIyAxNSAiLi9pbmNsdWRlL2xpbnV4L2hy dGltZXIuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2hydGltZXJfZGVmcy5oIiAxCjE0 NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgvaHJ0aW1lci5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvdGltZXJx dWV1ZS5oIiAxCjE0NDc0OiAjIDkgIi4vaW5jbHVkZS9saW51eC90aW1lcnF1ZXVlLmgiCjE0NDc0 OiBzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlIHsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9kZSBub2RlOwox NDQ3NDogIGt0aW1lX3QgZXhwaXJlczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0 aW1lcnF1ZXVlX2hlYWQgewoxNDQ3NDogIHN0cnVjdCByYl9yb290X2NhY2hlZCByYl9yb290Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCB0aW1lcnF1ZXVlX2Fk ZChzdHJ1Y3QgdGltZXJxdWV1ZV9oZWFkICpoZWFkLAoxNDQ3NDogICAgICAgc3RydWN0IHRpbWVy cXVldWVfbm9kZSAqbm9kZSk7CjE0NDc0OiBleHRlcm4gYm9vbCB0aW1lcnF1ZXVlX2RlbChzdHJ1 Y3QgdGltZXJxdWV1ZV9oZWFkICpoZWFkLAoxNDQ3NDogICAgICAgc3RydWN0IHRpbWVycXVldWVf bm9kZSAqbm9kZSk7CjE0NDc0OiBleHRlcm4gc3RydWN0IHRpbWVycXVldWVfbm9kZSAqdGltZXJx dWV1ZV9pdGVyYXRlX25leHQoCjE0NDc0OiAgICAgICBzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICpu b2RlKTsKMTQ0NzQ6ICMgMzMgIi4vaW5jbHVkZS9saW51eC90aW1lcnF1ZXVlLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKQox NDQ3NDogc3RydWN0IHRpbWVycXVldWVfbm9kZSAqdGltZXJxdWV1ZV9nZXRuZXh0KHN0cnVjdCB0 aW1lcnF1ZXVlX2hlYWQgKmhlYWQpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IHJiX25vZGUgKmxl ZnRtb3N0ID0gKCZoZWFkLT5yYl9yb290KS0+cmJfbGVmdG1vc3Q7CjE0NDc0OiAKMTQ0NzQ6ICBy ZXR1cm4gKHsgdm9pZCAqX19tcHRyID0gKHZvaWQgKikobGVmdG1vc3QpOyBkbyB7IGV4dGVybiB2 b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzM4KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3Jf XygicG9pbnRlciB0eXBlIG1pc21hdGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISgh X19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKihsZWZ0bW9zdCkpLCB0eXBlb2Yo KChzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICopMCktPm5vZGUpKSAmJiAhX19idWlsdGluX3R5cGVz X2NvbXBhdGlibGVfcCh0eXBlb2YoKihsZWZ0bW9zdCkpLCB0eXBlb2Yodm9pZCkpKSkpIF9fY29t cGlsZXRpbWVfYXNzZXJ0XzM4KCk7IH0gd2hpbGUgKDApOyAoKHN0cnVjdCB0aW1lcnF1ZXVlX25v ZGUgKikoX19tcHRyIC0gX19idWlsdGluX29mZnNldG9mKHN0cnVjdCB0aW1lcnF1ZXVlX25vZGUs IG5vZGUpKSk7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRpbWVycXVldWVfaW5p dChzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICpub2RlKQoxNDQ3NDogewoxNDQ3NDogICgoJm5vZGUt Pm5vZGUpLT5fX3JiX3BhcmVudF9jb2xvciA9ICh1bnNpZ25lZCBsb25nKSgmbm9kZS0+bm9kZSkp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRpbWVycXVldWVfbm9kZV9xdWV1ZWQoc3Ry dWN0IHRpbWVycXVldWVfbm9kZSAqbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gISgoJm5v ZGUtPm5vZGUpLT5fX3JiX3BhcmVudF9jb2xvciA9PSAodW5zaWduZWQgbG9uZykoJm5vZGUtPm5v ZGUpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0aW1lcnF1ZXVlX25vZGVfZXhwaXJl cyhzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICpub2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBu b2RlLT5leHBpcmVzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRpbWVycXVldWVfaW5p dF9oZWFkKHN0cnVjdCB0aW1lcnF1ZXVlX2hlYWQgKmhlYWQpCjE0NDc0OiB7CjE0NDc0OiAgaGVh ZC0+cmJfcm9vdCA9IChzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQpIHsgeygodm9pZCAqKTApLCB9LCAo KHZvaWQgKikwKSB9OwoxNDQ3NDogfQoxNDQ3NDogIyAyMiAiLi9pbmNsdWRlL2xpbnV4L2hydGlt ZXIuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaHJ0aW1lcl9jbG9ja19iYXNlOwoxNDQ3NDog c3RydWN0IGhydGltZXJfY3B1X2Jhc2U7CjE0NDc0OiAjIDM4ICIuL2luY2x1ZGUvbGludXgvaHJ0 aW1lci5oIgoxNDQ3NDogZW51bSBocnRpbWVyX21vZGUgewoxNDQ3NDogIEhSVElNRVJfTU9ERV9B QlMgPSAweDAwLAoxNDQ3NDogIEhSVElNRVJfTU9ERV9SRUwgPSAweDAxLAoxNDQ3NDogIEhSVElN RVJfTU9ERV9QSU5ORUQgPSAweDAyLAoxNDQ3NDogIEhSVElNRVJfTU9ERV9TT0ZUID0gMHgwNCwK MTQ0NzQ6ICBIUlRJTUVSX01PREVfSEFSRCA9IDB4MDgsCjE0NDc0OiAKMTQ0NzQ6ICBIUlRJTUVS X01PREVfQUJTX1BJTk5FRCA9IEhSVElNRVJfTU9ERV9BQlMgfCBIUlRJTUVSX01PREVfUElOTkVE LAoxNDQ3NDogIEhSVElNRVJfTU9ERV9SRUxfUElOTkVEID0gSFJUSU1FUl9NT0RFX1JFTCB8IEhS VElNRVJfTU9ERV9QSU5ORUQsCjE0NDc0OiAKMTQ0NzQ6ICBIUlRJTUVSX01PREVfQUJTX1NPRlQg PSBIUlRJTUVSX01PREVfQUJTIHwgSFJUSU1FUl9NT0RFX1NPRlQsCjE0NDc0OiAgSFJUSU1FUl9N T0RFX1JFTF9TT0ZUID0gSFJUSU1FUl9NT0RFX1JFTCB8IEhSVElNRVJfTU9ERV9TT0ZULAoxNDQ3 NDogCjE0NDc0OiAgSFJUSU1FUl9NT0RFX0FCU19QSU5ORURfU09GVCA9IEhSVElNRVJfTU9ERV9B QlNfUElOTkVEIHwgSFJUSU1FUl9NT0RFX1NPRlQsCjE0NDc0OiAgSFJUSU1FUl9NT0RFX1JFTF9Q SU5ORURfU09GVCA9IEhSVElNRVJfTU9ERV9SRUxfUElOTkVEIHwgSFJUSU1FUl9NT0RFX1NPRlQs CjE0NDc0OiAKMTQ0NzQ6ICBIUlRJTUVSX01PREVfQUJTX0hBUkQgPSBIUlRJTUVSX01PREVfQUJT IHwgSFJUSU1FUl9NT0RFX0hBUkQsCjE0NDc0OiAgSFJUSU1FUl9NT0RFX1JFTF9IQVJEID0gSFJU SU1FUl9NT0RFX1JFTCB8IEhSVElNRVJfTU9ERV9IQVJELAoxNDQ3NDogCjE0NDc0OiAgSFJUSU1F Ul9NT0RFX0FCU19QSU5ORURfSEFSRCA9IEhSVElNRVJfTU9ERV9BQlNfUElOTkVEIHwgSFJUSU1F Ul9NT0RFX0hBUkQsCjE0NDc0OiAgSFJUSU1FUl9NT0RFX1JFTF9QSU5ORURfSEFSRCA9IEhSVElN RVJfTU9ERV9SRUxfUElOTkVEIHwgSFJUSU1FUl9NT0RFX0hBUkQsCjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGhydGltZXJfcmVzdGFydCB7CjE0 NDc0OiAgSFJUSU1FUl9OT1JFU1RBUlQsCjE0NDc0OiAgSFJUSU1FUl9SRVNUQVJULAoxNDQ3NDog fTsKMTQ0NzQ6ICMgMTE3ICIuL2luY2x1ZGUvbGludXgvaHJ0aW1lci5oIgoxNDQ3NDogc3RydWN0 IGhydGltZXIgewoxNDQ3NDogIHN0cnVjdCB0aW1lcnF1ZXVlX25vZGUgbm9kZTsKMTQ0NzQ6ICBr dGltZV90IF9zb2Z0ZXhwaXJlczsKMTQ0NzQ6ICBlbnVtIGhydGltZXJfcmVzdGFydCAoKmZ1bmN0 aW9uKShzdHJ1Y3QgaHJ0aW1lciAqKTsKMTQ0NzQ6ICBzdHJ1Y3QgaHJ0aW1lcl9jbG9ja19iYXNl ICpiYXNlOwoxNDQ3NDogIHU4IHN0YXRlOwoxNDQ3NDogIHU4IGlzX3JlbDsKMTQ0NzQ6ICB1OCBp c19zb2Z0OwoxNDQ3NDogIHU4IGlzX2hhcmQ7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMzUgIi4vaW5j bHVkZS9saW51eC9ocnRpbWVyLmgiCjE0NDc0OiBzdHJ1Y3QgaHJ0aW1lcl9zbGVlcGVyIHsKMTQ0 NzQ6ICBzdHJ1Y3QgaHJ0aW1lciB0aW1lcjsKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2s7CjE0NDc0OiB9OwoxNDQ3NDogIyAxNTggIi4vaW5jbHVkZS9saW51eC9ocnRpbWVyLmgiCjE0 NDc0OiBzdHJ1Y3QgaHJ0aW1lcl9jbG9ja19iYXNlIHsKMTQ0NzQ6ICBzdHJ1Y3QgaHJ0aW1lcl9j cHVfYmFzZSAqY3B1X2Jhc2U7CjE0NDc0OiAgdW5zaWduZWQgaW50IGluZGV4OwoxNDQ3NDogIGNs b2NraWRfdCBjbG9ja2lkOwoxNDQ3NDogIHNlcWNvdW50X3Qgc2VxOwoxNDQ3NDogIHN0cnVjdCBo cnRpbWVyICpydW5uaW5nOwoxNDQ3NDogIHN0cnVjdCB0aW1lcnF1ZXVlX2hlYWQgYWN0aXZlOwox NDQ3NDogIGt0aW1lX3QgKCpnZXRfdGltZSkodm9pZCk7CjE0NDc0OiAga3RpbWVfdCBvZmZzZXQ7 CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICg2KSkpKSk7CjE0NDc0 OiAKMTQ0NzQ6IGVudW0gaHJ0aW1lcl9iYXNlX3R5cGUgewoxNDQ3NDogIEhSVElNRVJfQkFTRV9N T05PVE9OSUMsCjE0NDc0OiAgSFJUSU1FUl9CQVNFX1JFQUxUSU1FLAoxNDQ3NDogIEhSVElNRVJf QkFTRV9CT09UVElNRSwKMTQ0NzQ6ICBIUlRJTUVSX0JBU0VfVEFJLAoxNDQ3NDogIEhSVElNRVJf QkFTRV9NT05PVE9OSUNfU09GVCwKMTQ0NzQ6ICBIUlRJTUVSX0JBU0VfUkVBTFRJTUVfU09GVCwK MTQ0NzQ6ICBIUlRJTUVSX0JBU0VfQk9PVFRJTUVfU09GVCwKMTQ0NzQ6ICBIUlRJTUVSX0JBU0Vf VEFJX1NPRlQsCjE0NDc0OiAgSFJUSU1FUl9NQVhfQ0xPQ0tfQkFTRVMsCjE0NDc0OiB9OwoxNDQ3 NDogIyAyMTMgIi4vaW5jbHVkZS9saW51eC9ocnRpbWVyLmgiCjE0NDc0OiBzdHJ1Y3QgaHJ0aW1l cl9jcHVfYmFzZSB7CjE0NDc0OiAgcmF3X3NwaW5sb2NrX3QgbG9jazsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgY3B1OwoxNDQ3NDogIHVuc2lnbmVkIGludCBhY3RpdmVfYmFzZXM7CjE0NDc0OiAgdW5z aWduZWQgaW50IGNsb2NrX3dhc19zZXRfc2VxOwoxNDQ3NDogIHVuc2lnbmVkIGludCBocmVzX2Fj dGl2ZSA6IDEsCjE0NDc0OiAgICAgIGluX2hydGlycSA6IDEsCjE0NDc0OiAgICAgIGhhbmdfZGV0 ZWN0ZWQgOiAxLAoxNDQ3NDogICAgICBzb2Z0aXJxX2FjdGl2YXRlZCA6IDE7CjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgbnJfZXZlbnRzOwoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IG5yX3Jl dHJpZXM7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgbnJfaGFuZ3M7CjE0NDc0OiAgdW5zaWduZWQg aW50IG1heF9oYW5nX3RpbWU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIGt0aW1lX3QgZXhwaXJlc19uZXh0OwoxNDQ3NDogIHN0cnVjdCBocnRpbWVyICpu ZXh0X3RpbWVyOwoxNDQ3NDogIGt0aW1lX3Qgc29mdGlycV9leHBpcmVzX25leHQ7CjE0NDc0OiAg c3RydWN0IGhydGltZXIgKnNvZnRpcnFfbmV4dF90aW1lcjsKMTQ0NzQ6ICBzdHJ1Y3QgaHJ0aW1l cl9jbG9ja19iYXNlIGNsb2NrX2Jhc2VbSFJUSU1FUl9NQVhfQ0xPQ0tfQkFTRVNdOwoxNDQ3NDog fSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikpKSkpOwoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGhydGltZXJfc2V0X2V4cGlyZXMoc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90 IHRpbWUpCjE0NDc0OiB7CjE0NDc0OiAgdGltZXItPm5vZGUuZXhwaXJlcyA9IHRpbWU7CjE0NDc0 OiAgdGltZXItPl9zb2Z0ZXhwaXJlcyA9IHRpbWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgaHJ0aW1lcl9zZXRfZXhwaXJlc19yYW5nZShzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsIGt0aW1l X3QgdGltZSwga3RpbWVfdCBkZWx0YSkKMTQ0NzQ6IHsKMTQ0NzQ6ICB0aW1lci0+X3NvZnRleHBp cmVzID0gdGltZTsKMTQ0NzQ6ICB0aW1lci0+bm9kZS5leHBpcmVzID0ga3RpbWVfYWRkX3NhZmUo dGltZSwgZGVsdGEpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhydGltZXJfc2V0X2V4 cGlyZXNfcmFuZ2VfbnMoc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90IHRpbWUsIHU2NCBk ZWx0YSkKMTQ0NzQ6IHsKMTQ0NzQ6ICB0aW1lci0+X3NvZnRleHBpcmVzID0gdGltZTsKMTQ0NzQ6 ICB0aW1lci0+bm9kZS5leHBpcmVzID0ga3RpbWVfYWRkX3NhZmUodGltZSwgbnNfdG9fa3RpbWUo ZGVsdGEpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBocnRpbWVyX3NldF9leHBpcmVz X3R2NjQoc3RydWN0IGhydGltZXIgKnRpbWVyLCBzNjQgdHY2NCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB0 aW1lci0+bm9kZS5leHBpcmVzID0gdHY2NDsKMTQ0NzQ6ICB0aW1lci0+X3NvZnRleHBpcmVzID0g dHY2NDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBocnRpbWVyX2FkZF9leHBpcmVzKHN0 cnVjdCBocnRpbWVyICp0aW1lciwga3RpbWVfdCB0aW1lKQoxNDQ3NDogewoxNDQ3NDogIHRpbWVy LT5ub2RlLmV4cGlyZXMgPSBrdGltZV9hZGRfc2FmZSh0aW1lci0+bm9kZS5leHBpcmVzLCB0aW1l KTsKMTQ0NzQ6ICB0aW1lci0+X3NvZnRleHBpcmVzID0ga3RpbWVfYWRkX3NhZmUodGltZXItPl9z b2Z0ZXhwaXJlcywgdGltZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaHJ0aW1lcl9h ZGRfZXhwaXJlc19ucyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsIHU2NCBucykKMTQ0NzQ6IHsKMTQ0 NzQ6ICB0aW1lci0+bm9kZS5leHBpcmVzID0gKCh0aW1lci0+bm9kZS5leHBpcmVzKSArIChucykp OwoxNDQ3NDogIHRpbWVyLT5fc29mdGV4cGlyZXMgPSAoKHRpbWVyLT5fc29mdGV4cGlyZXMpICsg KG5zKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3QgaHJ0aW1lcl9nZXRfZXhwaXJl cyhjb25zdCBzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHRp bWVyLT5ub2RlLmV4cGlyZXM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3QgaHJ0aW1l cl9nZXRfc29mdGV4cGlyZXMoY29uc3Qgc3RydWN0IGhydGltZXIgKnRpbWVyKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiB0aW1lci0+X3NvZnRleHBpcmVzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBzNjQgaHJ0aW1lcl9nZXRfZXhwaXJlc190djY0KGNvbnN0IHN0cnVjdCBocnRpbWVyICp0aW1l cikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGltZXItPm5vZGUuZXhwaXJlczsKMTQ0NzQ6IH0K MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHM2NCBocnRpbWVyX2dldF9zb2Z0ZXhwaXJlc190djY0KGNvbnN0IHN0cnVjdCBocnRp bWVyICp0aW1lcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGltZXItPl9zb2Z0ZXhwaXJlczsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IGhydGltZXJfZ2V0X2V4cGlyZXNfbnMoY29uc3Qg c3RydWN0IGhydGltZXIgKnRpbWVyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrdGltZV90b19u cyh0aW1lci0+bm9kZS5leHBpcmVzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBo cnRpbWVyX2V4cGlyZXNfcmVtYWluaW5nKGNvbnN0IHN0cnVjdCBocnRpbWVyICp0aW1lcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCh0aW1lci0+bm9kZS5leHBpcmVzKSAtICh0aW1lci0+YmFz ZS0+Z2V0X3RpbWUoKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGhydGltZXJf Y2JfZ2V0X3RpbWUoc3RydWN0IGhydGltZXIgKnRpbWVyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biB0aW1lci0+YmFzZS0+Z2V0X3RpbWUoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGhy dGltZXJfaXNfaHJlc19hY3RpdmUoc3RydWN0IGhydGltZXIgKnRpbWVyKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiAxID8KMTQ0NzQ6ICAgdGltZXItPmJhc2UtPmNwdV9iYXNlLT5ocmVzX2FjdGl2 ZSA6IDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsb2NrX2V2ZW50 X2RldmljZTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgaHJ0aW1lcl9pbnRlcnJ1cHQoc3Ry dWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZGV2KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQg Y2xvY2tfd2FzX3NldF9kZWxheWVkKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdW5zaWdu ZWQgaW50IGhydGltZXJfcmVzb2x1dGlvbjsKMTQ0NzQ6ICMgMzMyICIuL2luY2x1ZGUvbGludXgv aHJ0aW1lci5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdAoxNDQ3NDogX19ocnRpbWVyX2V4cGlyZXNfcmVtYWlu aW5nX2FkanVzdGVkKGNvbnN0IHN0cnVjdCBocnRpbWVyICp0aW1lciwga3RpbWVfdCBub3cpCjE0 NDc0OiB7CjE0NDc0OiAga3RpbWVfdCByZW0gPSAoKHRpbWVyLT5ub2RlLmV4cGlyZXMpIC0gKG5v dykpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBpZiAo MCAmJiB0aW1lci0+aXNfcmVsKQoxNDQ3NDogICByZW0gLT0gaHJ0aW1lcl9yZXNvbHV0aW9uOwox NDQ3NDogIHJldHVybiByZW07CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3QKMTQ0NzQ6 IGhydGltZXJfZXhwaXJlc19yZW1haW5pbmdfYWRqdXN0ZWQoY29uc3Qgc3RydWN0IGhydGltZXIg KnRpbWVyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2hydGltZXJfZXhwaXJlc19yZW1haW5p bmdfYWRqdXN0ZWQodGltZXIsCjE0NDc0OiAgICAgICAgICAgdGltZXItPmJhc2UtPmdldF90aW1l KCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBjbG9ja193YXNfc2V0KHZv aWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCB0aW1lcmZkX2Nsb2NrX3dhc19zZXQodm9p ZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBocnRpbWVyc19y ZXN1bWUodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9u KCIuZGF0YS4ucGVyY3B1IiAiIikpKSBfX3R5cGVvZl9fKHN0cnVjdCB0aWNrX2RldmljZSkgdGlj a19jcHVfZGV2aWNlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGhydGltZXJfY2FuY2VsX3dhaXRfcnVubmluZyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCjE0NDc0 OiB7CjE0NDc0OiAgY3B1X3JlbGF4KCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgaHJ0aW1lcl9pbml0KHN0cnVjdCBo cnRpbWVyICp0aW1lciwgY2xvY2tpZF90IHdoaWNoX2Nsb2NrLAoxNDQ3NDogICAgIGVudW0gaHJ0 aW1lcl9tb2RlIG1vZGUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgaHJ0aW1lcl9pbml0X3NsZWVwZXIo c3RydWN0IGhydGltZXJfc2xlZXBlciAqc2wsIGNsb2NraWRfdCBjbG9ja19pZCwKMTQ0NzQ6ICAg ICAgZW51bSBocnRpbWVyX21vZGUgbW9kZSk7CjE0NDc0OiAjIDM4OSAiLi9pbmNsdWRlL2xpbnV4 L2hydGltZXIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaHJ0aW1lcl9pbml0X29uX3N0YWNrKHN0cnVjdCBocnRp bWVyICp0aW1lciwKMTQ0NzQ6ICAgICAgIGNsb2NraWRfdCB3aGljaF9jbG9jaywKMTQ0NzQ6ICAg ICAgIGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpCjE0NDc0OiB7CjE0NDc0OiAgaHJ0aW1lcl9pbml0 KHRpbWVyLCB3aGljaF9jbG9jaywgbW9kZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg aHJ0aW1lcl9pbml0X3NsZWVwZXJfb25fc3RhY2soc3RydWN0IGhydGltZXJfc2xlZXBlciAqc2ws CjE0NDc0OiAgICAgICAgY2xvY2tpZF90IGNsb2NrX2lkLAoxNDQ3NDogICAgICAgIGVudW0gaHJ0 aW1lcl9tb2RlIG1vZGUpCjE0NDc0OiB7CjE0NDc0OiAgaHJ0aW1lcl9pbml0X3NsZWVwZXIoc2ws IGNsb2NrX2lkLCBtb2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXN0cm95X2hy dGltZXJfb25fc3RhY2soc3RydWN0IGhydGltZXIgKnRpbWVyKSB7IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGhydGltZXJfc3RhcnRfcmFuZ2VfbnMoc3RydWN0 IGhydGltZXIgKnRpbWVyLCBrdGltZV90IHRpbSwKMTQ0NzQ6ICAgICAgICB1NjQgcmFuZ2VfbnMs IGNvbnN0IGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpOwoxNDQ3NDogIyA0MTggIi4vaW5jbHVkZS9s aW51eC9ocnRpbWVyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhydGltZXJfc3RhcnQoc3RydWN0IGhydGltZXIg KnRpbWVyLCBrdGltZV90IHRpbSwKMTQ0NzQ6ICAgICAgY29uc3QgZW51bSBocnRpbWVyX21vZGUg bW9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBocnRpbWVyX3N0YXJ0X3JhbmdlX25zKHRpbWVyLCB0aW0s IDAsIG1vZGUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGhydGltZXJfY2Fu Y2VsKHN0cnVjdCBocnRpbWVyICp0aW1lcik7CjE0NDc0OiBleHRlcm4gaW50IGhydGltZXJfdHJ5 X3RvX2NhbmNlbChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhy dGltZXJfc3RhcnRfZXhwaXJlcyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsCjE0NDc0OiAgICAgICBl bnVtIGhydGltZXJfbW9kZSBtb2RlKQoxNDQ3NDogewoxNDQ3NDogIHU2NCBkZWx0YTsKMTQ0NzQ6 ICBrdGltZV90IHNvZnQsIGhhcmQ7CjE0NDc0OiAgc29mdCA9IGhydGltZXJfZ2V0X3NvZnRleHBp cmVzKHRpbWVyKTsKMTQ0NzQ6ICBoYXJkID0gaHJ0aW1lcl9nZXRfZXhwaXJlcyh0aW1lcik7CjE0 NDc0OiAgZGVsdGEgPSBrdGltZV90b19ucygoKGhhcmQpIC0gKHNvZnQpKSk7CjE0NDc0OiAgaHJ0 aW1lcl9zdGFydF9yYW5nZV9ucyh0aW1lciwgc29mdCwgZGVsdGEsIG1vZGUpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiB2b2lkIGhydGltZXJfc2xlZXBlcl9zdGFydF9leHBpcmVzKHN0cnVjdCBo cnRpbWVyX3NsZWVwZXIgKnNsLAoxNDQ3NDogICAgICAgIGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUp OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhydGltZXJfcmVzdGFydChzdHJ1Y3QgaHJ0aW1lciAqdGlt ZXIpCjE0NDc0OiB7CjE0NDc0OiAgaHJ0aW1lcl9zdGFydF9leHBpcmVzKHRpbWVyLCBIUlRJTUVS X01PREVfQUJTKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4ga3RpbWVf dCBfX2hydGltZXJfZ2V0X3JlbWFpbmluZyhjb25zdCBzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsIGJv b2wgYWRqdXN0KTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBocnRpbWVyX2dldF9yZW1haW5pbmco Y29uc3Qgc3RydWN0IGhydGltZXIgKnRpbWVyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2hy dGltZXJfZ2V0X3JlbWFpbmluZyh0aW1lciwgZmFsc2UpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gdTY0IGhydGltZXJfZ2V0X25leHRfZXZlbnQodm9pZCk7CjE0NDc0OiBleHRlcm4g dTY0IGhydGltZXJfbmV4dF9ldmVudF93aXRob3V0KGNvbnN0IHN0cnVjdCBocnRpbWVyICpleGNs dWRlKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wgaHJ0aW1lcl9hY3RpdmUoY29uc3Qgc3Ry dWN0IGhydGltZXIgKnRpbWVyKTsKMTQ0NzQ6ICMgNDY3ICIuL2luY2x1ZGUvbGludXgvaHJ0aW1l ci5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBocnRpbWVyX2lzX3F1ZXVlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIp CjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gISEoKHsgdW5pb24geyB0eXBlb2YodGlt ZXItPnN0YXRlKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vf c2l6ZSgmKHRpbWVyLT5zdGF0ZSksIF9fdS5fX2MsIHNpemVvZih0aW1lci0+c3RhdGUpKTsgZWxz ZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJih0aW1lci0+c3RhdGUpLCBfX3UuX19jLCBzaXpl b2YodGltZXItPnN0YXRlKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSkgJiAweDAx KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgaHJ0aW1lcl9jYWxsYmFja19ydW5uaW5nKHN0cnVjdCBocnRpbWVyICp0aW1lcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGltZXItPmJhc2UtPnJ1bm5pbmcgPT0gdGltZXI7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHU2NAoxNDQ3NDogaHJ0aW1lcl9mb3J3 YXJkKHN0cnVjdCBocnRpbWVyICp0aW1lciwga3RpbWVfdCBub3csIGt0aW1lX3QgaW50ZXJ2YWwp OwoxNDQ3NDogIyA1MDIgIi4vaW5jbHVkZS9saW51eC9ocnRpbWVyLmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQgaHJ0 aW1lcl9mb3J3YXJkX25vdyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsCjE0NDc0OiAgICAgICAgICAg a3RpbWVfdCBpbnRlcnZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gaHJ0aW1lcl9mb3J3YXJk KHRpbWVyLCB0aW1lci0+YmFzZS0+Z2V0X3RpbWUoKSwgaW50ZXJ2YWwpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBuYW5vc2xlZXBfY29weW91dChz dHJ1Y3QgcmVzdGFydF9ibG9jayAqLCBzdHJ1Y3QgdGltZXNwZWM2NCAqKTsKMTQ0NzQ6IGV4dGVy biBsb25nIGhydGltZXJfbmFub3NsZWVwKGt0aW1lX3QgcnF0cCwgY29uc3QgZW51bSBocnRpbWVy X21vZGUgbW9kZSwKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IGNsb2NraWRfdCBjbG9ja2lkKTsKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBzY2hlZHVsZV9ocnRpbWVvdXRfcmFuZ2Uoa3RpbWVfdCAq ZXhwaXJlcywgdTY0IGRlbHRhLAoxNDQ3NDogICAgICAgICBjb25zdCBlbnVtIGhydGltZXJfbW9k ZSBtb2RlKTsKMTQ0NzQ6IGV4dGVybiBpbnQgc2NoZWR1bGVfaHJ0aW1lb3V0X3JhbmdlX2Nsb2Nr KGt0aW1lX3QgKmV4cGlyZXMsCjE0NDc0OiAgICAgICAgdTY0IGRlbHRhLAoxNDQ3NDogICAgICAg IGNvbnN0IGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUsCjE0NDc0OiAgICAgICAgY2xvY2tpZF90IGNs b2NrX2lkKTsKMTQ0NzQ6IGV4dGVybiBpbnQgc2NoZWR1bGVfaHJ0aW1lb3V0KGt0aW1lX3QgKmV4 cGlyZXMsIGNvbnN0IGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiB2b2lkIGhydGltZXJfcnVuX3F1ZXVlcyh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4 dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBocnRpbWVyc19pbml0KHZvaWQpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHN5c3JxX3RpbWVyX2xpc3Rfc2hvdyh2b2lk KTsKMTQ0NzQ6IAoxNDQ3NDogaW50IGhydGltZXJzX3ByZXBhcmVfY3B1KHVuc2lnbmVkIGludCBj cHUpOwoxNDQ3NDogCjE0NDc0OiBpbnQgaHJ0aW1lcnNfZGVhZF9jcHUodW5zaWduZWQgaW50IGNw dSk7CjE0NDc0OiAjIDIxICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoxNDQ3NDogIyAxICIu L2luY2x1ZGUvbGludXgvc2VjY29tcC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc2VjY29tcC5oIiAxCjE0NDc0OiAj IDU5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zZWNjb21wLmgiCjE0NDc0OiBzdHJ1Y3Qgc2VjY29t cF9kYXRhIHsKMTQ0NzQ6ICBpbnQgbnI7CjE0NDc0OiAgX191MzIgYXJjaDsKMTQ0NzQ6ICBfX3U2 NCBpbnN0cnVjdGlvbl9wb2ludGVyOwoxNDQ3NDogIF9fdTY0IGFyZ3NbNl07CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2VjY29tcF9ub3RpZl9zaXplcyB7CjE0NDc0OiAgX191MTYg c2VjY29tcF9ub3RpZjsKMTQ0NzQ6ICBfX3UxNiBzZWNjb21wX25vdGlmX3Jlc3A7CjE0NDc0OiAg X191MTYgc2VjY29tcF9kYXRhOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNlY2Nv bXBfbm90aWYgewoxNDQ3NDogIF9fdTY0IGlkOwoxNDQ3NDogIF9fdTMyIHBpZDsKMTQ0NzQ6ICBf X3UzMiBmbGFnczsKMTQ0NzQ6ICBzdHJ1Y3Qgc2VjY29tcF9kYXRhIGRhdGE7CjE0NDc0OiB9Owox NDQ3NDogIyAxMDggIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NlY2NvbXAuaCIKMTQ0NzQ6IHN0cnVj dCBzZWNjb21wX25vdGlmX3Jlc3AgewoxNDQ3NDogIF9fdTY0IGlkOwoxNDQ3NDogIF9fczY0IHZh bDsKMTQ0NzQ6ICBfX3MzMiBlcnJvcjsKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6IH07CjE0 NDc0OiAjIDYgIi4vaW5jbHVkZS9saW51eC9zZWNjb21wLmgiIDIKMTQ0NzQ6ICMgMTUgIi4vaW5j bHVkZS9saW51eC9zZWNjb21wLmgiCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v c2VjY29tcC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91bmlzdGQuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS91bmlzdGQu aCIgMQoxNDQ3NDogIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VuaXN0ZC5oIiAyCjE0NDc0 OiAjIDE4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VuaXN0ZC5oIgoxNDQ3NDogIyAxICIuL2Fy Y2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3VuaXN0ZF82NC5oIiAxCjE0NDc0OiAj IDE5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VuaXN0ZC5oIiAyCjE0NDc0OiAjIDEgIi4vYXJj aC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvYXNtL3VuaXN0ZF82NF94MzIuaCIgMQoxNDQ3NDogIyAy MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91bmlzdGQuaCIgMgoxNDQ3NDogIyA2ICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3NlY2NvbXAuaCIgMgoxNDQ3NDogIyAxOSAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9zZWNjb21wLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWNj b21wLmgiIDEKMTQ0NzQ6ICMgMTEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWNjb21wLmgiCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3VuaXN0ZC5oIiAxCjE0NDc0OiAjIDEyICIu L2luY2x1ZGUvYXNtLWdlbmVyaWMvc2VjY29tcC5oIiAyCjE0NDc0OiAjIDIwICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3NlY2NvbXAuaCIgMgoxNDQ3NDogIyAxNiAiLi9pbmNsdWRlL2xpbnV4L3Nl Y2NvbXAuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2VjY29tcF9maWx0ZXI7CjE0NDc0OiAj IDI5ICIuL2luY2x1ZGUvbGludXgvc2VjY29tcC5oIgoxNDQ3NDogc3RydWN0IHNlY2NvbXAgewox NDQ3NDogIGludCBtb2RlOwoxNDQ3NDogIHN0cnVjdCBzZWNjb21wX2ZpbHRlciAqZmlsdGVyOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fc2VjdXJlX2NvbXB1 dGluZyhjb25zdCBzdHJ1Y3Qgc2VjY29tcF9kYXRhICpzZCk7CjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc2VjdXJlX2Nv bXB1dGluZyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHRl c3RfdGlfdGhyZWFkX2ZsYWcoKChzdHJ1Y3QgdGhyZWFkX2luZm8gKilnZXRfY3VycmVudCgpKSwg OCkpLCAwKSkKMTQ0NzQ6ICAgcmV0dXJuIF9fc2VjdXJlX2NvbXB1dGluZygoKHZvaWQgKikwKSk7 CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBsb25nIHByY3RsX2dldF9zZWNjb21wKHZvaWQpOwoxNDQ3NDogZXh0 ZXJuIGxvbmcgcHJjdGxfc2V0X3NlY2NvbXAodW5zaWduZWQgbG9uZywgdm9pZCAqKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IHNlY2NvbXBfbW9kZShzdHJ1Y3Qgc2VjY29tcCAqcykKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gcy0+bW9kZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgODQgIi4vaW5jbHVkZS9saW51 eC9zZWNjb21wLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBwdXRfc2VjY29tcF9maWx0ZXIoc3RydWN0 IHRhc2tfc3RydWN0ICp0c2spOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZ2V0X3NlY2NvbXBfZmlsdGVy KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKMTQ0NzQ6ICMgOTggIi4vaW5jbHVkZS9saW51eC9z ZWNjb21wLmgiCjE0NDc0OiBleHRlcm4gbG9uZyBzZWNjb21wX2dldF9maWx0ZXIoc3RydWN0IHRh c2tfc3RydWN0ICp0YXNrLAoxNDQ3NDogICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmlsdGVyX29m Ziwgdm9pZCAqZGF0YSk7CjE0NDc0OiBleHRlcm4gbG9uZyBzZWNjb21wX2dldF9tZXRhZGF0YShz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssCjE0NDc0OiAgICAgIHVuc2lnbmVkIGxvbmcgZmlsdGVy X29mZiwgdm9pZCAqZGF0YSk7CjE0NDc0OiAjIDIyICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIg MgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvcmVz b3VyY2UuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4v aW5jbHVkZS91YXBpL2xpbnV4L3Jlc291cmNlLmgiIDEKMTQ0NzQ6ICMgMjQgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L3Jlc291cmNlLmgiCjE0NDc0OiBzdHJ1Y3QgcnVzYWdlIHsKMTQ0NzQ6ICBzdHJ1 Y3QgX19rZXJuZWxfb2xkX3RpbWV2YWwgcnVfdXRpbWU7CjE0NDc0OiAgc3RydWN0IF9fa2VybmVs X29sZF90aW1ldmFsIHJ1X3N0aW1lOwoxNDQ3NDogIF9fa2VybmVsX2xvbmdfdCBydV9tYXhyc3M7 CjE0NDc0OiAgX19rZXJuZWxfbG9uZ190IHJ1X2l4cnNzOwoxNDQ3NDogIF9fa2VybmVsX2xvbmdf dCBydV9pZHJzczsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3QgcnVfaXNyc3M7CjE0NDc0OiAgX19r ZXJuZWxfbG9uZ190IHJ1X21pbmZsdDsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3QgcnVfbWFqZmx0 OwoxNDQ3NDogIF9fa2VybmVsX2xvbmdfdCBydV9uc3dhcDsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25n X3QgcnVfaW5ibG9jazsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3QgcnVfb3VibG9jazsKMTQ0NzQ6 ICBfX2tlcm5lbF9sb25nX3QgcnVfbXNnc25kOwoxNDQ3NDogIF9fa2VybmVsX2xvbmdfdCBydV9t c2dyY3Y7CjE0NDc0OiAgX19rZXJuZWxfbG9uZ190IHJ1X25zaWduYWxzOwoxNDQ3NDogIF9fa2Vy bmVsX2xvbmdfdCBydV9udmNzdzsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3QgcnVfbml2Y3N3Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJsaW1pdCB7CjE0NDc0OiAgX19rZXJuZWxf dWxvbmdfdCBybGltX2N1cjsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IHJsaW1fbWF4OwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBybGltaXQ2NCB7CjE0 NDc0OiAgX191NjQgcmxpbV9jdXI7CjE0NDc0OiAgX191NjQgcmxpbV9tYXg7CjE0NDc0OiB9Owox NDQ3NDogIyA3OCAiLi9pbmNsdWRlL3VhcGkvbGludXgvcmVzb3VyY2UuaCIKMTQ0NzQ6ICMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS9yZXNvdXJjZS5oIiAxCjE0NDc0 OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9yZXNvdXJjZS5oIiAxCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMv cmVzb3VyY2UuaCIgMQoxNDQ3NDogIyA2ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcmVzb3VyY2Uu aCIgMgoxNDQ3NDogIyAyICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3Jl c291cmNlLmgiIDIKMTQ0NzQ6ICMgNzkgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3Jlc291cmNlLmgi IDIKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgdGFza19zdHJ1Y3Q7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZ2V0cnVz YWdlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IHdobywgc3RydWN0IHJ1c2FnZSAqcnUpOwox NDQ3NDogaW50IGRvX3BybGltaXQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGlu dCByZXNvdXJjZSwKMTQ0NzQ6ICAgc3RydWN0IHJsaW1pdCAqbmV3X3JsaW0sIHN0cnVjdCBybGlt aXQgKm9sZF9ybGltKTsKMTQ0NzQ6ICMgMjYgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9sYXRlbmN5dG9wLmgiIDEKMTQ0NzQ6ICMgMTQgIi4v aW5jbHVkZS9saW51eC9sYXRlbmN5dG9wLmgiCjE0NDc0OiBzdHJ1Y3QgdGFza19zdHJ1Y3Q7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgbGF0ZW5jeV9yZWNvcmQgewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgYmFja3RyYWNlWzEyXTsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY291bnQ7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB0aW1lOwox NDQ3NDogIHVuc2lnbmVkIGxvbmcgbWF4OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbGF0ZW5jeXRvcF9lbmFibGVkOwoxNDQ3NDogdm9pZCBfX2Fj Y291bnRfc2NoZWR1bGVyX2xhdGVuY3koc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBpbnQgdXNl Y3MsIGludCBpbnRlcik7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhY2NvdW50X3NjaGVkdWxlcl9sYXRl bmN5KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgaW50IHVzZWNzLCBpbnQgaW50ZXIpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEobGF0ZW5jeXRvcF9lbmFibGVkKSwg MCkpCjE0NDc0OiAgIF9fYWNjb3VudF9zY2hlZHVsZXJfbGF0ZW5jeSh0YXNrLCB1c2VjcywgaW50 ZXIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB2b2lkIGNsZWFyX3Rza19sYXRlbmN5X3RyYWNp bmcoc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBzeXNj dGxfbGF0ZW5jeXRvcChzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLAoxNDQ3NDog ICAgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqcHBvcyk7CjE0NDc0OiAjIDI3 ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgv c2NoZWQvcHJpby5oIiAxCjE0NDc0OiAjIDQ4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQvcHJpby5o IgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgbG9uZyBuaWNlX3RvX3JsaW1pdChsb25nIG5pY2UpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuICgxOSAtIG5pY2UgKyAxKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgbG9uZyBybGltaXRfdG9fbmljZShsb25nIHByaW8pCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICgxOSAtIHByaW8gKyAxKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjggIi4vaW5j bHVkZS9saW51eC9zY2hlZC5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zY2hlZC90 eXBlcy5oIiAxCjE0NDc0OiAjIDE3ICIuL2luY2x1ZGUvbGludXgvc2NoZWQvdHlwZXMuaCIKMTQ0 NzQ6IHN0cnVjdCB0YXNrX2NwdXRpbWUgewoxNDQ3NDogIHU2NCBzdGltZTsKMTQ0NzQ6ICB1NjQg dXRpbWU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIHN1bV9leGVjX3J1bnRpbWU7CjE0NDc0 OiB9OwoxNDQ3NDogIyAyOSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3NpZ25hbF90eXBlcy5oIiAxCjE0NDc0OiAjIDEwICIuL2luY2x1ZGUv bGludXgvc2lnbmFsX3R5cGVzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3Np Z25hbC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9zaWduYWwuaCIgMQoxNDQ3NDogIyAyMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9zaWduYWwuaCIKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBvbGRfc2ln c2V0X3Q7CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHsKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIHNpZ1soNjQgLyA2NCldOwoxNDQ3NDogfSBzaWdzZXRfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgc2lnc2V0X3QgY29t cGF0X3NpZ3NldF90OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgiIDEKMTQ0NzQ6ICMgMTEgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9zaWduYWwuaCIKMTQ0NzQ6IHN0cnVjdCBzaWdpbmZvOwoxNDQ3NDog IyA5NCAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3NpZ25hbC5oIgoxNDQ3NDogIyAxICIu L2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9zaWduYWwtZGVmcy5oIiAxCjE0NDc0OiAjIDE4ICIu L2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9zaWduYWwtZGVmcy5oIgoxNDQ3NDogdHlwZWRlZiB2 b2lkIF9fc2lnbmFsZm5fdChpbnQpOwoxNDQ3NDogdHlwZWRlZiBfX3NpZ25hbGZuX3QgKl9fc2ln aGFuZGxlcl90OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHZvaWQgX19yZXN0b3JlZm5fdCh2b2lk KTsKMTQ0NzQ6IHR5cGVkZWYgX19yZXN0b3JlZm5fdCAqX19zaWdyZXN0b3JlX3Q7CjE0NDc0OiAj IDk1ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgiIDIKMTQ0NzQ6ICMgMTI4 ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgiCjE0NDc0OiB0eXBlZGVmIHN0 cnVjdCBzaWdhbHRzdGFjayB7CjE0NDc0OiAgdm9pZCAqc3Nfc3A7CjE0NDc0OiAgaW50IHNzX2Zs YWdzOwoxNDQ3NDogIHNpemVfdCBzc19zaXplOwoxNDQ3NDogfSBzdGFja190OwoxNDQ3NDogIyAz NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zaWduYWwuaCIgMgoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBkb19zaWduYWwoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwoxNDQ3NDogIyA2ICIuL2lu Y2x1ZGUvdWFwaS9saW51eC9zaWduYWwuaCIgMgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1 ZGUvdWFwaS9hc20vc2lnaW5mby5oIiAxCjE0NDc0OiAjIDEzICIuL2FyY2gveDg2L2luY2x1ZGUv dWFwaS9hc20vc2lnaW5mby5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJp Yy9zaWdpbmZvLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1bmlvbiBzaWd2YWwgewoxNDQ3NDogIGludCBz aXZhbF9pbnQ7CjE0NDc0OiAgdm9pZCAqc2l2YWxfcHRyOwoxNDQ3NDogfSBzaWd2YWxfdDsKMTQ0 NzQ6ICMgMzIgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3NpZ2luZm8uaCIKMTQ0NzQ6IHVu aW9uIF9fc2lmaWVsZHMgewoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgX19rZXJu ZWxfcGlkX3QgX3BpZDsKMTQ0NzQ6ICAgX19rZXJuZWxfdWlkMzJfdCBfdWlkOwoxNDQ3NDogIH0g X2tpbGw7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIF9fa2VybmVs X3RpbWVyX3QgX3RpZDsKMTQ0NzQ6ICAgaW50IF9vdmVycnVuOwoxNDQ3NDogICBzaWd2YWxfdCBf c2lndmFsOwoxNDQ3NDogICBpbnQgX3N5c19wcml2YXRlOwoxNDQ3NDogIH0gX3RpbWVyOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICBfX2tlcm5lbF9waWRfdCBfcGlk OwoxNDQ3NDogICBfX2tlcm5lbF91aWQzMl90IF91aWQ7CjE0NDc0OiAgIHNpZ3ZhbF90IF9zaWd2 YWw7CjE0NDc0OiAgfSBfcnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0 OiAgIF9fa2VybmVsX3BpZF90IF9waWQ7CjE0NDc0OiAgIF9fa2VybmVsX3VpZDMyX3QgX3VpZDsK MTQ0NzQ6ICAgaW50IF9zdGF0dXM7CjE0NDc0OiAgIF9fa2VybmVsX2Nsb2NrX3QgX3V0aW1lOwox NDQ3NDogICBfX2tlcm5lbF9jbG9ja190IF9zdGltZTsKMTQ0NzQ6ICB9IF9zaWdjaGxkOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB2b2lkICpfYWRkcjsKMTQ0NzQ6 ICMgNzcgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3NpZ2luZm8uaCIKMTQ0NzQ6ICAgdW5p b24gewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgICBzaG9ydCBfYWRk cl9sc2I7CjE0NDc0OiAKMTQ0NzQ6ICAgIHN0cnVjdCB7CjE0NDc0OiAgICAgY2hhciBfZHVtbXlf Ym5kWyhfX2FsaWdub2ZfXyh2b2lkICopIDwgc2l6ZW9mKHNob3J0KSA/IHNpemVvZihzaG9ydCkg OiBfX2FsaWdub2ZfXyh2b2lkICopKV07CjE0NDc0OiAgICAgdm9pZCAqX2xvd2VyOwoxNDQ3NDog ICAgIHZvaWQgKl91cHBlcjsKMTQ0NzQ6ICAgIH0gX2FkZHJfYm5kOwoxNDQ3NDogCjE0NDc0OiAg ICBzdHJ1Y3QgewoxNDQ3NDogICAgIGNoYXIgX2R1bW15X3BrZXlbKF9fYWxpZ25vZl9fKHZvaWQg KikgPCBzaXplb2Yoc2hvcnQpID8gc2l6ZW9mKHNob3J0KSA6IF9fYWxpZ25vZl9fKHZvaWQgKikp XTsKMTQ0NzQ6ICAgICBfX3UzMiBfcGtleTsKMTQ0NzQ6ICAgIH0gX2FkZHJfcGtleTsKMTQ0NzQ6 ICAgfTsKMTQ0NzQ6ICB9IF9zaWdmYXVsdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0 IHsKMTQ0NzQ6ICAgbG9uZyBfYmFuZDsKMTQ0NzQ6ICAgaW50IF9mZDsKMTQ0NzQ6ICB9IF9zaWdw b2xsOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB2b2lkICpfY2Fs bF9hZGRyOwoxNDQ3NDogICBpbnQgX3N5c2NhbGw7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfYXJj aDsKMTQ0NzQ6ICB9IF9zaWdzeXM7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMjkgIi4vaW5jbHVkZS91 YXBpL2FzbS1nZW5lcmljL3NpZ2luZm8uaCIKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHNpZ2luZm8g ewoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHsgaW50IHNpX3NpZ25vOyBpbnQgc2lf ZXJybm87IGludCBzaV9jb2RlOyB1bmlvbiBfX3NpZmllbGRzIF9zaWZpZWxkczsgfTsKMTQ0NzQ6 ICAgaW50IF9zaV9wYWRbMTI4L3NpemVvZihpbnQpXTsKMTQ0NzQ6ICB9OwoxNDQ3NDogfSBzaWdp bmZvX3Q7CjE0NDc0OiAjIDMyMCAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvc2lnaW5mby5o IgoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3Qgc2lnZXZlbnQgewoxNDQ3NDogIHNpZ3ZhbF90IHNpZ2V2 X3ZhbHVlOwoxNDQ3NDogIGludCBzaWdldl9zaWdubzsKMTQ0NzQ6ICBpbnQgc2lnZXZfbm90aWZ5 OwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgaW50IF9wYWRbKCg2NCAtIChzaXplb2YoaW50KSAq IDIgKyBzaXplb2Yoc2lndmFsX3QpKSkgLyBzaXplb2YoaW50KSldOwoxNDQ3NDogICAgaW50IF90 aWQ7CjE0NDc0OiAKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIHZvaWQgKCpfZnVuY3Rpb24p KHNpZ3ZhbF90KTsKMTQ0NzQ6ICAgIHZvaWQgKl9hdHRyaWJ1dGU7CjE0NDc0OiAgIH0gX3NpZ2V2 X3RocmVhZDsKMTQ0NzQ6ICB9IF9zaWdldl91bjsKMTQ0NzQ6IH0gc2lnZXZlbnRfdDsKMTQ0NzQ6 ICMgMTQgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaWdpbmZvLmgiIDIKMTQ0NzQ6ICMg NyAiLi9pbmNsdWRlL3VhcGkvbGludXgvc2lnbmFsLmgiIDIKMTQ0NzQ6ICMgMTEgIi4vaW5jbHVk ZS9saW51eC9zaWduYWxfdHlwZXMuaCIgMgoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBr ZXJuZWxfc2lnaW5mbyB7CjE0NDc0OiAgc3RydWN0IHsgaW50IHNpX3NpZ25vOyBpbnQgc2lfZXJy bm87IGludCBzaV9jb2RlOyB1bmlvbiBfX3NpZmllbGRzIF9zaWZpZWxkczsgfTsKMTQ0NzQ6IH0g a2VybmVsX3NpZ2luZm9fdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3Qgc2lncXVldWUgewoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsK MTQ0NzQ6ICBpbnQgZmxhZ3M7CjE0NDc0OiAga2VybmVsX3NpZ2luZm9fdCBpbmZvOwoxNDQ3NDog IHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzaWdwZW5kaW5nIHsKMTQ0NzQ6ICBzdHJ1Y3QgbGlz dF9oZWFkIGxpc3Q7CjE0NDc0OiAgc2lnc2V0X3Qgc2lnbmFsOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IHNpZ2FjdGlvbiB7CjE0NDc0OiAKMTQ0NzQ6ICBfX3NpZ2hhbmRsZXJfdCBz YV9oYW5kbGVyOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc2FfZmxhZ3M7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fc2lncmVzdG9yZV90IHNhX3Jlc3Rv cmVyOwoxNDQ3NDogCjE0NDc0OiAgc2lnc2V0X3Qgc2FfbWFzazsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBrX3NpZ2FjdGlvbiB7CjE0NDc0OiAgc3RydWN0IHNpZ2FjdGlvbiBzYTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAjIDY1ICIuL2luY2x1ZGUv bGludXgvc2lnbmFsX3R5cGVzLmgiCjE0NDc0OiBzdHJ1Y3Qga3NpZ25hbCB7CjE0NDc0OiAgc3Ry dWN0IGtfc2lnYWN0aW9uIGthOwoxNDQ3NDogIGtlcm5lbF9zaWdpbmZvX3QgaW5mbzsKMTQ0NzQ6 ICBpbnQgc2lnOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzAgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5o IiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3Rhc2tfaW9fYWNjb3VudGlu Zy5oIiAxCjE0NDc0OiAjIDEyICIuL2luY2x1ZGUvbGludXgvdGFza19pb19hY2NvdW50aW5nLmgi CjE0NDc0OiBzdHJ1Y3QgdGFza19pb19hY2NvdW50aW5nIHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgdTY0IHJjaGFyOwoxNDQ3NDogCjE0NDc0OiAgdTY0IHdjaGFyOwoxNDQ3NDogCjE0NDc0OiAg dTY0IHN5c2NyOwoxNDQ3NDogCjE0NDc0OiAgdTY0IHN5c2N3OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTY0IHJlYWRfYnl0 ZXM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHU2NCB3 cml0ZV9ieXRlczsKMTQ0NzQ6ICMgNDQgIi4vaW5jbHVkZS9saW51eC90YXNrX2lvX2FjY291bnRp bmcuaCIKMTQ0NzQ6ICB1NjQgY2FuY2VsbGVkX3dyaXRlX2J5dGVzOwoxNDQ3NDogCjE0NDc0OiB9 OwoxNDQ3NDogIyAzMiAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKMTQ0NzQ6ICMgMSAiLi9p bmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9hbGFybXRp bWVyLmgiIDEKMTQ0NzQ6ICMgOSAiLi9pbmNsdWRlL2xpbnV4L2FsYXJtdGltZXIuaCIKMTQ0NzQ6 IHN0cnVjdCBydGNfZGV2aWNlOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGFsYXJtdGltZXJfdHlwZSB7 CjE0NDc0OiAgQUxBUk1fUkVBTFRJTUUsCjE0NDc0OiAgQUxBUk1fQk9PVFRJTUUsCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIEFMQVJNX05VTVRZUEUsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIEFM QVJNX1JFQUxUSU1FX0ZSRUVaRVIsCjE0NDc0OiAgQUxBUk1fQk9PVFRJTUVfRlJFRVpFUiwKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYWxhcm10aW1lcl9yZXN0YXJ0IHsKMTQ0NzQ6ICBB TEFSTVRJTUVSX05PUkVTVEFSVCwKMTQ0NzQ6ICBBTEFSTVRJTUVSX1JFU1RBUlQsCjE0NDc0OiB9 OwoxNDQ3NDogIyA0MiAiLi9pbmNsdWRlL2xpbnV4L2FsYXJtdGltZXIuaCIKMTQ0NzQ6IHN0cnVj dCBhbGFybSB7CjE0NDc0OiAgc3RydWN0IHRpbWVycXVldWVfbm9kZSBub2RlOwoxNDQ3NDogIHN0 cnVjdCBocnRpbWVyIHRpbWVyOwoxNDQ3NDogIGVudW0gYWxhcm10aW1lcl9yZXN0YXJ0ICgqZnVu Y3Rpb24pKHN0cnVjdCBhbGFybSAqLCBrdGltZV90IG5vdyk7CjE0NDc0OiAgZW51bSBhbGFybXRp bWVyX3R5cGUgdHlwZTsKMTQ0NzQ6ICBpbnQgc3RhdGU7CjE0NDc0OiAgdm9pZCAqZGF0YTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgYWxhcm1faW5pdChzdHJ1Y3QgYWxhcm0gKmFsYXJt LCBlbnVtIGFsYXJtdGltZXJfdHlwZSB0eXBlLAoxNDQ3NDogICBlbnVtIGFsYXJtdGltZXJfcmVz dGFydCAoKmZ1bmN0aW9uKShzdHJ1Y3QgYWxhcm0gKiwga3RpbWVfdCkpOwoxNDQ3NDogdm9pZCBh bGFybV9zdGFydChzdHJ1Y3QgYWxhcm0gKmFsYXJtLCBrdGltZV90IHN0YXJ0KTsKMTQ0NzQ6IHZv aWQgYWxhcm1fc3RhcnRfcmVsYXRpdmUoc3RydWN0IGFsYXJtICphbGFybSwga3RpbWVfdCBzdGFy dCk7CjE0NDc0OiB2b2lkIGFsYXJtX3Jlc3RhcnQoc3RydWN0IGFsYXJtICphbGFybSk7CjE0NDc0 OiBpbnQgYWxhcm1fdHJ5X3RvX2NhbmNlbChzdHJ1Y3QgYWxhcm0gKmFsYXJtKTsKMTQ0NzQ6IGlu dCBhbGFybV9jYW5jZWwoc3RydWN0IGFsYXJtICphbGFybSk7CjE0NDc0OiAKMTQ0NzQ6IHU2NCBh bGFybV9mb3J3YXJkKHN0cnVjdCBhbGFybSAqYWxhcm0sIGt0aW1lX3Qgbm93LCBrdGltZV90IGlu dGVydmFsKTsKMTQ0NzQ6IHU2NCBhbGFybV9mb3J3YXJkX25vdyhzdHJ1Y3QgYWxhcm0gKmFsYXJt LCBrdGltZV90IGludGVydmFsKTsKMTQ0NzQ6IGt0aW1lX3QgYWxhcm1fZXhwaXJlc19yZW1haW5p bmcoY29uc3Qgc3RydWN0IGFsYXJtICphbGFybSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgcnRjX2RldmljZSAqYWxhcm10aW1lcl9nZXRfcnRjZGV2KHZvaWQpOwoxNDQ3 NDogIyA4ICIuL2luY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3Qga2VybmVsX3NpZ2luZm87CjE0NDc0OiBzdHJ1Y3QgdGFza19zdHJ1Y3Q7 CjE0NDc0OiAjIDM4ICIuL2luY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjbG9j a2lkX3QgbWFrZV9wcm9jZXNzX2NwdWNsb2NrKGNvbnN0IHVuc2lnbmVkIGludCBwaWQsCjE0NDc0 OiAgIGNvbnN0IGNsb2NraWRfdCBjbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCh+cGlk KSA8PCAzKSB8IGNsb2NrOwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY2xvY2tpZF90IG1ha2VfdGhyZWFkX2Nw dWNsb2NrKGNvbnN0IHVuc2lnbmVkIGludCB0aWQsCjE0NDc0OiAgIGNvbnN0IGNsb2NraWRfdCBj bG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbWFrZV9wcm9jZXNzX2NwdWNsb2NrKHRpZCwg Y2xvY2sgfCA0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY2xvY2tpZF90IGZkX3RvX2Nsb2Nr aWQoY29uc3QgaW50IGZkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBtYWtlX3Byb2Nlc3NfY3B1 Y2xvY2soKHVuc2lnbmVkIGludCkgZmQsIDMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg Y2xvY2tpZF90b19mZChjb25zdCBjbG9ja2lkX3QgY2xrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biB+KGNsayA+PiAzKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjkgIi4vaW5jbHVkZS9saW51eC9wb3Np eC10aW1lcnMuaCIKMTQ0NzQ6IHN0cnVjdCBjcHVfdGltZXIgewoxNDQ3NDogIHN0cnVjdCB0aW1l cnF1ZXVlX25vZGUgbm9kZTsKMTQ0NzQ6ICBzdHJ1Y3QgdGltZXJxdWV1ZV9oZWFkICpoZWFkOwox NDQ3NDogIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFk IGVsaXN0OwoxNDQ3NDogIGludCBmaXJpbmc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s IGNwdV90aW1lcl9lbnF1ZXVlKHN0cnVjdCB0aW1lcnF1ZXVlX2hlYWQgKmhlYWQsCjE0NDc0OiAg ICAgICAgICBzdHJ1Y3QgY3B1X3RpbWVyICpjdG1yKQoxNDQ3NDogewoxNDQ3NDogIGN0bXItPmhl YWQgPSBoZWFkOwoxNDQ3NDogIHJldHVybiB0aW1lcnF1ZXVlX2FkZChoZWFkLCAmY3Rtci0+bm9k ZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1X3RpbWVyX2RlcXVldWUoc3RydWN0 IGNwdV90aW1lciAqY3RtcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoY3Rtci0+aGVhZCkgewoxNDQ3 NDogICB0aW1lcnF1ZXVlX2RlbChjdG1yLT5oZWFkLCAmY3Rtci0+bm9kZSk7CjE0NDc0OiAgIGN0 bXItPmhlYWQgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6ICB9CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHU2NCBjcHVfdGltZXJfZ2V0ZXhwaXJlcyhzdHJ1Y3QgY3B1X3RpbWVyICpjdG1yKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBjdG1yLT5ub2RlLmV4cGlyZXM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgY3B1X3RpbWVyX3NldGV4cGlyZXMoc3RydWN0IGNwdV90aW1lciAqY3RtciwgdTY0 IGV4cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBjdG1yLT5ub2RlLmV4cGlyZXMgPSBleHA7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgcG9zaXhfY3B1dGltZXJfYmFzZSB7CjE0NDc0OiAgdTY0IG5leHRldnQ7CjE0NDc0OiAg c3RydWN0IHRpbWVycXVldWVfaGVhZCB0cWhlYWQ7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMjIgIi4v aW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaCIKMTQ0NzQ6IHN0cnVjdCBwb3NpeF9jcHV0aW1l cnMgewoxNDQ3NDogIHN0cnVjdCBwb3NpeF9jcHV0aW1lcl9iYXNlIGJhc2VzWzNdOwoxNDQ3NDog IHVuc2lnbmVkIGludCB0aW1lcnNfYWN0aXZlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBleHBpcnlf YWN0aXZlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwb3NpeF9jcHV0aW1lcnNfaW5p dChzdHJ1Y3QgcG9zaXhfY3B1dGltZXJzICpwY3QpCjE0NDc0OiB7CjE0NDc0OiAgbWVtc2V0KHBj dCwgMCwgc2l6ZW9mKCpwY3QpKTsKMTQ0NzQ6ICBwY3QtPmJhc2VzWzBdLm5leHRldnQgPSAoKHU2 NCl+MFVMTCk7CjE0NDc0OiAgcGN0LT5iYXNlc1sxXS5uZXh0ZXZ0ID0gKCh1NjQpfjBVTEwpOwox NDQ3NDogIHBjdC0+YmFzZXNbMl0ubmV4dGV2dCA9ICgodTY0KX4wVUxMKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogdm9pZCBwb3NpeF9jcHV0aW1lcnNfZ3JvdXBfaW5pdChzdHJ1Y3QgcG9zaXhf Y3B1dGltZXJzICpwY3QsIHU2NCBjcHVfbGltaXQpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBvc2l4 X2NwdXRpbWVyc19ydF93YXRjaGRvZyhzdHJ1Y3QgcG9zaXhfY3B1dGltZXJzICpwY3QsCjE0NDc0 OiAgICAgICAgICAgICB1NjQgcnVudGltZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBwY3QtPmJhc2VzWzJd Lm5leHRldnQgPSBydW50aW1lOwoxNDQ3NDogfQoxNDQ3NDogIyAxOTMgIi4vaW5jbHVkZS9saW51 eC9wb3NpeC10aW1lcnMuaCIKMTQ0NzQ6IHN0cnVjdCBrX2l0aW1lciB7CjE0NDc0OiAgc3RydWN0 IGxpc3RfaGVhZCBsaXN0OwoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlIHRfaGFzaDsKMTQ0NzQ6 ICBzcGlubG9ja190IGl0X2xvY2s7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGtfY2xvY2sgKmtjbG9j azsKMTQ0NzQ6ICBjbG9ja2lkX3QgaXRfY2xvY2s7CjE0NDc0OiAgdGltZXJfdCBpdF9pZDsKMTQ0 NzQ6ICBpbnQgaXRfYWN0aXZlOwoxNDQ3NDogIHM2NCBpdF9vdmVycnVuOwoxNDQ3NDogIHM2NCBp dF9vdmVycnVuX2xhc3Q7CjE0NDc0OiAgaW50IGl0X3JlcXVldWVfcGVuZGluZzsKMTQ0NzQ6ICBp bnQgaXRfc2lnZXZfbm90aWZ5OwoxNDQ3NDogIGt0aW1lX3QgaXRfaW50ZXJ2YWw7CjE0NDc0OiAg c3RydWN0IHNpZ25hbF9zdHJ1Y3QgKml0X3NpZ25hbDsKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAg IHN0cnVjdCBwaWQgKml0X3BpZDsKMTQ0NzQ6ICAgc3RydWN0IHRhc2tfc3RydWN0ICppdF9wcm9j ZXNzOwoxNDQ3NDogIH07CjE0NDc0OiAgc3RydWN0IHNpZ3F1ZXVlICpzaWdxOwoxNDQ3NDogIHVu aW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIHN0cnVjdCBocnRpbWVyIHRpbWVyOwox NDQ3NDogICB9IHJlYWw7CjE0NDc0OiAgIHN0cnVjdCBjcHVfdGltZXIgY3B1OwoxNDQ3NDogICBz dHJ1Y3QgewoxNDQ3NDogICAgc3RydWN0IGFsYXJtIGFsYXJtdGltZXI7CjE0NDc0OiAgIH0gYWxh cm07CjE0NDc0OiAgfSBpdDsKMTQ0NzQ6ICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCByY3U7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiB2b2lkIHJ1bl9wb3NpeF9jcHVfdGltZXJzKHZvaWQpOwoxNDQ3 NDogdm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTsK MTQ0NzQ6IHZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0X2dyb3VwKHN0cnVjdCB0YXNrX3N0cnVj dCAqdGFzayk7CjE0NDc0OiB2b2lkIHNldF9wcm9jZXNzX2NwdV90aW1lcihzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGludCBjbG9ja19pZHgsCjE0NDc0OiAgICAgICB1NjQgKm5l d3ZhbCwgdTY0ICpvbGR2YWwpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIHVwZGF0ZV9ybGltaXRfY3B1 KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgdW5zaWduZWQgbG9uZyBybGltX25ldyk7CjE0NDc0 OiAKMTQ0NzQ6IHZvaWQgcG9zaXh0aW1lcl9yZWFybShzdHJ1Y3Qga2VybmVsX3NpZ2luZm8gKmlu Zm8pOwoxNDQ3NDogIyAzMyAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5oIiAxCjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUvdWFw aS9saW51eC9yc2VxLmgiCjE0NDc0OiBlbnVtIHJzZXFfY3B1X2lkX3N0YXRlIHsKMTQ0NzQ6ICBS U0VRX0NQVV9JRF9VTklOSVRJQUxJWkVEID0gLTEsCjE0NDc0OiAgUlNFUV9DUFVfSURfUkVHSVNU UkFUSU9OX0ZBSUxFRCA9IC0yLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSByc2VxX2Zs YWdzIHsKMTQ0NzQ6ICBSU0VRX0ZMQUdfVU5SRUdJU1RFUiA9ICgxIDw8IDApLAoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSByc2VxX2NzX2ZsYWdzX2JpdCB7CjE0NDc0OiAgUlNFUV9DU19G TEFHX05PX1JFU1RBUlRfT05fUFJFRU1QVF9CSVQgPSAwLAoxNDQ3NDogIFJTRVFfQ1NfRkxBR19O T19SRVNUQVJUX09OX1NJR05BTF9CSVQgPSAxLAoxNDQ3NDogIFJTRVFfQ1NfRkxBR19OT19SRVNU QVJUX09OX01JR1JBVEVfQklUID0gMiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gcnNl cV9jc19mbGFncyB7CjE0NDc0OiAgUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fUFJFRU1QVCA9 CjE0NDc0OiAgICgxVSA8PCBSU0VRX0NTX0ZMQUdfTk9fUkVTVEFSVF9PTl9QUkVFTVBUX0JJVCks CjE0NDc0OiAgUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fU0lHTkFMID0KMTQ0NzQ6ICAgKDFV IDw8IFJTRVFfQ1NfRkxBR19OT19SRVNUQVJUX09OX1NJR05BTF9CSVQpLAoxNDQ3NDogIFJTRVFf Q1NfRkxBR19OT19SRVNUQVJUX09OX01JR1JBVEUgPQoxNDQ3NDogICAoMVUgPDwgUlNFUV9DU19G TEFHX05PX1JFU1RBUlRfT05fTUlHUkFURV9CSVQpLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCByc2VxX2NzIHsK MTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIHZlcnNpb247CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBmbGFn czsKMTQ0NzQ6ICBfX3U2NCBzdGFydF9pcDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTY0IHBvc3RfY29t bWl0X29mZnNldDsKMTQ0NzQ6ICBfX3U2NCBhYm9ydF9pcDsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVf XygoYWxpZ25lZCg0ICogc2l6ZW9mKF9fdTY0KSkpKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJzZXEgewoxNDQ3 NDogIyA3NSAiLi9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5oIgoxNDQ3NDogIF9fdTMyIGNwdV9p ZF9zdGFydDsKMTQ0NzQ6ICMgOTAgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3JzZXEuaCIKMTQ0NzQ6 ICBfX3UzMiBjcHVfaWQ7CjE0NDc0OiAjIDEwOSAiLi9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5o IgoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgX191NjQgcHRyNjQ7CjE0NDc0OiAKMTQ0NzQ6ICAg X191NjQgcHRyOwoxNDQ3NDogIyAxMjQgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3JzZXEuaCIKMTQ0 NzQ6ICB9IHJzZXFfY3M7CjE0NDc0OiAjIDE0NCAiLi9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5o IgoxNDQ3NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDQg KiBzaXplb2YoX191NjQpKSkpOwoxNDQ3NDogIyAzNCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXVkaXRfY29udGV4dDsKMTQ0NzQ6IHN0 cnVjdCBiYWNraW5nX2Rldl9pbmZvOwoxNDQ3NDogc3RydWN0IGJpb19saXN0OwoxNDQ3NDogc3Ry dWN0IGJsa19wbHVnOwoxNDQ3NDogc3RydWN0IGNhcHR1cmVfY29udHJvbDsKMTQ0NzQ6IHN0cnVj dCBjZnNfcnE7CjE0NDc0OiBzdHJ1Y3QgZnNfc3RydWN0OwoxNDQ3NDogc3RydWN0IGZ1dGV4X3Bp X3N0YXRlOwoxNDQ3NDogc3RydWN0IGlvX2NvbnRleHQ7CjE0NDc0OiBzdHJ1Y3QgbWVtcG9saWN5 OwoxNDQ3NDogc3RydWN0IG5hbWVpZGF0YTsKMTQ0NzQ6IHN0cnVjdCBuc3Byb3h5OwoxNDQ3NDog c3RydWN0IHBlcmZfZXZlbnRfY29udGV4dDsKMTQ0NzQ6IHN0cnVjdCBwaWRfbmFtZXNwYWNlOwox NDQ3NDogc3RydWN0IHBpcGVfaW5vZGVfaW5mbzsKMTQ0NzQ6IHN0cnVjdCByY3Vfbm9kZTsKMTQ0 NzQ6IHN0cnVjdCByZWNsYWltX3N0YXRlOwoxNDQ3NDogc3RydWN0IHJvYnVzdF9saXN0X2hlYWQ7 CjE0NDc0OiBzdHJ1Y3Qgcm9vdF9kb21haW47CjE0NDc0OiBzdHJ1Y3QgcnE7CjE0NDc0OiBzdHJ1 Y3Qgc2NoZWRfYXR0cjsKMTQ0NzQ6IHN0cnVjdCBzY2hlZF9wYXJhbTsKMTQ0NzQ6IHN0cnVjdCBz ZXFfZmlsZTsKMTQ0NzQ6IHN0cnVjdCBzaWdoYW5kX3N0cnVjdDsKMTQ0NzQ6IHN0cnVjdCBzaWdu YWxfc3RydWN0OwoxNDQ3NDogc3RydWN0IHRhc2tfZGVsYXlfaW5mbzsKMTQ0NzQ6IHN0cnVjdCB0 YXNrX2dyb3VwOwoxNDQ3NDogIyAyMTUgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDog ZXh0ZXJuIHZvaWQgc2NoZWR1bGVyX3RpY2sodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBleHRlcm4gbG9uZyBzY2hlZHVsZV90aW1lb3V0KGxvbmcgdGltZW91dCk7CjE0NDc0 OiBleHRlcm4gbG9uZyBzY2hlZHVsZV90aW1lb3V0X2ludGVycnVwdGlibGUobG9uZyB0aW1lb3V0 KTsKMTQ0NzQ6IGV4dGVybiBsb25nIHNjaGVkdWxlX3RpbWVvdXRfa2lsbGFibGUobG9uZyB0aW1l b3V0KTsKMTQ0NzQ6IGV4dGVybiBsb25nIHNjaGVkdWxlX3RpbWVvdXRfdW5pbnRlcnJ1cHRpYmxl KGxvbmcgdGltZW91dCk7CjE0NDc0OiBleHRlcm4gbG9uZyBzY2hlZHVsZV90aW1lb3V0X2lkbGUo bG9uZyB0aW1lb3V0KTsKMTQ0NzQ6ICB2b2lkIHNjaGVkdWxlKHZvaWQpOwoxNDQ3NDogZXh0ZXJu IHZvaWQgc2NoZWR1bGVfcHJlZW1wdF9kaXNhYmxlZCh2b2lkKTsKMTQ0NzQ6ICB2b2lkIHByZWVt cHRfc2NoZWR1bGVfaXJxKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBpb19zY2hlZHVsZV9wcmVwYXJlKHZvaWQp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgaW9fc2NoZWR1bGVfZmluaXNoKGludCB0b2tlbik7CjE0NDc0 OiBleHRlcm4gbG9uZyBpb19zY2hlZHVsZV90aW1lb3V0KGxvbmcgdGltZW91dCk7CjE0NDc0OiBl eHRlcm4gdm9pZCBpb19zY2hlZHVsZSh2b2lkKTsKMTQ0NzQ6ICMgMjQyICIuL2luY2x1ZGUvbGlu dXgvc2NoZWQuaCIKMTQ0NzQ6IHN0cnVjdCBwcmV2X2NwdXRpbWUgewoxNDQ3NDogCjE0NDc0OiAg dTY0IHV0aW1lOwoxNDQ3NDogIHU2NCBzdGltZTsKMTQ0NzQ6ICByYXdfc3BpbmxvY2tfdCBsb2Nr OwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHZ0aW1lX3N0YXRlIHsKMTQ0 NzQ6IAoxNDQ3NDogIFZUSU1FX0lOQUNUSVZFID0gMCwKMTQ0NzQ6IAoxNDQ3NDogIFZUSU1FX0lE TEUsCjE0NDc0OiAKMTQ0NzQ6ICBWVElNRV9TWVMsCjE0NDc0OiAKMTQ0NzQ6ICBWVElNRV9VU0VS LAoxNDQ3NDogCjE0NDc0OiAgVlRJTUVfR1VFU1QsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgdnRpbWUgewoxNDQ3NDogIHNlcWNvdW50X3Qgc2VxY291bnQ7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyBsb25nIHN0YXJ0dGltZTsKMTQ0NzQ6ICBlbnVtIHZ0aW1lX3N0YXRlIHN0YXRlOwox NDQ3NDogIHVuc2lnbmVkIGludCBjcHU7CjE0NDc0OiAgdTY0IHV0aW1lOwoxNDQ3NDogIHU2NCBz dGltZTsKMTQ0NzQ6ICB1NjQgZ3RpbWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHVjbGFtcF9pZCB7 CjE0NDc0OiAgVUNMQU1QX01JTiA9IDAsCjE0NDc0OiAgVUNMQU1QX01BWCwKMTQ0NzQ6ICBVQ0xB TVBfQ05UCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgcm9v dF9kb21haW4gZGVmX3Jvb3RfZG9tYWluOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBtdXRleCBzY2hl ZF9kb21haW5zX211dGV4OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzY2hlZF9pbmZv IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg cGNvdW50OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxvbmcgcnVuX2Rl bGF5OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBsb25nIGxhc3RfYXJyaXZhbDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBsb25nIGxhc3RfcXVldWVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAjIDMy NSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiBzdHJ1Y3QgbG9hZF93ZWlnaHQgewox NDQ3NDogIHVuc2lnbmVkIGxvbmcgd2VpZ2h0OwoxNDQ3NDogIHUzMiBpbnZfd2VpZ2h0OwoxNDQ3 NDogfTsKMTQ0NzQ6ICMgMzUyICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKMTQ0NzQ6IHN0cnVj dCB1dGlsX2VzdCB7CjE0NDc0OiAgdW5zaWduZWQgaW50IGVucXVldWVkOwoxNDQ3NDogIHVuc2ln bmVkIGludCBld21hOwoxNDQ3NDogCjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9f KHNpemVvZih1NjQpKSkpOwoxNDQ3NDogIyA0MDEgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgox NDQ3NDogc3RydWN0IHNjaGVkX2F2ZyB7CjE0NDc0OiAgdTY0IGxhc3RfdXBkYXRlX3RpbWU7CjE0 NDc0OiAgdTY0IGxvYWRfc3VtOwoxNDQ3NDogIHU2NCBydW5uYWJsZV9sb2FkX3N1bTsKMTQ0NzQ6 ICB1MzIgdXRpbF9zdW07CjE0NDc0OiAgdTMyIHBlcmlvZF9jb250cmliOwoxNDQ3NDogIHVuc2ln bmVkIGxvbmcgbG9hZF9hdmc7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBydW5uYWJsZV9sb2FkX2F2 ZzsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHV0aWxfYXZnOwoxNDQ3NDogIHN0cnVjdCB1dGlsX2Vz dCB1dGlsX2VzdDsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKDYp KSkpKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNjaGVkX3N0YXRpc3RpY3MgewoxNDQ3NDogCjE0 NDc0OiAgdTY0IHdhaXRfc3RhcnQ7CjE0NDc0OiAgdTY0IHdhaXRfbWF4OwoxNDQ3NDogIHU2NCB3 YWl0X2NvdW50OwoxNDQ3NDogIHU2NCB3YWl0X3N1bTsKMTQ0NzQ6ICB1NjQgaW93YWl0X2NvdW50 OwoxNDQ3NDogIHU2NCBpb3dhaXRfc3VtOwoxNDQ3NDogCjE0NDc0OiAgdTY0IHNsZWVwX3N0YXJ0 OwoxNDQ3NDogIHU2NCBzbGVlcF9tYXg7CjE0NDc0OiAgczY0IHN1bV9zbGVlcF9ydW50aW1lOwox NDQ3NDogCjE0NDc0OiAgdTY0IGJsb2NrX3N0YXJ0OwoxNDQ3NDogIHU2NCBibG9ja19tYXg7CjE0 NDc0OiAgdTY0IGV4ZWNfbWF4OwoxNDQ3NDogIHU2NCBzbGljZV9tYXg7CjE0NDc0OiAKMTQ0NzQ6 ICB1NjQgbnJfbWlncmF0aW9uc19jb2xkOwoxNDQ3NDogIHU2NCBucl9mYWlsZWRfbWlncmF0aW9u c19hZmZpbmU7CjE0NDc0OiAgdTY0IG5yX2ZhaWxlZF9taWdyYXRpb25zX3J1bm5pbmc7CjE0NDc0 OiAgdTY0IG5yX2ZhaWxlZF9taWdyYXRpb25zX2hvdDsKMTQ0NzQ6ICB1NjQgbnJfZm9yY2VkX21p Z3JhdGlvbnM7CjE0NDc0OiAKMTQ0NzQ6ICB1NjQgbnJfd2FrZXVwczsKMTQ0NzQ6ICB1NjQgbnJf d2FrZXVwc19zeW5jOwoxNDQ3NDogIHU2NCBucl93YWtldXBzX21pZ3JhdGU7CjE0NDc0OiAgdTY0 IG5yX3dha2V1cHNfbG9jYWw7CjE0NDc0OiAgdTY0IG5yX3dha2V1cHNfcmVtb3RlOwoxNDQ3NDog IHU2NCBucl93YWtldXBzX2FmZmluZTsKMTQ0NzQ6ICB1NjQgbnJfd2FrZXVwc19hZmZpbmVfYXR0 ZW1wdHM7CjE0NDc0OiAgdTY0IG5yX3dha2V1cHNfcGFzc2l2ZTsKMTQ0NzQ6ICB1NjQgbnJfd2Fr ZXVwc19pZGxlOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2NoZWRf ZW50aXR5IHsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsb2FkX3dlaWdodCBsb2FkOwoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgcnVubmFibGVfd2VpZ2h0OwoxNDQ3NDogIHN0cnVjdCByYl9ub2RlIHJ1 bl9ub2RlOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgZ3JvdXBfbm9kZTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgb25fcnE7CjE0NDc0OiAKMTQ0NzQ6ICB1NjQgZXhlY19zdGFydDsKMTQ0NzQ6ICB1 NjQgc3VtX2V4ZWNfcnVudGltZTsKMTQ0NzQ6ICB1NjQgdnJ1bnRpbWU7CjE0NDc0OiAgdTY0IHBy ZXZfc3VtX2V4ZWNfcnVudGltZTsKMTQ0NzQ6IAoxNDQ3NDogIHU2NCBucl9taWdyYXRpb25zOwox NDQ3NDogCjE0NDc0OiAgc3RydWN0IHNjaGVkX3N0YXRpc3RpY3Mgc3RhdGlzdGljczsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgaW50IGRlcHRoOwoxNDQ3NDogIHN0cnVjdCBzY2hlZF9lbnRpdHkg KnBhcmVudDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBjZnNfcnEgKmNmc19ycTsKMTQ0NzQ6IAox NDQ3NDogIHN0cnVjdCBjZnNfcnEgKm15X3E7CjE0NDc0OiAjIDQ4MiAiLi9pbmNsdWRlL2xpbnV4 L3NjaGVkLmgiCjE0NDc0OiAgc3RydWN0IHNjaGVkX2F2ZyBhdmc7CjE0NDc0OiAKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzY2hlZF9ydF9lbnRpdHkgewoxNDQ3NDogIHN0cnVjdCBs aXN0X2hlYWQgcnVuX2xpc3Q7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB0aW1lb3V0OwoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgd2F0Y2hkb2dfc3RhbXA7CjE0NDc0OiAgdW5zaWduZWQgaW50IHRpbWVf c2xpY2U7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgb25fcnE7CjE0NDc0OiAgdW5zaWduZWQgc2hv cnQgb25fbGlzdDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBzY2hlZF9ydF9lbnRpdHkgKmJhY2s7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRfXykpOwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3Qgc2NoZWRfZGxfZW50aXR5IHsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9kZSByYl9u b2RlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHU2NCBkbF9ydW50aW1lOwoxNDQ3NDogIHU2NCBkbF9kZWFkbGluZTsKMTQ0NzQ6ICB1NjQg ZGxfcGVyaW9kOwoxNDQ3NDogIHU2NCBkbF9idzsKMTQ0NzQ6ICB1NjQgZGxfZGVuc2l0eTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzNjQg cnVudGltZTsKMTQ0NzQ6ICB1NjQgZGVhZGxpbmU7CjE0NDc0OiAgdW5zaWduZWQgaW50IGZsYWdz OwoxNDQ3NDogIyA1NTEgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDogIHVuc2lnbmVk IGludCBkbF90aHJvdHRsZWQgOiAxOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkbF9ib29zdGVkIDog MTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZGxfeWllbGRlZCA6IDE7CjE0NDc0OiAgdW5zaWduZWQg aW50IGRsX25vbl9jb250ZW5kaW5nIDogMTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZGxfb3ZlcnJ1 biA6IDE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0 cnVjdCBocnRpbWVyIGRsX3RpbWVyOwoxNDQ3NDogIyA1NzAgIi4vaW5jbHVkZS9saW51eC9zY2hl ZC5oIgoxNDQ3NDogIHN0cnVjdCBocnRpbWVyIGluYWN0aXZlX3RpbWVyOwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgNjA4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKMTQ0NzQ6IHVuaW9uIHJjdV9zcGVj aWFsIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1OCBibG9ja2VkOwoxNDQ3NDogICB1OCBu ZWVkX3FzOwoxNDQ3NDogICB1OCBleHBfaGludDsKMTQ0NzQ6ICAgdTggZGVmZXJyZWRfcXM7CjE0 NDc0OiAgfSBiOwoxNDQ3NDogIHUzMiBzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBw ZXJmX2V2ZW50X3Rhc2tfY29udGV4dCB7CjE0NDc0OiAgcGVyZl9pbnZhbGlkX2NvbnRleHQgPSAt MSwKMTQ0NzQ6ICBwZXJmX2h3X2NvbnRleHQgPSAwLAoxNDQ3NDogIHBlcmZfc3dfY29udGV4dCwK MTQ0NzQ6ICBwZXJmX25yX3Rhc2tfY29udGV4dHMsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3Qgd2FrZV9xX25vZGUgewoxNDQ3NDogIHN0cnVjdCB3YWtlX3Ffbm9kZSAqbmV4dDsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0YXNrX3N0cnVjdCB7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB0aHJlYWRfaW5mbyB0aHJl YWRfaW5mbzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9sYXRpbGUgbG9uZyBzdGF0ZTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHZvaWQgKnN0YWNrOwoxNDQ3NDogIHJlZmNvdW50X3QgdXNhZ2U7CjE0NDc0OiAKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgZmxhZ3M7CjE0NDc0OiAgdW5zaWduZWQgaW50IHB0cmFjZTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGxsaXN0X25vZGUgd2FrZV9lbnRyeTsKMTQ0NzQ6ICBp bnQgb25fY3B1OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY3B1OwoxNDQ3 NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IHdha2VlX2ZsaXBzOwoxNDQ3NDogIHVuc2lnbmVkIGxv bmcgd2FrZWVfZmxpcF9kZWNheV90czsKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmxhc3Rf d2FrZWU7CjE0NDc0OiAjIDY3MCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiAgaW50 IHJlY2VudF91c2VkX2NwdTsKMTQ0NzQ6ICBpbnQgd2FrZV9jcHU7CjE0NDc0OiAKMTQ0NzQ6ICBp bnQgb25fcnE7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgcHJpbzsKMTQ0NzQ6ICBpbnQgc3RhdGljX3By aW87CjE0NDc0OiAgaW50IG5vcm1hbF9wcmlvOwoxNDQ3NDogIHVuc2lnbmVkIGludCBydF9wcmlv cml0eTsKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqc2NoZWRfY2xh c3M7CjE0NDc0OiAgc3RydWN0IHNjaGVkX2VudGl0eSBzZTsKMTQ0NzQ6ICBzdHJ1Y3Qgc2NoZWRf cnRfZW50aXR5IHJ0OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHRhc2tfZ3JvdXAgKnNjaGVkX3Rh c2tfZ3JvdXA7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc2NoZWRfZGxfZW50aXR5IGRsOwoxNDQ3 NDogIyA2OTcgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDogIHN0cnVjdCBobGlzdF9o ZWFkIHByZWVtcHRfbm90aWZpZXJzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVu c2lnbmVkIGludCBidHJhY2Vfc2VxOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgcG9saWN5OwoxNDQ3NDogIGludCBucl9jcHVzX2FsbG93ZWQ7CjE0NDc0OiAgY29uc3QgY3B1 bWFza190ICpjcHVzX3B0cjsKMTQ0NzQ6ICBjcHVtYXNrX3QgY3B1c19tYXNrOwoxNDQ3NDogIyA3 MjQgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDogIHN0cnVjdCBzY2hlZF9pbmZvIHNj aGVkX2luZm87CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIHRhc2tzOwoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IHBsaXN0X25vZGUgcHVzaGFibGVfdGFza3M7CjE0NDc0OiAgc3RydWN0 IHJiX25vZGUgcHVzaGFibGVfZGxfdGFza3M7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVj dCBtbV9zdHJ1Y3QgKm1tOwoxNDQ3NDogIHN0cnVjdCBtbV9zdHJ1Y3QgKmFjdGl2ZV9tbTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHZtYWNhY2hlIHZtYWNhY2hlOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19yc3Nfc3RhdCByc3Nfc3RhdDsKMTQ0NzQ6IAoxNDQ3 NDogIGludCBleGl0X3N0YXRlOwoxNDQ3NDogIGludCBleGl0X2NvZGU7CjE0NDc0OiAgaW50IGV4 aXRfc2lnbmFsOwoxNDQ3NDogCjE0NDc0OiAgaW50IHBkZWF0aF9zaWduYWw7CjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIGpvYmN0bDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWdu ZWQgaW50IHBlcnNvbmFsaXR5OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBzY2hl ZF9yZXNldF9vbl9mb3JrOjE7CjE0NDc0OiAgdW5zaWduZWQgc2NoZWRfY29udHJpYnV0ZXNfdG9f bG9hZDoxOwoxNDQ3NDogIHVuc2lnbmVkIHNjaGVkX21pZ3JhdGVkOjE7CjE0NDc0OiAgdW5zaWdu ZWQgc2NoZWRfcmVtb3RlX3dha2V1cDoxOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCA6MDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGluX2V4ZWN2ZToxOwoxNDQ3NDogIHVuc2lnbmVkIGluX2lv d2FpdDoxOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgcmVzdG9yZV9zaWdtYXNrOjE7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGluX3VzZXJfZmF1bHQ6MTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBub19j Z3JvdXBfbWlncmF0aW9uOjE7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBmcm96ZW46MTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCB1c2VfbWVtZGVsYXk6MTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBhdG9taWNfZmxhZ3M7CjE0NDc0OiAK MTQ0NzQ6ICBzdHJ1Y3QgcmVzdGFydF9ibG9jayByZXN0YXJ0X2Jsb2NrOwoxNDQ3NDogCjE0NDc0 OiAgcGlkX3QgcGlkOwoxNDQ3NDogIHBpZF90IHRnaWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBzdGFja19jYW5hcnk7CjE0NDc0OiAjIDgwNyAiLi9pbmNs dWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiAgc3RydWN0IHRhc2tfc3RydWN0ICpyZWFsX3BhcmVu dDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHRhc2tfc3RydWN0ICpwYXJlbnQ7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGNo aWxkcmVuOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgc2libGluZzsKMTQ0NzQ6ICBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKmdyb3VwX2xlYWRlcjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgcHRyYWNl ZDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIHB0cmFjZV9lbnRyeTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IHBpZCAqdGhyZWFkX3BpZDsKMTQ0NzQ6ICBzdHJ1Y3QgaGxpc3Rfbm9k ZSBwaWRfbGlua3NbUElEVFlQRV9NQVhdOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgdGhyZWFk X2dyb3VwOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgdGhyZWFkX25vZGU7CjE0NDc0OiAKMTQ0 NzQ6ICBzdHJ1Y3QgY29tcGxldGlvbiAqdmZvcmtfZG9uZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgaW50ICpzZXRfY2hpbGRfdGlkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKmNsZWFy X2NoaWxkX3RpZDsKMTQ0NzQ6IAoxNDQ3NDogIHU2NCB1dGltZTsKMTQ0NzQ6ICB1NjQgc3RpbWU7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1NjQgZ3RpbWU7CjE0NDc0 OiAgc3RydWN0IHByZXZfY3B1dGltZSBwcmV2X2NwdXRpbWU7CjE0NDc0OiAjIDg1OCAiLi9pbmNs dWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBudmNzdzsKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIG5pdmNzdzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTY0IHN0YXJ0X3Rp bWU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHU2NCBzdGFydF9ib290dGltZTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtaW5fZmx0OwoxNDQ3NDogIHVuc2lnbmVkIGxv bmcgbWFqX2ZsdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHBvc2l4X2NwdXRpbWVy cyBwb3NpeF9jcHV0aW1lcnM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBjb25zdCBzdHJ1Y3QgY3JlZCAqcHRyYWNlcl9jcmVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBjb25zdCBzdHJ1Y3QgY3JlZCAqcmVhbF9jcmVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBj b25zdCBzdHJ1Y3QgY3JlZCAqY3JlZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBz dHJ1Y3Qga2V5ICpjYWNoZWRfcmVxdWVzdGVkX2tleTsKMTQ0NzQ6ICMgODk3ICIuL2luY2x1ZGUv bGludXgvc2NoZWQuaCIKMTQ0NzQ6ICBjaGFyIGNvbW1bMTZdOwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IG5hbWVpZGF0YSAqbmFtZWlkYXRhOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qg c3lzdl9zZW0gc3lzdnNlbTsKMTQ0NzQ6ICBzdHJ1Y3Qgc3lzdl9zaG0gc3lzdnNobTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsYXN0X3N3aXRjaF9jb3VudDsKMTQ0NzQ6 ICB1bnNpZ25lZCBsb25nIGxhc3Rfc3dpdGNoX3RpbWU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IHN0cnVjdCBmc19zdHJ1Y3QgKmZzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZmls ZXNfc3RydWN0ICpmaWxlczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IG5zcHJveHkg Km5zcHJveHk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBzaWduYWxfc3RydWN0ICpz aWduYWw7CjE0NDc0OiAgc3RydWN0IHNpZ2hhbmRfc3RydWN0ICpzaWdoYW5kOwoxNDQ3NDogIHNp Z3NldF90IGJsb2NrZWQ7CjE0NDc0OiAgc2lnc2V0X3QgcmVhbF9ibG9ja2VkOwoxNDQ3NDogCjE0 NDc0OiAgc2lnc2V0X3Qgc2F2ZWRfc2lnbWFzazsKMTQ0NzQ6ICBzdHJ1Y3Qgc2lncGVuZGluZyBw ZW5kaW5nOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc2FzX3NzX3NwOwoxNDQ3NDogIHNpemVfdCBz YXNfc3Nfc2l6ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc2FzX3NzX2ZsYWdzOwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IGNhbGxiYWNrX2hlYWQgKnRhc2tfd29ya3M7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgc3RydWN0IGF1ZGl0X2NvbnRleHQgKmF1ZGl0X2NvbnRleHQ7CjE0NDc0 OiAKMTQ0NzQ6ICBrdWlkX3QgbG9naW51aWQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNlc3Npb25p ZDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBzZWNjb21wIHNlY2NvbXA7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIHUzMiBwYXJlbnRfZXhlY19pZDsKMTQ0NzQ6ICB1MzIgc2VsZl9leGVjX2lkOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzcGlubG9ja190IGFsbG9jX2xvY2s7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHJhd19zcGlubG9ja190IHBpX2xvY2s7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1 Y3Qgd2FrZV9xX25vZGUgd2FrZV9xOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0 cnVjdCByYl9yb290X2NhY2hlZCBwaV93YWl0ZXJzOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHRh c2tfc3RydWN0ICpwaV90b3BfdGFzazsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBydF9tdXRleF93 YWl0ZXIgKnBpX2Jsb2NrZWRfb247CjE0NDc0OiAjIDEwMDAgIi4vaW5jbHVkZS9saW51eC9zY2hl ZC5oIgoxNDQ3NDogIHZvaWQgKmpvdXJuYWxfaW5mbzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg c3RydWN0IGJpb19saXN0ICpiaW9fbGlzdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBzdHJ1Y3QgYmxrX3BsdWcgKnBsdWc7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg c3RydWN0IHJlY2xhaW1fc3RhdGUgKnJlY2xhaW1fc3RhdGU7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1 Y3QgYmFja2luZ19kZXZfaW5mbyAqYmFja2luZ19kZXZfaW5mbzsKMTQ0NzQ6IAoxNDQ3NDogIHN0 cnVjdCBpb19jb250ZXh0ICppb19jb250ZXh0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1 Y3QgY2FwdHVyZV9jb250cm9sICpjYXB0dXJlX2NvbnRyb2w7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHVuc2lnbmVkIGxvbmcgcHRyYWNlX21lc3NhZ2U7CjE0NDc0OiAga2VybmVsX3NpZ2luZm9f dCAqbGFzdF9zaWdpbmZvOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHRhc2tfaW9fYWNjb3VudGlu ZyBpb2FjOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIHU2NCBhY2N0X3Jzc19tZW0xOwoxNDQ3NDogCjE0NDc0OiAgdTY0IGFjY3Rfdm1fbWVt MTsKMTQ0NzQ6IAoxNDQ3NDogIHU2NCBhY2N0X3RpbWV4cGQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgbm9kZW1hc2tfdCBtZW1zX2FsbG93ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICBzZXFj b3VudF90IG1lbXNfYWxsb3dlZF9zZXE7CjE0NDc0OiAgaW50IGNwdXNldF9tZW1fc3ByZWFkX3Jv dG9yOwoxNDQ3NDogIGludCBjcHVzZXRfc2xhYl9zcHJlYWRfcm90b3I7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGNzc19zZXQgKmNncm91cHM7CjE0NDc0OiAKMTQ0NzQ6 ICBzdHJ1Y3QgbGlzdF9oZWFkIGNnX2xpc3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHJvYnVzdF9saXN0X2hlYWQgKnJvYnVz dF9saXN0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQg cGlfc3RhdGVfbGlzdDsKMTQ0NzQ6ICBzdHJ1Y3QgZnV0ZXhfcGlfc3RhdGUgKnBpX3N0YXRlX2Nh Y2hlOwoxNDQ3NDogIHN0cnVjdCBtdXRleCBmdXRleF9leGl0X211dGV4OwoxNDQ3NDogIHVuc2ln bmVkIGludCBmdXRleF9zdGF0ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHBlcmZf ZXZlbnRfY29udGV4dCAqcGVyZl9ldmVudF9jdHhwW3BlcmZfbnJfdGFza19jb250ZXh0c107CjE0 NDc0OiAgc3RydWN0IG11dGV4IHBlcmZfZXZlbnRfbXV0ZXg7CjE0NDc0OiAgc3RydWN0IGxpc3Rf aGVhZCBwZXJmX2V2ZW50X2xpc3Q7CjE0NDc0OiAjIDExMzAgIi4vaW5jbHVkZS9saW51eC9zY2hl ZC5oIgoxNDQ3NDogIHN0cnVjdCByc2VxICpyc2VxOwoxNDQ3NDogIHUzMiByc2VxX3NpZzsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgcnNlcV9l dmVudF9tYXNrOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgdGxiZmx1c2hfdW5tYXBf YmF0Y2ggdGxiX3ViYzsKMTQ0NzQ6IAoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgcmVmY291bnRf dCByY3VfdXNlcnM7CjE0NDc0OiAgIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKMTQ0NzQ6ICB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpzcGxpY2Vf cGlwZTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBwYWdlX2ZyYWcgdGFza19mcmFnOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19kZWxheV9pbmZvICpkZWxheXM7CjE0NDc0OiAj IDExNjMgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDogIGludCBucl9kaXJ0aWVkOwox NDQ3NDogIGludCBucl9kaXJ0aWVkX3BhdXNlOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBkaXJ0eV9wYXVzZWRfd2hlbjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50IGxhdGVuY3lf cmVjb3JkX2NvdW50OwoxNDQ3NDogIHN0cnVjdCBsYXRlbmN5X3JlY29yZCBsYXRlbmN5X3JlY29y ZFszMl07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHU2 NCB0aW1lcl9zbGFja19uczsKMTQ0NzQ6ICB1NjQgZGVmYXVsdF90aW1lcl9zbGFja19uczsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIGludCBjdXJyX3JldF9zdGFjazsKMTQ0NzQ6ICBpbnQgY3Vycl9yZXRfZGVwdGg7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBmdHJhY2VfcmV0X3N0YWNrICpyZXRfc3RhY2s7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyBmdHJhY2VfdGltZXN0YW1w OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhdG9taWNf dCB0cmFjZV9vdmVycnVuOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhdG9taWNfdCB0cmFjaW5n X2dyYXBoX3BhdXNlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5z aWduZWQgbG9uZyB0cmFjZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyB0 cmFjZV9yZWN1cnNpb247CjE0NDc0OiAjIDEyMzUgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgox NDQ3NDogIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZ19pbl9vb207CjE0NDc0OiAgZ2ZwX3QgbWVt Y2dfb29tX2dmcF9tYXNrOwoxNDQ3NDogIGludCBtZW1jZ19vb21fb3JkZXI7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBtZW1jZ19ucl9wYWdlc19vdmVyX2hpZ2g7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBtZW1fY2dyb3VwICphY3RpdmVfbWVtY2c7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHJlcXVlc3RfcXVldWUgKnRocm90dGxl X3F1ZXVlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIHVuc2lnbmVkIGludCBzZXF1ZW50aWFsX2lvOwoxNDQ3NDogIHVuc2lnbmVkIGludCBz ZXF1ZW50aWFsX2lvX2F2ZzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IGludCBwYWdlZmF1bHRfZGlzYWJsZWQ7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19zdHJ1 Y3QgKm9vbV9yZWFwZXJfbGlzdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHZtX3N0 cnVjdCAqc3RhY2tfdm1fYXJlYTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZWZj b3VudF90IHN0YWNrX3JlZmNvdW50OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKnNlY3VyaXR5OwoxNDQ3NDogIyAxMjg4ICIuL2lu Y2x1ZGUvbGludXgvc2NoZWQuaCIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1 Y3QgdGhyZWFkX3N0cnVjdCB0aHJlYWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBw aWQgKnRhc2tfcGlkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gdGFzay0+dGhyZWFkX3BpZDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTMxNyAiLi9pbmNsdWRl L2xpbnV4L3NjaGVkLmgiCjE0NDc0OiBwaWRfdCBfX3Rhc2tfcGlkX25yX25zKHN0cnVjdCB0YXNr X3N0cnVjdCAqdGFzaywgZW51bSBwaWRfdHlwZSB0eXBlLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAq bnMpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0YXNrX3BpZF9ucihzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdHNrLT5waWQ7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHBpZF90IHRhc2tfcGlkX25yX25zKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1 Y3QgcGlkX25hbWVzcGFjZSAqbnMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fdGFza19waWRf bnJfbnModHNrLCBQSURUWVBFX1BJRCwgbnMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaWRf dCB0YXNrX3BpZF92bnIoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIF9fdGFza19waWRfbnJfbnModHNrLCBQSURUWVBFX1BJRCwgKCh2b2lkICopMCkpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBpZF90IHRhc2tfdGdpZF9ucihzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdHNrLT50Z2lkOwoxNDQ3 NDogfQoxNDQ3NDogIyAxMzUwICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBw aWRfYWxpdmUoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBwLT50aHJlYWRfcGlkICE9ICgodm9pZCAqKTApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBwaWRfdCB0YXNrX3BncnBfbnJfbnMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBw aWRfbmFtZXNwYWNlICpucykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX190YXNrX3BpZF9ucl9u cyh0c2ssIFBJRFRZUEVfUEdJRCwgbnMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0 YXNrX3BncnBfdm5yKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBfX3Rhc2tfcGlkX25yX25zKHRzaywgUElEVFlQRV9QR0lELCAoKHZvaWQgKikwKSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19zZXNzaW9uX25yX25zKHN0 cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIF9fdGFza19waWRfbnJfbnModHNrLCBQSURUWVBFX1NJRCwgbnMpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0YXNrX3Nlc3Npb25fdm5yKHN0cnVjdCB0YXNr X3N0cnVjdCAqdHNrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX3Rhc2tfcGlkX25yX25zKHRz aywgUElEVFlQRV9TSUQsICgodm9pZCAqKTApKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlk X3QgdGFza190Z2lkX25yX25zKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgcGlkX25h bWVzcGFjZSAqbnMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fdGFza19waWRfbnJfbnModHNr LCBQSURUWVBFX1RHSUQsIG5zKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza190 Z2lkX3ZucihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g X190YXNrX3BpZF9ucl9ucyh0c2ssIFBJRFRZUEVfVEdJRCwgKCh2b2lkICopMCkpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0YXNrX3BwaWRfbnJfbnMoY29uc3Qgc3RydWN0IHRhc2tf c3RydWN0ICp0c2ssIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucykKMTQ0NzQ6IHsKMTQ0NzQ6ICBw aWRfdCBwaWQgPSAwOwoxNDQ3NDogCjE0NDc0OiAgcmN1X3JlYWRfbG9jaygpOwoxNDQ3NDogIGlm IChwaWRfYWxpdmUodHNrKSkKMTQ0NzQ6ICAgcGlkID0gdGFza190Z2lkX25yX25zKCh7IHR5cGVv ZigqKHRzay0+cmVhbF9wYXJlbnQpKSAqX19fX19fX19wMSA9ICh0eXBlb2YoKih0c2stPnJlYWxf cGFyZW50KSkgKikoeyB1bmlvbiB7IHR5cGVvZigodHNrLT5yZWFsX3BhcmVudCkpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKHRzay0+cmVhbF9w YXJlbnQpKSwgX191Ll9fYywgc2l6ZW9mKCh0c2stPnJlYWxfcGFyZW50KSkpOyBlbHNlIF9fcmVh ZF9vbmNlX3NpemVfbm9jaGVjaygmKCh0c2stPnJlYWxfcGFyZW50KSksIF9fdS5fX2MsIHNpemVv ZigodHNrLT5yZWFsX3BhcmVudCkpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsg ZG8geyB9IHdoaWxlICgwKTsgOyAoKHR5cGVvZigqKHRzay0+cmVhbF9wYXJlbnQpKSAqKShfX19f X19fX3AxKSk7IH0pLCBucyk7CjE0NDc0OiAgcmN1X3JlYWRfdW5sb2NrKCk7CjE0NDc0OiAKMTQ0 NzQ6ICByZXR1cm4gcGlkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0YXNrX3BwaWRf bnIoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IHRhc2tfcHBpZF9ucl9ucyh0c2ssICZpbml0X3BpZF9ucyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19wZ3JwX25yKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiB0YXNrX3BncnBfbnJfbnModHNrLCAmaW5pdF9waWRfbnMp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25l ZCBpbnQgdGFza19zdGF0ZV9pbmRleChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKMTQ0NzQ6IHsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdHNrX3N0YXRlID0gKHsgdW5pb24geyB0eXBlb2YodHNrLT5z dGF0ZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUo Jih0c2stPnN0YXRlKSwgX191Ll9fYywgc2l6ZW9mKHRzay0+c3RhdGUpKTsgZWxzZSBfX3JlYWRf b25jZV9zaXplX25vY2hlY2soJih0c2stPnN0YXRlKSwgX191Ll9fYywgc2l6ZW9mKHRzay0+c3Rh dGUpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgc3RhdGUgPSAodHNrX3N0YXRlIHwgdHNrLT5leGl0X3N0YXRlKSAmICgweDAwMDAgfCAweDAw MDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDAp OwoxNDQ3NDogCjE0NDc0OiAgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8x NDE3KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDog IiAiKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAx MCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgPT0gMCB8fCAoKCgoKCgweDAwMDAgfCAw eDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAw NDApICsgMSkgPDwgMSkpICYgKCgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQg fCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpIC0gMSkpICE9 IDApIikpKTsgaWYgKCEoISgoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwg MHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA9PSAwIHx8ICgo KCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8 IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4 MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8 PCAxKSkgLSAxKSkgIT0gMCkpKSkgX19jb21waWxldGltZV9hc3NlcnRfMTQxNygpOyB9IHdoaWxl ICgwKTsKMTQ0NzQ6IAoxNDQ3NDogIGlmICh0c2tfc3RhdGUgPT0gKDB4MDAwMiB8IDB4MDQwMCkp CjE0NDc0OiAgIHN0YXRlID0gKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAw eDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSk7CjE0NDc0OiAKMTQ0NzQ6ICBy ZXR1cm4gZmxzKHN0YXRlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY2hhciB0YXNrX2luZGV4 X3RvX2NoYXIodW5zaWduZWQgaW50IHN0YXRlKQoxNDQ3NDogewoxNDQ3NDogIHN0YXRpYyBjb25z dCBjaGFyIHN0YXRlX2NoYXJbXSA9ICJSU0RUdFhaUEkiOwoxNDQ3NDogCjE0NDc0OiAgZG8geyBl eHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNDI5KHZvaWQpIF9fYXR0cmlidXRlX18o KF9fZXJyb3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDogIiAiMSArIGlsb2cyKFRBU0tfUkVQT1JU X01BWCkgIT0gc2l6ZW9mKHN0YXRlX2NoYXIpIC0gMSIpKSk7IGlmICghKCEoMSArICggX19idWls dGluX2NvbnN0YW50X3AoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgw MDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA/ICggX19idWlsdGlu X2NvbnN0YW50X3AoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4 IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA/ICggKCgoKDB4MDAwMCB8 IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4 MDA0MCkgKyAxKSA8PCAxKSkgPCAyID8gMCA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIg fCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkp ICYgKDFVTEwgPDwgNjMpID8gNjMgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgw MDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgx VUxMIDw8IDYyKSA/IDYyIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8 IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8 PCA2MSkgPyA2MSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAw MDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNjAp ID8gNjAgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwg MHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDU5KSA/IDU5 IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAx MCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA1OCkgPyA1OCA6ICgo KCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAw eDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNTcpID8gNTcgOiAoKCgoMHgw MDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIw IHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDU2KSA/IDU2IDogKCgoKDB4MDAwMCB8 IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4 MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA1NSkgPyA1NSA6ICgoKCgweDAwMDAgfCAweDAw MDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDAp ICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNTQpID8gNTQgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwg MHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEp IDw8IDEpKSAmICgxVUxMIDw8IDUzKSA/IDUzIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAw MiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAx KSkgJiAoMVVMTCA8PCA1MikgPyA1MiA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAw eDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYg KDFVTEwgPDwgNTEpID8gNTEgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0 IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxM IDw8IDUwKSA/IDUwIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4 MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA0 OSkgPyA0OSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDgg fCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNDgpID8g NDggOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgw MDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDQ3KSA/IDQ3IDog KCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8 IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA0NikgPyA0NiA6ICgoKCgw eDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAw MjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNDUpID8gNDUgOiAoKCgoMHgwMDAw IHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwg MHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDQ0KSA/IDQ0IDogKCgoKDB4MDAwMCB8IDB4 MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0 MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA0MykgPyA0MyA6ICgoKCgweDAwMDAgfCAweDAwMDEg fCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsg MSkgPDwgMSkpICYgKDFVTEwgPDwgNDIpID8gNDIgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgw MDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8 IDEpKSAmICgxVUxMIDw8IDQxKSA/IDQxIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8 IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkg JiAoMVVMTCA8PCA0MCkgPyA0MCA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAw MDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFV TEwgPDwgMzkpID8gMzkgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwg MHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8 IDM4KSA/IDM4IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAw OCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAzNykg PyAzNyA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAw eDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMzYpID8gMzYg OiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEw IHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDM1KSA/IDM1IDogKCgo KDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4 MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAzNCkgPyAzNCA6ICgoKCgweDAw MDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAg fCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMzMpID8gMzMgOiAoKCgoMHgwMDAwIHwg MHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgw MDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDMyKSA/IDMyIDogKCgoKDB4MDAwMCB8IDB4MDAw MSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkg KyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAzMSkgPyAzMSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAw eDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkg PDwgMSkpICYgKDFVTEwgPDwgMzApID8gMzAgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAy IHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEp KSAmICgxVUxMIDw8IDI5KSA/IDI5IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4 MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAo MVVMTCA8PCAyOCkgPyAyOCA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQg fCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwg PDwgMjcpID8gMjcgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgw MDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDI2 KSA/IDI2IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8 IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAyNSkgPyAy NSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAw MTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMjQpID8gMjQgOiAo KCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwg MHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDIzKSA/IDIzIDogKCgoKDB4 MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAy MCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAyMikgPyAyMiA6ICgoKCgweDAwMDAg fCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAw eDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMjEpID8gMjEgOiAoKCgoMHgwMDAwIHwgMHgw MDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQw KSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDIwKSA/IDIwIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8 IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAx KSA8PCAxKSkgJiAoMVVMTCA8PCAxOSkgPyAxOSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAw MDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwg MSkpICYgKDFVTEwgPDwgMTgpID8gMTggOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwg MHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAm ICgxVUxMIDw8IDE3KSA/IDE3IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAw NCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVM TCA8PCAxNikgPyAxNiA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAw eDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwg MTUpID8gMTUgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4 IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDE0KSA/ IDE0IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4 MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAxMykgPyAxMyA6 ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAg fCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMTIpID8gMTIgOiAoKCgo MHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgw MDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDExKSA/IDExIDogKCgoKDB4MDAw MCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8 IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAxMCkgPyAxMCA6ICgoKCgweDAwMDAgfCAw eDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAw NDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgOSkgPyA5IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8 IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAx KSA8PCAxKSkgJiAoMVVMTCA8PCA4KSA/IDggOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAy IHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEp KSAmICgxVUxMIDw8IDcpID8gNyA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAw MDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFV TEwgPDwgNikgPyA2IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4 MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA1 KSA/IDUgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwg MHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDQpID8gNCA6 ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAg fCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMykgPyAzIDogKCgoKDB4 MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAy MCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAyKSA/IDIgOiAxKSA6IC0xKSA6IChz aXplb2YoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgw MDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA8PSA0KSA/IF9faWxvZzJfdTMyKCgo KDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4 MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgOiBfX2lsb2cyX3U2NCgoKCgweDAwMDAgfCAweDAw MDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDAp ICsgMSkgPDwgMSkpICkgIT0gc2l6ZW9mKHN0YXRlX2NoYXIpIC0gMSkpKSBfX2NvbXBpbGV0aW1l X2Fzc2VydF8xNDI5KCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHN0YXRl X2NoYXJbc3RhdGVdOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjaGFyIHRhc2tfc3RhdGVfdG9f Y2hhcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGFz a19pbmRleF90b19jaGFyKHRhc2tfc3RhdGVfaW5kZXgodHNrKSk7CjE0NDc0OiB9CjE0NDc0OiAj IDE0NDggIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlzX2dsb2JhbF9pbml0 KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0YXNrX3Rn aWRfbnIodHNrKSA9PSAxOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHBp ZCAqY2FkX3BpZDsKMTQ0NzQ6ICMgMTUxNyAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIGlzX3BlcmNwdV90aHJlYWQodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJl dHVybiAoZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgJiAweDA0MDAwMDAwKSAmJgoxNDQ3NDogICAoZ2V0 X2N1cnJlbnQoKS0+bnJfY3B1c19hbGxvd2VkID09IDEpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogfQoxNDQ3NDogIyAxNTQ5ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgdGFza19ub19uZXdfcHJpdnMoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0 ZXN0X2JpdCgwLCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0YXNrX3NldF9ub19u ZXdfcHJpdnMoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHNldF9iaXQoMCwgJnAtPmF0b21pY19m bGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3NwcmVhZF9wYWdlKHN0cnVjdCB0YXNr X3N0cnVjdCAqcCkgeyByZXR1cm4gdGVzdF9iaXQoMSwgJnAtPmF0b21pY19mbGFncyk7IH0KMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgdGFza19zZXRfc3ByZWFkX3BhZ2Uoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHNl dF9iaXQoMSwgJnAtPmF0b21pY19mbGFncyk7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdGFza19jbGVhcl9zcHJl YWRfcGFnZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgY2xlYXJfYml0KDEsICZwLT5hdG9taWNf ZmxhZ3MpOyB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGFza19zcHJlYWRfc2xhYihzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnApIHsgcmV0dXJuIHRlc3RfYml0KDIsICZwLT5hdG9taWNfZmxhZ3MpOyB9CjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIHRhc2tfc2V0X3NwcmVhZF9zbGFiKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyBz ZXRfYml0KDIsICZwLT5hdG9taWNfZmxhZ3MpOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfY2xlYXJfc3By ZWFkX3NsYWIoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IGNsZWFyX2JpdCgyLCAmcC0+YXRvbWlj X2ZsYWdzKTsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRhc2tfc3BlY19zc2JfZGlzYWJsZShzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnApIHsgcmV0dXJuIHRlc3RfYml0KDMsICZwLT5hdG9taWNfZmxhZ3Mp OyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHRhc2tfc2V0X3NwZWNfc3NiX2Rpc2FibGUoc3RydWN0IHRhc2tfc3Ry dWN0ICpwKSB7IHNldF9iaXQoMywgJnAtPmF0b21pY19mbGFncyk7IH0KMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdGFz a19jbGVhcl9zcGVjX3NzYl9kaXNhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyBjbGVhcl9i aXQoMywgJnAtPmF0b21pY19mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3NwZWNf c3NiX25vZXhlYyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgcmV0dXJuIHRlc3RfYml0KDcsICZw LT5hdG9taWNfZmxhZ3MpOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfc2V0X3NwZWNfc3NiX25vZXhlYyhz dHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgc2V0X2JpdCg3LCAmcC0+YXRvbWljX2ZsYWdzKTsgfQox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCB0YXNrX2NsZWFyX3NwZWNfc3NiX25vZXhlYyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnApIHsgY2xlYXJfYml0KDcsICZwLT5hdG9taWNfZmxhZ3MpOyB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgdGFza19zcGVjX3NzYl9mb3JjZV9kaXNhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyBy ZXR1cm4gdGVzdF9iaXQoNCwgJnAtPmF0b21pY19mbGFncyk7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdGFza19z ZXRfc3BlY19zc2JfZm9yY2VfZGlzYWJsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgc2V0X2Jp dCg0LCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRhc2tfc3BlY19p Yl9kaXNhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyByZXR1cm4gdGVzdF9iaXQoNSwgJnAt PmF0b21pY19mbGFncyk7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdGFza19zZXRfc3BlY19pYl9kaXNhYmxlKHN0 cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyBzZXRfYml0KDUsICZwLT5hdG9taWNfZmxhZ3MpOyB9CjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIHRhc2tfY2xlYXJfc3BlY19pYl9kaXNhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAq cCkgeyBjbGVhcl9iaXQoNSwgJnAtPmF0b21pY19mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCB0YXNrX3NwZWNfaWJfZm9yY2VfZGlzYWJsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgcmV0 dXJuIHRlc3RfYml0KDYsICZwLT5hdG9taWNfZmxhZ3MpOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfc2V0 X3NwZWNfaWJfZm9yY2VfZGlzYWJsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgc2V0X2JpdCg2 LCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBjdXJyZW50 X3Jlc3RvcmVfZmxhZ3ModW5zaWduZWQgbG9uZyBvcmlnX2ZsYWdzLCB1bnNpZ25lZCBsb25nIGZs YWdzKQoxNDQ3NDogewoxNDQ3NDogIGdldF9jdXJyZW50KCktPmZsYWdzICY9IH5mbGFnczsKMTQ0 NzQ6ICBnZXRfY3VycmVudCgpLT5mbGFncyB8PSBvcmlnX2ZsYWdzICYgZmxhZ3M7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgY3B1c2V0X2NwdW1hc2tfY2FuX3Nocmluayhjb25z dCBzdHJ1Y3QgY3B1bWFzayAqY3VyLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqdHJpYWwpOwoxNDQ3 NDogZXh0ZXJuIGludCB0YXNrX2Nhbl9hdHRhY2goc3RydWN0IHRhc2tfc3RydWN0ICpwLCBjb25z dCBzdHJ1Y3QgY3B1bWFzayAqY3NfY3B1c19hbGxvd2VkKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHZvaWQgZG9fc2V0X2NwdXNfYWxsb3dlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGNvbnN0IHN0 cnVjdCBjcHVtYXNrICpuZXdfbWFzayk7CjE0NDc0OiBleHRlcm4gaW50IHNldF9jcHVzX2FsbG93 ZWRfcHRyKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm5ld19t YXNrKTsKMTQ0NzQ6ICMgMTYwMiAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiBleHRl cm4gaW50IHlpZWxkX3RvKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgYm9vbCBwcmVlbXB0KTsKMTQ0 NzQ6IGV4dGVybiB2b2lkIHNldF91c2VyX25pY2Uoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBsb25n IG5pY2UpOwoxNDQ3NDogZXh0ZXJuIGludCB0YXNrX3ByaW8oY29uc3Qgc3RydWN0IHRhc2tfc3Ry dWN0ICpwKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHRhc2tfbmljZShjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgoKHApLT5zdGF0aWNfcHJpbykgLSAoMTAwICsgKDE5 IC0gLTIwICsgMSkgLyAyKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgY2Fu X25pY2UoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwLCBjb25zdCBpbnQgbmljZSk7CjE0NDc0 OiBleHRlcm4gaW50IHRhc2tfY3Vycihjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOwoxNDQ3 NDogZXh0ZXJuIGludCBpZGxlX2NwdShpbnQgY3B1KTsKMTQ0NzQ6IGV4dGVybiBpbnQgYXZhaWxh YmxlX2lkbGVfY3B1KGludCBjcHUpOwoxNDQ3NDogZXh0ZXJuIGludCBzY2hlZF9zZXRzY2hlZHVs ZXIoc3RydWN0IHRhc2tfc3RydWN0ICosIGludCwgY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICop OwoxNDQ3NDogZXh0ZXJuIGludCBzY2hlZF9zZXRzY2hlZHVsZXJfbm9jaGVjayhzdHJ1Y3QgdGFz a19zdHJ1Y3QgKiwgaW50LCBjb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKik7CjE0NDc0OiBleHRl cm4gaW50IHNjaGVkX3NldGF0dHIoc3RydWN0IHRhc2tfc3RydWN0ICosIGNvbnN0IHN0cnVjdCBz Y2hlZF9hdHRyICopOwoxNDQ3NDogZXh0ZXJuIGludCBzY2hlZF9zZXRhdHRyX25vY2hlY2soc3Ry dWN0IHRhc2tfc3RydWN0ICosIGNvbnN0IHN0cnVjdCBzY2hlZF9hdHRyICopOwoxNDQ3NDogZXh0 ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqaWRsZV90YXNrKGludCBjcHUpOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGlz X2lkbGVfdGFzayhjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuICEhKHAtPmZsYWdzICYgMHgwMDAwMDAwMik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IGV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnJfdGFzayhpbnQgY3B1KTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIGlhNjRfc2V0X2N1cnJfdGFzayhpbnQgY3B1LCBzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnApOwoxNDQ3NDogCjE0NDc0OiB2b2lkIHlpZWxkKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiB1bmlv biB0aHJlYWRfdW5pb24gewoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHRhc2tfc3RydWN0IHRhc2s7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHN0 YWNrWygoKDFVTCkgPDwgMTIpIDw8ICgyICsgMCkpL3NpemVvZihsb25nKV07CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1bnNp Z25lZCBsb25nIGluaXRfc3RhY2tbKCgoMVVMKSA8PCAxMikgPDwgKDIgKyAwKSkgLyBzaXplb2Yo dW5zaWduZWQgbG9uZyldOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB0aHJlYWRfaW5m byAqdGFza190aHJlYWRfaW5mbyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICZ0YXNrLT50aHJlYWRfaW5mbzsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTY3OSAi Li9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiBleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0 ICpmaW5kX3Rhc2tfYnlfdnBpZChwaWRfdCBucik7CjE0NDc0OiBleHRlcm4gc3RydWN0IHRhc2tf c3RydWN0ICpmaW5kX3Rhc2tfYnlfcGlkX25zKHBpZF90IG5yLCBzdHJ1Y3QgcGlkX25hbWVzcGFj ZSAqbnMpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3Ry dWN0IHRhc2tfc3RydWN0ICpmaW5kX2dldF90YXNrX2J5X3ZwaWQocGlkX3QgbnIpOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gaW50IHdha2VfdXBfc3RhdGUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ss IHVuc2lnbmVkIGludCBzdGF0ZSk7CjE0NDc0OiBleHRlcm4gaW50IHdha2VfdXBfcHJvY2Vzcyhz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7CjE0NDc0OiBleHRlcm4gdm9pZCB3YWtlX3VwX25ld190 YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBraWNrX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICp0c2spOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBfX3NldF90YXNrX2NvbW0o c3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGNvbnN0IGNoYXIgKmZyb20sIGJvb2wgZXhlYyk7CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgc2V0X3Rhc2tfY29tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywg Y29uc3QgY2hhciAqZnJvbSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX3NldF90YXNrX2NvbW0odHNrLCBm cm9tLCBmYWxzZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjaGFyICpfX2dldF90 YXNrX2NvbW0oY2hhciAqdG8sIHNpemVfdCBsZW4sIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZv aWQgc2NoZWR1bGVyX2lwaSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIHdhaXRf dGFza19pbmFjdGl2ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgbG9uZyBtYXRjaF9zdGF0ZSk7CjE0 NDc0OiAjIDE3MjUgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzZXRfdHNr X3RocmVhZF9mbGFnKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBpbnQgZmxhZykKMTQ0NzQ6IHsK MTQ0NzQ6ICBzZXRfdGlfdGhyZWFkX2ZsYWcodGFza190aHJlYWRfaW5mbyh0c2spLCBmbGFnKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGVhcl90c2tfdGhyZWFkX2ZsYWcoc3RydWN0 IHRhc2tfc3RydWN0ICp0c2ssIGludCBmbGFnKQoxNDQ3NDogewoxNDQ3NDogIGNsZWFyX3RpX3Ro cmVhZF9mbGFnKHRhc2tfdGhyZWFkX2luZm8odHNrKSwgZmxhZyk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgdXBkYXRlX3Rza190aHJlYWRfZmxhZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRz aywgaW50IGZsYWcsCjE0NDc0OiAgICAgICAgYm9vbCB2YWx1ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1 cGRhdGVfdGlfdGhyZWFkX2ZsYWcodGFza190aHJlYWRfaW5mbyh0c2spLCBmbGFnLCB2YWx1ZSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0ZXN0X2FuZF9zZXRfdHNrX3RocmVhZF9mbGFn KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBpbnQgZmxhZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gdGVzdF9hbmRfc2V0X3RpX3RocmVhZF9mbGFnKHRhc2tfdGhyZWFkX2luZm8odHNrKSwgZmxh Zyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0ZXN0X2FuZF9jbGVhcl90c2tfdGhyZWFk X2ZsYWcoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGludCBmbGFnKQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiB0ZXN0X2FuZF9jbGVhcl90aV90aHJlYWRfZmxhZyh0YXNrX3RocmVhZF9pbmZvKHRz ayksIGZsYWcpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGVzdF90c2tfdGhyZWFkX2Zs YWcoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGludCBmbGFnKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiB0ZXN0X3RpX3RocmVhZF9mbGFnKHRhc2tfdGhyZWFkX2luZm8odHNrKSwgZmxhZyk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X3Rza19uZWVkX3Jlc2NoZWQoc3RydWN0IHRh c2tfc3RydWN0ICp0c2spCjE0NDc0OiB7CjE0NDc0OiAgc2V0X3Rza190aHJlYWRfZmxhZyh0c2ss Myk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY2xlYXJfdHNrX25lZWRfcmVzY2hlZChz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBjbGVhcl90c2tfdGhyZWFk X2ZsYWcodHNrLDMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGVzdF90c2tfbmVlZF9y ZXNjaGVkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBf X2J1aWx0aW5fZXhwZWN0KCEhKHRlc3RfdHNrX3RocmVhZF9mbGFnKHRzaywzKSksIDApOwoxNDQ3 NDogfQoxNDQ3NDogIyAxNzc4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKMTQ0NzQ6IGV4dGVy biBpbnQgX2NvbmRfcmVzY2hlZCh2b2lkKTsKMTQ0NzQ6ICMgMTc4OCAiLi9pbmNsdWRlL2xpbnV4 L3NjaGVkLmgiCjE0NDc0OiBleHRlcm4gaW50IF9fY29uZF9yZXNjaGVkX2xvY2soc3BpbmxvY2tf dCAqbG9jayk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGNvbmRfcmVzY2hlZF9yY3Uodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3 NDogIHJjdV9yZWFkX3VubG9jaygpOwoxNDQ3NDogICh7IF9fX21pZ2h0X3NsZWVwKCJpbmNsdWRl L2xpbnV4L3NjaGVkLmgiLCAxNzk5LCAwKTsgX2NvbmRfcmVzY2hlZCgpOyB9KTsKMTQ0NzQ6ICBy Y3VfcmVhZF9sb2NrKCk7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBzcGluX25lZWRicmVhayhzcGlubG9j a190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVy biAwOwoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgYm9vbCBuZWVkX3Jlc2NoZWQodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gX19idWlsdGluX2V4cGVjdCghISh0ZXN0X3RpX3RocmVhZF9mbGFnKCgoc3RydWN0IHRo cmVhZF9pbmZvICopZ2V0X2N1cnJlbnQoKSksIDMpKSwgMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQg dGFza19jcHUoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwKQoxNDQ3NDogewoxNDQ3NDogCjE0 NDc0OiAgcmV0dXJuICh7IHVuaW9uIHsgdHlwZW9mKHAtPmNwdSkgX192YWw7IGNoYXIgX19jWzFd OyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihwLT5jcHUpLCBfX3UuX19jLCBzaXpl b2YocC0+Y3B1KSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYocC0+Y3B1KSwgX191 Ll9fYywgc2l6ZW9mKHAtPmNwdSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9p ZCBzZXRfdGFza19jcHUoc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1bnNpZ25lZCBpbnQgY3B1KTsK MTQ0NzQ6ICMgMTg2NyAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiBleHRlcm4gbG9u ZyBzY2hlZF9zZXRhZmZpbml0eShwaWRfdCBwaWQsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpuZXdf bWFzayk7CjE0NDc0OiBleHRlcm4gbG9uZyBzY2hlZF9nZXRhZmZpbml0eShwaWRfdCBwaWQsIHN0 cnVjdCBjcHVtYXNrICptYXNrKTsKMTQ0NzQ6ICMgMTg4MCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVk LmgiCjE0NDc0OiBlbnVtIHJzZXFfZXZlbnRfbWFza19iaXRzIHsKMTQ0NzQ6ICBSU0VRX0VWRU5U X1BSRUVNUFRfQklUID0gUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fUFJFRU1QVF9CSVQsCjE0 NDc0OiAgUlNFUV9FVkVOVF9TSUdOQUxfQklUID0gUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05f U0lHTkFMX0JJVCwKMTQ0NzQ6ICBSU0VRX0VWRU5UX01JR1JBVEVfQklUID0gUlNFUV9DU19GTEFH X05PX1JFU1RBUlRfT05fTUlHUkFURV9CSVQsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVt IHJzZXFfZXZlbnRfbWFzayB7CjE0NDc0OiAgUlNFUV9FVkVOVF9QUkVFTVBUID0gKDFVIDw8IFJT RVFfRVZFTlRfUFJFRU1QVF9CSVQpLAoxNDQ3NDogIFJTRVFfRVZFTlRfU0lHTkFMID0gKDFVIDw8 IFJTRVFfRVZFTlRfU0lHTkFMX0JJVCksCjE0NDc0OiAgUlNFUV9FVkVOVF9NSUdSQVRFID0gKDFV IDw8IFJTRVFfRVZFTlRfTUlHUkFURV9CSVQpLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCByc2VxX3NldF9ub3RpZnlfcmVzdW1lKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBpZiAodC0+cnNlcSkKMTQ0NzQ6ICAgc2V0X3Rza190aHJlYWRfZmxhZyh0LCAxKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdm9pZCBfX3JzZXFfaGFuZGxlX25vdGlmeV9yZXN1bWUo c3RydWN0IGtzaWduYWwgKnNpZywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHJzZXFfaGFuZGxlX25vdGlmeV9yZXN1bWUoc3RydWN0IGtzaWduYWwgKmtzaWcsCjE0 NDc0OiAgICAgICAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCjE0NDc0OiB7CjE0NDc0OiAgaWYg KGdldF9jdXJyZW50KCktPnJzZXEpCjE0NDc0OiAgIF9fcnNlcV9oYW5kbGVfbm90aWZ5X3Jlc3Vt ZShrc2lnLCByZWdzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByc2VxX3NpZ25hbF9k ZWxpdmVyKHN0cnVjdCBrc2lnbmFsICprc2lnLAoxNDQ3NDogICAgICAgICAgICBzdHJ1Y3QgcHRf cmVncyAqcmVncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6 Im1lbW9yeSIpOwoxNDQ3NDogIF9fc2V0X2JpdChSU0VRX0VWRU5UX1NJR05BTF9CSVQsICZnZXRf Y3VycmVudCgpLT5yc2VxX2V2ZW50X21hc2spOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9f KCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgcnNlcV9oYW5kbGVfbm90aWZ5X3Jlc3VtZShrc2ln LCByZWdzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJzZXFfcHJlZW1w dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpCjE0NDc0OiB7CjE0NDc0OiAgX19zZXRfYml0KFJTRVFf RVZFTlRfUFJFRU1QVF9CSVQsICZ0LT5yc2VxX2V2ZW50X21hc2spOwoxNDQ3NDogIHJzZXFfc2V0 X25vdGlmeV9yZXN1bWUodCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBy c2VxX21pZ3JhdGUoc3RydWN0IHRhc2tfc3RydWN0ICp0KQoxNDQ3NDogewoxNDQ3NDogIF9fc2V0 X2JpdChSU0VRX0VWRU5UX01JR1JBVEVfQklULCAmdC0+cnNlcV9ldmVudF9tYXNrKTsKMTQ0NzQ6 ICByc2VxX3NldF9ub3RpZnlfcmVzdW1lKHQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcnNlcV9mb3JrKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdCwgdW5zaWduZWQgbG9uZyBjbG9uZV9mbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAo Y2xvbmVfZmxhZ3MgJiAweDAwMDAwMTAwKSB7CjE0NDc0OiAgIHQtPnJzZXEgPSAoKHZvaWQgKikw KTsKMTQ0NzQ6ICAgdC0+cnNlcV9zaWcgPSAwOwoxNDQ3NDogICB0LT5yc2VxX2V2ZW50X21hc2sg PSAwOwoxNDQ3NDogIH0gZWxzZSB7CjE0NDc0OiAgIHQtPnJzZXEgPSBnZXRfY3VycmVudCgpLT5y c2VxOwoxNDQ3NDogICB0LT5yc2VxX3NpZyA9IGdldF9jdXJyZW50KCktPnJzZXFfc2lnOwoxNDQ3 NDogICB0LT5yc2VxX2V2ZW50X21hc2sgPSBnZXRfY3VycmVudCgpLT5yc2VxX2V2ZW50X21hc2s7 CjE0NDc0OiAgfQoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJzZXFfZXhlY3ZlKHN0cnVj dCB0YXNrX3N0cnVjdCAqdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB0LT5yc2VxID0gKCh2b2lkICopMCk7 CjE0NDc0OiAgdC0+cnNlcV9zaWcgPSAwOwoxNDQ3NDogIHQtPnJzZXFfZXZlbnRfbWFzayA9IDA7 CjE0NDc0OiB9CjE0NDc0OiAjIDE5ODIgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDog dm9pZCBfX2V4aXRfdW1oKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBleGl0X3VtaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBp ZiAoX19idWlsdGluX2V4cGVjdCghISh0c2stPmZsYWdzICYgMHgwMjAwMDAwMCksIDApKQoxNDQ3 NDogICBfX2V4aXRfdW1oKHRzayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcnNlcV9zeXNjYWxsKHN0 cnVjdCBwdF9yZWdzICpyZWdzKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogY29uc3Qgc3RydWN0IHNjaGVkX2F2ZyAqc2NoZWRfdHJhY2VfY2ZzX3JxX2F2 ZyhzdHJ1Y3QgY2ZzX3JxICpjZnNfcnEpOwoxNDQ3NDogY2hhciAqc2NoZWRfdHJhY2VfY2ZzX3Jx X3BhdGgoc3RydWN0IGNmc19ycSAqY2ZzX3JxLCBjaGFyICpzdHIsIGludCBsZW4pOwoxNDQ3NDog aW50IHNjaGVkX3RyYWNlX2Nmc19ycV9jcHUoc3RydWN0IGNmc19ycSAqY2ZzX3JxKTsKMTQ0NzQ6 IAoxNDQ3NDogY29uc3Qgc3RydWN0IHNjaGVkX2F2ZyAqc2NoZWRfdHJhY2VfcnFfYXZnX3J0KHN0 cnVjdCBycSAqcnEpOwoxNDQ3NDogY29uc3Qgc3RydWN0IHNjaGVkX2F2ZyAqc2NoZWRfdHJhY2Vf cnFfYXZnX2RsKHN0cnVjdCBycSAqcnEpOwoxNDQ3NDogY29uc3Qgc3RydWN0IHNjaGVkX2F2ZyAq c2NoZWRfdHJhY2VfcnFfYXZnX2lycShzdHJ1Y3QgcnEgKnJxKTsKMTQ0NzQ6IAoxNDQ3NDogaW50 IHNjaGVkX3RyYWNlX3JxX2NwdShzdHJ1Y3QgcnEgKnJxKTsKMTQ0NzQ6IAoxNDQ3NDogY29uc3Qg c3RydWN0IGNwdW1hc2sgKnNjaGVkX3RyYWNlX3JkX3NwYW4oc3RydWN0IHJvb3RfZG9tYWluICpy ZCk7CjE0NDc0OiAjIDYgIi4vaW5jbHVkZS9saW51eC9pb3ByaW8uaCIgMgoxNDQ3NDogIyAxICIu L2luY2x1ZGUvbGludXgvc2NoZWQvcnQuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0OwoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgcnRfcHJpbyhpbnQgcHJpbykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoX19idWlsdGlu X2V4cGVjdCghIShwcmlvIDwgMTAwKSwgMCkpCjE0NDc0OiAgIHJldHVybiAxOwoxNDQ3NDogIHJl dHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcnRfdGFzayhzdHJ1Y3QgdGFza19z dHJ1Y3QgKnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJ0X3ByaW8ocC0+cHJpbyk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGFza19pc19yZWFsdGltZShzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgcG9saWN5ID0gdHNrLT5wb2xpY3k7CjE0NDc0 OiAKMTQ0NzQ6ICBpZiAocG9saWN5ID09IDEgfHwgcG9saWN5ID09IDIpCjE0NDc0OiAgIHJldHVy biB0cnVlOwoxNDQ3NDogIGlmIChwb2xpY3kgPT0gNikKMTQ0NzQ6ICAgcmV0dXJuIHRydWU7CjE0 NDc0OiAgcmV0dXJuIGZhbHNlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB0YXNrX3N0cnVjdCAqcnRfbXV0ZXhfZ2V0X3RvcF90 YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcC0+cGlf dG9wX3Rhc2s7CjE0NDc0OiB9CjE0NDc0OiBleHRlcm4gdm9pZCBydF9tdXRleF9zZXRwcmlvKHN0 cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHRhc2tfc3RydWN0ICpwaV90YXNrKTsKMTQ0NzQ6 IGV4dGVybiB2b2lkIHJ0X211dGV4X2FkanVzdF9waShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOwox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCB0c2tfaXNfcGlfYmxvY2tlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdHNrLT5waV9ibG9ja2VkX29uICE9ICgodm9pZCAqKTApOwox NDQ3NDogfQoxNDQ3NDogIyA1OCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkL3J0LmgiCjE0NDc0OiBl eHRlcm4gdm9pZCBub3JtYWxpemVfcnRfdGFza3Modm9pZCk7CjE0NDc0OiAjIDcgIi4vaW5jbHVk ZS9saW51eC9pb3ByaW8uaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvaW9jb250ZXh0 LmgiIDEKMTQ0NzQ6ICMgOSAiLi9pbmNsdWRlL2xpbnV4L2lvY29udGV4dC5oIgoxNDQ3NDogZW51 bSB7CjE0NDc0OiAgSUNRX0VYSVRFRCA9IDEgPDwgMiwKMTQ0NzQ6IH07CjE0NDc0OiAjIDcyICIu L2luY2x1ZGUvbGludXgvaW9jb250ZXh0LmgiCjE0NDc0OiBzdHJ1Y3QgaW9fY3EgewoxNDQ3NDog IHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxOwoxNDQ3NDogIHN0cnVjdCBpb19jb250ZXh0ICppb2M7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBsaXN0X2hlYWQgcV9ub2RlOwoxNDQ3NDog ICBzdHJ1Y3Qga21lbV9jYWNoZSAqX19yY3VfaWNxX2NhY2hlOwoxNDQ3NDogIH07CjE0NDc0OiAg dW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgaGxpc3Rfbm9kZSBpb2Nfbm9kZTsKMTQ0NzQ6ICAgc3Ry dWN0IGNhbGxiYWNrX2hlYWQgX19yY3VfaGVhZDsKMTQ0NzQ6ICB9OwoxNDQ3NDogCjE0NDc0OiAg dW5zaWduZWQgaW50IGZsYWdzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaW9fY29udGV4dCB7CjE0NDc0OiAgYXRvbWljX2xv bmdfdCByZWZjb3VudDsKMTQ0NzQ6ICBhdG9taWNfdCBhY3RpdmVfcmVmOwoxNDQ3NDogIGF0b21p Y190IG5yX3Rhc2tzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzcGlubG9ja190IGxvY2s7CjE0 NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBpb3ByaW87CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgbnJfYmF0Y2hfcmVxdWVzdHM7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyBsYXN0X3dhaXRlZDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB4YXJyYXkgaWNxX3Ry ZWU7CjE0NDc0OiAgc3RydWN0IGlvX2NxICppY3FfaGludDsKMTQ0NzQ6ICBzdHJ1Y3QgaGxpc3Rf aGVhZCBpY3FfbGlzdDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB3b3JrX3N0cnVjdCByZWxlYXNl X3dvcms7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMjkgIi4vaW5jbHVkZS9saW51eC9pb2NvbnRleHQu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgZ2V0X2lvX2NvbnRleHRfYWN0aXZlKHN0cnVjdCBpb19jb250ZXh0ICpp b2MpCjE0NDc0OiB7CjE0NDc0OiAgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAhIShhdG9taWNfbG9u Z19yZWFkKCZpb2MtPnJlZmNvdW50KSA8PSAwKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19y ZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAi LmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxu IiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxu IiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0 LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVn X2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIg KCJpbmNsdWRlL2xpbnV4L2lvY29udGV4dC5oIiksICJpIiAoMTMxKSwgImkiICgoMSA8PCAwKXwo KDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7 IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5k aXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxu XHQiIDogOiAiaSIgKDI1KSk7IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShf X3JldF93YXJuX29uKSwgMCk7IH0pOwoxNDQ3NDogICh7IGludCBfX3JldF93YXJuX29uID0gISEo YXRvbWljX3JlYWQoJmlvYy0+YWN0aXZlX3JlZikgPD0gMCk7IGlmIChfX2J1aWx0aW5fZXhwZWN0 KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgi MTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxc ImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVn X2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxl XG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAi XHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6 IDogImkiICgiaW5jbHVkZS9saW51eC9pb2NvbnRleHQuaCIpLCAiaSIgKDEzMiksICJpIiAoKDEg PDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2Vu dHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2Vj dGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNl Y3Rpb25cblx0IiA6IDogImkiICgyNikpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBl Y3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6ICBhdG9taWNfbG9uZ19pbmMoJmlv Yy0+cmVmY291bnQpOwoxNDQ3NDogIGF0b21pY19pbmMoJmlvYy0+YWN0aXZlX3JlZik7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW9jX3Rhc2tfbGluayhzdHJ1Y3QgaW9fY29udGV4dCAq aW9jKQoxNDQ3NDogewoxNDQ3NDogIGdldF9pb19jb250ZXh0X2FjdGl2ZShpb2MpOwoxNDQ3NDog CjE0NDc0OiAgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAhIShhdG9taWNfcmVhZCgmaW9jLT5ucl90 YXNrcykgPD0gMCk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkg ZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIi ICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAi ICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAi JWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBi dWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIg Ilx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9p b2NvbnRleHQuaCIpLCAiaSIgKDE0MSksICJpIiAoKDEgPDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8 PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsg YXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVc blx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgyNykp OyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDAp OyB9KTsKMTQ0NzQ6ICBhdG9taWNfaW5jKCZpb2MtPm5yX3Rhc2tzKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0OwoxNDQ3NDogCjE0NDc0OiB2b2lkIHB1dF9pb19j b250ZXh0KHN0cnVjdCBpb19jb250ZXh0ICppb2MpOwoxNDQ3NDogdm9pZCBwdXRfaW9fY29udGV4 dF9hY3RpdmUoc3RydWN0IGlvX2NvbnRleHQgKmlvYyk7CjE0NDc0OiB2b2lkIGV4aXRfaW9fY29u dGV4dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spOwoxNDQ3NDogc3RydWN0IGlvX2NvbnRleHQg KmdldF90YXNrX2lvX2NvbnRleHQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLAoxNDQ3NDogICAg ICAgICAgICBnZnBfdCBnZnBfZmxhZ3MsIGludCBub2RlKTsKMTQ0NzQ6ICMgOCAiLi9pbmNsdWRl L2xpbnV4L2lvcHJpby5oIiAyCjE0NDc0OiAjIDI3ICIuL2luY2x1ZGUvbGludXgvaW9wcmlvLmgi CjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBJT1BSSU9fQ0xBU1NfTk9ORSwKMTQ0NzQ6ICBJT1BSSU9f Q0xBU1NfUlQsCjE0NDc0OiAgSU9QUklPX0NMQVNTX0JFLAoxNDQ3NDogIElPUFJJT19DTEFTU19J RExFLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIElPUFJJT19XSE9fUFJPQ0VTUyA9IDEsCjE0NDc0 OiAgSU9QUklPX1dIT19QR1JQLAoxNDQ3NDogIElPUFJJT19XSE9fVVNFUiwKMTQ0NzQ6IH07CjE0 NDc0OiAjIDU0ICIuL2luY2x1ZGUvbGludXgvaW9wcmlvLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGFza19uaWNl X2lvcHJpbyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu ICh0YXNrX25pY2UodGFzaykgKyAyMCkgLyA1OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0YXNrX25pY2VfaW9jbGFzcyhzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRhc2spCjE0NDc0OiB7CjE0NDc0OiAgaWYgKHRhc2stPnBvbGljeSA9PSA1 KQoxNDQ3NDogICByZXR1cm4gSU9QUklPX0NMQVNTX0lETEU7CjE0NDc0OiAgZWxzZSBpZiAodGFz a19pc19yZWFsdGltZSh0YXNrKSkKMTQ0NzQ6ICAgcmV0dXJuIElPUFJJT19DTEFTU19SVDsKMTQ0 NzQ6ICBlbHNlCjE0NDc0OiAgIHJldHVybiBJT1BSSU9fQ0xBU1NfQkU7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGdldF9jdXJyZW50 X2lvcHJpbyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBpb19jb250ZXh0ICppb2MgPSBn ZXRfY3VycmVudCgpLT5pb19jb250ZXh0OwoxNDQ3NDogCjE0NDc0OiAgaWYgKGlvYykKMTQ0NzQ6 ICAgcmV0dXJuIGlvYy0+aW9wcmlvOwoxNDQ3NDogIHJldHVybiAoKChJT1BSSU9fQ0xBU1NfTk9O RSkgPDwgKDEzKSkgfCAwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIGludCBpb3ByaW9fYmVzdCh1bnNpZ25lZCBzaG9ydCBhcHJpbywgdW5z aWduZWQgc2hvcnQgYnByaW8pOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHNldF90YXNrX2lv cHJpbyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGludCBpb3ByaW8pOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBpbnQgaW9wcmlvX2NoZWNrX2NhcChpbnQgaW9wcmlvKTsKMTQ0NzQ6 ICMgNDAgIi4vaW5jbHVkZS9saW51eC9mcy5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51 eC9mc190eXBlcy5oIiAxCjE0NDc0OiAjIDcxICIuL2luY2x1ZGUvbGludXgvZnNfdHlwZXMuaCIK MTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBjaGFyIGZzX2Z0eXBlX3RvX2R0eXBlKHVuc2lnbmVkIGlu dCBmaWxldHlwZSk7CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgY2hhciBmc191bW9kZV90b19mdHlw ZSh1bW9kZV90IG1vZGUpOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGNoYXIgZnNfdW1vZGVfdG9f ZHR5cGUodW1vZGVfdCBtb2RlKTsKMTQ0NzQ6ICMgNDEgIi4vaW5jbHVkZS9saW51eC9mcy5oIiAy CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3Vh cGkvbGludXgvZnMuaCIgMQoxNDQ3NDogIyA1NCAiLi9pbmNsdWRlL3VhcGkvbGludXgvZnMuaCIK MTQ0NzQ6IHN0cnVjdCBmaWxlX2Nsb25lX3JhbmdlIHsKMTQ0NzQ6ICBfX3M2NCBzcmNfZmQ7CjE0 NDc0OiAgX191NjQgc3JjX29mZnNldDsKMTQ0NzQ6ICBfX3U2NCBzcmNfbGVuZ3RoOwoxNDQ3NDog IF9fdTY0IGRlc3Rfb2Zmc2V0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZzdHJp bV9yYW5nZSB7CjE0NDc0OiAgX191NjQgc3RhcnQ7CjE0NDc0OiAgX191NjQgbGVuOwoxNDQ3NDog IF9fdTY0IG1pbmxlbjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZmlsZV9kZWR1cGVfcmFuZ2VfaW5mbyB7CjE0 NDc0OiAgX19zNjQgZGVzdF9mZDsKMTQ0NzQ6ICBfX3U2NCBkZXN0X29mZnNldDsKMTQ0NzQ6ICBf X3U2NCBieXRlc19kZWR1cGVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fczMyIHN0YXR1czsKMTQ0NzQ6ICBfX3UzMiByZXNlcnZlZDsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZpbGVfZGVkdXBlX3Jhbmdl IHsKMTQ0NzQ6ICBfX3U2NCBzcmNfb2Zmc2V0OwoxNDQ3NDogIF9fdTY0IHNyY19sZW5ndGg7CjE0 NDc0OiAgX191MTYgZGVzdF9jb3VudDsKMTQ0NzQ6ICBfX3UxNiByZXNlcnZlZDE7CjE0NDc0OiAg X191MzIgcmVzZXJ2ZWQyOwoxNDQ3NDogIHN0cnVjdCBmaWxlX2RlZHVwZV9yYW5nZV9pbmZvIGlu Zm9bMF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmaWxlc19zdGF0 X3N0cnVjdCB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBucl9maWxlczsKMTQ0NzQ6ICB1bnNpZ25l ZCBsb25nIG5yX2ZyZWVfZmlsZXM7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtYXhfZmlsZXM7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaW5vZGVzX3N0YXRfdCB7CjE0NDc0OiAgbG9u ZyBucl9pbm9kZXM7CjE0NDc0OiAgbG9uZyBucl91bnVzZWQ7CjE0NDc0OiAgbG9uZyBkdW1teVs1 XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmc3hhdHRyIHsKMTQ0NzQ6ICBfX3UzMiBmc3hfeGZs YWdzOwoxNDQ3NDogIF9fdTMyIGZzeF9leHRzaXplOwoxNDQ3NDogIF9fdTMyIGZzeF9uZXh0ZW50 czsKMTQ0NzQ6ICBfX3UzMiBmc3hfcHJvamlkOwoxNDQ3NDogIF9fdTMyIGZzeF9jb3dleHRzaXpl OwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgZnN4X3BhZFs4XTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDI4 NSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZnMuaCIKMTQ0NzQ6IHR5cGVkZWYgaW50IF9fa2VybmVs X3J3Zl90OwoxNDQ3NDogIyA0NiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGJhY2tpbmdfZGV2X2luZm87CjE0NDc0OiBzdHJ1Y3QgYmRpX3dyaXRlYmFjazsK MTQ0NzQ6IHN0cnVjdCBiaW87CjE0NDc0OiBzdHJ1Y3QgZXhwb3J0X29wZXJhdGlvbnM7CjE0NDc0 OiBzdHJ1Y3QgaGRfZ2VvbWV0cnk7CjE0NDc0OiBzdHJ1Y3QgaW92ZWM7CjE0NDc0OiBzdHJ1Y3Qg a2lvY2I7CjE0NDc0OiBzdHJ1Y3Qga29iamVjdDsKMTQ0NzQ6IHN0cnVjdCBwaXBlX2lub2RlX2lu Zm87CjE0NDc0OiBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3Q7CjE0NDc0OiBzdHJ1Y3Qga3N0YXRm czsKMTQ0NzQ6IHN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKMTQ0NzQ6IHN0cnVjdCB2ZnNtb3VudDsK MTQ0NzQ6IHN0cnVjdCBjcmVkOwoxNDQ3NDogc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3Q7CjE0NDc0 OiBzdHJ1Y3Qgc2VxX2ZpbGU7CjE0NDc0OiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdDsKMTQ0NzQ6 IHN0cnVjdCBpb3ZfaXRlcjsKMTQ0NzQ6IHN0cnVjdCBmc2NyeXB0X2luZm87CjE0NDc0OiBzdHJ1 Y3QgZnNjcnlwdF9vcGVyYXRpb25zOwoxNDQ3NDogc3RydWN0IGZzdmVyaXR5X2luZm87CjE0NDc0 OiBzdHJ1Y3QgZnN2ZXJpdHlfb3BlcmF0aW9uczsKMTQ0NzQ6IHN0cnVjdCBmc19jb250ZXh0Owox NDQ3NDogc3RydWN0IGZzX3BhcmFtZXRlcl9zcGVjOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9p ZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVf XygoX19jb2xkX18pKSBpbm9kZV9pbml0KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19hdHRy aWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29s ZF9fKSkgaW5vZGVfaW5pdF9lYXJseSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0cmli dXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRf XykpIGZpbGVzX2luaXQodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChf X3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBmaWxl c19tYXhmaWxlc19pbml0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGZpbGVz X3N0YXRfc3RydWN0IGZpbGVzX3N0YXQ7CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBnZXRf bWF4X2ZpbGVzKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGludCBzeXNjdGxfbnJfb3Bl bjsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgaW5vZGVzX3N0YXRfdCBpbm9kZXNfc3RhdDsKMTQ0NzQ6 IGV4dGVybiBpbnQgbGVhc2VzX2VuYWJsZSwgbGVhc2VfYnJlYWtfdGltZTsKMTQ0NzQ6IGV4dGVy biBpbnQgc3lzY3RsX3Byb3RlY3RlZF9zeW1saW5rczsKMTQ0NzQ6IGV4dGVybiBpbnQgc3lzY3Rs X3Byb3RlY3RlZF9oYXJkbGlua3M7CjE0NDc0OiBleHRlcm4gaW50IHN5c2N0bF9wcm90ZWN0ZWRf Zmlmb3M7CjE0NDc0OiBleHRlcm4gaW50IHN5c2N0bF9wcm90ZWN0ZWRfcmVndWxhcjsKMTQ0NzQ6 IAoxNDQ3NDogdHlwZWRlZiBfX2tlcm5lbF9yd2ZfdCByd2ZfdDsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGJ1ZmZlcl9oZWFkOwoxNDQ3NDogdHlwZWRlZiBpbnQgKGdldF9ibG9ja190KShzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzZWN0b3JfdCBpYmxvY2ssCjE0NDc0OiAgICBzdHJ1Y3QgYnVmZmVyX2hl YWQgKmJoX3Jlc3VsdCwgaW50IGNyZWF0ZSk7CjE0NDc0OiB0eXBlZGVmIGludCAoZGlvX2lvZG9u ZV90KShzdHJ1Y3Qga2lvY2IgKmlvY2IsIGxvZmZfdCBvZmZzZXQsCjE0NDc0OiAgICBzc2l6ZV90 IGJ5dGVzLCB2b2lkICpwcml2YXRlKTsKMTQ0NzQ6ICMgMjI0ICIuL2luY2x1ZGUvbGludXgvZnMu aCIKMTQ0NzQ6IHN0cnVjdCBpYXR0ciB7CjE0NDc0OiAgdW5zaWduZWQgaW50IGlhX3ZhbGlkOwox NDQ3NDogIHVtb2RlX3QgaWFfbW9kZTsKMTQ0NzQ6ICBrdWlkX3QgaWFfdWlkOwoxNDQ3NDogIGtn aWRfdCBpYV9naWQ7CjE0NDc0OiAgbG9mZl90IGlhX3NpemU7CjE0NDc0OiAgc3RydWN0IHRpbWVz cGVjNjQgaWFfYXRpbWU7CjE0NDc0OiAgc3RydWN0IHRpbWVzcGVjNjQgaWFfbXRpbWU7CjE0NDc0 OiAgc3RydWN0IHRpbWVzcGVjNjQgaWFfY3RpbWU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGZpbGUgKmlhX2ZpbGU7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9xdW90YS5oIiAxCjE0NDc0OiAjIDQwICIuL2luY2x1ZGUvbGludXgvcXVvdGEuaCIK MTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdV9jb3VudGVyLmgiIDEKMTQ0NzQ6ICMg MjAgIi4vaW5jbHVkZS9saW51eC9wZXJjcHVfY291bnRlci5oIgoxNDQ3NDogc3RydWN0IHBlcmNw dV9jb3VudGVyIHsKMTQ0NzQ6ICByYXdfc3BpbmxvY2tfdCBsb2NrOwoxNDQ3NDogIHM2NCBjb3Vu dDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKMTQ0NzQ6IAoxNDQ3NDog IHMzMiAqY291bnRlcnM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHBlcmNw dV9jb3VudGVyX2JhdGNoOwoxNDQ3NDogCjE0NDc0OiBpbnQgX19wZXJjcHVfY291bnRlcl9pbml0 KHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjLCBzNjQgYW1vdW50LCBnZnBfdCBnZnAsCjE0NDc0 OiAgICAgIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KTsKMTQ0NzQ6ICMgNDEgIi4vaW5jbHVk ZS9saW51eC9wZXJjcHVfY291bnRlci5oIgoxNDQ3NDogdm9pZCBwZXJjcHVfY291bnRlcl9kZXN0 cm95KHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKTsKMTQ0NzQ6IHZvaWQgcGVyY3B1X2NvdW50 ZXJfc2V0KHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjLCBzNjQgYW1vdW50KTsKMTQ0NzQ6IHZv aWQgcGVyY3B1X2NvdW50ZXJfYWRkX2JhdGNoKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjLCBz NjQgYW1vdW50LAoxNDQ3NDogICAgICAgICAgczMyIGJhdGNoKTsKMTQ0NzQ6IHM2NCBfX3BlcmNw dV9jb3VudGVyX3N1bShzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYyk7CjE0NDc0OiBpbnQgX19w ZXJjcHVfY291bnRlcl9jb21wYXJlKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjLCBzNjQgcmhz LCBzMzIgYmF0Y2gpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGVyY3B1X2NvdW50ZXJfY29tcGFyZShz dHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYywgczY0IHJocykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gX19wZXJjcHVfY291bnRlcl9jb21wYXJlKGZiYywgcmhzLCBwZXJjcHVfY291bnRlcl9iYXRj aCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X2NvdW50ZXJfYWRkKHN0cnVj dCBwZXJjcHVfY291bnRlciAqZmJjLCBzNjQgYW1vdW50KQoxNDQ3NDogewoxNDQ3NDogIHBlcmNw dV9jb3VudGVyX2FkZF9iYXRjaChmYmMsIGFtb3VudCwgcGVyY3B1X2NvdW50ZXJfYmF0Y2gpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQgcGVyY3B1X2NvdW50ZXJfc3VtX3Bvc2l0aXZlKHN0 cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKQoxNDQ3NDogewoxNDQ3NDogIHM2NCByZXQgPSBfX3Bl cmNwdV9jb3VudGVyX3N1bShmYmMpOwoxNDQ3NDogIHJldHVybiByZXQgPCAwID8gMCA6IHJldDsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IHBlcmNwdV9jb3VudGVyX3N1bShzdHJ1Y3QgcGVy Y3B1X2NvdW50ZXIgKmZiYykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19wZXJjcHVfY291bnRl cl9zdW0oZmJjKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IHBlcmNwdV9jb3VudGVyX3Jl YWQoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZi Yy0+Y291bnQ7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzNjQgcGVyY3B1X2NvdW50ZXJfcmVhZF9wb3NpdGl2ZShzdHJ1Y3Qg cGVyY3B1X2NvdW50ZXIgKmZiYykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzNjQgcmV0ID0gZmJjLT5jb3Vu dDsKMTQ0NzQ6IAoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7 CjE0NDc0OiAgaWYgKHJldCA+PSAwKQoxNDQ3NDogICByZXR1cm4gcmV0OwoxNDQ3NDogIHJldHVy biAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHBlcmNwdV9jb3VudGVyX2luaXRpYWxp emVkKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAo ZmJjLT5jb3VudGVycyAhPSAoKHZvaWQgKikwKSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE3NyAiLi9p bmNsdWRlL2xpbnV4L3BlcmNwdV9jb3VudGVyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBlcmNwdV9jb3VudGVy X2luYyhzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYykKMTQ0NzQ6IHsKMTQ0NzQ6ICBwZXJjcHVf Y291bnRlcl9hZGQoZmJjLCAxKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZXJjcHVf Y291bnRlcl9kZWMoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpCjE0NDc0OiB7CjE0NDc0OiAg cGVyY3B1X2NvdW50ZXJfYWRkKGZiYywgLTEpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IHBlcmNwdV9jb3VudGVyX3N1YihzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYywgczY0IGFtb3Vu dCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBwZXJjcHVfY291bnRlcl9hZGQoZmJjLCAtYW1vdW50KTsKMTQ0 NzQ6IH0KMTQ0NzQ6ICMgNDEgIi4vaW5jbHVkZS9saW51eC9xdW90YS5oIiAyCjE0NDc0OiAKMTQ0 NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZHFibGtfeGZzLmgiIDEKMTQ0NzQ6ICMgNTMg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L2RxYmxrX3hmcy5oIgoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3Qg ZnNfZGlza19xdW90YSB7CjE0NDc0OiAgX19zOCBkX3ZlcnNpb247CjE0NDc0OiAgX19zOCBkX2Zs YWdzOwoxNDQ3NDogIF9fdTE2IGRfZmllbGRtYXNrOwoxNDQ3NDogIF9fdTMyIGRfaWQ7CjE0NDc0 OiAgX191NjQgZF9ibGtfaGFyZGxpbWl0OwoxNDQ3NDogIF9fdTY0IGRfYmxrX3NvZnRsaW1pdDsK MTQ0NzQ6ICBfX3U2NCBkX2lub19oYXJkbGltaXQ7CjE0NDc0OiAgX191NjQgZF9pbm9fc29mdGxp bWl0OwoxNDQ3NDogIF9fdTY0IGRfYmNvdW50OwoxNDQ3NDogIF9fdTY0IGRfaWNvdW50OwoxNDQ3 NDogIF9fczMyIGRfaXRpbWVyOwoxNDQ3NDogCjE0NDc0OiAgX19zMzIgZF9idGltZXI7CjE0NDc0 OiAgX191MTYgZF9pd2FybnM7CjE0NDc0OiAgX191MTYgZF9id2FybnM7CjE0NDc0OiAgX19zMzIg ZF9wYWRkaW5nMjsKMTQ0NzQ6ICBfX3U2NCBkX3J0Yl9oYXJkbGltaXQ7CjE0NDc0OiAgX191NjQg ZF9ydGJfc29mdGxpbWl0OwoxNDQ3NDogIF9fdTY0IGRfcnRiY291bnQ7CjE0NDc0OiAgX19zMzIg ZF9ydGJ0aW1lcjsKMTQ0NzQ6ICBfX3UxNiBkX3J0Yndhcm5zOwoxNDQ3NDogIF9fczE2IGRfcGFk ZGluZzM7CjE0NDc0OiAgY2hhciBkX3BhZGRpbmc0WzhdOwoxNDQ3NDogfSBmc19kaXNrX3F1b3Rh X3Q7CjE0NDc0OiAjIDE0OSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZHFibGtfeGZzLmgiCjE0NDc0 OiB0eXBlZGVmIHN0cnVjdCBmc19xZmlsZXN0YXQgewoxNDQ3NDogIF9fdTY0IHFmc19pbm87CjE0 NDc0OiAgX191NjQgcWZzX25ibGtzOwoxNDQ3NDogIF9fdTMyIHFmc19uZXh0ZW50czsKMTQ0NzQ6 IH0gZnNfcWZpbGVzdGF0X3Q7CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IGZzX3F1b3Rh X3N0YXQgewoxNDQ3NDogIF9fczggcXNfdmVyc2lvbjsKMTQ0NzQ6ICBfX3UxNiBxc19mbGFnczsK MTQ0NzQ6ICBfX3M4IHFzX3BhZDsKMTQ0NzQ6ICBmc19xZmlsZXN0YXRfdCBxc191cXVvdGE7CjE0 NDc0OiAgZnNfcWZpbGVzdGF0X3QgcXNfZ3F1b3RhOwoxNDQ3NDogIF9fdTMyIHFzX2luY29yZWRx czsKMTQ0NzQ6ICBfX3MzMiBxc19idGltZWxpbWl0OwoxNDQ3NDogIF9fczMyIHFzX2l0aW1lbGlt aXQ7CjE0NDc0OiAgX19zMzIgcXNfcnRidGltZWxpbWl0OwoxNDQ3NDogIF9fdTE2IHFzX2J3YXJu bGltaXQ7CjE0NDc0OiAgX191MTYgcXNfaXdhcm5saW1pdDsKMTQ0NzQ6IH0gZnNfcXVvdGFfc3Rh dF90OwoxNDQ3NDogIyAxOTIgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2RxYmxrX3hmcy5oIgoxNDQ3 NDogc3RydWN0IGZzX3FmaWxlc3RhdHYgewoxNDQ3NDogIF9fdTY0IHFmc19pbm87CjE0NDc0OiAg X191NjQgcWZzX25ibGtzOwoxNDQ3NDogIF9fdTMyIHFmc19uZXh0ZW50czsKMTQ0NzQ6ICBfX3Uz MiBxZnNfcGFkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZzX3F1b3RhX3N0YXR2 IHsKMTQ0NzQ6ICBfX3M4IHFzX3ZlcnNpb247CjE0NDc0OiAgX191OCBxc19wYWQxOwoxNDQ3NDog IF9fdTE2IHFzX2ZsYWdzOwoxNDQ3NDogIF9fdTMyIHFzX2luY29yZWRxczsKMTQ0NzQ6ICBzdHJ1 Y3QgZnNfcWZpbGVzdGF0diBxc191cXVvdGE7CjE0NDc0OiAgc3RydWN0IGZzX3FmaWxlc3RhdHYg cXNfZ3F1b3RhOwoxNDQ3NDogIHN0cnVjdCBmc19xZmlsZXN0YXR2IHFzX3BxdW90YTsKMTQ0NzQ6 ICBfX3MzMiBxc19idGltZWxpbWl0OwoxNDQ3NDogIF9fczMyIHFzX2l0aW1lbGltaXQ7CjE0NDc0 OiAgX19zMzIgcXNfcnRidGltZWxpbWl0OwoxNDQ3NDogIF9fdTE2IHFzX2J3YXJubGltaXQ7CjE0 NDc0OiAgX191MTYgcXNfaXdhcm5saW1pdDsKMTQ0NzQ6ICBfX3U2NCBxc19wYWQyWzhdOwoxNDQ3 NDogfTsKMTQ0NzQ6ICMgNDMgIi4vaW5jbHVkZS9saW51eC9xdW90YS5oIiAyCjE0NDc0OiAjIDEg Ii4vaW5jbHVkZS9saW51eC9kcWJsa192MS5oIiAxCjE0NDc0OiAjIDQ0ICIuL2luY2x1ZGUvbGlu dXgvcXVvdGEuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvZHFibGtfdjIuaCIgMQox NDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgvZHFibGtfdjIuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNs dWRlL2xpbnV4L2RxYmxrX3F0cmVlLmgiIDEKMTQ0NzQ6ICMgMTggIi4vaW5jbHVkZS9saW51eC9k cWJsa19xdHJlZS5oIgoxNDQ3NDogc3RydWN0IGRxdW90OwoxNDQ3NDogc3RydWN0IGtxaWQ7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHF0cmVlX2ZtdF9vcGVyYXRpb25zIHsKMTQ0NzQ6 ICB2b2lkICgqbWVtMmRpc2tfZHFibGspKHZvaWQgKmRpc2ssIHN0cnVjdCBkcXVvdCAqZHF1b3Qp OwoxNDQ3NDogIHZvaWQgKCpkaXNrMm1lbV9kcWJsaykoc3RydWN0IGRxdW90ICpkcXVvdCwgdm9p ZCAqZGlzayk7CjE0NDc0OiAgaW50ICgqaXNfaWQpKHZvaWQgKmRpc2ssIHN0cnVjdCBkcXVvdCAq ZHF1b3QpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcXRyZWVfbWVt X2RxaW5mbyB7CjE0NDc0OiAgc3RydWN0IHN1cGVyX2Jsb2NrICpkcWlfc2I7CjE0NDc0OiAgaW50 IGRxaV90eXBlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcWlfYmxvY2tzOwoxNDQ3NDogIHVuc2ln bmVkIGludCBkcWlfZnJlZV9ibGs7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRxaV9mcmVlX2VudHJ5 OwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcWlfYmxvY2tzaXplX2JpdHM7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGRxaV9lbnRyeV9zaXplOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcWlfdXNhYmxlX2Jz OwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcWlfcXRyZWVfZGVwdGg7CjE0NDc0OiAgY29uc3Qgc3Ry dWN0IHF0cmVlX2ZtdF9vcGVyYXRpb25zICpkcWlfb3BzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogaW50IHF0cmVlX3dyaXRlX2RxdW90KHN0cnVjdCBxdHJlZV9tZW1fZHFpbmZvICppbmZvLCBz dHJ1Y3QgZHF1b3QgKmRxdW90KTsKMTQ0NzQ6IGludCBxdHJlZV9yZWFkX2RxdW90KHN0cnVjdCBx dHJlZV9tZW1fZHFpbmZvICppbmZvLCBzdHJ1Y3QgZHF1b3QgKmRxdW90KTsKMTQ0NzQ6IGludCBx dHJlZV9kZWxldGVfZHF1b3Qoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8sIHN0cnVjdCBk cXVvdCAqZHF1b3QpOwoxNDQ3NDogaW50IHF0cmVlX3JlbGVhc2VfZHF1b3Qoc3RydWN0IHF0cmVl X21lbV9kcWluZm8gKmluZm8sIHN0cnVjdCBkcXVvdCAqZHF1b3QpOwoxNDQ3NDogaW50IHF0cmVl X2VudHJ5X3VudXNlZChzdHJ1Y3QgcXRyZWVfbWVtX2RxaW5mbyAqaW5mbywgY2hhciAqZGlzayk7 CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgcXRyZWVfZGVwdGgoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8pCjE0 NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgaW50IGVwYiA9IGluZm8tPmRxaV91c2FibGVfYnMgPj4g MjsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxvbmcgZW50cmllcyA9IGVwYjsKMTQ0NzQ6ICBpbnQg aTsKMTQ0NzQ6IAoxNDQ3NDogIGZvciAoaSA9IDE7IGVudHJpZXMgPCAoMVVMTCA8PCAzMik7IGkr KykKMTQ0NzQ6ICAgZW50cmllcyAqPSBlcGI7CjE0NDc0OiAgcmV0dXJuIGk7CjE0NDc0OiB9CjE0 NDc0OiBpbnQgcXRyZWVfZ2V0X25leHRfaWQoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8s IHN0cnVjdCBrcWlkICpxaWQpOwoxNDQ3NDogIyAxMCAiLi9pbmNsdWRlL2xpbnV4L2RxYmxrX3Yy LmgiIDIKMTQ0NzQ6ICMgNDUgIi4vaW5jbHVkZS9saW51eC9xdW90YS5oIiAyCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9wcm9qaWQuaCIgMQoxNDQ3 NDogIyAxNyAiLi9pbmNsdWRlL2xpbnV4L3Byb2ppZC5oIgoxNDQ3NDogc3RydWN0IHVzZXJfbmFt ZXNwYWNlOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB1c2VyX25hbWVzcGFjZSBpbml0X3VzZXJfbnM7 CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxfdWlkMzJfdCBwcm9qaWRfdDsKMTQ0NzQ6 IAoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgewoxNDQ3NDogIHByb2ppZF90IHZhbDsKMTQ0NzQ6IH0g a3Byb2ppZF90OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwcm9qaWRfdCBfX2twcm9qaWRfdmFsKGtwcm9qaWRf dCBwcm9qaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHByb2ppZC52YWw7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s IHByb2ppZF9lcShrcHJvamlkX3QgbGVmdCwga3Byb2ppZF90IHJpZ2h0KQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBfX2twcm9qaWRfdmFsKGxlZnQpID09IF9fa3Byb2ppZF92YWwocmlnaHQpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHByb2ppZF9sdChrcHJvamlkX3QgbGVmdCwga3By b2ppZF90IHJpZ2h0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2twcm9qaWRfdmFsKGxlZnQp IDwgX19rcHJvamlkX3ZhbChyaWdodCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcHJv amlkX3ZhbGlkKGtwcm9qaWRfdCBwcm9qaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICFwcm9q aWRfZXEocHJvamlkLCAoa3Byb2ppZF90KXsgLTEgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4ga3Byb2ppZF90IG1ha2Vfa3Byb2ppZChzdHJ1Y3QgdXNl cl9uYW1lc3BhY2UgKmZyb20sIHByb2ppZF90IHByb2ppZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBwcm9qaWRfdCBmcm9tX2twcm9qaWQoc3RydWN0IHVzZXJfbmFtZXNwYWNlICp0bywga3Byb2pp ZF90IHByb2ppZCk7CjE0NDc0OiBleHRlcm4gcHJvamlkX3QgZnJvbV9rcHJvamlkX211bmdlZChz dHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnRvLCBrcHJvamlkX3QgcHJvamlkKTsKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCBrcHJvamlkX2hhc19tYXBwaW5nKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqbnMsIGtw cm9qaWRfdCBwcm9qaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZyb21fa3Byb2ppZChucywg cHJvamlkKSAhPSAocHJvamlkX3QpLTE7CjE0NDc0OiB9CjE0NDc0OiAjIDQ5ICIuL2luY2x1ZGUv bGludXgvcXVvdGEuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9xdW90YS5o IiAxCjE0NDc0OiAjIDkwICIuL2luY2x1ZGUvdWFwaS9saW51eC9xdW90YS5oIgoxNDQ3NDogZW51 bSB7CjE0NDc0OiAgUUlGX0JMSU1JVFNfQiA9IDAsCjE0NDc0OiAgUUlGX1NQQUNFX0IsCjE0NDc0 OiAgUUlGX0lMSU1JVFNfQiwKMTQ0NzQ6ICBRSUZfSU5PREVTX0IsCjE0NDc0OiAgUUlGX0JUSU1F X0IsCjE0NDc0OiAgUUlGX0lUSU1FX0IsCjE0NDc0OiB9OwoxNDQ3NDogIyAxMTAgIi4vaW5jbHVk ZS91YXBpL2xpbnV4L3F1b3RhLmgiCjE0NDc0OiBzdHJ1Y3QgaWZfZHFibGsgewoxNDQ3NDogIF9f dTY0IGRxYl9iaGFyZGxpbWl0OwoxNDQ3NDogIF9fdTY0IGRxYl9ic29mdGxpbWl0OwoxNDQ3NDog IF9fdTY0IGRxYl9jdXJzcGFjZTsKMTQ0NzQ6ICBfX3U2NCBkcWJfaWhhcmRsaW1pdDsKMTQ0NzQ6 ICBfX3U2NCBkcWJfaXNvZnRsaW1pdDsKMTQ0NzQ6ICBfX3U2NCBkcWJfY3VyaW5vZGVzOwoxNDQ3 NDogIF9fdTY0IGRxYl9idGltZTsKMTQ0NzQ6ICBfX3U2NCBkcWJfaXRpbWU7CjE0NDc0OiAgX191 MzIgZHFiX3ZhbGlkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGlmX25leHRkcWJs ayB7CjE0NDc0OiAgX191NjQgZHFiX2JoYXJkbGltaXQ7CjE0NDc0OiAgX191NjQgZHFiX2Jzb2Z0 bGltaXQ7CjE0NDc0OiAgX191NjQgZHFiX2N1cnNwYWNlOwoxNDQ3NDogIF9fdTY0IGRxYl9paGFy ZGxpbWl0OwoxNDQ3NDogIF9fdTY0IGRxYl9pc29mdGxpbWl0OwoxNDQ3NDogIF9fdTY0IGRxYl9j dXJpbm9kZXM7CjE0NDc0OiAgX191NjQgZHFiX2J0aW1lOwoxNDQ3NDogIF9fdTY0IGRxYl9pdGlt ZTsKMTQ0NzQ6ICBfX3UzMiBkcWJfdmFsaWQ7CjE0NDc0OiAgX191MzIgZHFiX2lkOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgMTQ0ICIuL2luY2x1ZGUvdWFwaS9saW51eC9xdW90YS5oIgoxNDQ3NDogZW51 bSB7CjE0NDc0OiAgRFFGX1JPT1RfU1FVQVNIX0IgPSAwLAoxNDQ3NDogIERRRl9TWVNfRklMRV9C ID0gMTYsCjE0NDc0OiAKMTQ0NzQ6ICBEUUZfUFJJVkFURQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBpZl9kcWlu Zm8gewoxNDQ3NDogIF9fdTY0IGRxaV9iZ3JhY2U7CjE0NDc0OiAgX191NjQgZHFpX2lncmFjZTsK MTQ0NzQ6ICBfX3UzMiBkcWlfZmxhZ3M7CjE0NDc0OiAgX191MzIgZHFpX3ZhbGlkOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgMTc4ICIuL2luY2x1ZGUvdWFwaS9saW51eC9xdW90YS5oIgoxNDQ3NDogZW51 bSB7CjE0NDc0OiAgUVVPVEFfTkxfQ19VTlNQRUMsCjE0NDc0OiAgUVVPVEFfTkxfQ19XQVJOSU5H LAoxNDQ3NDogIF9fUVVPVEFfTkxfQ19NQVgsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGVudW0gewoxNDQ3NDogIFFVT1RBX05MX0FfVU5TUEVDLAoxNDQ3NDogIFFVT1RBX05MX0Ff UVRZUEUsCjE0NDc0OiAgUVVPVEFfTkxfQV9FWENFU1NfSUQsCjE0NDc0OiAgUVVPVEFfTkxfQV9X QVJOSU5HLAoxNDQ3NDogIFFVT1RBX05MX0FfREVWX01BSk9SLAoxNDQ3NDogIFFVT1RBX05MX0Ff REVWX01JTk9SLAoxNDQ3NDogIFFVT1RBX05MX0FfQ0FVU0VEX0lELAoxNDQ3NDogIFFVT1RBX05M X0FfUEFELAoxNDQ3NDogIF9fUVVPVEFfTkxfQV9NQVgsCjE0NDc0OiB9OwoxNDQ3NDogIyA1MCAi Li9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZW51bSBxdW90YV90eXBlIHsKMTQ0NzQ6ICBVU1JRVU9UQSA9IDAsCjE0NDc0OiAg R1JQUVVPVEEgPSAxLAoxNDQ3NDogIFBSSlFVT1RBID0gMiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIF9fa2Vy bmVsX3VpZDMyX3QgcWlkX3Q7CjE0NDc0OiB0eXBlZGVmIGxvbmcgbG9uZyBxc2l6ZV90OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3Qga3FpZCB7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBrdWlkX3Qg dWlkOwoxNDQ3NDogICBrZ2lkX3QgZ2lkOwoxNDQ3NDogICBrcHJvamlkX3QgcHJvamlkOwoxNDQ3 NDogIH07CjE0NDc0OiAgZW51bSBxdW90YV90eXBlIHR5cGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gYm9vbCBxaWRfZXEoc3RydWN0IGtxaWQgbGVmdCwgc3RydWN0IGtxaWQgcmln aHQpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgcWlkX2x0KHN0cnVjdCBrcWlkIGxlZnQsIHN0cnVjdCBr cWlkIHJpZ2h0KTsKMTQ0NzQ6IGV4dGVybiBxaWRfdCBmcm9tX2txaWQoc3RydWN0IHVzZXJfbmFt ZXNwYWNlICp0bywgc3RydWN0IGtxaWQgcWlkKTsKMTQ0NzQ6IGV4dGVybiBxaWRfdCBmcm9tX2tx aWRfbXVuZ2VkKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqdG8sIHN0cnVjdCBrcWlkIHFpZCk7CjE0 NDc0OiBleHRlcm4gYm9vbCBxaWRfdmFsaWQoc3RydWN0IGtxaWQgcWlkKTsKMTQ0NzQ6ICMgOTcg Ii4vaW5jbHVkZS9saW51eC9xdW90YS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtxaWQgbWFrZV9rcWlkKHN0 cnVjdCB1c2VyX25hbWVzcGFjZSAqZnJvbSwKMTQ0NzQ6ICAgICAgICAgZW51bSBxdW90YV90eXBl IHR5cGUsIHFpZF90IHFpZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3Qga3FpZCBrcWlkOwoxNDQ3 NDogCjE0NDc0OiAga3FpZC50eXBlID0gdHlwZTsKMTQ0NzQ6ICBzd2l0Y2ggKHR5cGUpIHsKMTQ0 NzQ6ICBjYXNlIFVTUlFVT1RBOgoxNDQ3NDogICBrcWlkLnVpZCA9IG1ha2Vfa3VpZChmcm9tLCBx aWQpOwoxNDQ3NDogICBicmVhazsKMTQ0NzQ6ICBjYXNlIEdSUFFVT1RBOgoxNDQ3NDogICBrcWlk LmdpZCA9IG1ha2Vfa2dpZChmcm9tLCBxaWQpOwoxNDQ3NDogICBicmVhazsKMTQ0NzQ6ICBjYXNl IFBSSlFVT1RBOgoxNDQ3NDogICBrcWlkLnByb2ppZCA9IG1ha2Vfa3Byb2ppZChmcm9tLCBxaWQp OwoxNDQ3NDogICBicmVhazsKMTQ0NzQ6ICBkZWZhdWx0OgoxNDQ3NDogICBkbyB7IGRvIHsgYXNt IF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hz ZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIi ICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIg Ilx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGlu ZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVj M1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3F1b3RhLmgiKSwgImki ICgxMTQpLCAiaSIgKDApLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxl ICgwKTsgZG8geyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNj YXJkLnVucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5c dCIgOiA6ICJpIiAoMjgpKTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNo YWJsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgfQoxNDQ3NDogIHJldHVy biBrcWlkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga3FpZCBtYWtlX2txaWRfaW52YWxpZChlbnVt IHF1b3RhX3R5cGUgdHlwZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3Qga3FpZCBrcWlkOwoxNDQ3 NDogCjE0NDc0OiAga3FpZC50eXBlID0gdHlwZTsKMTQ0NzQ6ICBzd2l0Y2ggKHR5cGUpIHsKMTQ0 NzQ6ICBjYXNlIFVTUlFVT1RBOgoxNDQ3NDogICBrcWlkLnVpZCA9IChrdWlkX3QpeyAtMSB9Owox NDQ3NDogICBicmVhazsKMTQ0NzQ6ICBjYXNlIEdSUFFVT1RBOgoxNDQ3NDogICBrcWlkLmdpZCA9 IChrZ2lkX3QpeyAtMSB9OwoxNDQ3NDogICBicmVhazsKMTQ0NzQ6ICBjYXNlIFBSSlFVT1RBOgox NDQ3NDogICBrcWlkLnByb2ppZCA9IChrcHJvamlkX3QpeyAtMSB9OwoxNDQ3NDogICBicmVhazsK MTQ0NzQ6ICBkZWZhdWx0OgoxNDQ3NDogICBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxl KCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxl LFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5Ojpi dWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZp bGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIi ICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24i IDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3F1b3RhLmgiKSwgImkiICgxNDEpLCAiaSIgKDApLCAi aSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAoeyBhc20g dm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hhYmxlXG5c dCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMjkpKTsg fSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdoaWxlICgw KTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgfQoxNDQ3NDogIHJldHVybiBrcWlkOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrcWlk IG1ha2Vfa3FpZF91aWQoa3VpZF90IHVpZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3Qga3FpZCBr cWlkOwoxNDQ3NDogIGtxaWQudHlwZSA9IFVTUlFVT1RBOwoxNDQ3NDogIGtxaWQudWlkID0gdWlk OwoxNDQ3NDogIHJldHVybiBrcWlkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrcWlkIG1ha2Vfa3FpZF9naWQoa2dpZF90IGdp ZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3Qga3FpZCBrcWlkOwoxNDQ3NDogIGtxaWQudHlwZSA9 IEdSUFFVT1RBOwoxNDQ3NDogIGtxaWQuZ2lkID0gZ2lkOwoxNDQ3NDogIHJldHVybiBrcWlkOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0 cnVjdCBrcWlkIG1ha2Vfa3FpZF9wcm9qaWQoa3Byb2ppZF90IHByb2ppZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICBzdHJ1Y3Qga3FpZCBrcWlkOwoxNDQ3NDogIGtxaWQudHlwZSA9IFBSSlFVT1RBOwoxNDQ3 NDogIGtxaWQucHJvamlkID0gcHJvamlkOwoxNDQ3NDogIHJldHVybiBrcWlkOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCBxaWRfaGFzX21hcHBpbmcoc3RydWN0IHVzZXJfbmFtZXNwYWNlICpucywgc3RydWN0IGtxaWQg cWlkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBmcm9tX2txaWQobnMsIHFpZCkgIT0gKHFpZF90 KSAtMTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3BpbmxvY2tfdCBk cV9kYXRhX2xvY2s7CjE0NDc0OiAjIDIwNSAiLi9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCjE0NDc0 OiBzdHJ1Y3QgbWVtX2RxYmxrIHsKMTQ0NzQ6ICBxc2l6ZV90IGRxYl9iaGFyZGxpbWl0OwoxNDQ3 NDogIHFzaXplX3QgZHFiX2Jzb2Z0bGltaXQ7CjE0NDc0OiAgcXNpemVfdCBkcWJfY3Vyc3BhY2U7 CjE0NDc0OiAgcXNpemVfdCBkcWJfcnN2c3BhY2U7CjE0NDc0OiAgcXNpemVfdCBkcWJfaWhhcmRs aW1pdDsKMTQ0NzQ6ICBxc2l6ZV90IGRxYl9pc29mdGxpbWl0OwoxNDQ3NDogIHFzaXplX3QgZHFi X2N1cmlub2RlczsKMTQ0NzQ6ICB0aW1lNjRfdCBkcWJfYnRpbWU7CjE0NDc0OiAgdGltZTY0X3Qg ZHFiX2l0aW1lOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IHF1b3RhX2Zvcm1hdF90eXBlOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbWVtX2Rx aW5mbyB7CjE0NDc0OiAgc3RydWN0IHF1b3RhX2Zvcm1hdF90eXBlICpkcWlfZm9ybWF0OwoxNDQ3 NDogIGludCBkcWlfZm10X2lkOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBkcWlf ZGlydHlfbGlzdDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGRxaV9mbGFnczsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgZHFpX2JncmFjZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHFpX2lncmFjZTsKMTQ0 NzQ6ICBxc2l6ZV90IGRxaV9tYXhfc3BjX2xpbWl0OwoxNDQ3NDogIHFzaXplX3QgZHFpX21heF9p bm9fbGltaXQ7CjE0NDc0OiAgdm9pZCAqZHFpX3ByaXY7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3Qgc3VwZXJfYmxvY2s7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBEUUZfSU5GT19ESVJUWV9CID0gRFFG X1BSSVZBVEUsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIG1h cmtfaW5mb19kaXJ0eShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSk7CjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgaW5mb19kaXJ0eShzdHJ1Y3QgbWVtX2RxaW5mbyAqaW5mbykKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gdGVzdF9iaXQoRFFGX0lORk9fRElSVFlfQiwgJmluZm8tPmRxaV9mbGFncyk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERRU1RfTE9PS1VQUywKMTQ0NzQ6ICBE UVNUX0RST1BTLAoxNDQ3NDogIERRU1RfUkVBRFMsCjE0NDc0OiAgRFFTVF9XUklURVMsCjE0NDc0 OiAgRFFTVF9DQUNIRV9ISVRTLAoxNDQ3NDogIERRU1RfQUxMT0NfRFFVT1RTLAoxNDQ3NDogIERR U1RfRlJFRV9EUVVPVFMsCjE0NDc0OiAgRFFTVF9TWU5DUywKMTQ0NzQ6ICBfRFFTVF9EUVNUQVRf TEFTVAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRxc3RhdHMgewoxNDQ3NDogIHVu c2lnbmVkIGxvbmcgc3RhdFtfRFFTVF9EUVNUQVRfTEFTVF07CjE0NDc0OiAgc3RydWN0IHBlcmNw dV9jb3VudGVyIGNvdW50ZXJbX0RRU1RfRFFTVEFUX0xBU1RdOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIHN0cnVjdCBkcXN0YXRzIGRxc3RhdHM7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg ZHFzdGF0c19pbmModW5zaWduZWQgaW50IHR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgcGVyY3B1X2Nv dW50ZXJfaW5jKCZkcXN0YXRzLmNvdW50ZXJbdHlwZV0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGRxc3RhdHNfZGVjKHVuc2lnbmVkIGludCB0eXBlKQoxNDQ3NDogewoxNDQ3NDogIHBl cmNwdV9jb3VudGVyX2RlYygmZHFzdGF0cy5jb3VudGVyW3R5cGVdKTsKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMjk0ICIuL2luY2x1ZGUvbGludXgvcXVvdGEuaCIKMTQ0NzQ6IHN0cnVjdCBkcXVvdCB7CjE0 NDc0OiAgc3RydWN0IGhsaXN0X25vZGUgZHFfaGFzaDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFk IGRxX2ludXNlOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgZHFfZnJlZTsKMTQ0NzQ6ICBzdHJ1 Y3QgbGlzdF9oZWFkIGRxX2RpcnR5OwoxNDQ3NDogIHN0cnVjdCBtdXRleCBkcV9sb2NrOwoxNDQ3 NDogIHNwaW5sb2NrX3QgZHFfZHFiX2xvY2s7CjE0NDc0OiAgYXRvbWljX3QgZHFfY291bnQ7CjE0 NDc0OiAgc3RydWN0IHN1cGVyX2Jsb2NrICpkcV9zYjsKMTQ0NzQ6ICBzdHJ1Y3Qga3FpZCBkcV9p ZDsKMTQ0NzQ6ICBsb2ZmX3QgZHFfb2ZmOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZHFfZmxhZ3M7 CjE0NDc0OiAgc3RydWN0IG1lbV9kcWJsayBkcV9kcWI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBxdW90YV9mb3JtYXRfb3BzIHsKMTQ0NzQ6ICBpbnQgKCpjaGVja19x dW90YV9maWxlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSk7CjE0NDc0OiAgaW50 ICgqcmVhZF9maWxlX2luZm8pKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB0eXBlKTsKMTQ0 NzQ6ICBpbnQgKCp3cml0ZV9maWxlX2luZm8pKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB0 eXBlKTsKMTQ0NzQ6ICBpbnQgKCpmcmVlX2ZpbGVfaW5mbykoc3RydWN0IHN1cGVyX2Jsb2NrICpz YiwgaW50IHR5cGUpOwoxNDQ3NDogIGludCAoKnJlYWRfZHFibGspKHN0cnVjdCBkcXVvdCAqZHF1 b3QpOwoxNDQ3NDogIGludCAoKmNvbW1pdF9kcWJsaykoc3RydWN0IGRxdW90ICpkcXVvdCk7CjE0 NDc0OiAgaW50ICgqcmVsZWFzZV9kcWJsaykoc3RydWN0IGRxdW90ICpkcXVvdCk7CjE0NDc0OiAg aW50ICgqZ2V0X25leHRfaWQpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrcWlkICpx aWQpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHF1b3Rfb3BlcmF0 aW9ucyB7CjE0NDc0OiAgaW50ICgqd3JpdGVfZHF1b3QpIChzdHJ1Y3QgZHF1b3QgKik7CjE0NDc0 OiAgc3RydWN0IGRxdW90ICooKmFsbG9jX2RxdW90KShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50 KTsKMTQ0NzQ6ICB2b2lkICgqZGVzdHJveV9kcXVvdCkoc3RydWN0IGRxdW90ICopOwoxNDQ3NDog IGludCAoKmFjcXVpcmVfZHF1b3QpIChzdHJ1Y3QgZHF1b3QgKik7CjE0NDc0OiAgaW50ICgqcmVs ZWFzZV9kcXVvdCkgKHN0cnVjdCBkcXVvdCAqKTsKMTQ0NzQ6ICBpbnQgKCptYXJrX2RpcnR5KSAo c3RydWN0IGRxdW90ICopOwoxNDQ3NDogIGludCAoKndyaXRlX2luZm8pIChzdHJ1Y3Qgc3VwZXJf YmxvY2sgKiwgaW50KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgcXNpemVfdCAqKCpnZXRfcmVz ZXJ2ZWRfc3BhY2UpIChzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiAgaW50ICgqZ2V0X3Byb2ppZCkg KHN0cnVjdCBpbm9kZSAqLCBrcHJvamlkX3QgKik7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCpnZXRf aW5vZGVfdXNhZ2UpIChzdHJ1Y3QgaW5vZGUgKiwgcXNpemVfdCAqKTsKMTQ0NzQ6IAoxNDQ3NDog IGludCAoKmdldF9uZXh0X2lkKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtxaWQg KnFpZCk7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGF0aDsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgcWNfZHFibGsgewoxNDQ3NDogIGludCBkX2ZpZWxkbWFzazsKMTQ0 NzQ6ICB1NjQgZF9zcGNfaGFyZGxpbWl0OwoxNDQ3NDogIHU2NCBkX3NwY19zb2Z0bGltaXQ7CjE0 NDc0OiAgdTY0IGRfaW5vX2hhcmRsaW1pdDsKMTQ0NzQ6ICB1NjQgZF9pbm9fc29mdGxpbWl0Owox NDQ3NDogIHU2NCBkX3NwYWNlOwoxNDQ3NDogIHU2NCBkX2lub19jb3VudDsKMTQ0NzQ6ICBzNjQg ZF9pbm9fdGltZXI7CjE0NDc0OiAKMTQ0NzQ6ICBzNjQgZF9zcGNfdGltZXI7CjE0NDc0OiAgaW50 IGRfaW5vX3dhcm5zOwoxNDQ3NDogIGludCBkX3NwY193YXJuczsKMTQ0NzQ6ICB1NjQgZF9ydF9z cGNfaGFyZGxpbWl0OwoxNDQ3NDogIHU2NCBkX3J0X3NwY19zb2Z0bGltaXQ7CjE0NDc0OiAgdTY0 IGRfcnRfc3BhY2U7CjE0NDc0OiAgczY0IGRfcnRfc3BjX3RpbWVyOwoxNDQ3NDogIGludCBkX3J0 X3NwY193YXJuczsKMTQ0NzQ6IH07CjE0NDc0OiAjIDM5NSAiLi9pbmNsdWRlL2xpbnV4L3F1b3Rh LmgiCjE0NDc0OiBzdHJ1Y3QgcWNfdHlwZV9zdGF0ZSB7CjE0NDc0OiAgdW5zaWduZWQgaW50IGZs YWdzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBzcGNfdGltZWxpbWl0OwoxNDQ3NDogCjE0NDc0OiAg dW5zaWduZWQgaW50IGlub190aW1lbGltaXQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJ0X3NwY190 aW1lbGltaXQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNwY193YXJubGltaXQ7CjE0NDc0OiAgdW5z aWduZWQgaW50IGlub193YXJubGltaXQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJ0X3NwY193YXJu bGltaXQ7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIGlubzsKMTQ0NzQ6ICBibGtjbnRfdCBi bG9ja3M7CjE0NDc0OiAgYmxrY250X3QgbmV4dGVudHM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgcWNfc3RhdGUgewoxNDQ3NDogIHVuc2lnbmVkIGludCBzX2luY29yZWRxczsKMTQ0 NzQ6ICBzdHJ1Y3QgcWNfdHlwZV9zdGF0ZSBzX3N0YXRlWzNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcWNfaW5mbyB7CjE0NDc0OiAgaW50IGlfZmllbGRtYXNrOwox NDQ3NDogIHVuc2lnbmVkIGludCBpX2ZsYWdzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBpX3NwY190 aW1lbGltaXQ7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaV9pbm9fdGltZWxpbWl0Owox NDQ3NDogIHVuc2lnbmVkIGludCBpX3J0X3NwY190aW1lbGltaXQ7CjE0NDc0OiAgdW5zaWduZWQg aW50IGlfc3BjX3dhcm5saW1pdDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaV9pbm9fd2FybmxpbWl0 OwoxNDQ3NDogIHVuc2lnbmVkIGludCBpX3J0X3NwY193YXJubGltaXQ7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBxdW90YWN0bF9vcHMgewoxNDQ3NDogIGludCAoKnF1 b3RhX29uKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50LCBpbnQsIGNvbnN0IHN0cnVjdCBwYXRo ICopOwoxNDQ3NDogIGludCAoKnF1b3RhX29mZikoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCk7 CjE0NDc0OiAgaW50ICgqcXVvdGFfZW5hYmxlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWdu ZWQgaW50KTsKMTQ0NzQ6ICBpbnQgKCpxdW90YV9kaXNhYmxlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sg KiwgdW5zaWduZWQgaW50KTsKMTQ0NzQ6ICBpbnQgKCpxdW90YV9zeW5jKShzdHJ1Y3Qgc3VwZXJf YmxvY2sgKiwgaW50KTsKMTQ0NzQ6ICBpbnQgKCpzZXRfaW5mbykoc3RydWN0IHN1cGVyX2Jsb2Nr ICosIGludCwgc3RydWN0IHFjX2luZm8gKik7CjE0NDc0OiAgaW50ICgqZ2V0X2RxYmxrKShzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGtxaWQsIHN0cnVjdCBxY19kcWJsayAqKTsKMTQ0NzQ6 ICBpbnQgKCpnZXRfbmV4dGRxYmxrKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGtxaWQg KiwKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHFjX2RxYmxrICopOwoxNDQ3NDogIGludCAoKnNldF9k cWJsaykoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBrcWlkLCBzdHJ1Y3QgcWNfZHFibGsg Kik7CjE0NDc0OiAgaW50ICgqZ2V0X3N0YXRlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0 IHFjX3N0YXRlICopOwoxNDQ3NDogIGludCAoKnJtX3hxdW90YSkoc3RydWN0IHN1cGVyX2Jsb2Nr ICosIHVuc2lnbmVkIGludCk7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcXVvdGFf Zm9ybWF0X3R5cGUgewoxNDQ3NDogIGludCBxZl9mbXRfaWQ7CjE0NDc0OiAgY29uc3Qgc3RydWN0 IHF1b3RhX2Zvcm1hdF9vcHMgKnFmX29wczsKMTQ0NzQ6ICBzdHJ1Y3QgbW9kdWxlICpxZl9vd25l cjsKMTQ0NzQ6ICBzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5cGUgKnFmX25leHQ7CjE0NDc0OiB9Owox NDQ3NDogIyA0NjMgIi4vaW5jbHVkZS9saW51eC9xdW90YS5oIgoxNDQ3NDogZW51bSB7CjE0NDc0 OiAgX0RRVU9UX1VTQUdFX0VOQUJMRUQgPSAwLAoxNDQ3NDogIF9EUVVPVF9MSU1JVFNfRU5BQkxF RCwKMTQ0NzQ6ICBfRFFVT1RfU1VTUEVOREVELAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBfRFFV T1RfU1RBVEVfRkxBR1MKMTQ0NzQ6IH07CjE0NDc0OiAjIDQ5MCAiLi9pbmNsdWRlL2xpbnV4L3F1 b3RhLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgZHF1b3Rfc3RhdGVfZmxhZyh1bnNpZ25lZCBpbnQg ZmxhZ3MsIGludCB0eXBlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBmbGFncyA8PCB0eXBlOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgZHF1b3RfZ2VuZXJpY19mbGFnKHVu c2lnbmVkIGludCBmbGFncywgaW50IHR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChmbGFn cyA+PiB0eXBlKSAmICgoMSA8PCBfRFFVT1RfVVNBR0VfRU5BQkxFRCAqIDMpIHwgKDEgPDwgX0RR VU9UX0xJTUlUU19FTkFCTEVEICogMykgfCAoMSA8PCBfRFFVT1RfU1VTUEVOREVEICogMykpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgdW5zaWduZWQgZHF1b3Rfc3RhdGVfdHlwZXModW5zaWduZWQgZmxhZ3MsIHVuc2ln bmVkIGZsYWcpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1l X2Fzc2VydF81MDModm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJCVUlMRF9CVUdfT04g ZmFpbGVkOiAiICIoZmxhZykgPT0gMCB8fCAoKChmbGFnKSAmICgoZmxhZykgLSAxKSkgIT0gMCki KSkpOyBpZiAoISghKChmbGFnKSA9PSAwIHx8ICgoKGZsYWcpICYgKChmbGFnKSAtIDEpKSAhPSAw KSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF81MDMoKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgcmV0 dXJuIChmbGFncyAvIGZsYWcpICYgKCgxIDw8IDMpIC0gMSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgcXVvdGFfc2VuZF93YXJuaW5nKHN0cnVjdCBrcWlkIHFp ZCwgZGV2X3QgZGV2LAoxNDQ3NDogICAgICAgICAgIGNvbnN0IGNoYXIgd2FybnR5cGUpOwoxNDQ3 NDogIyA1MTggIi4vaW5jbHVkZS9saW51eC9xdW90YS5oIgoxNDQ3NDogc3RydWN0IHF1b3RhX2lu Zm8gewoxNDQ3NDogIHVuc2lnbmVkIGludCBmbGFnczsKMTQ0NzQ6ICBzdHJ1Y3Qgcndfc2VtYXBo b3JlIGRxaW9fc2VtOwoxNDQ3NDogIHN0cnVjdCBpbm9kZSAqZmlsZXNbM107CjE0NDc0OiAgc3Ry dWN0IG1lbV9kcWluZm8gaW5mb1szXTsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgcXVvdGFfZm9ybWF0 X29wcyAqb3BzWzNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogaW50IHJlZ2lzdGVyX3F1b3Rh X2Zvcm1hdChzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5cGUgKmZtdCk7CjE0NDc0OiB2b2lkIHVucmVn aXN0ZXJfcXVvdGFfZm9ybWF0KHN0cnVjdCBxdW90YV9mb3JtYXRfdHlwZSAqZm10KTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHF1b3RhX21vZHVsZV9uYW1lIHsKMTQ0NzQ6ICBpbnQgcW1fZm10X2lk OwoxNDQ3NDogIGNoYXIgKnFtX21vZF9uYW1lOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjQ2ICIuL2lu Y2x1ZGUvbGludXgvZnMuaCIgMgoxNDQ3NDogIyAyNzkgIi4vaW5jbHVkZS9saW51eC9mcy5oIgox NDQ3NDogZW51bSBwb3NpdGl2ZV9hb3BfcmV0dXJucyB7CjE0NDc0OiAgQU9QX1dSSVRFUEFHRV9B Q1RJVkFURSA9IDB4ODAwMDAsCjE0NDc0OiAgQU9QX1RSVU5DQVRFRF9QQUdFID0gMHg4MDAwMSwK MTQ0NzQ6IH07CjE0NDc0OiAjIDI5MiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBzdHJ1 Y3QgcGFnZTsKMTQ0NzQ6IHN0cnVjdCBhZGRyZXNzX3NwYWNlOwoxNDQ3NDogc3RydWN0IHdyaXRl YmFja19jb250cm9sOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGVudW0gcndfaGludCB7CjE0NDc0OiAgV1JJVEVfTElGRV9OT1RfU0VUID0gMCwKMTQ0NzQ6 ICBXUklURV9MSUZFX05PTkUgPSAxLAoxNDQ3NDogIFdSSVRFX0xJRkVfU0hPUlQgPSAyLAoxNDQ3 NDogIFdSSVRFX0xJRkVfTUVESVVNID0gMywKMTQ0NzQ6ICBXUklURV9MSUZFX0xPTkcgPSA0LAox NDQ3NDogIFdSSVRFX0xJRkVfRVhUUkVNRSA9IDUsCjE0NDc0OiB9OwoxNDQ3NDogIyAzMTggIi4v aW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RydWN0IGtpb2NiIHsKMTQ0NzQ6ICBzdHJ1Y3Qg ZmlsZSAqa2lfZmlscDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGxv ZmZfdCBraV9wb3M7CjE0NDc0OiAgdm9pZCAoKmtpX2NvbXBsZXRlKShzdHJ1Y3Qga2lvY2IgKmlv Y2IsIGxvbmcgcmV0LCBsb25nIHJldDIpOwoxNDQ3NDogIHZvaWQgKnByaXZhdGU7CjE0NDc0OiAg aW50IGtpX2ZsYWdzOwoxNDQ3NDogIHUxNiBraV9oaW50OwoxNDQ3NDogIHUxNiBraV9pb3ByaW87 CjE0NDc0OiAgdW5zaWduZWQgaW50IGtpX2Nvb2tpZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGlzX3N5bmNfa2lvY2Ioc3RydWN0IGtpb2NiICpraW9jYikK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga2lvY2ItPmtpX2NvbXBsZXRlID09ICgodm9pZCAqKTAp OwoxNDQ3NDogfQoxNDQ3NDogIyAzNDkgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogdHlw ZWRlZiBzdHJ1Y3QgewoxNDQ3NDogIHNpemVfdCB3cml0dGVuOwoxNDQ3NDogIHNpemVfdCBjb3Vu dDsKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIGNoYXIgKmJ1ZjsKMTQ0NzQ6ICAgdm9pZCAqZGF0 YTsKMTQ0NzQ6ICB9IGFyZzsKMTQ0NzQ6ICBpbnQgZXJyb3I7CjE0NDc0OiB9IHJlYWRfZGVzY3Jp cHRvcl90OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIGludCAoKnJlYWRfYWN0b3JfdCkocmVhZF9k ZXNjcmlwdG9yX3QgKiwgc3RydWN0IHBhZ2UgKiwKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZywgdW5z aWduZWQgbG9uZyk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlv bnMgewoxNDQ3NDogIGludCAoKndyaXRlcGFnZSkoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCB3 cml0ZWJhY2tfY29udHJvbCAqd2JjKTsKMTQ0NzQ6ICBpbnQgKCpyZWFkcGFnZSkoc3RydWN0IGZp bGUgKiwgc3RydWN0IHBhZ2UgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKndyaXRl cGFnZXMpKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAq KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50ICgqc2V0X3BhZ2VfZGlydHkpKHN0cnVjdCBw YWdlICpwYWdlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgaW50ICgqcmVhZHBhZ2VzKShzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKm1hcHBpbmcsCjE0NDc0OiAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlcywgdW5zaWduZWQg bnJfcGFnZXMpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqd3JpdGVfYmVnaW4pKHN0cnVjdCBmaWxl ICosIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAoxNDQ3NDogICAgIGxvZmZfdCBwb3Ms IHVuc2lnbmVkIGxlbiwgdW5zaWduZWQgZmxhZ3MsCjE0NDc0OiAgICAgc3RydWN0IHBhZ2UgKipw YWdlcCwgdm9pZCAqKmZzZGF0YSk7CjE0NDc0OiAgaW50ICgqd3JpdGVfZW5kKShzdHJ1Y3QgZmls ZSAqLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKMTQ0NzQ6ICAgICBsb2ZmX3QgcG9z LCB1bnNpZ25lZCBsZW4sIHVuc2lnbmVkIGNvcGllZCwKMTQ0NzQ6ICAgICBzdHJ1Y3QgcGFnZSAq cGFnZSwgdm9pZCAqZnNkYXRhKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc2VjdG9yX3QgKCpi bWFwKShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBzZWN0b3JfdCk7CjE0NDc0OiAgdm9pZCAoKmlu dmFsaWRhdGVwYWdlKSAoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQp OwoxNDQ3NDogIGludCAoKnJlbGVhc2VwYWdlKSAoc3RydWN0IHBhZ2UgKiwgZ2ZwX3QpOwoxNDQ3 NDogIHZvaWQgKCpmcmVlcGFnZSkoc3RydWN0IHBhZ2UgKik7CjE0NDc0OiAgc3NpemVfdCAoKmRp cmVjdF9JTykoc3RydWN0IGtpb2NiICosIHN0cnVjdCBpb3ZfaXRlciAqaXRlcik7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCptaWdyYXRlcGFnZSkgKHN0cnVj dCBhZGRyZXNzX3NwYWNlICosCjE0NDc0OiAgICBzdHJ1Y3QgcGFnZSAqLCBzdHJ1Y3QgcGFnZSAq LCBlbnVtIG1pZ3JhdGVfbW9kZSk7CjE0NDc0OiAgYm9vbCAoKmlzb2xhdGVfcGFnZSkoc3RydWN0 IHBhZ2UgKiwgaXNvbGF0ZV9tb2RlX3QpOwoxNDQ3NDogIHZvaWQgKCpwdXRiYWNrX3BhZ2UpKHN0 cnVjdCBwYWdlICopOwoxNDQ3NDogIGludCAoKmxhdW5kZXJfcGFnZSkgKHN0cnVjdCBwYWdlICop OwoxNDQ3NDogIGludCAoKmlzX3BhcnRpYWxseV91cHRvZGF0ZSkgKHN0cnVjdCBwYWdlICosIHVu c2lnbmVkIGxvbmcsCjE0NDc0OiAgICAgIHVuc2lnbmVkIGxvbmcpOwoxNDQ3NDogIHZvaWQgKCpp c19kaXJ0eV93cml0ZWJhY2spIChzdHJ1Y3QgcGFnZSAqLCBib29sICosIGJvb2wgKik7CjE0NDc0 OiAgaW50ICgqZXJyb3JfcmVtb3ZlX3BhZ2UpKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIHN0cnVj dCBwYWdlICopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCpzd2FwX2FjdGl2YXRlKShz dHJ1Y3Qgc3dhcF9pbmZvX3N0cnVjdCAqc2lzLCBzdHJ1Y3QgZmlsZSAqZmlsZSwKMTQ0NzQ6ICAg ICBzZWN0b3JfdCAqc3Bhbik7CjE0NDc0OiAgdm9pZCAoKnN3YXBfZGVhY3RpdmF0ZSkoc3RydWN0 IGZpbGUgKmZpbGUpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNvbnN0IHN0cnVj dCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgZW1wdHlfYW9wczsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQgcGFnZWNhY2hlX3dyaXRlX2JlZ2luKHN0 cnVjdCBmaWxlICosIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAoxNDQ3NDogICAgIGxv ZmZfdCBwb3MsIHVuc2lnbmVkIGxlbiwgdW5zaWduZWQgZmxhZ3MsCjE0NDc0OiAgICAgc3RydWN0 IHBhZ2UgKipwYWdlcCwgdm9pZCAqKmZzZGF0YSk7CjE0NDc0OiAKMTQ0NzQ6IGludCBwYWdlY2Fj aGVfd3JpdGVfZW5kKHN0cnVjdCBmaWxlICosIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5n LAoxNDQ3NDogICAgIGxvZmZfdCBwb3MsIHVuc2lnbmVkIGxlbiwgdW5zaWduZWQgY29waWVkLAox NDQ3NDogICAgIHN0cnVjdCBwYWdlICpwYWdlLCB2b2lkICpmc2RhdGEpOwoxNDQ3NDogIyA0NDUg Ii4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RydWN0IGFkZHJlc3Nfc3BhY2UgewoxNDQ3 NDogIHN0cnVjdCBpbm9kZSAqaG9zdDsKMTQ0NzQ6ICBzdHJ1Y3QgeGFycmF5IGlfcGFnZXM7CjE0 NDc0OiAgZ2ZwX3QgZ2ZwX21hc2s7CjE0NDc0OiAgYXRvbWljX3QgaV9tbWFwX3dyaXRhYmxlOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHJiX3Jvb3RfY2Fj aGVkIGlfbW1hcDsKMTQ0NzQ6ICBzdHJ1Y3Qgcndfc2VtYXBob3JlIGlfbW1hcF9yd3NlbTsKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIG5ycGFnZXM7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBucmV4Y2Vw dGlvbmFsOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgd3JpdGViYWNrX2luZGV4OwoxNDQ3NDogIGNv bnN0IHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgKmFfb3BzOwoxNDQ3NDogIHVuc2ln bmVkIGxvbmcgZmxhZ3M7CjE0NDc0OiAgZXJyc2VxX3Qgd2JfZXJyOwoxNDQ3NDogIHNwaW5sb2Nr X3QgcHJpdmF0ZV9sb2NrOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgcHJpdmF0ZV9saXN0Owox NDQ3NDogIHZvaWQgKnByaXZhdGVfZGF0YTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoYWxpZ25l ZChzaXplb2YobG9uZykpKSkgX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRfXykpOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCByZXF1 ZXN0X3F1ZXVlOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYmxvY2tfZGV2aWNlIHsKMTQ0NzQ6ICBk ZXZfdCBiZF9kZXY7CjE0NDc0OiAgaW50IGJkX29wZW5lcnM7CjE0NDc0OiAgc3RydWN0IGlub2Rl ICogYmRfaW5vZGU7CjE0NDc0OiAgc3RydWN0IHN1cGVyX2Jsb2NrICogYmRfc3VwZXI7CjE0NDc0 OiAgc3RydWN0IG11dGV4IGJkX211dGV4OwoxNDQ3NDogIHZvaWQgKiBiZF9jbGFpbWluZzsKMTQ0 NzQ6ICB2b2lkICogYmRfaG9sZGVyOwoxNDQ3NDogIGludCBiZF9ob2xkZXJzOwoxNDQ3NDogIGJv b2wgYmRfd3JpdGVfaG9sZGVyOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBiZF9o b2xkZXJfZGlza3M7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICogYmRfY29u dGFpbnM7CjE0NDc0OiAgdW5zaWduZWQgYmRfYmxvY2tfc2l6ZTsKMTQ0NzQ6ICB1OCBiZF9wYXJ0 bm87CjE0NDc0OiAgc3RydWN0IGhkX3N0cnVjdCAqIGJkX3BhcnQ7CjE0NDc0OiAKMTQ0NzQ6ICB1 bnNpZ25lZCBiZF9wYXJ0X2NvdW50OwoxNDQ3NDogIGludCBiZF9pbnZhbGlkYXRlZDsKMTQ0NzQ6 ICBzdHJ1Y3QgZ2VuZGlzayAqIGJkX2Rpc2s7CjE0NDc0OiAgc3RydWN0IHJlcXVlc3RfcXVldWUg KiBiZF9xdWV1ZTsKMTQ0NzQ6ICBzdHJ1Y3QgYmFja2luZ19kZXZfaW5mbyAqYmRfYmRpOwoxNDQ3 NDogIHN0cnVjdCBsaXN0X2hlYWQgYmRfbGlzdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGJkX3ByaXZhdGU7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCBiZF9mc2ZyZWV6ZV9jb3VudDsKMTQ0NzQ6IAoxNDQ3 NDogIHN0cnVjdCBtdXRleCBiZF9mc2ZyZWV6ZV9tdXRleDsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVf XygoX19kZXNpZ25hdGVkX2luaXRfXykpOwoxNDQ3NDogIyA1MTkgIi4vaW5jbHVkZS9saW51eC9m cy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBtYXBwaW5nX3RhZ2dlZChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFw cGluZywgeGFfbWFya190IHRhZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4geGFfbWFya2VkKCZt YXBwaW5nLT5pX3BhZ2VzLCB0YWcpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlfbW1h cF9sb2NrX3dyaXRlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3 NDogIGRvd25fd3JpdGUoJm1hcHBpbmctPmlfbW1hcF9yd3NlbSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgaV9tbWFwX3VubG9ja193cml0ZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFw cGluZykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1cF93cml0ZSgmbWFwcGluZy0+aV9tbWFwX3J3c2VtKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpX21tYXBfbG9ja19yZWFkKHN0cnVjdCBhZGRy ZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3NDogIGRvd25fcmVhZCgmbWFwcGluZy0+ aV9tbWFwX3J3c2VtKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpX21tYXBfdW5sb2Nr X3JlYWQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCjE0NDc0OiB7CjE0NDc0OiAgdXBf cmVhZCgmbWFwcGluZy0+aV9tbWFwX3J3c2VtKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG1hcHBpbmdfbWFwcGVkKHN0cnVjdCBhZGRyZXNzX3Nw YWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhKCh7IHVuaW9uIHsgdHlwZW9m KCgmbWFwcGluZy0+aV9tbWFwLnJiX3Jvb3QpLT5yYl9ub2RlKSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKCgmbWFwcGluZy0+aV9tbWFwLnJiX3Jv b3QpLT5yYl9ub2RlKSwgX191Ll9fYywgc2l6ZW9mKCgmbWFwcGluZy0+aV9tbWFwLnJiX3Jvb3Qp LT5yYl9ub2RlKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoKCZtYXBwaW5nLT5p X21tYXAucmJfcm9vdCktPnJiX25vZGUpLCBfX3UuX19jLCBzaXplb2YoKCZtYXBwaW5nLT5pX21t YXAucmJfcm9vdCktPnJiX25vZGUpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KSA9 PSAoKHZvaWQgKikwKSk7CjE0NDc0OiB9CjE0NDc0OiAjIDU2MSAiLi9pbmNsdWRlL2xpbnV4L2Zz LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgbWFwcGluZ193cml0YWJseV9tYXBwZWQoc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKm1hcHBpbmcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19yZWFkKCZtYXBwaW5n LT5pX21tYXBfd3JpdGFibGUpID4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG1hcHBp bmdfbWFwX3dyaXRhYmxlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBhdG9taWNfaW5jX3VubGVzc19uZWdhdGl2ZSgmbWFwcGluZy0+aV9tbWFw X3dyaXRhYmxlKSA/CjE0NDc0OiAgIDAgOiAtMTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBtYXBwaW5nX3VubWFwX3dyaXRhYmxlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQox NDQ3NDogewoxNDQ3NDogIGF0b21pY19kZWMoJm1hcHBpbmctPmlfbW1hcF93cml0YWJsZSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBtYXBwaW5nX2Rlbnlfd3JpdGFibGUoc3RydWN0IGFk ZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19kZWNf dW5sZXNzX3Bvc2l0aXZlKCZtYXBwaW5nLT5pX21tYXBfd3JpdGFibGUpID8KMTQ0NzQ6ICAgMCA6 IC0xNjsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtYXBwaW5nX2FsbG93X3dyaXRhYmxl KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3NDogIGF0b21pY19p bmMoJm1hcHBpbmctPmlfbW1hcF93cml0YWJsZSk7CjE0NDc0OiB9CjE0NDc0OiAjIDU5OSAiLi9p bmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBzdHJ1Y3QgcG9zaXhfYWNsOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHBvc2l4X2FjbCAqCjE0NDc0OiB1bmNhY2hlZF9hY2xf c2VudGluZWwoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biAodm9pZCAqKXRhc2sgKyAxOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCjE0NDc0OiBp c191bmNhY2hlZF9hY2woc3RydWN0IHBvc2l4X2FjbCAqYWNsKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiAobG9uZylhY2wgJiAxOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZnNub3RpZnlfbWFya19j b25uZWN0b3I7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgaW5vZGUgewoxNDQ3NDogIHVtb2RlX3QgaV9tb2RlOwoxNDQ3NDogIHVu c2lnbmVkIHNob3J0IGlfb3BmbGFnczsKMTQ0NzQ6ICBrdWlkX3QgaV91aWQ7CjE0NDc0OiAga2dp ZF90IGlfZ2lkOwoxNDQ3NDogIHVuc2lnbmVkIGludCBpX2ZsYWdzOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBzdHJ1Y3QgcG9zaXhfYWNsICppX2FjbDsKMTQ0NzQ6ICBzdHJ1Y3QgcG9zaXhfYWNs ICppX2RlZmF1bHRfYWNsOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgaW5v ZGVfb3BlcmF0aW9ucyAqaV9vcDsKMTQ0NzQ6ICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmlfc2I7CjE0 NDc0OiAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmlfbWFwcGluZzsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgdm9pZCAqaV9zZWN1cml0eTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGlfaW5vOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBjb25zdCB1bnNpZ25l ZCBpbnQgaV9ubGluazsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9faV9ubGluazsKMTQ0NzQ6ICB9 OwoxNDQ3NDogIGRldl90IGlfcmRldjsKMTQ0NzQ6ICBsb2ZmX3QgaV9zaXplOwoxNDQ3NDogIHN0 cnVjdCB0aW1lc3BlYzY0IGlfYXRpbWU7CjE0NDc0OiAgc3RydWN0IHRpbWVzcGVjNjQgaV9tdGlt ZTsKMTQ0NzQ6ICBzdHJ1Y3QgdGltZXNwZWM2NCBpX2N0aW1lOwoxNDQ3NDogIHNwaW5sb2NrX3Qg aV9sb2NrOwoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IGlfYnl0ZXM7CjE0NDc0OiAgdTggaV9ibGti aXRzOwoxNDQ3NDogIHU4IGlfd3JpdGVfaGludDsKMTQ0NzQ6ICBibGtjbnRfdCBpX2Jsb2NrczsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGlfc3RhdGU7CjE0NDc0OiAgc3RydWN0IHJ3X3NlbWFwaG9yZSBpX3J3c2Vt OwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBkaXJ0aWVkX3doZW47CjE0NDc0OiAgdW5z aWduZWQgbG9uZyBkaXJ0aWVkX3RpbWVfd2hlbjsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBobGlz dF9ub2RlIGlfaGFzaDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGlfaW9fbGlzdDsKMTQ0NzQ6 IAoxNDQ3NDogIHN0cnVjdCBiZGlfd3JpdGViYWNrICppX3diOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBpbnQgaV93Yl9mcm5fd2lubmVyOwoxNDQ3NDogIHUxNiBpX3diX2Zybl9hdmdfdGltZTsK MTQ0NzQ6ICB1MTYgaV93Yl9mcm5faGlzdG9yeTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0 X2hlYWQgaV9scnU7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBpX3NiX2xpc3Q7CjE0NDc0OiAg c3RydWN0IGxpc3RfaGVhZCBpX3diX2xpc3Q7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1 Y3QgaGxpc3RfaGVhZCBpX2RlbnRyeTsKMTQ0NzQ6ICAgc3RydWN0IGNhbGxiYWNrX2hlYWQgaV9y Y3U7CjE0NDc0OiAgfTsKMTQ0NzQ6ICBhdG9taWM2NF90IGlfdmVyc2lvbjsKMTQ0NzQ6ICBhdG9t aWM2NF90IGlfc2VxdWVuY2U7CjE0NDc0OiAgYXRvbWljX3QgaV9jb3VudDsKMTQ0NzQ6ICBhdG9t aWNfdCBpX2Rpb19jb3VudDsKMTQ0NzQ6ICBhdG9taWNfdCBpX3dyaXRlY291bnQ7CjE0NDc0OiAK MTQ0NzQ6ICBhdG9taWNfdCBpX3JlYWRjb3VudDsKMTQ0NzQ6IAoxNDQ3NDogIHVuaW9uIHsKMTQ0 NzQ6ICAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqaV9mb3A7CjE0NDc0OiAgIHZvaWQg KCpmcmVlX2lub2RlKShzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiAgfTsKMTQ0NzQ6ICBzdHJ1Y3Qg ZmlsZV9sb2NrX2NvbnRleHQgKmlfZmxjdHg7CjE0NDc0OiAgc3RydWN0IGFkZHJlc3Nfc3BhY2Ug aV9kYXRhOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgaV9kZXZpY2VzOwoxNDQ3NDogIHVuaW9u IHsKMTQ0NzQ6ICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqaV9waXBlOwoxNDQ3NDogICBzdHJ1 Y3QgYmxvY2tfZGV2aWNlICppX2JkZXY7CjE0NDc0OiAgIHN0cnVjdCBjZGV2ICppX2NkZXY7CjE0 NDc0OiAgIGNoYXIgKmlfbGluazsKMTQ0NzQ6ICAgdW5zaWduZWQgaV9kaXJfc2VxOwoxNDQ3NDog IH07CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBpX2dlbmVyYXRpb247CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIF9fdTMyIGlfZnNub3RpZnlfbWFzazsKMTQ0NzQ6ICBzdHJ1Y3QgZnNub3RpZnlfbWFy a19jb25uZWN0b3IgKmlfZnNub3RpZnlfbWFya3M7CjE0NDc0OiAjIDczOCAiLi9pbmNsdWRlL2xp bnV4L2ZzLmgiCjE0NDc0OiAgdm9pZCAqaV9wcml2YXRlOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9f KChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0aW1lc3BlYzY0 IHRpbWVzdGFtcF90cnVuY2F0ZShzdHJ1Y3QgdGltZXNwZWM2NCB0LCBzdHJ1Y3QgaW5vZGUgKmlu b2RlKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGlfYmxvY2tzaXplKGNvbnN0IHN0cnVj dCBpbm9kZSAqbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKDEgPDwgbm9kZS0+aV9ibGti aXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlub2RlX3VuaGFzaGVkKHN0cnVjdCBp bm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGhsaXN0X3VuaGFzaGVkKCZpbm9k ZS0+aV9oYXNoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV9mYWtlX2hhc2goc3RydWN0IGlu b2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBobGlzdF9hZGRfZmFrZSgmaW5vZGUtPmlfaGFz aCk7CjE0NDc0OiB9CjE0NDc0OiAjIDc4MCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBl bnVtIGlub2RlX2lfbXV0ZXhfbG9ja19jbGFzcwoxNDQ3NDogewoxNDQ3NDogIElfTVVURVhfTk9S TUFMLAoxNDQ3NDogIElfTVVURVhfUEFSRU5ULAoxNDQ3NDogIElfTVVURVhfQ0hJTEQsCjE0NDc0 OiAgSV9NVVRFWF9YQVRUUiwKMTQ0NzQ6ICBJX01VVEVYX05PTkRJUjIsCjE0NDc0OiAgSV9NVVRF WF9QQVJFTlQyLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV9sb2NrKHN0cnVj dCBpbm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgZG93bl93cml0ZSgmaW5vZGUtPmlfcndz ZW0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlub2RlX3VubG9jayhzdHJ1Y3QgaW5v ZGUgKmlub2RlKQoxNDQ3NDogewoxNDQ3NDogIHVwX3dyaXRlKCZpbm9kZS0+aV9yd3NlbSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW5vZGVfbG9ja19zaGFyZWQoc3RydWN0IGlub2Rl ICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBkb3duX3JlYWQoJmlub2RlLT5pX3J3c2VtKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV91bmxvY2tfc2hhcmVkKHN0cnVjdCBpbm9k ZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgdXBfcmVhZCgmaW5vZGUtPmlfcndzZW0pOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaW5vZGVfdHJ5bG9jayhzdHJ1Y3QgaW5vZGUgKmlub2Rl KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkb3duX3dyaXRlX3RyeWxvY2soJmlub2RlLT5pX3J3 c2VtKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlub2RlX3RyeWxvY2tfc2hhcmVkKHN0 cnVjdCBpbm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRvd25fcmVhZF90cnls b2NrKCZpbm9kZS0+aV9yd3NlbSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBpbm9kZV9p c19sb2NrZWQoc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcndz ZW1faXNfbG9ja2VkKCZpbm9kZS0+aV9yd3NlbSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgaW5vZGVfbG9ja19uZXN0ZWQoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgc3ViY2xh c3MpCjE0NDc0OiB7CjE0NDc0OiAgZG93bl93cml0ZSgmaW5vZGUtPmlfcndzZW0pOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlub2RlX2xvY2tfc2hhcmVkX25lc3RlZChzdHJ1Y3QgaW5v ZGUgKmlub2RlLCB1bnNpZ25lZCBzdWJjbGFzcykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkb3duX3JlYWQo Jmlub2RlLT5pX3J3c2VtKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdm9pZCBsb2NrX3R3b19u b25kaXJlY3RvcmllcyhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlub2RlKik7CjE0NDc0OiB2b2lk IHVubG9ja190d29fbm9uZGlyZWN0b3JpZXMoc3RydWN0IGlub2RlICosIHN0cnVjdCBpbm9kZSop OwoxNDQ3NDogIyA4NDggIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9mZl90IGlfc2l6 ZV9yZWFkKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAjIDg2NyAi Li9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiAgcmV0dXJuIGlub2RlLT5pX3NpemU7CjE0NDc0 OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgaV9zaXplX3dyaXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBp X3NpemUpCjE0NDc0OiB7CjE0NDc0OiAjIDg4OSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0 OiAgaW5vZGUtPmlfc2l6ZSA9IGlfc2l6ZTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBpbWlub3IoY29uc3Qgc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gKCh1bnNpZ25lZCBpbnQpICgoaW5vZGUtPmlfcmRldikgJiAoKDFVIDw8IDIw KSAtIDEpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGltYWpvcihjb25zdCBz dHJ1Y3QgaW5vZGUgKmlub2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoKHVuc2lnbmVkIGlu dCkgKChpbm9kZS0+aV9yZGV2KSA+PiAyMCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRl cm4gc3RydWN0IGJsb2NrX2RldmljZSAqSV9CREVWKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZm93bl9zdHJ1Y3QgewoxNDQ3NDogIHJ3bG9ja190IGxvY2s7CjE0 NDc0OiAgc3RydWN0IHBpZCAqcGlkOwoxNDQ3NDogIGVudW0gcGlkX3R5cGUgcGlkX3R5cGU7CjE0 NDc0OiAga3VpZF90IHVpZCwgZXVpZDsKMTQ0NzQ6ICBpbnQgc2lnbnVtOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZpbGVfcmFfc3RhdGUg ewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc3RhcnQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNpemU7 CjE0NDc0OiAgdW5zaWduZWQgaW50IGFzeW5jX3NpemU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IHVuc2lnbmVkIGludCByYV9wYWdlczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbW1hcF9taXNzOwox NDQ3NDogIGxvZmZfdCBwcmV2X3BvczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCByYV9oYXNfaW5kZXgoc3RydWN0IGZpbGVfcmFfc3RhdGUgKnJh LCB1bnNpZ25lZCBsb25nIGluZGV4KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoaW5kZXggPj0g cmEtPnN0YXJ0ICYmCjE0NDc0OiAgIGluZGV4IDwgcmEtPnN0YXJ0ICsgcmEtPnNpemUpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZmlsZSB7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDog ICBzdHJ1Y3QgbGxpc3Rfbm9kZSBmdV9sbGlzdDsKMTQ0NzQ6ICAgc3RydWN0IGNhbGxiYWNrX2hl YWQgZnVfcmN1aGVhZDsKMTQ0NzQ6ICB9IGZfdTsKMTQ0NzQ6ICBzdHJ1Y3QgcGF0aCBmX3BhdGg7 CjE0NDc0OiAgc3RydWN0IGlub2RlICpmX2lub2RlOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBmaWxl X29wZXJhdGlvbnMgKmZfb3A7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIHNwaW5sb2NrX3QgZl9sb2NrOwoxNDQ3NDogIGVudW0gcndfaGludCBmX3dyaXRl X2hpbnQ7CjE0NDc0OiAgYXRvbWljX2xvbmdfdCBmX2NvdW50OwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBmX2ZsYWdzOwoxNDQ3NDogIGZtb2RlX3QgZl9tb2RlOwoxNDQ3NDogIHN0cnVjdCBtdXRleCBm X3Bvc19sb2NrOwoxNDQ3NDogIGxvZmZfdCBmX3BvczsKMTQ0NzQ6ICBzdHJ1Y3QgZm93bl9zdHJ1 Y3QgZl9vd25lcjsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgY3JlZCAqZl9jcmVkOwoxNDQ3NDogIHN0 cnVjdCBmaWxlX3JhX3N0YXRlIGZfcmE7CjE0NDc0OiAKMTQ0NzQ6ICB1NjQgZl92ZXJzaW9uOwox NDQ3NDogCjE0NDc0OiAgdm9pZCAqZl9zZWN1cml0eTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg dm9pZCAqcHJpdmF0ZV9kYXRhOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVj dCBsaXN0X2hlYWQgZl9lcF9saW5rczsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGZfdGZpbGVf bGxpbms7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqZl9tYXBwaW5nOwox NDQ3NDogIGVycnNlcV90IGZfd2JfZXJyOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX2Rlc2ln bmF0ZWRfaW5pdF9fKSkKMTQ0NzQ6ICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg0KSkpOwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZmlsZV9oYW5kbGUgewoxNDQ3NDogIF9fdTMyIGhhbmRsZV9ieXRl czsKMTQ0NzQ6ICBpbnQgaGFuZGxlX3R5cGU7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFy IGZfaGFuZGxlWzBdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpbGUgKmdldF9m aWxlKHN0cnVjdCBmaWxlICpmKQoxNDQ3NDogewoxNDQ3NDogIGF0b21pY19sb25nX2luYygmZi0+ Zl9jb3VudCk7CjE0NDc0OiAgcmV0dXJuIGY7CjE0NDc0OiB9CjE0NDc0OiAjIDEwMjYgIi4vaW5j bHVkZS9saW51eC9mcy5oIgoxNDQ3NDogdHlwZWRlZiB2b2lkICpmbF9vd25lcl90OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgZmlsZV9sb2NrOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZmlsZV9sb2Nr X29wZXJhdGlvbnMgewoxNDQ3NDogIHZvaWQgKCpmbF9jb3B5X2xvY2spKHN0cnVjdCBmaWxlX2xv Y2sgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKMTQ0NzQ6ICB2b2lkICgqZmxfcmVsZWFzZV9wcml2 YXRlKShzdHJ1Y3QgZmlsZV9sb2NrICopOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGxvY2tfbWFuYWdlcl9vcGVyYXRpb25zIHsKMTQ0NzQ6ICBmbF9vd25lcl90ICgqbG1fZ2V0X293 bmVyKShmbF9vd25lcl90KTsKMTQ0NzQ6ICB2b2lkICgqbG1fcHV0X293bmVyKShmbF9vd25lcl90 KTsKMTQ0NzQ6ICB2b2lkICgqbG1fbm90aWZ5KShzdHJ1Y3QgZmlsZV9sb2NrICopOwoxNDQ3NDog IGludCAoKmxtX2dyYW50KShzdHJ1Y3QgZmlsZV9sb2NrICosIGludCk7CjE0NDc0OiAgYm9vbCAo KmxtX2JyZWFrKShzdHJ1Y3QgZmlsZV9sb2NrICopOwoxNDQ3NDogIGludCAoKmxtX2NoYW5nZSko c3RydWN0IGZpbGVfbG9jayAqLCBpbnQsIHN0cnVjdCBsaXN0X2hlYWQgKik7CjE0NDc0OiAgdm9p ZCAoKmxtX3NldHVwKShzdHJ1Y3QgZmlsZV9sb2NrICosIHZvaWQgKiopOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGxvY2tfbWFuYWdlciB7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVh ZCBsaXN0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBibG9j a19vcGVuczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBuZXQ7CjE0NDc0OiB2b2lk IGxvY2tzX3N0YXJ0X2dyYWNlKHN0cnVjdCBuZXQgKiwgc3RydWN0IGxvY2tfbWFuYWdlciAqKTsK MTQ0NzQ6IHZvaWQgbG9ja3NfZW5kX2dyYWNlKHN0cnVjdCBsb2NrX21hbmFnZXIgKik7CjE0NDc0 OiBib29sIGxvY2tzX2luX2dyYWNlKHN0cnVjdCBuZXQgKik7CjE0NDc0OiBib29sIG9wZW5zX2lu X2dyYWNlKHN0cnVjdCBuZXQgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvbGludXgvbmZzX2ZzX2kuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgbmxtX2xvY2tvd25lcjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IG5mc19sb2NrX2luZm8gewoxNDQ3NDogIHUzMiBzdGF0ZTsKMTQ0NzQ6 ICBzdHJ1Y3QgbmxtX2xvY2tvd25lciAqb3duZXI7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBs aXN0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG5mczRfbG9ja19zdGF0ZTsKMTQ0 NzQ6IHN0cnVjdCBuZnM0X2xvY2tfaW5mbyB7CjE0NDc0OiAgc3RydWN0IG5mczRfbG9ja19zdGF0 ZSAqb3duZXI7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMDYyICIuL2luY2x1ZGUvbGludXgvZnMuaCIg MgoxNDQ3NDogIyAxMDgwICIuL2luY2x1ZGUvbGludXgvZnMuaCIKMTQ0NzQ6IHN0cnVjdCBmaWxl X2xvY2sgewoxNDQ3NDogIHN0cnVjdCBmaWxlX2xvY2sgKmZsX2Jsb2NrZXI7CjE0NDc0OiAgc3Ry dWN0IGxpc3RfaGVhZCBmbF9saXN0OwoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlIGZsX2xpbms7 CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBmbF9ibG9ja2VkX3JlcXVlc3RzOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGZsX2Jsb2NrZWRfbWVtYmVyOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBmbF9vd25lcl90IGZsX293bmVyOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBmbF9mbGFnczsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGZsX3R5cGU7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGZsX3BpZDsKMTQ0NzQ6ICBpbnQgZmxfbGlua19jcHU7CjE0NDc0OiAgd2FpdF9xdWV1 ZV9oZWFkX3QgZmxfd2FpdDsKMTQ0NzQ6ICBzdHJ1Y3QgZmlsZSAqZmxfZmlsZTsKMTQ0NzQ6ICBs b2ZmX3QgZmxfc3RhcnQ7CjE0NDc0OiAgbG9mZl90IGZsX2VuZDsKMTQ0NzQ6IAoxNDQ3NDogIHN0 cnVjdCBmYXN5bmNfc3RydWN0ICogZmxfZmFzeW5jOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQg bG9uZyBmbF9icmVha190aW1lOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxfZG93bmdyYWRlX3Rp bWU7CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZmlsZV9sb2NrX29wZXJhdGlvbnMgKmZs X29wczsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgbG9ja19tYW5hZ2VyX29wZXJhdGlvbnMgKmZsX2xt b3BzOwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IG5mc19sb2NrX2luZm8gbmZzX2Zs OwoxNDQ3NDogICBzdHJ1Y3QgbmZzNF9sb2NrX2luZm8gbmZzNF9mbDsKMTQ0NzQ6ICAgc3RydWN0 IHsKMTQ0NzQ6ICAgIHN0cnVjdCBsaXN0X2hlYWQgbGluazsKMTQ0NzQ6ICAgIGludCBzdGF0ZTsK MTQ0NzQ6ICAgIHVuc2lnbmVkIGludCBkZWJ1Z19pZDsKMTQ0NzQ6ICAgfSBhZnM7CjE0NDc0OiAg fSBmbF91OwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmaWxlX2xvY2tfY29udGV4dCB7CjE0NDc0OiAgc3BpbmxvY2tf dCBmbGNfbG9jazsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGZsY19mbG9jazsKMTQ0NzQ6ICBz dHJ1Y3QgbGlzdF9oZWFkIGZsY19wb3NpeDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGZsY19s ZWFzZTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDExMzIgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3 NDogZXh0ZXJuIHZvaWQgc2VuZF9zaWdpbyhzdHJ1Y3QgZm93bl9zdHJ1Y3QgKmZvd24sIGludCBm ZCwgaW50IGJhbmQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRl cm4gaW50IGZjbnRsX2dldGxrKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgc3RydWN0IGZs b2NrICopOwoxNDQ3NDogZXh0ZXJuIGludCBmY250bF9zZXRsayh1bnNpZ25lZCBpbnQsIHN0cnVj dCBmaWxlICosIHVuc2lnbmVkIGludCwKMTQ0NzQ6ICAgIHN0cnVjdCBmbG9jayAqKTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIGludCBmY250bF9zZXRsZWFzZSh1bnNpZ25lZCBpbnQgZmQsIHN0cnVjdCBmaWxlICpm aWxwLCBsb25nIGFyZyk7CjE0NDc0OiBleHRlcm4gaW50IGZjbnRsX2dldGxlYXNlKHN0cnVjdCBm aWxlICpmaWxwKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIGxvY2tzX2ZyZWVfbG9ja19j b250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoxNDQ3NDogdm9pZCBsb2Nrc19mcmVlX2xvY2so c3RydWN0IGZpbGVfbG9jayAqZmwpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgbG9ja3NfaW5pdF9sb2Nr KHN0cnVjdCBmaWxlX2xvY2sgKik7CjE0NDc0OiBleHRlcm4gc3RydWN0IGZpbGVfbG9jayAqIGxv Y2tzX2FsbG9jX2xvY2sodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBsb2Nrc19jb3B5X2xvY2so c3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwoxNDQ3NDogZXh0ZXJuIHZv aWQgbG9ja3NfY29weV9jb25mbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xv Y2sgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBsb2Nrc19yZW1vdmVfcG9zaXgoc3RydWN0IGZpbGUg KiwgZmxfb3duZXJfdCk7CjE0NDc0OiBleHRlcm4gdm9pZCBsb2Nrc19yZW1vdmVfZmlsZShzdHJ1 Y3QgZmlsZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGxvY2tzX3JlbGVhc2VfcHJpdmF0ZShzdHJ1 Y3QgZmlsZV9sb2NrICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgcG9zaXhfdGVzdF9sb2NrKHN0cnVj dCBmaWxlICosIHN0cnVjdCBmaWxlX2xvY2sgKik7CjE0NDc0OiBleHRlcm4gaW50IHBvc2l4X2xv Y2tfZmlsZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xv Y2sgKik7CjE0NDc0OiBleHRlcm4gaW50IGxvY2tzX2RlbGV0ZV9ibG9jayhzdHJ1Y3QgZmlsZV9s b2NrICopOwoxNDQ3NDogZXh0ZXJuIGludCB2ZnNfdGVzdF9sb2NrKHN0cnVjdCBmaWxlICosIHN0 cnVjdCBmaWxlX2xvY2sgKik7CjE0NDc0OiBleHRlcm4gaW50IHZmc19sb2NrX2ZpbGUoc3RydWN0 IGZpbGUgKiwgdW5zaWduZWQgaW50LCBzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xv Y2sgKik7CjE0NDc0OiBleHRlcm4gaW50IHZmc19jYW5jZWxfbG9jayhzdHJ1Y3QgZmlsZSAqZmls cCwgc3RydWN0IGZpbGVfbG9jayAqZmwpOwoxNDQ3NDogZXh0ZXJuIGludCBsb2Nrc19sb2NrX2lu b2RlX3dhaXQoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGVfbG9jayAqZmwpOwoxNDQ3 NDogZXh0ZXJuIGludCBfX2JyZWFrX2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVk IGludCBmbGFncywgdW5zaWduZWQgaW50IHR5cGUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgbGVhc2Vf Z2V0X210aW1lKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdGltZSk7CjE0NDc0 OiBleHRlcm4gaW50IGdlbmVyaWNfc2V0bGVhc2Uoc3RydWN0IGZpbGUgKiwgbG9uZywgc3RydWN0 IGZpbGVfbG9jayAqKiwgdm9pZCAqKnByaXYpOwoxNDQ3NDogZXh0ZXJuIGludCB2ZnNfc2V0bGVh c2Uoc3RydWN0IGZpbGUgKiwgbG9uZywgc3RydWN0IGZpbGVfbG9jayAqKiwgdm9pZCAqKik7CjE0 NDc0OiBleHRlcm4gaW50IGxlYXNlX21vZGlmeShzdHJ1Y3QgZmlsZV9sb2NrICosIGludCwgc3Ry dWN0IGxpc3RfaGVhZCAqKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG5vdGlmaWVyX2Jsb2NrOwox NDQ3NDogZXh0ZXJuIGludCBsZWFzZV9yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJf YmxvY2sgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBsZWFzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0 cnVjdCBub3RpZmllcl9ibG9jayAqKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZpbGVzX3N0cnVj dDsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNob3dfZmRfbG9ja3Moc3RydWN0IHNlcV9maWxlICpmLAox NDQ3NDogICAgIHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmaWxlcyk7 CjE0NDc0OiAjIDEzMTcgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGlub2Rl ICpmaWxlX2lub2RlKGNvbnN0IHN0cnVjdCBmaWxlICpmKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biBmLT5mX2lub2RlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGVudHJ5ICpmaWxl X2RlbnRyeShjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g ZF9yZWFsKGZpbGUtPmZfcGF0aC5kZW50cnksIGZpbGVfaW5vZGUoZmlsZSkpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgbG9ja3NfbG9ja19maWxlX3dhaXQoc3RydWN0IGZpbGUgKmZpbHAs IHN0cnVjdCBmaWxlX2xvY2sgKmZsKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBsb2Nrc19sb2Nr X2lub2RlX3dhaXQoZmlsZV9pbm9kZShmaWxwKSwgZmwpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCB7CjE0NDc0OiAgcndsb2NrX3QgZmFfbG9jazsKMTQ0NzQ6 ICBpbnQgbWFnaWM7CjE0NDc0OiAgaW50IGZhX2ZkOwoxNDQ3NDogIHN0cnVjdCBmYXN5bmNfc3Ry dWN0ICpmYV9uZXh0OwoxNDQ3NDogIHN0cnVjdCBmaWxlICpmYV9maWxlOwoxNDQ3NDogIHN0cnVj dCBjYWxsYmFja19oZWFkIGZhX3JjdTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZmFzeW5jX2hlbHBlcihpbnQsIHN0cnVjdCBmaWxl ICosIGludCwgc3RydWN0IGZhc3luY19zdHJ1Y3QgKiopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBm YXN5bmNfc3RydWN0ICpmYXN5bmNfaW5zZXJ0X2VudHJ5KGludCwgc3RydWN0IGZpbGUgKiwgc3Ry dWN0IGZhc3luY19zdHJ1Y3QgKiosIHN0cnVjdCBmYXN5bmNfc3RydWN0ICopOwoxNDQ3NDogZXh0 ZXJuIGludCBmYXN5bmNfcmVtb3ZlX2VudHJ5KHN0cnVjdCBmaWxlICosIHN0cnVjdCBmYXN5bmNf c3RydWN0ICoqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFzeW5jX2Fs bG9jKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZmFzeW5jX2ZyZWUoc3RydWN0IGZhc3luY19z dHJ1Y3QgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQga2lsbF9mYXN5bmMo c3RydWN0IGZhc3luY19zdHJ1Y3QgKiosIGludCwgaW50KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHZvaWQgX19mX3NldG93bihzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHBpZCAqLCBlbnVtIHBp ZF90eXBlLCBpbnQgZm9yY2UpOwoxNDQ3NDogZXh0ZXJuIGludCBmX3NldG93bihzdHJ1Y3QgZmls ZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcsIGludCBmb3JjZSk7CjE0NDc0OiBleHRlcm4gdm9p ZCBmX2RlbG93bihzdHJ1Y3QgZmlsZSAqZmlscCk7CjE0NDc0OiBleHRlcm4gcGlkX3QgZl9nZXRv d24oc3RydWN0IGZpbGUgKmZpbHApOwoxNDQ3NDogZXh0ZXJuIGludCBzZW5kX3NpZ3VyZyhzdHJ1 Y3QgZm93bl9zdHJ1Y3QgKmZvd24pOwoxNDQ3NDogIyAxNDA4ICIuL2luY2x1ZGUvbGludXgvZnMu aCIKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIFNCX1VORlJPWkVOID0gMCwKMTQ0NzQ6ICBTQl9GUkVF WkVfV1JJVEUgPSAxLAoxNDQ3NDogIFNCX0ZSRUVaRV9QQUdFRkFVTFQgPSAyLAoxNDQ3NDogIFNC X0ZSRUVaRV9GUyA9IDMsCjE0NDc0OiAKMTQ0NzQ6ICBTQl9GUkVFWkVfQ09NUExFVEUgPSA0LAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzYl93cml0ZXJz IHsKMTQ0NzQ6ICBpbnQgZnJvemVuOwoxNDQ3NDogIHdhaXRfcXVldWVfaGVhZF90IHdhaXRfdW5m cm96ZW47CjE0NDc0OiAgc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgcndfc2VtWyhTQl9GUkVF WkVfQ09NUExFVEUgLSAxKV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3VwZXJf YmxvY2sgewoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgc19saXN0OwoxNDQ3NDogIGRldl90IHNf ZGV2OwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgc19ibG9ja3NpemVfYml0czsKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIHNfYmxvY2tzaXplOwoxNDQ3NDogIGxvZmZfdCBzX21heGJ5dGVzOwoxNDQ3NDog IHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpzX3R5cGU7CjE0NDc0OiAgY29uc3Qgc3RydWN0IHN1 cGVyX29wZXJhdGlvbnMgKnNfb3A7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGRxdW90X29wZXJhdGlv bnMgKmRxX29wOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBxdW90YWN0bF9vcHMgKnNfcWNvcDsKMTQ0 NzQ6ICBjb25zdCBzdHJ1Y3QgZXhwb3J0X29wZXJhdGlvbnMgKnNfZXhwb3J0X29wOwoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgc19mbGFnczsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNfaWZsYWdzOwox NDQ3NDogIHVuc2lnbmVkIGxvbmcgc19tYWdpYzsKMTQ0NzQ6ICBzdHJ1Y3QgZGVudHJ5ICpzX3Jv b3Q7CjE0NDc0OiAgc3RydWN0IHJ3X3NlbWFwaG9yZSBzX3Vtb3VudDsKMTQ0NzQ6ICBpbnQgc19j b3VudDsKMTQ0NzQ6ICBhdG9taWNfdCBzX2FjdGl2ZTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKnNf c2VjdXJpdHk7CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgeGF0dHJfaGFuZGxlciAqKnNf eGF0dHI7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgaGxpc3RfYmxfaGVhZCBzX3Jvb3RzOwoxNDQ3NDogIHN0cnVj dCBsaXN0X2hlYWQgc19tb3VudHM7CjE0NDc0OiAgc3RydWN0IGJsb2NrX2RldmljZSAqc19iZGV2 OwoxNDQ3NDogIHN0cnVjdCBiYWNraW5nX2Rldl9pbmZvICpzX2JkaTsKMTQ0NzQ6ICBzdHJ1Y3Qg bXRkX2luZm8gKnNfbXRkOwoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlIHNfaW5zdGFuY2VzOwox NDQ3NDogIHVuc2lnbmVkIGludCBzX3F1b3RhX3R5cGVzOwoxNDQ3NDogIHN0cnVjdCBxdW90YV9p bmZvIHNfZHF1b3Q7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc2Jfd3JpdGVycyBzX3dyaXRlcnM7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg dm9pZCAqc19mc19pbmZvOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1MzIgc190aW1lX2dyYW47 CjE0NDc0OiAKMTQ0NzQ6ICB0aW1lNjRfdCBzX3RpbWVfbWluOwoxNDQ3NDogIHRpbWU2NF90IHNf dGltZV9tYXg7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBzX2Zzbm90aWZ5X21hc2s7CjE0NDc0OiAg c3RydWN0IGZzbm90aWZ5X21hcmtfY29ubmVjdG9yICpzX2Zzbm90aWZ5X21hcmtzOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBjaGFyIHNfaWRbMzJdOwoxNDQ3NDogIHV1aWRfdCBzX3V1aWQ7CjE0 NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc19tYXhfbGlua3M7CjE0NDc0OiAgZm1vZGVfdCBz X21vZGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0 cnVjdCBtdXRleCBzX3Zmc19yZW5hbWVfbXV0ZXg7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0IGNoYXIgKnNfc3VidHlwZTsKMTQ0NzQ6IAoxNDQ3 NDogIGNvbnN0IHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyAqc19kX29wOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50IGNsZWFuY2FjaGVfcG9vbGlkOwoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IHNocmlua2VyIHNfc2hyaW5rOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBhdG9taWNfbG9uZ190IHNfcmVtb3ZlX2NvdW50OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBh dG9taWNfbG9uZ190IHNfZnNub3RpZnlfaW5vZGVfcmVmczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgaW50IHNfcmVhZG9ubHlfcmVtb3VudDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0 IHdvcmtxdWV1ZV9zdHJ1Y3QgKnNfZGlvX2RvbmVfd3E7CjE0NDc0OiAgc3RydWN0IGhsaXN0X2hl YWQgc19waW5zOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqc191c2VyX25zOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2xy dSBzX2RlbnRyeV9scnU7CjE0NDc0OiAgc3RydWN0IGxpc3RfbHJ1IHNfaW5vZGVfbHJ1OwoxNDQ3 NDogIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKMTQ0NzQ6ICBzdHJ1Y3Qgd29ya19zdHJ1Y3Qg ZGVzdHJveV93b3JrOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IG11dGV4IHNfc3luY19sb2NrOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50IHNfc3RhY2tfZGVwdGg7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5sb2NrX3Qgc19pbm9kZV9saXN0X2xvY2sgX19h dHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKDYpKSkpKTsKMTQ0NzQ6ICBzdHJ1Y3QgbGlz dF9oZWFkIHNfaW5vZGVzOwoxNDQ3NDogCjE0NDc0OiAgc3BpbmxvY2tfdCBzX2lub2RlX3dibGlz dF9sb2NrOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgc19pbm9kZXNfd2I7CjE0NDc0OiB9IF9f YXR0cmlidXRlX18oKF9fZGVzaWduYXRlZF9pbml0X18pKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVpZF90IGlfdWlkX3JlYWQoY29uc3Qg c3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZnJvbV9rdWlkKGlu b2RlLT5pX3NiLT5zX3VzZXJfbnMsIGlub2RlLT5pX3VpZCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGdpZF90IGlfZ2lkX3JlYWQoY29uc3Qgc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gZnJvbV9rZ2lkKGlub2RlLT5pX3NiLT5zX3VzZXJfbnMsIGlub2RlLT5p X2dpZCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaV91aWRfd3JpdGUoc3RydWN0IGlu b2RlICppbm9kZSwgdWlkX3QgdWlkKQoxNDQ3NDogewoxNDQ3NDogIGlub2RlLT5pX3VpZCA9IG1h a2Vfa3VpZChpbm9kZS0+aV9zYi0+c191c2VyX25zLCB1aWQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGlfZ2lkX3dyaXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGdpZF90IGdpZCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBpbm9kZS0+aV9naWQgPSBtYWtlX2tnaWQoaW5vZGUtPmlfc2ItPnNfdXNl cl9ucywgZ2lkKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB0aW1lc3Bl YzY0IGN1cnJlbnRfdGltZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIF9fc2JfZW5kX3dyaXRlKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IsIGludCBsZXZlbCk7CjE0NDc0OiBpbnQgX19zYl9zdGFydF93cml0ZShz dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgbGV2ZWwsIGJvb2wgd2FpdCk7CjE0NDc0OiAjIDE2 MDAgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzYl9lbmRfd3JpdGUoc3RydWN0 IHN1cGVyX2Jsb2NrICpzYikKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX3NiX2VuZF93cml0ZShzYiwgU0Jf RlJFRVpFX1dSSVRFKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTYxMiAiLi9pbmNsdWRlL2xpbnV4L2Zz LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHNiX2VuZF9wYWdlZmF1bHQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikK MTQ0NzQ6IHsKMTQ0NzQ6ICBfX3NiX2VuZF93cml0ZShzYiwgU0JfRlJFRVpFX1BBR0VGQVVMVCk7 CjE0NDc0OiB9CjE0NDc0OiAjIDE2MjQgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBzYl9lbmRfaW50d3JpdGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBfX3NiX2VuZF93cml0ZShzYiwgU0JfRlJFRVpFX0ZTKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTY0 OCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNiX3N0YXJ0X3dyaXRlKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IpCjE0NDc0OiB7CjE0NDc0OiAgX19zYl9zdGFydF93cml0ZShzYiwg U0JfRlJFRVpFX1dSSVRFLCB0cnVlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHNiX3N0 YXJ0X3dyaXRlX3RyeWxvY2soc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gX19zYl9zdGFydF93cml0ZShzYiwgU0JfRlJFRVpFX1dSSVRFLCBmYWxzZSk7CjE0 NDc0OiB9CjE0NDc0OiAjIDE2NzcgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBz Yl9zdGFydF9wYWdlZmF1bHQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBfX3NiX3N0YXJ0X3dyaXRlKHNiLCBTQl9GUkVFWkVfUEFHRUZBVUxULCB0cnVlKTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgMTY5NSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNiX3N0 YXJ0X2ludHdyaXRlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCjE0NDc0OiB7CjE0NDc0OiAgX19z Yl9zdGFydF93cml0ZShzYiwgU0JfRlJFRVpFX0ZTLCB0cnVlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgaW50IHNiX3N0YXJ0X2ludHdyaXRlX3RyeWxvY2soc3RydWN0IHN1cGVyX2Jsb2NrICpz YikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19zYl9zdGFydF93cml0ZShzYiwgU0JfRlJFRVpF X0ZTLCBmYWxzZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wg aW5vZGVfb3duZXJfb3JfY2FwYWJsZShjb25zdCBzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCB2ZnNfY3JlYXRlKHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHVtb2RlX3QsIGJvb2wpOwoxNDQ3NDogZXh0 ZXJuIGludCB2ZnNfbWtkaXIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgdW1vZGVf dCk7CjE0NDc0OiBleHRlcm4gaW50IHZmc19ta25vZChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRl bnRyeSAqLCB1bW9kZV90LCBkZXZfdCk7CjE0NDc0OiBleHRlcm4gaW50IHZmc19zeW1saW5rKHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7CjE0NDc0OiBleHRl cm4gaW50IHZmc19saW5rKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICosIHN0cnVjdCBk ZW50cnkgKiwgc3RydWN0IGlub2RlICoqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgdmZzX3JtZGlyKHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoxNDQ3NDogZXh0ZXJuIGludCB2ZnNfdW5s aW5rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKik7CjE0 NDc0OiBleHRlcm4gaW50IHZmc19yZW5hbWUoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkg Kiwgc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICoqLCB1bnNp Z25lZCBpbnQpOwoxNDQ3NDogZXh0ZXJuIGludCB2ZnNfd2hpdGVvdXQoc3RydWN0IGlub2RlICos IHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICp2 ZnNfdG1wZmlsZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAg ICAgIGludCBvcGVuX2ZsYWcpOwoxNDQ3NDogCjE0NDc0OiBpbnQgdmZzX21rb2JqKHN0cnVjdCBk ZW50cnkgKiwgdW1vZGVfdCwKMTQ0NzQ6ICAgaW50ICgqZikoc3RydWN0IGRlbnRyeSAqLCB1bW9k ZV90LCB2b2lkICopLAoxNDQ3NDogICB2b2lkICopOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gbG9u ZyB2ZnNfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVk IGxvbmcgYXJnKTsKMTQ0NzQ6ICMgMTc0MCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBl eHRlcm4gdm9pZCBpbm9kZV9pbml0X293bmVyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHN0 cnVjdCBpbm9kZSAqZGlyLAoxNDQ3NDogICAgdW1vZGVfdCBtb2RlKTsKMTQ0NzQ6IGV4dGVybiBi b29sIG1heV9vcGVuX2Rldihjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCk7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvIHsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgZmlfZmxhZ3M7CjE0NDc0OiAgdW5zaWduZWQgaW50IGZpX2V4dGVudHNfbWFwcGVk OwoxNDQ3NDogIHVuc2lnbmVkIGludCBmaV9leHRlbnRzX21heDsKMTQ0NzQ6ICBzdHJ1Y3QgZmll bWFwX2V4dGVudCAqZmlfZXh0ZW50c19zdGFydDsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IGlu dCBmaWVtYXBfZmlsbF9uZXh0X2V4dGVudChzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvICppbmZv LCB1NjQgbG9naWNhbCwKMTQ0NzQ6ICAgICAgICB1NjQgcGh5cywgdTY0IGxlbiwgdTMyIGZsYWdz KTsKMTQ0NzQ6IGludCBmaWVtYXBfY2hlY2tfZmxhZ3Moc3RydWN0IGZpZW1hcF9leHRlbnRfaW5m byAqZmllaW5mbywgdTMyIGZzX2ZsYWdzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRpcl9jb250ZXh0OwoxNDQ3 NDogdHlwZWRlZiBpbnQgKCpmaWxsZGlyX3QpKHN0cnVjdCBkaXJfY29udGV4dCAqLCBjb25zdCBj aGFyICosIGludCwgbG9mZl90LCB1NjQsCjE0NDc0OiAgICAgdW5zaWduZWQpOwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZGlyX2NvbnRleHQgewoxNDQ3NDogIGZpbGxkaXJfdCBhY3RvcjsKMTQ0NzQ6 ICBsb2ZmX3QgcG9zOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJsb2NrX2Rldmlj ZV9vcGVyYXRpb25zOwoxNDQ3NDogIyAxODE5ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKMTQ0NzQ6 IHN0cnVjdCBpb3ZfaXRlcjsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB7 CjE0NDc0OiAgc3RydWN0IG1vZHVsZSAqb3duZXI7CjE0NDc0OiAgbG9mZl90ICgqbGxzZWVrKSAo c3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQpOwoxNDQ3NDogIHNzaXplX3QgKCpyZWFkKSAoc3Ry dWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKMTQ0NzQ6ICBzc2l6ZV90ICgq d3JpdGUpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwox NDQ3NDogIHNzaXplX3QgKCpyZWFkX2l0ZXIpIChzdHJ1Y3Qga2lvY2IgKiwgc3RydWN0IGlvdl9p dGVyICopOwoxNDQ3NDogIHNzaXplX3QgKCp3cml0ZV9pdGVyKSAoc3RydWN0IGtpb2NiICosIHN0 cnVjdCBpb3ZfaXRlciAqKTsKMTQ0NzQ6ICBpbnQgKCppb3BvbGwpKHN0cnVjdCBraW9jYiAqa2lv Y2IsIGJvb2wgc3Bpbik7CjE0NDc0OiAgaW50ICgqaXRlcmF0ZSkgKHN0cnVjdCBmaWxlICosIHN0 cnVjdCBkaXJfY29udGV4dCAqKTsKMTQ0NzQ6ICBpbnQgKCppdGVyYXRlX3NoYXJlZCkgKHN0cnVj dCBmaWxlICosIHN0cnVjdCBkaXJfY29udGV4dCAqKTsKMTQ0NzQ6ICBfX3BvbGxfdCAoKnBvbGwp IChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKik7CjE0NDc0OiAgbG9u ZyAoKnVubG9ja2VkX2lvY3RsKSAoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25l ZCBsb25nKTsKMTQ0NzQ6ICBsb25nICgqY29tcGF0X2lvY3RsKSAoc3RydWN0IGZpbGUgKiwgdW5z aWduZWQgaW50LCB1bnNpZ25lZCBsb25nKTsKMTQ0NzQ6ICBpbnQgKCptbWFwKSAoc3RydWN0IGZp bGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbW1h cF9zdXBwb3J0ZWRfZmxhZ3M7CjE0NDc0OiAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBz dHJ1Y3QgZmlsZSAqKTsKMTQ0NzQ6ICBpbnQgKCpmbHVzaCkgKHN0cnVjdCBmaWxlICosIGZsX293 bmVyX3QgaWQpOwoxNDQ3NDogIGludCAoKnJlbGVhc2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0 IGZpbGUgKik7CjE0NDc0OiAgaW50ICgqZnN5bmMpIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxv ZmZfdCwgaW50IGRhdGFzeW5jKTsKMTQ0NzQ6ICBpbnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBm aWxlICosIGludCk7CjE0NDc0OiAgaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICosIGludCwgc3Ry dWN0IGZpbGVfbG9jayAqKTsKMTQ0NzQ6ICBzc2l6ZV90ICgqc2VuZHBhZ2UpIChzdHJ1Y3QgZmls ZSAqLCBzdHJ1Y3QgcGFnZSAqLCBpbnQsIHNpemVfdCwgbG9mZl90ICosIGludCk7CjE0NDc0OiAg dW5zaWduZWQgbG9uZyAoKmdldF91bm1hcHBlZF9hcmVhKShzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25l ZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKMTQ0 NzQ6ICBpbnQgKCpjaGVja19mbGFncykoaW50KTsKMTQ0NzQ6ICBpbnQgKCpmbG9jaykgKHN0cnVj dCBmaWxlICosIGludCwgc3RydWN0IGZpbGVfbG9jayAqKTsKMTQ0NzQ6ICBzc2l6ZV90ICgqc3Bs aWNlX3dyaXRlKShzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICosIHN0cnVjdCBmaWxlICosIGxvZmZf dCAqLCBzaXplX3QsIHVuc2lnbmVkIGludCk7CjE0NDc0OiAgc3NpemVfdCAoKnNwbGljZV9yZWFk KShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqLCBzaXpl X3QsIHVuc2lnbmVkIGludCk7CjE0NDc0OiAgaW50ICgqc2V0bGVhc2UpKHN0cnVjdCBmaWxlICos IGxvbmcsIHN0cnVjdCBmaWxlX2xvY2sgKiosIHZvaWQgKiopOwoxNDQ3NDogIGxvbmcgKCpmYWxs b2NhdGUpKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwKMTQ0NzQ6 ICAgICAgbG9mZl90IGxlbik7CjE0NDc0OiAgdm9pZCAoKnNob3dfZmRpbmZvKShzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHN0cnVjdCBmaWxlICpmKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBzc2l6ZV90ICgqY29weV9maWxlX3JhbmdlKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIHN0cnVj dCBmaWxlICosCjE0NDc0OiAgICBsb2ZmX3QsIHNpemVfdCwgdW5zaWduZWQgaW50KTsKMTQ0NzQ6 ICBsb2ZmX3QgKCpyZW1hcF9maWxlX3JhbmdlKShzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9mZl90 IHBvc19pbiwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nf b3V0LAoxNDQ3NDogICAgICAgIGxvZmZfdCBsZW4sIHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7 CjE0NDc0OiAgaW50ICgqZmFkdmlzZSkoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBsb2ZmX3QsIGlu dCk7CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fZGVzaWduYXRlZF9pbml0X18pKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGlub2RlX29wZXJhdGlvbnMgewoxNDQ3NDogIHN0cnVjdCBkZW50cnkg KiAoKmxvb2t1cCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKiwgdW5zaWduZWQgaW50 KTsKMTQ0NzQ6ICBjb25zdCBjaGFyICogKCpnZXRfbGluaykgKHN0cnVjdCBkZW50cnkgKiwgc3Ry dWN0IGlub2RlICosIHN0cnVjdCBkZWxheWVkX2NhbGwgKik7CjE0NDc0OiAgaW50ICgqcGVybWlz c2lvbikgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwoxNDQ3NDogIHN0cnVjdCBwb3NpeF9hY2wgKiAo KmdldF9hY2wpKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqcmVh ZGxpbmspIChzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKixpbnQpOwoxNDQ3NDogCjE0NDc0OiAgaW50 ICgqY3JlYXRlKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLCB1bW9kZV90LCBib29s KTsKMTQ0NzQ6ICBpbnQgKCpsaW5rKSAoc3RydWN0IGRlbnRyeSAqLHN0cnVjdCBpbm9kZSAqLHN0 cnVjdCBkZW50cnkgKik7CjE0NDc0OiAgaW50ICgqdW5saW5rKSAoc3RydWN0IGlub2RlICosc3Ry dWN0IGRlbnRyeSAqKTsKMTQ0NzQ6ICBpbnQgKCpzeW1saW5rKSAoc3RydWN0IGlub2RlICosc3Ry dWN0IGRlbnRyeSAqLGNvbnN0IGNoYXIgKik7CjE0NDc0OiAgaW50ICgqbWtkaXIpIChzdHJ1Y3Qg aW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosdW1vZGVfdCk7CjE0NDc0OiAgaW50ICgqcm1kaXIpIChz dHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwoxNDQ3NDogIGludCAoKm1rbm9kKSAoc3Ry dWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLHVtb2RlX3QsZGV2X3QpOwoxNDQ3NDogIGludCAo KnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosCjE0NDc0OiAgICBzdHJ1 Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCB1bnNpZ25lZCBpbnQpOwoxNDQ3NDogIGludCAo KnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKMTQ0NzQ6ICBpbnQg KCpnZXRhdHRyKSAoY29uc3Qgc3RydWN0IHBhdGggKiwgc3RydWN0IGtzdGF0ICosIHUzMiwgdW5z aWduZWQgaW50KTsKMTQ0NzQ6ICBzc2l6ZV90ICgqbGlzdHhhdHRyKSAoc3RydWN0IGRlbnRyeSAq LCBjaGFyICosIHNpemVfdCk7CjE0NDc0OiAgaW50ICgqZmllbWFwKShzdHJ1Y3QgaW5vZGUgKiwg c3RydWN0IGZpZW1hcF9leHRlbnRfaW5mbyAqLCB1NjQgc3RhcnQsCjE0NDc0OiAgICAgICAgIHU2 NCBsZW4pOwoxNDQ3NDogIGludCAoKnVwZGF0ZV90aW1lKShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0 IHRpbWVzcGVjNjQgKiwgaW50KTsKMTQ0NzQ6ICBpbnQgKCphdG9taWNfb3Blbikoc3RydWN0IGlu b2RlICosIHN0cnVjdCBkZW50cnkgKiwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBmaWxlICosIHVuc2ln bmVkIG9wZW5fZmxhZywKMTQ0NzQ6ICAgICAgIHVtb2RlX3QgY3JlYXRlX21vZGUpOwoxNDQ3NDog IGludCAoKnRtcGZpbGUpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCB1bW9kZV90 KTsKMTQ0NzQ6ICBpbnQgKCpzZXRfYWNsKShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHBvc2l4X2Fj bCAqLCBpbnQpOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikp KSkpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzc2l6ZV90IGNhbGxfcmVhZF9pdGVyKHN0cnVjdCBmaWxlICpm aWxlLCBzdHJ1Y3Qga2lvY2IgKmtpbywKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBpb3ZfaXRlciAq aXRlcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZmlsZS0+Zl9vcC0+cmVhZF9pdGVyKGtpbywg aXRlcik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHNzaXplX3QgY2FsbF93cml0ZV9pdGVyKHN0 cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga2lvY2IgKmtpbywKMTQ0NzQ6ICAgICAgICAgICBzdHJ1 Y3QgaW92X2l0ZXIgKml0ZXIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZpbGUtPmZfb3AtPndy aXRlX2l0ZXIoa2lvLCBpdGVyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNhbGxfbW1h cChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIGZpbGUtPmZfb3AtPm1tYXAoZmlsZSwgdm1hKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3NpemVfdCByd19jb3B5X2NoZWNrX3V2ZWN0b3IoaW50IHR5cGUsIGNvbnN0 IHN0cnVjdCBpb3ZlYyAqIHV2ZWN0b3IsCjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBsb25nIG5y X3NlZ3MsIHVuc2lnbmVkIGxvbmcgZmFzdF9zZWdzLAoxNDQ3NDogICAgICAgICAgc3RydWN0IGlv dmVjICpmYXN0X3BvaW50ZXIsCjE0NDc0OiAgICAgICAgICBzdHJ1Y3QgaW92ZWMgKipyZXRfcG9p bnRlcik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IF9fdmZzX3JlYWQoc3RydWN0IGZp bGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IHZm c19yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CjE0NDc0OiBl eHRlcm4gc3NpemVfdCB2ZnNfd3JpdGUoc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXpl X3QsIGxvZmZfdCAqKTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IHZmc19yZWFkdihzdHJ1Y3QgZmls ZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZywgbG9mZl90 ICosIHJ3Zl90KTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IHZmc19jb3B5X2ZpbGVfcmFuZ2Uoc3Ry dWN0IGZpbGUgKiwgbG9mZl90ICwgc3RydWN0IGZpbGUgKiwKMTQ0NzQ6ICAgICAgICBsb2ZmX3Qs IHNpemVfdCwgdW5zaWduZWQgaW50KTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IGdlbmVyaWNfY29w eV9maWxlX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlX2luLCBsb2ZmX3QgcG9zX2luLAoxNDQ3NDog ICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0LAoxNDQ3NDog ICAgICAgICAgICBzaXplX3QgbGVuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwoxNDQ3NDogZXh0ZXJu IGludCBnZW5lcmljX3JlbWFwX2ZpbGVfcmFuZ2VfcHJlcChzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwg bG9mZl90IHBvc19pbiwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBmaWxlICpmaWxlX291dCwgbG9mZl90 IHBvc19vdXQsCjE0NDc0OiAgICAgICBsb2ZmX3QgKmNvdW50LAoxNDQ3NDogICAgICAgdW5zaWdu ZWQgaW50IHJlbWFwX2ZsYWdzKTsKMTQ0NzQ6IGV4dGVybiBsb2ZmX3QgZG9fY2xvbmVfZmlsZV9y YW5nZShzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9mZl90IHBvc19pbiwKMTQ0NzQ6ICAgICAgIHN0 cnVjdCBmaWxlICpmaWxlX291dCwgbG9mZl90IHBvc19vdXQsCjE0NDc0OiAgICAgICBsb2ZmX3Qg bGVuLCB1bnNpZ25lZCBpbnQgcmVtYXBfZmxhZ3MpOwoxNDQ3NDogZXh0ZXJuIGxvZmZfdCB2ZnNf Y2xvbmVfZmlsZV9yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9mZl90IHBvc19pbiwKMTQ0 NzQ6ICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0LAoxNDQ3NDog ICAgICAgIGxvZmZfdCBsZW4sIHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7CjE0NDc0OiBleHRl cm4gaW50IHZmc19kZWR1cGVfZmlsZV9yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwKMTQ0NzQ6ICAg ICAgc3RydWN0IGZpbGVfZGVkdXBlX3JhbmdlICpzYW1lKTsKMTQ0NzQ6IGV4dGVybiBsb2ZmX3Qg dmZzX2RlZHVwZV9maWxlX3JhbmdlX29uZShzdHJ1Y3QgZmlsZSAqc3JjX2ZpbGUsIGxvZmZfdCBz cmNfcG9zLAoxNDQ3NDogICAgICBzdHJ1Y3QgZmlsZSAqZHN0X2ZpbGUsIGxvZmZfdCBkc3RfcG9z LAoxNDQ3NDogICAgICBsb2ZmX3QgbGVuLCB1bnNpZ25lZCBpbnQgcmVtYXBfZmxhZ3MpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIHsKMTQ0NzQ6ICAgICBz dHJ1Y3QgaW5vZGUgKigqYWxsb2NfaW5vZGUpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoxNDQ3 NDogIHZvaWQgKCpkZXN0cm95X2lub2RlKShzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiAgdm9pZCAo KmZyZWVfaW5vZGUpKHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogICAgIHZvaWQgKCpk aXJ0eV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQgZmxhZ3MpOwoxNDQ3NDogIGludCAoKndy aXRlX2lub2RlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2Jj KTsKMTQ0NzQ6ICBpbnQgKCpkcm9wX2lub2RlKSAoc3RydWN0IGlub2RlICopOwoxNDQ3NDogIHZv aWQgKCpldmljdF9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6ICB2b2lkICgqcHV0X3N1 cGVyKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwoxNDQ3NDogIGludCAoKnN5bmNfZnMpKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IsIGludCB3YWl0KTsKMTQ0NzQ6ICBpbnQgKCpmcmVlemVfc3VwZXIp IChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CjE0NDc0OiAgaW50ICgqZnJlZXplX2ZzKSAoc3RydWN0 IHN1cGVyX2Jsb2NrICopOwoxNDQ3NDogIGludCAoKnRoYXdfc3VwZXIpIChzdHJ1Y3Qgc3VwZXJf YmxvY2sgKik7CjE0NDc0OiAgaW50ICgqdW5mcmVlemVfZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg Kik7CjE0NDc0OiAgaW50ICgqc3RhdGZzKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qga3N0YXRm cyAqKTsKMTQ0NzQ6ICBpbnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGlu dCAqLCBjaGFyICopOwoxNDQ3NDogIHZvaWQgKCp1bW91bnRfYmVnaW4pIChzdHJ1Y3Qgc3VwZXJf YmxvY2sgKik7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCpzaG93X29wdGlvbnMpKHN0cnVjdCBzZXFf ZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoxNDQ3NDogIGludCAoKnNob3dfZGV2bmFtZSkoc3Ry dWN0IHNlcV9maWxlICosIHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiAgaW50ICgqc2hvd19wYXRo KShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKMTQ0NzQ6ICBpbnQgKCpzaG93 X3N0YXRzKShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKMTQ0NzQ6IAoxNDQ3 NDogIHNzaXplX3QgKCpxdW90YV9yZWFkKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50LCBjaGFy ICosIHNpemVfdCwgbG9mZl90KTsKMTQ0NzQ6ICBzc2l6ZV90ICgqcXVvdGFfd3JpdGUpKHN0cnVj dCBzdXBlcl9ibG9jayAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QpOwoxNDQ3 NDogIHN0cnVjdCBkcXVvdCAqKigqZ2V0X2RxdW90cykoc3RydWN0IGlub2RlICopOwoxNDQ3NDog CjE0NDc0OiAgaW50ICgqYmRldl90cnlfdG9fZnJlZV9wYWdlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sq LCBzdHJ1Y3QgcGFnZSosIGdmcF90KTsKMTQ0NzQ6ICBsb25nICgqbnJfY2FjaGVkX29iamVjdHMp KHN0cnVjdCBzdXBlcl9ibG9jayAqLAoxNDQ3NDogICAgICAgc3RydWN0IHNocmlua19jb250cm9s ICopOwoxNDQ3NDogIGxvbmcgKCpmcmVlX2NhY2hlZF9vYmplY3RzKShzdHJ1Y3Qgc3VwZXJfYmxv Y2sgKiwKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHNocmlua19jb250cm9sICopOwoxNDQ3NDogfTsK MTQ0NzQ6ICMgMjAxNyAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHNiX3Jkb25s eShjb25zdCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKSB7IHJldHVybiBzYi0+c19mbGFncyAmIDE7 IH0KMTQ0NzQ6ICMgMjA0NyAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIEhBU19V Tk1BUFBFRF9JRChzdHJ1Y3QgaW5vZGUgKmlub2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAh dWlkX3ZhbGlkKGlub2RlLT5pX3VpZCkgfHwgIWdpZF92YWxpZChpbm9kZS0+aV9naWQpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBlbnVtIHJ3X2hpbnQgZmlsZV93cml0ZV9oaW50KHN0cnVjdCBm aWxlICpmaWxlKQoxNDQ3NDogewoxNDQ3NDogIGlmIChmaWxlLT5mX3dyaXRlX2hpbnQgIT0gV1JJ VEVfTElGRV9OT1RfU0VUKQoxNDQ3NDogICByZXR1cm4gZmlsZS0+Zl93cml0ZV9oaW50OwoxNDQ3 NDogCjE0NDc0OiAgcmV0dXJuIGZpbGVfaW5vZGUoZmlsZSktPmlfd3JpdGVfaGludDsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlvY2JfZmxhZ3Moc3RydWN0IGZpbGUgKmZpbGUpOwoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB1MTYga2lfaGludF92YWxpZGF0ZShlbnVtIHJ3X2hpbnQgaGludCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICB0eXBlb2YoKChzdHJ1Y3Qga2lvY2IgKikwKS0+a2lfaGludCkgbWF4X2hpbnQg PSAtMTsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChoaW50IDw9IG1heF9oaW50KQoxNDQ3NDogICByZXR1 cm4gaGludDsKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBp bml0X3N5bmNfa2lvY2Ioc3RydWN0IGtpb2NiICpraW9jYiwgc3RydWN0IGZpbGUgKmZpbHApCjE0 NDc0OiB7CjE0NDc0OiAgKmtpb2NiID0gKHN0cnVjdCBraW9jYikgewoxNDQ3NDogICAua2lfZmls cCA9IGZpbHAsCjE0NDc0OiAgIC5raV9mbGFncyA9IGlvY2JfZmxhZ3MoZmlscCksCjE0NDc0OiAg IC5raV9oaW50ID0ga2lfaGludF92YWxpZGF0ZShmaWxlX3dyaXRlX2hpbnQoZmlscCkpLAoxNDQ3 NDogICAua2lfaW9wcmlvID0gZ2V0X2N1cnJlbnRfaW9wcmlvKCksCjE0NDc0OiAgfTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBraW9jYl9jbG9uZShzdHJ1Y3Qga2lvY2IgKmtpb2NiLCBz dHJ1Y3Qga2lvY2IgKmtpb2NiX3NyYywKMTQ0NzQ6ICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmls cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAqa2lvY2IgPSAoc3RydWN0IGtpb2NiKSB7CjE0NDc0OiAgIC5r aV9maWxwID0gZmlscCwKMTQ0NzQ6ICAgLmtpX2ZsYWdzID0ga2lvY2Jfc3JjLT5raV9mbGFncywK MTQ0NzQ6ICAgLmtpX2hpbnQgPSBraW9jYl9zcmMtPmtpX2hpbnQsCjE0NDc0OiAgIC5raV9pb3By aW8gPSBraW9jYl9zcmMtPmtpX2lvcHJpbywKMTQ0NzQ6ICAgLmtpX3BvcyA9IGtpb2NiX3NyYy0+ a2lfcG9zLAoxNDQ3NDogIH07CjE0NDc0OiB9CjE0NDc0OiAjIDIxODEgIi4vaW5jbHVkZS9saW51 eC9mcy5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgX19tYXJrX2lub2RlX2RpcnR5KHN0cnVjdCBpbm9k ZSAqLCBpbnQpOwoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtYXJrX2lub2RlX2RpcnR5KHN0cnVjdCBpbm9kZSAqaW5v ZGUpCjE0NDc0OiB7CjE0NDc0OiAgX19tYXJrX2lub2RlX2RpcnR5KGlub2RlLCAoKCgxIDw8IDAp IHwgKDEgPDwgMSkpIHwgKDEgPDwgMikpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBt YXJrX2lub2RlX2RpcnR5X3N5bmMoc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBfX21hcmtfaW5vZGVfZGlydHkoaW5vZGUsICgxIDw8IDApKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIHZvaWQgaW5jX25saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoxNDQ3NDog ZXh0ZXJuIHZvaWQgZHJvcF9ubGluayhzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIGNsZWFyX25saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgc2V0X25saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBubGluayk7CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgaW5vZGVfaW5jX2xpbmtfY291bnQoc3RydWN0IGlub2RlICppbm9k ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbmNfbmxpbmsoaW5vZGUpOwoxNDQ3NDogIG1hcmtfaW5vZGVf ZGlydHkoaW5vZGUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlub2RlX2RlY19saW5r X2NvdW50KHN0cnVjdCBpbm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgZHJvcF9ubGluayhp bm9kZSk7CjE0NDc0OiAgbWFya19pbm9kZV9kaXJ0eShpbm9kZSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IGVudW0gZmlsZV90aW1lX2ZsYWdzIHsKMTQ0NzQ6ICBTX0FUSU1FID0gMSwKMTQ0NzQ6 ICBTX01USU1FID0gMiwKMTQ0NzQ6ICBTX0NUSU1FID0gNCwKMTQ0NzQ6ICBTX1ZFUlNJT04gPSA4 LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wgYXRpbWVfbmVlZHNfdXBkYXRl KGNvbnN0IHN0cnVjdCBwYXRoICosIHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lk IHRvdWNoX2F0aW1lKGNvbnN0IHN0cnVjdCBwYXRoICopOwoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmaWxlX2FjY2Vz c2VkKHN0cnVjdCBmaWxlICpmaWxlKQoxNDQ3NDogewoxNDQ3NDogIGlmICghKGZpbGUtPmZfZmxh Z3MgJiAwMTAwMDAwMCkpCjE0NDc0OiAgIHRvdWNoX2F0aW1lKCZmaWxlLT5mX3BhdGgpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGZpbGVfbW9kaWZpZWQoc3RydWN0IGZpbGUg KmZpbGUpOwoxNDQ3NDogCjE0NDc0OiBpbnQgc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2Rl LCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYyk7CjE0NDc0OiBpbnQgc3luY19pbm9kZV9t ZXRhZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgd2FpdCk7CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBmaWxlX3N5c3RlbV90eXBlIHsKMTQ0NzQ6ICBjb25zdCBjaGFyICpuYW1lOwoxNDQ3NDog IGludCBmc19mbGFnczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICBpbnQgKCppbml0X2ZzX2NvbnRleHQpKHN0cnVjdCBmc19jb250ZXh0ICop OwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBmc19wYXJhbWV0ZXJfc3BlYyAqcGFyYW1ldGVyczsKMTQ0 NzQ6ICBzdHJ1Y3QgZGVudHJ5ICooKm1vdW50KSAoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiwg aW50LAoxNDQ3NDogICAgICAgICAgY29uc3QgY2hhciAqLCB2b2lkICopOwoxNDQ3NDogIHZvaWQg KCpraWxsX3NiKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwoxNDQ3NDogIHN0cnVjdCBtb2R1bGUg Km93bmVyOwoxNDQ3NDogIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICogbmV4dDsKMTQ0NzQ6ICBz dHJ1Y3QgaGxpc3RfaGVhZCBmc19zdXBlcnM7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbG9ja19j bGFzc19rZXkgc19sb2NrX2tleTsKMTQ0NzQ6ICBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgc191bW91 bnRfa2V5OwoxNDQ3NDogIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBzX3Zmc19yZW5hbWVfa2V5Owox NDQ3NDogIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBzX3dyaXRlcnNfa2V5WyhTQl9GUkVFWkVfQ09N UExFVEUgLSAxKV07CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgaV9sb2Nr X2tleTsKMTQ0NzQ6ICBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgaV9tdXRleF9rZXk7CjE0NDc0OiAg c3RydWN0IGxvY2tfY2xhc3Nfa2V5IGlfbXV0ZXhfZGlyX2tleTsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICptb3Vu dF9iZGV2KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAoxNDQ3NDogIGludCBmbGFn cywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsCjE0NDc0OiAgaW50ICgqZmlsbF9z dXBlcikoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KSk7CjE0NDc0OiAjIDIyNzEg Ii4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZW50cnkgKm1vdW50 X3NpbmdsZShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKMTQ0NzQ6ICBpbnQgZmxh Z3MsIHZvaWQgKmRhdGEsCjE0NDc0OiAgaW50ICgqZmlsbF9zdXBlcikoc3RydWN0IHN1cGVyX2Js b2NrICosIHZvaWQgKiwgaW50KSk7CjE0NDc0OiBleHRlcm4gc3RydWN0IGRlbnRyeSAqbW91bnRf bm9kZXYoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCjE0NDc0OiAgaW50IGZsYWdz LCB2b2lkICpkYXRhLAoxNDQ3NDogIGludCAoKmZpbGxfc3VwZXIpKHN0cnVjdCBzdXBlcl9ibG9j ayAqLCB2b2lkICosIGludCkpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZW50cnkgKm1vdW50X3N1 YnRyZWUoc3RydWN0IHZmc21vdW50ICptbnQsIGNvbnN0IGNoYXIgKnBhdGgpOwoxNDQ3NDogdm9p ZCBnZW5lcmljX3NodXRkb3duX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoxNDQ3NDog CjE0NDc0OiB2b2lkIGtpbGxfYmxvY2tfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lk IGtpbGxfYW5vbl9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKMTQ0NzQ6IHZvaWQga2ls bF9saXR0ZXJfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CjE0NDc0OiB2b2lkIGRlYWN0 aXZhdGVfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CjE0NDc0OiB2b2lkIGRlYWN0aXZh dGVfbG9ja2VkX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoxNDQ3NDogaW50IHNldF9h bm9uX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqcywgdm9pZCAqZGF0YSk7CjE0NDc0OiBpbnQg c2V0X2Fub25fc3VwZXJfZmMoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBzdHJ1Y3QgZnNfY29udGV4 dCAqZmMpOwoxNDQ3NDogaW50IGdldF9hbm9uX2JkZXYoZGV2X3QgKik7CjE0NDc0OiB2b2lkIGZy ZWVfYW5vbl9iZGV2KGRldl90KTsKMTQ0NzQ6IHN0cnVjdCBzdXBlcl9ibG9jayAqc2dldF9mYyhz dHJ1Y3QgZnNfY29udGV4dCAqZmMsCjE0NDc0OiAgICAgICAgaW50ICgqdGVzdCkoc3RydWN0IHN1 cGVyX2Jsb2NrICosIHN0cnVjdCBmc19jb250ZXh0ICopLAoxNDQ3NDogICAgICAgIGludCAoKnNl dCkoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBmc19jb250ZXh0ICopKTsKMTQ0NzQ6IHN0 cnVjdCBzdXBlcl9ibG9jayAqc2dldChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqdHlwZSwKMTQ0 NzQ6ICAgIGludCAoKnRlc3QpKHN0cnVjdCBzdXBlcl9ibG9jayAqLHZvaWQgKiksCjE0NDc0OiAg ICBpbnQgKCpzZXQpKHN0cnVjdCBzdXBlcl9ibG9jayAqLHZvaWQgKiksCjE0NDc0OiAgICBpbnQg ZmxhZ3MsIHZvaWQgKmRhdGEpOwoxNDQ3NDogIyAyMzIwICIuL2luY2x1ZGUvbGludXgvZnMuaCIK MTQ0NzQ6IGV4dGVybiBpbnQgcmVnaXN0ZXJfZmlsZXN5c3RlbShzdHJ1Y3QgZmlsZV9zeXN0ZW1f dHlwZSAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgdW5yZWdpc3Rlcl9maWxlc3lzdGVtKHN0cnVjdCBm aWxlX3N5c3RlbV90eXBlICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB2ZnNtb3VudCAqa2Vybl9t b3VudChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGtlcm5f dW5tb3VudChzdHJ1Y3QgdmZzbW91bnQgKm1udCk7CjE0NDc0OiBleHRlcm4gaW50IG1heV91bW91 bnRfdHJlZShzdHJ1Y3QgdmZzbW91bnQgKik7CjE0NDc0OiBleHRlcm4gaW50IG1heV91bW91bnQo c3RydWN0IHZmc21vdW50ICopOwoxNDQ3NDogZXh0ZXJuIGxvbmcgZG9fbW91bnQoY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICosCjE0NDc0OiAgICAgICAgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBs b25nLCB2b2lkICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB2ZnNtb3VudCAqY29sbGVjdF9tb3Vu dHMoY29uc3Qgc3RydWN0IHBhdGggKik7CjE0NDc0OiBleHRlcm4gdm9pZCBkcm9wX2NvbGxlY3Rl ZF9tb3VudHMoc3RydWN0IHZmc21vdW50ICopOwoxNDQ3NDogZXh0ZXJuIGludCBpdGVyYXRlX21v dW50cyhpbnQgKCopKHN0cnVjdCB2ZnNtb3VudCAqLCB2b2lkICopLCB2b2lkICosCjE0NDc0OiAg ICAgIHN0cnVjdCB2ZnNtb3VudCAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgdmZzX3N0YXRmcyhjb25z dCBzdHJ1Y3QgcGF0aCAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgdXNl cl9zdGF0ZnMoY29uc3QgY2hhciAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKMTQ0NzQ6IGV4dGVybiBp bnQgZmRfc3RhdGZzKGludCwgc3RydWN0IGtzdGF0ZnMgKik7CjE0NDc0OiBleHRlcm4gaW50IGZy ZWV6ZV9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnN1cGVyKTsKMTQ0NzQ6IGV4dGVybiBpbnQg dGhhd19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnN1cGVyKTsKMTQ0NzQ6IGV4dGVybiBib29s IG91cl9tbnQoc3RydWN0IHZmc21vdW50ICptbnQpOwoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRl X18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpCjE0NDc0OiBpbnQgc3VwZXJfc2V0dXBfYmRp X25hbWUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDogZXh0 ZXJuIGludCBzdXBlcl9zZXR1cF9iZGkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiBpbnQgY3VycmVudF91bWFzayh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIHZvaWQgaWhvbGQoc3RydWN0IGlub2RlICogaW5vZGUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQg aXB1dChzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiBleHRlcm4gaW50IGdlbmVyaWNfdXBkYXRlX3Rp bWUoc3RydWN0IGlub2RlICosIHN0cnVjdCB0aW1lc3BlYzY0ICosIGludCk7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBrb2JqZWN0ICpmc19rb2JqOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGxvY2tzX21hbmRhdG9yeV9sb2Nr ZWQoc3RydWN0IGZpbGUgKik7CjE0NDc0OiBleHRlcm4gaW50IGxvY2tzX21hbmRhdG9yeV9hcmVh KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgdW5zaWduZWQg Y2hhcik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgX19tYW5kYXRvcnlfbG9jayhzdHJ1Y3QgaW5vZGUgKmlubykKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gKGluby0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAxMCkpID09IDAwMDIwMDA7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgbWFuZGF0b3J5X2xvY2soc3RydWN0IGlub2RlICppbm8pCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICgoaW5vKS0+aV9zYi0+c19mbGFncyAmICg2NCkpICYmIF9fbWFuZGF0b3J5 X2xvY2soaW5vKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGxvY2tzX3ZlcmlmeV9sb2Nr ZWQoc3RydWN0IGZpbGUgKmZpbGUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKG1hbmRhdG9yeV9sb2Nr KGZpbGVfaW5vZGUoZmlsZSkpKQoxNDQ3NDogICByZXR1cm4gbG9ja3NfbWFuZGF0b3J5X2xvY2tl ZChmaWxlKTsKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGxv Y2tzX3ZlcmlmeV90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLAoxNDQ3NDogICAgICAgICBz dHJ1Y3QgZmlsZSAqZiwKMTQ0NzQ6ICAgICAgICAgbG9mZl90IHNpemUpCjE0NDc0OiB7CjE0NDc0 OiAgaWYgKCFpbm9kZS0+aV9mbGN0eCB8fCAhbWFuZGF0b3J5X2xvY2soaW5vZGUpKQoxNDQ3NDog ICByZXR1cm4gMDsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChzaXplIDwgaW5vZGUtPmlfc2l6ZSkgewox NDQ3NDogICByZXR1cm4gbG9ja3NfbWFuZGF0b3J5X2FyZWEoaW5vZGUsIGYsIHNpemUsIGlub2Rl LT5pX3NpemUgLSAxLAoxNDQ3NDogICAgIDEpOwoxNDQ3NDogIH0gZWxzZSB7CjE0NDc0OiAgIHJl dHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYShpbm9kZSwgZiwgaW5vZGUtPmlfc2l6ZSwgc2l6ZSAt IDEsCjE0NDc0OiAgICAgMSk7CjE0NDc0OiAgfQoxNDQ3NDogfQoxNDQ3NDogIyAyNDM4ICIuL2lu Y2x1ZGUvbGludXgvZnMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBicmVha19sZWFzZShzdHJ1Y3QgaW5vZGUgKmlu b2RlLCB1bnNpZ25lZCBpbnQgbW9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoImxvY2s7IGFkZGwg JDAsLTQoJSVyc3ApIiA6OjogIm1lbW9yeSIsICJjYyIpOwoxNDQ3NDogIGlmIChpbm9kZS0+aV9m bGN0eCAmJiAhbGlzdF9lbXB0eV9jYXJlZnVsKCZpbm9kZS0+aV9mbGN0eC0+ZmxjX2xlYXNlKSkK MTQ0NzQ6ICAgcmV0dXJuIF9fYnJlYWtfbGVhc2UoaW5vZGUsIG1vZGUsIDMyKTsKMTQ0NzQ6ICBy ZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJyZWFrX2RlbGVnKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBtb2RlKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgibG9j azsgYWRkbCAkMCwtNCglJXJzcCkiIDo6OiAibWVtb3J5IiwgImNjIik7CjE0NDc0OiAgaWYgKGlu b2RlLT5pX2ZsY3R4ICYmICFsaXN0X2VtcHR5X2NhcmVmdWwoJmlub2RlLT5pX2ZsY3R4LT5mbGNf bGVhc2UpKQoxNDQ3NDogICByZXR1cm4gX19icmVha19sZWFzZShpbm9kZSwgbW9kZSwgNCk7CjE0 NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0cnlfYnJlYWtfZGVs ZWcoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlub2RlICoqZGVsZWdhdGVkX2lub2RlKQox NDQ3NDogewoxNDQ3NDogIGludCByZXQ7CjE0NDc0OiAKMTQ0NzQ6ICByZXQgPSBicmVha19kZWxl Zyhpbm9kZSwgMDAwMDAwMDF8MDAwMDQwMDApOwoxNDQ3NDogIGlmIChyZXQgPT0gLTExICYmIGRl bGVnYXRlZF9pbm9kZSkgewoxNDQ3NDogICAqZGVsZWdhdGVkX2lub2RlID0gaW5vZGU7CjE0NDc0 OiAgIGlob2xkKGlub2RlKTsKMTQ0NzQ6ICB9CjE0NDc0OiAgcmV0dXJuIHJldDsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IGJyZWFrX2RlbGVnX3dhaXQoc3RydWN0IGlub2RlICoqZGVsZWdh dGVkX2lub2RlKQoxNDQ3NDogewoxNDQ3NDogIGludCByZXQ7CjE0NDc0OiAKMTQ0NzQ6ICByZXQg PSBicmVha19kZWxlZygqZGVsZWdhdGVkX2lub2RlLCAwMDAwMDAwMSk7CjE0NDc0OiAgaXB1dCgq ZGVsZWdhdGVkX2lub2RlKTsKMTQ0NzQ6ICAqZGVsZWdhdGVkX2lub2RlID0gKCh2b2lkICopMCk7 CjE0NDc0OiAgcmV0dXJuIHJldDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJyZWFrX2xh eW91dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIHdhaXQpCjE0NDc0OiB7CjE0NDc0OiAgYXNt IHZvbGF0aWxlKCJsb2NrOyBhZGRsICQwLC00KCUlcnNwKSIgOjo6ICJtZW1vcnkiLCAiY2MiKTsK MTQ0NzQ6ICBpZiAoaW5vZGUtPmlfZmxjdHggJiYgIWxpc3RfZW1wdHlfY2FyZWZ1bCgmaW5vZGUt PmlfZmxjdHgtPmZsY19sZWFzZSkpCjE0NDc0OiAgIHJldHVybiBfX2JyZWFrX2xlYXNlKGlub2Rl LAoxNDQ3NDogICAgIHdhaXQgPyAwMDAwMDAwMSA6IDAwMDAwMDAxIHwgMDAwMDQwMDAsCjE0NDc0 OiAgICAgMjA0OCk7CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAjIDI1MjggIi4v aW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RydWN0IGF1ZGl0X25hbWVzOwoxNDQ3NDogc3Ry dWN0IGZpbGVuYW1lIHsKMTQ0NzQ6ICBjb25zdCBjaGFyICpuYW1lOwoxNDQ3NDogIGNvbnN0IGNo YXIgKnVwdHI7CjE0NDc0OiAgaW50IHJlZmNudDsKMTQ0NzQ6ICBzdHJ1Y3QgYXVkaXRfbmFtZXMg KmFuYW1lOwoxNDQ3NDogIGNvbnN0IGNoYXIgaW5hbWVbXTsKMTQ0NzQ6IH07CjE0NDc0OiBfU3Rh dGljX2Fzc2VydChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IGZpbGVuYW1lLCBpbmFtZSkgJSBz aXplb2YobG9uZykgPT0gMCwgIm9mZnNldG9mKHN0cnVjdCBmaWxlbmFtZSwgaW5hbWUpICUgc2l6 ZW9mKGxvbmcpID09IDAiKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGxvbmcgdmZzX3RydW5jYXRl KGNvbnN0IHN0cnVjdCBwYXRoICosIGxvZmZfdCk7CjE0NDc0OiBleHRlcm4gaW50IGRvX3RydW5j YXRlKHN0cnVjdCBkZW50cnkgKiwgbG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgdGltZV9hdHRy cywKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBmaWxlICpmaWxwKTsKMTQ0NzQ6IGV4dGVybiBpbnQg dmZzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQs CjE0NDc0OiAgICBsb2ZmX3QgbGVuKTsKMTQ0NzQ6IGV4dGVybiBsb25nIGRvX3N5c19vcGVuKGlu dCBkZmQsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MsCjE0NDc0OiAgICB1bW9kZV90 IG1vZGUpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBmaWxlICpmaWxlX29wZW5fbmFtZShzdHJ1Y3Qg ZmlsZW5hbWUgKiwgaW50LCB1bW9kZV90KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZmlsZSAqZmls cF9vcGVuKGNvbnN0IGNoYXIgKiwgaW50LCB1bW9kZV90KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qg ZmlsZSAqZmlsZV9vcGVuX3Jvb3Qoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgdmZzbW91bnQgKiwK MTQ0NzQ6ICAgICAgICBjb25zdCBjaGFyICosIGludCwgdW1vZGVfdCk7CjE0NDc0OiBleHRlcm4g c3RydWN0IGZpbGUgKiBkZW50cnlfb3Blbihjb25zdCBzdHJ1Y3QgcGF0aCAqLCBpbnQsIGNvbnN0 IHN0cnVjdCBjcmVkICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBmaWxlICogb3Blbl93aXRoX2Zh a2VfcGF0aChjb25zdCBzdHJ1Y3QgcGF0aCAqLCBpbnQsCjE0NDc0OiAgICAgICBzdHJ1Y3QgaW5v ZGUqLCBjb25zdCBzdHJ1Y3QgY3JlZCAqKTsKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBmaWxlICpmaWxlX2Nsb25l X29wZW4oc3RydWN0IGZpbGUgKmZpbGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRlbnRyeV9v cGVuKCZmaWxlLT5mX3BhdGgsIGZpbGUtPmZfZmxhZ3MsIGZpbGUtPmZfY3JlZCk7CjE0NDc0OiB9 CjE0NDc0OiBleHRlcm4gaW50IGZpbHBfY2xvc2Uoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCBp ZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZmlsZW5hbWUgKmdldG5hbWVfZmxhZ3Mo Y29uc3QgY2hhciAqLCBpbnQsIGludCAqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZmlsZW5hbWUg KmdldG5hbWUoY29uc3QgY2hhciAqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZmlsZW5hbWUgKmdl dG5hbWVfa2VybmVsKGNvbnN0IGNoYXIgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBwdXRuYW1lKHN0 cnVjdCBmaWxlbmFtZSAqbmFtZSk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZmluaXNoX29w ZW4oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKMTQ0NzQ6ICAgIGlu dCAoKm9wZW4pKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKSk7CjE0NDc0OiBleHRlcm4g aW50IGZpbmlzaF9ub19vcGVuKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9f c2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHZmc19j YWNoZXNfaW5pdF9lYXJseSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18o KF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHZm c19jYWNoZXNfaW5pdCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBrbWVtX2Nh Y2hlICpuYW1lc19jYWNoZXA7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIGludCByZWdpc3Rlcl9ibGtkZXYodW5zaWduZWQgaW50LCBjb25zdCBj aGFyICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgdW5yZWdpc3Rlcl9ibGtkZXYodW5zaWduZWQgaW50 LCBjb25zdCBjaGFyICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYmRldl91bmhhc2hfaW5vZGUoZGV2 X3QgZGV2KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGdldChkZXZfdCk7 CjE0NDc0OiBleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmRncmFiKHN0cnVjdCBibG9ja19k ZXZpY2UgKmJkZXYpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYmRfc2V0X3NpemUoc3RydWN0IGJsb2Nr X2RldmljZSAqLCBsb2ZmX3Qgc2l6ZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBiZF9mb3JnZXQoc3Ry dWN0IGlub2RlICppbm9kZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBiZHB1dChzdHJ1Y3QgYmxvY2tf ZGV2aWNlICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9iZGV2KHN0cnVjdCBibG9j a19kZXZpY2UgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBpdGVyYXRlX2JkZXZzKHZvaWQgKCopKHN0 cnVjdCBibG9ja19kZXZpY2UgKiwgdm9pZCAqKSwgdm9pZCAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQg c3luY19ibG9ja2RldihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KTsKMTQ0NzQ6IGV4dGVybiB2 b2lkIGtpbGxfYmRldihzdHJ1Y3QgYmxvY2tfZGV2aWNlICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVj dCBzdXBlcl9ibG9jayAqZnJlZXplX2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAqKTsKMTQ0NzQ6 IGV4dGVybiB2b2lkIGVtZXJnZW5jeV90aGF3X2FsbCh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lk IGVtZXJnZW5jeV90aGF3X2JkZXYoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CjE0NDc0OiBleHRl cm4gaW50IHRoYXdfYmRldihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3Qgc3VwZXJf YmxvY2sgKnNiKTsKMTQ0NzQ6IGV4dGVybiBpbnQgZnN5bmNfYmRldihzdHJ1Y3QgYmxvY2tfZGV2 aWNlICopOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHN1cGVyX2Jsb2NrICpibG9ja2Rl dl9zdXBlcmJsb2NrOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHNiX2lzX2Jsa2Rldl9zYihzdHJ1Y3Qg c3VwZXJfYmxvY2sgKnNiKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBzYiA9PSBibG9ja2Rldl9z dXBlcmJsb2NrOwoxNDQ3NDogfQoxNDQ3NDogIyAyNjMxICIuL2luY2x1ZGUvbGludXgvZnMuaCIK MTQ0NzQ6IGV4dGVybiBpbnQgc3luY19maWxlc3lzdGVtKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsK MTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRlZl9ibGtfZm9wczsK MTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRlZl9jaHJfZm9wczsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBpb2N0bF9ieV9iZGV2KHN0cnVjdCBibG9ja19kZXZp Y2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkIGxvbmcpOwoxNDQ3NDogZXh0ZXJuIGludCBibGtkZXZf aW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqLCBmbW9kZV90LCB1bnNpZ25lZCwgdW5zaWduZWQg bG9uZyk7CjE0NDc0OiBleHRlcm4gbG9uZyBjb21wYXRfYmxrZGV2X2lvY3RsKHN0cnVjdCBmaWxl ICosIHVuc2lnbmVkLCB1bnNpZ25lZCBsb25nKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYmxrZGV2X2dl dChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBmbW9kZV90IG1vZGUsIHZvaWQgKmhvbGRlcik7 CjE0NDc0OiBleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmxrZGV2X2dldF9ieV9wYXRoKGNv bnN0IGNoYXIgKnBhdGgsIGZtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICAgICAgICAgIHZvaWQgKmhv bGRlcik7CjE0NDc0OiBleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmxrZGV2X2dldF9ieV9k ZXYoZGV2X3QgZGV2LCBmbW9kZV90IG1vZGUsCjE0NDc0OiAgICAgICAgICAgIHZvaWQgKmhvbGRl cik7CjE0NDc0OiBleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmRfc3RhcnRfY2xhaW1pbmco c3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKMTQ0NzQ6ICAgICAgICAgICAgdm9pZCAqaG9sZGVy KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGJkX2ZpbmlzaF9jbGFpbWluZyhzdHJ1Y3QgYmxvY2tfZGV2 aWNlICpiZGV2LAoxNDQ3NDogICAgICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKndob2xlLCB2 b2lkICpob2xkZXIpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYmRfYWJvcnRfY2xhaW1pbmcoc3RydWN0 IGJsb2NrX2RldmljZSAqYmRldiwKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2Ug Kndob2xlLCB2b2lkICpob2xkZXIpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYmxrZGV2X3B1dChzdHJ1 Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBmbW9kZV90IG1vZGUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiBpbnQgYmRfbGlua19kaXNrX2hvbGRlcihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpi ZGV2LCBzdHJ1Y3QgZ2VuZGlzayAqZGlzayk7CjE0NDc0OiBleHRlcm4gdm9pZCBiZF91bmxpbmtf ZGlza19ob2xkZXIoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKMTQ0NzQ6ICAgICAgIHN0cnVj dCBnZW5kaXNrICpkaXNrKTsKMTQ0NzQ6ICMgMjY3NiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0 NDc0OiBleHRlcm4gaW50IGFsbG9jX2NocmRldl9yZWdpb24oZGV2X3QgKiwgdW5zaWduZWQsIHVu c2lnbmVkLCBjb25zdCBjaGFyICopOwoxNDQ3NDogZXh0ZXJuIGludCByZWdpc3Rlcl9jaHJkZXZf cmVnaW9uKGRldl90LCB1bnNpZ25lZCwgY29uc3QgY2hhciAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQg X19yZWdpc3Rlcl9jaHJkZXYodW5zaWduZWQgaW50IG1ham9yLCB1bnNpZ25lZCBpbnQgYmFzZW1p bm9yLAoxNDQ3NDogICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQsIGNvbnN0IGNoYXIgKm5hbWUs CjE0NDc0OiAgICAgICAgIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMpOwoxNDQ3 NDogZXh0ZXJuIHZvaWQgX191bnJlZ2lzdGVyX2NocmRldih1bnNpZ25lZCBpbnQgbWFqb3IsIHVu c2lnbmVkIGludCBiYXNlbWlub3IsCjE0NDc0OiAgICAgdW5zaWduZWQgaW50IGNvdW50LCBjb25z dCBjaGFyICpuYW1lKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHVucmVnaXN0ZXJfY2hyZGV2X3JlZ2lv bihkZXZfdCwgdW5zaWduZWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgY2hyZGV2X3Nob3coc3RydWN0 IHNlcV9maWxlICosb2ZmX3QpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmVnaXN0ZXJfY2hyZGV2KHVu c2lnbmVkIGludCBtYWpvciwgY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgIGNvbnN0IHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fcmVn aXN0ZXJfY2hyZGV2KG1ham9yLCAwLCAyNTYsIG5hbWUsIGZvcHMpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHVucmVnaXN0ZXJfY2hyZGV2KHVuc2lnbmVkIGludCBtYWpvciwgY29uc3Qg Y2hhciAqbmFtZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX3VucmVnaXN0ZXJfY2hyZGV2KG1ham9yLCAw LCAyNTYsIG5hbWUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gY29uc3QgY2hhciAqX19iZGV2bmFt ZShkZXZfdCwgY2hhciAqYnVmZmVyKTsKMTQ0NzQ6IGV4dGVybiBjb25zdCBjaGFyICpiZGV2bmFt ZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBjaGFyICpidWZmZXIpOwoxNDQ3NDogZXh0ZXJu IHN0cnVjdCBibG9ja19kZXZpY2UgKmxvb2t1cF9iZGV2KGNvbnN0IGNoYXIgKik7CjE0NDc0OiBl eHRlcm4gdm9pZCBibGtkZXZfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKixvZmZfdCk7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgaW5pdF9z cGVjaWFsX2lub2RlKHN0cnVjdCBpbm9kZSAqLCB1bW9kZV90LCBkZXZfdCk7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgbWFrZV9iYWRfaW5vZGUoc3RydWN0IGlub2RlICopOwox NDQ3NDogZXh0ZXJuIGJvb2wgaXNfYmFkX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHJldmFsaWRhdGVfZGlzayhzdHJ1Y3QgZ2VuZGlzayAq KTsKMTQ0NzQ6IGV4dGVybiBpbnQgY2hlY2tfZGlza19jaGFuZ2Uoc3RydWN0IGJsb2NrX2Rldmlj ZSAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19pbnZhbGlkYXRlX2RldmljZShzdHJ1Y3QgYmxvY2tf ZGV2aWNlICosIGJvb2wpOwoxNDQ3NDogZXh0ZXJuIGludCBpbnZhbGlkYXRlX3BhcnRpdGlvbihz dHJ1Y3QgZ2VuZGlzayAqLCBpbnQpOwoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBsb25nIGludmFs aWRhdGVfbWFwcGluZ19wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKMTQ0NzQ6 ICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOwoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGludmFsaWRhdGVfcmVtb3RlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpCjE0 NDc0OiB7CjE0NDc0OiAgaWYgKCgoKGlub2RlLT5pX21vZGUpICYgMDAxNzAwMDApID09IDAxMDAw MDApIHx8ICgoKGlub2RlLT5pX21vZGUpICYgMDAxNzAwMDApID09IDAwNDAwMDApIHx8CjE0NDc0 OiAgICAgICgoKGlub2RlLT5pX21vZGUpICYgMDAxNzAwMDApID09IDAxMjAwMDApKQoxNDQ3NDog ICBpbnZhbGlkYXRlX21hcHBpbmdfcGFnZXMoaW5vZGUtPmlfbWFwcGluZywgMCwgLTEpOwoxNDQ3 NDogfQoxNDQ3NDogZXh0ZXJuIGludCBpbnZhbGlkYXRlX2lub2RlX3BhZ2VzMihzdHJ1Y3QgYWRk cmVzc19zcGFjZSAqbWFwcGluZyk7CjE0NDc0OiBleHRlcm4gaW50IGludmFsaWRhdGVfaW5vZGVf cGFnZXMyX3JhbmdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAoxNDQ3NDogICAgICAg dW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOwoxNDQ3NDogZXh0ZXJuIGlu dCB3cml0ZV9pbm9kZV9ub3coc3RydWN0IGlub2RlICosIGludCk7CjE0NDc0OiBleHRlcm4gaW50 IGZpbGVtYXBfZmRhdGF3cml0ZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKMTQ0NzQ6IGV4dGVy biBpbnQgZmlsZW1hcF9mbHVzaChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKMTQ0NzQ6IGV4dGVy biBpbnQgZmlsZW1hcF9mZGF0YXdhaXRfa2VlcF9lcnJvcnMoc3RydWN0IGFkZHJlc3Nfc3BhY2Ug Km1hcHBpbmcpOwoxNDQ3NDogZXh0ZXJuIGludCBmaWxlbWFwX2ZkYXRhd2FpdF9yYW5nZShzdHJ1 Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3QgbHN0YXJ0LAoxNDQ3NDogICAgICAgIGxvZmZfdCBs ZW5kKTsKMTQ0NzQ6IGV4dGVybiBpbnQgZmlsZW1hcF9mZGF0YXdhaXRfcmFuZ2Vfa2VlcF9lcnJv cnMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCjE0NDc0OiAgIGxvZmZfdCBzdGFydF9i eXRlLCBsb2ZmX3QgZW5kX2J5dGUpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZmlsZW1hcF9mZGF0YXdh aXQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IGZpbGVtYXBfZmRhdGF3YWl0X3JhbmdlKG1hcHBpbmcsIDAsICgobG9uZyBsb25nKSh+MFVMTCA+ PiAxKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCBmaWxlbWFwX3Jhbmdl X2hhc19wYWdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIGxvZmZfdCBsc3RhcnQsCjE0NDc0OiAg ICAgICBsb2ZmX3QgbGVuZCk7CjE0NDc0OiBleHRlcm4gaW50IGZpbGVtYXBfd3JpdGVfYW5kX3dh aXRfcmFuZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCjE0NDc0OiAgICAgICAgICAg ICBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3QgbGVuZCk7CjE0NDc0OiBleHRlcm4gaW50IF9fZmlsZW1h cF9mZGF0YXdyaXRlX3JhbmdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAoxNDQ3NDog ICAgIGxvZmZfdCBzdGFydCwgbG9mZl90IGVuZCwgaW50IHN5bmNfbW9kZSk7CjE0NDc0OiBleHRl cm4gaW50IGZpbGVtYXBfZmRhdGF3cml0ZV9yYW5nZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFw cGluZywKMTQ0NzQ6ICAgICBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBlbmQpOwoxNDQ3NDogZXh0ZXJu IGludCBmaWxlbWFwX2NoZWNrX2Vycm9ycyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyk7 CjE0NDc0OiBleHRlcm4gdm9pZCBfX2ZpbGVtYXBfc2V0X3diX2VycihzdHJ1Y3QgYWRkcmVzc19z cGFjZSAqbWFwcGluZywgaW50IGVycik7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBmaWxlbWFwX3dyaXRl X2FuZF93YWl0KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiBmaWxlbWFwX3dyaXRlX2FuZF93YWl0X3JhbmdlKG1hcHBpbmcsIDAsICgobG9uZyBs b25nKSh+MFVMTCA+PiAxKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9f YXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBmaWxlX2ZkYXRhd2FpdF9yYW5n ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IGxzdGFydCwKMTQ0NzQ6ICAgICAgIGxvZmZfdCBs ZW5kKTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1 bHRfXykpIGZpbGVfY2hlY2tfYW5kX2FkdmFuY2Vfd2JfZXJyKHN0cnVjdCBmaWxlICpmaWxlKTsK MTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IGZpbGVfd3JpdGVfYW5kX3dhaXRfcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsCjE0NDc0OiAgICAg ICBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBlbmQpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZmlsZV93cml0 ZV9hbmRfd2FpdChzdHJ1Y3QgZmlsZSAqZmlsZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZmls ZV93cml0ZV9hbmRfd2FpdF9yYW5nZShmaWxlLCAwLCAoKGxvbmcgbG9uZykofjBVTEwgPj4gMSkp KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjc5MSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGZpbGVtYXBfc2V0X3diX2VycihzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgaW50 IGVycikKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGVy ciksIDApKQoxNDQ3NDogICBfX2ZpbGVtYXBfc2V0X3diX2VycihtYXBwaW5nLCBlcnIpOwoxNDQ3 NDogfQoxNDQ3NDogIyAyODA4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBmaWxl bWFwX2NoZWNrX3diX2VycihzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKMTQ0NzQ6ICAg ICAgZXJyc2VxX3Qgc2luY2UpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGVycnNlcV9jaGVjaygm bWFwcGluZy0+d2JfZXJyLCBzaW5jZSk7CjE0NDc0OiB9CjE0NDc0OiAjIDI4MjEgIi4vaW5jbHVk ZS9saW51eC9mcy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgZXJyc2VxX3QgZmlsZW1hcF9zYW1wbGVfd2JfZXJyKHN0cnVj dCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBlcnJzZXFf c2FtcGxlKCZtYXBwaW5nLT53Yl9lcnIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZmls ZW1hcF9ucl90aHBzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogCjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgZmlsZW1hcF9ucl90aHBzX2luYyhzdHJ1Y3QgYWRkcmVzc19zcGFj ZSAqbWFwcGluZykKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAoeyBp bnQgX19yZXRfd2Fybl9vbiA9ICEhKDEpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93 YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0 ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIy Olx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJc dCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29y ZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50 cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImlu Y2x1ZGUvbGludXgvZnMuaCIpLCAiaSIgKDI4NDApLCAiaSIgKCgxIDw8IDApfCgoMSA8PCAxKSB8 ICgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAo MCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVh Y2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJp IiAoMzApKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5f b24pLCAwKTsgfSk7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmaWxlbWFw X25yX3RocHNfZGVjKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICh7IGludCBfX3JldF93YXJuX29uID0gISEoMSk7 IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFz bSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNo c2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJi IiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIi ICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6Omxp bmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYisl YzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9mcy5oIiksICJpIiAo Mjg0OSksICJpIiAoKDEgPDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVv ZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6 XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAt IC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgzMSkpOyB9KTsgfSB3aGlsZSAoMCk7 IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6IAoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHZmc19mc3luY19yYW5nZShzdHJ1Y3QgZmls ZSAqZmlsZSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kLAoxNDQ3NDogICAgICAgaW50IGRhdGFz eW5jKTsKMTQ0NzQ6IGV4dGVybiBpbnQgdmZzX2ZzeW5jKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQg ZGF0YXN5bmMpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHN5bmNfZmlsZV9yYW5nZShzdHJ1 Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IG5ieXRlcywKMTQ0NzQ6ICAgICB1 bnNpZ25lZCBpbnQgZmxhZ3MpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgc3NpemVfdCBnZW5lcmljX3dyaXRlX3N5bmMoc3RydWN0IGtpb2Ni ICppb2NiLCBzc2l6ZV90IGNvdW50KQoxNDQ3NDogewoxNDQ3NDogIGlmIChpb2NiLT5raV9mbGFn cyAmICgxIDw8IDQpKSB7CjE0NDc0OiAgIGludCByZXQgPSB2ZnNfZnN5bmNfcmFuZ2UoaW9jYi0+ a2lfZmlscCwKMTQ0NzQ6ICAgICBpb2NiLT5raV9wb3MgLSBjb3VudCwgaW9jYi0+a2lfcG9zIC0g MSwKMTQ0NzQ6ICAgICAoaW9jYi0+a2lfZmxhZ3MgJiAoMSA8PCA1KSkgPyAwIDogMSk7CjE0NDc0 OiAgIGlmIChyZXQpCjE0NDc0OiAgICByZXR1cm4gcmV0OwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3 NDogIHJldHVybiBjb3VudDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZW1l cmdlbmN5X3N5bmModm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBlbWVyZ2VuY3lfcmVtb3VudCh2 b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGJtYXAoc3RydWN0IGlub2Rl ICppbm9kZSwgc2VjdG9yX3QgKmJsb2NrKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBub3RpZnlfY2hhbmdl KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlhdHRyICosIHN0cnVjdCBpbm9kZSAqKik7CjE0NDc0 OiBleHRlcm4gaW50IGlub2RlX3Blcm1pc3Npb24oc3RydWN0IGlub2RlICosIGludCk7CjE0NDc0 OiBleHRlcm4gaW50IGdlbmVyaWNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKMTQ0 NzQ6IGV4dGVybiBpbnQgX19jaGVja19zdGlja3koc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBp bm9kZSAqaW5vZGUpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGV4ZWN1dGVfb2soc3RydWN0IGlub2Rl ICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKGlub2RlLT5pX21vZGUgJiAoMDAxMDB8 MDAwMTB8MDAwMDEpKSB8fCAoKChpbm9kZS0+aV9tb2RlKSAmIDAwMTcwMDAwKSA9PSAwMDQwMDAw KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmaWxlX3N0YXJ0X3dyaXRlKHN0cnVjdCBm aWxlICpmaWxlKQoxNDQ3NDogewoxNDQ3NDogIGlmICghKCgoZmlsZV9pbm9kZShmaWxlKS0+aV9t b2RlKSAmIDAwMTcwMDAwKSA9PSAwMTAwMDAwKSkKMTQ0NzQ6ICAgcmV0dXJuOwoxNDQ3NDogIF9f c2Jfc3RhcnRfd3JpdGUoZmlsZV9pbm9kZShmaWxlKS0+aV9zYiwgU0JfRlJFRVpFX1dSSVRFLCB0 cnVlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBmaWxlX3N0YXJ0X3dyaXRlX3RyeWxv Y2soc3RydWN0IGZpbGUgKmZpbGUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKCEoKChmaWxlX2lub2Rl KGZpbGUpLT5pX21vZGUpICYgMDAxNzAwMDApID09IDAxMDAwMDApKQoxNDQ3NDogICByZXR1cm4g dHJ1ZTsKMTQ0NzQ6ICByZXR1cm4gX19zYl9zdGFydF93cml0ZShmaWxlX2lub2RlKGZpbGUpLT5p X3NiLCBTQl9GUkVFWkVfV1JJVEUsIGZhbHNlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBmaWxlX2VuZF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAo ISgoKGZpbGVfaW5vZGUoZmlsZSktPmlfbW9kZSkgJiAwMDE3MDAwMCkgPT0gMDEwMDAwMCkpCjE0 NDc0OiAgIHJldHVybjsKMTQ0NzQ6ICBfX3NiX2VuZF93cml0ZShmaWxlX2lub2RlKGZpbGUpLT5p X3NiLCBTQl9GUkVFWkVfV1JJVEUpOwoxNDQ3NDogfQoxNDQ3NDogIyAyOTM3ICIuL2luY2x1ZGUv bGludXgvZnMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludCBnZXRfd3JpdGVfYWNjZXNzKHN0cnVjdCBpbm9kZSAqaW5v ZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19pbmNfdW5sZXNzX25lZ2F0aXZlKCZp bm9kZS0+aV93cml0ZWNvdW50KSA/IDAgOiAtMjY7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZGVueV93 cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKmZpbGUpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGlu b2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlsZSk7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19kZWNf dW5sZXNzX3Bvc2l0aXZlKCZpbm9kZS0+aV93cml0ZWNvdW50KSA/IDAgOiAtMjY7CjE0NDc0OiB9 CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHB1dF93cml0ZV9hY2Nlc3Moc3RydWN0IGlub2RlICogaW5vZGUpCjE0NDc0 OiB7CjE0NDc0OiAgYXRvbWljX2RlYygmaW5vZGUtPmlfd3JpdGVjb3VudCk7CjE0NDc0OiB9CjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGFsbG93X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqZmlsZSkKMTQ0NzQ6IHsK MTQ0NzQ6ICBpZiAoZmlsZSkKMTQ0NzQ6ICAgYXRvbWljX2luYygmZmlsZV9pbm9kZShmaWxlKS0+ aV93cml0ZWNvdW50KTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaW5vZGVfaXNfb3Blbl9mb3Jfd3Jp dGUoY29uc3Qgc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRv bWljX3JlYWQoJmlub2RlLT5pX3dyaXRlY291bnQpID4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGlfcmVhZGNvdW50X2RlYyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQoxNDQ3 NDogewoxNDQ3NDogIGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIWF0b21pY19yZWFkKCZp bm9kZS0+aV9yZWFkY291bnQpKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUo IjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUs XCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1 Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6Zmls ZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIg Ilx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIg OiA6ICJpIiAoImluY2x1ZGUvbGludXgvZnMuaCIpLCAiaSIgKDI5NjMpLCAiaSIgKDApLCAiaSIg KHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAoeyBhc20gdm9s YXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hhYmxlXG5cdCIg Ii5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMzIpKTsgfSk7 IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdoaWxlICgwKTsg fSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGF0b21pY19kZWMoJmlub2RlLT5pX3Jl YWRjb3VudCk7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlfcmVhZGNvdW50X2luYyhzdHJ1Y3QgaW5v ZGUgKmlub2RlKQoxNDQ3NDogewoxNDQ3NDogIGF0b21pY19pbmMoJmlub2RlLT5pX3JlYWRjb3Vu dCk7CjE0NDc0OiB9CjE0NDc0OiAjIDI5ODAgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDog ZXh0ZXJuIGludCBkb19waXBlX2ZsYWdzKGludCAqLCBpbnQpOwoxNDQ3NDogIyAyOTk2ICIuL2lu Y2x1ZGUvbGludXgvZnMuaCIKMTQ0NzQ6IGVudW0ga2VybmVsX3JlYWRfZmlsZV9pZCB7CjE0NDc0 OiAgUkVBRElOR19VTktOT1dOLCBSRUFESU5HX0ZJUk1XQVJFLCBSRUFESU5HX0ZJUk1XQVJFX1BS RUFMTE9DX0JVRkZFUiwgUkVBRElOR19NT0RVTEUsIFJFQURJTkdfS0VYRUNfSU1BR0UsIFJFQURJ TkdfS0VYRUNfSU5JVFJBTUZTLCBSRUFESU5HX1BPTElDWSwgUkVBRElOR19YNTA5X0NFUlRJRklD QVRFLCBSRUFESU5HX01BWF9JRCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBjb25z dCBjaGFyICogY29uc3Qga2VybmVsX3JlYWRfZmlsZV9zdHJbXSA9IHsKMTQ0NzQ6ICAidW5rbm93 biIsICJmaXJtd2FyZSIsICJmaXJtd2FyZSIsICJrZXJuZWwtbW9kdWxlIiwgImtleGVjLWltYWdl IiwgImtleGVjLWluaXRyYW1mcyIsICJzZWN1cml0eS1wb2xpY3kiLCAieDUwOS1jZXJ0aWZpY2F0 ZSIsICIiLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY29uc3QgY2hhciAqa2VybmVsX3JlYWRf ZmlsZV9pZF9zdHIoZW51bSBrZXJuZWxfcmVhZF9maWxlX2lkIGlkKQoxNDQ3NDogewoxNDQ3NDog IGlmICgodW5zaWduZWQpaWQgPj0gUkVBRElOR19NQVhfSUQpCjE0NDc0OiAgIHJldHVybiBrZXJu ZWxfcmVhZF9maWxlX3N0cltSRUFESU5HX1VOS05PV05dOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJu IGtlcm5lbF9yZWFkX2ZpbGVfc3RyW2lkXTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGludCBrZXJuZWxfcmVhZF9maWxlKHN0cnVjdCBmaWxlICosIHZvaWQgKiosIGxvZmZfdCAqLCBs b2ZmX3QsCjE0NDc0OiAgICAgICAgZW51bSBrZXJuZWxfcmVhZF9maWxlX2lkKTsKMTQ0NzQ6IGV4 dGVybiBpbnQga2VybmVsX3JlYWRfZmlsZV9mcm9tX3BhdGgoY29uc3QgY2hhciAqLCB2b2lkICoq LCBsb2ZmX3QgKiwgbG9mZl90LAoxNDQ3NDogICAgICAgICAgIGVudW0ga2VybmVsX3JlYWRfZmls ZV9pZCk7CjE0NDc0OiBleHRlcm4gaW50IGtlcm5lbF9yZWFkX2ZpbGVfZnJvbV9mZChpbnQsIHZv aWQgKiosIGxvZmZfdCAqLCBsb2ZmX3QsCjE0NDc0OiAgICAgICAgIGVudW0ga2VybmVsX3JlYWRf ZmlsZV9pZCk7CjE0NDc0OiBleHRlcm4gc3NpemVfdCBrZXJuZWxfcmVhZChzdHJ1Y3QgZmlsZSAq LCB2b2lkICosIHNpemVfdCwgbG9mZl90ICopOwoxNDQ3NDogZXh0ZXJuIHNzaXplX3Qga2VybmVs X3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CjE0 NDc0OiBleHRlcm4gc3NpemVfdCBfX2tlcm5lbF93cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCB2 b2lkICosIHNpemVfdCwgbG9mZl90ICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBmaWxlICogb3Bl bl9leGVjKGNvbnN0IGNoYXIgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wg aXNfc3ViZGlyKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKMTQ0NzQ6IGV4dGVy biBib29sIHBhdGhfaXNfdW5kZXIoY29uc3Qgc3RydWN0IHBhdGggKiwgY29uc3Qgc3RydWN0IHBh dGggKik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjaGFyICpmaWxlX3BhdGgoc3RydWN0IGZpbGUg KiwgY2hhciAqLCBpbnQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gbG9mZl90IGRlZmF1bHRfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zm c2V0LCBpbnQgd2hlbmNlKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGxvZmZfdCB2ZnNfbGxzZWVr KHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGludCBpbm9kZV9pbml0X2Fsd2F5cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwg c3RydWN0IGlub2RlICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgaW5vZGVfaW5pdF9vbmNlKHN0cnVj dCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGFkZHJlc3Nfc3BhY2VfaW5pdF9vbmNlKHN0 cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgaW5vZGUg KiBpZ3JhYihzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiBleHRlcm4gaW5vX3QgaXVuaXF1ZShzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKiwgaW5vX3QpOwoxNDQ3NDogZXh0ZXJuIGludCBpbm9kZV9uZWVkc19z eW5jKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoxNDQ3NDogZXh0ZXJuIGludCBnZW5lcmljX2RlbGV0 ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBnZW5lcmljX2Ryb3BfaW5v ZGUoc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gIWlub2RlLT5p X25saW5rIHx8IGlub2RlX3VuaGFzaGVkKGlub2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHN0cnVjdCBpbm9kZSAqaWxvb2t1cDVfbm93YWl0KHN0cnVjdCBzdXBlcl9ibG9jayAq c2IsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgaGFzaHZhbCwgaW50ICgqdGVzdCkoc3RydWN0IGlu b2RlICosIHZvaWQgKiksCjE0NDc0OiAgIHZvaWQgKmRhdGEpOwoxNDQ3NDogZXh0ZXJuIHN0cnVj dCBpbm9kZSAqaWxvb2t1cDUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBo YXNodmFsLAoxNDQ3NDogICBpbnQgKCp0ZXN0KShzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSwgdm9p ZCAqZGF0YSk7CjE0NDc0OiBleHRlcm4gc3RydWN0IGlub2RlICppbG9va3VwKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0 cnVjdCBpbm9kZSAqaW5vZGVfaW5zZXJ0NShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBs b25nIGhhc2h2YWwsCjE0NDc0OiAgIGludCAoKnRlc3QpKHN0cnVjdCBpbm9kZSAqLCB2b2lkICop LAoxNDQ3NDogICBpbnQgKCpzZXQpKHN0cnVjdCBpbm9kZSAqLCB2b2lkICopLAoxNDQ3NDogICB2 b2lkICpkYXRhKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBpZ2V0NV9sb2NrZWQoc3Ry dWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcsIGludCAoKnRlc3QpKHN0cnVjdCBpbm9k ZSAqLCB2b2lkICopLCBpbnQgKCpzZXQpKHN0cnVjdCBpbm9kZSAqLCB2b2lkICopLCB2b2lkICop OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGlnZXRfbG9ja2VkKHN0cnVjdCBzdXBlcl9i bG9jayAqLCB1bnNpZ25lZCBsb25nKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgaW5vZGUgKmZpbmRf aW5vZGVfbm93YWl0KHN0cnVjdCBzdXBlcl9ibG9jayAqLAoxNDQ3NDogICAgICAgICAgICB1bnNp Z25lZCBsb25nLAoxNDQ3NDogICAgICAgICAgICBpbnQgKCptYXRjaCkoc3RydWN0IGlub2RlICos CjE0NDc0OiAgICAgICAgICAgdW5zaWduZWQgbG9uZywgdm9pZCAqKSwKMTQ0NzQ6ICAgICAgICAg ICAgdm9pZCAqZGF0YSk7CjE0NDc0OiBleHRlcm4gaW50IGluc2VydF9pbm9kZV9sb2NrZWQ0KHN0 cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nLCBpbnQgKCp0ZXN0KShzdHJ1Y3QgaW5vZGUgKiwg dm9pZCAqKSwgdm9pZCAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgaW5zZXJ0X2lub2RlX2xvY2tlZChz dHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxvY2tk ZXBfYW5ub3RhdGVfaW5vZGVfbXV0ZXhfa2V5KHN0cnVjdCBpbm9kZSAqaW5vZGUpIHsgfTsKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgdW5sb2NrX25ld19pbm9kZShzdHJ1Y3QgaW5vZGUgKik7 CjE0NDc0OiBleHRlcm4gdm9pZCBkaXNjYXJkX25ld19pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CjE0 NDc0OiBleHRlcm4gdW5zaWduZWQgaW50IGdldF9uZXh0X2lubyh2b2lkKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIGV2aWN0X2lub2RlcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIHZvaWQgX19pZ2V0KHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIGlnZXRfZmFpbGVkKHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNs ZWFyX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fZGVzdHJveV9p bm9kZShzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiBleHRlcm4gc3RydWN0IGlub2RlICpuZXdfaW5v ZGVfcHNldWRvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBp bm9kZSAqbmV3X2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgZnJlZV9pbm9kZV9ub25yY3Uoc3RydWN0IGlub2RlICppbm9kZSk7CjE0NDc0OiBleHRlcm4g aW50IHNob3VsZF9yZW1vdmVfc3VpZChzdHJ1Y3QgZGVudHJ5ICopOwoxNDQ3NDogZXh0ZXJuIGlu dCBmaWxlX3JlbW92ZV9wcml2cyhzdHJ1Y3QgZmlsZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHZvaWQgX19pbnNlcnRfaW5vZGVfaGFzaChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9uZyBo YXNodmFsKTsKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgaW5zZXJ0X2lub2RlX2hhc2goc3RydWN0IGlub2RlICppbm9k ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2luc2VydF9pbm9kZV9oYXNoKGlub2RlLCBpbm9kZS0+aV9p bm8pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBfX3JlbW92ZV9pbm9kZV9o YXNoKHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmVtb3ZlX2lub2RlX2hhc2goc3RydWN0 IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoIWlub2RlX3VuaGFzaGVkKGlub2Rl KSAmJiAhaGxpc3RfZmFrZSgmaW5vZGUtPmlfaGFzaCkpCjE0NDc0OiAgIF9fcmVtb3ZlX2lub2Rl X2hhc2goaW5vZGUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBpbm9kZV9z Yl9saXN0X2FkZChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gaW50IGJkZXZfcmVhZF9vbmx5KHN0cnVjdCBibG9ja19kZXZpY2UgKik7CjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiBpbnQgc2V0X2Jsb2Nrc2l6ZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIGlu dCk7CjE0NDc0OiBleHRlcm4gaW50IHNiX3NldF9ibG9ja3NpemUoc3RydWN0IHN1cGVyX2Jsb2Nr ICosIGludCk7CjE0NDc0OiBleHRlcm4gaW50IHNiX21pbl9ibG9ja3NpemUoc3RydWN0IHN1cGVy X2Jsb2NrICosIGludCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZ2VuZXJpY19maWxlX21t YXAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwoxNDQ3NDogZXh0ZXJu IGludCBnZW5lcmljX2ZpbGVfcmVhZG9ubHlfbW1hcChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKik7CjE0NDc0OiBleHRlcm4gc3NpemVfdCBnZW5lcmljX3dyaXRlX2NoZWNr cyhzdHJ1Y3Qga2lvY2IgKiwgc3RydWN0IGlvdl9pdGVyICopOwoxNDQ3NDogZXh0ZXJuIGludCBn ZW5lcmljX3JlbWFwX2NoZWNrcyhzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9mZl90IHBvc19pbiwK MTQ0NzQ6ICAgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0LAoxNDQ3NDog ICAgIGxvZmZfdCAqY291bnQsIHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7CjE0NDc0OiBleHRl cm4gaW50IGdlbmVyaWNfZmlsZV9yd19jaGVja3Moc3RydWN0IGZpbGUgKmZpbGVfaW4sIHN0cnVj dCBmaWxlICpmaWxlX291dCk7CjE0NDc0OiBleHRlcm4gaW50IGdlbmVyaWNfY29weV9maWxlX2No ZWNrcyhzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9mZl90IHBvc19pbiwKMTQ0NzQ6ICAgICAgICAg c3RydWN0IGZpbGUgKmZpbGVfb3V0LCBsb2ZmX3QgcG9zX291dCwKMTQ0NzQ6ICAgICAgICAgc2l6 ZV90ICpjb3VudCwgdW5zaWduZWQgaW50IGZsYWdzKTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IGdl bmVyaWNfZmlsZV9yZWFkX2l0ZXIoc3RydWN0IGtpb2NiICosIHN0cnVjdCBpb3ZfaXRlciAqKTsK MTQ0NzQ6IGV4dGVybiBzc2l6ZV90IF9fZ2VuZXJpY19maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtp b2NiICosIHN0cnVjdCBpb3ZfaXRlciAqKTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IGdlbmVyaWNf ZmlsZV93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqLCBzdHJ1Y3QgaW92X2l0ZXIgKik7CjE0NDc0 OiBleHRlcm4gc3NpemVfdCBnZW5lcmljX2ZpbGVfZGlyZWN0X3dyaXRlKHN0cnVjdCBraW9jYiAq LCBzdHJ1Y3QgaW92X2l0ZXIgKik7CjE0NDc0OiBleHRlcm4gc3NpemVfdCBnZW5lcmljX3BlcmZv cm1fd3JpdGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IGlvdl9pdGVyICosIGxvZmZfdCk7CjE0NDc0 OiAKMTQ0NzQ6IHNzaXplX3QgdmZzX2l0ZXJfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0 IGlvdl9pdGVyICppdGVyLCBsb2ZmX3QgKnBwb3MsCjE0NDc0OiAgIHJ3Zl90IGZsYWdzKTsKMTQ0 NzQ6IHNzaXplX3QgdmZzX2l0ZXJfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBpb3Zf aXRlciAqaXRlciwgbG9mZl90ICpwcG9zLAoxNDQ3NDogICByd2ZfdCBmbGFncyk7CjE0NDc0OiBz c2l6ZV90IHZmc19pb2NiX2l0ZXJfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtpb2Ni ICppb2NiLAoxNDQ3NDogICAgICAgc3RydWN0IGlvdl9pdGVyICppdGVyKTsKMTQ0NzQ6IHNzaXpl X3QgdmZzX2lvY2JfaXRlcl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtpb2NiICpp b2NiLAoxNDQ3NDogICAgICAgIHN0cnVjdCBpb3ZfaXRlciAqaXRlcik7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIHNzaXplX3QgYmxrZGV2X3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlv Y2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pOwoxNDQ3NDogZXh0ZXJuIHNzaXplX3QgYmxrZGV2X3dy aXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pOwoxNDQ3 NDogZXh0ZXJuIGludCBibGtkZXZfZnN5bmMoc3RydWN0IGZpbGUgKmZpbHAsIGxvZmZfdCBzdGFy dCwgbG9mZl90IGVuZCwKMTQ0NzQ6ICAgIGludCBkYXRhc3luYyk7CjE0NDc0OiBleHRlcm4gdm9p ZCBibG9ja19zeW5jX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiBzc2l6ZV90IGdlbmVyaWNfZmlsZV9zcGxpY2VfcmVhZChzdHJ1Y3QgZmlsZSAq LCBsb2ZmX3QgKiwKMTQ0NzQ6ICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqLCBzaXplX3QsIHVu c2lnbmVkIGludCk7CjE0NDc0OiBleHRlcm4gc3NpemVfdCBpdGVyX2ZpbGVfc3BsaWNlX3dyaXRl KHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKiwKMTQ0NzQ6ICAgc3RydWN0IGZpbGUgKiwgbG9mZl90 ICosIHNpemVfdCwgdW5zaWduZWQgaW50KTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IGdlbmVyaWNf c3BsaWNlX3NlbmRwYWdlKHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsCjE0NDc0OiAgIHN0 cnVjdCBmaWxlICpvdXQsIGxvZmZfdCAqLCBzaXplX3QgbGVuLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp OwoxNDQ3NDogZXh0ZXJuIGxvbmcgZG9fc3BsaWNlX2RpcmVjdChzdHJ1Y3QgZmlsZSAqaW4sIGxv ZmZfdCAqcHBvcywgc3RydWN0IGZpbGUgKm91dCwKMTQ0NzQ6ICAgbG9mZl90ICpvcG9zLCBzaXpl X3QgbGVuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biB2b2lkCjE0NDc0OiBmaWxlX3JhX3N0YXRlX2luaXQoc3RydWN0IGZpbGVfcmFfc3RhdGUgKnJh LCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyk7CjE0NDc0OiBleHRlcm4gbG9mZl90IG5v b3BfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKTsK MTQ0NzQ6IGV4dGVybiBsb2ZmX3Qgbm9fbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qg b2Zmc2V0LCBpbnQgd2hlbmNlKTsKMTQ0NzQ6IGV4dGVybiBsb2ZmX3QgdmZzX3NldHBvcyhzdHJ1 Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IG1heHNpemUpOwoxNDQ3NDogZXh0 ZXJuIGxvZmZfdCBnZW5lcmljX2ZpbGVfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qg b2Zmc2V0LCBpbnQgd2hlbmNlKTsKMTQ0NzQ6IGV4dGVybiBsb2ZmX3QgZ2VuZXJpY19maWxlX2xs c2Vla19zaXplKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LAoxNDQ3NDogICBpbnQg d2hlbmNlLCBsb2ZmX3QgbWF4c2l6ZSwgbG9mZl90IGVvZik7CjE0NDc0OiBleHRlcm4gbG9mZl90 IGZpeGVkX3NpemVfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LAoxNDQ3 NDogICBpbnQgd2hlbmNlLCBsb2ZmX3Qgc2l6ZSk7CjE0NDc0OiBleHRlcm4gbG9mZl90IG5vX3Nl ZWtfZW5kX2xsc2Vla19zaXplKHN0cnVjdCBmaWxlICosIGxvZmZfdCwgaW50LCBsb2ZmX3QpOwox NDQ3NDogZXh0ZXJuIGxvZmZfdCBub19zZWVrX2VuZF9sbHNlZWsoc3RydWN0IGZpbGUgKiwgbG9m Zl90LCBpbnQpOwoxNDQ3NDogZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfb3BlbihzdHJ1Y3QgaW5v ZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKMTQ0NzQ6IGV4dGVybiBpbnQgbm9uc2Vl a2FibGVfb3BlbihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKMTQ0 NzQ6IGV4dGVybiBpbnQgc3RyZWFtX29wZW4oc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBm aWxlICogZmlscCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB2b2lkIChkaW9fc3Vi bWl0X3QpKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGlub2RlICppbm9kZSwKMTQ0NzQ6ICAgICAg ICBsb2ZmX3QgZmlsZV9vZmZzZXQpOwoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6IAoxNDQ3 NDogIERJT19MT0NLSU5HID0gMHgwMSwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRElPX1NLSVBf SE9MRVMgPSAweDAyLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkaW9fZW5kX2lvKHN0 cnVjdCBiaW8gKmJpbyk7CjE0NDc0OiAKMTQ0NzQ6IHNzaXplX3QgX19ibG9ja2Rldl9kaXJlY3Rf SU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAoxNDQ3NDogICAgICAg ICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsCjE0NDc0 OiAgICAgICAgIGdldF9ibG9ja190IGdldF9ibG9jaywKMTQ0NzQ6ICAgICAgICAgZGlvX2lvZG9u ZV90IGVuZF9pbywgZGlvX3N1Ym1pdF90IHN1Ym1pdF9pbywKMTQ0NzQ6ICAgICAgICAgaW50IGZs YWdzKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgc3NpemVfdCBibG9ja2Rldl9kaXJlY3RfSU8oc3RydWN0IGtp b2NiICppb2NiLAoxNDQ3NDogICAgICAgc3RydWN0IGlub2RlICppbm9kZSwKMTQ0NzQ6ICAgICAg IHN0cnVjdCBpb3ZfaXRlciAqaXRlciwKMTQ0NzQ6ICAgICAgIGdldF9ibG9ja190IGdldF9ibG9j aykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19ibG9ja2Rldl9kaXJlY3RfSU8oaW9jYiwgaW5v ZGUsIGlub2RlLT5pX3NiLT5zX2JkZXYsIGl0ZXIsCjE0NDc0OiAgICBnZXRfYmxvY2ssICgodm9p ZCAqKTApLCAoKHZvaWQgKikwKSwgRElPX0xPQ0tJTkcgfCBESU9fU0tJUF9IT0xFUyk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBpbm9kZV9kaW9fd2FpdChzdHJ1Y3QgaW5v ZGUgKmlub2RlKTsKMTQ0NzQ6ICMgMzIwOCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGlub2RlX2Rpb19iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlKQoxNDQ3NDogewoxNDQ3NDog IGF0b21pY19pbmMoJmlub2RlLT5pX2Rpb19jb3VudCk7CjE0NDc0OiB9CjE0NDc0OiAjIDMyMjAg Ii4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV9kaW9fZW5kKHN0cnVjdCBp bm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmlu b2RlLT5pX2Rpb19jb3VudCkpCjE0NDc0OiAgIHdha2VfdXBfYml0KCZpbm9kZS0+aV9zdGF0ZSwg OSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQg ZGlvX3dhcm5fc3RhbGVfcGFnZWNhY2hlKHN0cnVjdCBmaWxlICpmaWxwKTsKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIHZvaWQgaW5vZGVfc2V0X2ZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2ln bmVkIGludCBmbGFncywKMTQ0NzQ6ICAgICAgICB1bnNpZ25lZCBpbnQgbWFzayk7CjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGdlbmVyaWNfcm9fZm9w czsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgcmVhZGxpbmtfY29w eShjaGFyICosIGludCwgY29uc3QgY2hhciAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgcGFnZV9yZWFk bGluayhzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50KTsKMTQ0NzQ6IGV4dGVybiBjb25zdCBj aGFyICpwYWdlX2dldF9saW5rKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICosCjE0NDc0 OiAgICAgIHN0cnVjdCBkZWxheWVkX2NhbGwgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBwYWdlX3B1 dF9saW5rKHZvaWQgKik7CjE0NDc0OiBleHRlcm4gaW50IF9fcGFnZV9zeW1saW5rKHN0cnVjdCBp bm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKnN5bW5hbWUsIGludCBsZW4sCjE0NDc0OiAgIGludCBu b2ZzKTsKMTQ0NzQ6IGV4dGVybiBpbnQgcGFnZV9zeW1saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUs IGNvbnN0IGNoYXIgKnN5bW5hbWUsIGludCBsZW4pOwoxNDQ3NDogZXh0ZXJuIGNvbnN0IHN0cnVj dCBpbm9kZV9vcGVyYXRpb25zIHBhZ2Vfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zOwoxNDQ3NDog ZXh0ZXJuIHZvaWQga2ZyZWVfbGluayh2b2lkICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZ2VuZXJp Y19maWxsYXR0cihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGtzdGF0ICopOwoxNDQ3NDogZXh0ZXJu IGludCB2ZnNfZ2V0YXR0cl9ub3NlYyhjb25zdCBzdHJ1Y3QgcGF0aCAqLCBzdHJ1Y3Qga3N0YXQg KiwgdTMyLCB1bnNpZ25lZCBpbnQpOwoxNDQ3NDogZXh0ZXJuIGludCB2ZnNfZ2V0YXR0cihjb25z dCBzdHJ1Y3QgcGF0aCAqLCBzdHJ1Y3Qga3N0YXQgKiwgdTMyLCB1bnNpZ25lZCBpbnQpOwoxNDQ3 NDogdm9pZCBfX2lub2RlX2FkZF9ieXRlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgYnl0 ZXMpOwoxNDQ3NDogdm9pZCBpbm9kZV9hZGRfYnl0ZXMoc3RydWN0IGlub2RlICppbm9kZSwgbG9m Zl90IGJ5dGVzKTsKMTQ0NzQ6IHZvaWQgX19pbm9kZV9zdWJfYnl0ZXMoc3RydWN0IGlub2RlICpp bm9kZSwgbG9mZl90IGJ5dGVzKTsKMTQ0NzQ6IHZvaWQgaW5vZGVfc3ViX2J5dGVzKHN0cnVjdCBp bm9kZSAqaW5vZGUsIGxvZmZfdCBieXRlcyk7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb2ZmX3QgX19pbm9kZV9nZXRfYnl0 ZXMoc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCgobG9mZl90 KWlub2RlLT5pX2Jsb2NrcykgPDwgOSkgKyBpbm9kZS0+aV9ieXRlczsKMTQ0NzQ6IH0KMTQ0NzQ6 IGxvZmZfdCBpbm9kZV9nZXRfYnl0ZXMoc3RydWN0IGlub2RlICppbm9kZSk7CjE0NDc0OiB2b2lk IGlub2RlX3NldF9ieXRlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgYnl0ZXMpOwoxNDQ3 NDogY29uc3QgY2hhciAqc2ltcGxlX2dldF9saW5rKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlu b2RlICosCjE0NDc0OiAgICAgICAgc3RydWN0IGRlbGF5ZWRfY2FsbCAqKTsKMTQ0NzQ6IGV4dGVy biBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBzaW1wbGVfc3ltbGlua19pbm9kZV9vcGVy YXRpb25zOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGl0ZXJhdGVfZGlyKHN0cnVjdCBmaWxl ICosIHN0cnVjdCBkaXJfY29udGV4dCAqKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCB2ZnNf c3RhdHgoaW50LCBjb25zdCBjaGFyICosIGludCwgc3RydWN0IGtzdGF0ICosIHUzMik7CjE0NDc0 OiBleHRlcm4gaW50IHZmc19zdGF0eF9mZCh1bnNpZ25lZCBpbnQsIHN0cnVjdCBrc3RhdCAqLCB1 MzIsIHVuc2lnbmVkIGludCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB2ZnNfc3RhdChjb25zdCBjaGFy ICpmaWxlbmFtZSwgc3RydWN0IGtzdGF0ICpzdGF0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB2 ZnNfc3RhdHgoLTEwMCwgZmlsZW5hbWUsIDB4ODAwLAoxNDQ3NDogICAgIHN0YXQsIDB4MDAwMDA3 ZmZVKTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB2ZnNfbHN0YXQoY29uc3QgY2hhciAqbmFtZSwgc3Ry dWN0IGtzdGF0ICpzdGF0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB2ZnNfc3RhdHgoLTEwMCwg bmFtZSwgMHgxMDAgfCAweDgwMCwKMTQ0NzQ6ICAgICBzdGF0LCAweDAwMDAwN2ZmVSk7CjE0NDc0 OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgdmZzX2ZzdGF0YXQoaW50IGRmZCwgY29uc3QgY2hhciAqZmlsZW5hbWUs CjE0NDc0OiAgICAgICAgICBzdHJ1Y3Qga3N0YXQgKnN0YXQsIGludCBmbGFncykKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gdmZzX3N0YXR4KGRmZCwgZmlsZW5hbWUsIGZsYWdzIHwgMHg4MDAsCjE0 NDc0OiAgICAgc3RhdCwgMHgwMDAwMDdmZlUpOwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHZmc19mc3Rh dChpbnQgZmQsIHN0cnVjdCBrc3RhdCAqc3RhdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdmZz X3N0YXR4X2ZkKGZkLCBzdGF0LCAweDAwMDAwN2ZmVSwgMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIGNvbnN0IGNoYXIgKnZmc19nZXRfbGluayhzdHJ1Y3QgZGVudHJ5 ICosIHN0cnVjdCBkZWxheWVkX2NhbGwgKik7CjE0NDc0OiBleHRlcm4gaW50IHZmc19yZWFkbGlu ayhzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGlu dCBfX2dlbmVyaWNfYmxvY2tfZmllbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsCjE0NDc0OiAgICAg ICBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvICpmaWVpbmZvLAoxNDQ3NDogICAgICAgbG9mZl90 IHN0YXJ0LCBsb2ZmX3QgbGVuLAoxNDQ3NDogICAgICAgZ2V0X2Jsb2NrX3QgKmdldF9ibG9jayk7 CjE0NDc0OiBleHRlcm4gaW50IGdlbmVyaWNfYmxvY2tfZmllbWFwKHN0cnVjdCBpbm9kZSAqaW5v ZGUsCjE0NDc0OiAgICAgc3RydWN0IGZpZW1hcF9leHRlbnRfaW5mbyAqZmllaW5mbywgdTY0IHN0 YXJ0LAoxNDQ3NDogICAgIHU2NCBsZW4sIGdldF9ibG9ja190ICpnZXRfYmxvY2spOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmdldF9maWxlc3lzdGVtKHN0 cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmcyk7CjE0NDc0OiBleHRlcm4gdm9pZCBwdXRfZmlsZXN5 c3RlbShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnMpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBm aWxlX3N5c3RlbV90eXBlICpnZXRfZnNfdHlwZShjb25zdCBjaGFyICpuYW1lKTsKMTQ0NzQ6IGV4 dGVybiBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmdldF9zdXBlcihzdHJ1Y3QgYmxvY2tfZGV2aWNlICop OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3N1cGVyX3RoYXdlZChzdHJ1 Y3QgYmxvY2tfZGV2aWNlICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0 X3N1cGVyX2V4Y2x1c2l2ZV90aGF3ZWQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldik7CjE0NDc0 OiBleHRlcm4gc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfYWN0aXZlX3N1cGVyKHN0cnVjdCBibG9j a19kZXZpY2UgKmJkZXYpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZHJvcF9zdXBlcihzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKnNiKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRyb3Bfc3VwZXJfZXhjbHVzaXZlKHN0 cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgaXRlcmF0ZV9zdXBlcnMo dm9pZCAoKikoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiksIHZvaWQgKik7CjE0NDc0OiBl eHRlcm4gdm9pZCBpdGVyYXRlX3N1cGVyc190eXBlKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICos CjE0NDc0OiAgICAgICAgICAgIHZvaWQgKCopKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2b2lkICop LCB2b2lkICopOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGRjYWNoZV9kaXJfb3BlbihzdHJ1 Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CjE0NDc0OiBleHRlcm4gaW50IGRjYWNoZV9kaXJf Y2xvc2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwoxNDQ3NDogZXh0ZXJuIGxvZmZf dCBkY2FjaGVfZGlyX2xzZWVrKHN0cnVjdCBmaWxlICosIGxvZmZfdCwgaW50KTsKMTQ0NzQ6IGV4 dGVybiBpbnQgZGNhY2hlX3JlYWRkaXIoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRpcl9jb250ZXh0 ICopOwoxNDQ3NDogZXh0ZXJuIGludCBzaW1wbGVfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICosIHN0 cnVjdCBpYXR0ciAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgc2ltcGxlX2dldGF0dHIoY29uc3Qgc3Ry dWN0IHBhdGggKiwgc3RydWN0IGtzdGF0ICosIHUzMiwgdW5zaWduZWQgaW50KTsKMTQ0NzQ6IGV4 dGVybiBpbnQgc2ltcGxlX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBrc3RhdGZzICop OwoxNDQ3NDogZXh0ZXJuIGludCBzaW1wbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgZmlsZSAqZmlsZSk7CjE0NDc0OiBleHRlcm4gaW50IHNpbXBsZV9saW5rKHN0cnVjdCBkZW50 cnkgKiwgc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiBleHRlcm4gaW50 IHNpbXBsZV91bmxpbmsoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiBl eHRlcm4gaW50IHNpbXBsZV9ybWRpcihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsK MTQ0NzQ6IGV4dGVybiBpbnQgc2ltcGxlX3JlbmFtZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRl bnRyeSAqLAoxNDQ3NDogICAgIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHVuc2ln bmVkIGludCk7CjE0NDc0OiBleHRlcm4gdm9pZCBzaW1wbGVfcmVjdXJzaXZlX3JlbW92YWwoc3Ry dWN0IGRlbnRyeSAqLAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAo KmNhbGxiYWNrKShzdHJ1Y3QgZGVudHJ5ICopKTsKMTQ0NzQ6IGV4dGVybiBpbnQgbm9vcF9mc3lu YyhzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgaW50KTsKMTQ0NzQ6IGV4dGVybiBpbnQg bm9vcF9zZXRfcGFnZV9kaXJ0eShzdHJ1Y3QgcGFnZSAqcGFnZSk7CjE0NDc0OiBleHRlcm4gdm9p ZCBub29wX2ludmFsaWRhdGVwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb2Zm c2V0LAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90 IG5vb3BfZGlyZWN0X0lPKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVy KTsKMTQ0NzQ6IGV4dGVybiBpbnQgc2ltcGxlX2VtcHR5KHN0cnVjdCBkZW50cnkgKik7CjE0NDc0 OiBleHRlcm4gaW50IHNpbXBsZV9yZWFkcGFnZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHBh Z2UgKnBhZ2UpOwoxNDQ3NDogZXh0ZXJuIGludCBzaW1wbGVfd3JpdGVfYmVnaW4oc3RydWN0IGZp bGUgKmZpbGUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAoxNDQ3NDogICAgbG9mZl90 IHBvcywgdW5zaWduZWQgbGVuLCB1bnNpZ25lZCBmbGFncywKMTQ0NzQ6ICAgIHN0cnVjdCBwYWdl ICoqcGFnZXAsIHZvaWQgKipmc2RhdGEpOwoxNDQ3NDogZXh0ZXJuIGludCBzaW1wbGVfd3JpdGVf ZW5kKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKMTQ0 NzQ6ICAgIGxvZmZfdCBwb3MsIHVuc2lnbmVkIGxlbiwgdW5zaWduZWQgY29waWVkLAoxNDQ3NDog ICAgc3RydWN0IHBhZ2UgKnBhZ2UsIHZvaWQgKmZzZGF0YSk7CjE0NDc0OiBleHRlcm4gaW50IGFs d2F5c19kZWxldGVfZGVudHJ5KGNvbnN0IHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiBleHRlcm4g c3RydWN0IGlub2RlICphbGxvY19hbm9uX2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKMTQ0 NzQ6IGV4dGVybiBpbnQgc2ltcGxlX25vc2V0bGVhc2Uoc3RydWN0IGZpbGUgKiwgbG9uZywgc3Ry dWN0IGZpbGVfbG9jayAqKiwgdm9pZCAqKik7CjE0NDc0OiBleHRlcm4gY29uc3Qgc3RydWN0IGRl bnRyeV9vcGVyYXRpb25zIHNpbXBsZV9kZW50cnlfb3BlcmF0aW9uczsKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHN0cnVjdCBkZW50cnkgKnNpbXBsZV9sb29rdXAoc3RydWN0IGlub2RlICosIHN0cnVj dCBkZW50cnkgKiwgdW5zaWduZWQgaW50IGZsYWdzKTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IGdl bmVyaWNfcmVhZF9kaXIoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsK MTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHNpbXBsZV9kaXJfb3Bl cmF0aW9uczsKMTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBzaW1w bGVfZGlyX2lub2RlX29wZXJhdGlvbnM7CjE0NDc0OiBleHRlcm4gdm9pZCBtYWtlX2VtcHR5X2Rp cl9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IGV4dGVybiBib29sIGlzX2VtcHR5 X2Rpcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IHN0cnVjdCB0cmVlX2Rlc2Ny IHsgY29uc3QgY2hhciAqbmFtZTsgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqb3BzOyBp bnQgbW9kZTsgfTsKMTQ0NzQ6IHN0cnVjdCBkZW50cnkgKmRfYWxsb2NfbmFtZShzdHJ1Y3QgZGVu dHJ5ICosIGNvbnN0IGNoYXIgKik7CjE0NDc0OiBleHRlcm4gaW50IHNpbXBsZV9maWxsX3N1cGVy KHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nLAoxNDQ3NDogICAgICAgICBjb25z dCBzdHJ1Y3QgdHJlZV9kZXNjciAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgc2ltcGxlX3Bpbl9mcyhz dHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqLCBzdHJ1Y3QgdmZzbW91bnQgKiptb3VudCwgaW50ICpj b3VudCk7CjE0NDc0OiBleHRlcm4gdm9pZCBzaW1wbGVfcmVsZWFzZV9mcyhzdHJ1Y3QgdmZzbW91 bnQgKiptb3VudCwgaW50ICpjb3VudCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IHNp bXBsZV9yZWFkX2Zyb21fYnVmZmVyKHZvaWQgKnRvLCBzaXplX3QgY291bnQsCjE0NDc0OiAgICBs b2ZmX3QgKnBwb3MsIGNvbnN0IHZvaWQgKmZyb20sIHNpemVfdCBhdmFpbGFibGUpOwoxNDQ3NDog ZXh0ZXJuIHNzaXplX3Qgc2ltcGxlX3dyaXRlX3RvX2J1ZmZlcih2b2lkICp0bywgc2l6ZV90IGF2 YWlsYWJsZSwgbG9mZl90ICpwcG9zLAoxNDQ3NDogICBjb25zdCB2b2lkICpmcm9tLCBzaXplX3Qg Y291bnQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fZ2VuZXJpY19maWxlX2ZzeW5jKHN0 cnVjdCBmaWxlICosIGxvZmZfdCwgbG9mZl90LCBpbnQpOwoxNDQ3NDogZXh0ZXJuIGludCBnZW5l cmljX2ZpbGVfZnN5bmMoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBsb2ZmX3QsIGludCk7CjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZ2VuZXJpY19jaGVja19hZGRyZXNzYWJsZSh1bnNpZ25lZCwg dTY0KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGJ1ZmZlcl9taWdyYXRlX3Bh Z2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwKMTQ0NzQ6ICAgICBzdHJ1Y3QgcGFnZSAqLCBzdHJ1 Y3QgcGFnZSAqLAoxNDQ3NDogICAgIGVudW0gbWlncmF0ZV9tb2RlKTsKMTQ0NzQ6IGV4dGVybiBp bnQgYnVmZmVyX21pZ3JhdGVfcGFnZV9ub3JlZnMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwKMTQ0 NzQ6ICAgICBzdHJ1Y3QgcGFnZSAqLCBzdHJ1Y3QgcGFnZSAqLAoxNDQ3NDogICAgIGVudW0gbWln cmF0ZV9tb2RlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gaW50IHNldGF0dHJfcHJlcGFyZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0 ciAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgaW5vZGVfbmV3c2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW5v ZGUgKiwgbG9mZl90IG9mZnNldCk7CjE0NDc0OiBleHRlcm4gdm9pZCBzZXRhdHRyX2NvcHkoc3Ry dWN0IGlub2RlICppbm9kZSwgY29uc3Qgc3RydWN0IGlhdHRyICphdHRyKTsKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIGludCBmaWxlX3VwZGF0ZV90aW1lKHN0cnVjdCBmaWxlICpmaWxlKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBpb19pc19kaXJlY3Qoc3RydWN0IGZpbGUgKmZpbHApCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIChmaWxwLT5mX2ZsYWdzICYgMDAwNDAwMDApIHx8ICgoZmlscC0+Zl9tYXBw aW5nLT5ob3N0KS0+aV9mbGFncyAmIDgxOTIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s IHZtYV9pc19kYXgoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIHZtYS0+dm1fZmlsZSAmJiAoKHZtYS0+dm1fZmlsZS0+Zl9tYXBwaW5nLT5ob3N0KS0+ aV9mbGFncyAmIDgxOTIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHZtYV9pc19mc2Rh eChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgaW5v ZGUgKmlub2RlOwoxNDQ3NDogCjE0NDc0OiAgaWYgKCF2bWEtPnZtX2ZpbGUpCjE0NDc0OiAgIHJl dHVybiBmYWxzZTsKMTQ0NzQ6ICBpZiAoIXZtYV9pc19kYXgodm1hKSkKMTQ0NzQ6ICAgcmV0dXJu IGZhbHNlOwoxNDQ3NDogIGlub2RlID0gZmlsZV9pbm9kZSh2bWEtPnZtX2ZpbGUpOwoxNDQ3NDog IGlmICgoKChpbm9kZS0+aV9tb2RlKSAmIDAwMTcwMDAwKSA9PSAwMDIwMDAwKSkKMTQ0NzQ6ICAg cmV0dXJuIGZhbHNlOwoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgaW9jYl9mbGFncyhzdHJ1Y3QgZmlsZSAqZmlsZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQg cmVzID0gMDsKMTQ0NzQ6ICBpZiAoZmlsZS0+Zl9mbGFncyAmIDAwMDAyMDAwKQoxNDQ3NDogICBy ZXMgfD0gKDEgPDwgMSk7CjE0NDc0OiAgaWYgKGlvX2lzX2RpcmVjdChmaWxlKSkKMTQ0NzQ6ICAg cmVzIHw9ICgxIDw8IDIpOwoxNDQ3NDogIGlmICgoZmlsZS0+Zl9mbGFncyAmIDAwMDEwMDAwKSB8 fCAoKChmaWxlLT5mX21hcHBpbmctPmhvc3QpLT5pX3NiLT5zX2ZsYWdzICYgKDE2KSkgfHwgKChm aWxlLT5mX21hcHBpbmctPmhvc3QpLT5pX2ZsYWdzICYgMSkpKQoxNDQ3NDogICByZXMgfD0gKDEg PDwgNCk7CjE0NDc0OiAgaWYgKGZpbGUtPmZfZmxhZ3MgJiAwNDAwMDAwMCkKMTQ0NzQ6ICAgcmVz IHw9ICgxIDw8IDUpOwoxNDQ3NDogIHJldHVybiByZXM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBraW9jYl9zZXRfcndfZmxhZ3Moc3RydWN0IGtpb2NiICpraSwgcndmX3QgZmxhZ3MpCjE0 NDc0OiB7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoZmxhZ3MgJiB+KCgoIF9fa2Vy bmVsX3J3Zl90KTB4MDAwMDAwMDEpIHwgKCggX19rZXJuZWxfcndmX3QpMHgwMDAwMDAwMikgfCAo KCBfX2tlcm5lbF9yd2ZfdCkweDAwMDAwMDA0KSB8ICgoIF9fa2VybmVsX3J3Zl90KTB4MDAwMDAw MDgpIHwgKCggX19rZXJuZWxfcndmX3QpMHgwMDAwMDAxMCkpKSwgMCkpCjE0NDc0OiAgIHJldHVy biAtOTU7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoZmxhZ3MgJiAoKCBfX2tlcm5lbF9yd2ZfdCkweDAw MDAwMDA4KSkgewoxNDQ3NDogICBpZiAoIShraS0+a2lfZmlscC0+Zl9tb2RlICYgKCggZm1vZGVf dCkweDgwMDAwMDApKSkKMTQ0NzQ6ICAgIHJldHVybiAtOTU7CjE0NDc0OiAgIGtpLT5raV9mbGFn cyB8PSAoMSA8PCA3KTsKMTQ0NzQ6ICB9CjE0NDc0OiAgaWYgKGZsYWdzICYgKCggX19rZXJuZWxf cndmX3QpMHgwMDAwMDAwMSkpCjE0NDc0OiAgIGtpLT5raV9mbGFncyB8PSAoMSA8PCAzKTsKMTQ0 NzQ6ICBpZiAoZmxhZ3MgJiAoKCBfX2tlcm5lbF9yd2ZfdCkweDAwMDAwMDAyKSkKMTQ0NzQ6ICAg a2ktPmtpX2ZsYWdzIHw9ICgxIDw8IDQpOwoxNDQ3NDogIGlmIChmbGFncyAmICgoIF9fa2VybmVs X3J3Zl90KTB4MDAwMDAwMDQpKQoxNDQ3NDogICBraS0+a2lfZmxhZ3MgfD0gKCgxIDw8IDQpIHwg KDEgPDwgNSkpOwoxNDQ3NDogIGlmIChmbGFncyAmICgoIF9fa2VybmVsX3J3Zl90KTB4MDAwMDAw MTApKQoxNDQ3NDogICBraS0+a2lfZmxhZ3MgfD0gKDEgPDwgMSk7CjE0NDc0OiAgcmV0dXJuIDA7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlub190IHBhcmVudF9pbm8oc3RydWN0IGRlbnRyeSAq ZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIGlub190IHJlczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3Bpbl9sb2NrKCZkZW50cnktPmRfbG9ja3JlZi5s b2NrKTsKMTQ0NzQ6ICByZXMgPSBkZW50cnktPmRfcGFyZW50LT5kX2lub2RlLT5pX2lubzsKMTQ0 NzQ6ICBzcGluX3VubG9jaygmZGVudHJ5LT5kX2xvY2tyZWYubG9jayk7CjE0NDc0OiAgcmV0dXJu IHJlczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNpbXBsZV90cmFuc2FjdGlvbl9hcmdyZXNwIHsK MTQ0NzQ6ICBzc2l6ZV90IHNpemU7CjE0NDc0OiAgY2hhciBkYXRhWzBdOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGNoYXIgKnNpbXBsZV90cmFuc2FjdGlvbl9nZXQo c3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKmJ1ZiwKMTQ0NzQ6ICAgICBzaXplX3Qgc2l6 ZSk7CjE0NDc0OiBzc2l6ZV90IHNpbXBsZV90cmFuc2FjdGlvbl9yZWFkKHN0cnVjdCBmaWxlICpm aWxlLCBjaGFyICpidWYsCjE0NDc0OiAgICAgc2l6ZV90IHNpemUsIGxvZmZfdCAqcG9zKTsKMTQ0 NzQ6IGludCBzaW1wbGVfdHJhbnNhY3Rpb25fcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz dHJ1Y3QgZmlsZSAqZmlsZSk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc2ltcGxlX3RyYW5zYWN0aW9u X3NldChzdHJ1Y3QgZmlsZSAqZmlsZSwgc2l6ZV90IG4pOwoxNDQ3NDogIyAzNTE1ICIuL2luY2x1 ZGUvbGludXgvZnMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAx LCAyKSkpCjE0NDc0OiB2b2lkIF9fc2ltcGxlX2F0dHJfY2hlY2tfZm9ybWF0KGNvbnN0IGNoYXIg KmZtdCwgLi4uKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGludCBz aW1wbGVfYXR0cl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLAox NDQ3NDogICAgICAgIGludCAoKmdldCkodm9pZCAqLCB1NjQgKiksIGludCAoKnNldCkodm9pZCAq LCB1NjQpLAoxNDQ3NDogICAgICAgIGNvbnN0IGNoYXIgKmZtdCk7CjE0NDc0OiBpbnQgc2ltcGxl X2F0dHJfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSk7CjE0 NDc0OiBzc2l6ZV90IHNpbXBsZV9hdHRyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgKmJ1 ZiwKMTQ0NzQ6ICAgICBzaXplX3QgbGVuLCBsb2ZmX3QgKnBwb3MpOwoxNDQ3NDogc3NpemVfdCBz aW1wbGVfYXR0cl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqYnVmLAoxNDQ3 NDogICAgICBzaXplX3QgbGVuLCBsb2ZmX3QgKnBwb3MpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg Y3RsX3RhYmxlOwoxNDQ3NDogaW50IHByb2NfbnJfZmlsZXMoc3RydWN0IGN0bF90YWJsZSAqdGFi bGUsIGludCB3cml0ZSwKMTQ0NzQ6ICAgICB2b2lkICpidWZmZXIsIHNpemVfdCAqbGVucCwgbG9m Zl90ICpwcG9zKTsKMTQ0NzQ6IGludCBwcm9jX25yX2RlbnRyeShzdHJ1Y3QgY3RsX3RhYmxlICp0 YWJsZSwgaW50IHdyaXRlLAoxNDQ3NDogICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLCBs b2ZmX3QgKnBwb3MpOwoxNDQ3NDogaW50IHByb2NfbnJfaW5vZGVzKHN0cnVjdCBjdGxfdGFibGUg KnRhYmxlLCBpbnQgd3JpdGUsCjE0NDc0OiAgICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5w LCBsb2ZmX3QgKnBwb3MpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIu aW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIGdldF9maWxlc3lzdGVtX2xp c3QoY2hhciAqYnVmKTsKMTQ0NzQ6ICMgMzU0NiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIGlzX3N4aWQodW1vZGVfdCBtb2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAobW9k ZSAmIDAwMDQwMDApIHx8ICgobW9kZSAmIDAwMDIwMDApICYmIChtb2RlICYgMDAwMTApKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNoZWNrX3N0aWNreShzdHJ1Y3QgaW5vZGUgKmRpciwg c3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoIShkaXItPmlfbW9kZSAm IDAwMDEwMDApKQoxNDQ3NDogICByZXR1cm4gMDsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBfX2No ZWNrX3N0aWNreShkaXIsIGlub2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9k ZV9oYXNfbm9feGF0dHIoc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAo IWlzX3N4aWQoaW5vZGUtPmlfbW9kZSkgJiYgKGlub2RlLT5pX3NiLT5zX2ZsYWdzICYgKDE8PDI4 KSkpCjE0NDc0OiAgIGlub2RlLT5pX2ZsYWdzIHw9IDQwOTY7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgaXNfcm9vdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBpbm9kZSA9PSBpbm9kZS0+aV9zYi0+c19yb290LT5kX2lub2RlOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGRpcl9lbWl0KHN0cnVjdCBkaXJfY29udGV4dCAqY3R4LAox NDQ3NDogICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1lbGVuLAoxNDQ3NDogICAgICAg IHU2NCBpbm8sIHVuc2lnbmVkIHR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGN0eC0+YWN0 b3IoY3R4LCBuYW1lLCBuYW1lbGVuLCBjdHgtPnBvcywgaW5vLCB0eXBlKSA9PSAwOwoxNDQ3NDog fQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBkaXJfZW1pdF9kb3Qoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkaXJf Y29udGV4dCAqY3R4KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBjdHgtPmFjdG9yKGN0eCwgIi4i LCAxLCBjdHgtPnBvcywKMTQ0NzQ6ICAgICAgZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZS0+ aV9pbm8sIDQpID09IDA7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRpcl9lbWl0X2RvdGRvdChzdHJ1 Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIGN0eC0+YWN0b3IoY3R4LCAiLi4iLCAyLCBjdHgtPnBvcywKMTQ0NzQ6ICAgICAgcGFy ZW50X2lubyhmaWxlLT5mX3BhdGguZGVudHJ5KSwgNCkgPT0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgZGlyX2VtaXRfZG90cyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpj dHgpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGN0eC0+cG9zID09IDApIHsKMTQ0NzQ6ICAgaWYgKCFk aXJfZW1pdF9kb3QoZmlsZSwgY3R4KSkKMTQ0NzQ6ICAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6ICAg Y3R4LT5wb3MgPSAxOwoxNDQ3NDogIH0KMTQ0NzQ6ICBpZiAoY3R4LT5wb3MgPT0gMSkgewoxNDQ3 NDogICBpZiAoIWRpcl9lbWl0X2RvdGRvdChmaWxlLCBjdHgpKQoxNDQ3NDogICAgcmV0dXJuIGZh bHNlOwoxNDQ3NDogICBjdHgtPnBvcyA9IDI7CjE0NDc0OiAgfQoxNDQ3NDogIHJldHVybiB0cnVl OwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkaXJfcmVsYXgoc3RydWN0IGlub2RlICppbm9kZSkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBpbm9kZV91bmxvY2soaW5vZGUpOwoxNDQ3NDogIGlub2RlX2xvY2soaW5v ZGUpOwoxNDQ3NDogIHJldHVybiAhKChpbm9kZSktPmlfZmxhZ3MgJiAxNik7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgZGlyX3JlbGF4X3NoYXJlZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQox NDQ3NDogewoxNDQ3NDogIGlub2RlX3VubG9ja19zaGFyZWQoaW5vZGUpOwoxNDQ3NDogIGlub2Rl X2xvY2tfc2hhcmVkKGlub2RlKTsKMTQ0NzQ6ICByZXR1cm4gISgoaW5vZGUpLT5pX2ZsYWdzICYg MTYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCBwYXRoX25vZXhlYyhjb25z dCBzdHJ1Y3QgcGF0aCAqcGF0aCk7CjE0NDc0OiBleHRlcm4gdm9pZCBpbm9kZV9ub2hpZ2htZW0o c3RydWN0IGlub2RlICppbm9kZSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCB2 ZnNfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwK MTQ0NzQ6ICAgICAgICAgIGludCBhZHZpY2UpOwoxNDQ3NDogZXh0ZXJuIGludCBnZW5lcmljX2Zh ZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sCjE0NDc0 OiAgICAgICBpbnQgYWR2aWNlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0 IHNvY2sgKmlvX3VyaW5nX2dldF9zb2NrZXQoc3RydWN0IGZpbGUgKmZpbGUpOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQg dmZzX2lvY19zZXRmbGFnc19wcmVwYXJlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGlu dCBvbGRmbGFncywKMTQ0NzQ6ICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKTsKMTQ0NzQ6IAox NDQ3NDogaW50IHZmc19pb2NfZnNzZXR4YXR0cl9jaGVjayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBj b25zdCBzdHJ1Y3QgZnN4YXR0ciAqb2xkX2ZhLAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgZnN4YXR0 ciAqZmEpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNpbXBsZV9maWxsX2ZzeGF0dHIoc3RydWN0IGZz eGF0dHIgKmZhLCBfX3UzMiB4ZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAgbWVtc2V0KGZhLCAwLCBz aXplb2YoKmZhKSk7CjE0NDc0OiAgZmEtPmZzeF94ZmxhZ3MgPSB4ZmxhZ3M7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg aW5vZGVfZHJhaW5fd3JpdGVzKHN0cnVjdCBpbm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAg aW5vZGVfZGlvX3dhaXQoaW5vZGUpOwoxNDQ3NDogIHJldHVybiBmaWxlbWFwX3dyaXRlX2FuZF93 YWl0KGlub2RlLT5pX21hcHBpbmcpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMiAiLi9pbmNsdWRlL2xp bnV4L3NlcV9maWxlLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIgMQox NDQ3NDogIyAxMyAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRl L2xpbnV4L2tleS5oIiAxCjE0NDc0OiAjIDE3ICIuL2luY2x1ZGUvbGludXgva2V5LmgiCjE0NDc0 OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zeXNjdGwuaCIgMQoxNDQ3NDogIyAzMCAiLi9pbmNsdWRl L2xpbnV4L3N5c2N0bC5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zeXNjdGwu aCIgMQoxNDQ3NDogIyAzNSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3lzY3RsLmgiCjE0NDc0OiBz dHJ1Y3QgX19zeXNjdGxfYXJncyB7CjE0NDc0OiAgaW50ICpuYW1lOwoxNDQ3NDogIGludCBubGVu OwoxNDQ3NDogIHZvaWQgKm9sZHZhbDsKMTQ0NzQ6ICBzaXplX3QgKm9sZGxlbnA7CjE0NDc0OiAg dm9pZCAqbmV3dmFsOwoxNDQ3NDogIHNpemVfdCBuZXdsZW47CjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBfX3VudXNlZFs0XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogZW51bQoxNDQ3NDogewoxNDQ3NDogIENUTF9LRVJOPTEsCjE0NDc0OiAg Q1RMX1ZNPTIsCjE0NDc0OiAgQ1RMX05FVD0zLAoxNDQ3NDogIENUTF9QUk9DPTQsCjE0NDc0OiAg Q1RMX0ZTPTUsCjE0NDc0OiAgQ1RMX0RFQlVHPTYsCjE0NDc0OiAgQ1RMX0RFVj03LAoxNDQ3NDog IENUTF9CVVM9OCwKMTQ0NzQ6ICBDVExfQUJJPTksCjE0NDc0OiAgQ1RMX0NQVT0xMCwKMTQ0NzQ6 ICBDVExfQVJMQU49MjU0LAoxNDQ3NDogIENUTF9TMzkwREJGPTU2NzcsCjE0NDc0OiAgQ1RMX1NV TlJQQz03MjQ5LAoxNDQ3NDogIENUTF9QTT05ODk5LAoxNDQ3NDogIENUTF9GUlY9OTg5OCwKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bQoxNDQ3NDogewoxNDQ3NDogIENUTF9C VVNfSVNBPTEKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bQoxNDQ3NDogewox NDQ3NDogIElOT1RJRllfTUFYX1VTRVJfSU5TVEFOQ0VTPTEsCjE0NDc0OiAgSU5PVElGWV9NQVhf VVNFUl9XQVRDSEVTPTIsCjE0NDc0OiAgSU5PVElGWV9NQVhfUVVFVUVEX0VWRU5UUz0zCjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6ICBLRVJOX09T VFlQRT0xLAoxNDQ3NDogIEtFUk5fT1NSRUxFQVNFPTIsCjE0NDc0OiAgS0VSTl9PU1JFVj0zLAox NDQ3NDogIEtFUk5fVkVSU0lPTj00LAoxNDQ3NDogIEtFUk5fU0VDVVJFTUFTSz01LAoxNDQ3NDog IEtFUk5fUFJPRj02LAoxNDQ3NDogIEtFUk5fTk9ERU5BTUU9NywKMTQ0NzQ6ICBLRVJOX0RPTUFJ Tk5BTUU9OCwKMTQ0NzQ6IAoxNDQ3NDogIEtFUk5fUEFOSUM9MTUsCjE0NDc0OiAgS0VSTl9SRUFM Uk9PVERFVj0xNiwKMTQ0NzQ6IAoxNDQ3NDogIEtFUk5fU1BBUkNfUkVCT09UPTIxLAoxNDQ3NDog IEtFUk5fQ1RMQUxUREVMPTIyLAoxNDQ3NDogIEtFUk5fUFJJTlRLPTIzLAoxNDQ3NDogIEtFUk5f TkFNRVRSQU5TPTI0LAoxNDQ3NDogIEtFUk5fUFBDX0hUQUJSRUNMQUlNPTI1LAoxNDQ3NDogIEtF Uk5fUFBDX1pFUk9QQUdFRD0yNiwKMTQ0NzQ6ICBLRVJOX1BQQ19QT1dFUlNBVkVfTkFQPTI3LAox NDQ3NDogIEtFUk5fTU9EUFJPQkU9MjgsCjE0NDc0OiAgS0VSTl9TR19CSUdfQlVGRj0yOSwKMTQ0 NzQ6ICBLRVJOX0FDQ1Q9MzAsCjE0NDc0OiAgS0VSTl9QUENfTDJDUj0zMSwKMTQ0NzQ6IAoxNDQ3 NDogIEtFUk5fUlRTSUdOUj0zMiwKMTQ0NzQ6ICBLRVJOX1JUU0lHTUFYPTMzLAoxNDQ3NDogCjE0 NDc0OiAgS0VSTl9TSE1NQVg9MzQsCjE0NDc0OiAgS0VSTl9NU0dNQVg9MzUsCjE0NDc0OiAgS0VS Tl9NU0dNTkI9MzYsCjE0NDc0OiAgS0VSTl9NU0dQT09MPTM3LAoxNDQ3NDogIEtFUk5fU1lTUlE9 MzgsCjE0NDc0OiAgS0VSTl9NQVhfVEhSRUFEUz0zOSwKMTQ0NzQ6ICAgS0VSTl9SQU5ET009NDAs CjE0NDc0OiAgIEtFUk5fU0hNQUxMPTQxLAoxNDQ3NDogICBLRVJOX01TR01OST00MiwKMTQ0NzQ6 ICAgS0VSTl9TRU09NDMsCjE0NDc0OiAgIEtFUk5fU1BBUkNfU1RPUF9BPTQ0LAoxNDQ3NDogICBL RVJOX1NITU1OST00NSwKMTQ0NzQ6ICBLRVJOX09WRVJGTE9XVUlEPTQ2LAoxNDQ3NDogIEtFUk5f T1ZFUkZMT1dHSUQ9NDcsCjE0NDc0OiAgS0VSTl9TSE1QQVRIPTQ4LAoxNDQ3NDogIEtFUk5fSE9U UExVRz00OSwKMTQ0NzQ6ICBLRVJOX0lFRUVfRU1VTEFUSU9OX1dBUk5JTkdTPTUwLAoxNDQ3NDog IEtFUk5fUzM5MF9VU0VSX0RFQlVHX0xPR0dJTkc9NTEsCjE0NDc0OiAgS0VSTl9DT1JFX1VTRVNf UElEPTUyLAoxNDQ3NDogIEtFUk5fVEFJTlRFRD01MywKMTQ0NzQ6ICBLRVJOX0NBRFBJRD01NCwK MTQ0NzQ6ICBLRVJOX1BJRE1BWD01NSwKMTQ0NzQ6ICAgIEtFUk5fQ09SRV9QQVRURVJOPTU2LAox NDQ3NDogIEtFUk5fUEFOSUNfT05fT09QUz01NywKMTQ0NzQ6ICBLRVJOX0hQUEFfUFdSU1c9NTgs CjE0NDc0OiAgS0VSTl9IUFBBX1VOQUxJR05FRD01OSwKMTQ0NzQ6ICBLRVJOX1BSSU5US19SQVRF TElNSVQ9NjAsCjE0NDc0OiAgS0VSTl9QUklOVEtfUkFURUxJTUlUX0JVUlNUPTYxLAoxNDQ3NDog IEtFUk5fUFRZPTYyLAoxNDQ3NDogIEtFUk5fTkdST1VQU19NQVg9NjMsCjE0NDc0OiAgS0VSTl9T UEFSQ19TQ09OU19QV1JPRkY9NjQsCjE0NDc0OiAgS0VSTl9IWl9USU1FUj02NSwKMTQ0NzQ6ICBL RVJOX1VOS05PV05fTk1JX1BBTklDPTY2LAoxNDQ3NDogIEtFUk5fQk9PVExPQURFUl9UWVBFPTY3 LAoxNDQ3NDogIEtFUk5fUkFORE9NSVpFPTY4LAoxNDQ3NDogIEtFUk5fU0VUVUlEX0RVTVBBQkxF PTY5LAoxNDQ3NDogIEtFUk5fU1BJTl9SRVRSWT03MCwKMTQ0NzQ6ICBLRVJOX0FDUElfVklERU9f RkxBR1M9NzEsCjE0NDc0OiAgS0VSTl9JQTY0X1VOQUxJR05FRD03MiwKMTQ0NzQ6ICBLRVJOX0NP TVBBVF9MT0c9NzMsCjE0NDc0OiAgS0VSTl9NQVhfTE9DS19ERVBUSD03NCwKMTQ0NzQ6ICBLRVJO X05NSV9XQVRDSERPRz03NSwKMTQ0NzQ6ICBLRVJOX1BBTklDX09OX05NST03NiwKMTQ0NzQ6ICBL RVJOX1BBTklDX09OX1dBUk49NzcsCjE0NDc0OiAgS0VSTl9QQU5JQ19QUklOVD03OCwKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsK MTQ0NzQ6ICBWTV9VTlVTRUQxPTEsCjE0NDc0OiAgVk1fVU5VU0VEMj0yLAoxNDQ3NDogIFZNX1VO VVNFRDM9MywKMTQ0NzQ6ICBWTV9VTlVTRUQ0PTQsCjE0NDc0OiAgVk1fT1ZFUkNPTU1JVF9NRU1P Ulk9NSwKMTQ0NzQ6ICBWTV9VTlVTRUQ1PTYsCjE0NDc0OiAgVk1fVU5VU0VENz03LAoxNDQ3NDog IFZNX1VOVVNFRDg9OCwKMTQ0NzQ6ICBWTV9VTlVTRUQ5PTksCjE0NDc0OiAgVk1fUEFHRV9DTFVT VEVSPTEwLAoxNDQ3NDogIFZNX0RJUlRZX0JBQ0tHUk9VTkQ9MTEsCjE0NDc0OiAgVk1fRElSVFlf UkFUSU89MTIsCjE0NDc0OiAgVk1fRElSVFlfV0JfQ1M9MTMsCjE0NDc0OiAgVk1fRElSVFlfRVhQ SVJFX0NTPTE0LAoxNDQ3NDogIFZNX05SX1BERkxVU0hfVEhSRUFEUz0xNSwKMTQ0NzQ6ICBWTV9P VkVSQ09NTUlUX1JBVElPPTE2LAoxNDQ3NDogIFZNX1BBR0VCVUY9MTcsCjE0NDc0OiAgVk1fSFVH RVRMQl9QQUdFUz0xOCwKMTQ0NzQ6ICBWTV9TV0FQUElORVNTPTE5LAoxNDQ3NDogIFZNX0xPV01F TV9SRVNFUlZFX1JBVElPPTIwLAoxNDQ3NDogIFZNX01JTl9GUkVFX0tCWVRFUz0yMSwKMTQ0NzQ6 ICBWTV9NQVhfTUFQX0NPVU5UPTIyLAoxNDQ3NDogIFZNX0xBUFRPUF9NT0RFPTIzLAoxNDQ3NDog IFZNX0JMT0NLX0RVTVA9MjQsCjE0NDc0OiAgVk1fSFVHRVRMQl9HUk9VUD0yNSwKMTQ0NzQ6ICBW TV9WRlNfQ0FDSEVfUFJFU1NVUkU9MjYsCjE0NDc0OiAgVk1fTEVHQUNZX1ZBX0xBWU9VVD0yNywK MTQ0NzQ6ICBWTV9TV0FQX1RPS0VOX1RJTUVPVVQ9MjgsCjE0NDc0OiAgVk1fRFJPUF9QQUdFQ0FD SEU9MjksCjE0NDc0OiAgVk1fUEVSQ1BVX1BBR0VMSVNUX0ZSQUNUSU9OPTMwLAoxNDQ3NDogIFZN X1pPTkVfUkVDTEFJTV9NT0RFPTMxLAoxNDQ3NDogIFZNX01JTl9VTk1BUFBFRD0zMiwKMTQ0NzQ6 ICBWTV9QQU5JQ19PTl9PT009MzMsCjE0NDc0OiAgVk1fVkRTT19FTkFCTEVEPTM0LAoxNDQ3NDog IFZNX01JTl9TTEFCPTM1LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6ICBORVRfQ09SRT0xLAoxNDQ3NDogIE5FVF9FVEhFUj0yLAox NDQ3NDogIE5FVF84MDI9MywKMTQ0NzQ6ICBORVRfVU5JWD00LAoxNDQ3NDogIE5FVF9JUFY0PTUs CjE0NDc0OiAgTkVUX0lQWD02LAoxNDQ3NDogIE5FVF9BVEFMSz03LAoxNDQ3NDogIE5FVF9ORVRS T009OCwKMTQ0NzQ6ICBORVRfQVgyNT05LAoxNDQ3NDogIE5FVF9CUklER0U9MTAsCjE0NDc0OiAg TkVUX1JPU0U9MTEsCjE0NDc0OiAgTkVUX0lQVjY9MTIsCjE0NDc0OiAgTkVUX1gyNT0xMywKMTQ0 NzQ6ICBORVRfVFI9MTQsCjE0NDc0OiAgTkVUX0RFQ05FVD0xNSwKMTQ0NzQ6ICBORVRfRUNPTkVU PTE2LAoxNDQ3NDogIE5FVF9TQ1RQPTE3LAoxNDQ3NDogIE5FVF9MTEM9MTgsCjE0NDc0OiAgTkVU X05FVEZJTFRFUj0xOSwKMTQ0NzQ6ICBORVRfRENDUD0yMCwKMTQ0NzQ6ICBORVRfSVJEQT00MTIs CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6ICBS QU5ET01fUE9PTFNJWkU9MSwKMTQ0NzQ6ICBSQU5ET01fRU5UUk9QWV9DT1VOVD0yLAoxNDQ3NDog IFJBTkRPTV9SRUFEX1RIUkVTSD0zLAoxNDQ3NDogIFJBTkRPTV9XUklURV9USFJFU0g9NCwKMTQ0 NzQ6ICBSQU5ET01fQk9PVF9JRD01LAoxNDQ3NDogIFJBTkRPTV9VVUlEPTYKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bQoxNDQ3NDogewoxNDQ3NDogIFBUWV9NQVg9MSwKMTQ0 NzQ6ICBQVFlfTlI9MgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtCjE0NDc0 OiB7CjE0NDc0OiAgQlVTX0lTQV9NRU1fQkFTRT0xLAoxNDQ3NDogIEJVU19JU0FfUE9SVF9CQVNF PTIsCjE0NDc0OiAgQlVTX0lTQV9QT1JUX1NISUZUPTMKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZW51bQoxNDQ3NDogewoxNDQ3NDogIE5FVF9DT1JFX1dNRU1fTUFYPTEsCjE0NDc0 OiAgTkVUX0NPUkVfUk1FTV9NQVg9MiwKMTQ0NzQ6ICBORVRfQ09SRV9XTUVNX0RFRkFVTFQ9MywK MTQ0NzQ6ICBORVRfQ09SRV9STUVNX0RFRkFVTFQ9NCwKMTQ0NzQ6IAoxNDQ3NDogIE5FVF9DT1JF X01BWF9CQUNLTE9HPTYsCjE0NDc0OiAgTkVUX0NPUkVfRkFTVFJPVVRFPTcsCjE0NDc0OiAgTkVU X0NPUkVfTVNHX0NPU1Q9OCwKMTQ0NzQ6ICBORVRfQ09SRV9NU0dfQlVSU1Q9OSwKMTQ0NzQ6ICBO RVRfQ09SRV9PUFRNRU1fTUFYPTEwLAoxNDQ3NDogIE5FVF9DT1JFX0hPVF9MSVNUX0xFTkdUSD0x MSwKMTQ0NzQ6ICBORVRfQ09SRV9ESVZFUlRfVkVSU0lPTj0xMiwKMTQ0NzQ6ICBORVRfQ09SRV9O T19DT05HX1RIUkVTSD0xMywKMTQ0NzQ6ICBORVRfQ09SRV9OT19DT05HPTE0LAoxNDQ3NDogIE5F VF9DT1JFX0xPX0NPTkc9MTUsCjE0NDc0OiAgTkVUX0NPUkVfTU9EX0NPTkc9MTYsCjE0NDc0OiAg TkVUX0NPUkVfREVWX1dFSUdIVD0xNywKMTQ0NzQ6ICBORVRfQ09SRV9TT01BWENPTk49MTgsCjE0 NDc0OiAgTkVUX0NPUkVfQlVER0VUPTE5LAoxNDQ3NDogIE5FVF9DT1JFX0FFVkVOVF9FVElNRT0y MCwKMTQ0NzQ6ICBORVRfQ09SRV9BRVZFTlRfUlNFUVRIPTIxLAoxNDQ3NDogIE5FVF9DT1JFX1dB Uk5JTkdTPTIyLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bQoxNDQ3NDogewoxNDQ3NDogIE5FVF9VTklY X0RFU1RST1lfREVMQVk9MSwKMTQ0NzQ6ICBORVRfVU5JWF9ERUxFVEVfREVMQVk9MiwKMTQ0NzQ6 ICBORVRfVU5JWF9NQVhfREdSQU1fUUxFTj0zLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBlbnVtCjE0NDc0OiB7CjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19NQVg9MSwKMTQ0NzQ6 ICBORVRfTkZfQ09OTlRSQUNLX1RDUF9USU1FT1VUX1NZTl9TRU5UPTIsCjE0NDc0OiAgTkVUX05G X0NPTk5UUkFDS19UQ1BfVElNRU9VVF9TWU5fUkVDVj0zLAoxNDQ3NDogIE5FVF9ORl9DT05OVFJB Q0tfVENQX1RJTUVPVVRfRVNUQUJMSVNIRUQ9NCwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX1RD UF9USU1FT1VUX0ZJTl9XQUlUPTUsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9V VF9DTE9TRV9XQUlUPTYsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9VVF9MQVNU X0FDSz03LAoxNDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfVElNRV9XQUlUPTgs CjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9VVF9DTE9TRT05LAoxNDQ3NDogIE5F VF9ORl9DT05OVFJBQ0tfVURQX1RJTUVPVVQ9MTAsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19V RFBfVElNRU9VVF9TVFJFQU09MTEsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19JQ01QX1RJTUVP VVQ9MTIsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19HRU5FUklDX1RJTUVPVVQ9MTMsCjE0NDc0 OiAgTkVUX05GX0NPTk5UUkFDS19CVUNLRVRTPTE0LAoxNDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tf TE9HX0lOVkFMSUQ9MTUsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9VVF9NQVhf UkVUUkFOUz0xNiwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX1RDUF9MT09TRT0xNywKMTQ0NzQ6 ICBORVRfTkZfQ09OTlRSQUNLX1RDUF9CRV9MSUJFUkFMPTE4LAoxNDQ3NDogIE5FVF9ORl9DT05O VFJBQ0tfVENQX01BWF9SRVRSQU5TPTE5LAoxNDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tfU0NUUF9U SU1FT1VUX0NMT1NFRD0yMCwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9D T09LSUVfV0FJVD0yMSwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9DT09L SUVfRUNIT0VEPTIyLAoxNDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tfU0NUUF9USU1FT1VUX0VTVEFC TElTSEVEPTIzLAoxNDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tfU0NUUF9USU1FT1VUX1NIVVRET1dO X1NFTlQ9MjQsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19TQ1RQX1RJTUVPVVRfU0hVVERPV05f UkVDRD0yNSwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9TSFVURE9XTl9B Q0tfU0VOVD0yNiwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX0NPVU5UPTI3LAoxNDQ3NDogIE5F VF9ORl9DT05OVFJBQ0tfSUNNUFY2X1RJTUVPVVQ9MjgsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFD S19GUkFHNl9USU1FT1VUPTI5LAoxNDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tfRlJBRzZfTE9XX1RI UkVTSD0zMCwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX0ZSQUc2X0hJR0hfVEhSRVNIPTMxLAox NDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tfQ0hFQ0tTVU09MzIsCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIE5FVF9JUFY0X0ZPUldB UkQ9OCwKMTQ0NzQ6ICBORVRfSVBWNF9EWU5BRERSPTksCjE0NDc0OiAKMTQ0NzQ6ICBORVRfSVBW NF9DT05GPTE2LAoxNDQ3NDogIE5FVF9JUFY0X05FSUdIPTE3LAoxNDQ3NDogIE5FVF9JUFY0X1JP VVRFPTE4LAoxNDQ3NDogIE5FVF9JUFY0X0ZJQl9IQVNIPTE5LAoxNDQ3NDogIE5FVF9JUFY0X05F VEZJTFRFUj0yMCwKMTQ0NzQ6IAoxNDQ3NDogIE5FVF9JUFY0X1RDUF9USU1FU1RBTVBTPTMzLAox NDQ3NDogIE5FVF9JUFY0X1RDUF9XSU5ET1dfU0NBTElORz0zNCwKMTQ0NzQ6ICBORVRfSVBWNF9U Q1BfU0FDSz0zNSwKMTQ0NzQ6ICBORVRfSVBWNF9UQ1BfUkVUUkFOU19DT0xMQVBTRT0zNiwKMTQ0 NzQ6ICBORVRfSVBWNF9ERUZBVUxUX1RUTD0zNywKMTQ0NzQ6ICBORVRfSVBWNF9BVVRPQ09ORklH PTM4LAoxNDQ3NDogIE5FVF9JUFY0X05PX1BNVFVfRElTQz0zOSwKMTQ0NzQ6ICBORVRfSVBWNF9U Q1BfU1lOX1JFVFJJRVM9NDAsCjE0NDc0OiAgTkVUX0lQVjRfSVBGUkFHX0hJR0hfVEhSRVNIPTQx LAoxNDQ3NDogIE5FVF9JUFY0X0lQRlJBR19MT1dfVEhSRVNIPTQyLAoxNDQ3NDogIE5FVF9JUFY0 X0lQRlJBR19USU1FPTQzLAoxNDQ3NDogIE5FVF9JUFY0X1RDUF9NQVhfS0FfUFJPQkVTPTQ0LAox NDQ3NDogIE5FVF9JUFY0X1RDUF9LRUVQQUxJVkVfVElNRT00NSwKMTQ0NzQ6ICBORVRfSVBWNF9U Q1BfS0VFUEFMSVZFX1BST0JFUz00NiwKMTQ0NzQ6ICBORVRfSVBWNF9UQ1BfUkVUUklFUzE9NDcs CjE0NDc0OiAgTkVUX0lQVjRfVENQX1JFVFJJRVMyPTQ4LAoxNDQ3NDogIE5FVF9JUFY0X1RDUF9G SU5fVElNRU9VVD00OSwKMTQ0NzQ6ICBORVRfSVBWNF9JUF9NQVNRX0RFQlVHPTUwLAoxNDQ3NDog IE5FVF9UQ1BfU1lOQ09PS0lFUz01MSwKMTQ0NzQ6ICBORVRfVENQX1NURFVSRz01MiwKMTQ0NzQ6 ICBORVRfVENQX1JGQzEzMzc9NTMsCjE0NDc0OiAgTkVUX1RDUF9TWU5fVEFJTERST1A9NTQsCjE0 NDc0OiAgTkVUX1RDUF9NQVhfU1lOX0JBQ0tMT0c9NTUsCjE0NDc0OiAgTkVUX0lQVjRfTE9DQUxf UE9SVF9SQU5HRT01NiwKMTQ0NzQ6ICBORVRfSVBWNF9JQ01QX0VDSE9fSUdOT1JFX0FMTD01NywK MTQ0NzQ6ICBORVRfSVBWNF9JQ01QX0VDSE9fSUdOT1JFX0JST0FEQ0FTVFM9NTgsCjE0NDc0OiAg TkVUX0lQVjRfSUNNUF9TT1VSQ0VRVUVOQ0hfUkFURT01OSwKMTQ0NzQ6ICBORVRfSVBWNF9JQ01Q X0RFU1RVTlJFQUNIX1JBVEU9NjAsCjE0NDc0OiAgTkVUX0lQVjRfSUNNUF9USU1FRVhDRUVEX1JB VEU9NjEsCjE0NDc0OiAgTkVUX0lQVjRfSUNNUF9QQVJBTVBST0JfUkFURT02MiwKMTQ0NzQ6ICBO RVRfSVBWNF9JQ01QX0VDSE9SRVBMWV9SQVRFPTYzLAoxNDQ3NDogIE5FVF9JUFY0X0lDTVBfSUdO T1JFX0JPR1VTX0VSUk9SX1JFU1BPTlNFUz02NCwKMTQ0NzQ6ICBORVRfSVBWNF9JR01QX01BWF9N RU1CRVJTSElQUz02NSwKMTQ0NzQ6ICBORVRfVENQX1RXX1JFQ1lDTEU9NjYsCjE0NDc0OiAgTkVU X0lQVjRfQUxXQVlTX0RFRlJBRz02NywKMTQ0NzQ6ICBORVRfSVBWNF9UQ1BfS0VFUEFMSVZFX0lO VFZMPTY4LAoxNDQ3NDogIE5FVF9JUFY0X0lORVRfUEVFUl9USFJFU0hPTEQ9NjksCjE0NDc0OiAg TkVUX0lQVjRfSU5FVF9QRUVSX01JTlRUTD03MCwKMTQ0NzQ6ICBORVRfSVBWNF9JTkVUX1BFRVJf TUFYVFRMPTcxLAoxNDQ3NDogIE5FVF9JUFY0X0lORVRfUEVFUl9HQ19NSU5USU1FPTcyLAoxNDQ3 NDogIE5FVF9JUFY0X0lORVRfUEVFUl9HQ19NQVhUSU1FPTczLAoxNDQ3NDogIE5FVF9UQ1BfT1JQ SEFOX1JFVFJJRVM9NzQsCjE0NDc0OiAgTkVUX1RDUF9BQk9SVF9PTl9PVkVSRkxPVz03NSwKMTQ0 NzQ6ICBORVRfVENQX1NZTkFDS19SRVRSSUVTPTc2LAoxNDQ3NDogIE5FVF9UQ1BfTUFYX09SUEhB TlM9NzcsCjE0NDc0OiAgTkVUX1RDUF9NQVhfVFdfQlVDS0VUUz03OCwKMTQ0NzQ6ICBORVRfVENQ X0ZBQ0s9NzksCjE0NDc0OiAgTkVUX1RDUF9SRU9SREVSSU5HPTgwLAoxNDQ3NDogIE5FVF9UQ1Bf RUNOPTgxLAoxNDQ3NDogIE5FVF9UQ1BfRFNBQ0s9ODIsCjE0NDc0OiAgTkVUX1RDUF9NRU09ODMs CjE0NDc0OiAgTkVUX1RDUF9XTUVNPTg0LAoxNDQ3NDogIE5FVF9UQ1BfUk1FTT04NSwKMTQ0NzQ6 ICBORVRfVENQX0FQUF9XSU49ODYsCjE0NDc0OiAgTkVUX1RDUF9BRFZfV0lOX1NDQUxFPTg3LAox NDQ3NDogIE5FVF9JUFY0X05PTkxPQ0FMX0JJTkQ9ODgsCjE0NDc0OiAgTkVUX0lQVjRfSUNNUF9S QVRFTElNSVQ9ODksCjE0NDc0OiAgTkVUX0lQVjRfSUNNUF9SQVRFTUFTSz05MCwKMTQ0NzQ6ICBO RVRfVENQX1RXX1JFVVNFPTkxLAoxNDQ3NDogIE5FVF9UQ1BfRlJUTz05MiwKMTQ0NzQ6ICBORVRf VENQX0xPV19MQVRFTkNZPTkzLAoxNDQ3NDogIE5FVF9JUFY0X0lQRlJBR19TRUNSRVRfSU5URVJW QUw9OTQsCjE0NDc0OiAgTkVUX0lQVjRfSUdNUF9NQVhfTVNGPTk2LAoxNDQ3NDogIE5FVF9UQ1Bf Tk9fTUVUUklDU19TQVZFPTk3LAoxNDQ3NDogIE5FVF9UQ1BfREVGQVVMVF9XSU5fU0NBTEU9MTA1 LAoxNDQ3NDogIE5FVF9UQ1BfTU9ERVJBVEVfUkNWQlVGPTEwNiwKMTQ0NzQ6ICBORVRfVENQX1RT T19XSU5fRElWSVNPUj0xMDcsCjE0NDc0OiAgTkVUX1RDUF9CSUNfQkVUQT0xMDgsCjE0NDc0OiAg TkVUX0lQVjRfSUNNUF9FUlJPUlNfVVNFX0lOQk9VTkRfSUZBRERSPTEwOSwKMTQ0NzQ6ICBORVRf VENQX0NPTkdfQ09OVFJPTD0xMTAsCjE0NDc0OiAgTkVUX1RDUF9BQkM9MTExLAoxNDQ3NDogIE5F VF9JUFY0X0lQRlJBR19NQVhfRElTVD0xMTIsCjE0NDc0OiAgIE5FVF9UQ1BfTVRVX1BST0JJTkc9 MTEzLAoxNDQ3NDogIE5FVF9UQ1BfQkFTRV9NU1M9MTE0LAoxNDQ3NDogIE5FVF9JUFY0X1RDUF9X T1JLQVJPVU5EX1NJR05FRF9XSU5ET1dTPTExNSwKMTQ0NzQ6ICBORVRfVENQX0RNQV9DT1BZQlJF QUs9MTE2LAoxNDQ3NDogIE5FVF9UQ1BfU0xPV19TVEFSVF9BRlRFUl9JRExFPTExNywKMTQ0NzQ6 ICBORVRfQ0lQU09WNF9DQUNIRV9FTkFCTEU9MTE4LAoxNDQ3NDogIE5FVF9DSVBTT1Y0X0NBQ0hF X0JVQ0tFVF9TSVpFPTExOSwKMTQ0NzQ6ICBORVRfQ0lQU09WNF9SQk1fT1BURk1UPTEyMCwKMTQ0 NzQ6ICBORVRfQ0lQU09WNF9SQk1fU1RSSUNUVkFMSUQ9MTIxLAoxNDQ3NDogIE5FVF9UQ1BfQVZB SUxfQ09OR19DT05UUk9MPTEyMiwKMTQ0NzQ6ICBORVRfVENQX0FMTE9XRURfQ09OR19DT05UUk9M PTEyMywKMTQ0NzQ6ICBORVRfVENQX01BWF9TU1RIUkVTSD0xMjQsCjE0NDc0OiAgTkVUX1RDUF9G UlRPX1JFU1BPTlNFPTEyNSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDog IE5FVF9JUFY0X1JPVVRFX0ZMVVNIPTEsCjE0NDc0OiAgTkVUX0lQVjRfUk9VVEVfTUlOX0RFTEFZ PTIsCjE0NDc0OiAgTkVUX0lQVjRfUk9VVEVfTUFYX0RFTEFZPTMsCjE0NDc0OiAgTkVUX0lQVjRf Uk9VVEVfR0NfVEhSRVNIPTQsCjE0NDc0OiAgTkVUX0lQVjRfUk9VVEVfTUFYX1NJWkU9NSwKMTQ0 NzQ6ICBORVRfSVBWNF9ST1VURV9HQ19NSU5fSU5URVJWQUw9NiwKMTQ0NzQ6ICBORVRfSVBWNF9S T1VURV9HQ19USU1FT1VUPTcsCjE0NDc0OiAgTkVUX0lQVjRfUk9VVEVfR0NfSU5URVJWQUw9OCwK MTQ0NzQ6ICBORVRfSVBWNF9ST1VURV9SRURJUkVDVF9MT0FEPTksCjE0NDc0OiAgTkVUX0lQVjRf Uk9VVEVfUkVESVJFQ1RfTlVNQkVSPTEwLAoxNDQ3NDogIE5FVF9JUFY0X1JPVVRFX1JFRElSRUNU X1NJTEVOQ0U9MTEsCjE0NDc0OiAgTkVUX0lQVjRfUk9VVEVfRVJST1JfQ09TVD0xMiwKMTQ0NzQ6 ICBORVRfSVBWNF9ST1VURV9FUlJPUl9CVVJTVD0xMywKMTQ0NzQ6ICBORVRfSVBWNF9ST1VURV9H Q19FTEFTVElDSVRZPTE0LAoxNDQ3NDogIE5FVF9JUFY0X1JPVVRFX01UVV9FWFBJUkVTPTE1LAox NDQ3NDogIE5FVF9JUFY0X1JPVVRFX01JTl9QTVRVPTE2LAoxNDQ3NDogIE5FVF9JUFY0X1JPVVRF X01JTl9BRFZNU1M9MTcsCjE0NDc0OiAgTkVUX0lQVjRfUk9VVEVfU0VDUkVUX0lOVEVSVkFMPTE4 LAoxNDQ3NDogIE5FVF9JUFY0X1JPVVRFX0dDX01JTl9JTlRFUlZBTF9NUz0xOSwKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6ICBORVRfUFJPVE9fQ09ORl9BTEw9 LTIsCjE0NDc0OiAgTkVUX1BST1RPX0NPTkZfREVGQVVMVD0tMwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6ICBORVRfSVBWNF9DT05G X0ZPUldBUkRJTkc9MSwKMTQ0NzQ6ICBORVRfSVBWNF9DT05GX01DX0ZPUldBUkRJTkc9MiwKMTQ0 NzQ6ICBORVRfSVBWNF9DT05GX1BST1hZX0FSUD0zLAoxNDQ3NDogIE5FVF9JUFY0X0NPTkZfQUND RVBUX1JFRElSRUNUUz00LAoxNDQ3NDogIE5FVF9JUFY0X0NPTkZfU0VDVVJFX1JFRElSRUNUUz01 LAoxNDQ3NDogIE5FVF9JUFY0X0NPTkZfU0VORF9SRURJUkVDVFM9NiwKMTQ0NzQ6ICBORVRfSVBW NF9DT05GX1NIQVJFRF9NRURJQT03LAoxNDQ3NDogIE5FVF9JUFY0X0NPTkZfUlBfRklMVEVSPTgs CjE0NDc0OiAgTkVUX0lQVjRfQ09ORl9BQ0NFUFRfU09VUkNFX1JPVVRFPTksCjE0NDc0OiAgTkVU X0lQVjRfQ09ORl9CT09UUF9SRUxBWT0xMCwKMTQ0NzQ6ICBORVRfSVBWNF9DT05GX0xPR19NQVJU SUFOUz0xMSwKMTQ0NzQ6ICBORVRfSVBWNF9DT05GX1RBRz0xMiwKMTQ0NzQ6ICBORVRfSVBWNF9D T05GX0FSUEZJTFRFUj0xMywKMTQ0NzQ6ICBORVRfSVBWNF9DT05GX01FRElVTV9JRD0xNCwKMTQ0 NzQ6ICBORVRfSVBWNF9DT05GX05PWEZSTT0xNSwKMTQ0NzQ6ICBORVRfSVBWNF9DT05GX05PUE9M SUNZPTE2LAoxNDQ3NDogIE5FVF9JUFY0X0NPTkZfRk9SQ0VfSUdNUF9WRVJTSU9OPTE3LAoxNDQ3 NDogIE5FVF9JUFY0X0NPTkZfQVJQX0FOTk9VTkNFPTE4LAoxNDQ3NDogIE5FVF9JUFY0X0NPTkZf QVJQX0lHTk9SRT0xOSwKMTQ0NzQ6ICBORVRfSVBWNF9DT05GX1BST01PVEVfU0VDT05EQVJJRVM9 MjAsCjE0NDc0OiAgTkVUX0lQVjRfQ09ORl9BUlBfQUNDRVBUPTIxLAoxNDQ3NDogIE5FVF9JUFY0 X0NPTkZfQVJQX05PVElGWT0yMiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51 bQoxNDQ3NDogewoxNDQ3NDogIE5FVF9JUFY0X05GX0NPTk5UUkFDS19NQVg9MSwKMTQ0NzQ6ICBO RVRfSVBWNF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfU1lOX1NFTlQ9MiwKMTQ0NzQ6ICBORVRf SVBWNF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfU1lOX1JFQ1Y9MywKMTQ0NzQ6ICBORVRfSVBW NF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfRVNUQUJMSVNIRUQ9NCwKMTQ0NzQ6ICBORVRfSVBW NF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfRklOX1dBSVQ9NSwKMTQ0NzQ6ICBORVRfSVBWNF9O Rl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfQ0xPU0VfV0FJVD02LAoxNDQ3NDogIE5FVF9JUFY0X05G X0NPTk5UUkFDS19UQ1BfVElNRU9VVF9MQVNUX0FDSz03LAoxNDQ3NDogIE5FVF9JUFY0X05GX0NP Tk5UUkFDS19UQ1BfVElNRU9VVF9USU1FX1dBSVQ9OCwKMTQ0NzQ6ICBORVRfSVBWNF9ORl9DT05O VFJBQ0tfVENQX1RJTUVPVVRfQ0xPU0U9OSwKMTQ0NzQ6ICBORVRfSVBWNF9ORl9DT05OVFJBQ0tf VURQX1RJTUVPVVQ9MTAsCjE0NDc0OiAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1VEUF9USU1FT1VU X1NUUkVBTT0xMSwKMTQ0NzQ6ICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfSUNNUF9USU1FT1VUPTEy LAoxNDQ3NDogIE5FVF9JUFY0X05GX0NPTk5UUkFDS19HRU5FUklDX1RJTUVPVVQ9MTMsCjE0NDc0 OiAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX0JVQ0tFVFM9MTQsCjE0NDc0OiAgTkVUX0lQVjRfTkZf Q09OTlRSQUNLX0xPR19JTlZBTElEPTE1LAoxNDQ3NDogIE5FVF9JUFY0X05GX0NPTk5UUkFDS19U Q1BfVElNRU9VVF9NQVhfUkVUUkFOUz0xNiwKMTQ0NzQ6ICBORVRfSVBWNF9ORl9DT05OVFJBQ0tf VENQX0xPT1NFPTE3LAoxNDQ3NDogIE5FVF9JUFY0X05GX0NPTk5UUkFDS19UQ1BfQkVfTElCRVJB TD0xOCwKMTQ0NzQ6ICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfVENQX01BWF9SRVRSQU5TPTE5LAox NDQ3NDogICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfU0NUUF9USU1FT1VUX0NMT1NFRD0yMCwKMTQ0 NzQ6ICAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9DT09LSUVfV0FJVD0yMSwK MTQ0NzQ6ICAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9DT09LSUVfRUNIT0VE PTIyLAoxNDQ3NDogICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfU0NUUF9USU1FT1VUX0VTVEFCTElT SEVEPTIzLAoxNDQ3NDogICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfU0NUUF9USU1FT1VUX1NIVVRE T1dOX1NFTlQ9MjQsCjE0NDc0OiAgIE5FVF9JUFY0X05GX0NPTk5UUkFDS19TQ1RQX1RJTUVPVVRf U0hVVERPV05fUkVDRD0yNSwKMTQ0NzQ6ICAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1NDVFBfVElN RU9VVF9TSFVURE9XTl9BQ0tfU0VOVD0yNiwKMTQ0NzQ6ICBORVRfSVBWNF9ORl9DT05OVFJBQ0tf Q09VTlQ9MjcsCjE0NDc0OiAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX0NIRUNLU1VNPTI4LAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBORVRfSVBWNl9DT05G PTE2LAoxNDQ3NDogIE5FVF9JUFY2X05FSUdIPTE3LAoxNDQ3NDogIE5FVF9JUFY2X1JPVVRFPTE4 LAoxNDQ3NDogIE5FVF9JUFY2X0lDTVA9MTksCjE0NDc0OiAgTkVUX0lQVjZfQklORFY2T05MWT0y MCwKMTQ0NzQ6ICBORVRfSVBWNl9JUDZGUkFHX0hJR0hfVEhSRVNIPTIxLAoxNDQ3NDogIE5FVF9J UFY2X0lQNkZSQUdfTE9XX1RIUkVTSD0yMiwKMTQ0NzQ6ICBORVRfSVBWNl9JUDZGUkFHX1RJTUU9 MjMsCjE0NDc0OiAgTkVUX0lQVjZfSVA2RlJBR19TRUNSRVRfSU5URVJWQUw9MjQsCjE0NDc0OiAg TkVUX0lQVjZfTUxEX01BWF9NU0Y9MjUsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHsK MTQ0NzQ6ICBORVRfSVBWNl9ST1VURV9GTFVTSD0xLAoxNDQ3NDogIE5FVF9JUFY2X1JPVVRFX0dD X1RIUkVTSD0yLAoxNDQ3NDogIE5FVF9JUFY2X1JPVVRFX01BWF9TSVpFPTMsCjE0NDc0OiAgTkVU X0lQVjZfUk9VVEVfR0NfTUlOX0lOVEVSVkFMPTQsCjE0NDc0OiAgTkVUX0lQVjZfUk9VVEVfR0Nf VElNRU9VVD01LAoxNDQ3NDogIE5FVF9JUFY2X1JPVVRFX0dDX0lOVEVSVkFMPTYsCjE0NDc0OiAg TkVUX0lQVjZfUk9VVEVfR0NfRUxBU1RJQ0lUWT03LAoxNDQ3NDogIE5FVF9JUFY2X1JPVVRFX01U VV9FWFBJUkVTPTgsCjE0NDc0OiAgTkVUX0lQVjZfUk9VVEVfTUlOX0FEVk1TUz05LAoxNDQ3NDog IE5FVF9JUFY2X1JPVVRFX0dDX01JTl9JTlRFUlZBTF9NUz0xMAoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogZW51bSB7CjE0NDc0OiAgTkVUX0lQVjZfRk9SV0FSRElORz0xLAoxNDQ3NDogIE5FVF9J UFY2X0hPUF9MSU1JVD0yLAoxNDQ3NDogIE5FVF9JUFY2X01UVT0zLAoxNDQ3NDogIE5FVF9JUFY2 X0FDQ0VQVF9SQT00LAoxNDQ3NDogIE5FVF9JUFY2X0FDQ0VQVF9SRURJUkVDVFM9NSwKMTQ0NzQ6 ICBORVRfSVBWNl9BVVRPQ09ORj02LAoxNDQ3NDogIE5FVF9JUFY2X0RBRF9UUkFOU01JVFM9NywK MTQ0NzQ6ICBORVRfSVBWNl9SVFJfU09MSUNJVFM9OCwKMTQ0NzQ6ICBORVRfSVBWNl9SVFJfU09M SUNJVF9JTlRFUlZBTD05LAoxNDQ3NDogIE5FVF9JUFY2X1JUUl9TT0xJQ0lUX0RFTEFZPTEwLAox NDQ3NDogIE5FVF9JUFY2X1VTRV9URU1QQUREUj0xMSwKMTQ0NzQ6ICBORVRfSVBWNl9URU1QX1ZB TElEX0xGVD0xMiwKMTQ0NzQ6ICBORVRfSVBWNl9URU1QX1BSRUZFUkVEX0xGVD0xMywKMTQ0NzQ6 ICBORVRfSVBWNl9SRUdFTl9NQVhfUkVUUlk9MTQsCjE0NDc0OiAgTkVUX0lQVjZfTUFYX0RFU1lO Q19GQUNUT1I9MTUsCjE0NDc0OiAgTkVUX0lQVjZfTUFYX0FERFJFU1NFUz0xNiwKMTQ0NzQ6ICBO RVRfSVBWNl9GT1JDRV9NTERfVkVSU0lPTj0xNywKMTQ0NzQ6ICBORVRfSVBWNl9BQ0NFUFRfUkFf REVGUlRSPTE4LAoxNDQ3NDogIE5FVF9JUFY2X0FDQ0VQVF9SQV9QSU5GTz0xOSwKMTQ0NzQ6ICBO RVRfSVBWNl9BQ0NFUFRfUkFfUlRSX1BSRUY9MjAsCjE0NDc0OiAgTkVUX0lQVjZfUlRSX1BST0JF X0lOVEVSVkFMPTIxLAoxNDQ3NDogIE5FVF9JUFY2X0FDQ0VQVF9SQV9SVF9JTkZPX01BWF9QTEVO PTIyLAoxNDQ3NDogIE5FVF9JUFY2X1BST1hZX05EUD0yMywKMTQ0NzQ6ICBORVRfSVBWNl9BQ0NF UFRfU09VUkNFX1JPVVRFPTI1LAoxNDQ3NDogIE5FVF9JUFY2X0FDQ0VQVF9SQV9GUk9NX0xPQ0FM PTI2LAoxNDQ3NDogIE5FVF9JUFY2X0FDQ0VQVF9SQV9SVF9JTkZPX01JTl9QTEVOPTI3LAoxNDQ3 NDogIF9fTkVUX0lQVjZfTUFYCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0g ewoxNDQ3NDogIE5FVF9JUFY2X0lDTVBfUkFURUxJTUlUID0gMSwKMTQ0NzQ6ICBORVRfSVBWNl9J Q01QX0VDSE9fSUdOT1JFX0FMTCA9IDIKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZW51bSB7CjE0NDc0OiAgTkVUX05FSUdIX01DQVNUX1NPTElDSVQ9MSwKMTQ0NzQ6ICBORVRfTkVJ R0hfVUNBU1RfU09MSUNJVD0yLAoxNDQ3NDogIE5FVF9ORUlHSF9BUFBfU09MSUNJVD0zLAoxNDQ3 NDogIE5FVF9ORUlHSF9SRVRSQU5TX1RJTUU9NCwKMTQ0NzQ6ICBORVRfTkVJR0hfUkVBQ0hBQkxF X1RJTUU9NSwKMTQ0NzQ6ICBORVRfTkVJR0hfREVMQVlfUFJPQkVfVElNRT02LAoxNDQ3NDogIE5F VF9ORUlHSF9HQ19TVEFMRV9USU1FPTcsCjE0NDc0OiAgTkVUX05FSUdIX1VOUkVTX1FMRU49OCwK MTQ0NzQ6ICBORVRfTkVJR0hfUFJPWFlfUUxFTj05LAoxNDQ3NDogIE5FVF9ORUlHSF9BTllDQVNU X0RFTEFZPTEwLAoxNDQ3NDogIE5FVF9ORUlHSF9QUk9YWV9ERUxBWT0xMSwKMTQ0NzQ6ICBORVRf TkVJR0hfTE9DS1RJTUU9MTIsCjE0NDc0OiAgTkVUX05FSUdIX0dDX0lOVEVSVkFMPTEzLAoxNDQ3 NDogIE5FVF9ORUlHSF9HQ19USFJFU0gxPTE0LAoxNDQ3NDogIE5FVF9ORUlHSF9HQ19USFJFU0gy PTE1LAoxNDQ3NDogIE5FVF9ORUlHSF9HQ19USFJFU0gzPTE2LAoxNDQ3NDogIE5FVF9ORUlHSF9S RVRSQU5TX1RJTUVfTVM9MTcsCjE0NDc0OiAgTkVUX05FSUdIX1JFQUNIQUJMRV9USU1FX01TPTE4 LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBORVRfREND UF9ERUZBVUxUPTEsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3 NDogIE5FVF9JUFhfUFBST1BfQlJPQURDQVNUSU5HPTEsCjE0NDc0OiAgTkVUX0lQWF9GT1JXQVJE SU5HPTIKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgTkVU X0xMQzI9MSwKMTQ0NzQ6ICBORVRfTExDX1NUQVRJT049MiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgTkVUX0xMQzJfVElNRU9VVD0xLAoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBORVRfTExDX1NUQVRJT05fQUNL X1RJTUVPVVQ9MSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0 OiAgTkVUX0xMQzJfQUNLX1RJTUVPVVQ9MSwKMTQ0NzQ6ICBORVRfTExDMl9QX1RJTUVPVVQ9MiwK MTQ0NzQ6ICBORVRfTExDMl9SRUpfVElNRU9VVD0zLAoxNDQ3NDogIE5FVF9MTEMyX0JVU1lfVElN RU9VVD00LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBO RVRfQVRBTEtfQUFSUF9FWFBJUllfVElNRT0xLAoxNDQ3NDogIE5FVF9BVEFMS19BQVJQX1RJQ0tf VElNRT0yLAoxNDQ3NDogIE5FVF9BVEFMS19BQVJQX1JFVFJBTlNNSVRfTElNSVQ9MywKMTQ0NzQ6 ICBORVRfQVRBTEtfQUFSUF9SRVNPTFZFX1RJTUU9NAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIE5FVF9ORVRST01fREVGQVVMVF9QQVRIX1FV QUxJVFk9MSwKMTQ0NzQ6ICBORVRfTkVUUk9NX09CU09MRVNDRU5DRV9DT1VOVF9JTklUSUFMSVNF Uj0yLAoxNDQ3NDogIE5FVF9ORVRST01fTkVUV09SS19UVExfSU5JVElBTElTRVI9MywKMTQ0NzQ6 ICBORVRfTkVUUk9NX1RSQU5TUE9SVF9USU1FT1VUPTQsCjE0NDc0OiAgTkVUX05FVFJPTV9UUkFO U1BPUlRfTUFYSU1VTV9UUklFUz01LAoxNDQ3NDogIE5FVF9ORVRST01fVFJBTlNQT1JUX0FDS05P V0xFREdFX0RFTEFZPTYsCjE0NDc0OiAgTkVUX05FVFJPTV9UUkFOU1BPUlRfQlVTWV9ERUxBWT03 LAoxNDQ3NDogIE5FVF9ORVRST01fVFJBTlNQT1JUX1JFUVVFU1RFRF9XSU5ET1dfU0laRT04LAox NDQ3NDogIE5FVF9ORVRST01fVFJBTlNQT1JUX05PX0FDVElWSVRZX1RJTUVPVVQ9OSwKMTQ0NzQ6 ICBORVRfTkVUUk9NX1JPVVRJTkdfQ09OVFJPTD0xMCwKMTQ0NzQ6ICBORVRfTkVUUk9NX0xJTktf RkFJTFNfQ09VTlQ9MTEsCjE0NDc0OiAgTkVUX05FVFJPTV9SRVNFVD0xMgoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBORVRfQVgyNV9JUF9ERUZBVUxUX01P REU9MSwKMTQ0NzQ6ICBORVRfQVgyNV9ERUZBVUxUX01PREU9MiwKMTQ0NzQ6ICBORVRfQVgyNV9C QUNLT0ZGX1RZUEU9MywKMTQ0NzQ6ICBORVRfQVgyNV9DT05ORUNUX01PREU9NCwKMTQ0NzQ6ICBO RVRfQVgyNV9TVEFOREFSRF9XSU5ET1c9NSwKMTQ0NzQ6ICBORVRfQVgyNV9FWFRFTkRFRF9XSU5E T1c9NiwKMTQ0NzQ6ICBORVRfQVgyNV9UMV9USU1FT1VUPTcsCjE0NDc0OiAgTkVUX0FYMjVfVDJf VElNRU9VVD04LAoxNDQ3NDogIE5FVF9BWDI1X1QzX1RJTUVPVVQ9OSwKMTQ0NzQ6ICBORVRfQVgy NV9JRExFX1RJTUVPVVQ9MTAsCjE0NDc0OiAgTkVUX0FYMjVfTjI9MTEsCjE0NDc0OiAgTkVUX0FY MjVfUEFDTEVOPTEyLAoxNDQ3NDogIE5FVF9BWDI1X1BST1RPQ09MPTEzLAoxNDQ3NDogIE5FVF9B WDI1X0RBTUFfU0xBVkVfVElNRU9VVD0xNAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBlbnVtIHsKMTQ0NzQ6ICBORVRfUk9TRV9SRVNUQVJUX1JFUVVFU1RfVElNRU9VVD0xLAoxNDQ3 NDogIE5FVF9ST1NFX0NBTExfUkVRVUVTVF9USU1FT1VUPTIsCjE0NDc0OiAgTkVUX1JPU0VfUkVT RVRfUkVRVUVTVF9USU1FT1VUPTMsCjE0NDc0OiAgTkVUX1JPU0VfQ0xFQVJfUkVRVUVTVF9USU1F T1VUPTQsCjE0NDc0OiAgTkVUX1JPU0VfQUNLX0hPTERfQkFDS19USU1FT1VUPTUsCjE0NDc0OiAg TkVUX1JPU0VfUk9VVElOR19DT05UUk9MPTYsCjE0NDc0OiAgTkVUX1JPU0VfTElOS19GQUlMX1RJ TUVPVVQ9NywKMTQ0NzQ6ICBORVRfUk9TRV9NQVhfVkNTPTgsCjE0NDc0OiAgTkVUX1JPU0VfV0lO RE9XX1NJWkU9OSwKMTQ0NzQ6ICBORVRfUk9TRV9OT19BQ1RJVklUWV9USU1FT1VUPTEwCjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIE5FVF9YMjVfUkVTVEFS VF9SRVFVRVNUX1RJTUVPVVQ9MSwKMTQ0NzQ6ICBORVRfWDI1X0NBTExfUkVRVUVTVF9USU1FT1VU PTIsCjE0NDc0OiAgTkVUX1gyNV9SRVNFVF9SRVFVRVNUX1RJTUVPVVQ9MywKMTQ0NzQ6ICBORVRf WDI1X0NMRUFSX1JFUVVFU1RfVElNRU9VVD00LAoxNDQ3NDogIE5FVF9YMjVfQUNLX0hPTERfQkFD S19USU1FT1VUPTUsCjE0NDc0OiAgTkVUX1gyNV9GT1JXQVJEPTYKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogZW51bQoxNDQ3NDogewoxNDQ3NDogIE5FVF9UUl9SSUZfVElNRU9VVD0x CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIE5FVF9ERUNO RVRfTk9ERV9UWVBFID0gMSwKMTQ0NzQ6ICBORVRfREVDTkVUX05PREVfQUREUkVTUyA9IDIsCjE0 NDc0OiAgTkVUX0RFQ05FVF9OT0RFX05BTUUgPSAzLAoxNDQ3NDogIE5FVF9ERUNORVRfREVGQVVM VF9ERVZJQ0UgPSA0LAoxNDQ3NDogIE5FVF9ERUNORVRfVElNRV9XQUlUID0gNSwKMTQ0NzQ6ICBO RVRfREVDTkVUX0ROX0NPVU5UID0gNiwKMTQ0NzQ6ICBORVRfREVDTkVUX0RJX0NPVU5UID0gNywK MTQ0NzQ6ICBORVRfREVDTkVUX0RSX0NPVU5UID0gOCwKMTQ0NzQ6ICBORVRfREVDTkVUX0RTVF9H Q19JTlRFUlZBTCA9IDksCjE0NDc0OiAgTkVUX0RFQ05FVF9DT05GID0gMTAsCjE0NDc0OiAgTkVU X0RFQ05FVF9OT19GQ19NQVhfQ1dORCA9IDExLAoxNDQ3NDogIE5FVF9ERUNORVRfTUVNID0gMTIs CjE0NDc0OiAgTkVUX0RFQ05FVF9STUVNID0gMTMsCjE0NDc0OiAgTkVUX0RFQ05FVF9XTUVNID0g MTQsCjE0NDc0OiAgTkVUX0RFQ05FVF9ERUJVR19MRVZFTCA9IDI1NQoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBORVRfREVDTkVUX0NPTkZfTE9PUEJBQ0sg PSAtMiwKMTQ0NzQ6ICBORVRfREVDTkVUX0NPTkZfRERDTVAgPSAtMywKMTQ0NzQ6ICBORVRfREVD TkVUX0NPTkZfUFBQID0gLTQsCjE0NDc0OiAgTkVUX0RFQ05FVF9DT05GX1gyNSA9IC01LAoxNDQ3 NDogIE5FVF9ERUNORVRfQ09ORl9HUkUgPSAtNiwKMTQ0NzQ6ICBORVRfREVDTkVUX0NPTkZfRVRI RVIgPSAtNwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZW51bSB7CjE0NDc0OiAgTkVUX0RFQ05FVF9DT05GX0RFVl9QUklPUklUWSA9IDEsCjE0NDc0OiAg TkVUX0RFQ05FVF9DT05GX0RFVl9UMSA9IDIsCjE0NDc0OiAgTkVUX0RFQ05FVF9DT05GX0RFVl9U MiA9IDMsCjE0NDc0OiAgTkVUX0RFQ05FVF9DT05GX0RFVl9UMyA9IDQsCjE0NDc0OiAgTkVUX0RF Q05FVF9DT05GX0RFVl9GT1JXQVJESU5HID0gNSwKMTQ0NzQ6ICBORVRfREVDTkVUX0NPTkZfREVW X0JMS1NJWkUgPSA2LAoxNDQ3NDogIE5FVF9ERUNORVRfQ09ORl9ERVZfU1RBVEUgPSA3CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIE5FVF9TQ1RQX1JUT19J TklUSUFMID0gMSwKMTQ0NzQ6ICBORVRfU0NUUF9SVE9fTUlOID0gMiwKMTQ0NzQ6ICBORVRfU0NU UF9SVE9fTUFYID0gMywKMTQ0NzQ6ICBORVRfU0NUUF9SVE9fQUxQSEEgPSA0LAoxNDQ3NDogIE5F VF9TQ1RQX1JUT19CRVRBID0gNSwKMTQ0NzQ6ICBORVRfU0NUUF9WQUxJRF9DT09LSUVfTElGRSA9 IDYsCjE0NDc0OiAgTkVUX1NDVFBfQVNTT0NJQVRJT05fTUFYX1JFVFJBTlMgPSA3LAoxNDQ3NDog IE5FVF9TQ1RQX1BBVEhfTUFYX1JFVFJBTlMgPSA4LAoxNDQ3NDogIE5FVF9TQ1RQX01BWF9JTklU X1JFVFJBTlNNSVRTID0gOSwKMTQ0NzQ6ICBORVRfU0NUUF9IQl9JTlRFUlZBTCA9IDEwLAoxNDQ3 NDogIE5FVF9TQ1RQX1BSRVNFUlZFX0VOQUJMRSA9IDExLAoxNDQ3NDogIE5FVF9TQ1RQX01BWF9C VVJTVCA9IDEyLAoxNDQ3NDogIE5FVF9TQ1RQX0FERElQX0VOQUJMRSA9IDEzLAoxNDQ3NDogIE5F VF9TQ1RQX1BSU0NUUF9FTkFCTEUgPSAxNCwKMTQ0NzQ6ICBORVRfU0NUUF9TTkRCVUZfUE9MSUNZ ID0gMTUsCjE0NDc0OiAgTkVUX1NDVFBfU0FDS19USU1FT1VUID0gMTYsCjE0NDc0OiAgTkVUX1ND VFBfUkNWQlVGX1BPTElDWSA9IDE3LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl bnVtIHsKMTQ0NzQ6ICBORVRfQlJJREdFX05GX0NBTExfQVJQVEFCTEVTID0gMSwKMTQ0NzQ6ICBO RVRfQlJJREdFX05GX0NBTExfSVBUQUJMRVMgPSAyLAoxNDQ3NDogIE5FVF9CUklER0VfTkZfQ0FM TF9JUDZUQUJMRVMgPSAzLAoxNDQ3NDogIE5FVF9CUklER0VfTkZfRklMVEVSX1ZMQU5fVEFHR0VE ID0gNCwKMTQ0NzQ6ICBORVRfQlJJREdFX05GX0ZJTFRFUl9QUFBPRV9UQUdHRUQgPSA1LAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6 ICBGU19OUklOT0RFPTEsCjE0NDc0OiAgRlNfU1RBVElOT0RFPTIsCjE0NDc0OiAgRlNfTUFYSU5P REU9MywKMTQ0NzQ6ICBGU19OUkRRVU9UPTQsCjE0NDc0OiAgRlNfTUFYRFFVT1Q9NSwKMTQ0NzQ6 ICBGU19OUkZJTEU9NiwKMTQ0NzQ6ICBGU19NQVhGSUxFPTcsCjE0NDc0OiAgRlNfREVOVFJZPTgs CjE0NDc0OiAgRlNfTlJTVVBFUj05LAoxNDQ3NDogIEZTX01BWFNVUEVSPTEwLAoxNDQ3NDogIEZT X09WRVJGTE9XVUlEPTExLAoxNDQ3NDogIEZTX09WRVJGTE9XR0lEPTEyLAoxNDQ3NDogIEZTX0xF QVNFUz0xMywKMTQ0NzQ6ICBGU19ESVJfTk9USUZZPTE0LAoxNDQ3NDogIEZTX0xFQVNFX1RJTUU9 MTUsCjE0NDc0OiAgRlNfRFFTVEFUUz0xNiwKMTQ0NzQ6ICBGU19YRlM9MTcsCjE0NDc0OiAgRlNf QUlPX05SPTE4LAoxNDQ3NDogIEZTX0FJT19NQVhfTlI9MTksCjE0NDc0OiAgRlNfSU5PVElGWT0y MCwKMTQ0NzQ6ICBGU19PQ0ZTMj05ODgsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGVudW0gewoxNDQ3NDogIEZTX0RRX0xPT0tVUFMgPSAxLAoxNDQ3NDogIEZTX0RRX0RST1BTID0g MiwKMTQ0NzQ6ICBGU19EUV9SRUFEUyA9IDMsCjE0NDc0OiAgRlNfRFFfV1JJVEVTID0gNCwKMTQ0 NzQ6ICBGU19EUV9DQUNIRV9ISVRTID0gNSwKMTQ0NzQ6ICBGU19EUV9BTExPQ0FURUQgPSA2LAox NDQ3NDogIEZTX0RRX0ZSRUUgPSA3LAoxNDQ3NDogIEZTX0RRX1NZTkNTID0gOCwKMTQ0NzQ6ICBG U19EUV9XQVJOSU5HUyA9IDksCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBERVZfQ0RST009MSwKMTQ0NzQ6ICBERVZfSFdNT049 MiwKMTQ0NzQ6ICBERVZfUEFSUE9SVD0zLAoxNDQ3NDogIERFVl9SQUlEPTQsCjE0NDc0OiAgREVW X01BQ19ISUQ9NSwKMTQ0NzQ6ICBERVZfU0NTST02LAoxNDQ3NDogIERFVl9JUE1JPTcsCjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERFVl9DRFJPTV9JTkZP PTEsCjE0NDc0OiAgREVWX0NEUk9NX0FVVE9DTE9TRT0yLAoxNDQ3NDogIERFVl9DRFJPTV9BVVRP RUpFQ1Q9MywKMTQ0NzQ6ICBERVZfQ0RST01fREVCVUc9NCwKMTQ0NzQ6ICBERVZfQ0RST01fTE9D Sz01LAoxNDQ3NDogIERFVl9DRFJPTV9DSEVDS19NRURJQT02CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERFVl9QQVJQT1JUX0RFRkFVTFQ9LTMKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgREVWX1JBSURfU1BFRURf TElNSVRfTUlOPTEsCjE0NDc0OiAgREVWX1JBSURfU1BFRURfTElNSVRfTUFYPTIKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgREVWX1BBUlBPUlRfREVGQVVM VF9USU1FU0xJQ0U9MSwKMTQ0NzQ6ICBERVZfUEFSUE9SVF9ERUZBVUxUX1NQSU5USU1FPTIKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgREVWX1BBUlBPUlRf U1BJTlRJTUU9MSwKMTQ0NzQ6ICBERVZfUEFSUE9SVF9CQVNFX0FERFI9MiwKMTQ0NzQ6ICBERVZf UEFSUE9SVF9JUlE9MywKMTQ0NzQ6ICBERVZfUEFSUE9SVF9ETUE9NCwKMTQ0NzQ6ICBERVZfUEFS UE9SVF9NT0RFUz01LAoxNDQ3NDogIERFVl9QQVJQT1JUX0RFVklDRVM9NiwKMTQ0NzQ6ICBERVZf UEFSUE9SVF9BVVRPUFJPQkU9MTYKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51 bSB7CjE0NDc0OiAgREVWX1BBUlBPUlRfREVWSUNFU19BQ1RJVkU9LTMsCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERFVl9QQVJQT1JUX0RFVklDRV9USU1F U0xJQ0U9MSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAg REVWX01BQ19ISURfS0VZQk9BUkRfU0VORFNfTElOVVhfS0VZQ09ERVM9MSwKMTQ0NzQ6ICBERVZf TUFDX0hJRF9LRVlCT0FSRF9MT0NLX0tFWUNPREVTPTIsCjE0NDc0OiAgREVWX01BQ19ISURfTU9V U0VfQlVUVE9OX0VNVUxBVElPTj0zLAoxNDQ3NDogIERFVl9NQUNfSElEX01PVVNFX0JVVFRPTjJf S0VZQ09ERT00LAoxNDQ3NDogIERFVl9NQUNfSElEX01PVVNFX0JVVFRPTjNfS0VZQ09ERT01LAox NDQ3NDogIERFVl9NQUNfSElEX0FEQl9NT1VTRV9TRU5EU19LRVlDT0RFUz02CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERFVl9TQ1NJX0xPR0dJTkdfTEVW RUw9MSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgREVW X0lQTUlfUE9XRVJPRkZfUE9XRVJDWUNMRT0xLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBlbnVtCjE0NDc0OiB7CjE0NDc0OiAgQUJJX0RFRkhBTkRMRVJfQ09GRj0xLAoxNDQ3NDog IEFCSV9ERUZIQU5ETEVSX0VMRj0yLAoxNDQ3NDogIEFCSV9ERUZIQU5ETEVSX0xDQUxMNz0zLAox NDQ3NDogIEFCSV9ERUZIQU5ETEVSX0xJQkNTTz00LAoxNDQ3NDogIEFCSV9UUkFDRT01LAoxNDQ3 NDogIEFCSV9GQUtFX1VUU05BTUU9NiwKMTQ0NzQ6IH07CjE0NDc0OiAjIDMxICIuL2luY2x1ZGUv bGludXgvc3lzY3RsLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY29tcGxldGlv bjsKMTQ0NzQ6IHN0cnVjdCBjdGxfdGFibGU7CjE0NDc0OiBzdHJ1Y3QgbnNwcm94eTsKMTQ0NzQ6 IHN0cnVjdCBjdGxfdGFibGVfcm9vdDsKMTQ0NzQ6IHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyOwox NDQ3NDogc3RydWN0IGN0bF9kaXI7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gY29uc3QgaW50IHN5c2N0bF92YWxzW107CjE0NDc0 OiAKMTQ0NzQ6IHR5cGVkZWYgaW50IHByb2NfaGFuZGxlciAoc3RydWN0IGN0bF90YWJsZSAqY3Rs LCBpbnQgd3JpdGUsCjE0NDc0OiAgICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLCBsb2Zm X3QgKnBwb3MpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHByb2NfZG9zdHJpbmcoc3RydWN0 IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0OiAgICAgdm9pZCAqLCBzaXplX3QgKiwgbG9mZl90ICop OwoxNDQ3NDogZXh0ZXJuIGludCBwcm9jX2RvaW50dmVjKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50 LAoxNDQ3NDogICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKMTQ0NzQ6IGV4dGVybiBp bnQgcHJvY19kb3VpbnR2ZWMoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0OiAgICAgdm9p ZCAqLCBzaXplX3QgKiwgbG9mZl90ICopOwoxNDQ3NDogZXh0ZXJuIGludCBwcm9jX2RvaW50dmVj X21pbm1heChzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwKMTQ0NzQ6ICAgICB2b2lkICosIHNpemVf dCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBleHRlcm4gaW50IHByb2NfZG91aW50dmVjX21pbm1heChz dHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLAoxNDQ3NDogICAgICB2b2lkICpidWZm ZXIsIHNpemVfdCAqbGVucCwKMTQ0NzQ6ICAgICAgbG9mZl90ICpwcG9zKTsKMTQ0NzQ6IGV4dGVy biBpbnQgcHJvY19kb2ludHZlY19qaWZmaWVzKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAoxNDQ3 NDogICAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBleHRlcm4gaW50IHBy b2NfZG9pbnR2ZWNfdXNlcmh6X2ppZmZpZXMoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0 OiAgICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgcHJv Y19kb2ludHZlY19tc19qaWZmaWVzKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAoxNDQ3NDogICAg ICAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBleHRlcm4gaW50IHByb2Nf ZG91bG9uZ3ZlY19taW5tYXgoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0OiAgICAgICB2 b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBleHRlcm4gaW50IHByb2NfZG91bG9u Z3ZlY19tc19qaWZmaWVzX21pbm1heChzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50LAoxNDQ3 NDogICAgICAgICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKMTQ0NzQ6IGV4dGVybiBp bnQgcHJvY19kb19sYXJnZV9iaXRtYXAoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0OiAg ICAgdm9pZCAqLCBzaXplX3QgKiwgbG9mZl90ICopOwoxNDQ3NDogZXh0ZXJuIGludCBwcm9jX2Rv X3N0YXRpY19rZXkoc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSwKMTQ0NzQ6ICAg ICAgICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLAoxNDQ3NDogICAgICAgICAgbG9mZl90 ICpwcG9zKTsKMTQ0NzQ6ICMgMTA1ICIuL2luY2x1ZGUvbGludXgvc3lzY3RsLmgiCjE0NDc0OiBz dHJ1Y3QgY3RsX3RhYmxlX3BvbGwgewoxNDQ3NDogIGF0b21pY190IGV2ZW50OwoxNDQ3NDogIHdh aXRfcXVldWVfaGVhZF90IHdhaXQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICpwcm9j X3N5c19wb2xsX2V2ZW50KHN0cnVjdCBjdGxfdGFibGVfcG9sbCAqcG9sbCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gKHZvaWQgKikodW5zaWduZWQgbG9uZylhdG9taWNfcmVhZCgmcG9sbC0+ZXZl bnQpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMjMgIi4vaW5jbHVkZS9saW51eC9zeXNjdGwuaCIKMTQ0 NzQ6IHN0cnVjdCBjdGxfdGFibGUgewoxNDQ3NDogIGNvbnN0IGNoYXIgKnByb2NuYW1lOwoxNDQ3 NDogIHZvaWQgKmRhdGE7CjE0NDc0OiAgaW50IG1heGxlbjsKMTQ0NzQ6ICB1bW9kZV90IG1vZGU7 CjE0NDc0OiAgc3RydWN0IGN0bF90YWJsZSAqY2hpbGQ7CjE0NDc0OiAgcHJvY19oYW5kbGVyICpw cm9jX2hhbmRsZXI7CjE0NDc0OiAgc3RydWN0IGN0bF90YWJsZV9wb2xsICpwb2xsOwoxNDQ3NDog IHZvaWQgKmV4dHJhMTsKMTQ0NzQ6ICB2b2lkICpleHRyYTI7CjE0NDc0OiB9IF9fYXR0cmlidXRl X18oKF9fZGVzaWduYXRlZF9pbml0X18pKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGN0bF9ub2Rl IHsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9kZSBub2RlOwoxNDQ3NDogIHN0cnVjdCBjdGxfdGFibGVf aGVhZGVyICpoZWFkZXI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGN0bF90YWJsZV9oZWFkZXIgewoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0 IHsKMTQ0NzQ6ICAgIHN0cnVjdCBjdGxfdGFibGUgKmN0bF90YWJsZTsKMTQ0NzQ6ICAgIGludCB1 c2VkOwoxNDQ3NDogICAgaW50IGNvdW50OwoxNDQ3NDogICAgaW50IG5yZWc7CjE0NDc0OiAgIH07 CjE0NDc0OiAgIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKMTQ0NzQ6ICB9OwoxNDQ3NDogIHN0 cnVjdCBjb21wbGV0aW9uICp1bnJlZ2lzdGVyaW5nOwoxNDQ3NDogIHN0cnVjdCBjdGxfdGFibGUg KmN0bF90YWJsZV9hcmc7CjE0NDc0OiAgc3RydWN0IGN0bF90YWJsZV9yb290ICpyb290OwoxNDQ3 NDogIHN0cnVjdCBjdGxfdGFibGVfc2V0ICpzZXQ7CjE0NDc0OiAgc3RydWN0IGN0bF9kaXIgKnBh cmVudDsKMTQ0NzQ6ICBzdHJ1Y3QgY3RsX25vZGUgKm5vZGU7CjE0NDc0OiAgc3RydWN0IGhsaXN0 X2hlYWQgaW5vZGVzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGN0bF9kaXIgewox NDQ3NDogCjE0NDc0OiAgc3RydWN0IGN0bF90YWJsZV9oZWFkZXIgaGVhZGVyOwoxNDQ3NDogIHN0 cnVjdCByYl9yb290IHJvb3Q7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY3RsX3Rh YmxlX3NldCB7CjE0NDc0OiAgaW50ICgqaXNfc2Vlbikoc3RydWN0IGN0bF90YWJsZV9zZXQgKik7 CjE0NDc0OiAgc3RydWN0IGN0bF9kaXIgZGlyOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGN0bF90YWJsZV9yb290IHsKMTQ0NzQ6ICBzdHJ1Y3QgY3RsX3RhYmxlX3NldCBkZWZhdWx0 X3NldDsKMTQ0NzQ6ICBzdHJ1Y3QgY3RsX3RhYmxlX3NldCAqKCpsb29rdXApKHN0cnVjdCBjdGxf dGFibGVfcm9vdCAqcm9vdCk7CjE0NDc0OiAgdm9pZCAoKnNldF9vd25lcnNoaXApKHN0cnVjdCBj dGxfdGFibGVfaGVhZGVyICpoZWFkLAoxNDQ3NDogICAgICAgICAgc3RydWN0IGN0bF90YWJsZSAq dGFibGUsCjE0NDc0OiAgICAgICAgICBrdWlkX3QgKnVpZCwga2dpZF90ICpnaWQpOwoxNDQ3NDog IGludCAoKnBlcm1pc3Npb25zKShzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqaGVhZCwgc3RydWN0 IGN0bF90YWJsZSAqdGFibGUpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgY3RsX3BhdGggewoxNDQ3NDogIGNvbnN0IGNoYXIgKnByb2NuYW1lOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgcHJvY19zeXNfcG9sbF9ub3RpZnkoc3Ry dWN0IGN0bF90YWJsZV9wb2xsICpwb2xsKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0 dXBfc3lzY3RsX3NldChzdHJ1Y3QgY3RsX3RhYmxlX3NldCAqcCwKMTQ0NzQ6ICBzdHJ1Y3QgY3Rs X3RhYmxlX3Jvb3QgKnJvb3QsCjE0NDc0OiAgaW50ICgqaXNfc2Vlbikoc3RydWN0IGN0bF90YWJs ZV9zZXQgKikpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgcmV0aXJlX3N5c2N0bF9zZXQoc3RydWN0IGN0 bF90YWJsZV9zZXQgKnNldCk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjdGxfdGFibGVfaGVhZGVy ICpfX3JlZ2lzdGVyX3N5c2N0bF90YWJsZSgKMTQ0NzQ6ICBzdHJ1Y3QgY3RsX3RhYmxlX3NldCAq c2V0LAoxNDQ3NDogIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlKTsK MTQ0NzQ6IHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyICpfX3JlZ2lzdGVyX3N5c2N0bF9wYXRocygK MTQ0NzQ6ICBzdHJ1Y3QgY3RsX3RhYmxlX3NldCAqc2V0LAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBj dGxfcGF0aCAqcGF0aCwgc3RydWN0IGN0bF90YWJsZSAqdGFibGUpOwoxNDQ3NDogc3RydWN0IGN0 bF90YWJsZV9oZWFkZXIgKnJlZ2lzdGVyX3N5c2N0bChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qg Y3RsX3RhYmxlICp0YWJsZSk7CjE0NDc0OiBzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqcmVnaXN0 ZXJfc3lzY3RsX3RhYmxlKHN0cnVjdCBjdGxfdGFibGUgKiB0YWJsZSk7CjE0NDc0OiBzdHJ1Y3Qg Y3RsX3RhYmxlX2hlYWRlciAqcmVnaXN0ZXJfc3lzY3RsX3BhdGhzKGNvbnN0IHN0cnVjdCBjdGxf cGF0aCAqcGF0aCwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlKTsKMTQ0NzQ6 IAoxNDQ3NDogdm9pZCB1bnJlZ2lzdGVyX3N5c2N0bF90YWJsZShzdHJ1Y3QgY3RsX3RhYmxlX2hl YWRlciAqIHRhYmxlKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBzeXNjdGxfaW5pdCh2b2lk KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBjdGxfdGFibGUgc3lzY3RsX21vdW50X3Bv aW50W107CjE0NDc0OiAjIDI0MSAiLi9pbmNsdWRlL2xpbnV4L3N5c2N0bC5oIgoxNDQ3NDogaW50 IHN5c2N0bF9tYXhfdGhyZWFkcyhzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLAox NDQ3NDogICAgICAgICAgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqcHBvcyk7 CjE0NDc0OiAjIDE4ICIuL2luY2x1ZGUvbGludXgva2V5LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9hc3NvY19hcnJheS5oIiAxCjE0NDc0OiAjIDIyICIu L2luY2x1ZGUvbGludXgvYXNzb2NfYXJyYXkuaCIKMTQ0NzQ6IHN0cnVjdCBhc3NvY19hcnJheSB7 CjE0NDc0OiAgc3RydWN0IGFzc29jX2FycmF5X3B0ciAqcm9vdDsKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIG5yX2xlYXZlc19vbl90cmVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGFzc29jX2FycmF5X29wcyB7CjE0NDc0OiAKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nICgqZ2V0X2tleV9jaHVuaykoY29uc3Qgdm9pZCAqaW5kZXhfa2V5LCBpbnQg bGV2ZWwpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nICgqZ2V0X29iamVj dF9rZXlfY2h1bmspKGNvbnN0IHZvaWQgKm9iamVjdCwgaW50IGxldmVsKTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgYm9vbCAoKmNvbXBhcmVfb2JqZWN0KShjb25zdCB2b2lkICpvYmplY3QsIGNv bnN0IHZvaWQgKmluZGV4X2tleSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBpbnQgKCpkaWZmX29iamVjdHMpKGNvbnN0IHZvaWQgKm9iamVjdCwgY29uc3Qgdm9pZCAq aW5kZXhfa2V5KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmZyZWVfb2JqZWN0KSh2 b2lkICpvYmplY3QpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGFzc29jX2FycmF5X2VkaXQ7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXNzb2Nf YXJyYXlfaW5pdChzdHJ1Y3QgYXNzb2NfYXJyYXkgKmFycmF5KQoxNDQ3NDogewoxNDQ3NDogIGFy cmF5LT5yb290ID0gKCh2b2lkICopMCk7CjE0NDc0OiAgYXJyYXktPm5yX2xlYXZlc19vbl90cmVl ID0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBhc3NvY19hcnJheV9pdGVy YXRlKGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheSAqYXJyYXksCjE0NDc0OiAgICAgICAgICAgaW50 ICgqaXRlcmF0b3IpKGNvbnN0IHZvaWQgKm9iamVjdCwKMTQ0NzQ6ICAgICAgICAgICAgIHZvaWQg Kml0ZXJhdG9yX2RhdGEpLAoxNDQ3NDogICAgICAgICAgIHZvaWQgKml0ZXJhdG9yX2RhdGEpOwox NDQ3NDogZXh0ZXJuIHZvaWQgKmFzc29jX2FycmF5X2ZpbmQoY29uc3Qgc3RydWN0IGFzc29jX2Fy cmF5ICphcnJheSwKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMg Km9wcywKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGV4X2tleSk7CjE0NDc0OiBleHRl cm4gdm9pZCBhc3NvY19hcnJheV9kZXN0cm95KHN0cnVjdCBhc3NvY19hcnJheSAqYXJyYXksCjE0 NDc0OiAgICAgY29uc3Qgc3RydWN0IGFzc29jX2FycmF5X29wcyAqb3BzKTsKMTQ0NzQ6IGV4dGVy biBzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdCAqYXNzb2NfYXJyYXlfaW5zZXJ0KHN0cnVjdCBhc3Nv Y19hcnJheSAqYXJyYXksCjE0NDc0OiAgICAgICAgICBjb25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXlf b3BzICpvcHMsCjE0NDc0OiAgICAgICAgICBjb25zdCB2b2lkICppbmRleF9rZXksCjE0NDc0OiAg ICAgICAgICB2b2lkICpvYmplY3QpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYXNzb2NfYXJyYXlfaW5z ZXJ0X3NldF9vYmplY3Qoc3RydWN0IGFzc29jX2FycmF5X2VkaXQgKmVkaXQsCjE0NDc0OiAgICAg ICAgdm9pZCAqb2JqZWN0KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdCAq YXNzb2NfYXJyYXlfZGVsZXRlKHN0cnVjdCBhc3NvY19hcnJheSAqYXJyYXksCjE0NDc0OiAgICAg ICAgICBjb25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXlfb3BzICpvcHMsCjE0NDc0OiAgICAgICAgICBj b25zdCB2b2lkICppbmRleF9rZXkpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBhc3NvY19hcnJheV9l ZGl0ICphc3NvY19hcnJheV9jbGVhcihzdHJ1Y3QgYXNzb2NfYXJyYXkgKmFycmF5LAoxNDQ3NDog ICAgICAgICBjb25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXlfb3BzICpvcHMpOwoxNDQ3NDogZXh0ZXJu IHZvaWQgYXNzb2NfYXJyYXlfYXBwbHlfZWRpdChzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdCAqZWRp dCk7CjE0NDc0OiBleHRlcm4gdm9pZCBhc3NvY19hcnJheV9jYW5jZWxfZWRpdChzdHJ1Y3QgYXNz b2NfYXJyYXlfZWRpdCAqZWRpdCk7CjE0NDc0OiBleHRlcm4gaW50IGFzc29jX2FycmF5X2djKHN0 cnVjdCBhc3NvY19hcnJheSAqYXJyYXksCjE0NDc0OiAgICAgIGNvbnN0IHN0cnVjdCBhc3NvY19h cnJheV9vcHMgKm9wcywKMTQ0NzQ6ICAgICAgYm9vbCAoKml0ZXJhdG9yKSh2b2lkICpvYmplY3Qs IHZvaWQgKml0ZXJhdG9yX2RhdGEpLAoxNDQ3NDogICAgICB2b2lkICppdGVyYXRvcl9kYXRhKTsK MTQ0NzQ6ICMgMjEgIi4vaW5jbHVkZS9saW51eC9rZXkuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIGludDMy X3Qga2V5X3NlcmlhbF90OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdWludDMyX3Qg a2V5X3Blcm1fdDsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGtleTsKMTQ0NzQ6IHN0cnVjdCBuZXQ7 CjE0NDc0OiAjIDc0ICIuL2luY2x1ZGUvbGludXgva2V5LmgiCjE0NDc0OiBzdHJ1Y3Qgc2VxX2Zp bGU7CjE0NDc0OiBzdHJ1Y3QgdXNlcl9zdHJ1Y3Q7CjE0NDc0OiBzdHJ1Y3Qgc2lnbmFsX3N0cnVj dDsKMTQ0NzQ6IHN0cnVjdCBjcmVkOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qga2V5X3R5cGU7CjE0 NDc0OiBzdHJ1Y3Qga2V5X293bmVyOwoxNDQ3NDogc3RydWN0IGtleV90YWc7CjE0NDc0OiBzdHJ1 Y3Qga2V5cmluZ19saXN0OwoxNDQ3NDogc3RydWN0IGtleXJpbmdfbmFtZTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGtleV90YWcgewoxNDQ3NDogIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKMTQ0 NzQ6ICByZWZjb3VudF90IHVzYWdlOwoxNDQ3NDogIGJvb2wgcmVtb3ZlZDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBrZXlyaW5nX2luZGV4X2tleSB7CjE0NDc0OiAKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGhhc2g7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3 NDogCjE0NDc0OiAgICB1MTYgZGVzY19sZW47CjE0NDc0OiAgICBjaGFyIGRlc2Nbc2l6ZW9mKGxv bmcpIC0gMl07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgfTsKMTQ0 NzQ6ICAgdW5zaWduZWQgbG9uZyB4OwoxNDQ3NDogIH07CjE0NDc0OiAgc3RydWN0IGtleV90eXBl ICp0eXBlOwoxNDQ3NDogIHN0cnVjdCBrZXlfdGFnICpkb21haW5fdGFnOwoxNDQ3NDogIGNvbnN0 IGNoYXIgKmRlc2NyaXB0aW9uOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24ga2V5X3Bh eWxvYWQgewoxNDQ3NDogIHZvaWQgKnJjdV9kYXRhMDsKMTQ0NzQ6ICB2b2lkICpkYXRhWzRdOwox NDQ3NDogfTsKMTQ0NzQ6ICMgMTMwICIuL2luY2x1ZGUvbGludXgva2V5LmgiCjE0NDc0OiB0eXBl ZGVmIHN0cnVjdCBfX2tleV9yZWZlcmVuY2Vfd2l0aF9hdHRyaWJ1dGVzICprZXlfcmVmX3Q7CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGtleV9yZWZfdCBtYWtlX2tleV9yZWYoY29uc3Qgc3RydWN0IGtleSAqa2V5 LAoxNDQ3NDogICAgICAgICAgYm9vbCBwb3NzZXNzaW9uKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biAoa2V5X3JlZl90KSAoKHVuc2lnbmVkIGxvbmcpIGtleSB8IHBvc3Nlc3Npb24pOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2V5ICprZXlfcmVmX3RvX3B0cihjb25zdCBrZXlfcmVm X3Qga2V5X3JlZikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHN0cnVjdCBrZXkgKikgKCh1bnNp Z25lZCBsb25nKSBrZXlfcmVmICYgfjFVTCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg aXNfa2V5X3Bvc3Nlc3NlZChjb25zdCBrZXlfcmVmX3Qga2V5X3JlZikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIGtleV9yZWYgJiAxVUw7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHR5cGVkZWYgaW50ICgqa2V5X3Jlc3RyaWN0X2xpbmtfZnVuY190KShzdHJ1Y3Qga2V5 ICpkZXN0X2tleXJpbmcsCjE0NDc0OiAgICAgIGNvbnN0IHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwK MTQ0NzQ6ICAgICAgY29uc3QgdW5pb24ga2V5X3BheWxvYWQgKnBheWxvYWQsCjE0NDc0OiAgICAg IHN0cnVjdCBrZXkgKnJlc3RyaWN0aW9uX2tleSk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBrZXlf cmVzdHJpY3Rpb24gewoxNDQ3NDogIGtleV9yZXN0cmljdF9saW5rX2Z1bmNfdCBjaGVjazsKMTQ0 NzQ6ICBzdHJ1Y3Qga2V5ICprZXk7CjE0NDc0OiAgc3RydWN0IGtleV90eXBlICprZXl0eXBlOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBrZXlfc3RhdGUgewoxNDQ3NDogIEtFWV9JU19V TklOU1RBTlRJQVRFRCwKMTQ0NzQ6ICBLRVlfSVNfUE9TSVRJVkUsCjE0NDc0OiB9OwoxNDQ3NDog IyAxNzIgIi4vaW5jbHVkZS9saW51eC9rZXkuaCIKMTQ0NzQ6IHN0cnVjdCBrZXkgewoxNDQ3NDog IHJlZmNvdW50X3QgdXNhZ2U7CjE0NDc0OiAga2V5X3NlcmlhbF90IHNlcmlhbDsKMTQ0NzQ6ICB1 bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBsaXN0X2hlYWQgZ3JhdmV5YXJkX2xpbms7CjE0NDc0OiAg IHN0cnVjdCByYl9ub2RlIHNlcmlhbF9ub2RlOwoxNDQ3NDogIH07CjE0NDc0OiAgc3RydWN0IHJ3 X3NlbWFwaG9yZSBzZW07CjE0NDc0OiAgc3RydWN0IGtleV91c2VyICp1c2VyOwoxNDQ3NDogIHZv aWQgKnNlY3VyaXR5OwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgdGltZTY0X3QgZXhwaXJ5Owox NDQ3NDogICB0aW1lNjRfdCByZXZva2VkX2F0OwoxNDQ3NDogIH07CjE0NDc0OiAgdGltZTY0X3Qg bGFzdF91c2VkX2F0OwoxNDQ3NDogIGt1aWRfdCB1aWQ7CjE0NDc0OiAga2dpZF90IGdpZDsKMTQ0 NzQ6ICBrZXlfcGVybV90IHBlcm07CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgcXVvdGFsZW47CjE0 NDc0OiAgdW5zaWduZWQgc2hvcnQgZGF0YWxlbjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBzaG9ydCBzdGF0ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGZsYWdzOwoxNDQ3NDogIyAyMTkgIi4vaW5j bHVkZS9saW51eC9rZXkuaCIKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBrZXlyaW5n X2luZGV4X2tleSBpbmRleF9rZXk7CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAgICB1bnNpZ25l ZCBsb25nIGhhc2g7CjE0NDc0OiAgICB1bnNpZ25lZCBsb25nIGxlbl9kZXNjOwoxNDQ3NDogICAg c3RydWN0IGtleV90eXBlICp0eXBlOwoxNDQ3NDogICAgc3RydWN0IGtleV90YWcgKmRvbWFpbl90 YWc7CjE0NDc0OiAgICBjaGFyICpkZXNjcmlwdGlvbjsKMTQ0NzQ6ICAgfTsKMTQ0NzQ6ICB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiB7CjE0 NDc0OiAgIHVuaW9uIGtleV9wYXlsb2FkIHBheWxvYWQ7CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0 OiAKMTQ0NzQ6ICAgIHN0cnVjdCBsaXN0X2hlYWQgbmFtZV9saW5rOwoxNDQ3NDogICAgc3RydWN0 IGFzc29jX2FycmF5IGtleXM7CjE0NDc0OiAgIH07CjE0NDc0OiAgfTsKMTQ0NzQ6ICMgMjU0ICIu L2luY2x1ZGUvbGludXgva2V5LmgiCjE0NDc0OiAgc3RydWN0IGtleV9yZXN0cmljdGlvbiAqcmVz dHJpY3RfbGluazsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga2V5ICpr ZXlfYWxsb2Moc3RydWN0IGtleV90eXBlICp0eXBlLAoxNDQ3NDogICAgICAgICBjb25zdCBjaGFy ICpkZXNjLAoxNDQ3NDogICAgICAgICBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkLAoxNDQ3NDogICAg ICAgICBjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCwKMTQ0NzQ6ICAgICAgICAga2V5X3Blcm1fdCBw ZXJtLAoxNDQ3NDogICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzLAoxNDQ3NDogICAgICAgICBz dHJ1Y3Qga2V5X3Jlc3RyaWN0aW9uICpyZXN0cmljdF9saW5rKTsKMTQ0NzQ6ICMgMjczICIuL2lu Y2x1ZGUvbGludXgva2V5LmgiCjE0NDc0OiBleHRlcm4gdm9pZCBrZXlfcmV2b2tlKHN0cnVjdCBr ZXkgKmtleSk7CjE0NDc0OiBleHRlcm4gdm9pZCBrZXlfaW52YWxpZGF0ZShzdHJ1Y3Qga2V5ICpr ZXkpOwoxNDQ3NDogZXh0ZXJuIHZvaWQga2V5X3B1dChzdHJ1Y3Qga2V5ICprZXkpOwoxNDQ3NDog ZXh0ZXJuIGJvb2wga2V5X3B1dF90YWcoc3RydWN0IGtleV90YWcgKnRhZyk7CjE0NDc0OiBleHRl cm4gdm9pZCBrZXlfcmVtb3ZlX2RvbWFpbihzdHJ1Y3Qga2V5X3RhZyAqZG9tYWluX3RhZyk7CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHN0cnVjdCBrZXkgKl9fa2V5X2dldChzdHJ1Y3Qga2V5ICprZXkpCjE0NDc0 OiB7CjE0NDc0OiAgcmVmY291bnRfaW5jKCZrZXktPnVzYWdlKTsKMTQ0NzQ6ICByZXR1cm4ga2V5 OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2V5ICprZXlfZ2V0KHN0cnVjdCBrZXkg KmtleSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga2V5ID8gX19rZXlfZ2V0KGtleSkgOiBrZXk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2V5X3JlZl9wdXQoa2V5X3JlZl90IGtleV9y ZWYpCjE0NDc0OiB7CjE0NDc0OiAga2V5X3B1dChrZXlfcmVmX3RvX3B0cihrZXlfcmVmKSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga2V5ICpyZXF1ZXN0X2tleV90YWco c3RydWN0IGtleV90eXBlICp0eXBlLAoxNDQ3NDogICAgICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0 aW9uLAoxNDQ3NDogICAgICAgIHN0cnVjdCBrZXlfdGFnICpkb21haW5fdGFnLAoxNDQ3NDogICAg ICAgIGNvbnN0IGNoYXIgKmNhbGxvdXRfaW5mbyk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1 Y3Qga2V5ICpyZXF1ZXN0X2tleV9yY3Uoc3RydWN0IGtleV90eXBlICp0eXBlLAoxNDQ3NDogICAg ICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAoxNDQ3NDogICAgICAgIHN0cnVjdCBrZXlfdGFn ICpkb21haW5fdGFnKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBrZXkgKnJlcXVlc3Rf a2V5X3dpdGhfYXV4ZGF0YShzdHJ1Y3Qga2V5X3R5cGUgKnR5cGUsCjE0NDc0OiAgICAgICAgICBj b25zdCBjaGFyICpkZXNjcmlwdGlvbiwKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBrZXlfdGFnICpk b21haW5fdGFnLAoxNDQ3NDogICAgICAgICAgY29uc3Qgdm9pZCAqY2FsbG91dF9pbmZvLAoxNDQ3 NDogICAgICAgICAgc2l6ZV90IGNhbGxvdXRfbGVuLAoxNDQ3NDogICAgICAgICAgdm9pZCAqYXV4 KTsKMTQ0NzQ6ICMgMzE5ICIuL2luY2x1ZGUvbGludXgva2V5LmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2V5 ICpyZXF1ZXN0X2tleShzdHJ1Y3Qga2V5X3R5cGUgKnR5cGUsCjE0NDc0OiAgICAgICAgICAgY29u c3QgY2hhciAqZGVzY3JpcHRpb24sCjE0NDc0OiAgICAgICAgICAgY29uc3QgY2hhciAqY2FsbG91 dF9pbmZvKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiByZXF1ZXN0X2tleV90YWcodHlwZSwgZGVz Y3JpcHRpb24sICgodm9pZCAqKTApLCBjYWxsb3V0X2luZm8pOwoxNDQ3NDogfQoxNDQ3NDogIyAz NTggIi4vaW5jbHVkZS9saW51eC9rZXkuaCIKMTQ0NzQ6IGV4dGVybiBpbnQgd2FpdF9mb3Jfa2V5 X2NvbnN0cnVjdGlvbihzdHJ1Y3Qga2V5ICprZXksIGJvb2wgaW50cik7CjE0NDc0OiAKMTQ0NzQ6 IGV4dGVybiBpbnQga2V5X3ZhbGlkYXRlKGNvbnN0IHN0cnVjdCBrZXkgKmtleSk7CjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiBrZXlfcmVmX3Qga2V5X2NyZWF0ZV9vcl91cGRhdGUoa2V5X3JlZl90IGtl eXJpbmcsCjE0NDc0OiAgICAgICAgICAgY29uc3QgY2hhciAqdHlwZSwKMTQ0NzQ6ICAgICAgICAg ICBjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwKMTQ0NzQ6ICAgICAgICAgICBjb25zdCB2b2lkICpw YXlsb2FkLAoxNDQ3NDogICAgICAgICAgIHNpemVfdCBwbGVuLAoxNDQ3NDogICAgICAgICAgIGtl eV9wZXJtX3QgcGVybSwKMTQ0NzQ6ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzKTsKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBrZXlfdXBkYXRlKGtleV9yZWZfdCBrZXksCjE0NDc0OiAg ICAgICAgIGNvbnN0IHZvaWQgKnBheWxvYWQsCjE0NDc0OiAgICAgICAgIHNpemVfdCBwbGVuKTsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBrZXlfbGluayhzdHJ1Y3Qga2V5ICprZXlyaW5nLAox NDQ3NDogICAgICAgc3RydWN0IGtleSAqa2V5KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBr ZXlfbW92ZShzdHJ1Y3Qga2V5ICprZXksCjE0NDc0OiAgICAgICBzdHJ1Y3Qga2V5ICpmcm9tX2tl eXJpbmcsCjE0NDc0OiAgICAgICBzdHJ1Y3Qga2V5ICp0b19rZXlyaW5nLAoxNDQ3NDogICAgICAg dW5zaWduZWQgaW50IGZsYWdzKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBrZXlfdW5saW5r KHN0cnVjdCBrZXkgKmtleXJpbmcsCjE0NDc0OiAgICAgICAgIHN0cnVjdCBrZXkgKmtleSk7CjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga2V5ICprZXlyaW5nX2FsbG9jKGNvbnN0IGNoYXIg KmRlc2NyaXB0aW9uLCBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkLAoxNDQ3NDogICAgICBjb25zdCBz dHJ1Y3QgY3JlZCAqY3JlZCwKMTQ0NzQ6ICAgICAga2V5X3Blcm1fdCBwZXJtLAoxNDQ3NDogICAg ICB1bnNpZ25lZCBsb25nIGZsYWdzLAoxNDQ3NDogICAgICBzdHJ1Y3Qga2V5X3Jlc3RyaWN0aW9u ICpyZXN0cmljdF9saW5rLAoxNDQ3NDogICAgICBzdHJ1Y3Qga2V5ICpkZXN0KTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGludCByZXN0cmljdF9saW5rX3JlamVjdChzdHJ1Y3Qga2V5ICprZXlyaW5n LAoxNDQ3NDogICAgIGNvbnN0IHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwKMTQ0NzQ6ICAgICBjb25z dCB1bmlvbiBrZXlfcGF5bG9hZCAqcGF5bG9hZCwKMTQ0NzQ6ICAgICBzdHJ1Y3Qga2V5ICpyZXN0 cmljdGlvbl9rZXkpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGtleXJpbmdfY2xlYXIoc3Ry dWN0IGtleSAqa2V5cmluZyk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBrZXlfcmVmX3Qga2V5cmlu Z19zZWFyY2goa2V5X3JlZl90IGtleXJpbmcsCjE0NDc0OiAgICAgc3RydWN0IGtleV90eXBlICp0 eXBlLAoxNDQ3NDogICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAoxNDQ3NDogICAgIGJvb2wg cmVjdXJzZSk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQga2V5cmluZ19hZGRfa2V5KHN0cnVj dCBrZXkgKmtleXJpbmcsCjE0NDc0OiAgICAgICBzdHJ1Y3Qga2V5ICprZXkpOwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gaW50IGtleXJpbmdfcmVzdHJpY3Qoa2V5X3JlZl90IGtleXJpbmcsIGNvbnN0 IGNoYXIgKnR5cGUsCjE0NDc0OiAgICAgICAgY29uc3QgY2hhciAqcmVzdHJpY3Rpb24pOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGtleSAqa2V5X2xvb2t1cChrZXlfc2VyaWFsX3QgaWQp OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBrZXlfc2VyaWFsX3Qga2V5X3NlcmlhbChjb25zdCBzdHJ1Y3Qga2V5 ICprZXkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtleSA/IGtleS0+c2VyaWFsIDogMDsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQga2V5X3NldF90aW1lb3V0KHN0cnVjdCBr ZXkgKiwgdW5zaWduZWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4ga2V5X3JlZl90IGxvb2t1cF91 c2VyX2tleShrZXlfc2VyaWFsX3QgaWQsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCjE0NDc0OiAgICAg IGtleV9wZXJtX3QgcGVybSk7CjE0NDc0OiBleHRlcm4gdm9pZCBrZXlfZnJlZV91c2VyX25zKHN0 cnVjdCB1c2VyX25hbWVzcGFjZSAqKTsKMTQ0NzQ6ICMgNDM0ICIuL2luY2x1ZGUvbGludXgva2V5 LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzaG9ydCBrZXlfcmVhZF9zdGF0ZShjb25zdCBzdHJ1Y3Qga2V5ICprZXkpCjE0 NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gKHsgdHlwZW9mKComa2V5LT5zdGF0ZSkgX19f cDEgPSAoeyB1bmlvbiB7IHR5cGVvZigqJmtleS0+c3RhdGUpIF9fdmFsOyBjaGFyIF9fY1sxXTsg fSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKiZrZXktPnN0YXRlKSwgX191Ll9fYywg c2l6ZW9mKComa2V5LT5zdGF0ZSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKCom a2V5LT5zdGF0ZSksIF9fdS5fX2MsIHNpemVvZigqJmtleS0+c3RhdGUpKTsgZG8geyB9IHdoaWxl ICgwKTsgX191Ll9fdmFsOyB9KTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2Vy dF80Mzcodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNp emVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXplb2YoKiZrZXkt PnN0YXRlKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComa2V5LT5zdGF0ZSkgPT0gc2l6ZW9m KHNob3J0KSB8fCBzaXplb2YoKiZrZXktPnN0YXRlKSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2Yo KiZrZXktPnN0YXRlKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfNDM3 KCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBf X19wMTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDQ0NyAiLi9pbmNsdWRlL2xpbnV4L2tleS5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCBrZXlfaXNfcG9zaXRpdmUoY29uc3Qgc3RydWN0IGtleSAqa2V5KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBrZXlfcmVhZF9zdGF0ZShrZXkpID09IEtFWV9JU19QT1NJVElWRTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBrZXlfaXNfbmVnYXRpdmUoY29uc3Qgc3RydWN0 IGtleSAqa2V5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrZXlfcmVhZF9zdGF0ZShrZXkpIDwg MDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDcwICIuL2luY2x1ZGUvbGludXgva2V5LmgiCjE0NDc0OiBl eHRlcm4gc3RydWN0IGN0bF90YWJsZSBrZXlfc3lzY3Rsc1tdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGluc3RhbGxfdGhyZWFkX2tleXJpbmdfdG9f Y3JlZChzdHJ1Y3QgY3JlZCAqY3JlZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBrZXlfZnN1aWRfY2hh bmdlZChzdHJ1Y3QgY3JlZCAqbmV3X2NyZWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQga2V5X2ZzZ2lk X2NoYW5nZWQoc3RydWN0IGNyZWQgKm5ld19jcmVkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGtleV9p bml0KHZvaWQpOwoxNDQ3NDogIyAxNCAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIgMgoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvc2NoZWQvdXNlci5o IiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3JhdGVsaW1pdC5oIiAxCjE0NDc0OiAjIDE1 ICIuL2luY2x1ZGUvbGludXgvcmF0ZWxpbWl0LmgiCjE0NDc0OiBzdHJ1Y3QgcmF0ZWxpbWl0X3N0 YXRlIHsKMTQ0NzQ6ICByYXdfc3BpbmxvY2tfdCBsb2NrOwoxNDQ3NDogCjE0NDc0OiAgaW50IGlu dGVydmFsOwoxNDQ3NDogIGludCBidXJzdDsKMTQ0NzQ6ICBpbnQgcHJpbnRlZDsKMTQ0NzQ6ICBp bnQgbWlzc2VkOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgYmVnaW47CjE0NDc0OiAgdW5zaWduZWQg bG9uZyBmbGFnczsKMTQ0NzQ6IH07CjE0NDc0OiAjIDQwICIuL2luY2x1ZGUvbGludXgvcmF0ZWxp bWl0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHJhdGVsaW1pdF9zdGF0ZV9pbml0KHN0cnVjdCByYXRlbGltaXRf c3RhdGUgKnJzLAoxNDQ3NDogICAgICBpbnQgaW50ZXJ2YWwsIGludCBidXJzdCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBtZW1zZXQocnMsIDAsIHNpemVvZigqcnMpKTsKMTQ0NzQ6IAoxNDQ3NDogIGRvIHsg KigmcnMtPmxvY2spID0gKHJhd19zcGlubG9ja190KSB7IC5yYXdfbG9jayA9IHsgeyAudmFsID0g eyAoMCkgfSB9IH0sIH07IH0gd2hpbGUgKDApOwoxNDQ3NDogIHJzLT5pbnRlcnZhbCA9IGludGVy dmFsOwoxNDQ3NDogIHJzLT5idXJzdCA9IGJ1cnN0OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHJhdGVsaW1pdF9kZWZhdWx0X2luaXQoc3RydWN0IHJhdGVsaW1pdF9zdGF0ZSAqcnMpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJhdGVsaW1pdF9zdGF0ZV9pbml0KHJzLCAoNSAqIDI1MCks CjE0NDc0OiAgICAgIDEwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByYXRlbGltaXRf c3RhdGVfZXhpdChzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlICpycykKMTQ0NzQ6IHsKMTQ0NzQ6ICBp ZiAoIShycy0+ZmxhZ3MgJiAoKCgoMVVMKSkpIDw8ICgwKSkpKQoxNDQ3NDogICByZXR1cm47CjE0 NDc0OiAKMTQ0NzQ6ICBpZiAocnMtPm1pc3NlZCkgewoxNDQ3NDogICBwcmludGsoIlwwMDEiICI0 IiAiJXM6ICVkIG91dHB1dCBsaW5lcyBzdXBwcmVzc2VkIGR1ZSB0byByYXRlbGltaXRpbmdcbiIs IGdldF9jdXJyZW50KCktPmNvbW0sIHJzLT5taXNzZWQpCjE0NDc0OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsKMTQ0NzQ6ICAgcnMtPm1pc3NlZCA9IDA7CjE0NDc0OiAgfQoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiByYXRlbGltaXRfc2V0X2ZsYWdzKHN0cnVjdCBy YXRlbGltaXRfc3RhdGUgKnJzLCB1bnNpZ25lZCBsb25nIGZsYWdzKQoxNDQ3NDogewoxNDQ3NDog IHJzLT5mbGFncyA9IGZsYWdzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0 IHJhdGVsaW1pdF9zdGF0ZSBwcmludGtfcmF0ZWxpbWl0X3N0YXRlOwoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gaW50IF9fX3JhdGVsaW1pdChzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlICpycywgY29uc3Qg Y2hhciAqZnVuYyk7CjE0NDc0OiAjIDkgIi4vaW5jbHVkZS9saW51eC9zY2hlZC91c2VyLmgiIDIK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHVzZXJfc3RydWN0 IHsKMTQ0NzQ6ICByZWZjb3VudF90IF9fY291bnQ7CjE0NDc0OiAgYXRvbWljX3QgcHJvY2Vzc2Vz OwoxNDQ3NDogIGF0b21pY190IHNpZ3BlbmRpbmc7CjE0NDc0OiAKMTQ0NzQ6ICBhdG9taWNfdCBm YW5vdGlmeV9saXN0ZW5lcnM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGF0b21pY19sb25nX3Qg ZXBvbGxfd2F0Y2hlczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIG1xX2J5dGVzOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb2NrZWRfc2htOwox NDQ3NDogIHVuc2lnbmVkIGxvbmcgdW5peF9pbmZsaWdodDsKMTQ0NzQ6ICBhdG9taWNfbG9uZ190 IHBpcGVfYnVmczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGhsaXN0X25vZGUgdWlk aGFzaF9ub2RlOwoxNDQ3NDogIGt1aWRfdCB1aWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgYXRvbWljX2xvbmdfdCBsb2NrZWRfdm07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IHJhdGVsaW1pdF9zdGF0ZSByYXRlbGltaXQ7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gaW50IHVpZHNfc3lzZnNfaW5pdCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHN0cnVjdCB1c2VyX3N0cnVjdCAqZmluZF91c2VyKGt1aWRfdCk7CjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3Qgcm9vdF91c2VyOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHVzZXJfc3RydWN0ICogYWxsb2Nf dWlkKGt1aWRfdCk7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKmdldF91aWQoc3RydWN0IHVz ZXJfc3RydWN0ICp1KQoxNDQ3NDogewoxNDQ3NDogIHJlZmNvdW50X2luYygmdS0+X19jb3VudCk7 CjE0NDc0OiAgcmV0dXJuIHU7CjE0NDc0OiB9CjE0NDc0OiBleHRlcm4gdm9pZCBmcmVlX3VpZChz dHJ1Y3QgdXNlcl9zdHJ1Y3QgKik7CjE0NDc0OiAjIDE4ICIuL2luY2x1ZGUvbGludXgvY3JlZC5o IiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjcmVkOwoxNDQ3NDogc3RydWN0IGlub2RlOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZ3JvdXBfaW5mbyB7CjE0 NDc0OiAgYXRvbWljX3QgdXNhZ2U7CjE0NDc0OiAgaW50IG5ncm91cHM7CjE0NDc0OiAga2dpZF90 IGdpZFswXTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRfXykpOwox NDQ3NDogIyA0MCAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBncm91cF9p bmZvICpnZXRfZ3JvdXBfaW5mbyhzdHJ1Y3QgZ3JvdXBfaW5mbyAqZ2kpCjE0NDc0OiB7CjE0NDc0 OiAgYXRvbWljX2luYygmZ2ktPnVzYWdlKTsKMTQ0NzQ6ICByZXR1cm4gZ2k7CjE0NDc0OiB9CjE0 NDc0OiAjIDU2ICIuL2luY2x1ZGUvbGludXgvY3JlZC5oIgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBn cm91cF9pbmZvIGluaXRfZ3JvdXBzOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGdyb3Vw X2luZm8gKmdyb3Vwc19hbGxvYyhpbnQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZ3JvdXBzX2ZyZWUo c3RydWN0IGdyb3VwX2luZm8gKik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgaW5fZ3JvdXBf cChrZ2lkX3QpOwoxNDQ3NDogZXh0ZXJuIGludCBpbl9lZ3JvdXBfcChrZ2lkX3QpOwoxNDQ3NDog ZXh0ZXJuIGludCBncm91cHNfc2VhcmNoKGNvbnN0IHN0cnVjdCBncm91cF9pbmZvICosIGtnaWRf dCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgc2V0X2N1cnJlbnRfZ3JvdXBzKHN0cnVjdCBn cm91cF9pbmZvICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0X2dyb3VwcyhzdHJ1Y3QgY3JlZCAq LCBzdHJ1Y3QgZ3JvdXBfaW5mbyAqKTsKMTQ0NzQ6IGV4dGVybiBib29sIG1heV9zZXRncm91cHMo dm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBncm91cHNfc29ydChzdHJ1Y3QgZ3JvdXBfaW5mbyAq KTsKMTQ0NzQ6ICMgMTExICIuL2luY2x1ZGUvbGludXgvY3JlZC5oIgoxNDQ3NDogc3RydWN0IGNy ZWQgewoxNDQ3NDogIGF0b21pY190IHVzYWdlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAga3VpZF90IHVpZDsKMTQ0NzQ6ICBr Z2lkX3QgZ2lkOwoxNDQ3NDogIGt1aWRfdCBzdWlkOwoxNDQ3NDogIGtnaWRfdCBzZ2lkOwoxNDQ3 NDogIGt1aWRfdCBldWlkOwoxNDQ3NDogIGtnaWRfdCBlZ2lkOwoxNDQ3NDogIGt1aWRfdCBmc3Vp ZDsKMTQ0NzQ6ICBrZ2lkX3QgZnNnaWQ7CjE0NDc0OiAgdW5zaWduZWQgc2VjdXJlYml0czsKMTQ0 NzQ6ICBrZXJuZWxfY2FwX3QgY2FwX2luaGVyaXRhYmxlOwoxNDQ3NDogIGtlcm5lbF9jYXBfdCBj YXBfcGVybWl0dGVkOwoxNDQ3NDogIGtlcm5lbF9jYXBfdCBjYXBfZWZmZWN0aXZlOwoxNDQ3NDog IGtlcm5lbF9jYXBfdCBjYXBfYnNldDsKMTQ0NzQ6ICBrZXJuZWxfY2FwX3QgY2FwX2FtYmllbnQ7 CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGppdF9rZXlyaW5nOwoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IGtleSAqc2Vzc2lvbl9rZXlyaW5nOwoxNDQ3NDogIHN0cnVjdCBrZXkgKnByb2Nl c3Nfa2V5cmluZzsKMTQ0NzQ6ICBzdHJ1Y3Qga2V5ICp0aHJlYWRfa2V5cmluZzsKMTQ0NzQ6ICBz dHJ1Y3Qga2V5ICpyZXF1ZXN0X2tleV9hdXRoOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lk ICpzZWN1cml0eTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcjsKMTQ0 NzQ6ICBzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnVzZXJfbnM7CjE0NDc0OiAgc3RydWN0IGdyb3Vw X2luZm8gKmdyb3VwX2luZm87CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIGludCBu b25fcmN1OwoxNDQ3NDogICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCByY3U7CjE0NDc0OiAgfTsKMTQ0 NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRfXykpOwoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gdm9pZCBfX3B1dF9jcmVkKHN0cnVjdCBjcmVkICopOwoxNDQ3NDogZXh0ZXJuIHZv aWQgZXhpdF9jcmVkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CjE0NDc0OiBleHRlcm4gaW50IGNv cHlfY3JlZHMoc3RydWN0IHRhc2tfc3RydWN0ICosIHVuc2lnbmVkIGxvbmcpOwoxNDQ3NDogZXh0 ZXJuIGNvbnN0IHN0cnVjdCBjcmVkICpnZXRfdGFza19jcmVkKHN0cnVjdCB0YXNrX3N0cnVjdCAq KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgY3JlZCAqY3JlZF9hbGxvY19ibGFuayh2b2lkKTsKMTQ0 NzQ6IGV4dGVybiBzdHJ1Y3QgY3JlZCAqcHJlcGFyZV9jcmVkcyh2b2lkKTsKMTQ0NzQ6IGV4dGVy biBzdHJ1Y3QgY3JlZCAqcHJlcGFyZV9leGVjX2NyZWRzKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGlu dCBjb21taXRfY3JlZHMoc3RydWN0IGNyZWQgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBhYm9ydF9j cmVkcyhzdHJ1Y3QgY3JlZCAqKTsKMTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgY3JlZCAqb3Zl cnJpZGVfY3JlZHMoY29uc3Qgc3RydWN0IGNyZWQgKik7CjE0NDc0OiBleHRlcm4gdm9pZCByZXZl cnRfY3JlZHMoY29uc3Qgc3RydWN0IGNyZWQgKik7CjE0NDc0OiBleHRlcm4gc3RydWN0IGNyZWQg KnByZXBhcmVfa2VybmVsX2NyZWQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoxNDQ3NDogZXh0ZXJu IGludCBjaGFuZ2VfY3JlYXRlX2ZpbGVzX2FzKHN0cnVjdCBjcmVkICosIHN0cnVjdCBpbm9kZSAq KTsKMTQ0NzQ6IGV4dGVybiBpbnQgc2V0X3NlY3VyaXR5X292ZXJyaWRlKHN0cnVjdCBjcmVkICos IHUzMik7CjE0NDc0OiBleHRlcm4gaW50IHNldF9zZWN1cml0eV9vdmVycmlkZV9mcm9tX2N0eChz dHJ1Y3QgY3JlZCAqLCBjb25zdCBjaGFyICopOwoxNDQ3NDogZXh0ZXJuIGludCBzZXRfY3JlYXRl X2ZpbGVzX2FzKHN0cnVjdCBjcmVkICosIHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiBp bnQgY3JlZF9mc2NtcChjb25zdCBzdHJ1Y3QgY3JlZCAqLCBjb25zdCBzdHJ1Y3QgY3JlZCAqKTsK MTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0 IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIGNyZWRfaW5pdCh2b2lkKTsKMTQ0NzQ6ICMg MjAzICIuL2luY2x1ZGUvbGludXgvY3JlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB2YWxpZGF0ZV9jcmVkcyhj b25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCkKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdmFs aWRhdGVfY3JlZHNfZm9yX2RvX2V4aXQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCjE0NDc0OiB7 CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHZhbGlkYXRlX3Byb2Nlc3NfY3JlZHModm9pZCkKMTQ0NzQ6 IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGNhcF9hbWJpZW50X2ludmFy aWFudF9vayhjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g Y2FwX2lzc3Vic2V0KGNyZWQtPmNhcF9hbWJpZW50LAoxNDQ3NDogICAgICAgIGNhcF9pbnRlcnNl Y3QoY3JlZC0+Y2FwX3Blcm1pdHRlZCwKMTQ0NzQ6ICAgICAgICBjcmVkLT5jYXBfaW5oZXJpdGFi bGUpKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjI4ICIuL2luY2x1ZGUvbGludXgvY3JlZC5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgc3RydWN0IGNyZWQgKmdldF9uZXdfY3JlZChzdHJ1Y3QgY3JlZCAqY3JlZCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBhdG9taWNfaW5jKCZjcmVkLT51c2FnZSk7CjE0NDc0OiAgcmV0dXJuIGNyZWQ7CjE0 NDc0OiB9CjE0NDc0OiAjIDI0NyAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGNvbnN0 IHN0cnVjdCBjcmVkICpnZXRfY3JlZChjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBzdHJ1Y3QgY3JlZCAqbm9uY29uc3RfY3JlZCA9IChzdHJ1Y3QgY3JlZCAqKSBjcmVk OwoxNDQ3NDogIGlmICghY3JlZCkKMTQ0NzQ6ICAgcmV0dXJuIGNyZWQ7CjE0NDc0OiAgdmFsaWRh dGVfY3JlZHMoY3JlZCk7CjE0NDc0OiAgbm9uY29uc3RfY3JlZC0+bm9uX3JjdSA9IDA7CjE0NDc0 OiAgcmV0dXJuIGdldF9uZXdfY3JlZChub25jb25zdF9jcmVkKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgY29uc3Qgc3RydWN0IGNyZWQgKmdldF9jcmVkX3JjdShjb25zdCBzdHJ1Y3QgY3JlZCAq Y3JlZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgY3JlZCAqbm9uY29uc3RfY3JlZCA9IChzdHJ1 Y3QgY3JlZCAqKSBjcmVkOwoxNDQ3NDogIGlmICghY3JlZCkKMTQ0NzQ6ICAgcmV0dXJuICgodm9p ZCAqKTApOwoxNDQ3NDogIGlmICghYXRvbWljX2luY19ub3RfemVybygmbm9uY29uc3RfY3JlZC0+ dXNhZ2UpKQoxNDQ3NDogICByZXR1cm4gKCh2b2lkICopMCk7CjE0NDc0OiAgdmFsaWRhdGVfY3Jl ZHMoY3JlZCk7CjE0NDc0OiAgbm9uY29uc3RfY3JlZC0+bm9uX3JjdSA9IDA7CjE0NDc0OiAgcmV0 dXJuIGNyZWQ7CjE0NDc0OiB9CjE0NDc0OiAjIDI4MCAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgcHV0X2NyZWQoY29uc3Qgc3RydWN0IGNyZWQgKl9jcmVkKQoxNDQ3NDogewox NDQ3NDogIHN0cnVjdCBjcmVkICpjcmVkID0gKHN0cnVjdCBjcmVkICopIF9jcmVkOwoxNDQ3NDog CjE0NDc0OiAgaWYgKGNyZWQpIHsKMTQ0NzQ6ICAgdmFsaWRhdGVfY3JlZHMoY3JlZCk7CjE0NDc0 OiAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCYoY3JlZCktPnVzYWdlKSkKMTQ0NzQ6ICAgIF9f cHV0X2NyZWQoY3JlZCk7CjE0NDc0OiAgfQoxNDQ3NDogfQoxNDQ3NDogIyAzOTAgIi4vaW5jbHVk ZS9saW51eC9jcmVkLmgiCjE0NDc0OiBleHRlcm4gc3RydWN0IHVzZXJfbmFtZXNwYWNlIGluaXRf dXNlcl9uczsKMTQ0NzQ6ICMgMTMgIi4vaW5jbHVkZS9saW51eC9zZXFfZmlsZS5oIiAyCjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBzZXFfb3BlcmF0aW9uczsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNl cV9maWxlIHsKMTQ0NzQ6ICBjaGFyICpidWY7CjE0NDc0OiAgc2l6ZV90IHNpemU7CjE0NDc0OiAg c2l6ZV90IGZyb207CjE0NDc0OiAgc2l6ZV90IGNvdW50OwoxNDQ3NDogIHNpemVfdCBwYWRfdW50 aWw7CjE0NDc0OiAgbG9mZl90IGluZGV4OwoxNDQ3NDogIGxvZmZfdCByZWFkX3BvczsKMTQ0NzQ6 ICB1NjQgdmVyc2lvbjsKMTQ0NzQ6ICBzdHJ1Y3QgbXV0ZXggbG9jazsKMTQ0NzQ6ICBjb25zdCBz dHJ1Y3Qgc2VxX29wZXJhdGlvbnMgKm9wOwoxNDQ3NDogIGludCBwb2xsX2V2ZW50OwoxNDQ3NDog IGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlOwoxNDQ3NDogIHZvaWQgKnByaXZhdGU7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgewoxNDQ3NDogIHZvaWQgKiAo KnN0YXJ0KSAoc3RydWN0IHNlcV9maWxlICptLCBsb2ZmX3QgKnBvcyk7CjE0NDc0OiAgdm9pZCAo KnN0b3ApIChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpOwoxNDQ3NDogIHZvaWQgKiAoKm5l eHQpIChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYsIGxvZmZfdCAqcG9zKTsKMTQ0NzQ6ICBp bnQgKCpzaG93KSAoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KTsKMTQ0NzQ6IH07CjE0NDc0 OiAjIDUxICIuL2luY2x1ZGUvbGludXgvc2VxX2ZpbGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgc2VxX2hhc19v dmVyZmxvd2VkKHN0cnVjdCBzZXFfZmlsZSAqbSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbS0+ Y291bnQgPT0gbS0+c2l6ZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjQgIi4vaW5jbHVkZS9saW51eC9z ZXFfZmlsZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgc2l6ZV90IHNlcV9nZXRfYnVmKHN0cnVjdCBzZXFfZmlsZSAqbSwg Y2hhciAqKmJ1ZnApCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCgh IShtLT5jb3VudCA+IG0tPnNpemUpLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGls ZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJs ZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6 YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5Ojpm aWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMy IiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9u IiA6IDogImkiICgiaW5jbHVkZS9saW51eC9zZXFfZmlsZS5oIiksICJpIiAoNjYpLCAiaSIgKDAp LCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAoeyBh c20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hhYmxl XG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMzMp KTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGlmIChtLT5jb3VudCA8IG0t PnNpemUpCjE0NDc0OiAgICpidWZwID0gbS0+YnVmICsgbS0+Y291bnQ7CjE0NDc0OiAgZWxzZQox NDQ3NDogICAqYnVmcCA9ICgodm9pZCAqKTApOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIG0tPnNp emUgLSBtLT5jb3VudDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgODQgIi4vaW5jbHVkZS9saW51eC9zZXFf ZmlsZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBzZXFfY29tbWl0KHN0cnVjdCBzZXFfZmlsZSAqbSwgaW50IG51 bSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAobnVtIDwgMCkgewoxNDQ3NDogICBtLT5jb3VudCA9IG0t PnNpemU7CjE0NDc0OiAgfSBlbHNlIHsKMTQ0NzQ6ICAgZG8geyBpZiAoX19idWlsdGluX2V4cGVj dCghIShtLT5jb3VudCArIG51bSA+IG0tPnNpemUpLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGlu ZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBf X2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1 Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVn X2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0 LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5w b3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9zZXFfZmlsZS5oIiksICJpIiAoODkp LCAiaSIgKDApLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsg ZG8geyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVu cmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6 ICJpIiAoMzQpKTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgp OyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogICBtLT5jb3Vu dCArPSBudW07CjE0NDc0OiAgfQoxNDQ3NDogfQoxNDQ3NDogIyAxMDIgIi4vaW5jbHVkZS9saW51 eC9zZXFfZmlsZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzZXFfc2V0d2lkdGgoc3RydWN0IHNlcV9maWxlICpt LCBzaXplX3Qgc2l6ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBtLT5wYWRfdW50aWwgPSBtLT5jb3VudCAr IHNpemU7CjE0NDc0OiB9CjE0NDc0OiB2b2lkIHNlcV9wYWQoc3RydWN0IHNlcV9maWxlICptLCBj aGFyIGMpOwoxNDQ3NDogCjE0NDc0OiBjaGFyICptYW5nbGVfcGF0aChjaGFyICpzLCBjb25zdCBj aGFyICpwLCBjb25zdCBjaGFyICplc2MpOwoxNDQ3NDogaW50IHNlcV9vcGVuKHN0cnVjdCBmaWxl ICosIGNvbnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyAqKTsKMTQ0NzQ6IHNzaXplX3Qgc2VxX3Jl YWQoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKMTQ0NzQ6IGxvZmZf dCBzZXFfbHNlZWsoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQpOwoxNDQ3NDogaW50IHNlcV9y ZWxlYXNlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKMTQ0NzQ6IGludCBzZXFfd3Jp dGUoc3RydWN0IHNlcV9maWxlICpzZXEsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOwox NDQ3NDogCjE0NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMCkpKQox NDQ3NDogdm9pZCBzZXFfdnByaW50ZihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKmZt dCwgdmFfbGlzdCBhcmdzKTsKMTQ0NzQ6IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRm LCAyLCAzKSkpCjE0NDc0OiB2b2lkIHNlcV9wcmludGYoc3RydWN0IHNlcV9maWxlICptLCBjb25z dCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiB2b2lkIHNlcV9wdXRjKHN0cnVjdCBzZXFfZmlsZSAq bSwgY2hhciBjKTsKMTQ0NzQ6IHZvaWQgc2VxX3B1dHMoc3RydWN0IHNlcV9maWxlICptLCBjb25z dCBjaGFyICpzKTsKMTQ0NzQ6IHZvaWQgc2VxX3B1dF9kZWNpbWFsX3VsbF93aWR0aChzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKmRlbGltaXRlciwKMTQ0NzQ6ICAgICAgICAgICB1bnNp Z25lZCBsb25nIGxvbmcgbnVtLCB1bnNpZ25lZCBpbnQgd2lkdGgpOwoxNDQ3NDogdm9pZCBzZXFf cHV0X2RlY2ltYWxfdWxsKHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgY2hhciAqZGVsaW1pdGVy LAoxNDQ3NDogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBudW0pOwoxNDQ3NDogdm9pZCBzZXFfcHV0 X2RlY2ltYWxfbGwoc3RydWN0IHNlcV9maWxlICptLCBjb25zdCBjaGFyICpkZWxpbWl0ZXIsIGxv bmcgbG9uZyBudW0pOwoxNDQ3NDogdm9pZCBzZXFfcHV0X2hleF9sbChzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIGNvbnN0IGNoYXIgKmRlbGltaXRlciwKMTQ0NzQ6ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9u ZyB2LCB1bnNpZ25lZCBpbnQgd2lkdGgpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIHNlcV9lc2NhcGUo c3RydWN0IHNlcV9maWxlICptLCBjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICplc2MpOwoxNDQ3 NDogdm9pZCBzZXFfZXNjYXBlX21lbV9hc2NpaShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNo YXIgKnNyYywgc2l6ZV90IGlzeik7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc2VxX2hleF9kdW1wKHN0 cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgY2hhciAqcHJlZml4X3N0ciwgaW50IHByZWZpeF90eXBl LAoxNDQ3NDogICAgIGludCByb3dzaXplLCBpbnQgZ3JvdXBzaXplLCBjb25zdCB2b2lkICpidWYs IHNpemVfdCBsZW4sCjE0NDc0OiAgICAgYm9vbCBhc2NpaSk7CjE0NDc0OiAKMTQ0NzQ6IGludCBz ZXFfcGF0aChzdHJ1Y3Qgc2VxX2ZpbGUgKiwgY29uc3Qgc3RydWN0IHBhdGggKiwgY29uc3QgY2hh ciAqKTsKMTQ0NzQ6IGludCBzZXFfZmlsZV9wYXRoKHN0cnVjdCBzZXFfZmlsZSAqLCBzdHJ1Y3Qg ZmlsZSAqLCBjb25zdCBjaGFyICopOwoxNDQ3NDogaW50IHNlcV9kZW50cnkoc3RydWN0IHNlcV9m aWxlICosIHN0cnVjdCBkZW50cnkgKiwgY29uc3QgY2hhciAqKTsKMTQ0NzQ6IGludCBzZXFfcGF0 aF9yb290KHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsCjE0NDc0 OiAgICAgY29uc3Qgc3RydWN0IHBhdGggKnJvb3QsIGNvbnN0IGNoYXIgKmVzYyk7CjE0NDc0OiAK MTQ0NzQ6IGludCBzaW5nbGVfb3BlbihzdHJ1Y3QgZmlsZSAqLCBpbnQgKCopKHN0cnVjdCBzZXFf ZmlsZSAqLCB2b2lkICopLCB2b2lkICopOwoxNDQ3NDogaW50IHNpbmdsZV9vcGVuX3NpemUoc3Ry dWN0IGZpbGUgKiwgaW50ICgqKShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgdm9pZCAqKSwgdm9pZCAqLCBz aXplX3QpOwoxNDQ3NDogaW50IHNpbmdsZV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg ZmlsZSAqKTsKMTQ0NzQ6IHZvaWQgKl9fc2VxX29wZW5fcHJpdmF0ZShzdHJ1Y3QgZmlsZSAqLCBj b25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgKiwgaW50KTsKMTQ0NzQ6IGludCBzZXFfb3Blbl9w cml2YXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyAqLCBpbnQp OwoxNDQ3NDogaW50IHNlcV9yZWxlYXNlX3ByaXZhdGUoc3RydWN0IGlub2RlICosIHN0cnVjdCBm aWxlICopOwoxNDQ3NDogIyAxNzYgIi4vaW5jbHVkZS9saW51eC9zZXFfZmlsZS5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IHVzZXJfbmFtZXNwYWNlICpzZXFfdXNlcl9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSkK MTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBzZXEtPmZpbGUtPmZfY3JlZC0+dXNlcl9u czsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNl cV9zaG93X29wdGlvbihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKm5hbWUsCjE0NDc0 OiAgICAgICAgY29uc3QgY2hhciAqdmFsdWUpCjE0NDc0OiB7CjE0NDc0OiAgc2VxX3B1dGMobSwg JywnKTsKMTQ0NzQ6ICBzZXFfZXNjYXBlKG0sIG5hbWUsICIsPSBcdFxuXFwiKTsKMTQ0NzQ6ICBp ZiAodmFsdWUpIHsKMTQ0NzQ6ICAgc2VxX3B1dGMobSwgJz0nKTsKMTQ0NzQ6ICAgc2VxX2VzY2Fw ZShtLCB2YWx1ZSwgIiwgXHRcblxcIik7CjE0NDc0OiAgfQoxNDQ3NDogfQoxNDQ3NDogIyAyMjYg Ii4vaW5jbHVkZS9saW51eC9zZXFfZmlsZS5oIgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBsaXN0X2hl YWQgKnNlcV9saXN0X3N0YXJ0KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCjE0NDc0OiAgIGxvZmZf dCBwb3MpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgKnNlcV9saXN0X3N0YXJ0X2hl YWQoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwKMTQ0NzQ6ICAgbG9mZl90IHBvcyk7CjE0NDc0OiBl eHRlcm4gc3RydWN0IGxpc3RfaGVhZCAqc2VxX2xpc3RfbmV4dCh2b2lkICp2LCBzdHJ1Y3QgbGlz dF9oZWFkICpoZWFkLAoxNDQ3NDogICBsb2ZmX3QgKnBwb3MpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgaGxpc3Rfbm9kZSAqc2Vx X2hsaXN0X3N0YXJ0KHN0cnVjdCBobGlzdF9oZWFkICpoZWFkLAoxNDQ3NDogICAgICAgIGxvZmZf dCBwb3MpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBobGlzdF9ub2RlICpzZXFfaGxpc3Rfc3RhcnRf aGVhZChzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCwKMTQ0NzQ6ICAgICAgICAgICAgIGxvZmZfdCBw b3MpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBobGlzdF9ub2RlICpzZXFfaGxpc3RfbmV4dCh2b2lk ICp2LCBzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCwKMTQ0NzQ6ICAgICAgIGxvZmZfdCAqcHBvcyk7 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgaGxpc3Rfbm9kZSAqc2VxX2hsaXN0X3N0YXJ0 X3JjdShzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCwKMTQ0NzQ6ICAgICAgICAgICAgbG9mZl90IHBv cyk7CjE0NDc0OiBleHRlcm4gc3RydWN0IGhsaXN0X25vZGUgKnNlcV9obGlzdF9zdGFydF9oZWFk X3JjdShzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCwKMTQ0NzQ6ICAgICAgICAgIGxvZmZfdCBwb3Mp OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBobGlzdF9ub2RlICpzZXFfaGxpc3RfbmV4dF9yY3Uodm9p ZCAqdiwKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBobGlzdF9oZWFkICpoZWFkLAoxNDQ3NDogICAg ICAgICAgbG9mZl90ICpwcG9zKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0 IGhsaXN0X25vZGUgKnNlcV9obGlzdF9zdGFydF9wZXJjcHUoc3RydWN0IGhsaXN0X2hlYWQgKmhl YWQsIGludCAqY3B1LCBsb2ZmX3QgcG9zKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBo bGlzdF9ub2RlICpzZXFfaGxpc3RfbmV4dF9wZXJjcHUodm9pZCAqdiwgc3RydWN0IGhsaXN0X2hl YWQgKmhlYWQsIGludCAqY3B1LCBsb2ZmX3QgKnBvcyk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc2Vx X2ZpbGVfaW5pdCh2b2lkKTsKMTQ0NzQ6ICMgMzIgIi4vaW5jbHVkZS9kcm0vZHJtX3ByaW50Lmgi IDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIiAxCjE0NDc0OiAjIDE1ICIu L2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9kZXZf cHJpbnRrLmgiIDEKMTQ0NzQ6ICMgMjIgIi4vaW5jbHVkZS9saW51eC9kZXZfcHJpbnRrLmgiCjE0 NDc0OiBzdHJ1Y3QgZGV2aWNlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogX19hdHRy aWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDApKSkgX19hdHRyaWJ1dGVfXygoX19jb2xk X18pKQoxNDQ3NDogaW50IGRldl92cHJpbnRrX2VtaXQoaW50IGxldmVsLCBjb25zdCBzdHJ1Y3Qg ZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgICAgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3Mp OwoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkgX19hdHRy aWJ1dGVfXygoX19jb2xkX18pKQoxNDQ3NDogaW50IGRldl9wcmludGtfZW1pdChpbnQgbGV2ZWws IGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDog CjE0NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkpKSBfX2F0dHJp YnV0ZV9fKChfX2NvbGRfXykpCjE0NDc0OiB2b2lkIGRldl9wcmludGsoY29uc3QgY2hhciAqbGV2 ZWwsIGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwKMTQ0NzQ6ICAgY29uc3QgY2hhciAqZm10LCAu Li4pOwoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkgX19h dHRyaWJ1dGVfXygoX19jb2xkX18pKQoxNDQ3NDogdm9pZCBfZGV2X2VtZXJnKGNvbnN0IHN0cnVj dCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDogX19hdHRyaWJ1dGVf XygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKQox NDQ3NDogdm9pZCBfZGV2X2FsZXJ0KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hh ciAqZm10LCAuLi4pOwoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIs IDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKQoxNDQ3NDogdm9pZCBfZGV2X2NyaXQoY29u c3Qgc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiBfX2F0 dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKSBfX2F0dHJpYnV0ZV9fKChfX2Nv bGRfXykpCjE0NDc0OiB2b2lkIF9kZXZfZXJyKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgY29u c3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmlu dGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKQoxNDQ3NDogdm9pZCBfZGV2X3dh cm4oY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0 OiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKSBfX2F0dHJpYnV0ZV9f KChfX2NvbGRfXykpCjE0NDc0OiB2b2lkIF9kZXZfbm90aWNlKGNvbnN0IHN0cnVjdCBkZXZpY2Ug KmRldiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3Jt YXRfXyhwcmludGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKQoxNDQ3NDogdm9p ZCBfZGV2X2luZm8oY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpmbXQsIC4u Lik7CjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiIDIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oIiAxCjE0NDc0OiAjIDIwICIuL2luY2x1ZGUvbGludXgv aW9wb3J0LmgiCjE0NDc0OiBzdHJ1Y3QgcmVzb3VyY2UgewoxNDQ3NDogIHJlc291cmNlX3NpemVf dCBzdGFydDsKMTQ0NzQ6ICByZXNvdXJjZV9zaXplX3QgZW5kOwoxNDQ3NDogIGNvbnN0IGNoYXIg Km5hbWU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBmbGFnczsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IGRlc2M7CjE0NDc0OiAgc3RydWN0IHJlc291cmNlICpwYXJlbnQsICpzaWJsaW5nLCAqY2hpbGQ7 CjE0NDc0OiB9OwoxNDQ3NDogIyAxMjggIi4vaW5jbHVkZS9saW51eC9pb3BvcnQuaCIKMTQ0NzQ6 IGVudW0gewoxNDQ3NDogIElPUkVTX0RFU0NfTk9ORSA9IDAsCjE0NDc0OiAgSU9SRVNfREVTQ19D UkFTSF9LRVJORUwgPSAxLAoxNDQ3NDogIElPUkVTX0RFU0NfQUNQSV9UQUJMRVMgPSAyLAoxNDQ3 NDogIElPUkVTX0RFU0NfQUNQSV9OVl9TVE9SQUdFID0gMywKMTQ0NzQ6ICBJT1JFU19ERVNDX1BF UlNJU1RFTlRfTUVNT1JZID0gNCwKMTQ0NzQ6ICBJT1JFU19ERVNDX1BFUlNJU1RFTlRfTUVNT1JZ X0xFR0FDWSA9IDUsCjE0NDc0OiAgSU9SRVNfREVTQ19ERVZJQ0VfUFJJVkFURV9NRU1PUlkgPSA2 LAoxNDQ3NDogIElPUkVTX0RFU0NfUkVTRVJWRUQgPSA3LAoxNDQ3NDogIElPUkVTX0RFU0NfU09G VF9SRVNFUlZFRCA9IDgsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBJT1JFU19NQVBfU1lTVEVNX1JBTSA9ICgoKCgxVUwpKSkg PDwgKDApKSwKMTQ0NzQ6ICBJT1JFU19NQVBfRU5DUllQVEVEID0gKCgoKDFVTCkpKSA8PCAoMSkp LAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTc5ICIuL2luY2x1ZGUvbGludXgvaW9wb3J0LmgiCjE0NDc0 OiBleHRlcm4gc3RydWN0IHJlc291cmNlIGlvcG9ydF9yZXNvdXJjZTsKMTQ0NzQ6IGV4dGVybiBz dHJ1Y3QgcmVzb3VyY2UgaW9tZW1fcmVzb3VyY2U7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1 Y3QgcmVzb3VyY2UgKnJlcXVlc3RfcmVzb3VyY2VfY29uZmxpY3Qoc3RydWN0IHJlc291cmNlICpy b290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CjE0NDc0OiBleHRlcm4gaW50IHJlcXVlc3RfcmVz b3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CjE0NDc0 OiBleHRlcm4gaW50IHJlbGVhc2VfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpuZXcpOwoxNDQ3 NDogdm9pZCByZWxlYXNlX2NoaWxkX3Jlc291cmNlcyhzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CjE0 NDc0OiBleHRlcm4gdm9pZCByZXNlcnZlX3JlZ2lvbl93aXRoX3NwbGl0KHN0cnVjdCByZXNvdXJj ZSAqcm9vdCwKMTQ0NzQ6ICAgICAgICAgcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LCByZXNvdXJjZV9z aXplX3QgZW5kLAoxNDQ3NDogICAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKMTQ0NzQ6IGV4dGVy biBzdHJ1Y3QgcmVzb3VyY2UgKmluc2VydF9yZXNvdXJjZV9jb25mbGljdChzdHJ1Y3QgcmVzb3Vy Y2UgKnBhcmVudCwgc3RydWN0IHJlc291cmNlICpuZXcpOwoxNDQ3NDogZXh0ZXJuIGludCBpbnNl cnRfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpwYXJlbnQsIHN0cnVjdCByZXNvdXJjZSAqbmV3 KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGluc2VydF9yZXNvdXJjZV9leHBhbmRfdG9fZml0KHN0cnVj dCByZXNvdXJjZSAqcm9vdCwgc3RydWN0IHJlc291cmNlICpuZXcpOwoxNDQ3NDogZXh0ZXJuIGlu dCByZW1vdmVfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpvbGQpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgYXJjaF9yZW1vdmVfcmVzZXJ2YXRpb25zKHN0cnVjdCByZXNvdXJjZSAqYXZhaWwpOwoxNDQ3 NDogZXh0ZXJuIGludCBhbGxvY2F0ZV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0 cnVjdCByZXNvdXJjZSAqbmV3LAoxNDQ3NDogICAgICAgICByZXNvdXJjZV9zaXplX3Qgc2l6ZSwg cmVzb3VyY2Vfc2l6ZV90IG1pbiwKMTQ0NzQ6ICAgICAgICAgcmVzb3VyY2Vfc2l6ZV90IG1heCwg cmVzb3VyY2Vfc2l6ZV90IGFsaWduLAoxNDQ3NDogICAgICAgICByZXNvdXJjZV9zaXplX3QgKCph bGlnbmYpKHZvaWQgKiwKMTQ0NzQ6ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2Ug KiwKMTQ0NzQ6ICAgICAgICAgICAgICByZXNvdXJjZV9zaXplX3QsCjE0NDc0OiAgICAgICAgICAg ICAgcmVzb3VyY2Vfc2l6ZV90KSwKMTQ0NzQ6ICAgICAgICAgdm9pZCAqYWxpZ25mX2RhdGEpOwox NDQ3NDogc3RydWN0IHJlc291cmNlICpsb29rdXBfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpy b290LCByZXNvdXJjZV9zaXplX3Qgc3RhcnQpOwoxNDQ3NDogaW50IGFkanVzdF9yZXNvdXJjZShz dHJ1Y3QgcmVzb3VyY2UgKnJlcywgcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LAoxNDQ3NDogICAgICAg cmVzb3VyY2Vfc2l6ZV90IHNpemUpOwoxNDQ3NDogcmVzb3VyY2Vfc2l6ZV90IHJlc291cmNlX2Fs aWdubWVudChzdHJ1Y3QgcmVzb3VyY2UgKnJlcyk7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSByZXNvdXJjZV9zaXplX3QgcmVz b3VyY2Vfc2l6ZShjb25zdCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcykKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gcmVzLT5lbmQgLSByZXMtPnN0YXJ0ICsgMTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVk IGxvbmcgcmVzb3VyY2VfdHlwZShjb25zdCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcykKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gcmVzLT5mbGFncyAmIDB4MDAwMDFmMDA7CjE0NDc0OiB9CjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1 bnNpZ25lZCBsb25nIHJlc291cmNlX2V4dF90eXBlKGNvbnN0IHN0cnVjdCByZXNvdXJjZSAqcmVz KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiByZXMtPmZsYWdzICYgMHgwMTAwMDAwMDsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCByZXNvdXJjZV9jb250YWlucyhzdHJ1Y3QgcmVzb3VyY2Ug KnIxLCBzdHJ1Y3QgcmVzb3VyY2UgKnIyKQoxNDQ3NDogewoxNDQ3NDogIGlmIChyZXNvdXJjZV90 eXBlKHIxKSAhPSByZXNvdXJjZV90eXBlKHIyKSkKMTQ0NzQ6ICAgcmV0dXJuIGZhbHNlOwoxNDQ3 NDogIGlmIChyMS0+ZmxhZ3MgJiAweDIwMDAwMDAwIHx8IHIyLT5mbGFncyAmIDB4MjAwMDAwMDAp CjE0NDc0OiAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6ICByZXR1cm4gcjEtPnN0YXJ0IDw9IHIyLT5z dGFydCAmJiByMS0+ZW5kID49IHIyLT5lbmQ7CjE0NDc0OiB9CjE0NDc0OiAjIDIzOCAiLi9pbmNs dWRlL2xpbnV4L2lvcG9ydC5oIgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSAqIF9fcmVx dWVzdF9yZWdpb24oc3RydWN0IHJlc291cmNlICosCjE0NDc0OiAgICAgIHJlc291cmNlX3NpemVf dCBzdGFydCwKMTQ0NzQ6ICAgICAgcmVzb3VyY2Vfc2l6ZV90IG4sCjE0NDc0OiAgICAgIGNvbnN0 IGNoYXIgKm5hbWUsIGludCBmbGFncyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgX19yZWxlYXNlX3JlZ2lvbihzdHJ1Y3QgcmVzb3Vy Y2UgKiwgcmVzb3VyY2Vfc2l6ZV90LAoxNDQ3NDogICAgIHJlc291cmNlX3NpemVfdCk7CjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBpbnQgcmVsZWFzZV9tZW1fcmVnaW9uX2FkanVzdGFibGUoc3RydWN0 IHJlc291cmNlICosIHJlc291cmNlX3NpemVfdCwKMTQ0NzQ6ICAgICByZXNvdXJjZV9zaXplX3Qp OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRldmljZTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGludCBkZXZtX3JlcXVlc3RfcmVzb3VyY2Uoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsCjE0NDc0OiAgICAgIHN0cnVjdCByZXNvdXJjZSAqbmV3 KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRldm1fcmVsZWFzZV9yZXNvdXJjZShzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCByZXNvdXJjZSAqbmV3KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgcmVzb3VyY2UgKiBfX2Rl dm1fcmVxdWVzdF9yZWdpb24oc3RydWN0IGRldmljZSAqZGV2LAoxNDQ3NDogICAgIHN0cnVjdCBy ZXNvdXJjZSAqcGFyZW50LCByZXNvdXJjZV9zaXplX3Qgc3RhcnQsCjE0NDc0OiAgICAgcmVzb3Vy Y2Vfc2l6ZV90IG4sIGNvbnN0IGNoYXIgKm5hbWUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgX19kZXZtX3JlbGVhc2Vf cmVnaW9uKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJlc291cmNlICpwYXJlbnQsCjE0NDc0 OiAgICAgICByZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBuKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgaW9tZW1fbWFwX3Nhbml0eV9jaGVjayhyZXNvdXJjZV9zaXplX3QgYWRkciwg dW5zaWduZWQgbG9uZyBzaXplKTsKMTQ0NzQ6IGV4dGVybiBib29sIGlvbWVtX2lzX2V4Y2x1c2l2 ZSh1NjQgYWRkcik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQKMTQ0NzQ6IHdhbGtfc3lzdGVt X3JhbV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdl cywKMTQ0NzQ6ICAgdm9pZCAqYXJnLCBpbnQgKCpmdW5jKSh1bnNpZ25lZCBsb25nLCB1bnNpZ25l ZCBsb25nLCB2b2lkICopKTsKMTQ0NzQ6IGV4dGVybiBpbnQKMTQ0NzQ6IHdhbGtfbWVtX3Jlcyh1 NjQgc3RhcnQsIHU2NCBlbmQsIHZvaWQgKmFyZywKMTQ0NzQ6ICAgICAgIGludCAoKmZ1bmMpKHN0 cnVjdCByZXNvdXJjZSAqLCB2b2lkICopKTsKMTQ0NzQ6IGV4dGVybiBpbnQKMTQ0NzQ6IHdhbGtf c3lzdGVtX3JhbV9yZXModTY0IHN0YXJ0LCB1NjQgZW5kLCB2b2lkICphcmcsCjE0NDc0OiAgICAg ICBpbnQgKCpmdW5jKShzdHJ1Y3QgcmVzb3VyY2UgKiwgdm9pZCAqKSk7CjE0NDc0OiBleHRlcm4g aW50CjE0NDc0OiB3YWxrX2lvbWVtX3Jlc19kZXNjKHVuc2lnbmVkIGxvbmcgZGVzYywgdW5zaWdu ZWQgbG9uZyBmbGFncywgdTY0IHN0YXJ0LCB1NjQgZW5kLAoxNDQ3NDogICAgICAgdm9pZCAqYXJn LCBpbnQgKCpmdW5jKShzdHJ1Y3QgcmVzb3VyY2UgKiwgdm9pZCAqKSk7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCByZXNvdXJjZV9vdmVybGFwcyhzdHJ1Y3QgcmVzb3VyY2UgKnIxLCBzdHJ1 Y3QgcmVzb3VyY2UgKnIyKQoxNDQ3NDogewoxNDQ3NDogICAgICAgIHJldHVybiAocjEtPnN0YXJ0 IDw9IHIyLT5lbmQgJiYgcjEtPmVuZCA+PSByMi0+c3RhcnQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgcmVzb3VyY2UgKmRldm1fcmVxdWVzdF9mcmVlX21lbV9yZWdpb24oc3RydWN0 IGRldmljZSAqZGV2LAoxNDQ3NDogICBzdHJ1Y3QgcmVzb3VyY2UgKmJhc2UsIHVuc2lnbmVkIGxv bmcgc2l6ZSk7CjE0NDc0OiBzdHJ1Y3QgcmVzb3VyY2UgKnJlcXVlc3RfZnJlZV9tZW1fcmVnaW9u KHN0cnVjdCByZXNvdXJjZSAqYmFzZSwKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyBzaXplLCBjb25z dCBjaGFyICpuYW1lKTsKMTQ0NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIgMgox NDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgva29iamVjdC5oIiAxCjE0NDc0OiAjIDIwICIuL2lu Y2x1ZGUvbGludXgva29iamVjdC5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvc3lzZnMu aCIgMQoxNDQ3NDogIyAxNiAiLi9pbmNsdWRlL2xpbnV4L3N5c2ZzLmgiCjE0NDc0OiAjIDEgIi4v aW5jbHVkZS9saW51eC9rZXJuZnMuaCIgMQoxNDQ3NDogIyAxMyAiLi9pbmNsdWRlL2xpbnV4L2tl cm5mcy5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvaWRyLmgiIDEKMTQ0NzQ6ICMgMTkg Ii4vaW5jbHVkZS9saW51eC9pZHIuaCIKMTQ0NzQ6IHN0cnVjdCBpZHIgewoxNDQ3NDogIHN0cnVj dCB4YXJyYXkgaWRyX3J0OwoxNDQ3NDogIHVuc2lnbmVkIGludCBpZHJfYmFzZTsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgaWRyX25leHQ7CjE0NDc0OiB9OwoxNDQ3NDogIyA2NiAiLi9pbmNsdWRlL2xp bnV4L2lkci5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGlkcl9nZXRfY3Vyc29yKGNvbnN0IHN0cnVj dCBpZHIgKmlkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdW5pb24geyB0eXBlb2YoaWRy LT5pZHJfbmV4dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNl X3NpemUoJihpZHItPmlkcl9uZXh0KSwgX191Ll9fYywgc2l6ZW9mKGlkci0+aWRyX25leHQpKTsg ZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihpZHItPmlkcl9uZXh0KSwgX191Ll9fYywg c2l6ZW9mKGlkci0+aWRyX25leHQpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgNzkgIi4vaW5jbHVkZS9saW51eC9pZHIuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg aWRyX3NldF9jdXJzb3Ioc3RydWN0IGlkciAqaWRyLCB1bnNpZ25lZCBpbnQgdmFsKQoxNDQ3NDog ewoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKGlkci0+aWRyX25leHQpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKGlkci0+aWRyX25leHQpKSAodmFsKSB9 OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKGlkci0+aWRyX25leHQpLCBfX3UuX19jLCBzaXplb2YoaWRy LT5pZHJfbmV4dCkpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDogfQoxNDQ3NDogIyAxMTIgIi4vaW5j bHVkZS9saW51eC9pZHIuaCIKMTQ0NzQ6IHZvaWQgaWRyX3ByZWxvYWQoZ2ZwX3QgZ2ZwX21hc2sp OwoxNDQ3NDogCjE0NDc0OiBpbnQgaWRyX2FsbG9jKHN0cnVjdCBpZHIgKiwgdm9pZCAqcHRyLCBp bnQgc3RhcnQsIGludCBlbmQsIGdmcF90KTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dh cm5fdW51c2VkX3Jlc3VsdF9fKSkgaWRyX2FsbG9jX3UzMihzdHJ1Y3QgaWRyICosIHZvaWQgKnB0 ciwgdTMyICppZCwKMTQ0NzQ6ICAgICB1bnNpZ25lZCBsb25nIG1heCwgZ2ZwX3QpOwoxNDQ3NDog aW50IGlkcl9hbGxvY19jeWNsaWMoc3RydWN0IGlkciAqLCB2b2lkICpwdHIsIGludCBzdGFydCwg aW50IGVuZCwgZ2ZwX3QpOwoxNDQ3NDogdm9pZCAqaWRyX3JlbW92ZShzdHJ1Y3QgaWRyICosIHVu c2lnbmVkIGxvbmcgaWQpOwoxNDQ3NDogdm9pZCAqaWRyX2ZpbmQoY29uc3Qgc3RydWN0IGlkciAq LCB1bnNpZ25lZCBsb25nIGlkKTsKMTQ0NzQ6IGludCBpZHJfZm9yX2VhY2goY29uc3Qgc3RydWN0 IGlkciAqLAoxNDQ3NDogICAgaW50ICgqZm4pKGludCBpZCwgdm9pZCAqcCwgdm9pZCAqZGF0YSks IHZvaWQgKmRhdGEpOwoxNDQ3NDogdm9pZCAqaWRyX2dldF9uZXh0KHN0cnVjdCBpZHIgKiwgaW50 ICpuZXh0aWQpOwoxNDQ3NDogdm9pZCAqaWRyX2dldF9uZXh0X3VsKHN0cnVjdCBpZHIgKiwgdW5z aWduZWQgbG9uZyAqbmV4dGlkKTsKMTQ0NzQ6IHZvaWQgKmlkcl9yZXBsYWNlKHN0cnVjdCBpZHIg Kiwgdm9pZCAqLCB1bnNpZ25lZCBsb25nIGlkKTsKMTQ0NzQ6IHZvaWQgaWRyX2Rlc3Ryb3koc3Ry dWN0IGlkciAqKTsKMTQ0NzQ6ICMgMTM1ICIuL2luY2x1ZGUvbGludXgvaWRyLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGlkcl9pbml0X2Jhc2Uoc3RydWN0IGlkciAqaWRyLCBpbnQgYmFzZSkKMTQ0NzQ6IHsKMTQ0 NzQ6ICB4YV9pbml0X2ZsYWdzKCZpZHItPmlkcl9ydCwgKCgoIGdmcF90KTQpIHwgKCBnZnBfdCkg KDEgPDwgKCgoMjMgKyAwKSkgKyAwKSkpKTsKMTQ0NzQ6ICBpZHItPmlkcl9iYXNlID0gYmFzZTsK MTQ0NzQ6ICBpZHItPmlkcl9uZXh0ID0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQ5ICIuL2luY2x1 ZGUvbGludXgvaWRyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlkcl9pbml0KHN0cnVjdCBpZHIgKmlkcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBpZHJfaW5pdF9iYXNlKGlkciwgMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg aWRyX2lzX2VtcHR5KGNvbnN0IHN0cnVjdCBpZHIgKmlkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gcmFkaXhfdHJlZV9lbXB0eSgmaWRyLT5pZHJfcnQpICYmCjE0NDc0OiAgIHJhZGl4X3RyZWVf dGFnZ2VkKCZpZHItPmlkcl9ydCwgMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaWRyX3ByZWxvYWRf ZW5kKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJt ZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjQwICIuL2luY2x1ZGUvbGludXgvaWRyLmgiCjE0 NDc0OiBzdHJ1Y3QgaWRhX2JpdG1hcCB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBiaXRtYXBbKDEy OCAvIHNpemVvZihsb25nKSldOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGlkYSB7 CjE0NDc0OiAgc3RydWN0IHhhcnJheSB4YTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDI1NSAiLi9pbmNs dWRlL2xpbnV4L2lkci5oIgoxNDQ3NDogaW50IGlkYV9hbGxvY19yYW5nZShzdHJ1Y3QgaWRhICos IHVuc2lnbmVkIGludCBtaW4sIHVuc2lnbmVkIGludCBtYXgsIGdmcF90KTsKMTQ0NzQ6IHZvaWQg aWRhX2ZyZWUoc3RydWN0IGlkYSAqLCB1bnNpZ25lZCBpbnQgaWQpOwoxNDQ3NDogdm9pZCBpZGFf ZGVzdHJveShzdHJ1Y3QgaWRhICppZGEpOwoxNDQ3NDogIyAyNzAgIi4vaW5jbHVkZS9saW51eC9p ZHIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBpZGFfYWxsb2Moc3RydWN0IGlkYSAqaWRhLCBnZnBfdCBnZnApCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGlkYV9hbGxvY19yYW5nZShpZGEsIDAsIH4wLCBnZnApOwox NDQ3NDogfQoxNDQ3NDogIyAyODcgIi4vaW5jbHVkZS9saW51eC9pZHIuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBp ZGFfYWxsb2NfbWluKHN0cnVjdCBpZGEgKmlkYSwgdW5zaWduZWQgaW50IG1pbiwgZ2ZwX3QgZ2Zw KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBpZGFfYWxsb2NfcmFuZ2UoaWRhLCBtaW4sIH4wLCBn ZnApOwoxNDQ3NDogfQoxNDQ3NDogIyAzMDQgIi4vaW5jbHVkZS9saW51eC9pZHIuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBpZGFfYWxsb2NfbWF4KHN0cnVjdCBpZGEgKmlkYSwgdW5zaWduZWQgaW50IG1heCwgZ2Zw X3QgZ2ZwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBpZGFfYWxsb2NfcmFuZ2UoaWRhLCAwLCBt YXgsIGdmcCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaWRhX2luaXQoc3RydWN0IGlk YSAqaWRhKQoxNDQ3NDogewoxNDQ3NDogIHhhX2luaXRfZmxhZ3MoJmlkYS0+eGEsICgoKCBnZnBf dClYQV9MT0NLX0lSUSkgfCAoKCggZ2ZwX3QpNFUpIHwgKCggZ2ZwX3QpKCgxVSA8PCAoMjMgKyAw KSkgPDwgKCB1bnNpZ25lZCkoKCggeGFfbWFya190KTBVKSkpKSkpKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGlkYV9pc19lbXB0 eShjb25zdCBzdHJ1Y3QgaWRhICppZGEpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHhhX2VtcHR5 KCZpZGEtPnhhKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQgIi4vaW5jbHVkZS9saW51eC9rZXJuZnMu aCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGZpbGU7CjE0NDc0OiBzdHJ1Y3QgZGVudHJ5OwoxNDQ3NDogc3RydWN0IGlhdHRy OwoxNDQ3NDogc3RydWN0IHNlcV9maWxlOwoxNDQ3NDogc3RydWN0IHZtX2FyZWFfc3RydWN0Owox NDQ3NDogc3RydWN0IHN1cGVyX2Jsb2NrOwoxNDQ3NDogc3RydWN0IGZpbGVfc3lzdGVtX3R5cGU7 CjE0NDc0OiBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3Q7CjE0NDc0OiBzdHJ1Y3QgZnNfY29udGV4 dDsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGtlcm5mc19mc19jb250ZXh0OwoxNDQ3NDogc3RydWN0 IGtlcm5mc19vcGVuX25vZGU7CjE0NDc0OiBzdHJ1Y3Qga2VybmZzX2lhdHRyczsKMTQ0NzQ6IAox NDQ3NDogZW51bSBrZXJuZnNfbm9kZV90eXBlIHsKMTQ0NzQ6ICBLRVJORlNfRElSID0gMHgwMDAx LAoxNDQ3NDogIEtFUk5GU19GSUxFID0gMHgwMDAyLAoxNDQ3NDogIEtFUk5GU19MSU5LID0gMHgw MDA0LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51 bSBrZXJuZnNfbm9kZV9mbGFnIHsKMTQ0NzQ6ICBLRVJORlNfQUNUSVZBVEVEID0gMHgwMDEwLAox NDQ3NDogIEtFUk5GU19OUyA9IDB4MDAyMCwKMTQ0NzQ6ICBLRVJORlNfSEFTX1NFUV9TSE9XID0g MHgwMDQwLAoxNDQ3NDogIEtFUk5GU19IQVNfTU1BUCA9IDB4MDA4MCwKMTQ0NzQ6ICBLRVJORlNf TE9DS0RFUCA9IDB4MDEwMCwKMTQ0NzQ6ICBLRVJORlNfU1VJQ0lEQUwgPSAweDA0MDAsCjE0NDc0 OiAgS0VSTkZTX1NVSUNJREVEID0gMHgwODAwLAoxNDQ3NDogIEtFUk5GU19FTVBUWV9ESVIgPSAw eDEwMDAsCjE0NDc0OiAgS0VSTkZTX0hBU19SRUxFQVNFID0gMHgyMDAwLAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGtlcm5mc19yb290X2ZsYWcgewoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIEtFUk5GU19ST09UX0NS RUFURV9ERUFDVElWQVRFRCA9IDB4MDAwMSwKMTQ0NzQ6ICMgNzQgIi4vaW5jbHVkZS9saW51eC9r ZXJuZnMuaCIKMTQ0NzQ6ICBLRVJORlNfUk9PVF9FWFRSQV9PUEVOX1BFUk1fQ0hFQ0sgPSAweDAw MDIsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIEtFUk5G U19ST09UX1NVUFBPUlRfRVhQT1JUT1AgPSAweDAwMDQsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBrZXJuZnNfZWxlbV9kaXIgewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg c3ViZGlyczsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCByYl9yb290IGNoaWxkcmVuOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qga2VybmZzX3Jv b3QgKnJvb3Q7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qga2VybmZzX2VsZW1fc3lt bGluayB7CjE0NDc0OiAgc3RydWN0IGtlcm5mc19ub2RlICp0YXJnZXRfa247CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3Qga2VybmZzX2VsZW1fYXR0ciB7CjE0NDc0OiAgY29uc3Qgc3Ry dWN0IGtlcm5mc19vcHMgKm9wczsKMTQ0NzQ6ICBzdHJ1Y3Qga2VybmZzX29wZW5fbm9kZSAqb3Bl bjsKMTQ0NzQ6ICBsb2ZmX3Qgc2l6ZTsKMTQ0NzQ6ICBzdHJ1Y3Qga2VybmZzX25vZGUgKm5vdGlm eV9uZXh0OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTE2ICIuL2luY2x1ZGUvbGludXgva2VybmZzLmgi CjE0NDc0OiBzdHJ1Y3Qga2VybmZzX25vZGUgewoxNDQ3NDogIGF0b21pY190IGNvdW50OwoxNDQ3 NDogIGF0b21pY190IGFjdGl2ZTsKMTQ0NzQ6ICMgMTI4ICIuL2luY2x1ZGUvbGludXgva2VybmZz LmgiCjE0NDc0OiAgc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQ7CjE0NDc0OiAgY29uc3QgY2hh ciAqbmFtZTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCByYl9ub2RlIHJiOwoxNDQ3NDogCjE0NDc0 OiAgY29uc3Qgdm9pZCAqbnM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGhhc2g7CjE0NDc0OiAgdW5p b24gewoxNDQ3NDogICBzdHJ1Y3Qga2VybmZzX2VsZW1fZGlyIGRpcjsKMTQ0NzQ6ICAgc3RydWN0 IGtlcm5mc19lbGVtX3N5bWxpbmsgc3ltbGluazsKMTQ0NzQ6ICAgc3RydWN0IGtlcm5mc19lbGVt X2F0dHIgYXR0cjsKMTQ0NzQ6ICB9OwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAqcHJpdjsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTY0IGlkOwoxNDQ3NDog CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgZmxhZ3M7CjE0NDc0OiAgdW1vZGVfdCBtb2RlOwoxNDQ3 NDogIHN0cnVjdCBrZXJuZnNfaWF0dHJzICppYXR0cjsKMTQ0NzQ6IH07CjE0NDc0OiAjIDE2MSAi Li9pbmNsdWRlL2xpbnV4L2tlcm5mcy5oIgoxNDQ3NDogc3RydWN0IGtlcm5mc19zeXNjYWxsX29w cyB7CjE0NDc0OiAgaW50ICgqc2hvd19vcHRpb25zKShzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCBzdHJ1 Y3Qga2VybmZzX3Jvb3QgKnJvb3QpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqbWtkaXIpKHN0cnVj dCBrZXJuZnNfbm9kZSAqcGFyZW50LCBjb25zdCBjaGFyICpuYW1lLAoxNDQ3NDogICAgICAgIHVt b2RlX3QgbW9kZSk7CjE0NDc0OiAgaW50ICgqcm1kaXIpKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24p OwoxNDQ3NDogIGludCAoKnJlbmFtZSkoc3RydWN0IGtlcm5mc19ub2RlICprbiwgc3RydWN0IGtl cm5mc19ub2RlICpuZXdfcGFyZW50LAoxNDQ3NDogICAgICAgICBjb25zdCBjaGFyICpuZXdfbmFt ZSk7CjE0NDc0OiAgaW50ICgqc2hvd19wYXRoKShzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCBzdHJ1Y3Qg a2VybmZzX25vZGUgKmtuLAoxNDQ3NDogICAgIHN0cnVjdCBrZXJuZnNfcm9vdCAqcm9vdCk7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qga2VybmZzX3Jvb3QgewoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IGtlcm5mc19ub2RlICprbjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZmxhZ3M7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBpZHIgaW5vX2lkcjsKMTQ0NzQ6ICB1MzIgbGFz dF9pZF9sb3diaXRzOwoxNDQ3NDogIHUzMiBpZF9oaWdoYml0czsKMTQ0NzQ6ICBzdHJ1Y3Qga2Vy bmZzX3N5c2NhbGxfb3BzICpzeXNjYWxsX29wczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IGxpc3RfaGVhZCBzdXBlcnM7CjE0NDc0OiAKMTQ0NzQ6ICB3YWl0X3F1ZXVlX2hlYWRfdCBk ZWFjdGl2YXRlX3dhaXRxOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGtlcm5mc19v cGVuX2ZpbGUgewoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGtlcm5mc19ub2RlICprbjsKMTQ0NzQ6 ICBzdHJ1Y3QgZmlsZSAqZmlsZTsKMTQ0NzQ6ICBzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcV9maWxlOwox NDQ3NDogIHZvaWQgKnByaXY7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBtdXRleCBt dXRleDsKMTQ0NzQ6ICBzdHJ1Y3QgbXV0ZXggcHJlYWxsb2NfbXV0ZXg7CjE0NDc0OiAgaW50IGV2 ZW50OwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKMTQ0NzQ6ICBjaGFyICpwcmVhbGxv Y19idWY7CjE0NDc0OiAKMTQ0NzQ6ICBzaXplX3QgYXRvbWljX3dyaXRlX2xlbjsKMTQ0NzQ6ICBi b29sIG1tYXBwZWQ6MTsKMTQ0NzQ6ICBib29sIHJlbGVhc2VkOjE7CjE0NDc0OiAgY29uc3Qgc3Ry dWN0IHZtX29wZXJhdGlvbnNfc3RydWN0ICp2bV9vcHM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3Qga2VybmZzX29wcyB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBpbnQgKCpvcGVuKShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YpOwoxNDQ3NDogIHZv aWQgKCpyZWxlYXNlKShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YpOwoxNDQ3NDogIyAyMjkg Ii4vaW5jbHVkZS9saW51eC9rZXJuZnMuaCIKMTQ0NzQ6ICBpbnQgKCpzZXFfc2hvdykoc3RydWN0 IHNlcV9maWxlICpzZiwgdm9pZCAqdik7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICooKnNlcV9zdGFy dCkoc3RydWN0IHNlcV9maWxlICpzZiwgbG9mZl90ICpwcG9zKTsKMTQ0NzQ6ICB2b2lkICooKnNl cV9uZXh0KShzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCB2b2lkICp2LCBsb2ZmX3QgKnBwb3MpOwoxNDQ3 NDogIHZvaWQgKCpzZXFfc3RvcCkoc3RydWN0IHNlcV9maWxlICpzZiwgdm9pZCAqdik7CjE0NDc0 OiAKMTQ0NzQ6ICBzc2l6ZV90ICgqcmVhZCkoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBj aGFyICpidWYsIHNpemVfdCBieXRlcywKMTQ0NzQ6ICAgIGxvZmZfdCBvZmYpOwoxNDQ3NDogIyAy NDUgIi4vaW5jbHVkZS9saW51eC9rZXJuZnMuaCIKMTQ0NzQ6ICBzaXplX3QgYXRvbWljX3dyaXRl X2xlbjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBib29sIHByZWFsbG9jOwoxNDQ3NDogIHNzaXplX3QgKCp3cml0ZSkoc3RydWN0IGtlcm5m c19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsIHNpemVfdCBieXRlcywKMTQ0NzQ6ICAgICBsb2Zm X3Qgb2ZmKTsKMTQ0NzQ6IAoxNDQ3NDogIF9fcG9sbF90ICgqcG9sbCkoc3RydWN0IGtlcm5mc19v cGVuX2ZpbGUgKm9mLAoxNDQ3NDogICAgIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqcHQpOwox NDQ3NDogCjE0NDc0OiAgaW50ICgqbW1hcCkoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBrZXJuZnNfZnNfY29udGV4dCB7CjE0NDc0OiAgc3RydWN0IGtlcm5mc19yb290ICpyb290Owox NDQ3NDogIHZvaWQgKm5zX3RhZzsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIG1hZ2ljOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBib29sIG5ld19zYl9jcmVhdGVkOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGVudW0ga2VybmZzX25vZGVfdHlwZSBrZXJuZnNfdHlwZShz dHJ1Y3Qga2VybmZzX25vZGUgKmtuKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrbi0+ZmxhZ3Mg JiAweDAwMGY7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlub190IGtlcm5mc19pZF9pbm8odTY0 IGlkKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgaWYgKHNpemVvZihpbm9fdCkgPj0gc2l6ZW9m KHU2NCkpCjE0NDc0OiAgIHJldHVybiBpZDsKMTQ0NzQ6ICBlbHNlCjE0NDc0OiAgIHJldHVybiAo dTMyKWlkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIga2VybmZzX2lkX2dlbih1NjQgaWQp CjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoc2l6ZW9mKGlub190KSA+PSBzaXplb2YodTY0 KSkKMTQ0NzQ6ICAgcmV0dXJuIDE7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICByZXR1cm4gaWQgPj4g MzI7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlub190IGtlcm5mc19pbm8oc3RydWN0IGtlcm5m c19ub2RlICprbikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga2VybmZzX2lkX2lubyhrbi0+aWQp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbm9fdCBrZXJuZnNfZ2VuKHN0cnVjdCBrZXJuZnNf bm9kZSAqa24pCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtlcm5mc19pZF9nZW4oa24tPmlkKTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgMzIxICIuL2luY2x1ZGUvbGludXgva2VybmZzLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGtlcm5mc19lbmFibGVfbnMoc3RydWN0IGtlcm5mc19ub2RlICprbikKMTQ0NzQ6IHsKMTQ0 NzQ6ICAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGtlcm5mc190eXBlKGtuKSAhPSBLRVJORlNf RElSKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRv IHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAi LnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAi IC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIg LSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRy eTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3Jn IDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L2tlcm5mcy5o IiksICJpIiAoMzIzKSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJp IiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRp bGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9u ZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDM1KSk7IH0pOyB9IHdo aWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwoxNDQ3 NDogICh7IGludCBfX3JldF93YXJuX29uID0gISEoISgoeyB1bmlvbiB7IHR5cGVvZigoJmtuLT5k aXIuY2hpbGRyZW4pLT5yYl9ub2RlKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkg X19yZWFkX29uY2Vfc2l6ZSgmKCgma24tPmRpci5jaGlsZHJlbiktPnJiX25vZGUpLCBfX3UuX19j LCBzaXplb2YoKCZrbi0+ZGlyLmNoaWxkcmVuKS0+cmJfbm9kZSkpOyBlbHNlIF9fcmVhZF9vbmNl X3NpemVfbm9jaGVjaygmKCgma24tPmRpci5jaGlsZHJlbiktPnJiX25vZGUpLCBfX3UuX19jLCBz aXplb2YoKCZrbi0+ZGlyLmNoaWxkcmVuKS0+cmJfbm9kZSkpOyBkbyB7IH0gd2hpbGUgKDApOyBf X3UuX192YWw7IH0pID09ICgodm9pZCAqKTApKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9f cmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIg Ii5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJc biIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJc biIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJc dC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1 Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImki ICgiaW5jbHVkZS9saW51eC9rZXJuZnMuaCIpLCAiaSIgKDMyNCksICJpIiAoKDEgPDwgMCl8KCgx IDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9 IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlz Y2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0 IiA6IDogImkiICgzNikpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19y ZXRfd2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6ICBrbi0+ZmxhZ3MgfD0gS0VSTkZTX05TOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIGtlcm5mc19uc19lbmFibGVkKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24p CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtuLT5mbGFncyAmIEtFUk5GU19OUzsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogaW50IGtlcm5mc19uYW1lKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24sIGNo YXIgKmJ1Ziwgc2l6ZV90IGJ1Zmxlbik7CjE0NDc0OiBpbnQga2VybmZzX3BhdGhfZnJvbV9ub2Rl KHN0cnVjdCBrZXJuZnNfbm9kZSAqcm9vdF9rbiwgc3RydWN0IGtlcm5mc19ub2RlICprbiwKMTQ0 NzQ6ICAgICAgY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuKTsKMTQ0NzQ6IHZvaWQgcHJfY29udF9r ZXJuZnNfbmFtZShzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKMTQ0NzQ6IHZvaWQgcHJfY29udF9r ZXJuZnNfcGF0aChzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKMTQ0NzQ6IHN0cnVjdCBrZXJuZnNf bm9kZSAqa2VybmZzX2dldF9wYXJlbnQoc3RydWN0IGtlcm5mc19ub2RlICprbik7CjE0NDc0OiBz dHJ1Y3Qga2VybmZzX25vZGUgKmtlcm5mc19maW5kX2FuZF9nZXRfbnMoc3RydWN0IGtlcm5mc19u b2RlICpwYXJlbnQsCjE0NDc0OiAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaWQg Km5zKTsKMTQ0NzQ6IHN0cnVjdCBrZXJuZnNfbm9kZSAqa2VybmZzX3dhbGtfYW5kX2dldF9ucyhz dHJ1Y3Qga2VybmZzX25vZGUgKnBhcmVudCwKMTQ0NzQ6ICAgICAgICAgY29uc3QgY2hhciAqcGF0 aCwgY29uc3Qgdm9pZCAqbnMpOwoxNDQ3NDogdm9pZCBrZXJuZnNfZ2V0KHN0cnVjdCBrZXJuZnNf bm9kZSAqa24pOwoxNDQ3NDogdm9pZCBrZXJuZnNfcHV0KHN0cnVjdCBrZXJuZnNfbm9kZSAqa24p OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qga2VybmZzX25vZGUgKmtlcm5mc19ub2RlX2Zyb21fZGVu dHJ5KHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CjE0NDc0OiBzdHJ1Y3Qga2VybmZzX3Jvb3QgKmtl cm5mc19yb290X2Zyb21fc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CjE0NDc0OiBzdHJ1Y3Qg aW5vZGUgKmtlcm5mc19nZXRfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtl cm5mc19ub2RlICprbik7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkZW50cnkgKmtlcm5mc19ub2Rl X2RlbnRyeShzdHJ1Y3Qga2VybmZzX25vZGUgKmtuLAoxNDQ3NDogICAgICAgc3RydWN0IHN1cGVy X2Jsb2NrICpzYik7CjE0NDc0OiBzdHJ1Y3Qga2VybmZzX3Jvb3QgKmtlcm5mc19jcmVhdGVfcm9v dChzdHJ1Y3Qga2VybmZzX3N5c2NhbGxfb3BzICpzY29wcywKMTQ0NzQ6ICAgICAgICAgICAgdW5z aWduZWQgaW50IGZsYWdzLCB2b2lkICpwcml2KTsKMTQ0NzQ6IHZvaWQga2VybmZzX2Rlc3Ryb3lf cm9vdChzdHJ1Y3Qga2VybmZzX3Jvb3QgKnJvb3QpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qga2Vy bmZzX25vZGUgKmtlcm5mc19jcmVhdGVfZGlyX25zKHN0cnVjdCBrZXJuZnNfbm9kZSAqcGFyZW50 LAoxNDQ3NDogICAgICAgY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAoxNDQ3NDogICAg ICAga3VpZF90IHVpZCwga2dpZF90IGdpZCwKMTQ0NzQ6ICAgICAgIHZvaWQgKnByaXYsIGNvbnN0 IHZvaWQgKm5zKTsKMTQ0NzQ6IHN0cnVjdCBrZXJuZnNfbm9kZSAqa2VybmZzX2NyZWF0ZV9lbXB0 eV9kaXIoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQsCjE0NDc0OiAgICAgICAgICBjb25zdCBj aGFyICpuYW1lKTsKMTQ0NzQ6IHN0cnVjdCBrZXJuZnNfbm9kZSAqX19rZXJuZnNfY3JlYXRlX2Zp bGUoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQsCjE0NDc0OiAgICAgICBjb25zdCBjaGFyICpu YW1lLCB1bW9kZV90IG1vZGUsCjE0NDc0OiAgICAgICBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkLAox NDQ3NDogICAgICAgbG9mZl90IHNpemUsCjE0NDc0OiAgICAgICBjb25zdCBzdHJ1Y3Qga2VybmZz X29wcyAqb3BzLAoxNDQ3NDogICAgICAgdm9pZCAqcHJpdiwgY29uc3Qgdm9pZCAqbnMsCjE0NDc0 OiAgICAgICBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7CjE0NDc0OiBzdHJ1Y3Qga2VybmZz X25vZGUgKmtlcm5mc19jcmVhdGVfbGluayhzdHJ1Y3Qga2VybmZzX25vZGUgKnBhcmVudCwKMTQ0 NzQ6ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgICAgICAgc3RydWN0 IGtlcm5mc19ub2RlICp0YXJnZXQpOwoxNDQ3NDogdm9pZCBrZXJuZnNfYWN0aXZhdGUoc3RydWN0 IGtlcm5mc19ub2RlICprbik7CjE0NDc0OiB2b2lkIGtlcm5mc19yZW1vdmUoc3RydWN0IGtlcm5m c19ub2RlICprbik7CjE0NDc0OiB2b2lkIGtlcm5mc19icmVha19hY3RpdmVfcHJvdGVjdGlvbihz dHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKMTQ0NzQ6IHZvaWQga2VybmZzX3VuYnJlYWtfYWN0aXZl X3Byb3RlY3Rpb24oc3RydWN0IGtlcm5mc19ub2RlICprbik7CjE0NDc0OiBib29sIGtlcm5mc19y ZW1vdmVfc2VsZihzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKMTQ0NzQ6IGludCBrZXJuZnNfcmVt b3ZlX2J5X25hbWVfbnMoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQsIGNvbnN0IGNoYXIgKm5h bWUsCjE0NDc0OiAgICAgICAgIGNvbnN0IHZvaWQgKm5zKTsKMTQ0NzQ6IGludCBrZXJuZnNfcmVu YW1lX25zKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24sIHN0cnVjdCBrZXJuZnNfbm9kZSAqbmV3X3Bh cmVudCwKMTQ0NzQ6ICAgICAgICBjb25zdCBjaGFyICpuZXdfbmFtZSwgY29uc3Qgdm9pZCAqbmV3 X25zKTsKMTQ0NzQ6IGludCBrZXJuZnNfc2V0YXR0cihzdHJ1Y3Qga2VybmZzX25vZGUgKmtuLCBj b25zdCBzdHJ1Y3QgaWF0dHIgKmlhdHRyKTsKMTQ0NzQ6IF9fcG9sbF90IGtlcm5mc19nZW5lcmlj X3BvbGwoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLAoxNDQ3NDogICAgICAgICBzdHJ1Y3Qg cG9sbF90YWJsZV9zdHJ1Y3QgKnB0KTsKMTQ0NzQ6IHZvaWQga2VybmZzX25vdGlmeShzdHJ1Y3Qg a2VybmZzX25vZGUgKmtuKTsKMTQ0NzQ6IAoxNDQ3NDogaW50IGtlcm5mc194YXR0cl9nZXQoc3Ry dWN0IGtlcm5mc19ub2RlICprbiwgY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgICB2b2lk ICp2YWx1ZSwgc2l6ZV90IHNpemUpOwoxNDQ3NDogaW50IGtlcm5mc194YXR0cl9zZXQoc3RydWN0 IGtlcm5mc19ub2RlICprbiwgY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgICBjb25zdCB2 b2lkICp2YWx1ZSwgc2l6ZV90IHNpemUsIGludCBmbGFncyk7CjE0NDc0OiAKMTQ0NzQ6IGNvbnN0 IHZvaWQgKmtlcm5mc19zdXBlcl9ucyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKMTQ0NzQ6IGlu dCBrZXJuZnNfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKTsKMTQ0NzQ6IHZvaWQga2Vy bmZzX2ZyZWVfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZmMpOwoxNDQ3NDogdm9pZCBr ZXJuZnNfa2lsbF9zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKMTQ0NzQ6IAoxNDQ3NDogdm9p ZCBrZXJuZnNfaW5pdCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGtlcm5mc19ub2RlICpr ZXJuZnNfZmluZF9hbmRfZ2V0X25vZGVfYnlfaWQoc3RydWN0IGtlcm5mc19yb290ICpyb290LAox NDQ3NDogICAgICAgICAgdTY0IGlkKTsKMTQ0NzQ6ICMgNTMzICIuL2luY2x1ZGUvbGludXgva2Vy bmZzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQga2VybmZzX3BhdGgoc3RydWN0IGtlcm5mc19ub2RlICprbiwgY2hh ciAqYnVmLCBzaXplX3QgYnVmbGVuKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrZXJuZnNfcGF0 aF9mcm9tX25vZGUoa24sICgodm9pZCAqKTApLCBidWYsIGJ1Zmxlbik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHN0cnVjdCBrZXJuZnNfbm9kZSAqCjE0NDc0OiBrZXJuZnNfZmluZF9hbmRfZ2V0 KHN0cnVjdCBrZXJuZnNfbm9kZSAqa24sIGNvbnN0IGNoYXIgKm5hbWUpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGtlcm5mc19maW5kX2FuZF9nZXRfbnMoa24sIG5hbWUsICgodm9pZCAqKTApKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtlcm5mc19ub2RlICoKMTQ0NzQ6IGtlcm5m c193YWxrX2FuZF9nZXQoc3RydWN0IGtlcm5mc19ub2RlICprbiwgY29uc3QgY2hhciAqcGF0aCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga2VybmZzX3dhbGtfYW5kX2dldF9ucyhrbiwgcGF0aCwg KCh2b2lkICopMCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2VybmZzX25vZGUg KgoxNDQ3NDoga2VybmZzX2NyZWF0ZV9kaXIoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQsIGNv bnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICB2b2lkICpwcml2KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBrZXJuZnNfY3JlYXRlX2Rpcl9ucyhwYXJlbnQsIG5hbWUsIG1v ZGUsCjE0NDc0OiAgICAgICAgIChrdWlkX3QpeyAwIH0sIChrZ2lkX3QpeyAwIH0sCjE0NDc0OiAg ICAgICAgIHByaXYsICgodm9pZCAqKTApKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IGtlcm5mc19ub2RlICoKMTQ0NzQ6IGtlcm5mc19jcmVhdGVfZmlsZV9ucyhzdHJ1Y3Qga2VybmZz X25vZGUgKnBhcmVudCwgY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgICAgdW1vZGVfdCBt b2RlLCBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkLAoxNDQ3NDogICAgICAgICBsb2ZmX3Qgc2l6ZSwg Y29uc3Qgc3RydWN0IGtlcm5mc19vcHMgKm9wcywKMTQ0NzQ6ICAgICAgICAgdm9pZCAqcHJpdiwg Y29uc3Qgdm9pZCAqbnMpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICpr ZXkgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IHJldHVybiBfX2tlcm5mc19jcmVhdGVfZmlsZShwYXJlbnQsIG5hbWUsIG1vZGUsIHVpZCwgZ2lk LAoxNDQ3NDogICAgICAgICBzaXplLCBvcHMsIHByaXYsIG5zLCBrZXkpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzdHJ1Y3Qga2VybmZzX25vZGUgKgoxNDQ3NDoga2VybmZzX2NyZWF0ZV9maWxl KHN0cnVjdCBrZXJuZnNfbm9kZSAqcGFyZW50LCBjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1v ZGUsCjE0NDc0OiAgICAgIGxvZmZfdCBzaXplLCBjb25zdCBzdHJ1Y3Qga2VybmZzX29wcyAqb3Bz LCB2b2lkICpwcml2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrZXJuZnNfY3JlYXRlX2ZpbGVf bnMocGFyZW50LCBuYW1lLCBtb2RlLAoxNDQ3NDogICAgICAgICAgKGt1aWRfdCl7IDAgfSwgKGtn aWRfdCl7IDAgfSwKMTQ0NzQ6ICAgICAgICAgIHNpemUsIG9wcywgcHJpdiwgKCh2b2lkICopMCkp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQga2VybmZzX3JlbW92ZV9ieV9uYW1lKHN0cnVj dCBrZXJuZnNfbm9kZSAqcGFyZW50LAoxNDQ3NDogICAgICBjb25zdCBjaGFyICpuYW1lKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBrZXJuZnNfcmVtb3ZlX2J5X25hbWVfbnMocGFyZW50LCBuYW1l LCAoKHZvaWQgKikwKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBrZXJuZnNfcmVuYW1l KHN0cnVjdCBrZXJuZnNfbm9kZSAqa24sCjE0NDc0OiAgICAgc3RydWN0IGtlcm5mc19ub2RlICpu ZXdfcGFyZW50LAoxNDQ3NDogICAgIGNvbnN0IGNoYXIgKm5ld19uYW1lKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBrZXJuZnNfcmVuYW1lX25zKGtuLCBuZXdfcGFyZW50LCBuZXdfbmFtZSwgKCh2 b2lkICopMCkpOwoxNDQ3NDogfQoxNDQ3NDogIyAxNyAiLi9pbmNsdWRlL2xpbnV4L3N5c2ZzLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUv bGludXgva29iamVjdF9ucy5oIiAxCjE0NDc0OiAjIDE5ICIuL2luY2x1ZGUvbGludXgva29iamVj dF9ucy5oIgoxNDQ3NDogc3RydWN0IHNvY2s7CjE0NDc0OiBzdHJ1Y3Qga29iamVjdDsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGtvYmpfbnNfdHlw ZSB7CjE0NDc0OiAgS09CSl9OU19UWVBFX05PTkUgPSAwLAoxNDQ3NDogIEtPQkpfTlNfVFlQRV9O RVQsCjE0NDc0OiAgS09CSl9OU19UWVBFUwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzkgIi4vaW5jbHVk ZS9saW51eC9rb2JqZWN0X25zLmgiCjE0NDc0OiBzdHJ1Y3Qga29ial9uc190eXBlX29wZXJhdGlv bnMgewoxNDQ3NDogIGVudW0ga29ial9uc190eXBlIHR5cGU7CjE0NDc0OiAgYm9vbCAoKmN1cnJl bnRfbWF5X21vdW50KSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICooKmdyYWJfY3VycmVudF9ucykodm9p ZCk7CjE0NDc0OiAgY29uc3Qgdm9pZCAqKCpuZXRsaW5rX25zKShzdHJ1Y3Qgc29jayAqc2spOwox NDQ3NDogIGNvbnN0IHZvaWQgKigqaW5pdGlhbF9ucykodm9pZCk7CjE0NDc0OiAgdm9pZCAoKmRy b3BfbnMpKHZvaWQgKik7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBpbnQga29ial9uc190eXBl X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBrb2JqX25zX3R5cGVfb3BlcmF0aW9ucyAqb3BzKTsKMTQ0 NzQ6IGludCBrb2JqX25zX3R5cGVfcmVnaXN0ZXJlZChlbnVtIGtvYmpfbnNfdHlwZSB0eXBlKTsK MTQ0NzQ6IGNvbnN0IHN0cnVjdCBrb2JqX25zX3R5cGVfb3BlcmF0aW9ucyAqa29ial9jaGlsZF9u c19vcHMoc3RydWN0IGtvYmplY3QgKnBhcmVudCk7CjE0NDc0OiBjb25zdCBzdHJ1Y3Qga29ial9u c190eXBlX29wZXJhdGlvbnMgKmtvYmpfbnNfb3BzKHN0cnVjdCBrb2JqZWN0ICprb2JqKTsKMTQ0 NzQ6IAoxNDQ3NDogYm9vbCBrb2JqX25zX2N1cnJlbnRfbWF5X21vdW50KGVudW0ga29ial9uc190 eXBlIHR5cGUpOwoxNDQ3NDogdm9pZCAqa29ial9uc19ncmFiX2N1cnJlbnQoZW51bSBrb2JqX25z X3R5cGUgdHlwZSk7CjE0NDc0OiBjb25zdCB2b2lkICprb2JqX25zX25ldGxpbmsoZW51bSBrb2Jq X25zX3R5cGUgdHlwZSwgc3RydWN0IHNvY2sgKnNrKTsKMTQ0NzQ6IGNvbnN0IHZvaWQgKmtvYmpf bnNfaW5pdGlhbChlbnVtIGtvYmpfbnNfdHlwZSB0eXBlKTsKMTQ0NzQ6IHZvaWQga29ial9uc19k cm9wKGVudW0ga29ial9uc190eXBlIHR5cGUsIHZvaWQgKm5zKTsKMTQ0NzQ6ICMgMjIgIi4vaW5j bHVkZS9saW51eC9zeXNmcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3Qga29iamVjdDsKMTQ0NzQ6IHN0cnVjdCBtb2R1bGU7CjE0NDc0OiBzdHJ1Y3QgYmluX2F0dHJp YnV0ZTsKMTQ0NzQ6IGVudW0ga29ial9uc190eXBlOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXR0 cmlidXRlIHsKMTQ0NzQ6ICBjb25zdCBjaGFyICpuYW1lOwoxNDQ3NDogIHVtb2RlX3QgbW9kZTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDog IyA4NCAiLi9pbmNsdWRlL2xpbnV4L3N5c2ZzLmgiCjE0NDc0OiBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwIHsKMTQ0NzQ6ICBjb25zdCBjaGFyICpuYW1lOwoxNDQ3NDogIHVtb2RlX3QgKCppc192aXNp YmxlKShzdHJ1Y3Qga29iamVjdCAqLAoxNDQ3NDogICAgICAgICAgICBzdHJ1Y3QgYXR0cmlidXRl ICosIGludCk7CjE0NDc0OiAgdW1vZGVfdCAoKmlzX2Jpbl92aXNpYmxlKShzdHJ1Y3Qga29iamVj dCAqLAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqLCBpbnQpOwoxNDQ3NDog IHN0cnVjdCBhdHRyaWJ1dGUgKiphdHRyczsKMTQ0NzQ6ICBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAq KmJpbl9hdHRyczsKMTQ0NzQ6IH07CjE0NDc0OiAjIDE1OCAiLi9pbmNsdWRlL2xpbnV4L3N5c2Zz LmgiCjE0NDc0OiBzdHJ1Y3QgZmlsZTsKMTQ0NzQ6IHN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGJpbl9hdHRyaWJ1dGUgewoxNDQ3NDogIHN0cnVjdCBhdHRyaWJ1 dGUgYXR0cjsKMTQ0NzQ6ICBzaXplX3Qgc2l6ZTsKMTQ0NzQ6ICB2b2lkICpwcml2YXRlOwoxNDQ3 NDogIHNzaXplX3QgKCpyZWFkKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qga29iamVjdCAqLCBzdHJ1 Y3QgYmluX2F0dHJpYnV0ZSAqLAoxNDQ3NDogICAgY2hhciAqLCBsb2ZmX3QsIHNpemVfdCk7CjE0 NDc0OiAgc3NpemVfdCAoKndyaXRlKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qga29iamVjdCAqLCBz dHJ1Y3QgYmluX2F0dHJpYnV0ZSAqLAoxNDQ3NDogICAgIGNoYXIgKiwgbG9mZl90LCBzaXplX3Qp OwoxNDQ3NDogIGludCAoKm1tYXApKHN0cnVjdCBmaWxlICosIHN0cnVjdCBrb2JqZWN0ICosIHN0 cnVjdCBiaW5fYXR0cmlidXRlICphdHRyLAoxNDQ3NDogICAgICAgc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEpOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjIzICIuL2luY2x1ZGUvbGludXgvc3lzZnMu aCIKMTQ0NzQ6IHN0cnVjdCBzeXNmc19vcHMgewoxNDQ3NDogIHNzaXplX3QgKCpzaG93KShzdHJ1 Y3Qga29iamVjdCAqLCBzdHJ1Y3QgYXR0cmlidXRlICosIGNoYXIgKik7CjE0NDc0OiAgc3NpemVf dCAoKnN0b3JlKShzdHJ1Y3Qga29iamVjdCAqLCBzdHJ1Y3QgYXR0cmlidXRlICosIGNvbnN0IGNo YXIgKiwgc2l6ZV90KTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBp bnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHN5c2ZzX2NyZWF0ZV9k aXJfbnMoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IHZvaWQgKm5zKTsKMTQ0NzQ6IHZvaWQg c3lzZnNfcmVtb3ZlX2RpcihzdHJ1Y3Qga29iamVjdCAqa29iaik7CjE0NDc0OiBpbnQgX19hdHRy aWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHN5c2ZzX3JlbmFtZV9kaXJfbnMoc3Ry dWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKm5ld19uYW1lLAoxNDQ3NDogICAgICAgICAg Y29uc3Qgdm9pZCAqbmV3X25zKTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51 c2VkX3Jlc3VsdF9fKSkgc3lzZnNfbW92ZV9kaXJfbnMoc3RydWN0IGtvYmplY3QgKmtvYmosCjE0 NDc0OiAgICAgICAgc3RydWN0IGtvYmplY3QgKm5ld19wYXJlbnRfa29iaiwKMTQ0NzQ6ICAgICAg ICBjb25zdCB2b2lkICpuZXdfbnMpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91 bnVzZWRfcmVzdWx0X18pKSBzeXNmc19jcmVhdGVfbW91bnRfcG9pbnQoc3RydWN0IGtvYmplY3Qg KnBhcmVudF9rb2JqLAoxNDQ3NDogICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOwoxNDQ3NDogdm9p ZCBzeXNmc19yZW1vdmVfbW91bnRfcG9pbnQoc3RydWN0IGtvYmplY3QgKnBhcmVudF9rb2JqLAox NDQ3NDogICAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7CjE0NDc0OiAKMTQ0NzQ6IGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgc3lzZnNfY3JlYXRlX2ZpbGVfbnMo c3RydWN0IGtvYmplY3QgKmtvYmosCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGF0dHJp YnV0ZSAqYXR0ciwKMTQ0NzQ6ICAgICAgICAgICBjb25zdCB2b2lkICpucyk7CjE0NDc0OiBpbnQg X19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHN5c2ZzX2NyZWF0ZV9maWxl cyhzdHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmli dXRlICogY29uc3QgKmF0dHIpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVz ZWRfcmVzdWx0X18pKSBzeXNmc19jaG1vZF9maWxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLAoxNDQ3 NDogICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgdW1vZGVfdCBtb2RlKTsKMTQ0 NzQ6IHN0cnVjdCBrZXJuZnNfbm9kZSAqc3lzZnNfYnJlYWtfYWN0aXZlX3Byb3RlY3Rpb24oc3Ry dWN0IGtvYmplY3QgKmtvYmosCjE0NDc0OiAgICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIpOwoxNDQ3NDogdm9pZCBzeXNmc191bmJyZWFrX2FjdGl2ZV9wcm90ZWN0aW9uKHN0cnVj dCBrZXJuZnNfbm9kZSAqa24pOwoxNDQ3NDogdm9pZCBzeXNmc19yZW1vdmVfZmlsZV9ucyhzdHJ1 Y3Qga29iamVjdCAqa29iaiwgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKMTQ0NzQ6ICAg ICAgY29uc3Qgdm9pZCAqbnMpOwoxNDQ3NDogYm9vbCBzeXNmc19yZW1vdmVfZmlsZV9zZWxmKHN0 cnVjdCBrb2JqZWN0ICprb2JqLCBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyKTsKMTQ0NzQ6 IHZvaWQgc3lzZnNfcmVtb3ZlX2ZpbGVzKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBjb25zdCBzdHJ1 Y3QgYXR0cmlidXRlICogY29uc3QgKmF0dHIpOwoxNDQ3NDogCjE0NDc0OiBpbnQgX19hdHRyaWJ1 dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHN5c2ZzX2NyZWF0ZV9iaW5fZmlsZShzdHJ1 Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRy aWJ1dGUgKmF0dHIpOwoxNDQ3NDogdm9pZCBzeXNmc19yZW1vdmVfYmluX2ZpbGUoc3RydWN0IGtv YmplY3QgKmtvYmosCjE0NDc0OiAgICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0 cik7CjE0NDc0OiAKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSkgc3lzZnNfY3JlYXRlX2xpbmsoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2Jq ZWN0ICp0YXJnZXQsCjE0NDc0OiAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7CjE0NDc0OiBpbnQg X19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHN5c2ZzX2NyZWF0ZV9saW5r X25vd2FybihzdHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3Qga29iamVj dCAqdGFyZ2V0LAoxNDQ3NDogICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOwoxNDQ3NDogdm9pZCBz eXNmc19yZW1vdmVfbGluayhzdHJ1Y3Qga29iamVjdCAqa29iaiwgY29uc3QgY2hhciAqbmFtZSk7 CjE0NDc0OiAKMTQ0NzQ6IGludCBzeXNmc19yZW5hbWVfbGlua19ucyhzdHJ1Y3Qga29iamVjdCAq a29iaiwgc3RydWN0IGtvYmplY3QgKnRhcmdldCwKMTQ0NzQ6ICAgICBjb25zdCBjaGFyICpvbGRf bmFtZSwgY29uc3QgY2hhciAqbmV3X25hbWUsCjE0NDc0OiAgICAgY29uc3Qgdm9pZCAqbmV3X25z KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBzeXNmc19kZWxldGVfbGluayhzdHJ1Y3Qga29iamVjdCAq ZGlyLCBzdHJ1Y3Qga29iamVjdCAqdGFyZywKMTQ0NzQ6ICAgIGNvbnN0IGNoYXIgKm5hbWUpOwox NDQ3NDogCjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IHN5c2ZzX2NyZWF0ZV9ncm91cChzdHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICAgICAg Y29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqZ3JwKTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0 ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgc3lzZnNfY3JlYXRlX2dyb3VwcyhzdHJ1Y3Qg a29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3Jv dXAgKipncm91cHMpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVz dWx0X18pKSBzeXNmc191cGRhdGVfZ3JvdXBzKHN0cnVjdCBrb2JqZWN0ICprb2JqLAoxNDQ3NDog ICAgICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CjE0NDc0OiBp bnQgc3lzZnNfdXBkYXRlX2dyb3VwKHN0cnVjdCBrb2JqZWN0ICprb2JqLAoxNDQ3NDogICAgICAg ICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqZ3JwKTsKMTQ0NzQ6IHZvaWQgc3lzZnNf cmVtb3ZlX2dyb3VwKHN0cnVjdCBrb2JqZWN0ICprb2JqLAoxNDQ3NDogICAgY29uc3Qgc3RydWN0 IGF0dHJpYnV0ZV9ncm91cCAqZ3JwKTsKMTQ0NzQ6IHZvaWQgc3lzZnNfcmVtb3ZlX2dyb3Vwcyhz dHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwICoqZ3JvdXBzKTsKMTQ0NzQ6IGludCBzeXNmc19hZGRfZmlsZV90b19ncm91cChzdHJ1Y3Qg a29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIGNv bnN0IGNoYXIgKmdyb3VwKTsKMTQ0NzQ6IHZvaWQgc3lzZnNfcmVtb3ZlX2ZpbGVfZnJvbV9ncm91 cChzdHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIsIGNvbnN0IGNoYXIgKmdyb3VwKTsKMTQ0NzQ6IGludCBzeXNmc19tZXJnZV9ncm91cChz dHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGVfZ3JvdXAgKmdycCk7CjE0NDc0OiB2b2lkIHN5c2ZzX3VubWVyZ2VfZ3JvdXAoc3RydWN0IGtv YmplY3QgKmtvYmosCjE0NDc0OiAgICAgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3Vw ICpncnApOwoxNDQ3NDogaW50IHN5c2ZzX2FkZF9saW5rX3RvX2dyb3VwKHN0cnVjdCBrb2JqZWN0 ICprb2JqLCBjb25zdCBjaGFyICpncm91cF9uYW1lLAoxNDQ3NDogICAgICAgIHN0cnVjdCBrb2Jq ZWN0ICp0YXJnZXQsIGNvbnN0IGNoYXIgKmxpbmtfbmFtZSk7CjE0NDc0OiB2b2lkIHN5c2ZzX3Jl bW92ZV9saW5rX2Zyb21fZ3JvdXAoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKmdy b3VwX25hbWUsCjE0NDc0OiAgICAgICBjb25zdCBjaGFyICpsaW5rX25hbWUpOwoxNDQ3NDogaW50 IF9fY29tcGF0X29ubHlfc3lzZnNfbGlua19lbnRyeV90b19rb2JqKHN0cnVjdCBrb2JqZWN0ICpr b2JqLAoxNDQ3NDogICAgICAgICAgIHN0cnVjdCBrb2JqZWN0ICp0YXJnZXRfa29iaiwKMTQ0NzQ6 ICAgICAgICAgICBjb25zdCBjaGFyICp0YXJnZXRfbmFtZSk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQg c3lzZnNfbm90aWZ5KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBjb25zdCBjaGFyICpkaXIsIGNvbnN0 IGNoYXIgKmF0dHIpOwoxNDQ3NDogCjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIHN5c2ZzX2luaXQodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc3lz ZnNfZW5hYmxlX25zKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGtlcm5mc19lbmFibGVfbnMoa24pOwoxNDQ3NDogfQoxNDQ3NDogIyA1MjcgIi4vaW5jbHVk ZS9saW51eC9zeXNmcy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBzeXNmc19jcmVhdGVfZmlsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6 ICAgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBzeXNmc19jcmVhdGVfZmlsZV9ucyhrb2JqLCBhdHRyLCAoKHZvaWQgKikwKSk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc3lzZnNfcmVtb3ZlX2ZpbGUoc3RydWN0IGtvYmplY3Qg KmtvYmosCjE0NDc0OiAgICAgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyKQoxNDQ3 NDogewoxNDQ3NDogIHN5c2ZzX3JlbW92ZV9maWxlX25zKGtvYmosIGF0dHIsICgodm9pZCAqKTAp KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHN5c2ZzX3JlbmFtZV9saW5rKHN0cnVjdCBr b2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29iamVjdCAqdGFyZ2V0LAoxNDQ3NDogICAgICAgICBjb25z dCBjaGFyICpvbGRfbmFtZSwgY29uc3QgY2hhciAqbmV3X25hbWUpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIHN5c2ZzX3JlbmFtZV9saW5rX25zKGtvYmosIHRhcmdldCwgb2xkX25hbWUsIG5ld19u YW1lLCAoKHZvaWQgKikwKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc3lzZnNfbm90 aWZ5X2RpcmVudChzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKQoxNDQ3NDogewoxNDQ3NDogIGtlcm5m c19ub3RpZnkoa24pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2VybmZzX25vZGUg KnN5c2ZzX2dldF9kaXJlbnQoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQsCjE0NDc0OiAgICAg ICAgICBjb25zdCBjaGFyICpuYW1lKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrZXJuZnNfZmlu ZF9hbmRfZ2V0KHBhcmVudCwgbmFtZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBr ZXJuZnNfbm9kZSAqc3lzZnNfZ2V0KHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pCjE0NDc0OiB7CjE0 NDc0OiAga2VybmZzX2dldChrbik7CjE0NDc0OiAgcmV0dXJuIGtuOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHN5c2ZzX3B1dChzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKQoxNDQ3NDogewox NDQ3NDogIGtlcm5mc19wdXQoa24pOwoxNDQ3NDogfQoxNDQ3NDogIyAyMSAiLi9pbmNsdWRlL2xp bnV4L2tvYmplY3QuaCIgMgoxNDQ3NDogIyA0MSAiLi9pbmNsdWRlL2xpbnV4L2tvYmplY3QuaCIK MTQ0NzQ6IGV4dGVybiB1NjQgdWV2ZW50X3NlcW51bTsKMTQ0NzQ6ICMgNTMgIi4vaW5jbHVkZS9s aW51eC9rb2JqZWN0LmgiCjE0NDc0OiBlbnVtIGtvYmplY3RfYWN0aW9uIHsKMTQ0NzQ6ICBLT0JK X0FERCwKMTQ0NzQ6ICBLT0JKX1JFTU9WRSwKMTQ0NzQ6ICBLT0JKX0NIQU5HRSwKMTQ0NzQ6ICBL T0JKX01PVkUsCjE0NDc0OiAgS09CSl9PTkxJTkUsCjE0NDc0OiAgS09CSl9PRkZMSU5FLAoxNDQ3 NDogIEtPQkpfQklORCwKMTQ0NzQ6ICBLT0JKX1VOQklORCwKMTQ0NzQ6ICBLT0JKX01BWAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGtvYmplY3QgewoxNDQ3NDogIGNvbnN0IGNoYXIg Km5hbWU7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsKMTQ0NzQ6ICBzdHJ1Y3Qga29i amVjdCAqcGFyZW50OwoxNDQ3NDogIHN0cnVjdCBrc2V0ICprc2V0OwoxNDQ3NDogIHN0cnVjdCBr b2JqX3R5cGUgKmt0eXBlOwoxNDQ3NDogIHN0cnVjdCBrZXJuZnNfbm9kZSAqc2Q7CjE0NDc0OiAg c3RydWN0IGtyZWYga3JlZjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgc3RhdGVfaW5pdGlhbGl6ZWQ6MTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3RhdGVfaW5f c3lzZnM6MTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3RhdGVfYWRkX3VldmVudF9zZW50OjE7CjE0 NDc0OiAgdW5zaWduZWQgaW50IHN0YXRlX3JlbW92ZV91ZXZlbnRfc2VudDoxOwoxNDQ3NDogIHVu c2lnbmVkIGludCB1ZXZlbnRfc3VwcHJlc3M6MTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKQoxNDQ3NDogaW50 IGtvYmplY3Rfc2V0X25hbWUoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKm5hbWUs IC4uLik7CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIs IDApKSkKMTQ0NzQ6IGludCBrb2JqZWN0X3NldF9uYW1lX3ZhcmdzKHN0cnVjdCBrb2JqZWN0ICpr b2JqLCBjb25zdCBjaGFyICpmbXQsCjE0NDc0OiAgICAgICB2YV9saXN0IHZhcmdzKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgY29uc3QgY2hhciAqa29iamVjdF9uYW1lKGNvbnN0IHN0cnVjdCBrb2JqZWN0ICpr b2JqKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrb2JqLT5uYW1lOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCBrb2JqZWN0X2luaXQoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0 cnVjdCBrb2JqX3R5cGUgKmt0eXBlKTsKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zv cm1hdF9fKHByaW50ZiwgMywgNCkpKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSkKMTQ0NzQ6IGludCBrb2JqZWN0X2FkZChzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0 IGtvYmplY3QgKnBhcmVudCwKMTQ0NzQ6ICAgY29uc3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDog ZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCA0LCA1KSkpIF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKQoxNDQ3NDogaW50IGtvYmplY3RfaW5pdF9h bmRfYWRkKHN0cnVjdCBrb2JqZWN0ICprb2JqLAoxNDQ3NDogICAgIHN0cnVjdCBrb2JqX3R5cGUg Kmt0eXBlLCBzdHJ1Y3Qga29iamVjdCAqcGFyZW50LAoxNDQ3NDogICAgIGNvbnN0IGNoYXIgKmZt dCwgLi4uKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQga29iamVjdF9kZWwoc3RydWN0IGtv YmplY3QgKmtvYmopOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGtvYmplY3QgKiBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga29iamVjdF9jcmVhdGUodm9pZCk7 CjE0NDc0OiBleHRlcm4gc3RydWN0IGtvYmplY3QgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51 c2VkX3Jlc3VsdF9fKSkga29iamVjdF9jcmVhdGVfYW5kX2FkZChjb25zdCBjaGFyICpuYW1lLAox NDQ3NDogICAgICAgc3RydWN0IGtvYmplY3QgKnBhcmVudCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtvYmplY3RfcmVu YW1lKHN0cnVjdCBrb2JqZWN0ICosIGNvbnN0IGNoYXIgKm5ld19uYW1lKTsKMTQ0NzQ6IGV4dGVy biBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtvYmplY3RfbW92 ZShzdHJ1Y3Qga29iamVjdCAqLCBzdHJ1Y3Qga29iamVjdCAqKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIHN0cnVjdCBrb2JqZWN0ICprb2JqZWN0X2dldChzdHJ1Y3Qga29iamVjdCAqa29iaik7CjE0 NDc0OiBleHRlcm4gc3RydWN0IGtvYmplY3QgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2Vk X3Jlc3VsdF9fKSkga29iamVjdF9nZXRfdW5sZXNzX3plcm8oCjE0NDc0OiAgICAgICBzdHJ1Y3Qg a29iamVjdCAqa29iaik7CjE0NDc0OiBleHRlcm4gdm9pZCBrb2JqZWN0X3B1dChzdHJ1Y3Qga29i amVjdCAqa29iaik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjb25zdCB2b2lkICprb2JqZWN0X25h bWVzcGFjZShzdHJ1Y3Qga29iamVjdCAqa29iaik7CjE0NDc0OiBleHRlcm4gdm9pZCBrb2JqZWN0 X2dldF9vd25lcnNoaXAoc3RydWN0IGtvYmplY3QgKmtvYmosCjE0NDc0OiAgICAgICBrdWlkX3Qg KnVpZCwga2dpZF90ICpnaWQpOwoxNDQ3NDogZXh0ZXJuIGNoYXIgKmtvYmplY3RfZ2V0X3BhdGgo c3RydWN0IGtvYmplY3QgKmtvYmosIGdmcF90IGZsYWcpOwoxNDQ3NDogIyAxMzIgIi4vaW5jbHVk ZS9saW51eC9rb2JqZWN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGtvYmplY3RfaGFzX2NoaWxkcmVuKHN0cnVj dCBrb2JqZWN0ICprb2JqKQoxNDQ3NDogewoxNDQ3NDogICh7IGludCBfX3JldF93YXJuX29uID0g ISEoa3JlZl9yZWFkKCZrb2JqLT5rcmVmKSA9PSAwKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEo X19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0 IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdc IlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRk clxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIg Ilx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMg YnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAi aSIgKCJpbmNsdWRlL2xpbnV4L2tvYmplY3QuaCIpLCAiaSIgKDEzNCksICJpIiAoKDEgPDwgMCl8 KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkp OyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAu ZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25c blx0IiA6IDogImkiICgzNykpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEo X19yZXRfd2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBrb2JqLT5zZCAm JiBrb2JqLT5zZC0+ZGlyLnN1YmRpcnM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBr b2JqX3R5cGUgewoxNDQ3NDogIHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3Qga29iamVjdCAqa29iaik7 CjE0NDc0OiAgY29uc3Qgc3RydWN0IHN5c2ZzX29wcyAqc3lzZnNfb3BzOwoxNDQ3NDogIHN0cnVj dCBhdHRyaWJ1dGUgKipkZWZhdWx0X2F0dHJzOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGVfZ3JvdXAgKipkZWZhdWx0X2dyb3VwczsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3Qga29ial9uc190 eXBlX29wZXJhdGlvbnMgKigqY2hpbGRfbnNfdHlwZSkoc3RydWN0IGtvYmplY3QgKmtvYmopOwox NDQ3NDogIGNvbnN0IHZvaWQgKigqbmFtZXNwYWNlKShzdHJ1Y3Qga29iamVjdCAqa29iaik7CjE0 NDc0OiAgdm9pZCAoKmdldF9vd25lcnNoaXApKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBrdWlkX3Qg KnVpZCwga2dpZF90ICpnaWQpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGtvYmpf dWV2ZW50X2VudiB7CjE0NDc0OiAgY2hhciAqYXJndlszXTsKMTQ0NzQ6ICBjaGFyICplbnZwWzMy XTsKMTQ0NzQ6ICBpbnQgZW52cF9pZHg7CjE0NDc0OiAgY2hhciBidWZbMjA0OF07CjE0NDc0OiAg aW50IGJ1ZmxlbjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBrc2V0X3VldmVudF9v cHMgewoxNDQ3NDogIGludCAoKiBjb25zdCBmaWx0ZXIpKHN0cnVjdCBrc2V0ICprc2V0LCBzdHJ1 Y3Qga29iamVjdCAqa29iaik7CjE0NDc0OiAgY29uc3QgY2hhciAqKCogY29uc3QgbmFtZSkoc3Ry dWN0IGtzZXQgKmtzZXQsIHN0cnVjdCBrb2JqZWN0ICprb2JqKTsKMTQ0NzQ6ICBpbnQgKCogY29u c3QgdWV2ZW50KShzdHJ1Y3Qga3NldCAqa3NldCwgc3RydWN0IGtvYmplY3QgKmtvYmosCjE0NDc0 OiAgICAgICAgIHN0cnVjdCBrb2JqX3VldmVudF9lbnYgKmVudik7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgewoxNDQ3NDogIHN0cnVjdCBhdHRyaWJ1dGUg YXR0cjsKMTQ0NzQ6ICBzc2l6ZV90ICgqc2hvdykoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVj dCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwKMTQ0NzQ6ICAgIGNoYXIgKmJ1Zik7CjE0NDc0OiAgc3Np emVfdCAoKnN0b3JlKShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRl ICphdHRyLAoxNDQ3NDogICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3lzZnNfb3BzIGtvYmpfc3lz ZnNfb3BzOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc29jazsKMTQ0NzQ6ICMgMTkzICIuL2luY2x1 ZGUvbGludXgva29iamVjdC5oIgoxNDQ3NDogc3RydWN0IGtzZXQgewoxNDQ3NDogIHN0cnVjdCBs aXN0X2hlYWQgbGlzdDsKMTQ0NzQ6ICBzcGlubG9ja190IGxpc3RfbG9jazsKMTQ0NzQ6ICBzdHJ1 Y3Qga29iamVjdCBrb2JqOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBrc2V0X3VldmVudF9vcHMgKnVl dmVudF9vcHM7CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fZGVzaWduYXRlZF9pbml0X18pKTsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQga3NldF9pbml0KHN0cnVjdCBrc2V0ICprc2V0KTsK MTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IGtzZXRfcmVnaXN0ZXIoc3RydWN0IGtzZXQgKmtzZXQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQga3Nl dF91bnJlZ2lzdGVyKHN0cnVjdCBrc2V0ICprc2V0KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga3Nl dCAqIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc2V0X2NyZWF0ZV9h bmRfYWRkKGNvbnN0IGNoYXIgKm5hbWUsCjE0NDc0OiAgICAgICBjb25zdCBzdHJ1Y3Qga3NldF91 ZXZlbnRfb3BzICp1LAoxNDQ3NDogICAgICAgc3RydWN0IGtvYmplY3QgKnBhcmVudF9rb2JqKTsK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtzZXQgKnRvX2tzZXQoc3RydWN0IGtvYmplY3QgKmtvYmop CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtvYmogPyAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAq KShrb2JqKTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8yMDkodm9pZCkg X19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29udGFp bmVyX29mKCkiKSkpOyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVv ZigqKGtvYmopKSwgdHlwZW9mKCgoc3RydWN0IGtzZXQgKikwKS0+a29iaikpICYmICFfX2J1aWx0 aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKGtvYmopKSwgdHlwZW9mKHZvaWQpKSkpKSBf X2NvbXBpbGV0aW1lX2Fzc2VydF8yMDkoKTsgfSB3aGlsZSAoMCk7ICgoc3RydWN0IGtzZXQgKiko X19tcHRyIC0gX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBrc2V0LCBrb2JqKSkpOyB9KSA6ICgo dm9pZCAqKTApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga3NldCAqa3NldF9nZXQo c3RydWN0IGtzZXQgKmspCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGsgPyB0b19rc2V0KGtvYmpl Y3RfZ2V0KCZrLT5rb2JqKSkgOiAoKHZvaWQgKikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBrc2V0X3B1dChzdHJ1Y3Qga3NldCAqaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBrb2JqZWN0X3B1 dCgmay0+a29iaik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrb2JqX3R5cGUgKmdl dF9rdHlwZShzdHJ1Y3Qga29iamVjdCAqa29iaikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga29i ai0+a3R5cGU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga29iamVjdCAq a3NldF9maW5kX29iaihzdHJ1Y3Qga3NldCAqLCBjb25zdCBjaGFyICopOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga29iamVjdCAqa2VybmVsX2tvYmo7CjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiBzdHJ1Y3Qga29iamVjdCAqbW1fa29iajsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHN0cnVjdCBrb2JqZWN0ICpoeXBlcnZpc29yX2tvYmo7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBz dHJ1Y3Qga29iamVjdCAqcG93ZXJfa29iajsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBr b2JqZWN0ICpmaXJtd2FyZV9rb2JqOwoxNDQ3NDogCjE0NDc0OiBpbnQga29iamVjdF91ZXZlbnQo c3RydWN0IGtvYmplY3QgKmtvYmosIGVudW0ga29iamVjdF9hY3Rpb24gYWN0aW9uKTsKMTQ0NzQ6 IGludCBrb2JqZWN0X3VldmVudF9lbnYoc3RydWN0IGtvYmplY3QgKmtvYmosIGVudW0ga29iamVj dF9hY3Rpb24gYWN0aW9uLAoxNDQ3NDogICAgY2hhciAqZW52cFtdKTsKMTQ0NzQ6IGludCBrb2Jq ZWN0X3N5bnRoX3VldmVudChzdHJ1Y3Qga29iamVjdCAqa29iaiwgY29uc3QgY2hhciAqYnVmLCBz aXplX3QgY291bnQpOwoxNDQ3NDogCjE0NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHBy aW50ZiwgMiwgMykpKQoxNDQ3NDogaW50IGFkZF91ZXZlbnRfdmFyKHN0cnVjdCBrb2JqX3VldmVu dF9lbnYgKmVudiwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwoxNDQ3NDogIyAxOCAiLi9pbmNs dWRlL2xpbnV4L2RldmljZS5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9rbGlzdC5o IiAxCjE0NDc0OiAjIDE3ICIuL2luY2x1ZGUvbGludXgva2xpc3QuaCIKMTQ0NzQ6IHN0cnVjdCBr bGlzdF9ub2RlOwoxNDQ3NDogc3RydWN0IGtsaXN0IHsKMTQ0NzQ6ICBzcGlubG9ja190IGtfbG9j azsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGtfbGlzdDsKMTQ0NzQ6ICB2b2lkICgqZ2V0KShz dHJ1Y3Qga2xpc3Rfbm9kZSAqKTsKMTQ0NzQ6ICB2b2lkICgqcHV0KShzdHJ1Y3Qga2xpc3Rfbm9k ZSAqKTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKHNpemVvZih2b2lkICopKSkp OwoxNDQ3NDogIyAzNCAiLi9pbmNsdWRlL2xpbnV4L2tsaXN0LmgiCjE0NDc0OiBleHRlcm4gdm9p ZCBrbGlzdF9pbml0KHN0cnVjdCBrbGlzdCAqaywgdm9pZCAoKmdldCkoc3RydWN0IGtsaXN0X25v ZGUgKiksCjE0NDc0OiAgICAgICAgICB2b2lkICgqcHV0KShzdHJ1Y3Qga2xpc3Rfbm9kZSAqKSk7 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBrbGlzdF9ub2RlIHsKMTQ0NzQ6ICB2b2lkICpuX2tsaXN0 OwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgbl9ub2RlOwoxNDQ3NDogIHN0cnVjdCBrcmVmIG5f cmVmOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQga2xpc3RfYWRkX3RhaWwo c3RydWN0IGtsaXN0X25vZGUgKm4sIHN0cnVjdCBrbGlzdCAqayk7CjE0NDc0OiBleHRlcm4gdm9p ZCBrbGlzdF9hZGRfaGVhZChzdHJ1Y3Qga2xpc3Rfbm9kZSAqbiwgc3RydWN0IGtsaXN0ICprKTsK MTQ0NzQ6IGV4dGVybiB2b2lkIGtsaXN0X2FkZF9iZWhpbmQoc3RydWN0IGtsaXN0X25vZGUgKm4s IHN0cnVjdCBrbGlzdF9ub2RlICpwb3MpOwoxNDQ3NDogZXh0ZXJuIHZvaWQga2xpc3RfYWRkX2Jl Zm9yZShzdHJ1Y3Qga2xpc3Rfbm9kZSAqbiwgc3RydWN0IGtsaXN0X25vZGUgKnBvcyk7CjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGtsaXN0X2RlbChzdHJ1Y3Qga2xpc3Rfbm9kZSAqbik7CjE0 NDc0OiBleHRlcm4gdm9pZCBrbGlzdF9yZW1vdmUoc3RydWN0IGtsaXN0X25vZGUgKm4pOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gaW50IGtsaXN0X25vZGVfYXR0YWNoZWQoc3RydWN0IGtsaXN0X25v ZGUgKm4pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBrbGlzdF9pdGVyIHsKMTQ0NzQ6 ICBzdHJ1Y3Qga2xpc3QgKmlfa2xpc3Q7CjE0NDc0OiAgc3RydWN0IGtsaXN0X25vZGUgKmlfY3Vy OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBrbGlzdF9pdGVy X2luaXQoc3RydWN0IGtsaXN0ICprLCBzdHJ1Y3Qga2xpc3RfaXRlciAqaSk7CjE0NDc0OiBleHRl cm4gdm9pZCBrbGlzdF9pdGVyX2luaXRfbm9kZShzdHJ1Y3Qga2xpc3QgKmssIHN0cnVjdCBrbGlz dF9pdGVyICppLAoxNDQ3NDogICAgICBzdHJ1Y3Qga2xpc3Rfbm9kZSAqbik7CjE0NDc0OiBleHRl cm4gdm9pZCBrbGlzdF9pdGVyX2V4aXQoc3RydWN0IGtsaXN0X2l0ZXIgKmkpOwoxNDQ3NDogZXh0 ZXJuIHN0cnVjdCBrbGlzdF9ub2RlICprbGlzdF9wcmV2KHN0cnVjdCBrbGlzdF9pdGVyICppKTsK MTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga2xpc3Rfbm9kZSAqa2xpc3RfbmV4dChzdHJ1Y3Qga2xpc3Rf aXRlciAqaSk7CjE0NDc0OiAjIDE5ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiIDIKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9s aW51eC9wbS5oIiAxCjE0NDc0OiAjIDIyICIuL2luY2x1ZGUvbGludXgvcG0uaCIKMTQ0NzQ6IGV4 dGVybiB2b2lkICgqcG1fcG93ZXJfb2ZmKSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkICgqcG1f cG93ZXJfb2ZmX3ByZXBhcmUpKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlOwox NDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBwbV92dF9zd2l0Y2hfcmVxdWlyZWQoc3RydWN0IGRl dmljZSAqZGV2LCBib29sIHJlcXVpcmVkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHBtX3Z0X3N3aXRj aF91bnJlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAjIDQyICIuL2luY2x1ZGUv bGludXgvcG0uaCIKMTQ0NzQ6IHN0cnVjdCBkZXZpY2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIGNvbnN0IGNoYXIgcG93ZXJfZ3JvdXBfbmFtZVtdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBwbV9tZXNzYWdlIHsKMTQ0NzQ6ICBp bnQgZXZlbnQ7CjE0NDc0OiB9IHBtX21lc3NhZ2VfdDsKMTQ0NzQ6ICMgMjc4ICIuL2luY2x1ZGUv bGludXgvcG0uaCIKMTQ0NzQ6IHN0cnVjdCBkZXZfcG1fb3BzIHsKMTQ0NzQ6ICBpbnQgKCpwcmVw YXJlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogIHZvaWQgKCpjb21wbGV0ZSkoc3RydWN0 IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICBpbnQgKCpzdXNwZW5kKShzdHJ1Y3QgZGV2aWNlICpkZXYp OwoxNDQ3NDogIGludCAoKnJlc3VtZSkoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICBpbnQg KCpmcmVlemUpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqdGhhdykoc3RydWN0 IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICBpbnQgKCpwb3dlcm9mZikoc3RydWN0IGRldmljZSAqZGV2 KTsKMTQ0NzQ6ICBpbnQgKCpyZXN0b3JlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogIGlu dCAoKnN1c3BlbmRfbGF0ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICBpbnQgKCpyZXN1 bWVfZWFybHkpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqZnJlZXplX2xhdGUp KHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqdGhhd19lYXJseSkoc3RydWN0IGRl dmljZSAqZGV2KTsKMTQ0NzQ6ICBpbnQgKCpwb3dlcm9mZl9sYXRlKShzdHJ1Y3QgZGV2aWNlICpk ZXYpOwoxNDQ3NDogIGludCAoKnJlc3RvcmVfZWFybHkpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0 NDc0OiAgaW50ICgqc3VzcGVuZF9ub2lycSkoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICBp bnQgKCpyZXN1bWVfbm9pcnEpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqZnJl ZXplX25vaXJxKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogIGludCAoKnRoYXdfbm9pcnEp KHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqcG93ZXJvZmZfbm9pcnEpKHN0cnVj dCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqcmVzdG9yZV9ub2lycSkoc3RydWN0IGRldmlj ZSAqZGV2KTsKMTQ0NzQ6ICBpbnQgKCpydW50aW1lX3N1c3BlbmQpKHN0cnVjdCBkZXZpY2UgKmRl dik7CjE0NDc0OiAgaW50ICgqcnVudGltZV9yZXN1bWUpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0 NDc0OiAgaW50ICgqcnVudGltZV9pZGxlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogfTsK MTQ0NzQ6ICMgNDk2ICIuL2luY2x1ZGUvbGludXgvcG0uaCIKMTQ0NzQ6IGVudW0gcnBtX3N0YXR1 cyB7CjE0NDc0OiAgUlBNX0FDVElWRSA9IDAsCjE0NDc0OiAgUlBNX1JFU1VNSU5HLAoxNDQ3NDog IFJQTV9TVVNQRU5ERUQsCjE0NDc0OiAgUlBNX1NVU1BFTkRJTkcsCjE0NDc0OiB9OwoxNDQ3NDog IyA1MTggIi4vaW5jbHVkZS9saW51eC9wbS5oIgoxNDQ3NDogZW51bSBycG1fcmVxdWVzdCB7CjE0 NDc0OiAgUlBNX1JFUV9OT05FID0gMCwKMTQ0NzQ6ICBSUE1fUkVRX0lETEUsCjE0NDc0OiAgUlBN X1JFUV9TVVNQRU5ELAoxNDQ3NDogIFJQTV9SRVFfQVVUT1NVU1BFTkQsCjE0NDc0OiAgUlBNX1JF UV9SRVNVTUUsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgd2FrZXVwX3NvdXJjZTsK MTQ0NzQ6IHN0cnVjdCB3YWtlX2lycTsKMTQ0NzQ6IHN0cnVjdCBwbV9kb21haW5fZGF0YTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IHBtX3N1YnN5c19kYXRhIHsKMTQ0NzQ6ICBzcGlubG9ja190IGxv Y2s7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZmNvdW50OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0 IGxpc3RfaGVhZCBjbG9ja19saXN0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiB9OwoxNDQ3NDogIyA1NzMgIi4vaW5jbHVkZS9saW51eC9wbS5oIgoxNDQ3NDogc3RydWN0 IGRldl9wbV9pbmZvIHsKMTQ0NzQ6ICBwbV9tZXNzYWdlX3QgcG93ZXJfc3RhdGU7CjE0NDc0OiAg dW5zaWduZWQgaW50IGNhbl93YWtldXA6MTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgYXN5bmNfc3Vz cGVuZDoxOwoxNDQ3NDogIGJvb2wgaW5fZHBtX2xpc3Q6MTsKMTQ0NzQ6ICBib29sIGlzX3ByZXBh cmVkOjE7CjE0NDc0OiAgYm9vbCBpc19zdXNwZW5kZWQ6MTsKMTQ0NzQ6ICBib29sIGlzX25vaXJx X3N1c3BlbmRlZDoxOwoxNDQ3NDogIGJvb2wgaXNfbGF0ZV9zdXNwZW5kZWQ6MTsKMTQ0NzQ6ICBi b29sIG5vX3BtOjE7CjE0NDc0OiAgYm9vbCBlYXJseV9pbml0OjE7CjE0NDc0OiAgYm9vbCBkaXJl Y3RfY29tcGxldGU6MTsKMTQ0NzQ6ICB1MzIgZHJpdmVyX2ZsYWdzOwoxNDQ3NDogIHNwaW5sb2Nr X3QgbG9jazsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgZW50cnk7CjE0NDc0OiAg c3RydWN0IGNvbXBsZXRpb24gY29tcGxldGlvbjsKMTQ0NzQ6ICBzdHJ1Y3Qgd2FrZXVwX3NvdXJj ZSAqd2FrZXVwOwoxNDQ3NDogIGJvb2wgd2FrZXVwX3BhdGg6MTsKMTQ0NzQ6ICBib29sIHN5c2Nv cmU6MTsKMTQ0NzQ6ICBib29sIG5vX3BtX2NhbGxiYWNrczoxOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBtdXN0X3Jlc3VtZToxOwoxNDQ3NDogIHVuc2lnbmVkIGludCBtYXlfc2tpcF9yZXN1bWU6MTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBocnRpbWVyIHN1 c3BlbmRfdGltZXI7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB0aW1lcl9leHBpcmVzOwoxNDQ3NDog IHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwoxNDQ3NDogIHdhaXRfcXVldWVfaGVhZF90IHdhaXRf cXVldWU7CjE0NDc0OiAgc3RydWN0IHdha2VfaXJxICp3YWtlaXJxOwoxNDQ3NDogIGF0b21pY190 IHVzYWdlX2NvdW50OwoxNDQ3NDogIGF0b21pY190IGNoaWxkX2NvdW50OwoxNDQ3NDogIHVuc2ln bmVkIGludCBkaXNhYmxlX2RlcHRoOjM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGlkbGVfbm90aWZp Y2F0aW9uOjE7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlcXVlc3RfcGVuZGluZzoxOwoxNDQ3NDog IHVuc2lnbmVkIGludCBkZWZlcnJlZF9yZXN1bWU6MTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcnVu dGltZV9hdXRvOjE7CjE0NDc0OiAgYm9vbCBpZ25vcmVfY2hpbGRyZW46MTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgbm9fY2FsbGJhY2tzOjE7CjE0NDc0OiAgdW5zaWduZWQgaW50IGlycV9zYWZlOjE7 CjE0NDc0OiAgdW5zaWduZWQgaW50IHVzZV9hdXRvc3VzcGVuZDoxOwoxNDQ3NDogIHVuc2lnbmVk IGludCB0aW1lcl9hdXRvc3VzcGVuZHM6MTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWVtYWxsb2Nf bm9pbzoxOwoxNDQ3NDogIHVuc2lnbmVkIGludCBsaW5rc19jb3VudDsKMTQ0NzQ6ICBlbnVtIHJw bV9yZXF1ZXN0IHJlcXVlc3Q7CjE0NDc0OiAgZW51bSBycG1fc3RhdHVzIHJ1bnRpbWVfc3RhdHVz OwoxNDQ3NDogIGludCBydW50aW1lX2Vycm9yOwoxNDQ3NDogIGludCBhdXRvc3VzcGVuZF9kZWxh eTsKMTQ0NzQ6ICB1NjQgbGFzdF9idXN5OwoxNDQ3NDogIHU2NCBhY3RpdmVfdGltZTsKMTQ0NzQ6 ICB1NjQgc3VzcGVuZGVkX3RpbWU7CjE0NDc0OiAgdTY0IGFjY291bnRpbmdfdGltZXN0YW1wOwox NDQ3NDogCjE0NDc0OiAgc3RydWN0IHBtX3N1YnN5c19kYXRhICpzdWJzeXNfZGF0YTsKMTQ0NzQ6 ICB2b2lkICgqc2V0X2xhdGVuY3lfdG9sZXJhbmNlKShzdHJ1Y3QgZGV2aWNlICosIHMzMik7CjE0 NDc0OiAgc3RydWN0IGRldl9wbV9xb3MgKnFvczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgZGV2X3BtX2dldF9zdWJzeXNfZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3 NDogZXh0ZXJuIHZvaWQgZGV2X3BtX3B1dF9zdWJzeXNfZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYp OwoxNDQ3NDogIyA2NTAgIi4vaW5jbHVkZS9saW51eC9wbS5oIgoxNDQ3NDogc3RydWN0IGRldl9w bV9kb21haW4gewoxNDQ3NDogIHN0cnVjdCBkZXZfcG1fb3BzIG9wczsKMTQ0NzQ6ICBpbnQgKCpz dGFydCkoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICB2b2lkICgqZGV0YWNoKShzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGJvb2wgcG93ZXJfb2ZmKTsKMTQ0NzQ6ICBpbnQgKCphY3RpdmF0ZSkoc3Ry dWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICB2b2lkICgqc3luYykoc3RydWN0IGRldmljZSAqZGV2 KTsKMTQ0NzQ6ICB2b2lkICgqZGlzbWlzcykoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IH07 CjE0NDc0OiAjIDcxNCAiLi9pbmNsdWRlL2xpbnV4L3BtLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBk ZXZpY2VfcG1fbG9jayh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRwbV9yZXN1bWVfc3RhcnQo cG1fbWVzc2FnZV90IHN0YXRlKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRwbV9yZXN1bWVfZW5kKHBt X21lc3NhZ2VfdCBzdGF0ZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBkcG1fcmVzdW1lX25vaXJxKHBt X21lc3NhZ2VfdCBzdGF0ZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBkcG1fcmVzdW1lX2Vhcmx5KHBt X21lc3NhZ2VfdCBzdGF0ZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBkcG1fcmVzdW1lKHBtX21lc3Nh Z2VfdCBzdGF0ZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBkcG1fY29tcGxldGUocG1fbWVzc2FnZV90 IHN0YXRlKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZGV2aWNlX3BtX3VubG9jayh2b2lk KTsKMTQ0NzQ6IGV4dGVybiBpbnQgZHBtX3N1c3BlbmRfZW5kKHBtX21lc3NhZ2VfdCBzdGF0ZSk7 CjE0NDc0OiBleHRlcm4gaW50IGRwbV9zdXNwZW5kX3N0YXJ0KHBtX21lc3NhZ2VfdCBzdGF0ZSk7 CjE0NDc0OiBleHRlcm4gaW50IGRwbV9zdXNwZW5kX25vaXJxKHBtX21lc3NhZ2VfdCBzdGF0ZSk7 CjE0NDc0OiBleHRlcm4gaW50IGRwbV9zdXNwZW5kX2xhdGUocG1fbWVzc2FnZV90IHN0YXRlKTsK MTQ0NzQ6IGV4dGVybiBpbnQgZHBtX3N1c3BlbmQocG1fbWVzc2FnZV90IHN0YXRlKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgZHBtX3ByZXBhcmUocG1fbWVzc2FnZV90IHN0YXRlKTsKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIHZvaWQgX19zdXNwZW5kX3JlcG9ydF9yZXN1bHQoY29uc3QgY2hhciAqZnVuY3Rp b24sIHZvaWQgKmZuLCBpbnQgcmV0KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZGV2aWNlX3BtX3dhaXRfZm9yX2Rldihz dHJ1Y3QgZGV2aWNlICpzdWIsIHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBleHRlcm4gdm9p ZCBkcG1fZm9yX2VhY2hfZGV2KHZvaWQgKmRhdGEsIHZvaWQgKCpmbikoc3RydWN0IGRldmljZSAq LCB2b2lkICopKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBwbV9nZW5lcmljX3ByZXBhcmUo c3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiBpbnQgcG1fZ2VuZXJpY19zdXNwZW5k X2xhdGUoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiBpbnQgcG1fZ2VuZXJpY19z dXNwZW5kX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBleHRlcm4gaW50IHBtX2dl bmVyaWNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogZXh0ZXJuIGludCBwbV9n ZW5lcmljX3Jlc3VtZV9lYXJseShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogZXh0ZXJuIGlu dCBwbV9nZW5lcmljX3Jlc3VtZV9ub2lycShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogZXh0 ZXJuIGludCBwbV9nZW5lcmljX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogZXh0 ZXJuIGludCBwbV9nZW5lcmljX2ZyZWV6ZV9ub2lycShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3 NDogZXh0ZXJuIGludCBwbV9nZW5lcmljX2ZyZWV6ZV9sYXRlKHN0cnVjdCBkZXZpY2UgKmRldik7 CjE0NDc0OiBleHRlcm4gaW50IHBtX2dlbmVyaWNfZnJlZXplKHN0cnVjdCBkZXZpY2UgKmRldik7 CjE0NDc0OiBleHRlcm4gaW50IHBtX2dlbmVyaWNfdGhhd19ub2lycShzdHJ1Y3QgZGV2aWNlICpk ZXYpOwoxNDQ3NDogZXh0ZXJuIGludCBwbV9nZW5lcmljX3RoYXdfZWFybHkoc3RydWN0IGRldmlj ZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiBpbnQgcG1fZ2VuZXJpY190aGF3KHN0cnVjdCBkZXZpY2Ug KmRldik7CjE0NDc0OiBleHRlcm4gaW50IHBtX2dlbmVyaWNfcmVzdG9yZV9ub2lycShzdHJ1Y3Qg ZGV2aWNlICpkZXYpOwoxNDQ3NDogZXh0ZXJuIGludCBwbV9nZW5lcmljX3Jlc3RvcmVfZWFybHko c3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiBpbnQgcG1fZ2VuZXJpY19yZXN0b3Jl KHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBleHRlcm4gaW50IHBtX2dlbmVyaWNfcG93ZXJv ZmZfbm9pcnEoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiBpbnQgcG1fZ2VuZXJp Y19wb3dlcm9mZl9sYXRlKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBleHRlcm4gaW50IHBt X2dlbmVyaWNfcG93ZXJvZmYoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiB2b2lk IHBtX2dlbmVyaWNfY29tcGxldGUoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIGJvb2wgZGV2X3BtX21heV9za2lwX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwox NDQ3NDogZXh0ZXJuIGJvb2wgZGV2X3BtX3NtYXJ0X3N1c3BlbmRfYW5kX3N1c3BlbmRlZChzdHJ1 Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogIyA4MDggIi4vaW5jbHVkZS9saW51eC9wbS5oIgoxNDQ3 NDogZW51bSBkcG1fb3JkZXIgewoxNDQ3NDogIERQTV9PUkRFUl9OT05FLAoxNDQ3NDogIERQTV9P UkRFUl9ERVZfQUZURVJfUEFSRU5ULAoxNDQ3NDogIERQTV9PUkRFUl9QQVJFTlRfQkVGT1JFX0RF ViwKMTQ0NzQ6ICBEUE1fT1JERVJfREVWX0xBU1QsCjE0NDc0OiB9OwoxNDQ3NDogIyAyNSAiLi9p bmNsdWRlL2xpbnV4L2RldmljZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9idXMuaCIgMQoxNDQ3NDogIyAyMSAi Li9pbmNsdWRlL2xpbnV4L2RldmljZS9idXMuaCIKMTQ0NzQ6IHN0cnVjdCBkZXZpY2VfZHJpdmVy OwoxNDQ3NDogc3RydWN0IGZ3bm9kZV9oYW5kbGU7CjE0NDc0OiAjIDgyICIuL2luY2x1ZGUvbGlu dXgvZGV2aWNlL2J1cy5oIgoxNDQ3NDogc3RydWN0IGJ1c190eXBlIHsKMTQ0NzQ6ICBjb25zdCBj aGFyICpuYW1lOwoxNDQ3NDogIGNvbnN0IGNoYXIgKmRldl9uYW1lOwoxNDQ3NDogIHN0cnVjdCBk ZXZpY2UgKmRldl9yb290OwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipi dXNfZ3JvdXBzOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipkZXZfZ3Jv dXBzOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipkcnZfZ3JvdXBzOwox NDQ3NDogCjE0NDc0OiAgaW50ICgqbWF0Y2gpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRl dmljZV9kcml2ZXIgKmRydik7CjE0NDc0OiAgaW50ICgqdWV2ZW50KShzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCBrb2JqX3VldmVudF9lbnYgKmVudik7CjE0NDc0OiAgaW50ICgqcHJvYmUpKHN0 cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgdm9pZCAoKnN5bmNfc3RhdGUpKHN0cnVjdCBkZXZp Y2UgKmRldik7CjE0NDc0OiAgaW50ICgqcmVtb3ZlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3 NDogIHZvaWQgKCpzaHV0ZG93bikoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IAoxNDQ3NDog IGludCAoKm9ubGluZSkoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICBpbnQgKCpvZmZsaW5l KShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqc3VzcGVuZCkoc3Ry dWN0IGRldmljZSAqZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpOwoxNDQ3NDogIGludCAoKnJlc3Vt ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKm51bV92Zikoc3Ry dWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKmRtYV9jb25maWd1cmUpKHN0 cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGV2X3BtX29w cyAqcG07CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb21tdV9vcHM7 CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc3Vic3lzX3ByaXZhdGUgKnA7CjE0NDc0OiAgc3RydWN0 IGxvY2tfY2xhc3Nfa2V5IGxvY2tfa2V5OwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBuZWVkX3BhcmVu dF9sb2NrOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9f KChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgYnVzX3JlZ2lzdGVyKHN0cnVjdCBidXNfdHlwZSAq YnVzKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgYnVzX3VucmVnaXN0ZXIoc3RydWN0IGJ1 c190eXBlICpidXMpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9f d2Fybl91bnVzZWRfcmVzdWx0X18pKSBidXNfcmVzY2FuX2RldmljZXMoc3RydWN0IGJ1c190eXBl ICpidXMpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYnVzX2F0dHJpYnV0ZSB7CjE0NDc0OiAgc3Ry dWN0IGF0dHJpYnV0ZSBhdHRyOwoxNDQ3NDogIHNzaXplX3QgKCpzaG93KShzdHJ1Y3QgYnVzX3R5 cGUgKmJ1cywgY2hhciAqYnVmKTsKMTQ0NzQ6ICBzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBidXNf dHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCk7CjE0NDc0OiB9OwoxNDQ3 NDogIyAxMzYgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvYnVzLmgiCjE0NDc0OiBleHRlcm4gaW50 IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBidXNfY3JlYXRlX2ZpbGUo c3RydWN0IGJ1c190eXBlICosCjE0NDc0OiAgICAgIHN0cnVjdCBidXNfYXR0cmlidXRlICopOwox NDQ3NDogZXh0ZXJuIHZvaWQgYnVzX3JlbW92ZV9maWxlKHN0cnVjdCBidXNfdHlwZSAqLCBzdHJ1 Y3QgYnVzX2F0dHJpYnV0ZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQgZGV2aWNlX21h dGNoX25hbWUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpuYW1lKTsKMTQ0NzQ6IGlu dCBkZXZpY2VfbWF0Y2hfb2Zfbm9kZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKm5w KTsKMTQ0NzQ6IGludCBkZXZpY2VfbWF0Y2hfZndub2RlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29u c3Qgdm9pZCAqZndub2RlKTsKMTQ0NzQ6IGludCBkZXZpY2VfbWF0Y2hfZGV2dChzdHJ1Y3QgZGV2 aWNlICpkZXYsIGNvbnN0IHZvaWQgKnBkZXZ0KTsKMTQ0NzQ6IGludCBkZXZpY2VfbWF0Y2hfYWNw aV9kZXYoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICphZGV2KTsKMTQ0NzQ6IGludCBk ZXZpY2VfbWF0Y2hfYW55KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgdm9pZCAqdW51c2VkKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3Vic3lzX2Rldl9pdGVyIHsKMTQ0NzQ6ICBz dHJ1Y3Qga2xpc3RfaXRlciBraTsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgKnR5 cGU7CjE0NDc0OiB9OwoxNDQ3NDogdm9pZCBzdWJzeXNfZGV2X2l0ZXJfaW5pdChzdHJ1Y3Qgc3Vi c3lzX2Rldl9pdGVyICppdGVyLAoxNDQ3NDogICAgIHN0cnVjdCBidXNfdHlwZSAqc3Vic3lzLAox NDQ3NDogICAgIHN0cnVjdCBkZXZpY2UgKnN0YXJ0LAoxNDQ3NDogICAgIGNvbnN0IHN0cnVjdCBk ZXZpY2VfdHlwZSAqdHlwZSk7CjE0NDc0OiBzdHJ1Y3QgZGV2aWNlICpzdWJzeXNfZGV2X2l0ZXJf bmV4dChzdHJ1Y3Qgc3Vic3lzX2Rldl9pdGVyICppdGVyKTsKMTQ0NzQ6IHZvaWQgc3Vic3lzX2Rl dl9pdGVyX2V4aXQoc3RydWN0IHN1YnN5c19kZXZfaXRlciAqaXRlcik7CjE0NDc0OiAKMTQ0NzQ6 IGludCBidXNfZm9yX2VhY2hfZGV2KHN0cnVjdCBidXNfdHlwZSAqYnVzLCBzdHJ1Y3QgZGV2aWNl ICpzdGFydCwgdm9pZCAqZGF0YSwKMTQ0NzQ6ICAgICAgICBpbnQgKCpmbikoc3RydWN0IGRldmlj ZSAqZGV2LCB2b2lkICpkYXRhKSk7CjE0NDc0OiBzdHJ1Y3QgZGV2aWNlICpidXNfZmluZF9kZXZp Y2Uoc3RydWN0IGJ1c190eXBlICpidXMsIHN0cnVjdCBkZXZpY2UgKnN0YXJ0LAoxNDQ3NDogICAg ICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCjE0NDc0OiAgICAgICAgICAgaW50ICgqbWF0Y2gpKHN0 cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSkpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNl ICpidXNfZmluZF9kZXZpY2VfYnlfbmFtZShzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywKMTQ0NzQ6ICAg ICAgICAgICAgc3RydWN0IGRldmljZSAqc3RhcnQsCjE0NDc0OiAgICAgICAgICAgIGNvbnN0IGNo YXIgKm5hbWUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJ1c19maW5kX2RldmljZShidXMsIHN0 YXJ0LCBuYW1lLCBkZXZpY2VfbWF0Y2hfbmFtZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZp Y2UgKgoxNDQ3NDogYnVzX2ZpbmRfZGV2aWNlX2J5X29mX25vZGUoc3RydWN0IGJ1c190eXBlICpi dXMsIGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IGJ1c19maW5kX2RldmljZShidXMsICgodm9pZCAqKTApLCBucCwgZGV2aWNlX21hdGNoX29mX25v ZGUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICoKMTQ0NzQ6IGJ1c19maW5kX2Rldmlj ZV9ieV9md25vZGUoc3RydWN0IGJ1c190eXBlICpidXMsIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFu ZGxlICpmd25vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJ1c19maW5kX2RldmljZShidXMs ICgodm9pZCAqKTApLCBmd25vZGUsIGRldmljZV9tYXRjaF9md25vZGUpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBzdHJ1Y3QgZGV2aWNlICpidXNfZmluZF9kZXZpY2VfYnlfZGV2dChzdHJ1Y3QgYnVzX3R5cGUg KmJ1cywKMTQ0NzQ6ICAgICAgICAgICAgZGV2X3QgZGV2dCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gYnVzX2ZpbmRfZGV2aWNlKGJ1cywgKCh2b2lkICopMCksICZkZXZ0LCBkZXZpY2VfbWF0Y2hf ZGV2dCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKgoxNDQ3NDogYnVzX2ZpbmRfbmV4 dF9kZXZpY2Uoc3RydWN0IGJ1c190eXBlICpidXMsc3RydWN0IGRldmljZSAqY3VyKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBidXNfZmluZF9kZXZpY2UoYnVzLCBjdXIsICgodm9pZCAqKTApLCBk ZXZpY2VfbWF0Y2hfYW55KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg YWNwaV9kZXZpY2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKgoxNDQ3NDogYnVzX2ZpbmRfZGV2aWNl X2J5X2FjcGlfZGV2KHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZp Y2UgKmFkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJ1c19maW5kX2RldmljZShidXMsICgo dm9pZCAqKTApLCBhZGV2LCBkZXZpY2VfbWF0Y2hfYWNwaV9kZXYpOwoxNDQ3NDogfQoxNDQ3NDog IyAyNDkgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvYnVzLmgiCjE0NDc0OiBzdHJ1Y3QgZGV2aWNl ICpzdWJzeXNfZmluZF9kZXZpY2VfYnlfaWQoc3RydWN0IGJ1c190eXBlICpidXMsIHVuc2lnbmVk IGludCBpZCwKMTQ0NzQ6ICAgICAgc3RydWN0IGRldmljZSAqaGludCk7CjE0NDc0OiBpbnQgYnVz X2Zvcl9lYWNoX2RydihzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgc3RydWN0IGRldmljZV9kcml2ZXIg KnN0YXJ0LAoxNDQ3NDogICAgICAgIHZvaWQgKmRhdGEsIGludCAoKmZuKShzdHJ1Y3QgZGV2aWNl X2RyaXZlciAqLCB2b2lkICopKTsKMTQ0NzQ6IHZvaWQgYnVzX3NvcnRfYnJlYWR0aGZpcnN0KHN0 cnVjdCBidXNfdHlwZSAqYnVzLAoxNDQ3NDogICAgICAgaW50ICgqY29tcGFyZSkoY29uc3Qgc3Ry dWN0IGRldmljZSAqYSwKMTQ0NzQ6ICAgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlICpiKSk7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3Qgbm90aWZpZXJfYmxvY2s7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgYnVzX3JlZ2lzdGVy X25vdGlmaWVyKHN0cnVjdCBidXNfdHlwZSAqYnVzLAoxNDQ3NDogICAgICBzdHJ1Y3Qgbm90aWZp ZXJfYmxvY2sgKm5iKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYnVzX3VucmVnaXN0ZXJfbm90aWZpZXIo c3RydWN0IGJ1c190eXBlICpidXMsCjE0NDc0OiAgICAgICAgc3RydWN0IG5vdGlmaWVyX2Jsb2Nr ICpuYik7CjE0NDc0OiAjIDI4NSAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9idXMuaCIKMTQ0NzQ6 IGV4dGVybiBzdHJ1Y3Qga3NldCAqYnVzX2dldF9rc2V0KHN0cnVjdCBidXNfdHlwZSAqYnVzKTsK MTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga2xpc3QgKmJ1c19nZXRfZGV2aWNlX2tsaXN0KHN0cnVjdCBi dXNfdHlwZSAqYnVzKTsKMTQ0NzQ6ICMgMzAgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIgMgox NDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2NsYXNzLmgiIDEKMTQ0NzQ6ICMgMjIg Ii4vaW5jbHVkZS9saW51eC9kZXZpY2UvY2xhc3MuaCIKMTQ0NzQ6IHN0cnVjdCBkZXZpY2U7CjE0 NDc0OiBzdHJ1Y3QgZndub2RlX2hhbmRsZTsKMTQ0NzQ6ICMgNTQgIi4vaW5jbHVkZS9saW51eC9k ZXZpY2UvY2xhc3MuaCIKMTQ0NzQ6IHN0cnVjdCBjbGFzcyB7CjE0NDc0OiAgY29uc3QgY2hhciAq bmFtZTsKMTQ0NzQ6ICBzdHJ1Y3QgbW9kdWxlICpvd25lcjsKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0 IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipjbGFzc19ncm91cHM7CjE0NDc0OiAgY29uc3Qgc3Ry dWN0IGF0dHJpYnV0ZV9ncm91cCAqKmRldl9ncm91cHM7CjE0NDc0OiAgc3RydWN0IGtvYmplY3Qg KmRldl9rb2JqOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqZGV2X3VldmVudCkoc3RydWN0IGRldmlj ZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpOwoxNDQ3NDogIGNoYXIgKigqZGV2 bm9kZSkoc3RydWN0IGRldmljZSAqZGV2LCB1bW9kZV90ICptb2RlKTsKMTQ0NzQ6IAoxNDQ3NDog IHZvaWQgKCpjbGFzc19yZWxlYXNlKShzdHJ1Y3QgY2xhc3MgKmNsYXNzKTsKMTQ0NzQ6ICB2b2lk ICgqZGV2X3JlbGVhc2UpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQg KCpzaHV0ZG93bl9wcmUpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAKMTQ0NzQ6ICBjb25z dCBzdHJ1Y3Qga29ial9uc190eXBlX29wZXJhdGlvbnMgKm5zX3R5cGU7CjE0NDc0OiAgY29uc3Qg dm9pZCAqKCpuYW1lc3BhY2UpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqZ2V0X293bmVyc2hpcCkoc3RydWN0IGRldmljZSAqZGV2LCBrdWlkX3QgKnVpZCwga2dp ZF90ICpnaWQpOwoxNDQ3NDogCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgKnBtOwox NDQ3NDogCjE0NDc0OiAgc3RydWN0IHN1YnN5c19wcml2YXRlICpwOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGNsYXNzX2Rldl9pdGVyIHsKMTQ0NzQ6ICBzdHJ1Y3Qga2xpc3RfaXRl ciBraTsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgKnR5cGU7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGtvYmplY3QgKnN5c2ZzX2Rldl9ibG9ja19rb2Jq OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBrb2JqZWN0ICpzeXNmc19kZXZfY2hhcl9rb2JqOwoxNDQ3 NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgX19j bGFzc19yZWdpc3RlcihzdHJ1Y3QgY2xhc3MgKmNsYXNzLAoxNDQ3NDogICAgICAgc3RydWN0IGxv Y2tfY2xhc3Nfa2V5ICprZXkpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgY2xhc3NfdW5yZWdpc3Rlcihz dHJ1Y3QgY2xhc3MgKmNsYXNzKTsKMTQ0NzQ6ICMgOTkgIi4vaW5jbHVkZS9saW51eC9kZXZpY2Uv Y2xhc3MuaCIKMTQ0NzQ6IHN0cnVjdCBjbGFzc19jb21wYXQ7CjE0NDc0OiBzdHJ1Y3QgY2xhc3Nf Y29tcGF0ICpjbGFzc19jb21wYXRfcmVnaXN0ZXIoY29uc3QgY2hhciAqbmFtZSk7CjE0NDc0OiB2 b2lkIGNsYXNzX2NvbXBhdF91bnJlZ2lzdGVyKHN0cnVjdCBjbGFzc19jb21wYXQgKmNscyk7CjE0 NDc0OiBpbnQgY2xhc3NfY29tcGF0X2NyZWF0ZV9saW5rKHN0cnVjdCBjbGFzc19jb21wYXQgKmNs cywgc3RydWN0IGRldmljZSAqZGV2LAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXZp Y2VfbGluayk7CjE0NDc0OiB2b2lkIGNsYXNzX2NvbXBhdF9yZW1vdmVfbGluayhzdHJ1Y3QgY2xh c3NfY29tcGF0ICpjbHMsIHN0cnVjdCBkZXZpY2UgKmRldiwKMTQ0NzQ6ICAgICAgICAgIHN0cnVj dCBkZXZpY2UgKmRldmljZV9saW5rKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgY2xhc3Nf ZGV2X2l0ZXJfaW5pdChzdHJ1Y3QgY2xhc3NfZGV2X2l0ZXIgKml0ZXIsCjE0NDc0OiAgICAgc3Ry dWN0IGNsYXNzICpjbGFzcywKMTQ0NzQ6ICAgICBzdHJ1Y3QgZGV2aWNlICpzdGFydCwKMTQ0NzQ6 ICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgKnR5cGUpOwoxNDQ3NDogZXh0ZXJuIHN0cnVj dCBkZXZpY2UgKmNsYXNzX2Rldl9pdGVyX25leHQoc3RydWN0IGNsYXNzX2Rldl9pdGVyICppdGVy KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNsYXNzX2Rldl9pdGVyX2V4aXQoc3RydWN0IGNsYXNzX2Rl dl9pdGVyICppdGVyKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBjbGFzc19mb3JfZWFjaF9k ZXZpY2Uoc3RydWN0IGNsYXNzICpjbGFzcywgc3RydWN0IGRldmljZSAqc3RhcnQsCjE0NDc0OiAg ICAgIHZvaWQgKmRhdGEsCjE0NDc0OiAgICAgIGludCAoKmZuKShzdHJ1Y3QgZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEpKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGV2aWNlICpjbGFzc19maW5kX2Rl dmljZShzdHJ1Y3QgY2xhc3MgKmNsYXNzLAoxNDQ3NDogICAgICBzdHJ1Y3QgZGV2aWNlICpzdGFy dCwgY29uc3Qgdm9pZCAqZGF0YSwKMTQ0NzQ6ICAgICAgaW50ICgqbWF0Y2gpKHN0cnVjdCBkZXZp Y2UgKiwgY29uc3Qgdm9pZCAqKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKmNsYXNzX2ZpbmRfZGV2 aWNlX2J5X25hbWUoc3RydWN0IGNsYXNzICpjbGFzcywKMTQ0NzQ6ICAgICAgICAgICAgICBjb25z dCBjaGFyICpuYW1lKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBjbGFzc19maW5kX2RldmljZShj bGFzcywgKCh2b2lkICopMCksIG5hbWUsIGRldmljZV9tYXRjaF9uYW1lKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgc3RydWN0IGRldmljZSAqCjE0NDc0OiBjbGFzc19maW5kX2RldmljZV9ieV9vZl9ub2RlKHN0 cnVjdCBjbGFzcyAqY2xhc3MsIGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIGNsYXNzX2ZpbmRfZGV2aWNlKGNsYXNzLCAoKHZvaWQgKikwKSwgbnAs IGRldmljZV9tYXRjaF9vZl9ub2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRldmljZSAqCjE0 NDc0OiBjbGFzc19maW5kX2RldmljZV9ieV9md25vZGUoc3RydWN0IGNsYXNzICpjbGFzcywKMTQ0 NzQ6ICAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBjbGFzc19maW5kX2RldmljZShjbGFzcywgKCh2b2lkICopMCksIGZ3bm9k ZSwgZGV2aWNlX21hdGNoX2Z3bm9kZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKmNs YXNzX2ZpbmRfZGV2aWNlX2J5X2RldnQoc3RydWN0IGNsYXNzICpjbGFzcywKMTQ0NzQ6ICAgICAg ICAgICAgICBkZXZfdCBkZXZ0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBjbGFzc19maW5kX2Rl dmljZShjbGFzcywgKCh2b2lkICopMCksICZkZXZ0LCBkZXZpY2VfbWF0Y2hfZGV2dCk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGFjcGlfZGV2aWNlOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRldmlj ZSAqCjE0NDc0OiBjbGFzc19maW5kX2RldmljZV9ieV9hY3BpX2RldihzdHJ1Y3QgY2xhc3MgKmNs YXNzLCBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGNsYXNzX2ZpbmRfZGV2aWNlKGNsYXNzLCAoKHZvaWQgKikwKSwgYWRldiwgZGV2aWNlX21h dGNoX2FjcGlfZGV2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTkxICIuL2luY2x1ZGUvbGludXgvZGV2 aWNlL2NsYXNzLmgiCjE0NDc0OiBzdHJ1Y3QgY2xhc3NfYXR0cmlidXRlIHsKMTQ0NzQ6ICBzdHJ1 Y3QgYXR0cmlidXRlIGF0dHI7CjE0NDc0OiAgc3NpemVfdCAoKnNob3cpKHN0cnVjdCBjbGFzcyAq Y2xhc3MsIHN0cnVjdCBjbGFzc19hdHRyaWJ1dGUgKmF0dHIsCjE0NDc0OiAgICBjaGFyICpidWYp OwoxNDQ3NDogIHNzaXplX3QgKCpzdG9yZSkoc3RydWN0IGNsYXNzICpjbGFzcywgc3RydWN0IGNs YXNzX2F0dHJpYnV0ZSAqYXR0ciwKMTQ0NzQ6ICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNv dW50KTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDIwNiAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9jbGFz cy5oIgoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSkgY2xhc3NfY3JlYXRlX2ZpbGVfbnMoc3RydWN0IGNsYXNzICpjbGFzcywKMTQ0NzQ6ICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgY2xhc3NfYXR0cmlidXRlICphdHRyLAoxNDQ3NDogICAgICAg ICAgIGNvbnN0IHZvaWQgKm5zKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNsYXNzX3JlbW92ZV9maWxl X25zKHN0cnVjdCBjbGFzcyAqY2xhc3MsCjE0NDc0OiAgICAgIGNvbnN0IHN0cnVjdCBjbGFzc19h dHRyaWJ1dGUgKmF0dHIsCjE0NDc0OiAgICAgIGNvbnN0IHZvaWQgKm5zKTsKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBjbGFzc19jcmVh dGVfZmlsZShzdHJ1Y3QgY2xhc3MgKmNsYXNzLAoxNDQ3NDogICAgICBjb25zdCBzdHJ1Y3QgY2xh c3NfYXR0cmlidXRlICphdHRyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBjbGFzc19jcmVhdGVf ZmlsZV9ucyhjbGFzcywgYXR0ciwgKCh2b2lkICopMCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGNsYXNzX3JlbW92ZV9maWxlKHN0cnVjdCBjbGFzcyAqY2xhc3MsCjE0NDc0OiAgICAg ICAgICBjb25zdCBzdHJ1Y3QgY2xhc3NfYXR0cmlidXRlICphdHRyKQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiBjbGFzc19yZW1vdmVfZmlsZV9ucyhjbGFzcywgYXR0ciwgKCh2b2lkICopMCkpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbGFzc19hdHRyaWJ1dGVfc3Ry aW5nIHsKMTQ0NzQ6ICBzdHJ1Y3QgY2xhc3NfYXR0cmlidXRlIGF0dHI7CjE0NDc0OiAgY2hhciAq c3RyOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjM4ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2NsYXNz LmgiCjE0NDc0OiBleHRlcm4gc3NpemVfdCBzaG93X2NsYXNzX2F0dHJfc3RyaW5nKHN0cnVjdCBj bGFzcyAqY2xhc3MsIHN0cnVjdCBjbGFzc19hdHRyaWJ1dGUgKmF0dHIsCjE0NDc0OiAgICAgICAg ICAgICAgICAgICAgICAgICBjaGFyICpidWYpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY2xhc3Nf aW50ZXJmYWNlIHsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7CjE0NDc0OiAgc3RydWN0 IGNsYXNzICpjbGFzczsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKmFkZF9kZXYpIChzdHJ1Y3QgZGV2 aWNlICosIHN0cnVjdCBjbGFzc19pbnRlcmZhY2UgKik7CjE0NDc0OiAgdm9pZCAoKnJlbW92ZV9k ZXYpIChzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCBjbGFzc19pbnRlcmZhY2UgKik7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBjbGFzc19pbnRlcmZhY2VfcmVnaXN0ZXIoc3RydWN0IGNsYXNzX2ludGVyZmFj ZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNsYXNzX2ludGVyZmFjZV91bnJlZ2lzdGVyKHN0cnVj dCBjbGFzc19pbnRlcmZhY2UgKik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgY2xhc3Mg KiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgX19jbGFzc19jcmVhdGUo c3RydWN0IG1vZHVsZSAqb3duZXIsCjE0NDc0OiAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCjE0 NDc0OiAgICAgICAgIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KTsKMTQ0NzQ6IGV4dGVybiB2 b2lkIGNsYXNzX2Rlc3Ryb3koc3RydWN0IGNsYXNzICpjbHMpOwoxNDQ3NDogIyAzMSAiLi9pbmNs dWRlL2xpbnV4L2RldmljZS5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9kZXZpY2Uv ZHJpdmVyLmgiIDEKMTQ0NzQ6ICMgNDQgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvZHJpdmVyLmgi CjE0NDc0OiBlbnVtIHByb2JlX3R5cGUgewoxNDQ3NDogIFBST0JFX0RFRkFVTFRfU1RSQVRFR1ks CjE0NDc0OiAgUFJPQkVfUFJFRkVSX0FTWU5DSFJPTk9VUywKMTQ0NzQ6ICBQUk9CRV9GT1JDRV9T WU5DSFJPTk9VUywKMTQ0NzQ6IH07CjE0NDc0OiAjIDk1ICIuL2luY2x1ZGUvbGludXgvZGV2aWNl L2RyaXZlci5oIgoxNDQ3NDogc3RydWN0IGRldmljZV9kcml2ZXIgewoxNDQ3NDogIGNvbnN0IGNo YXIgKm5hbWU7CjE0NDc0OiAgc3RydWN0IGJ1c190eXBlICpidXM7CjE0NDc0OiAKMTQ0NzQ6ICBz dHJ1Y3QgbW9kdWxlICpvd25lcjsKMTQ0NzQ6ICBjb25zdCBjaGFyICptb2RfbmFtZTsKMTQ0NzQ6 IAoxNDQ3NDogIGJvb2wgc3VwcHJlc3NfYmluZF9hdHRyczsKMTQ0NzQ6ICBlbnVtIHByb2JlX3R5 cGUgcHJvYmVfdHlwZTsKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQg Km9mX21hdGNoX3RhYmxlOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCAqYWNw aV9tYXRjaF90YWJsZTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKnByb2JlKSAoc3RydWN0IGRldmlj ZSAqZGV2KTsKMTQ0NzQ6ICB2b2lkICgqc3luY19zdGF0ZSkoc3RydWN0IGRldmljZSAqZGV2KTsK MTQ0NzQ6ICBpbnQgKCpyZW1vdmUpIChzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogIHZvaWQg KCpzaHV0ZG93bikgKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqc3VzcGVuZCkg KHN0cnVjdCBkZXZpY2UgKmRldiwgcG1fbWVzc2FnZV90IHN0YXRlKTsKMTQ0NzQ6ICBpbnQgKCpy ZXN1bWUpIChzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGVfZ3JvdXAgKipncm91cHM7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAq KmRldl9ncm91cHM7CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyAqcG07 CjE0NDc0OiAgdm9pZCAoKmNvcmVkdW1wKSAoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IAox NDQ3NDogIHN0cnVjdCBkcml2ZXJfcHJpdmF0ZSAqcDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSkgZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpOwoxNDQ3NDogZXh0 ZXJuIHZvaWQgZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydik7CjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJpdmVyX2ZpbmQoY29u c3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBidXNfdHlwZSAqYnVzKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgZHJpdmVyX3Byb2JlX2RvbmUodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCB3 YWl0X2Zvcl9kZXZpY2VfcHJvYmUodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZHJpdmVyX2F0dHJpYnV0ZSB7CjE0NDc0OiAgc3RydWN0IGF0dHJpYnV0ZSBhdHRy OwoxNDQ3NDogIHNzaXplX3QgKCpzaG93KShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJpdmVyLCBj aGFyICpidWYpOwoxNDQ3NDogIHNzaXplX3QgKCpzdG9yZSkoc3RydWN0IGRldmljZV9kcml2ZXIg KmRyaXZlciwgY29uc3QgY2hhciAqYnVmLAoxNDQ3NDogICAgIHNpemVfdCBjb3VudCk7CjE0NDc0 OiB9OwoxNDQ3NDogIyAxNDggIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvZHJpdmVyLmgiCjE0NDc0 OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkcml2 ZXJfY3JlYXRlX2ZpbGUoc3RydWN0IGRldmljZV9kcml2ZXIgKmRyaXZlciwKMTQ0NzQ6ICAgICAg Y29uc3Qgc3RydWN0IGRyaXZlcl9hdHRyaWJ1dGUgKmF0dHIpOwoxNDQ3NDogZXh0ZXJuIHZvaWQg ZHJpdmVyX3JlbW92ZV9maWxlKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcml2ZXIsCjE0NDc0OiAg ICAgICAgICAgY29uc3Qgc3RydWN0IGRyaXZlcl9hdHRyaWJ1dGUgKmF0dHIpOwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBk cml2ZXJfZm9yX2VhY2hfZGV2aWNlKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsCjE0NDc0OiAg ICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlICpzdGFydCwKMTQ0NzQ6ICAgICAgICAgICAgIHZvaWQg KmRhdGEsCjE0NDc0OiAgICAgICAgICAgICBpbnQgKCpmbikoc3RydWN0IGRldmljZSAqZGV2LAox NDQ3NDogICAgICAgICB2b2lkICopKTsKMTQ0NzQ6IHN0cnVjdCBkZXZpY2UgKmRyaXZlcl9maW5k X2RldmljZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LAoxNDQ3NDogICAgICAgc3RydWN0IGRl dmljZSAqc3RhcnQsIGNvbnN0IHZvaWQgKmRhdGEsCjE0NDc0OiAgICAgICBpbnQgKCptYXRjaCko c3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpkYXRhKSk7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZp Y2UgKmRyaXZlcl9maW5kX2RldmljZV9ieV9uYW1lKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYs CjE0NDc0OiAgICAgICAgY29uc3QgY2hhciAqbmFtZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g ZHJpdmVyX2ZpbmRfZGV2aWNlKGRydiwgKCh2b2lkICopMCksIG5hbWUsIGRldmljZV9tYXRjaF9u YW1lKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRldmljZSAqCjE0NDc0OiBkcml2ZXJfZmluZF9k ZXZpY2VfYnlfb2Zfbm9kZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LAoxNDQ3NDogICAgICAg ICAgY29uc3Qgc3RydWN0IGRldmljZV9ub2RlICpucCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g ZHJpdmVyX2ZpbmRfZGV2aWNlKGRydiwgKCh2b2lkICopMCksIG5wLCBkZXZpY2VfbWF0Y2hfb2Zf bm9kZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKgoxNDQ3NDogZHJpdmVyX2ZpbmRf ZGV2aWNlX2J5X2Z3bm9kZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LAoxNDQ3NDogICAgICAg ICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBkcml2ZXJfZmluZF9kZXZpY2UoZHJ2LCAoKHZvaWQgKikwKSwgZndub2RlLCBkZXZpY2Vf bWF0Y2hfZndub2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRldmljZSAqZHJpdmVyX2ZpbmRf ZGV2aWNlX2J5X2RldnQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwKMTQ0NzQ6ICAgICAgICBk ZXZfdCBkZXZ0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkcml2ZXJfZmluZF9kZXZpY2UoZHJ2 LCAoKHZvaWQgKikwKSwgJmRldnQsIGRldmljZV9tYXRjaF9kZXZ0KTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgc3RydWN0IGRldmljZSAqZHJpdmVyX2ZpbmRfbmV4dF9kZXZpY2Uoc3RydWN0IGRl dmljZV9kcml2ZXIgKmRydiwKMTQ0NzQ6ICAgICAgICAgICAgc3RydWN0IGRldmljZSAqc3RhcnQp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRyaXZlcl9maW5kX2RldmljZShkcnYsIHN0YXJ0LCAo KHZvaWQgKikwKSwgZGV2aWNlX21hdGNoX2FueSk7CjE0NDc0OiB9CjE0NDc0OiAjIDIyNSAiLi9p bmNsdWRlL2xpbnV4L2RldmljZS9kcml2ZXIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKgoxNDQ3 NDogZHJpdmVyX2ZpbmRfZGV2aWNlX2J5X2FjcGlfZGV2KHN0cnVjdCBkZXZpY2VfZHJpdmVyICpk cnYsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBkcml2ZXJfZmluZF9kZXZpY2UoZHJ2LCAoKHZvaWQgKikwKSwg YWRldiwgZGV2aWNlX21hdGNoX2FjcGlfZGV2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjM5ICIuL2lu Y2x1ZGUvbGludXgvZGV2aWNlL2RyaXZlci5oIgoxNDQ3NDogdm9pZCBkcml2ZXJfZGVmZXJyZWRf cHJvYmVfYWRkKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBpbnQgZHJpdmVyX2RlZmVycmVk X3Byb2JlX2NoZWNrX3N0YXRlKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBpbnQgZHJpdmVy X2RlZmVycmVkX3Byb2JlX2NoZWNrX3N0YXRlX2NvbnRpbnVlKHN0cnVjdCBkZXZpY2UgKmRldik7 CjE0NDc0OiB2b2lkIGRyaXZlcl9pbml0KHZvaWQpOwoxNDQ3NDogIyAzMiAiLi9pbmNsdWRlL2xp bnV4L2RldmljZS5oIiAyCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGV2aWNl LmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRldl9h cmNoZGF0YSB7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICppb21tdTsKMTQ0NzQ6IAoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBkZXZfYXJjaGRhdGEgewoxNDQ3NDogfTsKMTQ0NzQ6ICMg MzMgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGV2 aWNlOwoxNDQ3NDogc3RydWN0IGRldmljZV9wcml2YXRlOwoxNDQ3NDogc3RydWN0IGRldmljZV9k cml2ZXI7CjE0NDc0OiBzdHJ1Y3QgZHJpdmVyX3ByaXZhdGU7CjE0NDc0OiBzdHJ1Y3QgbW9kdWxl OwoxNDQ3NDogc3RydWN0IGNsYXNzOwoxNDQ3NDogc3RydWN0IHN1YnN5c19wcml2YXRlOwoxNDQ3 NDogc3RydWN0IGRldmljZV9ub2RlOwoxNDQ3NDogc3RydWN0IGZ3bm9kZV9oYW5kbGU7CjE0NDc0 OiBzdHJ1Y3QgaW9tbXVfb3BzOwoxNDQ3NDogc3RydWN0IGlvbW11X2dyb3VwOwoxNDQ3NDogc3Ry dWN0IGlvbW11X2Z3c3BlYzsKMTQ0NzQ6IHN0cnVjdCBkZXZfcGluX2luZm87CjE0NDc0OiBzdHJ1 Y3QgaW9tbXVfcGFyYW07CjE0NDc0OiAjIDYyICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCjE0 NDc0OiBzdHJ1Y3Qgc3Vic3lzX2ludGVyZmFjZSB7CjE0NDc0OiAgY29uc3QgY2hhciAqbmFtZTsK MTQ0NzQ6ICBzdHJ1Y3QgYnVzX3R5cGUgKnN1YnN5czsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFk IG5vZGU7CjE0NDc0OiAgaW50ICgqYWRkX2Rldikoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qg c3Vic3lzX2ludGVyZmFjZSAqc2lmKTsKMTQ0NzQ6ICB2b2lkICgqcmVtb3ZlX2Rldikoc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc3Vic3lzX2ludGVyZmFjZSAqc2lmKTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGludCBzdWJzeXNfaW50ZXJmYWNlX3JlZ2lzdGVyKHN0cnVjdCBzdWJzeXNf aW50ZXJmYWNlICpzaWYpOwoxNDQ3NDogdm9pZCBzdWJzeXNfaW50ZXJmYWNlX3VucmVnaXN0ZXIo c3RydWN0IHN1YnN5c19pbnRlcmZhY2UgKnNpZik7CjE0NDc0OiAKMTQ0NzQ6IGludCBzdWJzeXNf c3lzdGVtX3JlZ2lzdGVyKHN0cnVjdCBidXNfdHlwZSAqc3Vic3lzLAoxNDQ3NDogICAgICAgY29u c3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CjE0NDc0OiBpbnQgc3Vic3lzX3Zp cnR1YWxfcmVnaXN0ZXIoc3RydWN0IGJ1c190eXBlICpzdWJzeXMsCjE0NDc0OiAgICAgICAgY29u c3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CjE0NDc0OiAjIDg3ICIuL2luY2x1 ZGUvbGludXgvZGV2aWNlLmgiCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlX3R5cGUgewoxNDQ3NDogIGNv bnN0IGNoYXIgKm5hbWU7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdy b3VwczsKMTQ0NzQ6ICBpbnQgKCp1ZXZlbnQpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtv YmpfdWV2ZW50X2VudiAqZW52KTsKMTQ0NzQ6ICBjaGFyICooKmRldm5vZGUpKHN0cnVjdCBkZXZp Y2UgKmRldiwgdW1vZGVfdCAqbW9kZSwKMTQ0NzQ6ICAgICBrdWlkX3QgKnVpZCwga2dpZF90ICpn aWQpOwoxNDQ3NDogIHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDog CjE0NDc0OiAgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgKnBtOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSB7CjE0NDc0OiAgc3RydWN0IGF0 dHJpYnV0ZSBhdHRyOwoxNDQ3NDogIHNzaXplX3QgKCpzaG93KShzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAoxNDQ3NDogICAgY2hhciAqYnVmKTsKMTQ0 NzQ6ICBzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsCjE0NDc0OiAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQp OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRldl9leHRfYXR0cmlidXRlIHsKMTQ0 NzQ6ICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBhdHRyOwoxNDQ3NDogIHZvaWQgKnZhcjsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHNzaXplX3QgZGV2aWNlX3Nob3dfdWxvbmcoc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKMTQ0NzQ6ICAgICAgY2hh ciAqYnVmKTsKMTQ0NzQ6IHNzaXplX3QgZGV2aWNlX3N0b3JlX3Vsb25nKHN0cnVjdCBkZXZpY2Ug KmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCjE0NDc0OiAgICAgICBjb25zdCBj aGFyICpidWYsIHNpemVfdCBjb3VudCk7CjE0NDc0OiBzc2l6ZV90IGRldmljZV9zaG93X2ludChz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAoxNDQ3NDog ICAgY2hhciAqYnVmKTsKMTQ0NzQ6IHNzaXplX3QgZGV2aWNlX3N0b3JlX2ludChzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAoxNDQ3NDogICAgIGNvbnN0 IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKMTQ0NzQ6IHNzaXplX3QgZGV2aWNlX3Nob3dfYm9v bChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAoxNDQ3 NDogICAgY2hhciAqYnVmKTsKMTQ0NzQ6IHNzaXplX3QgZGV2aWNlX3N0b3JlX2Jvb2woc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKMTQ0NzQ6ICAgICBj b25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCk7CjE0NDc0OiAjIDE0OSAiLi9pbmNsdWRlL2xp bnV4L2RldmljZS5oIgoxNDQ3NDogZXh0ZXJuIGludCBkZXZpY2VfY3JlYXRlX2ZpbGUoc3RydWN0 IGRldmljZSAqZGV2aWNlLAoxNDQ3NDogICAgICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmVudHJ5KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRldmljZV9yZW1vdmVfZmlsZShzdHJ1 Y3QgZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgZGV2aWNlX3JlbW92ZV9maWxlX3NlbGYo c3RydWN0IGRldmljZSAqZGV2LAoxNDQ3NDogICAgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0cik7CjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91 bnVzZWRfcmVzdWx0X18pKSBkZXZpY2VfY3JlYXRlX2Jpbl9maWxlKHN0cnVjdCBkZXZpY2UgKmRl diwKMTQ0NzQ6ICAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmF0dHIpOwoxNDQ3NDog ZXh0ZXJuIHZvaWQgZGV2aWNlX3JlbW92ZV9iaW5fZmlsZShzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0 NDc0OiAgICAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmF0dHIpOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdm9pZCAoKmRyX3JlbGVhc2VfdCkoc3RydWN0IGRldmljZSAq ZGV2LCB2b2lkICpyZXMpOwoxNDQ3NDogdHlwZWRlZiBpbnQgKCpkcl9tYXRjaF90KShzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHZvaWQgKnJlcywgdm9pZCAqbWF0Y2hfZGF0YSk7CjE0NDc0OiAjIDE3MiAi Li9pbmNsdWRlL2xpbnV4L2RldmljZS5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgKmRldnJlc19hbGxv Y19ub2RlKGRyX3JlbGVhc2VfdCByZWxlYXNlLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwLAoxNDQ3 NDogICAgICAgICAgIGludCBuaWQpIF9fYXR0cmlidXRlX18oKF9fbWFsbG9jX18pKTsKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgKmRldnJlc19hbGxvYyhkcl9yZWxlYXNlX3QgcmVsZWFzZSwgc2l6ZV90IHNpemUsIGdm cF90IGdmcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZGV2cmVzX2FsbG9jX25vZGUocmVsZWFz ZSwgc2l6ZSwgZ2ZwLCAoLTEpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBkZXZyZXNfZm9yX2VhY2hfcmVzKHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFz ZV90IHJlbGVhc2UsCjE0NDc0OiAgICAgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0 YSwKMTQ0NzQ6ICAgICB2b2lkICgqZm4pKHN0cnVjdCBkZXZpY2UgKiwgdm9pZCAqLCB2b2lkICop LAoxNDQ3NDogICAgIHZvaWQgKmRhdGEpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGV2cmVzX2ZyZWUo dm9pZCAqcmVzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRldnJlc19hZGQoc3RydWN0IGRldmljZSAq ZGV2LCB2b2lkICpyZXMpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgKmRldnJlc19maW5kKHN0cnVjdCBk ZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJlbGVhc2UsCjE0NDc0OiAgICAgZHJfbWF0Y2hfdCBt YXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSk7CjE0NDc0OiBleHRlcm4gdm9pZCAqZGV2cmVzX2dldChz dHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKm5ld19yZXMsCjE0NDc0OiAgICBkcl9tYXRjaF90IG1h dGNoLCB2b2lkICptYXRjaF9kYXRhKTsKMTQ0NzQ6IGV4dGVybiB2b2lkICpkZXZyZXNfcmVtb3Zl KHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJlbGVhc2UsCjE0NDc0OiAgICAgICBk cl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTsKMTQ0NzQ6IGV4dGVybiBpbnQgZGV2 cmVzX2Rlc3Ryb3koc3RydWN0IGRldmljZSAqZGV2LCBkcl9yZWxlYXNlX3QgcmVsZWFzZSwKMTQ0 NzQ6ICAgICAgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSk7CjE0NDc0OiBleHRl cm4gaW50IGRldnJlc19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJl bGVhc2UsCjE0NDc0OiAgICAgIGRyX21hdGNoX3QgbWF0Y2gsIHZvaWQgKm1hdGNoX2RhdGEpOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkICogX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGRldnJlc19vcGVuX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldiwg dm9pZCAqaWQsCjE0NDc0OiAgICAgICAgICAgZ2ZwX3QgZ2ZwKTsKMTQ0NzQ6IGV4dGVybiB2b2lk IGRldnJlc19jbG9zZV9ncm91cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmlkKTsKMTQ0NzQ6 IGV4dGVybiB2b2lkIGRldnJlc19yZW1vdmVfZ3JvdXAoc3RydWN0IGRldmljZSAqZGV2LCB2b2lk ICppZCk7CjE0NDc0OiBleHRlcm4gaW50IGRldnJlc19yZWxlYXNlX2dyb3VwKHN0cnVjdCBkZXZp Y2UgKmRldiwgdm9pZCAqaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkICpk ZXZtX2ttYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwKSBf X2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSk7CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygo X19mb3JtYXRfXyhwcmludGYsIDMsIDApKSkKMTQ0NzQ6IGNoYXIgKmRldm1fa3Zhc3ByaW50Zihz dHJ1Y3QgZGV2aWNlICpkZXYsIGdmcF90IGdmcCwgY29uc3QgY2hhciAqZm10LAoxNDQ3NDogICAg ICAgICB2YV9saXN0IGFwKSBfX2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSk7CjE0NDc0OiBleHRl cm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKMTQ0NzQ6IGNoYXIg KmRldm1fa2FzcHJpbnRmKHN0cnVjdCBkZXZpY2UgKmRldiwgZ2ZwX3QgZ2ZwLCBjb25zdCBjaGFy ICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpOwoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqZGV2 bV9remFsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIGdmcF90IGdmcCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZGV2bV9rbWFsbG9jKGRldiwgc2l6ZSwgZ2ZwIHwgKCggZ2Zw X3QpMHgxMDB1KSk7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICpkZXZtX2ttYWxsb2NfYXJyYXkoc3Ry dWN0IGRldmljZSAqZGV2LAoxNDQ3NDogICAgICAgICAgICBzaXplX3Qgbiwgc2l6ZV90IHNpemUs IGdmcF90IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIHNpemVfdCBieXRlczsKMTQ0NzQ6IAoxNDQ3 NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCh7IHR5cGVvZihuKSBfX2EgPSAobik7IHR5cGVv ZihzaXplKSBfX2IgPSAoc2l6ZSk7IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAodm9p ZCkgKCZfX2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fbXVsX292 ZXJmbG93KF9fYSwgX19iLCBfX2QpOyB9KSksIDApKQoxNDQ3NDogICByZXR1cm4gKCh2b2lkICop MCk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZGV2bV9rbWFsbG9jKGRldiwgYnl0ZXMsIGZsYWdz KTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKmRldm1fa2NhbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYs CjE0NDc0OiAgICAgIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIGRldm1fa21hbGxvY19hcnJheShkZXYsIG4sIHNpemUsIGZsYWdzIHwg KCggZ2ZwX3QpMHgxMDB1KSk7CjE0NDc0OiB9CjE0NDc0OiBleHRlcm4gdm9pZCBkZXZtX2tmcmVl KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgdm9pZCAqcCk7CjE0NDc0OiBleHRlcm4gY2hhciAq ZGV2bV9rc3RyZHVwKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqcywgZ2ZwX3QgZ2Zw KSBfX2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSk7CjE0NDc0OiBleHRlcm4gY29uc3QgY2hhciAq ZGV2bV9rc3RyZHVwX2NvbnN0KHN0cnVjdCBkZXZpY2UgKmRldiwKMTQ0NzQ6ICAgICAgICAgICBj b25zdCBjaGFyICpzLCBnZnBfdCBnZnApOwoxNDQ3NDogZXh0ZXJuIHZvaWQgKmRldm1fa21lbWR1 cChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGxlbiwKMTQ0NzQ6 ICAgICAgZ2ZwX3QgZ2ZwKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZGV2 bV9nZXRfZnJlZV9wYWdlcyhzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgICBnZnBfdCBn ZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRldm1fZnJl ZV9wYWdlcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgYWRkcik7CjE0NDc0OiAK MTQ0NzQ6IHZvaWQgKmRldm1faW9yZW1hcF9yZXNvdXJjZShzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0 NDc0OiAgICAgICAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZSAqcmVzKTsKMTQ0NzQ6IHZvaWQgKmRl dm1faW9yZW1hcF9yZXNvdXJjZV93YyhzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZSAqcmVzKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCAqZGV2 bV9vZl9pb21hcChzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgICAgc3RydWN0IGRldmlj ZV9ub2RlICpub2RlLCBpbnQgaW5kZXgsCjE0NDc0OiAgICAgICAgcmVzb3VyY2Vfc2l6ZV90ICpz aXplKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQgZGV2bV9hZGRfYWN0aW9uKHN0cnVjdCBk ZXZpY2UgKmRldiwgdm9pZCAoKmFjdGlvbikodm9pZCAqKSwgdm9pZCAqZGF0YSk7CjE0NDc0OiB2 b2lkIGRldm1fcmVtb3ZlX2FjdGlvbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKCphY3Rpb24p KHZvaWQgKiksIHZvaWQgKmRhdGEpOwoxNDQ3NDogdm9pZCBkZXZtX3JlbGVhc2VfYWN0aW9uKHN0 cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAoKmFjdGlvbikodm9pZCAqKSwgdm9pZCAqZGF0YSk7CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoc3RydWN0IGRldmljZSAq ZGV2LAoxNDQ3NDogICAgICAgICB2b2lkICgqYWN0aW9uKSh2b2lkICopLCB2b2lkICpkYXRhKQox NDQ3NDogewoxNDQ3NDogIGludCByZXQ7CjE0NDc0OiAKMTQ0NzQ6ICByZXQgPSBkZXZtX2FkZF9h Y3Rpb24oZGV2LCBhY3Rpb24sIGRhdGEpOwoxNDQ3NDogIGlmIChyZXQpCjE0NDc0OiAgIGFjdGlv bihkYXRhKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiByZXQ7CjE0NDc0OiB9CjE0NDc0OiAjIDI4 MiAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIgoxNDQ3NDogdm9pZCAqX19kZXZtX2FsbG9jX3Bl cmNwdShzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLAoxNDQ3NDogICAgICAgIHNpemVf dCBhbGlnbik7CjE0NDc0OiB2b2lkIGRldm1fZnJlZV9wZXJjcHUoc3RydWN0IGRldmljZSAqZGV2 LCB2b2lkICpwZGF0YSk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkZXZpY2VfZG1hX3BhcmFtZXRl cnMgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50 IG1heF9zZWdtZW50X3NpemU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBzZWdtZW50X2JvdW5kYXJ5 X21hc2s7CjE0NDc0OiB9OwoxNDQ3NDogIyAzMDYgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIK MTQ0NzQ6IHN0cnVjdCBkZXZpY2VfY29ubmVjdGlvbiB7CjE0NDc0OiAgc3RydWN0IGZ3bm9kZV9o YW5kbGUgKmZ3bm9kZTsKMTQ0NzQ6ICBjb25zdCBjaGFyICplbmRwb2ludFsyXTsKMTQ0NzQ6ICBj b25zdCBjaGFyICppZDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiB0eXBlZGVmIHZvaWQgKigqZGV2Y29uX21hdGNoX2ZuX3QpKHN0cnVjdCBk ZXZpY2VfY29ubmVjdGlvbiAqY29uLCBpbnQgZXAsCjE0NDc0OiAgICAgICAgdm9pZCAqZGF0YSk7 CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgKmZ3bm9kZV9jb25uZWN0aW9uX2ZpbmRfbWF0Y2goc3RydWN0 IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwKMTQ0NzQ6ICAgICAgICBjb25zdCBjaGFyICpjb25faWQs IHZvaWQgKmRhdGEsCjE0NDc0OiAgICAgICAgZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gpOwoxNDQ3 NDogdm9pZCAqZGV2aWNlX2Nvbm5lY3Rpb25fZmluZF9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYs IGNvbnN0IGNoYXIgKmNvbl9pZCwKMTQ0NzQ6ICAgICAgICB2b2lkICpkYXRhLCBkZXZjb25fbWF0 Y2hfZm5fdCBtYXRjaCk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkZXZpY2UgKmRldmljZV9jb25u ZWN0aW9uX2ZpbmQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpjb25faWQpOwoxNDQ3 NDogCjE0NDc0OiB2b2lkIGRldmljZV9jb25uZWN0aW9uX2FkZChzdHJ1Y3QgZGV2aWNlX2Nvbm5l Y3Rpb24gKmNvbik7CjE0NDc0OiB2b2lkIGRldmljZV9jb25uZWN0aW9uX3JlbW92ZShzdHJ1Y3Qg ZGV2aWNlX2Nvbm5lY3Rpb24gKmNvbik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZpY2VfY29ubmVjdGlvbnNfYWRkKHN0cnVjdCBkZXZpY2Vf Y29ubmVjdGlvbiAqY29ucykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZGV2aWNlX2Nvbm5lY3Rp b24gKmM7CjE0NDc0OiAKMTQ0NzQ6ICBmb3IgKGMgPSBjb25zOyBjLT5lbmRwb2ludFswXTsgYysr KQoxNDQ3NDogICBkZXZpY2VfY29ubmVjdGlvbl9hZGQoYyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZpY2VfY29ubmVjdGlv bnNfcmVtb3ZlKHN0cnVjdCBkZXZpY2VfY29ubmVjdGlvbiAqY29ucykKMTQ0NzQ6IHsKMTQ0NzQ6 ICBzdHJ1Y3QgZGV2aWNlX2Nvbm5lY3Rpb24gKmM7CjE0NDc0OiAKMTQ0NzQ6ICBmb3IgKGMgPSBj b25zOyBjLT5lbmRwb2ludFswXTsgYysrKQoxNDQ3NDogICBkZXZpY2VfY29ubmVjdGlvbl9yZW1v dmUoYyk7CjE0NDc0OiB9CjE0NDc0OiAjIDM2MCAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIgox NDQ3NDogZW51bSBkZXZpY2VfbGlua19zdGF0ZSB7CjE0NDc0OiAgRExfU1RBVEVfTk9ORSA9IC0x LAoxNDQ3NDogIERMX1NUQVRFX0RPUk1BTlQgPSAwLAoxNDQ3NDogIERMX1NUQVRFX0FWQUlMQUJM RSwKMTQ0NzQ6ICBETF9TVEFURV9DT05TVU1FUl9QUk9CRSwKMTQ0NzQ6ICBETF9TVEFURV9BQ1RJ VkUsCjE0NDc0OiAgRExfU1RBVEVfU1VQUExJRVJfVU5CSU5ELAoxNDQ3NDogfTsKMTQ0NzQ6ICMg NDAzICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlX2xpbmsg ewoxNDQ3NDogIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hl YWQgc19ub2RlOwoxNDQ3NDogIHN0cnVjdCBkZXZpY2UgKmNvbnN1bWVyOwoxNDQ3NDogIHN0cnVj dCBsaXN0X2hlYWQgY19ub2RlOwoxNDQ3NDogIGVudW0gZGV2aWNlX2xpbmtfc3RhdGUgc3RhdHVz OwoxNDQ3NDogIHUzMiBmbGFnczsKMTQ0NzQ6ICByZWZjb3VudF90IHJwbV9hY3RpdmU7CjE0NDc0 OiAgc3RydWN0IGtyZWYga3JlZjsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBjYWxsYmFja19oZWFk IGNhbGxiYWNrX2hlYWQ7CjE0NDc0OiAKMTQ0NzQ6ICBib29sIHN1cHBsaWVyX3ByZWFjdGl2YXRl ZDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDQyNSAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIgoxNDQ3 NDogZW51bSBkbF9kZXZfc3RhdGUgewoxNDQ3NDogIERMX0RFVl9OT19EUklWRVIgPSAwLAoxNDQ3 NDogIERMX0RFVl9QUk9CSU5HLAoxNDQ3NDogIERMX0RFVl9EUklWRVJfQk9VTkQsCjE0NDc0OiAg RExfREVWX1VOQklORElORywKMTQ0NzQ6IH07CjE0NDc0OiAjIDQ0MiAiLi9pbmNsdWRlL2xpbnV4 L2RldmljZS5oIgoxNDQ3NDogc3RydWN0IGRldl9saW5rc19pbmZvIHsKMTQ0NzQ6ICBzdHJ1Y3Qg bGlzdF9oZWFkIHN1cHBsaWVyczsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGNvbnN1bWVyczsK MTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIG5lZWRzX3N1cHBsaWVyczsKMTQ0NzQ6ICBzdHJ1Y3Qg bGlzdF9oZWFkIGRlZmVyX3N5bmM7CjE0NDc0OiAgYm9vbCBuZWVkX2Zvcl9wcm9iZTsKMTQ0NzQ6 ICBlbnVtIGRsX2Rldl9zdGF0ZSBzdGF0dXM7CjE0NDc0OiB9OwoxNDQ3NDogIyA1MzcgIi4vaW5j bHVkZS9saW51eC9kZXZpY2UuaCIKMTQ0NzQ6IHN0cnVjdCBkZXZpY2UgewoxNDQ3NDogIHN0cnVj dCBrb2JqZWN0IGtvYmo7CjE0NDc0OiAgc3RydWN0IGRldmljZSAqcGFyZW50OwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IGRldmljZV9wcml2YXRlICpwOwoxNDQ3NDogCjE0NDc0OiAgY29uc3QgY2hh ciAqaW5pdF9uYW1lOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkZXZpY2VfdHlwZSAqdHlwZTsKMTQ0 NzQ6IAoxNDQ3NDogIHN0cnVjdCBidXNfdHlwZSAqYnVzOwoxNDQ3NDogIHN0cnVjdCBkZXZpY2Vf ZHJpdmVyICpkcml2ZXI7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICpwbGF0Zm9ybV9kYXRhOwoxNDQ3 NDogCjE0NDc0OiAgdm9pZCAqZHJpdmVyX2RhdGE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbXV0ZXggbXV0ZXg7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IGRldl9saW5rc19pbmZvIGxpbmtzOwoxNDQ3NDogIHN0cnVjdCBkZXZf cG1faW5mbyBwb3dlcjsKMTQ0NzQ6ICBzdHJ1Y3QgZGV2X3BtX2RvbWFpbiAqcG1fZG9tYWluOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgaXJxX2RvbWFpbiAqbXNpX2RvbWFpbjsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRldl9waW5faW5mbyAqcGluczsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBtc2lfbGlzdDsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgY29uc3Qgc3RydWN0IGRtYV9tYXBfb3BzICpkbWFfb3BzOwoxNDQ3NDogIHU2NCAq ZG1hX21hc2s7CjE0NDc0OiAgdTY0IGNvaGVyZW50X2RtYV9tYXNrOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTY0IGJ1c19kbWFfbGltaXQ7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyBkbWFfcGZuX29mZnNldDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkZXZpY2VfZG1h X3BhcmFtZXRlcnMgKmRtYV9wYXJtczsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQg ZG1hX3Bvb2xzOwoxNDQ3NDogIyA1OTcgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIKMTQ0NzQ6 ICBzdHJ1Y3QgZGV2X2FyY2hkYXRhIGFyY2hkYXRhOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRl dmljZV9ub2RlICpvZl9ub2RlOwoxNDQ3NDogIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGU7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBkZXZfdCBkZXZ0OwoxNDQ3 NDogIHUzMiBpZDsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5sb2NrX3QgZGV2cmVzX2xvY2s7CjE0NDc0 OiAgc3RydWN0IGxpc3RfaGVhZCBkZXZyZXNfaGVhZDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBj bGFzcyAqY2xhc3M7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vw czsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwox NDQ3NDogIHN0cnVjdCBpb21tdV9ncm91cCAqaW9tbXVfZ3JvdXA7CjE0NDc0OiAgc3RydWN0IGlv bW11X2Z3c3BlYyAqaW9tbXVfZndzcGVjOwoxNDQ3NDogIHN0cnVjdCBpb21tdV9wYXJhbSAqaW9t bXVfcGFyYW07CjE0NDc0OiAKMTQ0NzQ6ICBib29sIG9mZmxpbmVfZGlzYWJsZWQ6MTsKMTQ0NzQ6 ICBib29sIG9mZmxpbmU6MTsKMTQ0NzQ6ICBib29sIG9mX25vZGVfcmV1c2VkOjE7CjE0NDc0OiAg Ym9vbCBzdGF0ZV9zeW5jZWQ6MTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICprb2JqX3RvX2Rldihz dHJ1Y3Qga29iamVjdCAqa29iaikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdm9pZCAqX19t cHRyID0gKHZvaWQgKikoa29iaik7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3Nl cnRfNjMyKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygicG9pbnRlciB0eXBlIG1pc21h dGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISghX19idWlsdGluX3R5cGVzX2NvbXBh dGlibGVfcCh0eXBlb2YoKihrb2JqKSksIHR5cGVvZigoKHN0cnVjdCBkZXZpY2UgKikwKS0+a29i aikpICYmICFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKGtvYmopKSwgdHlw ZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF82MzIoKTsgfSB3aGlsZSAoMCk7ICgo c3RydWN0IGRldmljZSAqKShfX21wdHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IGRldmlj ZSwga29iaikpKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRldmljZV9pb21tdV9tYXBwZWQoc3RydWN0IGRl dmljZSAqZGV2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoZGV2LT5pb21tdV9ncm91cCAhPSAo KHZvaWQgKikwKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvbGludXgvcG1fd2FrZXVwLmgiIDEKMTQ0NzQ6ICMgMTggIi4vaW5jbHVkZS9saW51eC9wbV93 YWtldXAuaCIKMTQ0NzQ6IHN0cnVjdCB3YWtlX2lycTsKMTQ0NzQ6ICMgNDMgIi4vaW5jbHVkZS9s aW51eC9wbV93YWtldXAuaCIKMTQ0NzQ6IHN0cnVjdCB3YWtldXBfc291cmNlIHsKMTQ0NzQ6ICBj b25zdCBjaGFyICpuYW1lOwoxNDQ3NDogIGludCBpZDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFk IGVudHJ5OwoxNDQ3NDogIHNwaW5sb2NrX3QgbG9jazsKMTQ0NzQ6ICBzdHJ1Y3Qgd2FrZV9pcnEg Kndha2VpcnE7CjE0NDc0OiAgc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyB0aW1lcl9leHBpcmVzOwoxNDQ3NDogIGt0aW1lX3QgdG90YWxfdGltZTsKMTQ0NzQ6 ICBrdGltZV90IG1heF90aW1lOwoxNDQ3NDogIGt0aW1lX3QgbGFzdF90aW1lOwoxNDQ3NDogIGt0 aW1lX3Qgc3RhcnRfcHJldmVudF90aW1lOwoxNDQ3NDogIGt0aW1lX3QgcHJldmVudF9zbGVlcF90 aW1lOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZXZlbnRfY291bnQ7CjE0NDc0OiAgdW5zaWduZWQg bG9uZyBhY3RpdmVfY291bnQ7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyByZWxheF9jb3VudDsKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIGV4cGlyZV9jb3VudDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHdh a2V1cF9jb3VudDsKMTQ0NzQ6ICBzdHJ1Y3QgZGV2aWNlICpkZXY7CjE0NDc0OiAgYm9vbCBhY3Rp dmU6MTsKMTQ0NzQ6ICBib29sIGF1dG9zbGVlcF9lbmFibGVkOjE7CjE0NDc0OiB9OwoxNDQ3NDog IyA3NyAiLi9pbmNsdWRlL2xpbnV4L3BtX3dha2V1cC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkZXZpY2VfY2Fu X3dha2V1cChzdHJ1Y3QgZGV2aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRldi0+ cG93ZXIuY2FuX3dha2V1cDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkZXZpY2VfbWF5 X3dha2V1cChzdHJ1Y3QgZGV2aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRldi0+ cG93ZXIuY2FuX3dha2V1cCAmJiAhIWRldi0+cG93ZXIud2FrZXVwOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGRldmljZV9zZXRfd2FrZXVwX3BhdGgoc3RydWN0IGRldmljZSAqZGV2KQox NDQ3NDogewoxNDQ3NDogIGRldi0+cG93ZXIud2FrZXVwX3BhdGggPSB0cnVlOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd2FrZXVw X3NvdXJjZV9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSk7CjE0NDc0OiBleHRlcm4gdm9pZCB3YWtl dXBfc291cmNlX2Rlc3Ryb3koc3RydWN0IHdha2V1cF9zb3VyY2UgKndzKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIHdha2V1cF9zb3VyY2VfYWRkKHN0cnVjdCB3YWtldXBfc291cmNlICp3cyk7CjE0NDc0 OiBleHRlcm4gdm9pZCB3YWtldXBfc291cmNlX3JlbW92ZShzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAq d3MpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB3YWtldXBfc291cmNlICp3YWtldXBfc291cmNlX3Jl Z2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwKMTQ0NzQ6ICAgICAgICAgICBjb25zdCBjaGFyICpu YW1lKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHdha2V1cF9zb3VyY2VfdW5yZWdpc3RlcihzdHJ1Y3Qg d2FrZXVwX3NvdXJjZSAqd3MpOwoxNDQ3NDogZXh0ZXJuIGludCB3YWtldXBfc291cmNlc19yZWFk X2xvY2sodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCB3YWtldXBfc291cmNlc19yZWFkX3VubG9j ayhpbnQgaWR4KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd2FrZXVwX3Nv dXJjZXNfd2Fsa19zdGFydCh2b2lkKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgd2FrZXVwX3NvdXJj ZSAqd2FrZXVwX3NvdXJjZXNfd2Fsa19uZXh0KHN0cnVjdCB3YWtldXBfc291cmNlICp3cyk7CjE0 NDc0OiBleHRlcm4gaW50IGRldmljZV93YWtldXBfZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldik7 CjE0NDc0OiBleHRlcm4gaW50IGRldmljZV93YWtldXBfZGlzYWJsZShzdHJ1Y3QgZGV2aWNlICpk ZXYpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGV2aWNlX3NldF93YWtldXBfY2FwYWJsZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGJvb2wgY2FwYWJsZSk7CjE0NDc0OiBleHRlcm4gaW50IGRldmljZV9pbml0 X3dha2V1cChzdHJ1Y3QgZGV2aWNlICpkZXYsIGJvb2wgdmFsKTsKMTQ0NzQ6IGV4dGVybiBpbnQg ZGV2aWNlX3NldF93YWtldXBfZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgYm9vbCBlbmFibGUp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19wbV9zdGF5X2F3YWtlKHN0cnVjdCB3YWtldXBfc291cmNl ICp3cyk7CjE0NDc0OiBleHRlcm4gdm9pZCBwbV9zdGF5X2F3YWtlKHN0cnVjdCBkZXZpY2UgKmRl dik7CjE0NDc0OiBleHRlcm4gdm9pZCBfX3BtX3JlbGF4KHN0cnVjdCB3YWtldXBfc291cmNlICp3 cyk7CjE0NDc0OiBleHRlcm4gdm9pZCBwbV9yZWxheChzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3 NDogZXh0ZXJuIHZvaWQgcG1fd2FrZXVwX3dzX2V2ZW50KHN0cnVjdCB3YWtldXBfc291cmNlICp3 cywgdW5zaWduZWQgaW50IG1zZWMsIGJvb2wgaGFyZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBwbV93 YWtldXBfZGV2X2V2ZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG1zZWMsIGJv b2wgaGFyZCk7CjE0NDc0OiAjIDE5NSAiLi9pbmNsdWRlL2xpbnV4L3BtX3dha2V1cC5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBfX3BtX3dha2V1cF9ldmVudChzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd3MsIHVuc2ln bmVkIGludCBtc2VjKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBwbV93YWtldXBfd3NfZXZlbnQo d3MsIG1zZWMsIGZhbHNlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwbV93YWtldXBf ZXZlbnQoc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbXNlYykKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gcG1fd2FrZXVwX2Rldl9ldmVudChkZXYsIG1zZWMsIGZhbHNlKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwbV93YWtldXBfaGFyZF9ldmVudChzdHJ1Y3QgZGV2aWNl ICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHBtX3dha2V1cF9kZXZfZXZlbnQoZGV2LCAw LCB0cnVlKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjQ3ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgY29uc3QgY2hhciAqZGV2X25hbWUoY29uc3Qgc3RydWN0IGRldmlj ZSAqZGV2KQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgaWYgKGRldi0+aW5pdF9uYW1lKQoxNDQ3 NDogICByZXR1cm4gZGV2LT5pbml0X25hbWU7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4ga29iamVj dF9uYW1lKCZkZXYtPmtvYmopOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRy aWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkKMTQ0NzQ6IGludCBkZXZfc2V0X25h bWUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpuYW1lLCAuLi4pOwoxNDQ3NDogIyA2 NzAgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkZXZfdG9fbm9kZShzdHJ1 Y3QgZGV2aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgtMSk7CjE0NDc0OiB9CjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIHNldF9kZXZfbm9kZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBub2RlKQoxNDQ3 NDogewoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBpcnFfZG9tYWluICpk ZXZfZ2V0X21zaV9kb21haW4oY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KQoxNDQ3NDogewoxNDQ3 NDogCjE0NDc0OiAgcmV0dXJuIGRldi0+bXNpX2RvbWFpbjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZfc2V0X21zaV9kb21haW4oc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgaXJxX2RvbWFpbiAqZCkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3 NDogIGRldi0+bXNpX2RvbWFpbiA9IGQ7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCAqZGV2X2dldF9kcnZkYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldikKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gZGV2LT5kcml2ZXJfZGF0YTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBkZXZfc2V0X2RydmRhdGEoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKQoxNDQ3 NDogewoxNDQ3NDogIGRldi0+ZHJpdmVyX2RhdGEgPSBkYXRhOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzdHJ1Y3QgcG1fc3Vic3lzX2RhdGEgKmRldl90b19wc2Qoc3RydWN0IGRldmljZSAqZGV2 KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkZXYgPyBkZXYtPnBvd2VyLnN1YnN5c19kYXRhIDog KCh2b2lkICopMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBkZXZfZ2V0 X3VldmVudF9zdXBwcmVzcyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGRldi0+a29iai51ZXZlbnRfc3VwcHJlc3M7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgZGV2X3NldF91ZXZlbnRfc3VwcHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCBpbnQg dmFsKQoxNDQ3NDogewoxNDQ3NDogIGRldi0+a29iai51ZXZlbnRfc3VwcHJlc3MgPSB2YWw7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkZXZpY2VfaXNfcmVnaXN0ZXJlZChzdHJ1Y3QgZGV2 aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRldi0+a29iai5zdGF0ZV9pbl9zeXNm czsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZpY2VfZW5hYmxlX2FzeW5jX3N1c3Bl bmQoc3RydWN0IGRldmljZSAqZGV2KQoxNDQ3NDogewoxNDQ3NDogIGlmICghZGV2LT5wb3dlci5p c19wcmVwYXJlZCkKMTQ0NzQ6ICAgZGV2LT5wb3dlci5hc3luY19zdXNwZW5kID0gdHJ1ZTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZpY2VfZGlzYWJsZV9hc3luY19zdXNwZW5kKHN0 cnVjdCBkZXZpY2UgKmRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoIWRldi0+cG93ZXIuaXNfcHJl cGFyZWQpCjE0NDc0OiAgIGRldi0+cG93ZXIuYXN5bmNfc3VzcGVuZCA9IGZhbHNlOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGRldmljZV9hc3luY19zdXNwZW5kX2VuYWJsZWQoc3RydWN0 IGRldmljZSAqZGV2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhIWRldi0+cG93ZXIuYXN5bmNf c3VzcGVuZDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkZXZpY2VfcG1fbm90X3JlcXVp cmVkKHN0cnVjdCBkZXZpY2UgKmRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZGV2LT5wb3dl ci5ub19wbTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZpY2Vfc2V0X3BtX25vdF9y ZXF1aXJlZChzdHJ1Y3QgZGV2aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgZGV2LT5wb3dlci5u b19wbSA9IHRydWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZGV2X3BtX3N5c2NvcmVf ZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgYm9vbCB2YWwpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0 NzQ6ICBkZXYtPnBvd2VyLnN5c2NvcmUgPSB2YWw7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBkZXZfcG1fc2V0X2RyaXZlcl9mbGFncyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHUz MiBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkZXYtPnBvd2VyLmRyaXZlcl9mbGFncyA9IGZsYWdz OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRldl9wbV90ZXN0X2RyaXZlcl9mbGFncyhz dHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gISEo ZGV2LT5wb3dlci5kcml2ZXJfZmxhZ3MgJiBmbGFncyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgZGV2aWNlX2xvY2soc3RydWN0IGRldmljZSAqZGV2KQoxNDQ3NDogewoxNDQ3NDogIG11 dGV4X2xvY2soJmRldi0+bXV0ZXgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZGV2aWNl X2xvY2tfaW50ZXJydXB0aWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5tdXRleCk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBkZXZpY2VfdHJ5bG9jayhzdHJ1Y3QgZGV2aWNlICpkZXYpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIG11dGV4X3RyeWxvY2soJmRldi0+bXV0ZXgpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGRldmljZV91bmxvY2soc3RydWN0IGRldmljZSAqZGV2KQoxNDQ3 NDogewoxNDQ3NDogIG11dGV4X3VubG9jaygmZGV2LT5tdXRleCk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgZGV2aWNlX2xvY2tfYXNzZXJ0KHN0cnVjdCBkZXZpY2UgKmRldikKMTQ0NzQ6 IHsKMTQ0NzQ6ICBkbyB7ICh2b2lkKSgmZGV2LT5tdXRleCk7IH0gd2hpbGUgKDApOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlX25vZGUgKmRldl9vZl9ub2RlKHN0cnVjdCBk ZXZpY2UgKmRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoITAgfHwgIWRldikKMTQ0NzQ6ICAgcmV0 dXJuICgodm9pZCAqKTApOwoxNDQ3NDogIHJldHVybiBkZXYtPm9mX25vZGU7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgZGV2X2hhc19zeW5jX3N0YXRlKHN0cnVjdCBkZXZpY2UgKmRldikK MTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoIWRldikKMTQ0NzQ6ICAgcmV0dXJuIGZhbHNlOwoxNDQ3NDog IGlmIChkZXYtPmRyaXZlciAmJiBkZXYtPmRyaXZlci0+c3luY19zdGF0ZSkKMTQ0NzQ6ICAgcmV0 dXJuIHRydWU7CjE0NDc0OiAgaWYgKGRldi0+YnVzICYmIGRldi0+YnVzLT5zeW5jX3N0YXRlKQox NDQ3NDogICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6ICByZXR1cm4gZmFsc2U7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVf XygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGRldmljZV9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNl ICpkZXYpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IGRldmlj ZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRldmljZV9pbml0aWFsaXplKHN0cnVjdCBkZXZp Y2UgKmRldik7CjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBkZXZpY2VfYWRkKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBleHRlcm4g dm9pZCBkZXZpY2VfZGVsKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBleHRlcm4gaW50IGRl dmljZV9mb3JfZWFjaF9jaGlsZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCjE0NDc0 OiAgICAgICAgaW50ICgqZm4pKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkpOwoxNDQ3 NDogZXh0ZXJuIGludCBkZXZpY2VfZm9yX2VhY2hfY2hpbGRfcmV2ZXJzZShzdHJ1Y3QgZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCjE0NDc0OiAgICAgICAgaW50ICgqZm4pKHN0cnVjdCBkZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSkpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZXZpY2UgKmRldmljZV9m aW5kX2NoaWxkKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKMTQ0NzQ6ICAgICBpbnQg KCptYXRjaCkoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKSk7CjE0NDc0OiBleHRlcm4g c3RydWN0IGRldmljZSAqZGV2aWNlX2ZpbmRfY2hpbGRfYnlfbmFtZShzdHJ1Y3QgZGV2aWNlICpw YXJlbnQsCjE0NDc0OiAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKMTQ0NzQ6IGV4dGVybiBpbnQg ZGV2aWNlX3JlbmFtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5ld19uYW1lKTsK MTQ0NzQ6IGV4dGVybiBpbnQgZGV2aWNlX21vdmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qg ZGV2aWNlICpuZXdfcGFyZW50LAoxNDQ3NDogICAgICAgICAgZW51bSBkcG1fb3JkZXIgZHBtX29y ZGVyKTsKMTQ0NzQ6IGV4dGVybiBjb25zdCBjaGFyICpkZXZpY2VfZ2V0X2Rldm5vZGUoc3RydWN0 IGRldmljZSAqZGV2LAoxNDQ3NDogICAgICAgICAgIHVtb2RlX3QgKm1vZGUsIGt1aWRfdCAqdWlk LCBrZ2lkX3QgKmdpZCwKMTQ0NzQ6ICAgICAgICAgICBjb25zdCBjaGFyICoqdG1wKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBkZXZpY2Vfc3VwcG9ydHNfb2ZmbGluZShzdHJ1Y3QgZGV2aWNlICpkZXYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRldi0+YnVzICYmIGRldi0+YnVzLT5vZmZsaW5lICYm IGRldi0+YnVzLT5vbmxpbmU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGxv Y2tfZGV2aWNlX2hvdHBsdWcodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCB1bmxvY2tfZGV2aWNl X2hvdHBsdWcodm9pZCk7CjE0NDc0OiBleHRlcm4gaW50IGxvY2tfZGV2aWNlX2hvdHBsdWdfc3lz ZnModm9pZCk7CjE0NDc0OiBleHRlcm4gaW50IGRldmljZV9vZmZsaW5lKHN0cnVjdCBkZXZpY2Ug KmRldik7CjE0NDc0OiBleHRlcm4gaW50IGRldmljZV9vbmxpbmUoc3RydWN0IGRldmljZSAqZGV2 KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNldF9wcmltYXJ5X2Z3bm9kZShzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0 X3NlY29uZGFyeV9md25vZGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZndub2RlX2hhbmRs ZSAqZndub2RlKTsKMTQ0NzQ6IHZvaWQgZGV2aWNlX3NldF9vZl9ub2RlX2Zyb21fZGV2KHN0cnVj dCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZSAqZGV2Mik7CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBkZXZfbnVtX3ZmKHN0cnVjdCBkZXZpY2UgKmRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAo ZGV2LT5idXMgJiYgZGV2LT5idXMtPm51bV92ZikKMTQ0NzQ6ICAgcmV0dXJuIGRldi0+YnVzLT5u dW1fdmYoZGV2KTsKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZXZpY2UgKl9fcm9vdF9kZXZpY2Vf cmVnaXN0ZXIoY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgICAgICBzdHJ1Y3QgbW9kdWxl ICpvd25lcik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHZvaWQgcm9vdF9kZXZpY2VfdW5yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpyb290KTsK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCAqZGV2X2dldF9wbGF0ZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNl ICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRldi0+cGxhdGZvcm1fZGF0YTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4g aW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkZXZpY2VfYmluZF9k cml2ZXIoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRldmljZV9yZWxl YXNlX2RyaXZlcihzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJp YnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZGV2aWNlX2F0dGFjaChzdHJ1Y3QgZGV2 aWNlICpkZXYpOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2Vk X3Jlc3VsdF9fKSkgZHJpdmVyX2F0dGFjaChzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KTsKMTQ0 NzQ6IGV4dGVybiB2b2lkIGRldmljZV9pbml0aWFsX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldik7 CjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p KSBkZXZpY2VfcmVwcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogCjE0NDc0OiBleHRl cm4gYm9vbCBkZXZpY2VfaXNfYm91bmQoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0 X18ocHJpbnRmLCA1LCAwKSkpCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlICpkZXZpY2VfY3JlYXRlX3Zh cmdzKHN0cnVjdCBjbGFzcyAqY2xzLCBzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsCjE0NDc0OiAgICAg ICAgZGV2X3QgZGV2dCwgdm9pZCAqZHJ2ZGF0YSwKMTQ0NzQ6ICAgICAgICBjb25zdCBjaGFyICpm bXQsIHZhX2xpc3QgdmFyZ3MpOwoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0 X18ocHJpbnRmLCA1LCA2KSkpCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlICpkZXZpY2VfY3JlYXRlKHN0 cnVjdCBjbGFzcyAqY2xzLCBzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsCjE0NDc0OiAgICAgICAgIGRl dl90IGRldnQsIHZvaWQgKmRydmRhdGEsCjE0NDc0OiAgICAgICAgIGNvbnN0IGNoYXIgKmZtdCwg Li4uKTsKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgNiwg NykpKQoxNDQ3NDogc3RydWN0IGRldmljZSAqZGV2aWNlX2NyZWF0ZV93aXRoX2dyb3VwcyhzdHJ1 Y3QgY2xhc3MgKmNscywKMTQ0NzQ6ICAgICAgICAgc3RydWN0IGRldmljZSAqcGFyZW50LCBkZXZf dCBkZXZ0LCB2b2lkICpkcnZkYXRhLAoxNDQ3NDogICAgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmli dXRlX2dyb3VwICoqZ3JvdXBzLAoxNDQ3NDogICAgICAgICBjb25zdCBjaGFyICpmbXQsIC4uLik7 CjE0NDc0OiBleHRlcm4gdm9pZCBkZXZpY2VfZGVzdHJveShzdHJ1Y3QgY2xhc3MgKmNscywgZGV2 X3QgZGV2dCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGRldmljZV9hZGRfZ3JvdXBzKHN0cnVjdCBkZXZpY2UgKmRldiwK MTQ0NzQ6ICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CjE0NDc0 OiBleHRlcm4gdm9pZCBkZXZpY2VfcmVtb3ZlX2dyb3VwcyhzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0 NDc0OiAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipncm91cHMpOwoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGRldmlj ZV9hZGRfZ3JvdXAoc3RydWN0IGRldmljZSAqZGV2LAoxNDQ3NDogICAgICBjb25zdCBzdHJ1Y3Qg YXR0cmlidXRlX2dyb3VwICpncnApCjE0NDc0OiB7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGF0dHJp YnV0ZV9ncm91cCAqZ3JvdXBzW10gPSB7IGdycCwgKCh2b2lkICopMCkgfTsKMTQ0NzQ6IAoxNDQ3 NDogIHJldHVybiBkZXZpY2VfYWRkX2dyb3VwcyhkZXYsIGdyb3Vwcyk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgZGV2aWNlX3JlbW92ZV9ncm91cChzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0 NDc0OiAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmdycCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpncm91cHNbXSA9IHsgZ3Jw LCAoKHZvaWQgKikwKSB9OwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGRldmljZV9yZW1vdmVfZ3Jv dXBzKGRldiwgZ3JvdXBzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZGV2bV9kZXZpY2VfYWRkX2dyb3Vw cyhzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVf Z3JvdXAgKipncm91cHMpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGV2bV9kZXZpY2VfcmVtb3ZlX2dy b3VwcyhzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGF0 dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18o KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkZXZtX2RldmljZV9hZGRfZ3JvdXAoc3RydWN0IGRl dmljZSAqZGV2LAoxNDQ3NDogICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpncnAp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGV2bV9kZXZpY2VfcmVtb3ZlX2dyb3VwKHN0cnVjdCBkZXZp Y2UgKmRldiwKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmdy cCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBpbnQgKCpwbGF0Zm9ybV9ub3RpZnkpKHN0cnVjdCBkZXZpY2UgKmRl dik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgKCpwbGF0Zm9ybV9ub3RpZnlfcmVtb3ZlKShz dHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZXZpY2UgKmdldF9kZXZpY2Uoc3RydWN0 IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHB1dF9kZXZpY2Uoc3RydWN0IGRldmlj ZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiBib29sIGtpbGxfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRl dik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBkZXZ0bXBmc19tb3VudCh2b2lk KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4g dm9pZCBkZXZpY2Vfc2h1dGRvd24odm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGNvbnN0IGNoYXIgKmRldl9kcml2ZXJfc3RyaW5nKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldik7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRldmljZV9saW5rICpkZXZpY2VfbGlua19h ZGQoc3RydWN0IGRldmljZSAqY29uc3VtZXIsCjE0NDc0OiAgICAgICAgIHN0cnVjdCBkZXZpY2Ug KnN1cHBsaWVyLCB1MzIgZmxhZ3MpOwoxNDQ3NDogdm9pZCBkZXZpY2VfbGlua19kZWwoc3RydWN0 IGRldmljZV9saW5rICpsaW5rKTsKMTQ0NzQ6IHZvaWQgZGV2aWNlX2xpbmtfcmVtb3ZlKHZvaWQg KmNvbnN1bWVyLCBzdHJ1Y3QgZGV2aWNlICpzdXBwbGllcik7CjE0NDc0OiB2b2lkIGRldmljZV9s aW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3BhdXNlKHZvaWQpOwoxNDQ3NDogdm9pZCBkZXZpY2Vf bGlua3Nfc3VwcGxpZXJfc3luY19zdGF0ZV9yZXN1bWUodm9pZCk7CjE0NDc0OiAjIDMzICIuL2lu Y2x1ZGUvZHJtL2RybV9wcmludC5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9kZWJ1 Z2ZzLmgiIDEKMTQ0NzQ6ICMgMjEgIi4vaW5jbHVkZS9saW51eC9kZWJ1Z2ZzLmgiCjE0NDc0OiBz dHJ1Y3QgZGV2aWNlOwoxNDQ3NDogc3RydWN0IGZpbGVfb3BlcmF0aW9uczsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGRlYnVnZnNfYmxvYl93cmFwcGVyIHsKMTQ0NzQ6ICB2b2lkICpkYXRhOwoxNDQ3 NDogIHVuc2lnbmVkIGxvbmcgc2l6ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBk ZWJ1Z2ZzX3JlZzMyIHsKMTQ0NzQ6ICBjaGFyICpuYW1lOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg b2Zmc2V0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRlYnVnZnNfcmVnc2V0MzIg ewoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkZWJ1Z2ZzX3JlZzMyICpyZWdzOwoxNDQ3NDogIGludCBu cmVnczsKMTQ0NzQ6ICB2b2lkICpiYXNlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHN0cnVjdCBkZW50cnkgKmFyY2hfZGVidWdmc19kaXI7CjE0NDc0OiAjIDU3ICIuL2luY2x1ZGUv bGludXgvZGVidWdmcy5oIgoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgdmZzbW91bnQgKigqZGVidWdm c19hdXRvbW91bnRfdCkoc3RydWN0IGRlbnRyeSAqLCB2b2lkICopOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRlbnRyeSAqZGVidWdmc19sb29rdXAoY29uc3QgY2hhciAq bmFtZSwgc3RydWN0IGRlbnRyeSAqcGFyZW50KTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRlbnRy eSAqZGVidWdmc19jcmVhdGVfZmlsZShjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCjE0 NDc0OiAgICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LCB2b2lkICpkYXRhLAoxNDQ3NDogICAg ICAgIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMpOwoxNDQ3NDogc3RydWN0IGRl bnRyeSAqZGVidWdmc19jcmVhdGVfZmlsZV91bnNhZmUoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVf dCBtb2RlLAoxNDQ3NDogICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgdm9pZCAqZGF0YSwK MTQ0NzQ6ICAgICAgICBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGRlbnRyeSAqZGVidWdmc19jcmVhdGVfZmlsZV9zaXplKGNvbnN0IGNo YXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50 LCB2b2lkICpkYXRhLAoxNDQ3NDogICAgICBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpm b3BzLAoxNDQ3NDogICAgICBsb2ZmX3QgZmlsZV9zaXplKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGRlbnRyeSAqZGVidWdmc19jcmVhdGVfZGlyKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBkZW50 cnkgKnBhcmVudCk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRl X3N5bWxpbmsoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3NDog ICAgICAgICAgIGNvbnN0IGNoYXIgKmRlc3QpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGVudHJ5 ICpkZWJ1Z2ZzX2NyZWF0ZV9hdXRvbW91bnQoY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAg c3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3NDogICAgICBkZWJ1Z2ZzX2F1dG9tb3VudF90IGYs CjE0NDc0OiAgICAgIHZvaWQgKmRhdGEpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGRlYnVnZnNfcmVt b3ZlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogY29uc3Qg c3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZGVidWdmc19yZWFsX2ZvcHMoY29uc3Qgc3RydWN0IGZp bGUgKmZpbHApOwoxNDQ3NDogCjE0NDc0OiBpbnQgZGVidWdmc19maWxlX2dldChzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkpOwoxNDQ3NDogdm9pZCBkZWJ1Z2ZzX2ZpbGVfcHV0KHN0cnVjdCBkZW50cnkg KmRlbnRyeSk7CjE0NDc0OiAKMTQ0NzQ6IHNzaXplX3QgZGVidWdmc19hdHRyX3JlYWQoc3RydWN0 IGZpbGUgKmZpbGUsIGNoYXIgKmJ1ZiwKMTQ0NzQ6ICAgIHNpemVfdCBsZW4sIGxvZmZfdCAqcHBv cyk7CjE0NDc0OiBzc2l6ZV90IGRlYnVnZnNfYXR0cl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwg Y29uc3QgY2hhciAqYnVmLAoxNDQ3NDogICAgc2l6ZV90IGxlbiwgbG9mZl90ICpwcG9zKTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGRlbnRyeSAqZGVidWdmc19yZW5hbWUoc3RydWN0IGRlbnRyeSAq b2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwKMTQ0NzQ6ICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZGVudHJ5ICpuZXdfZGlyLCBjb25zdCBjaGFyICpuZXdfbmFtZSk7CjE0NDc0OiAK MTQ0NzQ6IHZvaWQgZGVidWdmc19jcmVhdGVfdTgoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBt b2RlLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCjE0NDc0OiAgICAgICAgICB1OCAqdmFsdWUpOwox NDQ3NDogdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV91MTYoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBt b2RlLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCjE0NDc0OiAgICB1MTYgKnZhbHVlKTsKMTQ0NzQ6 IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX3UzMihjb25zdCBjaGFyICpuYW1lLCB1bW9k ZV90IG1vZGUsCjE0NDc0OiAgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHUzMiAqdmFsdWUp OwoxNDQ3NDogdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV91NjQoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVf dCBtb2RlLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCjE0NDc0OiAgICB1NjQgKnZhbHVlKTsKMTQ0 NzQ6IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX3Vsb25nKGNvbnN0IGNoYXIgKm5hbWUs IHVtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LCB1bnNp Z25lZCBsb25nICp2YWx1ZSk7CjE0NDc0OiB2b2lkIGRlYnVnZnNfY3JlYXRlX3g4KGNvbnN0IGNo YXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwgc3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3NDogICAg ICAgICAgdTggKnZhbHVlKTsKMTQ0NzQ6IHZvaWQgZGVidWdmc19jcmVhdGVfeDE2KGNvbnN0IGNo YXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwgc3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3NDogICAg dTE2ICp2YWx1ZSk7CjE0NDc0OiB2b2lkIGRlYnVnZnNfY3JlYXRlX3gzMihjb25zdCBjaGFyICpu YW1lLCB1bW9kZV90IG1vZGUsIHN0cnVjdCBkZW50cnkgKnBhcmVudCwKMTQ0NzQ6ICAgIHUzMiAq dmFsdWUpOwoxNDQ3NDogdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV94NjQoY29uc3QgY2hhciAqbmFtZSwg dW1vZGVfdCBtb2RlLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCjE0NDc0OiAgICB1NjQgKnZhbHVl KTsKMTQ0NzQ6IHZvaWQgZGVidWdmc19jcmVhdGVfc2l6ZV90KGNvbnN0IGNoYXIgKm5hbWUsIHVt b2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgc2l6ZV90ICp2 YWx1ZSk7CjE0NDc0OiB2b2lkIGRlYnVnZnNfY3JlYXRlX2F0b21pY190KGNvbnN0IGNoYXIgKm5h bWUsIHVtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LCBh dG9taWNfdCAqdmFsdWUpOwoxNDQ3NDogc3RydWN0IGRlbnRyeSAqZGVidWdmc19jcmVhdGVfYm9v bChjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCjE0NDc0OiAgICAgICBzdHJ1Y3QgZGVu dHJ5ICpwYXJlbnQsIGJvb2wgKnZhbHVlKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRlbnRyeSAq ZGVidWdmc19jcmVhdGVfYmxvYihjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCjE0NDc0 OiAgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCjE0NDc0OiAgICAgICBzdHJ1Y3QgZGVidWdm c19ibG9iX3dyYXBwZXIgKmJsb2IpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGRlYnVnZnNfY3JlYXRl X3JlZ3NldDMyKGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICAgICAg c3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgZGVidWdmc19yZWdz ZXQzMiAqcmVnc2V0KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkZWJ1Z2ZzX3ByaW50X3JlZ3MzMihz dHJ1Y3Qgc2VxX2ZpbGUgKnMsIGNvbnN0IHN0cnVjdCBkZWJ1Z2ZzX3JlZzMyICpyZWdzLAoxNDQ3 NDogICAgICBpbnQgbnJlZ3MsIHZvaWQgKmJhc2UsIGNoYXIgKnByZWZpeCk7CjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgZGVidWdmc19jcmVhdGVfdTMyX2FycmF5KGNvbnN0IGNoYXIgKm5hbWUsIHVtb2Rl X3QgbW9kZSwKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgdTMyICphcnJh eSwgdTMyIGVsZW1lbnRzKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRlbnRyeSAqZGVidWdmc19j cmVhdGVfZGV2bV9zZXFmaWxlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqbmFtZSwK MTQ0NzQ6ICAgICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3NDogICAgICAgICBpbnQg KCpyZWFkX2ZuKShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsCjE0NDc0OiAgICAgICAgICB2b2lkICpkYXRh KSk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGVidWdmc19pbml0aWFsaXplZCh2b2lkKTsKMTQ0NzQ6 IAoxNDQ3NDogc3NpemVfdCBkZWJ1Z2ZzX3JlYWRfZmlsZV9ib29sKHN0cnVjdCBmaWxlICpmaWxl LCBjaGFyICp1c2VyX2J1ZiwKMTQ0NzQ6ICAgICAgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAq cHBvcyk7CjE0NDc0OiAKMTQ0NzQ6IHNzaXplX3QgZGVidWdmc193cml0ZV9maWxlX2Jvb2woc3Ry dWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnVzZXJfYnVmLAoxNDQ3NDogICAgIHNpemVfdCBj b3VudCwgbG9mZl90ICpwcG9zKTsKMTQ0NzQ6ICMgMzY1ICIuL2luY2x1ZGUvbGludXgvZGVidWdm cy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV94dWwoY29uc3QgY2hhciAqbmFtZSwgdW1v ZGVfdCBtb2RlLAoxNDQ3NDogICAgICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwKMTQ0NzQ6 ICAgICAgICAgICB1bnNpZ25lZCBsb25nICp2YWx1ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoc2l6 ZW9mKCp2YWx1ZSkgPT0gc2l6ZW9mKHUzMikpCjE0NDc0OiAgIGRlYnVnZnNfY3JlYXRlX3gzMihu YW1lLCBtb2RlLCBwYXJlbnQsICh1MzIgKil2YWx1ZSk7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICBk ZWJ1Z2ZzX2NyZWF0ZV94NjQobmFtZSwgbW9kZSwgcGFyZW50LCAodTY0ICopdmFsdWUpOwoxNDQ3 NDogfQoxNDQ3NDogIyAzNCAiLi9pbmNsdWRlL2RybS9kcm1fcHJpbnQuaCIgMgoxNDQ3NDogCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIgMQoxNDQ3NDogIyA0MiAiLi9pbmNs dWRlL3VhcGkvZHJtL2RybS5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJh dGVkL3VhcGkvYXNtL2lvY3RsLmgiIDEKMTQ0NzQ6ICMgNDMgIi4vaW5jbHVkZS91YXBpL2RybS9k cm0uaCIgMgoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBpbnQgZHJtX2hhbmRsZV90OwoxNDQ3NDog IyA4NCAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBp bnQgZHJtX2NvbnRleHRfdDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgaW50IGRybV9kcmF3YWJs ZV90OwoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBpbnQgZHJtX21hZ2ljX3Q7CjE0NDc0OiAjIDk3 ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCjE0NDc0OiBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCB7 CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgeDE7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgeTE7CjE0 NDc0OiAgdW5zaWduZWQgc2hvcnQgeDI7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgeTI7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2Ry YXdhYmxlX2luZm8gewoxNDQ3NDogIHVuc2lnbmVkIGludCBudW1fcmVjdHM7CjE0NDc0OiAgc3Ry dWN0IGRybV9jbGlwX3JlY3QgKnJlY3RzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV90ZXhfcmVnaW9uIHsKMTQ0NzQ6ICB1bnNpZ25l ZCBjaGFyIG5leHQ7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBwcmV2OwoxNDQ3NDogIHVuc2lnbmVk IGNoYXIgaW5fdXNlOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcGFkZGluZzsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgYWdlOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTMwICIuL2luY2x1ZGUvdWFwaS9kcm0v ZHJtLmgiCjE0NDc0OiBzdHJ1Y3QgZHJtX2h3X2xvY2sgewoxNDQ3NDogIF9fdm9sYXRpbGVfXyB1 bnNpZ25lZCBpbnQgbG9jazsKMTQ0NzQ6ICBjaGFyIHBhZGRpbmdbNjBdOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBkcm1fdmVyc2lvbiB7CjE0NDc0OiAgaW50IHZlcnNpb25fbWFqb3I7CjE0NDc0OiAgaW50IHZl cnNpb25fbWlub3I7CjE0NDc0OiAgaW50IHZlcnNpb25fcGF0Y2hsZXZlbDsKMTQ0NzQ6ICBfX2tl cm5lbF9zaXplX3QgbmFtZV9sZW47CjE0NDc0OiAgY2hhciAqbmFtZTsKMTQ0NzQ6ICBfX2tlcm5l bF9zaXplX3QgZGF0ZV9sZW47CjE0NDc0OiAgY2hhciAqZGF0ZTsKMTQ0NzQ6ICBfX2tlcm5lbF9z aXplX3QgZGVzY19sZW47CjE0NDc0OiAgY2hhciAqZGVzYzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX3Vu aXF1ZSB7CjE0NDc0OiAgX19rZXJuZWxfc2l6ZV90IHVuaXF1ZV9sZW47CjE0NDc0OiAgY2hhciAq dW5pcXVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9saXN0IHsKMTQ0NzQ6 ICBpbnQgY291bnQ7CjE0NDc0OiAgc3RydWN0IGRybV92ZXJzaW9uICp2ZXJzaW9uOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9ibG9jayB7CjE0NDc0OiAgaW50IHVudXNlZDsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgZHJtX2NvbnRyb2wgewoxNDQ3NDogIGVudW0gewoxNDQ3NDogICBEUk1f QUREX0NPTU1BTkQsCjE0NDc0OiAgIERSTV9STV9DT01NQU5ELAoxNDQ3NDogICBEUk1fSU5TVF9I QU5ETEVSLAoxNDQ3NDogICBEUk1fVU5JTlNUX0hBTkRMRVIKMTQ0NzQ6ICB9IGZ1bmM7CjE0NDc0 OiAgaW50IGlycTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGVudW0gZHJtX21hcF90eXBlIHsKMTQ0NzQ6ICBfRFJNX0ZSQU1FX0JVRkZFUiA9IDAsCjE0 NDc0OiAgX0RSTV9SRUdJU1RFUlMgPSAxLAoxNDQ3NDogIF9EUk1fU0hNID0gMiwKMTQ0NzQ6ICBf RFJNX0FHUCA9IDMsCjE0NDc0OiAgX0RSTV9TQ0FUVEVSX0dBVEhFUiA9IDQsCjE0NDc0OiAgX0RS TV9DT05TSVNURU5UID0gNQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZW51bSBkcm1fbWFwX2ZsYWdzIHsKMTQ0NzQ6ICBfRFJNX1JFU1RSSUNURUQgPSAw eDAxLAoxNDQ3NDogIF9EUk1fUkVBRF9PTkxZID0gMHgwMiwKMTQ0NzQ6ICBfRFJNX0xPQ0tFRCA9 IDB4MDQsCjE0NDc0OiAgX0RSTV9LRVJORUwgPSAweDA4LAoxNDQ3NDogIF9EUk1fV1JJVEVfQ09N QklOSU5HID0gMHgxMCwKMTQ0NzQ6ICBfRFJNX0NPTlRBSU5TX0xPQ0sgPSAweDIwLAoxNDQ3NDog IF9EUk1fUkVNT1ZBQkxFID0gMHg0MCwKMTQ0NzQ6ICBfRFJNX0RSSVZFUiA9IDB4ODAKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fY3R4X3ByaXZfbWFwIHsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgY3R4X2lkOwoxNDQ3NDogIHZvaWQgKmhhbmRsZTsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBkcm1fbWFwIHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIG9mZnNldDsKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIHNpemU7CjE0NDc0OiAgZW51bSBkcm1fbWFwX3R5cGUgdHlwZTsKMTQ0NzQ6ICBl bnVtIGRybV9tYXBfZmxhZ3MgZmxhZ3M7CjE0NDc0OiAgdm9pZCAqaGFuZGxlOwoxNDQ3NDogCjE0 NDc0OiAgaW50IG10cnI7CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fY2xpZW50IHsKMTQ0NzQ6ICBpbnQgaWR4OwoxNDQ3 NDogIGludCBhdXRoOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgcGlkOwoxNDQ3NDogIHVuc2lnbmVk IGxvbmcgdWlkOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbWFnaWM7CjE0NDc0OiAgdW5zaWduZWQg bG9uZyBpb2NzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkcm1fc3RhdF90eXBlIHsK MTQ0NzQ6ICBfRFJNX1NUQVRfTE9DSywKMTQ0NzQ6ICBfRFJNX1NUQVRfT1BFTlMsCjE0NDc0OiAg X0RSTV9TVEFUX0NMT1NFUywKMTQ0NzQ6ICBfRFJNX1NUQVRfSU9DVExTLAoxNDQ3NDogIF9EUk1f U1RBVF9MT0NLUywKMTQ0NzQ6ICBfRFJNX1NUQVRfVU5MT0NLUywKMTQ0NzQ6ICBfRFJNX1NUQVRf VkFMVUUsCjE0NDc0OiAgX0RSTV9TVEFUX0JZVEUsCjE0NDc0OiAgX0RSTV9TVEFUX0NPVU5ULAox NDQ3NDogCjE0NDc0OiAgX0RSTV9TVEFUX0lSUSwKMTQ0NzQ6ICBfRFJNX1NUQVRfUFJJTUFSWSwK MTQ0NzQ6ICBfRFJNX1NUQVRfU0VDT05EQVJZLAoxNDQ3NDogIF9EUk1fU1RBVF9ETUEsCjE0NDc0 OiAgX0RSTV9TVEFUX1NQRUNJQUwsCjE0NDc0OiAgX0RSTV9TVEFUX01JU1NFRAoxNDQ3NDogCjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJt X3N0YXRzIHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGNvdW50OwoxNDQ3NDogIHN0cnVjdCB7CjE0 NDc0OiAgIHVuc2lnbmVkIGxvbmcgdmFsdWU7CjE0NDc0OiAgIGVudW0gZHJtX3N0YXRfdHlwZSB0 eXBlOwoxNDQ3NDogIH0gZGF0YVsxNV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRybV9sb2NrX2ZsYWdzIHsKMTQ0NzQ6ICBfRFJNX0xPQ0tf UkVBRFkgPSAweDAxLAoxNDQ3NDogIF9EUk1fTE9DS19RVUlFU0NFTlQgPSAweDAyLAoxNDQ3NDog IF9EUk1fTE9DS19GTFVTSCA9IDB4MDQsCjE0NDc0OiAgX0RSTV9MT0NLX0ZMVVNIX0FMTCA9IDB4 MDgsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX0RSTV9IQUxUX0FMTF9RVUVVRVMg PSAweDEwLAoxNDQ3NDogIF9EUk1fSEFMVF9DVVJfUVVFVUVTID0gMHgyMAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBkcm1fbG9jayB7CjE0NDc0OiAgaW50IGNvbnRleHQ7CjE0NDc0OiAgZW51bSBkcm1fbG9ja19m bGFncyBmbGFnczsKMTQ0NzQ6IH07CjE0NDc0OiAjIDMxMCAiLi9pbmNsdWRlL3VhcGkvZHJtL2Ry bS5oIgoxNDQ3NDogZW51bSBkcm1fZG1hX2ZsYWdzIHsKMTQ0NzQ6IAoxNDQ3NDogIF9EUk1fRE1B X0JMT0NLID0gMHgwMSwKMTQ0NzQ6ICMgMzIyICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCjE0 NDc0OiAgX0RSTV9ETUFfV0hJTEVfTE9DS0VEID0gMHgwMiwKMTQ0NzQ6ICBfRFJNX0RNQV9QUklP UklUWSA9IDB4MDQsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9EUk1fRE1BX1dBSVQgPSAweDEw LAoxNDQ3NDogIF9EUk1fRE1BX1NNQUxMRVJfT0sgPSAweDIwLAoxNDQ3NDogIF9EUk1fRE1BX0xB UkdFUl9PSyA9IDB4NDAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2J1Zl9kZXNjIHsKMTQ0NzQ6ICBpbnQg Y291bnQ7CjE0NDc0OiAgaW50IHNpemU7CjE0NDc0OiAgaW50IGxvd19tYXJrOwoxNDQ3NDogIGlu dCBoaWdoX21hcms7CjE0NDc0OiAgZW51bSB7CjE0NDc0OiAgIF9EUk1fUEFHRV9BTElHTiA9IDB4 MDEsCjE0NDc0OiAgIF9EUk1fQUdQX0JVRkZFUiA9IDB4MDIsCjE0NDc0OiAgIF9EUk1fU0dfQlVG RkVSID0gMHgwNCwKMTQ0NzQ6ICAgX0RSTV9GQl9CVUZGRVIgPSAweDA4LAoxNDQ3NDogICBfRFJN X1BDSV9CVUZGRVJfUk8gPSAweDEwCjE0NDc0OiAgfSBmbGFnczsKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIGFncF9zdGFydDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fYnVmX2luZm8gewoxNDQ3 NDogIGludCBjb3VudDsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX2J1Zl9kZXNjICpsaXN0OwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9idWZf ZnJlZSB7CjE0NDc0OiAgaW50IGNvdW50OwoxNDQ3NDogIGludCAqbGlzdDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgZHJtX2J1Zl9wdWIgewoxNDQ3NDogIGludCBpZHg7CjE0NDc0OiAgaW50IHRvdGFsOwoxNDQ3 NDogIGludCB1c2VkOwoxNDQ3NDogIHZvaWQgKmFkZHJlc3M7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2J1Zl9tYXAgewoxNDQ3NDog IGludCBjb3VudDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICp2aXJ0dWFs OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRybV9idWZfcHViICpsaXN0OwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgNDAyICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCjE0NDc0OiBzdHJ1Y3QgZHJtX2Rt YSB7CjE0NDc0OiAgaW50IGNvbnRleHQ7CjE0NDc0OiAgaW50IHNlbmRfY291bnQ7CjE0NDc0OiAg aW50ICpzZW5kX2luZGljZXM7CjE0NDc0OiAgaW50ICpzZW5kX3NpemVzOwoxNDQ3NDogIGVudW0g ZHJtX2RtYV9mbGFncyBmbGFnczsKMTQ0NzQ6ICBpbnQgcmVxdWVzdF9jb3VudDsKMTQ0NzQ6ICBp bnQgcmVxdWVzdF9zaXplOwoxNDQ3NDogIGludCAqcmVxdWVzdF9pbmRpY2VzOwoxNDQ3NDogIGlu dCAqcmVxdWVzdF9zaXplczsKMTQ0NzQ6ICBpbnQgZ3JhbnRlZF9jb3VudDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gZHJtX2N0eF9mbGFncyB7CjE0NDc0OiAgX0RSTV9DT05URVhUX1BS RVNFUlZFRCA9IDB4MDEsCjE0NDc0OiAgX0RSTV9DT05URVhUXzJET05MWSA9IDB4MDIKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZHJtX2N0eCB7CjE0NDc0OiAgZHJtX2NvbnRleHRfdCBoYW5kbGU7CjE0NDc0OiAg ZW51bSBkcm1fY3R4X2ZsYWdzIGZsYWdzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9jdHhfcmVzIHsKMTQ0NzQ6ICBpbnQgY291bnQ7 CjE0NDc0OiAgc3RydWN0IGRybV9jdHggKmNvbnRleHRzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9kcmF3IHsKMTQ0NzQ6ICBkcm1f ZHJhd2FibGVfdCBoYW5kbGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiB0eXBlZGVmIGVudW0gewoxNDQ3NDogIERSTV9EUkFXQUJMRV9DTElQUkVDVFMK MTQ0NzQ6IH0gZHJtX2RyYXdhYmxlX2luZm9fdHlwZV90OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg ZHJtX3VwZGF0ZV9kcmF3IHsKMTQ0NzQ6ICBkcm1fZHJhd2FibGVfdCBoYW5kbGU7CjE0NDc0OiAg dW5zaWduZWQgaW50IHR5cGU7CjE0NDc0OiAgdW5zaWduZWQgaW50IG51bTsKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIGxvbmcgZGF0YTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fYXV0aCB7CjE0NDc0OiAgZHJtX21hZ2ljX3QgbWFnaWM7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGRybV9pcnFfYnVzaWQgewoxNDQ3NDogIGludCBpcnE7CjE0NDc0OiAg aW50IGJ1c251bTsKMTQ0NzQ6ICBpbnQgZGV2bnVtOwoxNDQ3NDogIGludCBmdW5jbnVtOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkcm1fdmJsYW5rX3NlcV90eXBlIHsKMTQ0NzQ6ICBf RFJNX1ZCTEFOS19BQlNPTFVURSA9IDB4MCwKMTQ0NzQ6ICBfRFJNX1ZCTEFOS19SRUxBVElWRSA9 IDB4MSwKMTQ0NzQ6IAoxNDQ3NDogIF9EUk1fVkJMQU5LX0hJR0hfQ1JUQ19NQVNLID0gMHgwMDAw MDAzZSwKMTQ0NzQ6ICBfRFJNX1ZCTEFOS19FVkVOVCA9IDB4NDAwMDAwMCwKMTQ0NzQ6ICBfRFJN X1ZCTEFOS19GTElQID0gMHg4MDAwMDAwLAoxNDQ3NDogIF9EUk1fVkJMQU5LX05FWFRPTk1JU1Mg PSAweDEwMDAwMDAwLAoxNDQ3NDogIF9EUk1fVkJMQU5LX1NFQ09OREFSWSA9IDB4MjAwMDAwMDAs CjE0NDc0OiAgX0RSTV9WQkxBTktfU0lHTkFMID0gMHg0MDAwMDAwMAoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBk cm1fd2FpdF92YmxhbmtfcmVxdWVzdCB7CjE0NDc0OiAgZW51bSBkcm1fdmJsYW5rX3NlcV90eXBl IHR5cGU7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNlcXVlbmNlOwoxNDQ3NDogIHVuc2lnbmVkIGxv bmcgc2lnbmFsOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV93YWl0X3ZibGFu a19yZXBseSB7CjE0NDc0OiAgZW51bSBkcm1fdmJsYW5rX3NlcV90eXBlIHR5cGU7CjE0NDc0OiAg dW5zaWduZWQgaW50IHNlcXVlbmNlOwoxNDQ3NDogIGxvbmcgdHZhbF9zZWM7CjE0NDc0OiAgbG9u ZyB0dmFsX3VzZWM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZHJtX3dhaXRfdmJsYW5rIHsKMTQ0NzQ6ICBzdHJ1 Y3QgZHJtX3dhaXRfdmJsYW5rX3JlcXVlc3QgcmVxdWVzdDsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX3dh aXRfdmJsYW5rX3JlcGx5IHJlcGx5OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTI2ICIuL2luY2x1ZGUv dWFwaS9kcm0vZHJtLmgiCjE0NDc0OiBzdHJ1Y3QgZHJtX21vZGVzZXRfY3RsIHsKMTQ0NzQ6ICBf X3UzMiBjcnRjOwoxNDQ3NDogIF9fdTMyIGNtZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2FncF9tb2Rl IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIG1vZGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9hZ3BfYnVm ZmVyIHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNpemU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBo YW5kbGU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB0eXBlOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg cGh5c2ljYWw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9hZ3BfYmluZGluZyB7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyBoYW5kbGU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7CjE0NDc0OiB9Owox NDQ3NDogIyA1NjkgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIKMTQ0NzQ6IHN0cnVjdCBkcm1f YWdwX2luZm8gewoxNDQ3NDogIGludCBhZ3BfdmVyc2lvbl9tYWpvcjsKMTQ0NzQ6ICBpbnQgYWdw X3ZlcnNpb25fbWlub3I7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtb2RlOwoxNDQ3NDogIHVuc2ln bmVkIGxvbmcgYXBlcnR1cmVfYmFzZTsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGFwZXJ0dXJlX3Np emU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtZW1vcnlfYWxsb3dlZDsKMTQ0NzQ6ICB1bnNpZ25l ZCBsb25nIG1lbW9yeV91c2VkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBzaG9y dCBpZF92ZW5kb3I7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgaWRfZGV2aWNlOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9zY2F0dGVy X2dhdGhlciB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBzaXplOwoxNDQ3NDogIHVuc2lnbmVkIGxv bmcgaGFuZGxlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGRybV9zZXRfdmVyc2lvbiB7CjE0NDc0OiAgaW50IGRybV9kaV9tYWpvcjsKMTQ0 NzQ6ICBpbnQgZHJtX2RpX21pbm9yOwoxNDQ3NDogIGludCBkcm1fZGRfbWFqb3I7CjE0NDc0OiAg aW50IGRybV9kZF9taW5vcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGRybV9nZW1fY2xvc2UgewoxNDQ3NDogCjE0NDc0OiAgX191MzIgaGFuZGxlOwoxNDQ3NDogIF9f dTMyIHBhZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9nZW1f ZmxpbmsgewoxNDQ3NDogCjE0NDc0OiAgX191MzIgaGFuZGxlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBfX3UzMiBuYW1lOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg ZHJtX2dlbV9vcGVuIHsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIG5hbWU7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIF9fdTMyIGhhbmRsZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191NjQgc2l6 ZTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDY1NiAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgoxNDQ3 NDogc3RydWN0IGRybV9nZXRfY2FwIHsKMTQ0NzQ6ICBfX3U2NCBjYXBhYmlsaXR5OwoxNDQ3NDog IF9fdTY0IHZhbHVlOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNzAyICIuL2luY2x1ZGUvdWFwaS9kcm0v ZHJtLmgiCjE0NDc0OiBzdHJ1Y3QgZHJtX3NldF9jbGllbnRfY2FwIHsKMTQ0NzQ6ICBfX3U2NCBj YXBhYmlsaXR5OwoxNDQ3NDogIF9fdTY0IHZhbHVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fcHJpbWVfaGFuZGxlIHsKMTQ0NzQ6ICBfX3UzMiBo YW5kbGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBfX3MzMiBmZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1f c3luY29ial9jcmVhdGUgewoxNDQ3NDogIF9fdTMyIGhhbmRsZTsKMTQ0NzQ6IAoxNDQ3NDogIF9f dTMyIGZsYWdzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9zeW5jb2JqX2Rl c3Ryb3kgewoxNDQ3NDogIF9fdTMyIGhhbmRsZTsKMTQ0NzQ6ICBfX3UzMiBwYWQ7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9zeW5jb2JqX2hhbmRs ZSB7CjE0NDc0OiAgX191MzIgaGFuZGxlOwoxNDQ3NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogCjE0 NDc0OiAgX19zMzIgZmQ7CjE0NDc0OiAgX191MzIgcGFkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGRybV9zeW5jb2JqX3RyYW5zZmVyIHsKMTQ0NzQ6ICBfX3UzMiBzcmNfaGFuZGxl OwoxNDQ3NDogIF9fdTMyIGRzdF9oYW5kbGU7CjE0NDc0OiAgX191NjQgc3JjX3BvaW50OwoxNDQ3 NDogIF9fdTY0IGRzdF9wb2ludDsKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6ICBfX3UzMiBw YWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgZHJtX3N5bmNvYmpfd2FpdCB7CjE0NDc0OiAgX191NjQgaGFuZGxlczsKMTQ0NzQ6IAoxNDQ3 NDogIF9fczY0IHRpbWVvdXRfbnNlYzsKMTQ0NzQ6ICBfX3UzMiBjb3VudF9oYW5kbGVzOwoxNDQ3 NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogIF9fdTMyIGZpcnN0X3NpZ25hbGVkOwoxNDQ3NDogIF9f dTMyIHBhZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fc3luY29ial90aW1l bGluZV93YWl0IHsKMTQ0NzQ6ICBfX3U2NCBoYW5kbGVzOwoxNDQ3NDogCjE0NDc0OiAgX191NjQg cG9pbnRzOwoxNDQ3NDogCjE0NDc0OiAgX19zNjQgdGltZW91dF9uc2VjOwoxNDQ3NDogIF9fdTMy IGNvdW50X2hhbmRsZXM7CjE0NDc0OiAgX191MzIgZmxhZ3M7CjE0NDc0OiAgX191MzIgZmlyc3Rf c2lnbmFsZWQ7CjE0NDc0OiAgX191MzIgcGFkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZHJtX3N5bmNvYmpfYXJyYXkgewoxNDQ3NDogIF9fdTY0IGhhbmRsZXM7CjE0 NDc0OiAgX191MzIgY291bnRfaGFuZGxlczsKMTQ0NzQ6ICBfX3UzMiBwYWQ7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fc3luY29ial90aW1lbGluZV9hcnJheSB7 CjE0NDc0OiAgX191NjQgaGFuZGxlczsKMTQ0NzQ6ICBfX3U2NCBwb2ludHM7CjE0NDc0OiAgX191 MzIgY291bnRfaGFuZGxlczsKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2NydGNfZ2V0X3NlcXVlbmNlIHsKMTQ0 NzQ6ICBfX3UzMiBjcnRjX2lkOwoxNDQ3NDogIF9fdTMyIGFjdGl2ZTsKMTQ0NzQ6ICBfX3U2NCBz ZXF1ZW5jZTsKMTQ0NzQ6ICBfX3M2NCBzZXF1ZW5jZV9uczsKMTQ0NzQ6IH07CjE0NDc0OiAjIDgw NSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgoxNDQ3NDogc3RydWN0IGRybV9jcnRjX3F1ZXVl X3NlcXVlbmNlIHsKMTQ0NzQ6ICBfX3UzMiBjcnRjX2lkOwoxNDQ3NDogIF9fdTMyIGZsYWdzOwox NDQ3NDogIF9fdTY0IHNlcXVlbmNlOwoxNDQ3NDogIF9fdTY0IHVzZXJfZGF0YTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2lu Y2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIgMQoxNDQ3NDogIyAzMCAiLi9pbmNsdWRlL3VhcGkv ZHJtL2RybV9tb2RlLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIgMQox NDQ3NDogIyAzMSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiIDIKMTQ0NzQ6ICMgMjIx ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIKMTQ0NzQ6IHN0cnVjdCBkcm1fbW9kZV9t b2RlaW5mbyB7CjE0NDc0OiAgX191MzIgY2xvY2s7CjE0NDc0OiAgX191MTYgaGRpc3BsYXk7CjE0 NDc0OiAgX191MTYgaHN5bmNfc3RhcnQ7CjE0NDc0OiAgX191MTYgaHN5bmNfZW5kOwoxNDQ3NDog IF9fdTE2IGh0b3RhbDsKMTQ0NzQ6ICBfX3UxNiBoc2tldzsKMTQ0NzQ6ICBfX3UxNiB2ZGlzcGxh eTsKMTQ0NzQ6ICBfX3UxNiB2c3luY19zdGFydDsKMTQ0NzQ6ICBfX3UxNiB2c3luY19lbmQ7CjE0 NDc0OiAgX191MTYgdnRvdGFsOwoxNDQ3NDogIF9fdTE2IHZzY2FuOwoxNDQ3NDogCjE0NDc0OiAg X191MzIgdnJlZnJlc2g7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6ICBfX3Uz MiB0eXBlOwoxNDQ3NDogIGNoYXIgbmFtZVszMl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgZHJtX21vZGVfY2FyZF9yZXMgewoxNDQ3NDogIF9fdTY0IGZiX2lkX3B0cjsKMTQ0NzQ6 ICBfX3U2NCBjcnRjX2lkX3B0cjsKMTQ0NzQ6ICBfX3U2NCBjb25uZWN0b3JfaWRfcHRyOwoxNDQ3 NDogIF9fdTY0IGVuY29kZXJfaWRfcHRyOwoxNDQ3NDogIF9fdTMyIGNvdW50X2ZiczsKMTQ0NzQ6 ICBfX3UzMiBjb3VudF9jcnRjczsKMTQ0NzQ6ICBfX3UzMiBjb3VudF9jb25uZWN0b3JzOwoxNDQ3 NDogIF9fdTMyIGNvdW50X2VuY29kZXJzOwoxNDQ3NDogIF9fdTMyIG1pbl93aWR0aDsKMTQ0NzQ6 ICBfX3UzMiBtYXhfd2lkdGg7CjE0NDc0OiAgX191MzIgbWluX2hlaWdodDsKMTQ0NzQ6ICBfX3Uz MiBtYXhfaGVpZ2h0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2Ny dGMgewoxNDQ3NDogIF9fdTY0IHNldF9jb25uZWN0b3JzX3B0cjsKMTQ0NzQ6ICBfX3UzMiBjb3Vu dF9jb25uZWN0b3JzOwoxNDQ3NDogCjE0NDc0OiAgX191MzIgY3J0Y19pZDsKMTQ0NzQ6ICBfX3Uz MiBmYl9pZDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIHg7CjE0NDc0OiAgX191MzIgeTsKMTQ0NzQ6 IAoxNDQ3NDogIF9fdTMyIGdhbW1hX3NpemU7CjE0NDc0OiAgX191MzIgbW9kZV92YWxpZDsKMTQ0 NzQ6ICBzdHJ1Y3QgZHJtX21vZGVfbW9kZWluZm8gbW9kZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX3NldF9w bGFuZSB7CjE0NDc0OiAgX191MzIgcGxhbmVfaWQ7CjE0NDc0OiAgX191MzIgY3J0Y19pZDsKMTQ0 NzQ6ICBfX3UzMiBmYl9pZDsKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgX19zMzIgY3J0Y194OwoxNDQ3NDogIF9fczMyIGNydGNfeTsKMTQ0NzQ6ICBfX3UzMiBj cnRjX3c7CjE0NDc0OiAgX191MzIgY3J0Y19oOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX3Uz MiBzcmNfeDsKMTQ0NzQ6ICBfX3UzMiBzcmNfeTsKMTQ0NzQ6ICBfX3UzMiBzcmNfaDsKMTQ0NzQ6 ICBfX3UzMiBzcmNfdzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fbW9kZV9n ZXRfcGxhbmUgewoxNDQ3NDogIF9fdTMyIHBsYW5lX2lkOwoxNDQ3NDogCjE0NDc0OiAgX191MzIg Y3J0Y19pZDsKMTQ0NzQ6ICBfX3UzMiBmYl9pZDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIHBvc3Np YmxlX2NydGNzOwoxNDQ3NDogIF9fdTMyIGdhbW1hX3NpemU7CjE0NDc0OiAKMTQ0NzQ6ICBfX3Uz MiBjb3VudF9mb3JtYXRfdHlwZXM7CjE0NDc0OiAgX191NjQgZm9ybWF0X3R5cGVfcHRyOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2dldF9wbGFuZV9yZXMgewoxNDQ3 NDogIF9fdTY0IHBsYW5lX2lkX3B0cjsKMTQ0NzQ6ICBfX3UzMiBjb3VudF9wbGFuZXM7CjE0NDc0 OiB9OwoxNDQ3NDogIyAzMjIgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgoxNDQ3NDog c3RydWN0IGRybV9tb2RlX2dldF9lbmNvZGVyIHsKMTQ0NzQ6ICBfX3UzMiBlbmNvZGVyX2lkOwox NDQ3NDogIF9fdTMyIGVuY29kZXJfdHlwZTsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIGNydGNfaWQ7 CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBwb3NzaWJsZV9jcnRjczsKMTQ0NzQ6ICBfX3UzMiBwb3Nz aWJsZV9jbG9uZXM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51 bSBkcm1fbW9kZV9zdWJjb25uZWN0b3IgewoxNDQ3NDogIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9B dXRvbWF0aWMgPSAwLAoxNDQ3NDogIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9Vbmtub3duID0gMCwK MTQ0NzQ6ICBEUk1fTU9ERV9TVUJDT05ORUNUT1JfRFZJRCA9IDMsCjE0NDc0OiAgRFJNX01PREVf U1VCQ09OTkVDVE9SX0RWSUEgPSA0LAoxNDQ3NDogIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9Db21w b3NpdGUgPSA1LAoxNDQ3NDogIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9TVklERU8gPSA2LAoxNDQ3 NDogIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9Db21wb25lbnQgPSA4LAoxNDQ3NDogIERSTV9NT0RF X1NVQkNPTk5FQ1RPUl9TQ0FSVCA9IDksCjE0NDc0OiB9OwoxNDQ3NDogIyAzNjYgIi4vaW5jbHVk ZS91YXBpL2RybS9kcm1fbW9kZS5oIgoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2dldF9jb25uZWN0 b3IgewoxNDQ3NDogCjE0NDc0OiAgX191NjQgZW5jb2RlcnNfcHRyOwoxNDQ3NDogIF9fdTY0IG1v ZGVzX3B0cjsKMTQ0NzQ6ICBfX3U2NCBwcm9wc19wdHI7CjE0NDc0OiAgX191NjQgcHJvcF92YWx1 ZXNfcHRyOwoxNDQ3NDogCjE0NDc0OiAgX191MzIgY291bnRfbW9kZXM7CjE0NDc0OiAgX191MzIg Y291bnRfcHJvcHM7CjE0NDc0OiAgX191MzIgY291bnRfZW5jb2RlcnM7CjE0NDc0OiAKMTQ0NzQ6 ICBfX3UzMiBlbmNvZGVyX2lkOwoxNDQ3NDogIF9fdTMyIGNvbm5lY3Rvcl9pZDsKMTQ0NzQ6ICBf X3UzMiBjb25uZWN0b3JfdHlwZTsKMTQ0NzQ6ICBfX3UzMiBjb25uZWN0b3JfdHlwZV9pZDsKMTQ0 NzQ6IAoxNDQ3NDogIF9fdTMyIGNvbm5lY3Rpb247CjE0NDc0OiAgX191MzIgbW1fd2lkdGg7CjE0 NDc0OiAgX191MzIgbW1faGVpZ2h0OwoxNDQ3NDogIF9fdTMyIHN1YnBpeGVsOwoxNDQ3NDogCjE0 NDc0OiAgX191MzIgcGFkOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNDE5ICIuL2luY2x1ZGUvdWFwaS9k cm0vZHJtX21vZGUuaCIKMTQ0NzQ6IHN0cnVjdCBkcm1fbW9kZV9wcm9wZXJ0eV9lbnVtIHsKMTQ0 NzQ6ICBfX3U2NCB2YWx1ZTsKMTQ0NzQ6ICBjaGFyIG5hbWVbMzJdOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2dldF9wcm9wZXJ0eSB7CjE0NDc0OiAgX191NjQgdmFs dWVzX3B0cjsKMTQ0NzQ6ICBfX3U2NCBlbnVtX2Jsb2JfcHRyOwoxNDQ3NDogCjE0NDc0OiAgX191 MzIgcHJvcF9pZDsKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6ICBjaGFyIG5hbWVbMzJdOwox NDQ3NDogCjE0NDc0OiAgX191MzIgY291bnRfdmFsdWVzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBfX3UzMiBjb3VudF9lbnVtX2Jsb2JzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGRybV9tb2RlX2Nvbm5lY3Rvcl9zZXRfcHJvcGVydHkgewoxNDQ3NDogIF9fdTY0IHZhbHVlOwox NDQ3NDogIF9fdTMyIHByb3BfaWQ7CjE0NDc0OiAgX191MzIgY29ubmVjdG9yX2lkOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgNDU0ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIKMTQ0NzQ6IHN0 cnVjdCBkcm1fbW9kZV9vYmpfZ2V0X3Byb3BlcnRpZXMgewoxNDQ3NDogIF9fdTY0IHByb3BzX3B0 cjsKMTQ0NzQ6ICBfX3U2NCBwcm9wX3ZhbHVlc19wdHI7CjE0NDc0OiAgX191MzIgY291bnRfcHJv cHM7CjE0NDc0OiAgX191MzIgb2JqX2lkOwoxNDQ3NDogIF9fdTMyIG9ial90eXBlOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX29ial9zZXRfcHJvcGVydHkgewoxNDQ3 NDogIF9fdTY0IHZhbHVlOwoxNDQ3NDogIF9fdTMyIHByb3BfaWQ7CjE0NDc0OiAgX191MzIgb2Jq X2lkOwoxNDQ3NDogIF9fdTMyIG9ial90eXBlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGRybV9tb2RlX2dldF9ibG9iIHsKMTQ0NzQ6ICBfX3UzMiBibG9iX2lkOwoxNDQ3NDogIF9f dTMyIGxlbmd0aDsKMTQ0NzQ6ICBfX3U2NCBkYXRhOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGRybV9tb2RlX2ZiX2NtZCB7CjE0NDc0OiAgX191MzIgZmJfaWQ7CjE0NDc0OiAgX191 MzIgd2lkdGg7CjE0NDc0OiAgX191MzIgaGVpZ2h0OwoxNDQ3NDogIF9fdTMyIHBpdGNoOwoxNDQ3 NDogIF9fdTMyIGJwcDsKMTQ0NzQ6ICBfX3UzMiBkZXB0aDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMy IGhhbmRsZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIHsKMTQ0NzQ6ICBfX3UzMiBmYl9pZDsKMTQ0NzQ6ICBf X3UzMiB3aWR0aDsKMTQ0NzQ6ICBfX3UzMiBoZWlnaHQ7CjE0NDc0OiAgX191MzIgcGl4ZWxfZm9y bWF0OwoxNDQ3NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogIyA1MjAgIi4vaW5jbHVkZS91YXBpL2Ry bS9kcm1fbW9kZS5oIgoxNDQ3NDogIF9fdTMyIGhhbmRsZXNbNF07CjE0NDc0OiAgX191MzIgcGl0 Y2hlc1s0XTsKMTQ0NzQ6ICBfX3UzMiBvZmZzZXRzWzRdOwoxNDQ3NDogIF9fdTY0IG1vZGlmaWVy WzRdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTU5ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUu aCIKMTQ0NzQ6IHN0cnVjdCBkcm1fbW9kZV9mYl9kaXJ0eV9jbWQgewoxNDQ3NDogIF9fdTMyIGZi X2lkOwoxNDQ3NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogIF9fdTMyIGNvbG9yOwoxNDQ3NDogIF9f dTMyIG51bV9jbGlwczsKMTQ0NzQ6ICBfX3U2NCBjbGlwc19wdHI7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgZHJtX21vZGVfbW9kZV9jbWQgewoxNDQ3NDogIF9fdTMyIGNvbm5lY3Rv cl9pZDsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX21vZGVfbW9kZWluZm8gbW9kZTsKMTQ0NzQ6IH07CjE0 NDc0OiAjIDU5MCAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCjE0NDc0OiBzdHJ1Y3Qg ZHJtX21vZGVfY3Vyc29yIHsKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6ICBfX3UzMiBjcnRj X2lkOwoxNDQ3NDogIF9fczMyIHg7CjE0NDc0OiAgX19zMzIgeTsKMTQ0NzQ6ICBfX3UzMiB3aWR0 aDsKMTQ0NzQ6ICBfX3UzMiBoZWlnaHQ7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBoYW5kbGU7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX21vZGVfY3Vyc29yMiB7CjE0NDc0OiAg X191MzIgZmxhZ3M7CjE0NDc0OiAgX191MzIgY3J0Y19pZDsKMTQ0NzQ6ICBfX3MzMiB4OwoxNDQ3 NDogIF9fczMyIHk7CjE0NDc0OiAgX191MzIgd2lkdGg7CjE0NDc0OiAgX191MzIgaGVpZ2h0Owox NDQ3NDogCjE0NDc0OiAgX191MzIgaGFuZGxlOwoxNDQ3NDogIF9fczMyIGhvdF94OwoxNDQ3NDog IF9fczMyIGhvdF95OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2Ny dGNfbHV0IHsKMTQ0NzQ6ICBfX3UzMiBjcnRjX2lkOwoxNDQ3NDogIF9fdTMyIGdhbW1hX3NpemU7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fdTY0IHJlZDsKMTQ0NzQ6ICBfX3U2NCBncmVlbjsK MTQ0NzQ6ICBfX3U2NCBibHVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9j b2xvcl9jdG0gewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191NjQg bWF0cml4WzldOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9jb2xvcl9sdXQg ewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MTYgcmVkOwoxNDQ3 NDogIF9fdTE2IGdyZWVuOwoxNDQ3NDogIF9fdTE2IGJsdWU7CjE0NDc0OiAgX191MTYgcmVzZXJ2 ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogIyA2NTIgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5o IgoxNDQ3NDogc3RydWN0IGhkcl9tZXRhZGF0YV9pbmZvZnJhbWUgewoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191OCBlb3RmOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIF9fdTggbWV0YWRhdGFfdHlwZTsKMTQ0NzQ6ICMgNjcwICIuL2luY2x1ZGUvdWFw aS9kcm0vZHJtX21vZGUuaCIKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICBfX3UxNiB4LCB5Owox NDQ3NDogICB9IGRpc3BsYXlfcHJpbWFyaWVzWzNdOwoxNDQ3NDogIyA2ODEgIi4vaW5jbHVkZS91 YXBpL2RybS9kcm1fbW9kZS5oIgoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIF9fdTE2IHgsIHk7 CjE0NDc0OiAgIH0gd2hpdGVfcG9pbnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIF9fdTE2IG1heF9kaXNwbGF5X21hc3RlcmluZ19sdW1pbmFuY2U7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191 MTYgbWluX2Rpc3BsYXlfbWFzdGVyaW5nX2x1bWluYW5jZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MTYgbWF4X2NsbDsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MTYgbWF4X2ZhbGw7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGhkcl9vdXRwdXRfbWV0YWRhdGEgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIF9fdTMyIG1ldGFkYXRhX3R5cGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg dW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgaGRyX21ldGFkYXRhX2luZm9mcmFtZSBoZG1pX21ldGFk YXRhX3R5cGUxOwoxNDQ3NDogIH07CjE0NDc0OiB9OwoxNDQ3NDogIyA3NjMgIi4vaW5jbHVkZS91 YXBpL2RybS9kcm1fbW9kZS5oIgoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2NydGNfcGFnZV9mbGlw IHsKMTQ0NzQ6ICBfX3UzMiBjcnRjX2lkOwoxNDQ3NDogIF9fdTMyIGZiX2lkOwoxNDQ3NDogIF9f dTMyIGZsYWdzOwoxNDQ3NDogIF9fdTMyIHJlc2VydmVkOwoxNDQ3NDogIF9fdTY0IHVzZXJfZGF0 YTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDc5MSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgi CjE0NDc0OiBzdHJ1Y3QgZHJtX21vZGVfY3J0Y19wYWdlX2ZsaXBfdGFyZ2V0IHsKMTQ0NzQ6ICBf X3UzMiBjcnRjX2lkOwoxNDQ3NDogIF9fdTMyIGZiX2lkOwoxNDQ3NDogIF9fdTMyIGZsYWdzOwox NDQ3NDogIF9fdTMyIHNlcXVlbmNlOwoxNDQ3NDogIF9fdTY0IHVzZXJfZGF0YTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iIHsKMTQ0 NzQ6ICBfX3UzMiBoZWlnaHQ7CjE0NDc0OiAgX191MzIgd2lkdGg7CjE0NDc0OiAgX191MzIgYnBw OwoxNDQ3NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogCjE0NDc0OiAgX191MzIgaGFuZGxlOwoxNDQ3 NDogIF9fdTMyIHBpdGNoOwoxNDQ3NDogIF9fdTY0IHNpemU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fbW9kZV9tYXBfZHVtYiB7CjE0NDc0OiAKMTQ0NzQ6ICBf X3UzMiBoYW5kbGU7CjE0NDc0OiAgX191MzIgcGFkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX3U2NCBvZmZzZXQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZHJtX21vZGVfZGVzdHJveV9kdW1iIHsKMTQ0NzQ6ICBfX3UzMiBoYW5kbGU7 CjE0NDc0OiB9OwoxNDQ3NDogIyA4NDAgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgox NDQ3NDogc3RydWN0IGRybV9tb2RlX2F0b21pYyB7CjE0NDc0OiAgX191MzIgZmxhZ3M7CjE0NDc0 OiAgX191MzIgY291bnRfb2JqczsKMTQ0NzQ6ICBfX3U2NCBvYmpzX3B0cjsKMTQ0NzQ6ICBfX3U2 NCBjb3VudF9wcm9wc19wdHI7CjE0NDc0OiAgX191NjQgcHJvcHNfcHRyOwoxNDQ3NDogIF9fdTY0 IHByb3BfdmFsdWVzX3B0cjsKMTQ0NzQ6ICBfX3U2NCByZXNlcnZlZDsKMTQ0NzQ6ICBfX3U2NCB1 c2VyX2RhdGE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2Zvcm1hdF9tb2Rp Zmllcl9ibG9iIHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MzIgdmVyc2lvbjsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgX191MzIgZmxhZ3M7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9f dTMyIGNvdW50X2Zvcm1hdHM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIGZvcm1hdHNf b2Zmc2V0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBjb3VudF9tb2RpZmllcnM7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIG1vZGlmaWVyc19vZmZzZXQ7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2Zvcm1hdF9t b2RpZmllciB7CjE0NDc0OiAjIDg5MyAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCjE0 NDc0OiAgX191NjQgZm9ybWF0czsKMTQ0NzQ6ICBfX3UzMiBvZmZzZXQ7CjE0NDc0OiAgX191MzIg cGFkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX3U2NCBtb2RpZmllcjsKMTQ0NzQ6IH07CjE0 NDc0OiAjIDkwOSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCjE0NDc0OiBzdHJ1Y3Qg ZHJtX21vZGVfY3JlYXRlX2Jsb2IgewoxNDQ3NDogCjE0NDc0OiAgX191NjQgZGF0YTsKMTQ0NzQ6 IAoxNDQ3NDogIF9fdTMyIGxlbmd0aDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIGJsb2JfaWQ7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGRybV9tb2RlX2Rlc3Ryb3lfYmxvYiB7CjE0NDc0OiAgX191MzIgYmxvYl9p ZDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDkzNiAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgi CjE0NDc0OiBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2xlYXNlIHsKMTQ0NzQ6IAoxNDQ3NDogIF9f dTY0IG9iamVjdF9pZHM7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBvYmplY3RfY291bnQ7CjE0NDc0 OiAKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MzIgbGVz c2VlX2lkOwoxNDQ3NDogCjE0NDc0OiAgX191MzIgZmQ7CjE0NDc0OiB9OwoxNDQ3NDogIyA5NTcg Ii4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2xp c3RfbGVzc2VlcyB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBjb3VudF9sZXNzZWVzOwoxNDQ3NDogIF9fdTMyIHBh ZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fdTY0IGxlc3NlZXNf cHRyOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgOTgxICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUu aCIKMTQ0NzQ6IHN0cnVjdCBkcm1fbW9kZV9nZXRfbGVhc2UgewoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MzIgY291bnRf b2JqZWN0czsKMTQ0NzQ6ICBfX3UzMiBwYWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBfX3U2NCBvYmplY3RzX3B0cjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX21vZGVfcmV2 b2tlX2xlYXNlIHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MzIgbGVzc2VlX2lkOwoxNDQ3 NDogfTsKMTQ0NzQ6ICMgMTAyMSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCjE0NDc0 OiBzdHJ1Y3QgZHJtX21vZGVfcmVjdCB7CjE0NDc0OiAgX19zMzIgeDE7CjE0NDc0OiAgX19zMzIg eTE7CjE0NDc0OiAgX19zMzIgeDI7CjE0NDc0OiAgX19zMzIgeTI7CjE0NDc0OiB9OwoxNDQ3NDog IyA4MTcgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIgMgoxNDQ3NDogIyA5NzQgIi4vaW5jbHVk ZS91YXBpL2RybS9kcm0uaCIKMTQ0NzQ6IHN0cnVjdCBkcm1fZXZlbnQgewoxNDQ3NDogIF9fdTMy IHR5cGU7CjE0NDc0OiAgX191MzIgbGVuZ3RoOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2V2ZW50X3ZibGFuayB7CjE0 NDc0OiAgc3RydWN0IGRybV9ldmVudCBiYXNlOwoxNDQ3NDogIF9fdTY0IHVzZXJfZGF0YTsKMTQ0 NzQ6ICBfX3UzMiB0dl9zZWM7CjE0NDc0OiAgX191MzIgdHZfdXNlYzsKMTQ0NzQ6ICBfX3UzMiBz ZXF1ZW5jZTsKMTQ0NzQ6ICBfX3UzMiBjcnRjX2lkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9ldmVudF9jcnRjX3NlcXVlbmNlIHsK MTQ0NzQ6ICBzdHJ1Y3QgZHJtX2V2ZW50IGJhc2U7CjE0NDc0OiAgX191NjQgdXNlcl9kYXRhOwox NDQ3NDogIF9fczY0IHRpbWVfbnM7CjE0NDc0OiAgX191NjQgc2VxdWVuY2U7CjE0NDc0OiB9Owox NDQ3NDogIyAzNiAiLi9pbmNsdWRlL2RybS9kcm1fcHJpbnQuaCIgMgoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQgX19kcm1fZGVidWc7CjE0NDc0OiAjIDc1ICIuL2lu Y2x1ZGUvZHJtL2RybV9wcmludC5oIgoxNDQ3NDogc3RydWN0IGRybV9wcmludGVyIHsKMTQ0NzQ6 IAoxNDQ3NDogIHZvaWQgKCpwcmludGZuKShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIHN0cnVjdCB2 YV9mb3JtYXQgKnZhZik7CjE0NDc0OiAgdm9pZCAoKnB1dHMpKHN0cnVjdCBkcm1fcHJpbnRlciAq cCwgY29uc3QgY2hhciAqc3RyKTsKMTQ0NzQ6ICB2b2lkICphcmc7CjE0NDc0OiAgY29uc3QgY2hh ciAqcHJlZml4OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBfX2RybV9wcmludGZuX2Nv cmVkdW1wKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgc3RydWN0IHZhX2Zvcm1hdCAqdmFmKTsKMTQ0 NzQ6IHZvaWQgX19kcm1fcHV0c19jb3JlZHVtcChzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIGNvbnN0 IGNoYXIgKnN0cik7CjE0NDc0OiB2b2lkIF9fZHJtX3ByaW50Zm5fc2VxX2ZpbGUoc3RydWN0IGRy bV9wcmludGVyICpwLCBzdHJ1Y3QgdmFfZm9ybWF0ICp2YWYpOwoxNDQ3NDogdm9pZCBfX2RybV9w dXRzX3NlcV9maWxlKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgY29uc3QgY2hhciAqc3RyKTsKMTQ0 NzQ6IHZvaWQgX19kcm1fcHJpbnRmbl9pbmZvKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgc3RydWN0 IHZhX2Zvcm1hdCAqdmFmKTsKMTQ0NzQ6IHZvaWQgX19kcm1fcHJpbnRmbl9kZWJ1ZyhzdHJ1Y3Qg ZHJtX3ByaW50ZXIgKnAsIHN0cnVjdCB2YV9mb3JtYXQgKnZhZik7CjE0NDc0OiB2b2lkIF9fZHJt X3ByaW50Zm5fZXJyKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgc3RydWN0IHZhX2Zvcm1hdCAqdmFm KTsKMTQ0NzQ6IAoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMp KSkKMTQ0NzQ6IHZvaWQgZHJtX3ByaW50ZihzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIGNvbnN0IGNo YXIgKmYsIC4uLik7CjE0NDc0OiB2b2lkIGRybV9wdXRzKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwg Y29uc3QgY2hhciAqc3RyKTsKMTQ0NzQ6IHZvaWQgZHJtX3ByaW50X3JlZ3NldDMyKHN0cnVjdCBk cm1fcHJpbnRlciAqcCwgc3RydWN0IGRlYnVnZnNfcmVnc2V0MzIgKnJlZ3NldCk7CjE0NDc0OiB2 b2lkIGRybV9wcmludF9iaXRzKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgdW5zaWduZWQgbG9uZyB2 YWx1ZSwKMTQ0NzQ6ICAgICAgIGNvbnN0IGNoYXIgKiBjb25zdCBiaXRzW10sIHVuc2lnbmVkIGlu dCBuYml0cyk7CjE0NDc0OiAKMTQ0NzQ6IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRm LCAyLCAwKSkpCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkCjE0NDc0OiBkcm1fdnByaW50ZihzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIGNv bnN0IGNoYXIgKmZtdCwgdmFfbGlzdCAqdmEpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IHZhX2Zv cm1hdCB2YWYgPSB7IC5mbXQgPSBmbXQsIC52YSA9IHZhIH07CjE0NDc0OiAKMTQ0NzQ6ICBwLT5w cmludGZuKHAsICZ2YWYpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMjggIi4vaW5jbHVkZS9kcm0vZHJt X3ByaW50LmgiCjE0NDc0OiBzdHJ1Y3QgZHJtX3ByaW50X2l0ZXJhdG9yIHsKMTQ0NzQ6ICB2b2lk ICpkYXRhOwoxNDQ3NDogIHNzaXplX3Qgc3RhcnQ7CjE0NDc0OiAgc3NpemVfdCByZW1haW47CjE0 NDc0OiAKMTQ0NzQ6ICBzc2l6ZV90IG9mZnNldDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDE3MiAiLi9p bmNsdWRlL2RybS9kcm1fcHJpbnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkcm1fcHJpbnRlcgoxNDQ3NDog ZHJtX2NvcmVkdW1wX3ByaW50ZXIoc3RydWN0IGRybV9wcmludF9pdGVyYXRvciAqaXRlcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IHsKMTQ0NzQ6ICAgLnByaW50Zm4g PSBfX2RybV9wcmludGZuX2NvcmVkdW1wLAoxNDQ3NDogICAucHV0cyA9IF9fZHJtX3B1dHNfY29y ZWR1bXAsCjE0NDc0OiAgIC5hcmcgPSBpdGVyLAoxNDQ3NDogIH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIGl0ZXItPm9mZnNldCA9IDA7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gcDsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgMTk0ICIuL2luY2x1ZGUvZHJtL2RybV9wcmludC5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IGRybV9wcmludGVyIGRybV9zZXFfZmlsZV9wcmludGVyKHN0cnVjdCBzZXFfZmlsZSAqZikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IHsKMTQ0NzQ6ICAgLnByaW50Zm4g PSBfX2RybV9wcmludGZuX3NlcV9maWxlLAoxNDQ3NDogICAucHV0cyA9IF9fZHJtX3B1dHNfc2Vx X2ZpbGUsCjE0NDc0OiAgIC5hcmcgPSBmLAoxNDQ3NDogIH07CjE0NDc0OiAgcmV0dXJuIHA7CjE0 NDc0OiB9CjE0NDc0OiAjIDIxMSAiLi9pbmNsdWRlL2RybS9kcm1fcHJpbnQuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0 cnVjdCBkcm1fcHJpbnRlciBkcm1faW5mb19wcmludGVyKHN0cnVjdCBkZXZpY2UgKmRldikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IHsKMTQ0NzQ6ICAgLnByaW50Zm4g PSBfX2RybV9wcmludGZuX2luZm8sCjE0NDc0OiAgIC5hcmcgPSBkZXYsCjE0NDc0OiAgfTsKMTQ0 NzQ6ICByZXR1cm4gcDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjI3ICIuL2luY2x1ZGUvZHJtL2RybV9w cmludC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRybV9wcmludGVyIGRybV9kZWJ1Z19wcmludGVyKGNvbnN0 IGNoYXIgKnByZWZpeCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IHsK MTQ0NzQ6ICAgLnByaW50Zm4gPSBfX2RybV9wcmludGZuX2RlYnVnLAoxNDQ3NDogICAucHJlZml4 ID0gcHJlZml4CjE0NDc0OiAgfTsKMTQ0NzQ6ICByZXR1cm4gcDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg MjQzICIuL2luY2x1ZGUvZHJtL2RybV9wcmludC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRybV9wcmludGVy IGRybV9lcnJfcHJpbnRlcihjb25zdCBjaGFyICpwcmVmaXgpCjE0NDc0OiB7CjE0NDc0OiAgc3Ry dWN0IGRybV9wcmludGVyIHAgPSB7CjE0NDc0OiAgIC5wcmludGZuID0gX19kcm1fcHJpbnRmbl9l cnIsCjE0NDc0OiAgIC5wcmVmaXggPSBwcmVmaXgKMTQ0NzQ6ICB9OwoxNDQ3NDogIHJldHVybiBw OwoxNDQ3NDogfQoxNDQ3NDogIyAyNzcgIi4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiCjE0NDc0 OiBlbnVtIGRybV9kZWJ1Z19jYXRlZ29yeSB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBEUk1fVVRfQ09SRSA9IDB4MDEsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICBEUk1fVVRfRFJJVkVSID0gMHgwMiwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBEUk1fVVRfS01TID0gMHgwNCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBEUk1fVVRfUFJJTUUgPSAweDA4LAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IERSTV9VVF9BVE9NSUMgPSAweDEwLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERS TV9VVF9WQkwgPSAweDIwLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERSTV9VVF9T VEFURSA9IDB4NDAsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRFJNX1VUX0xFQVNF ID0gMHg4MCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBEUk1fVVRfRFAgPSAweDEw MCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZHJtX2RlYnVnX2VuYWJsZWQoZW51bSBk cm1fZGVidWdfY2F0ZWdvcnkgY2F0ZWdvcnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fYnVp bHRpbl9leHBlY3QoISEoX19kcm1fZGVidWcgJiBjYXRlZ29yeSksIDApOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkpKQoxNDQ3NDogdm9pZCBk cm1fZGV2X3ByaW50ayhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmxldmVs LAoxNDQ3NDogICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwoxNDQ3NDogX19hdHRyaWJ1 dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKMTQ0NzQ6IHZvaWQgZHJtX2Rldl9kYmco Y29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBlbnVtIGRybV9kZWJ1Z19jYXRlZ29yeSBjYXRlZ29y eSwKMTQ0NzQ6ICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKMTQ0NzQ6ICMgNDg5ICIuL2lu Y2x1ZGUvZHJtL2RybV9wcmludC5oIgoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhw cmludGYsIDIsIDMpKSkKMTQ0NzQ6IHZvaWQgX19kcm1fZGJnKGVudW0gZHJtX2RlYnVnX2NhdGVn b3J5IGNhdGVnb3J5LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CjE0NDc0OiBfX2F0dHJpYnV0 ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMSwgMikpKQoxNDQ3NDogdm9pZCBfX2RybV9lcnIoY29u c3QgY2hhciAqZm9ybWF0LCAuLi4pOwoxNDQ3NDogIyAzOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2RjL29zX3R5cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvY2dzX2NvbW1vbi5oIiAxCjE0 NDc0OiAjIDI3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvY2dzX2Nv bW1vbi5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1 ZGUvYW1kX3NoYXJlZC5oIiAxCjE0NDc0OiAjIDI2ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2luY2x1ZGUvYW1kX3NoYXJlZC5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvZHJtL2Ft ZF9hc2ljX3R5cGUuaCIgMQoxNDQ3NDogIyAyOCAiLi9pbmNsdWRlL2RybS9hbWRfYXNpY190eXBl LmgiCjE0NDc0OiBlbnVtIGFtZF9hc2ljX3R5cGUgewoxNDQ3NDogIENISVBfVEFISVRJID0gMCwK MTQ0NzQ6ICBDSElQX1BJVENBSVJOLAoxNDQ3NDogIENISVBfVkVSREUsCjE0NDc0OiAgQ0hJUF9P TEFORCwKMTQ0NzQ6ICBDSElQX0hBSU5BTiwKMTQ0NzQ6ICBDSElQX0JPTkFJUkUsCjE0NDc0OiAg Q0hJUF9LQVZFUkksCjE0NDc0OiAgQ0hJUF9LQUJJTkksCjE0NDc0OiAgQ0hJUF9IQVdBSUksCjE0 NDc0OiAgQ0hJUF9NVUxMSU5TLAoxNDQ3NDogIENISVBfVE9QQVosCjE0NDc0OiAgQ0hJUF9UT05H QSwKMTQ0NzQ6ICBDSElQX0ZJSkksCjE0NDc0OiAgQ0hJUF9DQVJSSVpPLAoxNDQ3NDogIENISVBf U1RPTkVZLAoxNDQ3NDogIENISVBfUE9MQVJJUzEwLAoxNDQ3NDogIENISVBfUE9MQVJJUzExLAox NDQ3NDogIENISVBfUE9MQVJJUzEyLAoxNDQ3NDogIENISVBfVkVHQU0sCjE0NDc0OiAgQ0hJUF9W RUdBMTAsCjE0NDc0OiAgQ0hJUF9WRUdBMTIsCjE0NDc0OiAgQ0hJUF9WRUdBMjAsCjE0NDc0OiAg Q0hJUF9SQVZFTiwKMTQ0NzQ6ICBDSElQX0FSQ1RVUlVTLAoxNDQ3NDogIENISVBfUkVOT0lSLAox NDQ3NDogIENISVBfTkFWSTEwLAoxNDQ3NDogIENISVBfTkFWSTE0LAoxNDQ3NDogIENISVBfTkFW STEyLAoxNDQ3NDogIENISVBfTEFTVCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBj b25zdCBjaGFyICphbWRncHVfYXNpY19uYW1lW107CjE0NDc0OiAjIDI3ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYW1kX3NoYXJlZC5oIiAyCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYW1k X2NoaXBfZmxhZ3MgewoxNDQ3NDogIEFNRF9BU0lDX01BU0sgPSAweDAwMDBmZmZmVUwsCjE0NDc0 OiAgQU1EX0ZMQUdTX01BU0sgPSAweGZmZmYwMDAwVUwsCjE0NDc0OiAgQU1EX0lTX01PQklMSVRZ ID0gMHgwMDAxMDAwMFVMLAoxNDQ3NDogIEFNRF9JU19BUFUgPSAweDAwMDIwMDAwVUwsCjE0NDc0 OiAgQU1EX0lTX1BYID0gMHgwMDA0MDAwMFVMLAoxNDQ3NDogIEFNRF9FWFBfSFdfU1VQUE9SVCA9 IDB4MDAwODAwMDBVTCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYW1kX2lwX2Jsb2Nr X3R5cGUgewoxNDQ3NDogIEFNRF9JUF9CTE9DS19UWVBFX0NPTU1PTiwKMTQ0NzQ6ICBBTURfSVBf QkxPQ0tfVFlQRV9HTUMsCjE0NDc0OiAgQU1EX0lQX0JMT0NLX1RZUEVfSUgsCjE0NDc0OiAgQU1E X0lQX0JMT0NLX1RZUEVfU01DLAoxNDQ3NDogIEFNRF9JUF9CTE9DS19UWVBFX1BTUCwKMTQ0NzQ6 ICBBTURfSVBfQkxPQ0tfVFlQRV9EQ0UsCjE0NDc0OiAgQU1EX0lQX0JMT0NLX1RZUEVfR0ZYLAox NDQ3NDogIEFNRF9JUF9CTE9DS19UWVBFX1NETUEsCjE0NDc0OiAgQU1EX0lQX0JMT0NLX1RZUEVf VVZELAoxNDQ3NDogIEFNRF9JUF9CTE9DS19UWVBFX1ZDRSwKMTQ0NzQ6ICBBTURfSVBfQkxPQ0tf VFlQRV9BQ1AsCjE0NDc0OiAgQU1EX0lQX0JMT0NLX1RZUEVfVkNOLAoxNDQ3NDogIEFNRF9JUF9C TE9DS19UWVBFX01FUywKMTQ0NzQ6ICBBTURfSVBfQkxPQ0tfVFlQRV9KUEVHCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBlbnVtIGFtZF9jbG9ja2dhdGluZ19zdGF0ZSB7CjE0NDc0OiAgQU1EX0NH X1NUQVRFX0dBVEUgPSAwLAoxNDQ3NDogIEFNRF9DR19TVEFURV9VTkdBVEUsCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYW1kX3Bvd2VyZ2F0aW5nX3N0YXRlIHsKMTQ0NzQ6 ICBBTURfUEdfU1RBVEVfR0FURSA9IDAsCjE0NDc0OiAgQU1EX1BHX1NUQVRFX1VOR0FURSwKMTQ0 NzQ6IH07CjE0NDc0OiAjIDEyNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNs dWRlL2FtZF9zaGFyZWQuaCIKMTQ0NzQ6IGVudW0gUFBfRkVBVFVSRV9NQVNLIHsKMTQ0NzQ6ICBQ UF9TQ0xLX0RQTV9NQVNLID0gMHgxLAoxNDQ3NDogIFBQX01DTEtfRFBNX01BU0sgPSAweDIsCjE0 NDc0OiAgUFBfUENJRV9EUE1fTUFTSyA9IDB4NCwKMTQ0NzQ6ICBQUF9TQ0xLX0RFRVBfU0xFRVBf TUFTSyA9IDB4OCwKMTQ0NzQ6ICBQUF9QT1dFUl9DT05UQUlOTUVOVF9NQVNLID0gMHgxMCwKMTQ0 NzQ6ICBQUF9VVkRfSEFORFNIQUtFX01BU0sgPSAweDIwLAoxNDQ3NDogIFBQX1NNQ19WT0xUQUdF X0NPTlRST0xfTUFTSyA9IDB4NDAsCjE0NDc0OiAgUFBfVkJJX1RJTUVfU1VQUE9SVF9NQVNLID0g MHg4MCwKMTQ0NzQ6ICBQUF9VTFZfTUFTSyA9IDB4MTAwLAoxNDQ3NDogIFBQX0VOQUJMRV9HRlhf Q0dfVEhSVV9TTVUgPSAweDIwMCwKMTQ0NzQ6ICBQUF9DTE9DS19TVFJFVENIX01BU0sgPSAweDQw MCwKMTQ0NzQ6ICBQUF9PRF9GVVpaWV9GQU5fQ09OVFJPTF9NQVNLID0gMHg4MDAsCjE0NDc0OiAg UFBfU09DQ0xLX0RQTV9NQVNLID0gMHgxMDAwLAoxNDQ3NDogIFBQX0RDRUZDTEtfRFBNX01BU0sg PSAweDIwMDAsCjE0NDc0OiAgUFBfT1ZFUkRSSVZFX01BU0sgPSAweDQwMDAsCjE0NDc0OiAgUFBf R0ZYT0ZGX01BU0sgPSAweDgwMDAsCjE0NDc0OiAgUFBfQUNHX01BU0sgPSAweDEwMDAwLAoxNDQ3 NDogIFBQX1NUVVRURVJfTU9ERSA9IDB4MjAwMDAsCjE0NDc0OiAgUFBfQVZGU19NQVNLID0gMHg0 MDAwMCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gRENfRkVBVFVSRV9NQVNLIHsKMTQ0 NzQ6ICBEQ19GQkNfTUFTSyA9IDB4MSwKMTQ0NzQ6ICBEQ19NVUxUSV9NT05fUFBfTUNMS19TV0lU Q0hfTUFTSyA9IDB4MiwKMTQ0NzQ6ICBEQ19ESVNBQkxFX0ZSQUNUSU9OQUxfUFdNX01BU0sgPSAw eDQsCjE0NDc0OiAgRENfUFNSX01BU0sgPSAweDgsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBl bnVtIGFtZF9kcG1fZm9yY2VkX2xldmVsOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGFtZF9pcF9mdW5jcyB7CjE0NDc0OiAKMTQ0NzQ6ICBjaGFyICpuYW1lOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKmVh cmx5X2luaXQpKHZvaWQgKmhhbmRsZSk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCpsYXRlX2luaXQp KHZvaWQgKmhhbmRsZSk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCpzd19pbml0KSh2b2lkICpoYW5k bGUpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqc3dfZmluaSkodm9pZCAqaGFuZGxlKTsKMTQ0NzQ6 IAoxNDQ3NDogIGludCAoKmh3X2luaXQpKHZvaWQgKmhhbmRsZSk7CjE0NDc0OiAKMTQ0NzQ6ICBp bnQgKCpod19maW5pKSh2b2lkICpoYW5kbGUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmxhdGVf ZmluaSkodm9pZCAqaGFuZGxlKTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKnN1c3BlbmQpKHZvaWQg KmhhbmRsZSk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCpyZXN1bWUpKHZvaWQgKmhhbmRsZSk7CjE0 NDc0OiAKMTQ0NzQ6ICBib29sICgqaXNfaWRsZSkodm9pZCAqaGFuZGxlKTsKMTQ0NzQ6IAoxNDQ3 NDogIGludCAoKndhaXRfZm9yX2lkbGUpKHZvaWQgKmhhbmRsZSk7CjE0NDc0OiAKMTQ0NzQ6ICBi b29sICgqY2hlY2tfc29mdF9yZXNldCkodm9pZCAqaGFuZGxlKTsKMTQ0NzQ6IAoxNDQ3NDogIGlu dCAoKnByZV9zb2Z0X3Jlc2V0KSh2b2lkICpoYW5kbGUpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgq c29mdF9yZXNldCkodm9pZCAqaGFuZGxlKTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKnBvc3Rfc29m dF9yZXNldCkodm9pZCAqaGFuZGxlKTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKnNldF9jbG9ja2dh dGluZ19zdGF0ZSkodm9pZCAqaGFuZGxlLAoxNDQ3NDogICAgICAgICAgZW51bSBhbWRfY2xvY2tn YXRpbmdfc3RhdGUgc3RhdGUpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqc2V0X3Bvd2VyZ2F0aW5n X3N0YXRlKSh2b2lkICpoYW5kbGUsCjE0NDc0OiAgICAgICAgICBlbnVtIGFtZF9wb3dlcmdhdGlu Z19zdGF0ZSBzdGF0ZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZ2V0X2Nsb2NrZ2F0aW5nX3N0 YXRlKSh2b2lkICpoYW5kbGUsIHUzMiAqZmxhZ3MpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqZW5h YmxlX3VtZF9wc3RhdGUpKHZvaWQgKmhhbmRsZSwgZW51bSBhbWRfZHBtX2ZvcmNlZF9sZXZlbCAq bGV2ZWwpOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vaW5jbHVkZS9jZ3NfY29tbW9uLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNnc19k ZXZpY2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gY2dzX2lu ZF9yZWcgewoxNDQ3NDogIENHU19JTkRfUkVHX19NTUlPLAoxNDQ3NDogIENHU19JTkRfUkVHX19Q Q0lFLAoxNDQ3NDogIENHU19JTkRfUkVHX19TTUMsCjE0NDc0OiAgQ0dTX0lORF9SRUdfX1VWRF9D VFgsCjE0NDc0OiAgQ0dTX0lORF9SRUdfX0RJRFQsCjE0NDc0OiAgQ0dTX0lORF9SRUdfR0NfQ0FD LAoxNDQ3NDogIENHU19JTkRfUkVHX1NFX0NBQywKMTQ0NzQ6ICBDR1NfSU5EX1JFR19fQVVESU9f RU5EUFQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVu dW0gY2dzX3Vjb2RlX2lkIHsKMTQ0NzQ6ICBDR1NfVUNPREVfSURfU01VID0gMCwKMTQ0NzQ6ICBD R1NfVUNPREVfSURfU01VX1NLLAoxNDQ3NDogIENHU19VQ09ERV9JRF9TRE1BMCwKMTQ0NzQ6ICBD R1NfVUNPREVfSURfU0RNQTEsCjE0NDc0OiAgQ0dTX1VDT0RFX0lEX0NQX0NFLAoxNDQ3NDogIENH U19VQ09ERV9JRF9DUF9QRlAsCjE0NDc0OiAgQ0dTX1VDT0RFX0lEX0NQX01FLAoxNDQ3NDogIENH U19VQ09ERV9JRF9DUF9NRUMsCjE0NDc0OiAgQ0dTX1VDT0RFX0lEX0NQX01FQ19KVDEsCjE0NDc0 OiAgQ0dTX1VDT0RFX0lEX0NQX01FQ19KVDIsCjE0NDc0OiAgQ0dTX1VDT0RFX0lEX0dNQ09OX1JF TkcsCjE0NDc0OiAgQ0dTX1VDT0RFX0lEX1JMQ19HLAoxNDQ3NDogIENHU19VQ09ERV9JRF9TVE9S QUdFLAoxNDQ3NDogIENHU19VQ09ERV9JRF9NQVhJTVVNLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNnc19maXJtd2FyZV9pbmZvIHsKMTQ0 NzQ6ICB1aW50MTZfdCB2ZXJzaW9uOwoxNDQ3NDogIHVpbnQxNl90IGZ3X3ZlcnNpb247CjE0NDc0 OiAgdWludDE2X3QgZmVhdHVyZV92ZXJzaW9uOwoxNDQ3NDogIHVpbnQzMl90IGltYWdlX3NpemU7 CjE0NDc0OiAgdWludDY0X3QgbWNfYWRkcjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMy X3QgdWNvZGVfc3RhcnRfYWRkcmVzczsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKmtwdHI7CjE0NDc0 OiAgYm9vbCBpc19raWNrZXI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHVuc2ln bmVkIGxvbmcgY2dzX2hhbmRsZV90OwoxNDQ3NDogIyA5MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9pbmNsdWRlL2Nnc19jb21tb24uaCIKMTQ0NzQ6IHR5cGVkZWYgdWludDMyX3Qg KCpjZ3NfcmVhZF9yZWdpc3Rlcl90KShzdHJ1Y3QgY2dzX2RldmljZSAqY2dzX2RldmljZSwgdW5z aWduZWQgb2Zmc2V0KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB2b2lkICgqY2dzX3dyaXRlX3JlZ2lzdGVyX3Qp KHN0cnVjdCBjZ3NfZGV2aWNlICpjZ3NfZGV2aWNlLCB1bnNpZ25lZCBvZmZzZXQsCjE0NDc0OiAg ICAgICAgICB1aW50MzJfdCB2YWx1ZSk7CjE0NDc0OiAjIDEwOSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9pbmNsdWRlL2Nnc19jb21tb24uaCIKMTQ0NzQ6IHR5cGVkZWYgdWludDMy X3QgKCpjZ3NfcmVhZF9pbmRfcmVnaXN0ZXJfdCkoc3RydWN0IGNnc19kZXZpY2UgKmNnc19kZXZp Y2UsIGVudW0gY2dzX2luZF9yZWcgc3BhY2UsCjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBpbmRl eCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHR5cGVkZWYgdm9pZCAoKmNnc193cml0ZV9pbmRfcmVnaXN0ZXJfdCkoc3RydWN0 IGNnc19kZXZpY2UgKmNnc19kZXZpY2UsIGVudW0gY2dzX2luZF9yZWcgc3BhY2UsCjE0NDc0OiAg ICAgICB1bnNpZ25lZCBpbmRleCwgdWludDMyX3QgdmFsdWUpOwoxNDQ3NDogIyAxMzcgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9jZ3NfY29tbW9uLmgiCjE0NDc0OiB0 eXBlZGVmIGludCAoKmNnc19nZXRfZmlybXdhcmVfaW5mbykoc3RydWN0IGNnc19kZXZpY2UgKmNn c19kZXZpY2UsCjE0NDc0OiAgICAgICAgICBlbnVtIGNnc191Y29kZV9pZCB0eXBlLAoxNDQ3NDog ICAgICAgICAgc3RydWN0IGNnc19maXJtd2FyZV9pbmZvICppbmZvKTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGNnc19vcHMgewoxNDQ3NDogCjE0NDc0OiAgY2dzX3JlYWRfcmVnaXN0ZXJfdCByZWFk X3JlZ2lzdGVyOwoxNDQ3NDogIGNnc193cml0ZV9yZWdpc3Rlcl90IHdyaXRlX3JlZ2lzdGVyOwox NDQ3NDogIGNnc19yZWFkX2luZF9yZWdpc3Rlcl90IHJlYWRfaW5kX3JlZ2lzdGVyOwoxNDQ3NDog IGNnc193cml0ZV9pbmRfcmVnaXN0ZXJfdCB3cml0ZV9pbmRfcmVnaXN0ZXI7CjE0NDc0OiAKMTQ0 NzQ6ICBjZ3NfZ2V0X2Zpcm13YXJlX2luZm8gZ2V0X2Zpcm13YXJlX2luZm87CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY2dzX29zX29wczsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNn c19kZXZpY2UKMTQ0NzQ6IHsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgY2dzX29wcyAqb3BzOwoxNDQ3 NDogCjE0NDc0OiB9OwoxNDQ3NDogIyA0MCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL29zX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgNTUgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9vc190eXBlcy5oIgoxNDQ3NDogIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2ZwdS9hcGkuaCIgMQoxNDQ3NDogIyAyMiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9mcHUvYXBpLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBrZXJuZWxfZnB1X2JlZ2luKHZv aWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQga2VybmVsX2ZwdV9lbmQodm9pZCk7CjE0NDc0OiBleHRl cm4gYm9vbCBpcnFfZnB1X3VzYWJsZSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGZwcmVnc19t YXJrX2FjdGl2YXRlKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGZwcmVnc19sb2NrKHZvaWQpCjE0NDc0OiB7 CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6ICBs b2NhbF9iaF9kaXNhYmxlKCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZnByZWdzX3Vu bG9jayh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIGxvY2FsX2JoX2VuYWJsZSgpOwoxNDQ3NDogIF9f YXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZnByZWdzX2Fzc2VydF9zdGF0ZV9jb25zaXN0ZW50KHZv aWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzd2l0Y2hfZnB1X3JldHVybih2b2lkKTsKMTQ0NzQ6ICMg NjMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L2FwaS5oIgoxNDQ3NDogZXh0ZXJuIGludCBj cHVfaGFzX3hmZWF0dXJlcyh1NjQgeGZlYXR1cmVzX21hc2ssIGNvbnN0IGNoYXIgKipmZWF0dXJl X25hbWUpOwoxNDQ3NDogIyA1NiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL29zX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBlcy5oIiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIgMQoxNDQ3 NDogIyA1NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUv Zml4ZWQzMV8zMi5oIgoxNDQ3NDogc3RydWN0IGZpeGVkMzFfMzIgewoxNDQ3NDogIGxvbmcgbG9u ZyB2YWx1ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZml4ZWQzMV8zMiBk Y19maXhwdF96ZXJvID0geyAwIH07CjE0NDc0OiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpeGVkMzFf MzIgZGNfZml4cHRfZXBzaWxvbiA9IHsgMUxMIH07CjE0NDc0OiBzdGF0aWMgY29uc3Qgc3RydWN0 IGZpeGVkMzFfMzIgZGNfZml4cHRfaGFsZiA9IHsgMHg4MDAwMDAwMExMIH07CjE0NDc0OiBzdGF0 aWMgY29uc3Qgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfb25lID0geyAweDEwMDAwMDAwMExM IH07CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhw dF9waSA9IHsgMTM0OTMwMzc3MDVMTCB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBmaXhl ZDMxXzMyIGRjX2ZpeHB0X3R3b19waSA9IHsgMjY5ODYwNzU0MDlMTCB9OwoxNDQ3NDogc3RhdGlj IGNvbnN0IHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X2UgPSB7IDExNjc0OTMxNTU1TEwgfTsK MTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9sbjIgPSB7IDI5 NzcwNDQ0NzFMTCB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBmaXhlZDMxXzMyIGRjX2Zp eHB0X2xuMl9kaXZfMiA9IHsgMTQ4ODUyMjIzNkxMIH07CjE0NDc0OiAjIDg3ICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiCjE0NDc0 OiBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9mcm9tX2ZyYWN0aW9uKGxvbmcgbG9uZyBudW1l cmF0b3IsIGxvbmcgbG9uZyBkZW5vbWluYXRvcik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfZnJvbV9pbnQo aW50IGFyZykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiByZXM7CjE0NDc0OiAK MTQ0NzQ6ICByZXMudmFsdWUgPSAobG9uZyBsb25nKSBhcmcgPDwgMzI7CjE0NDc0OiAKMTQ0NzQ6 ICByZXR1cm4gcmVzOwoxNDQ3NDogfQoxNDQ3NDogIyAxMTEgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBm aXhlZDMxXzMyIGRjX2ZpeHB0X25lZyhzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpCjE0NDc0OiB7CjE0 NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgcmVzOwoxNDQ3NDogCjE0NDc0OiAgcmVzLnZhbHVlID0g LWFyZy52YWx1ZTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiByZXM7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIg ZGNfZml4cHRfYWJzKHN0cnVjdCBmaXhlZDMxXzMyIGFyZykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAo YXJnLnZhbHVlIDwgMCkKMTQ0NzQ6ICAgcmV0dXJuIGRjX2ZpeHB0X25lZyhhcmcpOwoxNDQ3NDog IGVsc2UKMTQ0NzQ6ICAgcmV0dXJuIGFyZzsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQxICIuL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIGRjX2ZpeHB0X2x0KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhl ZDMxXzMyIGFyZzIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGFyZzEudmFsdWUgPCBhcmcyLnZh bHVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgZGNfZml4cHRfbGUoc3RydWN0IGZpeGVkMzFfMzIgYXJnMSwgc3RydWN0IGZpeGVk MzFfMzIgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJnMS52YWx1ZSA8PSBhcmcyLnZh bHVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgZGNfZml4cHRfZXEoc3RydWN0IGZpeGVkMzFfMzIgYXJnMSwgc3RydWN0IGZpeGVk MzFfMzIgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJnMS52YWx1ZSA9PSBhcmcyLnZh bHVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X21pbihzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcx LCBzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcyKQoxNDQ3NDogewoxNDQ3NDogIGlmIChhcmcxLnZhbHVl IDw9IGFyZzIudmFsdWUpCjE0NDc0OiAgIHJldHVybiBhcmcxOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6 ICAgcmV0dXJuIGFyZzI7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfbWF4KHN0cnVjdCBmaXhl ZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMxXzMyIGFyZzIpCjE0NDc0OiB7CjE0NDc0OiAgaWYg KGFyZzEudmFsdWUgPD0gYXJnMi52YWx1ZSkKMTQ0NzQ6ICAgcmV0dXJuIGFyZzI7CjE0NDc0OiAg ZWxzZQoxNDQ3NDogICByZXR1cm4gYXJnMTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFf MzIgZGNfZml4cHRfY2xhbXAoCjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgYXJnLAoxNDQ3NDog IHN0cnVjdCBmaXhlZDMxXzMyIG1pbl92YWx1ZSwKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBt YXhfdmFsdWUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGRjX2ZpeHB0X2xlKGFyZywgbWluX3ZhbHVl KSkKMTQ0NzQ6ICAgcmV0dXJuIG1pbl92YWx1ZTsKMTQ0NzQ6ICBlbHNlIGlmIChkY19maXhwdF9s ZShtYXhfdmFsdWUsIGFyZykpCjE0NDc0OiAgIHJldHVybiBtYXhfdmFsdWU7CjE0NDc0OiAgZWxz ZQoxNDQ3NDogICByZXR1cm4gYXJnOwoxNDQ3NDogfQoxNDQ3NDogIyAyMTYgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X3NobChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcsIHVu c2lnbmVkIGNoYXIgc2hpZnQpCjE0NDc0OiB7CjE0NDc0OiAgKHsgaW50IF9fcmV0X3dhcm5fb24g PSAhISghKCgoYXJnLnZhbHVlID49IDApICYmIChhcmcudmFsdWUgPD0gKChsb25nIGxvbmcpKH4w VUxMID4+IDEpKSA+PiBzaGlmdCkpIHx8ICgoYXJnLnZhbHVlIDwgMCkgJiYgKGFyZy52YWx1ZSA+ PSB+KCgobG9uZyBsb25nKSh+MFVMTCA+PiAxKSkgPj4gc2hpZnQpKSkpKTsgaWYgKF9fYnVpbHRp bl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZv bGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVn X3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2Vu dHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50 cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29y ZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNl Y3Rpb24iIDogOiAiaSIgKCJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2lu Y2x1ZGUvZml4ZWQzMV8zMi5oIiksICJpIiAoMjE4KSwgImkiICgoMSA8PCAwKXwoKCg5KSA8PCA4 KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNt IHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0 IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgzOCkpOyB9 KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9 KQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOwoxNDQ3NDogCjE0NDc0OiAgYXJnLnZhbHVlID0gYXJnLnZhbHVlIDw8IHNo aWZ0OwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGFyZzsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhw dF9zaHIoc3RydWN0IGZpeGVkMzFfMzIgYXJnLCB1bnNpZ25lZCBjaGFyIHNoaWZ0KQoxNDQ3NDog ewoxNDQ3NDogIGJvb2wgbmVnYXRpdmUgPSBhcmcudmFsdWUgPCAwOwoxNDQ3NDogCjE0NDc0OiAg aWYgKG5lZ2F0aXZlKQoxNDQ3NDogICBhcmcudmFsdWUgPSAtYXJnLnZhbHVlOwoxNDQ3NDogIGFy Zy52YWx1ZSA9IGFyZy52YWx1ZSA+PiBzaGlmdDsKMTQ0NzQ6ICBpZiAobmVnYXRpdmUpCjE0NDc0 OiAgIGFyZy52YWx1ZSA9IC1hcmcudmFsdWU7CjE0NDc0OiAgcmV0dXJuIGFyZzsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgMjUxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5j bHVkZS9maXhlZDMxXzMyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9hZGQo c3RydWN0IGZpeGVkMzFfMzIgYXJnMSwgc3RydWN0IGZpeGVkMzFfMzIgYXJnMikKMTQ0NzQ6IHsK MTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiByZXM7CjE0NDc0OiAKMTQ0NzQ6ICAoeyBpbnQgX19y ZXRfd2Fybl9vbiA9ICEhKCEoKChhcmcxLnZhbHVlID49IDApICYmICgoKGxvbmcgbG9uZykofjBV TEwgPj4gMSkpIC0gYXJnMS52YWx1ZSA+PSBhcmcyLnZhbHVlKSkgfHwgKChhcmcxLnZhbHVlIDwg MCkgJiYgKCgtKChsb25nIGxvbmcpKH4wVUxMID4+IDEpKSAtIDEpIC0gYXJnMS52YWx1ZSA8PSBh cmcyLnZhbHVlKSkpKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDAp KSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgw YiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25n ICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAi ICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQj IGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xu IiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIiksICJpIiAoMjU1 KSwgImkiICgoMSA8PCAwKXwoKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2Vu dHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2Vj dGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNl Y3Rpb25cblx0IiA6IDogImkiICgzOSkpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBl Y3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogCjE0NDc0 OiAgcmVzLnZhbHVlID0gYXJnMS52YWx1ZSArIGFyZzIudmFsdWU7CjE0NDc0OiAKMTQ0NzQ6ICBy ZXR1cm4gcmVzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X2FkZF9pbnQoc3RydWN0IGZpeGVk MzFfMzIgYXJnMSwgaW50IGFyZzIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRjX2ZpeHB0X2Fk ZChhcmcxLCBkY19maXhwdF9mcm9tX2ludChhcmcyKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4 cHRfc3ViKHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMxXzMyIGFyZzIpCjE0 NDc0OiB7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgcmVzOwoxNDQ3NDogCjE0NDc0OiAgKHsg aW50IF9fcmV0X3dhcm5fb24gPSAhISghKCgoYXJnMi52YWx1ZSA+PSAwKSAmJiAoKC0oKGxvbmcg bG9uZykofjBVTEwgPj4gMSkpIC0gMSkgKyBhcmcyLnZhbHVlIDw9IGFyZzEudmFsdWUpKSB8fCAo KGFyZzIudmFsdWUgPCAwKSAmJiAoKChsb25nIGxvbmcpKH4wVUxMID4+IDEpKSArIGFyZzIudmFs dWUgPj0gYXJnMS52YWx1ZSkpKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5f b24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4 MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQi ICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAi LmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVj MSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6 ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIpLCAi aSIgKDI4MCksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0 IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIu cHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIg Ii5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoNDApKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0 aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSkKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKMTQ0NzQ6 IAoxNDQ3NDogIHJlcy52YWx1ZSA9IGFyZzEudmFsdWUgLSBhcmcyLnZhbHVlOwoxNDQ3NDogCjE0 NDc0OiAgcmV0dXJuIHJlczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9zdWJfaW50KHN0cnVj dCBmaXhlZDMxXzMyIGFyZzEsIGludCBhcmcyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkY19m aXhwdF9zdWIoYXJnMSwgZGNfZml4cHRfZnJvbV9pbnQoYXJnMikpOwoxNDQ3NDogfQoxNDQ3NDog IyAzMDcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2Zp eGVkMzFfMzIuaCIKMTQ0NzQ6IHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X211bChzdHJ1Y3Qg Zml4ZWQzMV8zMiBhcmcxLCBzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcyKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBmaXhlZDMxXzMy IGRjX2ZpeHB0X211bF9pbnQoc3RydWN0IGZpeGVkMzFfMzIgYXJnMSwgaW50IGFyZzIpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGRjX2ZpeHB0X211bChhcmcxLCBkY19maXhwdF9mcm9tX2ludChh cmcyKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfc3FyKHN0cnVjdCBmaXhlZDMxXzMyIGFy Zyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IGZpeGVkMzFfMzIgZGNfZml4cHRfZGl2X2ludChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcxLCBsb25n IGxvbmcgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZGNfZml4cHRfZnJvbV9mcmFjdGlv bihhcmcxLnZhbHVlLCBkY19maXhwdF9mcm9tX2ludChhcmcyKS52YWx1ZSk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVk MzFfMzIgZGNfZml4cHRfZGl2KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMx XzMyIGFyZzIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRjX2ZpeHB0X2Zyb21fZnJhY3Rpb24o YXJnMS52YWx1ZSwgYXJnMi52YWx1ZSk7CjE0NDc0OiB9CjE0NDc0OiAjIDM1NSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgoxNDQ3 NDogc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfcmVjaXAoc3RydWN0IGZpeGVkMzFfMzIgYXJn KTsKMTQ0NzQ6ICMgMzcwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv aW5jbHVkZS9maXhlZDMxXzMyLmgiCjE0NDc0OiBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9z aW5jKHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7CjE0NDc0OiAjIDM4MCAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgoxNDQ3NDogc3Ry dWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfc2luKHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7CjE0NDc0 OiAjIDM5MiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUv Zml4ZWQzMV8zMi5oIgoxNDQ3NDogc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfY29zKHN0cnVj dCBmaXhlZDMxXzMyIGFyZyk7CjE0NDc0OiAjIDQwNiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgoxNDQ3NDogc3RydWN0IGZpeGVk MzFfMzIgZGNfZml4cHRfZXhwKHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7CjE0NDc0OiAjIDQxOCAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8z Mi5oIgoxNDQ3NDogc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfbG9nKHN0cnVjdCBmaXhlZDMx XzMyIGFyZyk7CjE0NDc0OiAjIDQzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNf Zml4cHRfcG93KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMxXzMyIGFyZzIp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRjX2ZpeHB0X2V4cCgKMTQ0NzQ6ICAgZGNfZml4cHRf bXVsKAoxNDQ3NDogICAgZGNfZml4cHRfbG9nKGFyZzEpLAoxNDQ3NDogICAgYXJnMikpOwoxNDQ3 NDogfQoxNDQ3NDogIyA0NDkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkY19maXhwdF9mbG9vcihzdHJ1Y3Qg Zml4ZWQzMV8zMiBhcmcpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIGFyZ192 YWx1ZSA9IGFyZy52YWx1ZSA+IDAgPyBhcmcudmFsdWUgOiAtYXJnLnZhbHVlOwoxNDQ3NDogCjE0 NDc0OiAgaWYgKGFyZy52YWx1ZSA+PSAwKQoxNDQ3NDogICByZXR1cm4gKGludCkoYXJnX3ZhbHVl ID4+IDMyKTsKMTQ0NzQ6ICBlbHNlCjE0NDc0OiAgIHJldHVybiAtKGludCkoYXJnX3ZhbHVlID4+ IDMyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgZGNfZml4cHRfcm91bmQoc3RydWN0IGZpeGVkMzFfMzIgYXJnKQoxNDQ3NDogewox NDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyBhcmdfdmFsdWUgPSBhcmcudmFsdWUgPiAwID8gYXJn LnZhbHVlIDogLWFyZy52YWx1ZTsKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0IGxvbmcgbG9uZyBzdW1t YW5kID0gZGNfZml4cHRfaGFsZi52YWx1ZTsKMTQ0NzQ6IAoxNDQ3NDogICh7IGludCBfX3JldF93 YXJuX29uID0gISEoISgoKGxvbmcgbG9uZykofjBVTEwgPj4gMSkpIC0gKGxvbmcgbG9uZylhcmdf dmFsdWUgPj0gc3VtbWFuZCkpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29u KSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBm LCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAi LmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5s b25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEi ICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZs YWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiKSwgImki ICg0NjkpLCAiaSIgKCgxIDw8IDApfCgoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBi dWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1 c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIu cG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDQxKSk7IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGlu X2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwoxNDQ3NDogCjE0NDc0OiAgYXJnX3Zh bHVlICs9IHN1bW1hbmQ7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoYXJnLnZhbHVlID49IDApCjE0NDc0 OiAgIHJldHVybiAoaW50KShhcmdfdmFsdWUgPj4gMzIpOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAg cmV0dXJuIC0oaW50KShhcmdfdmFsdWUgPj4gMzIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkY19maXhwdF9jZWlsKHN0cnVjdCBm aXhlZDMxXzMyIGFyZykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxvbmcgYXJnX3Zh bHVlID0gYXJnLnZhbHVlID4gMCA/IGFyZy52YWx1ZSA6IC1hcmcudmFsdWU7CjE0NDc0OiAKMTQ0 NzQ6ICBjb25zdCBsb25nIGxvbmcgc3VtbWFuZCA9IGRjX2ZpeHB0X29uZS52YWx1ZSAtCjE0NDc0 OiAgIGRjX2ZpeHB0X2Vwc2lsb24udmFsdWU7CjE0NDc0OiAKMTQ0NzQ6ICAoeyBpbnQgX19yZXRf d2Fybl9vbiA9ICEhKCEoKChsb25nIGxvbmcpKH4wVUxMID4+IDEpKSAtIChsb25nIGxvbmcpYXJn X3ZhbHVlID49IHN1bW1hbmQpKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9v biksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgw ZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIg Ii5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIu bG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMx IiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5Ojpm bGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIiksICJp IiAoNDkwKSwgImkiICgoMSA8PCAwKXwoKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3Qg YnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5w dXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAi LnBvcHNlY3Rpb25cblx0IiA6IDogImkiICg0MikpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRp bl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6IAoxNDQ3NDogIGFyZ192 YWx1ZSArPSBzdW1tYW5kOwoxNDQ3NDogCjE0NDc0OiAgaWYgKGFyZy52YWx1ZSA+PSAwKQoxNDQ3 NDogICByZXR1cm4gKGludCkoYXJnX3ZhbHVlID4+IDMyKTsKMTQ0NzQ6ICBlbHNlCjE0NDc0OiAg IHJldHVybiAtKGludCkoYXJnX3ZhbHVlID4+IDMyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdW5zaWduZWQg aW50IGRjX2ZpeHB0X3U0ZDE5KHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7CjE0NDc0OiAKMTQ0NzQ6 IHVuc2lnbmVkIGludCBkY19maXhwdF91M2QxOShzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpOwoxNDQ3 NDogCjE0NDc0OiB1bnNpZ25lZCBpbnQgZGNfZml4cHRfdTJkMTkoc3RydWN0IGZpeGVkMzFfMzIg YXJnKTsKMTQ0NzQ6IAoxNDQ3NDogdW5zaWduZWQgaW50IGRjX2ZpeHB0X3UwZDE5KHN0cnVjdCBm aXhlZDMxXzMyIGFyZyk7CjE0NDc0OiAKMTQ0NzQ6IHVuc2lnbmVkIGludCBkY19maXhwdF9jbGFt cF91MGQxNChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpOwoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBp bnQgZGNfZml4cHRfY2xhbXBfdTBkMTAoc3RydWN0IGZpeGVkMzFfMzIgYXJnKTsKMTQ0NzQ6IAox NDQ3NDogaW50IGRjX2ZpeHB0X3M0ZDE5KHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X3RydW5jYXRlKHN0cnVjdCBmaXhlZDMx XzMyIGFyZywgdW5zaWduZWQgaW50IGZyYWNfYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBib29sIG5l Z2F0aXZlID0gYXJnLnZhbHVlIDwgMDsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChmcmFjX2JpdHMgPj0g MzIpIHsKMTQ0NzQ6ICAgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAhISghKGZyYWNfYml0cyA9PSAz MikpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8g eyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIu cHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIg LSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAt IDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5 OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcg MmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiKSwgImkiICg1MjUpLCAiaSIgKCgx IDw8IDApfCgoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0g d2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNj YXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQi IDogOiAiaSIgKDQzKSk7IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3Jl dF93YXJuX29uKSwgMCk7IH0pOwoxNDQ3NDogICByZXR1cm4gYXJnOwoxNDQ3NDogIH0KMTQ0NzQ6 IAoxNDQ3NDogIGlmIChuZWdhdGl2ZSkKMTQ0NzQ6ICAgYXJnLnZhbHVlID0gLWFyZy52YWx1ZTsK MTQ0NzQ6ICBhcmcudmFsdWUgJj0gKH4wTEwpIDw8ICgzMiAtIGZyYWNfYml0cyk7CjE0NDc0OiAg aWYgKG5lZ2F0aXZlKQoxNDQ3NDogICBhcmcudmFsdWUgPSAtYXJnLnZhbHVlOwoxNDQ3NDogIHJl dHVybiBhcmc7CjE0NDc0OiB9CjE0NDc0OiAjIDM0ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaCIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaXJxX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMzEg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pcnFfdHlwZXMuaCIK MTQ0NzQ6IHN0cnVjdCBkY19jb250ZXh0OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHZvaWQgKCpp bnRlcnJ1cHRfaGFuZGxlcikodm9pZCAqKTsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB2b2lkICpp cnFfaGFuZGxlcl9pZHg7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVu dW0gZGNfaXJxX3NvdXJjZSB7CjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0lOVkFMSUQg PSAwLAoxNDQ3NDogCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9IUEQxLAoxNDQ3NDogIERDX0lSUV9T T1VSQ0VfSFBEMiwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0hQRDMsCjE0NDc0OiAgRENfSVJRX1NP VVJDRV9IUEQ0LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfSFBENSwKMTQ0NzQ6ICBEQ19JUlFfU09V UkNFX0hQRDYsCjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0hQRDFSWCwKMTQ0NzQ6ICBE Q19JUlFfU09VUkNFX0hQRDJSWCwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0hQRDNSWCwKMTQ0NzQ6 ICBEQ19JUlFfU09VUkNFX0hQRDRSWCwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0hQRDVSWCwKMTQ0 NzQ6ICBEQ19JUlFfU09VUkNFX0hQRDZSWCwKMTQ0NzQ6IAoxNDQ3NDogIERDX0lSUV9TT1VSQ0Vf STJDX0REQzEsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9JMkNfRERDMiwKMTQ0NzQ6ICBEQ19JUlFf U09VUkNFX0kyQ19EREMzLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfSTJDX0REQzQsCjE0NDc0OiAg RENfSVJRX1NPVVJDRV9JMkNfRERDNSwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0kyQ19EREM2LAox NDQ3NDogCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EUFNJTksxLAoxNDQ3NDogIERDX0lSUV9TT1VS Q0VfRFBTSU5LMiwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0RQU0lOSzMsCjE0NDc0OiAgRENfSVJR X1NPVVJDRV9EUFNJTks0LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfRFBTSU5LNSwKMTQ0NzQ6ICBE Q19JUlFfU09VUkNFX0RQU0lOSzYsCjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX1RJTUVS LAoxNDQ3NDogCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9QRkxJUF9GSVJTVCwKMTQ0NzQ6ICBEQ19J UlFfU09VUkNFX1BGTElQMSA9IERDX0lSUV9TT1VSQ0VfUEZMSVBfRklSU1QsCjE0NDc0OiAgRENf SVJRX1NPVVJDRV9QRkxJUDIsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9QRkxJUDMsCjE0NDc0OiAg RENfSVJRX1NPVVJDRV9QRkxJUDQsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9QRkxJUDUsCjE0NDc0 OiAgRENfSVJRX1NPVVJDRV9QRkxJUDYsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9QRkxJUF9VTkRF UkxBWTAsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9QRkxJUF9MQVNUID0gRENfSVJRX1NPVVJDRV9Q RkxJUF9VTkRFUkxBWTAsCjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0dQSU9QQUQwLAox NDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDEsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9HUElP UEFEMiwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0dQSU9QQUQzLAoxNDQ3NDogIERDX0lSUV9TT1VS Q0VfR1BJT1BBRDQsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9HUElPUEFENSwKMTQ0NzQ6ICBEQ19J UlFfU09VUkNFX0dQSU9QQUQ2LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDcsCjE0NDc0 OiAgRENfSVJRX1NPVVJDRV9HUElPUEFEOCwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0dQSU9QQUQ5 LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDEwLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0Vf R1BJT1BBRDExLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDEyLAoxNDQ3NDogIERDX0lS UV9TT1VSQ0VfR1BJT1BBRDEzLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDE0LAoxNDQ3 NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDE1LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BB RDE2LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDE3LAoxNDQ3NDogIERDX0lSUV9TT1VS Q0VfR1BJT1BBRDE4LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDE5LAoxNDQ3NDogIERD X0lSUV9TT1VSQ0VfR1BJT1BBRDIwLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDIxLAox NDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDIyLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJ T1BBRDIzLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI0LAoxNDQ3NDogIERDX0lSUV9T T1VSQ0VfR1BJT1BBRDI1LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI2LAoxNDQ3NDog IERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI3LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI4 LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI5LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0Vf R1BJT1BBRDMwLAoxNDQ3NDogCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EQzFVTkRFUkZMT1csCjE0 NDc0OiAgRENfSVJRX1NPVVJDRV9EQzJVTkRFUkZMT1csCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9E QzNVTkRFUkZMT1csCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EQzRVTkRFUkZMT1csCjE0NDc0OiAg RENfSVJRX1NPVVJDRV9EQzVVTkRFUkZMT1csCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EQzZVTkRF UkZMT1csCjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0RNQ1VfU0NQLAoxNDQ3NDogIERD X0lSUV9TT1VSQ0VfVkJJT1NfU1csCjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX1ZVUERB VEUxLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfVlVQREFURTIsCjE0NDc0OiAgRENfSVJRX1NPVVJD RV9WVVBEQVRFMywKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX1ZVUERBVEU0LAoxNDQ3NDogIERDX0lS UV9TT1VSQ0VfVlVQREFURTUsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9WVVBEQVRFNiwKMTQ0NzQ6 IAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfVkJMQU5LMSwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX1ZC TEFOSzIsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9WQkxBTkszLAoxNDQ3NDogIERDX0lSUV9TT1VS Q0VfVkJMQU5LNCwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX1ZCTEFOSzUsCjE0NDc0OiAgRENfSVJR X1NPVVJDRV9WQkxBTks2LAoxNDQ3NDogCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EQzFfVkxJTkUw LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfREMyX1ZMSU5FMCwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNF X0RDM19WTElORTAsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EQzRfVkxJTkUwLAoxNDQ3NDogIERD X0lSUV9TT1VSQ0VfREM1X1ZMSU5FMCwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0RDNl9WTElORTAs CjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0RDMV9WTElORTEsCjE0NDc0OiAgRENfSVJR X1NPVVJDRV9EQzJfVkxJTkUxLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfREMzX1ZMSU5FMSwKMTQ0 NzQ6ICBEQ19JUlFfU09VUkNFX0RDNF9WTElORTEsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EQzVf VkxJTkUxLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfREM2X1ZMSU5FMSwKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgREFMX0lSUV9TT1VSQ0VTX05VTUJFUgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBpcnFfdHlwZQoxNDQ3NDogewoxNDQ3NDogIElSUV9UWVBFX1BGTElQID0gRENfSVJRX1NP VVJDRV9QRkxJUDEsCjE0NDc0OiAgSVJRX1RZUEVfVlVQREFURSA9IERDX0lSUV9TT1VSQ0VfVlVQ REFURTEsCjE0NDc0OiAgSVJRX1RZUEVfVkJMQU5LID0gRENfSVJRX1NPVVJDRV9WQkxBTksxLAox NDQ3NDogfTsKMTQ0NzQ6ICMgMTczICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvaXJxX3R5cGVzLmgiCjE0NDc0OiBlbnVtIGRjX2ludGVycnVwdF9jb250ZXh0IHsK MTQ0NzQ6ICBJTlRFUlJVUFRfTE9XX0lSUV9DT05URVhUID0gMCwKMTQ0NzQ6ICBJTlRFUlJVUFRf SElHSF9JUlFfQ09OVEVYVCwKMTQ0NzQ6ICBJTlRFUlJVUFRfQ09OVEVYVF9OVU1CRVIKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfaW50ZXJydXB0X3Bvcmxhcml0eSB7CjE0NDc0OiAg SU5URVJSVVBUX1BPTEFSSVRZX0RFRkFVTFQgPSAwLAoxNDQ3NDogIElOVEVSUlVQVF9QT0xBUklU WV9MT1cgPSBJTlRFUlJVUFRfUE9MQVJJVFlfREVGQVVMVCwKMTQ0NzQ6ICBJTlRFUlJVUFRfUE9M QVJJVFlfSElHSCwKMTQ0NzQ6ICBJTlRFUlJVUFRfUE9MQVJJVFlfQk9USAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBkY190aW1lcl9pbnRlcnJ1cHRfcGFyYW1zIHsKMTQ0NzQ6ICB1aW50MzJfdCBtaWNyb19zZWNf aW50ZXJ2YWw7CjE0NDc0OiAgZW51bSBkY19pbnRlcnJ1cHRfY29udGV4dCBpbnRfY29udGV4dDsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19pbnRlcnJ1cHRfcGFyYW1zIHsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRjX2ludGVycnVwdF9wb3JsYXJpdHkg cmVxdWVzdGVkX3BvbGFyaXR5OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgZW51bSBkY19pbnRlcnJ1cHRfcG9ybGFyaXR5IGN1cnJlbnRfcG9sYXJpdHk7CjE0NDc0OiAg ZW51bSBkY19pcnFfc291cmNlIGlycV9zb3VyY2U7CjE0NDc0OiAgZW51bSBkY19pbnRlcnJ1cHRf Y29udGV4dCBpbnRfY29udGV4dDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDM1ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaCIgMgoxNDQ3NDogIyAxICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfZHBfdHlwZXMuaCIg MQoxNDQ3NDogIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RjX2RwX3R5cGVzLmgiCjE0NDc0OiBlbnVtIGRjX2xhbmVfY291bnQgewoxNDQ3NDogIExBTkVf Q09VTlRfVU5LTk9XTiA9IDAsCjE0NDc0OiAgTEFORV9DT1VOVF9PTkUgPSAxLAoxNDQ3NDogIExB TkVfQ09VTlRfVFdPID0gMiwKMTQ0NzQ6ICBMQU5FX0NPVU5UX0ZPVVIgPSA0LAoxNDQ3NDogIExB TkVfQ09VTlRfRUlHSFQgPSA4LAoxNDQ3NDogIExBTkVfQ09VTlRfRFBfTUFYID0gTEFORV9DT1VO VF9GT1VSCjE0NDc0OiB9OwoxNDQ3NDogIyA0NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2RjX2RwX3R5cGVzLmgiCjE0NDc0OiBlbnVtIGRjX2xpbmtfcmF0ZSB7 CjE0NDc0OiAgTElOS19SQVRFX1VOS05PV04gPSAwLAoxNDQ3NDogIExJTktfUkFURV9MT1cgPSAw eDA2LAoxNDQ3NDogIExJTktfUkFURV9SQVRFXzIgPSAweDA4LAoxNDQ3NDogIExJTktfUkFURV9S QVRFXzMgPSAweDA5LAoxNDQ3NDogIExJTktfUkFURV9ISUdIID0gMHgwQSwKMTQ0NzQ6ICBMSU5L X1JBVEVfUkJSMiA9IDB4MEMsCjE0NDc0OiAgTElOS19SQVRFX1JBVEVfNiA9IDB4MTAsCjE0NDc0 OiAgTElOS19SQVRFX0hJR0gyID0gMHgxNCwKMTQ0NzQ6ICBMSU5LX1JBVEVfSElHSDMgPSAweDFF CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2xpbmtfc3ByZWFkIHsKMTQ0NzQ6ICBM SU5LX1NQUkVBRF9ESVNBQkxFRCA9IDB4MDAsCjE0NDc0OiAKMTQ0NzQ6ICBMSU5LX1NQUkVBRF8w NV9ET1dOU1BSRUFEXzMwS0haID0gMHgxMCwKMTQ0NzQ6IAoxNDQ3NDogIExJTktfU1BSRUFEXzA1 X0RPV05TUFJFQURfMzNLSFogPSAweDExCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRj X3ZvbHRhZ2Vfc3dpbmcgewoxNDQ3NDogIFZPTFRBR0VfU1dJTkdfTEVWRUwwID0gMCwKMTQ0NzQ6 ICBWT0xUQUdFX1NXSU5HX0xFVkVMMSwKMTQ0NzQ6ICBWT0xUQUdFX1NXSU5HX0xFVkVMMiwKMTQ0 NzQ6ICBWT0xUQUdFX1NXSU5HX0xFVkVMMywKMTQ0NzQ6ICBWT0xUQUdFX1NXSU5HX01BWF9MRVZF TCA9IFZPTFRBR0VfU1dJTkdfTEVWRUwzCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRj X3ByZV9lbXBoYXNpcyB7CjE0NDc0OiAgUFJFX0VNUEhBU0lTX0RJU0FCTEVEID0gMCwKMTQ0NzQ6 ICBQUkVfRU1QSEFTSVNfTEVWRUwxLAoxNDQ3NDogIFBSRV9FTVBIQVNJU19MRVZFTDIsCjE0NDc0 OiAgUFJFX0VNUEhBU0lTX0xFVkVMMywKMTQ0NzQ6ICBQUkVfRU1QSEFTSVNfTUFYX0xFVkVMID0g UFJFX0VNUEhBU0lTX0xFVkVMMwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGVudW0gZGNfcG9zdF9jdXJzb3IyIHsKMTQ0NzQ6ICBQT1NUX0NVUlNPUjJfRElTQUJMRUQg PSAwLAoxNDQ3NDogIFBPU1RfQ1VSU09SMl9MRVZFTDEsCjE0NDc0OiAgUE9TVF9DVVJTT1IyX0xF VkVMMiwKMTQ0NzQ6ICBQT1NUX0NVUlNPUjJfTEVWRUwzLAoxNDQ3NDogIFBPU1RfQ1VSU09SMl9N QVhfTEVWRUwgPSBQT1NUX0NVUlNPUjJfTEVWRUwzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBkY19kcF90cmFpbmluZ19wYXR0ZXJuIHsKMTQ0NzQ6ICBEUF9UUkFJTklOR19QQVRURVJO X1NFUVVFTkNFXzEgPSAwLAoxNDQ3NDogIERQX1RSQUlOSU5HX1BBVFRFUk5fU0VRVUVOQ0VfMiwK MTQ0NzQ6ICBEUF9UUkFJTklOR19QQVRURVJOX1NFUVVFTkNFXzMsCjE0NDc0OiAgRFBfVFJBSU5J TkdfUEFUVEVSTl9TRVFVRU5DRV80LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRj X2xpbmtfc2V0dGluZ3MgewoxNDQ3NDogIGVudW0gZGNfbGFuZV9jb3VudCBsYW5lX2NvdW50Owox NDQ3NDogIGVudW0gZGNfbGlua19yYXRlIGxpbmtfcmF0ZTsKMTQ0NzQ6ICBlbnVtIGRjX2xpbmtf c3ByZWFkIGxpbmtfc3ByZWFkOwoxNDQ3NDogIGJvb2wgdXNlX2xpbmtfcmF0ZV9zZXQ7CjE0NDc0 OiAgdWludDhfdCBsaW5rX3JhdGVfc2V0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGRjX2xhbmVfc2V0dGluZ3MgewoxNDQ3NDogIGVudW0gZGNfdm9sdGFnZV9zd2luZyBWT0xUQUdF X1NXSU5HOwoxNDQ3NDogIGVudW0gZGNfcHJlX2VtcGhhc2lzIFBSRV9FTVBIQVNJUzsKMTQ0NzQ6 ICBlbnVtIGRjX3Bvc3RfY3Vyc29yMiBQT1NUX0NVUlNPUjI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZGNfbGlua190cmFpbmluZ19zZXR0aW5ncyB7CjE0NDc0OiAgc3RydWN0IGRj X2xpbmtfc2V0dGluZ3MgbGluazsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfbGFuZV9zZXR0aW5ncyBsYW5l X3NldHRpbmdzW0xBTkVfQ09VTlRfRFBfTUFYXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBkY19saW5rX3RyYWluaW5nX292ZXJyaWRlcyB7CjE0NDc0OiAgZW51bSBkY192b2x0YWdl X3N3aW5nICp2b2x0YWdlX3N3aW5nOwoxNDQ3NDogIGVudW0gZGNfcHJlX2VtcGhhc2lzICpwcmVf ZW1waGFzaXM7CjE0NDc0OiAgZW51bSBkY19wb3N0X2N1cnNvcjIgKnBvc3RfY3Vyc29yMjsKMTQ0 NzQ6IAoxNDQ3NDogIHVpbnQxNl90ICpjcl9wYXR0ZXJuX3RpbWU7CjE0NDc0OiAgdWludDE2X3Qg KmVxX3BhdHRlcm5fdGltZTsKMTQ0NzQ6ICBlbnVtIGRjX2RwX3RyYWluaW5nX3BhdHRlcm4gKnBh dHRlcm5fZm9yX2VxOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBkY19saW5rX3NwcmVhZCAqZG93bnNw cmVhZDsKMTQ0NzQ6ICBib29sICphbHRlcm5hdGVfc2NyYW1ibGVyX3Jlc2V0OwoxNDQ3NDogIGJv b2wgKmVuaGFuY2VkX2ZyYW1pbmc7CjE0NDc0OiAgYm9vbCAqbXN0X2VuYWJsZTsKMTQ0NzQ6ICBi b29sICpmZWNfZW5hYmxlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZHBjZF9yZXYg ewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgTUlOT1I6NDsKMTQ0NzQ6ICAgdWlu dDhfdCBNQUpPUjo0OwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIG1heF9sYW5lX2NvdW50IHsKMTQ0NzQ6ICBzdHJ1Y3Qg ewoxNDQ3NDogICB1aW50OF90IE1BWF9MQU5FX0NPVU5UOjU7CjE0NDc0OiAgIHVpbnQ4X3QgUE9T VF9MVF9BREpfUkVRX1NVUFBPUlRFRDoxOwoxNDQ3NDogICB1aW50OF90IFRQUzNfU1VQUE9SVEVE OjE7CjE0NDc0OiAgIHVpbnQ4X3QgRU5IQU5DRURfRlJBTUVfQ0FQOjE7CjE0NDc0OiAgfSBiaXRz OwoxNDQ3NDogIHVpbnQ4X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gbWF4 X2Rvd25fc3ByZWFkIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IE1BWF9ET1dO X1NQUkVBRDoxOwoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEOjU7CjE0NDc0OiAgIHVpbnQ4X3Qg Tk9fQVVYX0hBTkRTSEFLRV9MSU5LX1RSQUlOSU5HOjE7CjE0NDc0OiAgIHVpbnQ4X3QgVFBTNF9T VVBQT1JURUQ6MTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBtc3RtX2NhcCB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6 ICAgdWludDhfdCBNU1RfQ0FQOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQ6NzsKMTQ0NzQ6 ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1 bmlvbiBsYW5lX2NvdW50X3NldCB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDhfdCBM QU5FX0NPVU5UX1NFVDo1OwoxNDQ3NDogICB1aW50OF90IFBPU1RfTFRfQURKX1JFUV9HUkFOVEVE OjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQ6MTsKMTQ0NzQ6ICAgdWludDhfdCBFTkhBTkNF RF9GUkFNSU5HOjE7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVpbnQ4X3QgcmF3OwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gbGFuZV9zdGF0dXMgewoxNDQ3NDogIHN0cnVjdCB7CjE0 NDc0OiAgIHVpbnQ4X3QgQ1JfRE9ORV8wOjE7CjE0NDc0OiAgIHVpbnQ4X3QgQ0hBTk5FTF9FUV9E T05FXzA6MTsKMTQ0NzQ6ICAgdWludDhfdCBTWU1CT0xfTE9DS0VEXzA6MTsKMTQ0NzQ6ICAgdWlu dDhfdCBSRVNFUlZFRDA6MTsKMTQ0NzQ6ICAgdWludDhfdCBDUl9ET05FXzE6MTsKMTQ0NzQ6ICAg dWludDhfdCBDSEFOTkVMX0VRX0RPTkVfMToxOwoxNDQ3NDogICB1aW50OF90IFNZTUJPTF9MT0NL RURfMToxOwoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEXzE6MTsKMTQ0NzQ6ICB9IGJpdHM7CjE0 NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkZXZpY2Vf c2VydmljZV9pcnEgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgUkVNT1RFX0NP TlRST0xfQ01EX1BFTkRJTkc6MTsKMTQ0NzQ6ICAgdWludDhfdCBBVVRPTUFURURfVEVTVDoxOwox NDQ3NDogICB1aW50OF90IENQX0lSUToxOwoxNDQ3NDogICB1aW50OF90IE1DQ1NfSVJROjE7CjE0 NDc0OiAgIHVpbnQ4X3QgRE9XTl9SRVBfTVNHX1JEWToxOwoxNDQ3NDogICB1aW50OF90IFVQX1JF UV9NU0dfUkRZOjE7CjE0NDc0OiAgIHVpbnQ4X3QgU0lOS19TUEVDSUZJQzoxOwoxNDQ3NDogICB1 aW50OF90IHJlc2VydmVkOjE7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVpbnQ4X3QgcmF3Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gc2lua19jb3VudCB7CjE0NDc0OiAgc3RydWN0 IHsKMTQ0NzQ6ICAgdWludDhfdCBTSU5LX0NPVU5UOjY7CjE0NDc0OiAgIHVpbnQ4X3QgQ1BSRUFE WToxOwoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEOjE7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDog IHVpbnQ4X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gbGFuZV9hbGlnbl9z dGF0dXNfdXBkYXRlZCB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDhfdCBJTlRFUkxB TkVfQUxJR05fRE9ORToxOwoxNDQ3NDogICB1aW50OF90IFBPU1RfTFRfQURKX1JFUV9JTl9QUk9H UkVTUzoxOwoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEOjQ7CjE0NDc0OiAgIHVpbnQ4X3QgRE9X TlNUUkVBTV9QT1JUX1NUQVRVU19DSEFOR0VEOjE7CjE0NDc0OiAgIHVpbnQ4X3QgTElOS19TVEFU VVNfVVBEQVRFRDoxOwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGxhbmVfYWRqdXN0IHsKMTQ0NzQ6ICBzdHJ1Y3Qgewox NDQ3NDogICB1aW50OF90IFZPTFRBR0VfU1dJTkdfTEFORToyOwoxNDQ3NDogICB1aW50OF90IFBS RV9FTVBIQVNJU19MQU5FOjI7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQ6NDsKMTQ0NzQ6ICB9 IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlv biBkcGNkX3RyYWluaW5nX3BhdHRlcm4gewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4 X3QgVFJBSU5JTkdfUEFUVEVSTl9TRVQ6NDsKMTQ0NzQ6ICAgdWludDhfdCBSRUNPVkVSRURfQ0xP Q0tfT1VUX0VOOjE7CjE0NDc0OiAgIHVpbnQ4X3QgU0NSQU1CTElOR19ESVNBQkxFOjE7CjE0NDc0 OiAgIHVpbnQ4X3QgU1lNQk9MX0VSUk9SX0NPVU5UX1NFTDoyOwoxNDQ3NDogIH0gdjFfNDsKMTQ0 NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IFRSQUlOSU5HX1BBVFRFUk5fU0VUOjI7CjE0 NDc0OiAgIHVpbnQ4X3QgTElOS19RVUFMX1BBVFRFUk5fU0VUOjI7CjE0NDc0OiAgIHVpbnQ4X3Qg UkVTRVJWRUQ6NDsKMTQ0NzQ6ICB9IHYxXzM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkcGNkX3RyYWlu aW5nX2xhbmUgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgVk9MVEFHRV9TV0lO R19TRVQ6MjsKMTQ0NzQ6ICAgdWludDhfdCBNQVhfU1dJTkdfUkVBQ0hFRDoxOwoxNDQ3NDogICB1 aW50OF90IFBSRV9FTVBIQVNJU19TRVQ6MjsKMTQ0NzQ6ICAgdWludDhfdCBNQVhfUFJFX0VNUEhB U0lTX1JFQUNIRUQ6MTsKMTQ0NzQ6ICAgdWludDhfdCBSRVNFUlZFRDoyOwoxNDQ3NDogIH0gYml0 czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog dW5pb24gZHduc3RyZWFtX3BvcnRfY2Fwc19ieXRlMCB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6 ICAgdWludDhfdCBEV05fU1RSTV9QT1JUWF9UWVBFOjM7CjE0NDc0OiAgIHVpbnQ4X3QgRFdOX1NU Uk1fUE9SVFhfSFBEOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRVJEOjQ7CjE0NDc0OiAgfSBi aXRzOwoxNDQ3NDogIHVpbnQ4X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBlbnVtIGRwY2RfZG93bnN0cmVhbV9wb3J0X2RldGFpbGVkX3R5cGUgewoxNDQ3NDogIERPV05f U1RSRUFNX0RFVEFJTEVEX0RQID0gMCwKMTQ0NzQ6ICBET1dOX1NUUkVBTV9ERVRBSUxFRF9WR0Es CjE0NDc0OiAgRE9XTl9TVFJFQU1fREVUQUlMRURfRFZJLAoxNDQ3NDogIERPV05fU1RSRUFNX0RF VEFJTEVEX0hETUksCjE0NDc0OiAgRE9XTl9TVFJFQU1fREVUQUlMRURfTk9ORERDLAoxNDQ3NDog IERPV05fU1RSRUFNX0RFVEFJTEVEX0RQX1BMVVNfUExVUwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogdW5pb24gZHduc3RyZWFtX3BvcnRfY2Fwc19ieXRlMiB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0 NzQ6ICAgdWludDhfdCBNQVhfQklUU19QRVJfQ09MT1JfQ09NUE9ORU5UOjI7CjE0NDc0OiAgIHVp bnQ4X3QgUkVTRVJWRUQ6NjsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkcF9kb3duc3RyZWFtX3BvcnRfcHJlc2VudCB7 CjE0NDc0OiAgdWludDhfdCBieXRlOwoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3Qg UE9SVF9QUkVTRU5UOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUE9SVF9UWVBFOjI7CjE0NDc0OiAgIHVp bnQ4X3QgRk1UX0NPTlZFUlNJT046MTsKMTQ0NzQ6ICAgdWludDhfdCBERVRBSUxFRF9DQVBTOjE7 CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQ6MzsKMTQ0NzQ6ICB9IGZpZWxkczsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGR3bnN0cmVhbV9wb3J0X2NhcHNfYnl0ZTNfZHZpIHsKMTQ0 NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEMToxOwoxNDQ3NDogICB1aW50 OF90IERVQUxfTElOSzoxOwoxNDQ3NDogICB1aW50OF90IEhJR0hfQ09MT1JfREVQVEg6MTsKMTQ0 NzQ6ICAgdWludDhfdCBSRVNFUlZFRDI6NTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhf dCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkd25zdHJlYW1fcG9ydF9jYXBz X2J5dGUzX2hkbWkgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgRlJBTUVfU0VR X1RPX0ZSQU1FX1BBQ0s6MTsKMTQ0NzQ6ICAgdWludDhfdCBZQ3JDcjQyMl9QQVNTX1RIUk9VR0g6 MTsKMTQ0NzQ6ICAgdWludDhfdCBZQ3JDcjQyMF9QQVNTX1RIUk9VR0g6MTsKMTQ0NzQ6ICAgdWlu dDhfdCBZQ3JDcjQyMl9DT05WRVJTSU9OOjE7CjE0NDc0OiAgIHVpbnQ4X3QgWUNyQ3I0MjBfQ09O VkVSU0lPTjoxOwoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEOjM7CjE0NDc0OiAgfSBiaXRzOwox NDQ3NDogIHVpbnQ4X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHVuaW9uIGR3bnN0cmVhbV9wb3J0eGNhcHMgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAg IHVuaW9uIGR3bnN0cmVhbV9wb3J0X2NhcHNfYnl0ZTAgYnl0ZTA7CjE0NDc0OiAgIHVuc2lnbmVk IGNoYXIgbWF4X1RNRFNfY2xvY2s7CjE0NDc0OiAgIHVuaW9uIGR3bnN0cmVhbV9wb3J0X2NhcHNf Ynl0ZTIgYnl0ZTI7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5pb24gewoxNDQ3NDogICAgdW5pb24gZHdu c3RyZWFtX3BvcnRfY2Fwc19ieXRlM19kdmkgYnl0ZURWSTsKMTQ0NzQ6ICAgIHVuaW9uIGR3bnN0 cmVhbV9wb3J0X2NhcHNfYnl0ZTNfaGRtaSBieXRlSERNSTsKMTQ0NzQ6ICAgfSBieXRlMzsKMTQ0 NzQ6ICB9IGJ5dGVzOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgY2hhciByYXdbNF07CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkb3duc3RyZWFtX3BvcnQgewoxNDQ3NDogIHN0cnVj dCB7CjE0NDc0OiAgIHVuc2lnbmVkIGNoYXIgcHJlc2VudDoxOwoxNDQ3NDogICB1bnNpZ25lZCBj aGFyIHR5cGU6MjsKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBmb3JtYXRfY29udjoxOwoxNDQ3NDog ICB1bnNpZ25lZCBjaGFyIGRldGFpbGVkX2NhcHM6MTsKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBy ZXNlcnZlZDozOwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIHJhdzsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gc2lua19zdGF0dXMgewoxNDQ3NDog IHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgUlhfUE9SVDBfU1RBVFVTOjE7CjE0NDc0OiAgIHVp bnQ4X3QgUlhfUE9SVDFfU1RBVFVTOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQ6NjsKMTQ0 NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gaHBkX2lycV9kYXRhIHsKMTQ0NzQ6ICBzdHJ1Y3Qgewox NDQ3NDogICB1bmlvbiBzaW5rX2NvdW50IHNpbmtfY250OwoxNDQ3NDogICB1bmlvbiBkZXZpY2Vf c2VydmljZV9pcnEgZGV2aWNlX3NlcnZpY2VfaXJxOwoxNDQ3NDogICB1bmlvbiBsYW5lX3N0YXR1 cyBsYW5lMDFfc3RhdHVzOwoxNDQ3NDogICB1bmlvbiBsYW5lX3N0YXR1cyBsYW5lMjNfc3RhdHVz OwoxNDQ3NDogICB1bmlvbiBsYW5lX2FsaWduX3N0YXR1c191cGRhdGVkIGxhbmVfc3RhdHVzX3Vw ZGF0ZWQ7CjE0NDc0OiAgIHVuaW9uIHNpbmtfc3RhdHVzIHNpbmtfc3RhdHVzOwoxNDQ3NDogIH0g Ynl0ZXM7CjE0NDc0OiAgdWludDhfdCByYXdbNl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1 bmlvbiBkb3duX3N0cmVhbV9wb3J0X2NvdW50IHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1 aW50OF90IERPV05fU1RSX1BPUlRfQ09VTlQ6NDsKMTQ0NzQ6ICAgdWludDhfdCBSRVNFUlZFRDoy OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgSUdOT1JF X01TQV9USU1JTkdfUEFSQU06MTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50OF90IE9VSV9TVVBQT1JUOjE7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVpbnQ4 X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZG93bl9zcHJlYWRfY3RybCB7 CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDhfdCBSRVNFUlZFRDE6NDsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IFNQUkVBRF9BTVA6MTsKMTQ0 NzQ6ICAgdWludDhfdCBSRVNFUlZFRDI6MjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICAgdWludDhfdCBJR05PUkVfTVNBX1RJTUlOR19QQVJBTToxOwoxNDQ3NDogIH0gYml0czsKMTQ0 NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGRwY2RfZWRw X2NvbmZpZyB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDhfdCBQQU5FTF9NT0RFX0VE UDoxOwoxNDQ3NDogICB1aW50OF90IEZSQU1JTkdfQ0hBTkdFX0VOQUJMRToxOwoxNDQ3NDogICB1 aW50OF90IFJFU0VSVkVEOjU7CjE0NDc0OiAgIHVpbnQ4X3QgUEFORUxfU0VMRl9URVNUX0VOQUJM RToxOwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBkcF9kZXZpY2VfdmVuZG9yX2lkIHsKMTQ0NzQ6ICB1aW50OF90IGll ZWVfb3VpWzNdOwoxNDQ3NDogIHVpbnQ4X3QgaWVlZV9kZXZpY2VfaWRbNl07CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHBfc2lua19od19md19yZXZpc2lvbiB7CjE0NDc0OiAgdWlu dDhfdCBpZWVlX2h3X3JldjsKMTQ0NzQ6ICB1aW50OF90IGllZWVfZndfcmV2WzJdOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1bmlvbiBlZHBfY29uZmlndXJhdGlvbl9jYXAgewox NDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgQUxUX1NDUkFNQkxFUl9SRVNFVDoxOwox NDQ3NDogICB1aW50OF90IEZSQU1JTkdfQ0hBTkdFOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJW RUQ6MTsKMTQ0NzQ6ICAgdWludDhfdCBEUENEX0RJU1BMQVlfQ09OVFJPTF9DQVBBQkxFOjE7CjE0 NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQyOjQ7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVpbnQ4 X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZHByeF9mZWF0dXJlIHsKMTQ0 NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IEdUQ19DQVA6MTsKMTQ0NzQ6ICAgdWludDhf dCBTU1RfU1BMSVRfU0RQX0NBUDoxOwoxNDQ3NDogICB1aW50OF90IEFWX1NZTkNfQ0FQOjE7CjE0 NDc0OiAgIHVpbnQ4X3QgVlNDX1NEUF9DT0xPUklNRVRSWV9TVVBQT1JURUQ6MTsKMTQ0NzQ6ICAg dWludDhfdCBWU0NfRVhUX1ZFU0FfU0RQX1NVUFBPUlRFRDoxOwoxNDQ3NDogICB1aW50OF90IFZT Q19FWFRfVkVTQV9TRFBfQ0hBSU5JTkdfU1VQUE9SVEVEOjE7CjE0NDc0OiAgIHVpbnQ4X3QgVlND X0VYVF9DRUFfU0RQX1NVUFBPUlRFRDoxOwoxNDQ3NDogICB1aW50OF90IFZTQ19FWFRfQ0VBX1NE UF9DSEFJTklOR19TVVBQT1JURUQ6MTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCBy YXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiB0cmFpbmluZ19hdXhfcmRfaW50ZXJ2 YWwgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgVFJBSU5JR19BVVhfUkRfSU5U RVJWQUw6NzsKMTQ0NzQ6ICAgdWludDhfdCBFWFRfUkVDRUlWRVJfQ0FQX0ZJRUxEX1BSRVNFTlQ6 MTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIHRlc3RfcmVxdWVzdCB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0 NzQ6ICB1aW50OF90IExJTktfVFJBSU5JTkcgOjE7CjE0NDc0OiAgdWludDhfdCBMSU5LX1RFU1Rf UEFUVFJOIDoxOwoxNDQ3NDogIHVpbnQ4X3QgRURJRF9SRUFEIDoxOwoxNDQ3NDogIHVpbnQ4X3Qg UEhZX1RFU1RfUEFUVEVSTiA6MTsKMTQ0NzQ6ICB1aW50OF90IFJFU0VSVkVEIDoxOwoxNDQ3NDog IHVpbnQ4X3QgQVVESU9fVEVTVF9QQVRURVJOIDoxOwoxNDQ3NDogIHVpbnQ4X3QgVEVTVF9BVURJ T19ESVNBQkxFRF9WSURFTyA6MTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiB0ZXN0X3Jlc3BvbnNlIHsKMTQ0NzQ6ICBz dHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IEFDSyA6MTsKMTQ0NzQ6ICAgdWludDhfdCBOT19BQ0sg OjE7CjE0NDc0OiAgIHVpbnQ4X3QgRURJRF9DSEVDS1NVTV9XUklURToxOwoxNDQ3NDogICB1aW50 OF90IFJFU0VSVkVEIDo1OwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIHBoeV90ZXN0X3BhdHRlcm4gewoxNDQ3NDogIHN0 cnVjdCB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgUEFUVEVSTiA6 MzsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEIDo1OwoxNDQ3NDogIH0gYml0czsK MTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdW5p b24gY29tcGxpYW5jZV90ZXN0X3N0YXRlIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNp Z25lZCBjaGFyIFNURVJFT18zRF9SVU5OSU5HIDogMTsKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBS RVNFUlZFRCA6IDc7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcmF3Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gbGlua190ZXN0X3BhdHRlcm4gewoxNDQ3NDog IHN0cnVjdCB7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBQQVRURVJOIDoyOwoxNDQ3 NDogICB1bnNpZ25lZCBjaGFyIFJFU0VSVkVEOjY7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVu c2lnbmVkIGNoYXIgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gdGVzdF9taXNj IHsKMTQ0NzQ6ICBzdHJ1Y3QgZHBjZF90ZXN0X21pc2NfYml0cyB7CjE0NDc0OiAgIHVuc2lnbmVk IGNoYXIgU1lOQ19DTE9DSyA6MTsKMTQ0NzQ6IAoxNDQ3NDogICB1bnNpZ25lZCBjaGFyIENMUl9G T1JNQVQgOjI7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBEWU5fUkFOR0UgOjE7CjE0 NDc0OiAgIHVuc2lnbmVkIGNoYXIgWUNCQ1JfQ09FRlMgOjE7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5z aWduZWQgY2hhciBCUEMgOjM7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIg cmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gYXVkaW9fdGVzdF9tb2RlIHsKMTQ0 NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBjaGFyIHNhbXBsaW5nX3JhdGUgOjQ7CjE0 NDc0OiAgIHVuc2lnbmVkIGNoYXIgY2hhbm5lbF9jb3VudCA6NDsKMTQ0NzQ6ICB9IGJpdHM7CjE0 NDc0OiAgdW5zaWduZWQgY2hhciByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBh dWRpb190ZXN0X3BhdHRlcm5fcGVyaW9kIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNp Z25lZCBjaGFyIHBhdHRlcm5fcGVyaW9kIDo0OwoxNDQ3NDogICB1bnNpZ25lZCBjaGFyIHJlc2Vy dmVkIDo0OwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIHJhdzsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdWRpb190ZXN0X3BhdHRlcm5fdHlwZSB7CjE0NDc0 OiAgdW5zaWduZWQgY2hhciB2YWx1ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBk cF9hdWRpb190ZXN0X2RhdGFfZmxhZ3MgewoxNDQ3NDogIHVpbnQ4X3QgdGVzdF9yZXF1ZXN0ZWQg OjE7CjE0NDc0OiAgdWludDhfdCBkaXNhYmxlX3ZpZGVvIDoxOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGRwX2F1ZGlvX3Rlc3RfZGF0YSB7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qg ZHBfYXVkaW9fdGVzdF9kYXRhX2ZsYWdzIGZsYWdzOwoxNDQ3NDogIHVpbnQ4X3Qgc2FtcGxpbmdf cmF0ZTsKMTQ0NzQ6ICB1aW50OF90IGNoYW5uZWxfY291bnQ7CjE0NDc0OiAgdWludDhfdCBwYXR0 ZXJuX3R5cGU7CjE0NDc0OiAgdWludDhfdCBwYXR0ZXJuX3BlcmlvZFs4XTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZHBjZF9mZWNfY2FwYWJpbGl0eSB7CjE0NDc0OiAg c3RydWN0IHsKMTQ0NzQ6ICAgdWludDhfdCBGRUNfQ0FQQUJMRToxOwoxNDQ3NDogICB1aW50OF90 IFVOQ09SUkVDVEVEX0JMT0NLX0VSUk9SX0NPVU5UX0NBUEFCTEU6MTsKMTQ0NzQ6ICAgdWludDhf dCBDT1JSRUNURURfQkxPQ0tfRVJST1JfQ09VTlRfQ0FQQUJMRToxOwoxNDQ3NDogICB1aW50OF90 IEJJVF9FUlJPUl9DT1VOVF9DQVBBQkxFOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQ6NDsK MTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcGNkX2RzY19zdXBwb3J0IHsKMTQ0NzQ6ICB1aW50OF90IERT Q19TVVBQT1JUIDoxOwoxNDQ3NDogIHVpbnQ4X3QgRFNDX1BBU1NUSFJPVUdIX1NVUFBPUlQgOjE7 CjE0NDc0OiAgdWludDhfdCBSRVNFUlZFRCA6NjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBkcGNkX2RzY19hbGdvcml0aG1fcmV2aXNpb24gewoxNDQ3NDogIHVpbnQ4X3QgRFNDX1ZF UlNJT05fTUFKT1IgOjQ7CjE0NDc0OiAgdWludDhfdCBEU0NfVkVSU0lPTl9NSU5PUiA6NDsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcGNkX2RzY19yY19idWZmZXJfYmxvY2tfc2l6 ZSB7CjE0NDc0OiAgdWludDhfdCBSQ19CTE9DS19CVUZGRVJfU0laRSA6MjsKMTQ0NzQ6ICB1aW50 OF90IFJFU0VSVkVEIDo2OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRwY2RfZHNj X3NsaWNlX2NhcGFiaWxpdHkxIHsKMTQ0NzQ6ICB1aW50OF90IE9ORV9TTElDRV9QRVJfRFBfRFND X1NJTktfREVWSUNFIDoxOwoxNDQ3NDogIHVpbnQ4X3QgVFdPX1NMSUNFU19QRVJfRFBfRFNDX1NJ TktfREVWSUNFIDoxOwoxNDQ3NDogIHVpbnQ4X3QgUkVTRVJWRUQgOjE7CjE0NDc0OiAgdWludDhf dCBGT1VSX1NMSUNFU19QRVJfRFBfRFNDX1NJTktfREVWSUNFIDoxOwoxNDQ3NDogIHVpbnQ4X3Qg U0lYX1NMSUNFU19QRVJfRFBfRFNDX1NJTktfREVWSUNFIDoxOwoxNDQ3NDogIHVpbnQ4X3QgRUlH SFRfU0xJQ0VTX1BFUl9EUF9EU0NfU0lOS19ERVZJQ0UgOjE7CjE0NDc0OiAgdWludDhfdCBURU5f U0xJQ0VTX1BFUl9EUF9EU0NfU0lOS19ERVZJQ0UgOjE7CjE0NDc0OiAgdWludDhfdCBUV0VMVkVf U0xJQ0VTX1BFUl9EUF9EU0NfU0lOS19ERVZJQ0UgOjE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZHBjZF9kc2NfbGluZV9idWZmZXJfYml0X2RlcHRoIHsKMTQ0NzQ6ICB1aW50OF90 IExJTkVfQlVGRkVSX0JJVF9ERVBUSCA6NDsKMTQ0NzQ6ICB1aW50OF90IFJFU0VSVkVEIDo0Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRwY2RfZHNjX2Jsb2NrX3ByZWRpY3Rpb25f c3VwcG9ydCB7CjE0NDc0OiAgdWludDhfdCBCTE9DS19QUkVESUNUSU9OX1NVUFBPUlQ6MTsKMTQ0 NzQ6ICB1aW50OF90IFJFU0VSVkVEIDo3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGRwY2RfbWF4aW11bV9iaXRzX3Blcl9waXhlbF9zdXBwb3J0ZWRfYnlfdGhlX2RlY29tcHJlc3Nv ciB7CjE0NDc0OiAgdWludDhfdCBNQVhJTVVNX0JJVFNfUEVSX1BJWEVMX1NVUFBPUlRFRF9CWV9U SEVfREVDT01QUkVTU09SX0xPVyA6NzsKMTQ0NzQ6ICB1aW50OF90IE1BWElNVU1fQklUU19QRVJf UElYRUxfU1VQUE9SVEVEX0JZX1RIRV9ERUNPTVBSRVNTT1JfSElHSCA6NzsKMTQ0NzQ6ICB1aW50 OF90IFJFU0VSVkVEIDoyOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRwY2RfZHNj X2RlY29kZXJfY29sb3JfZm9ybWF0X2NhcGFiaWxpdGllcyB7CjE0NDc0OiAgdWludDhfdCBSR0Jf U1VQUE9SVCA6MTsKMTQ0NzQ6ICB1aW50OF90IFlfQ0JfQ1JfNDQ0X1NVUFBPUlQgOjE7CjE0NDc0 OiAgdWludDhfdCBZX0NCX0NSX1NJTVBMRV80MjJfU1VQUE9SVCA6MTsKMTQ0NzQ6ICB1aW50OF90 IFlfQ0JfQ1JfTkFUSVZFXzQyMl9TVVBQT1JUIDoxOwoxNDQ3NDogIHVpbnQ4X3QgWV9DQl9DUl9O QVRJVkVfNDIwX1NVUFBPUlQgOjE7CjE0NDc0OiAgdWludDhfdCBSRVNFUlZFRCA6MzsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcGNkX2RzY19kZWNvZGVyX2NvbG9yX2RlcHRoX2Nh cGFiaWxpdGllcyB7CjE0NDc0OiAgdWludDhfdCBSRVNFUlZFRDAgOjE7CjE0NDc0OiAgdWludDhf dCBFSUdIVF9CSVRTX1BFUl9DT0xPUl9TVVBQT1JUIDoxOwoxNDQ3NDogIHVpbnQ4X3QgVEVOX0JJ VFNfUEVSX0NPTE9SX1NVUFBPUlQgOjE7CjE0NDc0OiAgdWludDhfdCBUV0VMVkVfQklUU19QRVJf Q09MT1JfU1VQUE9SVCA6MTsKMTQ0NzQ6ICB1aW50OF90IFJFU0VSVkVEMSA6NDsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcGNkX3BlYWtfZHNjX3Rocm91Z2hwdXRfZHNjX3Npbmsg ewoxNDQ3NDogIHVpbnQ4X3QgVEhST1VHSFBVVF9NT0RFXzA6NDsKMTQ0NzQ6ICB1aW50OF90IFRI Uk9VR0hQVVRfTU9ERV8xOjQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHBjZF9k c2Nfc2xpY2VfY2FwYWJpbGl0aWVzXzIgewoxNDQ3NDogIHVpbnQ4X3QgU0lYVEVFTl9TTElDRVNf UEVSX0RTQ19TSU5LX0RFVklDRSA6MTsKMTQ0NzQ6ICB1aW50OF90IFRXRU5UWV9TTElDRVNfUEVS X0RTQ19TSU5LX0RFVklDRSA6MTsKMTQ0NzQ6ICB1aW50OF90IFRXRU5UWUZPVVJfU0xJQ0VTX1BF Ul9EU0NfU0lOS19ERVZJQ0UgOjE7CjE0NDc0OiAgdWludDhfdCBSRVNFUlZFRCA6NTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcGNkX2JpdHNfcGVyX3BpeGVsX2luY3JlbWVudHsK MTQ0NzQ6ICB1aW50OF90IElOQ1JFTUVOVF9PRl9CSVRTX1BFUl9QSVhFTF9TVVBQT1JURUQgOjM7 CjE0NDc0OiAgdWludDhfdCBSRVNFUlZFRCA6NTsKMTQ0NzQ6IH07CjE0NDc0OiB1bmlvbiBkcGNk X2RzY19iYXNpY19jYXBhYmlsaXRpZXMgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHN0cnVj dCBkcGNkX2RzY19zdXBwb3J0IGRzY19zdXBwb3J0OwoxNDQ3NDogICBzdHJ1Y3QgZHBjZF9kc2Nf YWxnb3JpdGhtX3JldmlzaW9uIGRzY19hbGdvcml0aG1fcmV2aXNpb247CjE0NDc0OiAgIHN0cnVj dCBkcGNkX2RzY19yY19idWZmZXJfYmxvY2tfc2l6ZSBkc2NfcmNfYnVmZmVyX2Jsb2NrX3NpemU7 CjE0NDc0OiAgIHVpbnQ4X3QgZHNjX3JjX2J1ZmZlcl9zaXplOwoxNDQ3NDogICBzdHJ1Y3QgZHBj ZF9kc2Nfc2xpY2VfY2FwYWJpbGl0eTEgZHNjX3NsaWNlX2NhcGFiaWxpdGllc18xOwoxNDQ3NDog ICBzdHJ1Y3QgZHBjZF9kc2NfbGluZV9idWZmZXJfYml0X2RlcHRoIGRzY19saW5lX2J1ZmZlcl9i aXRfZGVwdGg7CjE0NDc0OiAgIHN0cnVjdCBkcGNkX2RzY19ibG9ja19wcmVkaWN0aW9uX3N1cHBv cnQgZHNjX2Jsb2NrX3ByZWRpY3Rpb25fc3VwcG9ydDsKMTQ0NzQ6ICAgc3RydWN0IGRwY2RfbWF4 aW11bV9iaXRzX3Blcl9waXhlbF9zdXBwb3J0ZWRfYnlfdGhlX2RlY29tcHJlc3NvciBtYXhpbXVt X2JpdHNfcGVyX3BpeGVsX3N1cHBvcnRlZF9ieV90aGVfZGVjb21wcmVzc29yOwoxNDQ3NDogICBz dHJ1Y3QgZHBjZF9kc2NfZGVjb2Rlcl9jb2xvcl9mb3JtYXRfY2FwYWJpbGl0aWVzIGRzY19kZWNv ZGVyX2NvbG9yX2Zvcm1hdF9jYXBhYmlsaXRpZXM7CjE0NDc0OiAgIHN0cnVjdCBkcGNkX2RzY19k ZWNvZGVyX2NvbG9yX2RlcHRoX2NhcGFiaWxpdGllcyBkc2NfZGVjb2Rlcl9jb2xvcl9kZXB0aF9j YXBhYmlsaXRpZXM7CjE0NDc0OiAgIHN0cnVjdCBkcGNkX3BlYWtfZHNjX3Rocm91Z2hwdXRfZHNj X3NpbmsgcGVha19kc2NfdGhyb3VnaHB1dF9kc2Nfc2luazsKMTQ0NzQ6ICAgdWludDhfdCBkc2Nf bWF4aW11bV9zbGljZV93aWR0aDsKMTQ0NzQ6ICAgc3RydWN0IGRwY2RfZHNjX3NsaWNlX2NhcGFi aWxpdGllc18yIGRzY19zbGljZV9jYXBhYmlsaXRpZXNfMjsKMTQ0NzQ6ICAgdWludDhfdCByZXNl cnZlZDsKMTQ0NzQ6ICAgc3RydWN0IGRwY2RfYml0c19wZXJfcGl4ZWxfaW5jcmVtZW50IGJpdHNf cGVyX3BpeGVsX2luY3JlbWVudDsKMTQ0NzQ6ICB9IGZpZWxkczsKMTQ0NzQ6ICB1aW50OF90IHJh d1sxNl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkcGNkX2RzY19leHRfY2FwYWJp bGl0aWVzIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IEJSQU5DSF9PVkVSQUxM X1RIUk9VR0hQVVRfMDsKMTQ0NzQ6ICAgdWludDhfdCBCUkFOQ0hfT1ZFUkFMTF9USFJPVUdIUFVU XzE7CjE0NDc0OiAgIHVpbnQ4X3QgQlJBTkNIX01BWF9MSU5FX1dJRFRIOwoxNDQ3NDogIH0gZmll bGRzOwoxNDQ3NDogIHVpbnQ4X3QgcmF3WzNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGRwY2RfZHNjX2NhcGFiaWxpdGllcyB7CjE0NDc0OiAgdW5pb24gZHBjZF9kc2NfYmFzaWNf Y2FwYWJpbGl0aWVzIGRzY19iYXNpY19jYXBzOwoxNDQ3NDogIHVuaW9uIGRwY2RfZHNjX2V4dF9j YXBhYmlsaXRpZXMgZHNjX2V4dF9jYXBzOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzYgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBlcy5oIiAyCjE0NDc0OiAj IDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY19od190eXBl cy5oIiAxCjE0NDc0OiAjIDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvZGNfaHdfdHlwZXMuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvc2lnbmFsX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMzQgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL3NpZ25hbF90eXBl cy5oIgoxNDQ3NDogZW51bSBzaWduYWxfdHlwZSB7CjE0NDc0OiAgU0lHTkFMX1RZUEVfTk9ORSA9 IDBMLAoxNDQ3NDogIFNJR05BTF9UWVBFX0RWSV9TSU5HTEVfTElOSyA9ICgxIDw8IDApLAoxNDQ3 NDogIFNJR05BTF9UWVBFX0RWSV9EVUFMX0xJTksgPSAoMSA8PCAxKSwKMTQ0NzQ6ICBTSUdOQUxf VFlQRV9IRE1JX1RZUEVfQSA9ICgxIDw8IDIpLAoxNDQ3NDogIFNJR05BTF9UWVBFX0xWRFMgPSAo MSA8PCAzKSwKMTQ0NzQ6ICBTSUdOQUxfVFlQRV9SR0IgPSAoMSA8PCA0KSwKMTQ0NzQ6ICBTSUdO QUxfVFlQRV9ESVNQTEFZX1BPUlQgPSAoMSA8PCA1KSwKMTQ0NzQ6ICBTSUdOQUxfVFlQRV9ESVNQ TEFZX1BPUlRfTVNUID0gKDEgPDwgNiksCjE0NDc0OiAgU0lHTkFMX1RZUEVfRURQID0gKDEgPDwg NyksCjE0NDc0OiAgU0lHTkFMX1RZUEVfVklSVFVBTCA9ICgxIDw8IDkpLAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2hkbWlfdG1kc19zaWduYWwoZW51bSBzaWdu YWxfdHlwZSBzaWduYWwpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChzaWduYWwgPT0gU0lHTkFM X1RZUEVfSERNSV9UWVBFX0EpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2hk bWlfc2lnbmFsKGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biAoc2lnbmFsID09IFNJR05BTF9UWVBFX0hETUlfVFlQRV9BKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCBkY19pc19kcF9zc3Rfc2lnbmFsKGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiAoc2lnbmFsID09IFNJR05BTF9UWVBFX0RJU1BMQVlfUE9S VCB8fAoxNDQ3NDogICBzaWduYWwgPT0gU0lHTkFMX1RZUEVfRURQKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBkY19pc19kcF9zaWduYWwoZW51bSBzaWduYWxfdHlwZSBzaWduYWwpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChzaWduYWwgPT0gU0lHTkFMX1RZUEVfRElTUExBWV9QT1JU IHx8CjE0NDc0OiAgIHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9FRFAgfHwKMTQ0NzQ6ICAgc2lnbmFs ID09IFNJR05BTF9UWVBFX0RJU1BMQVlfUE9SVF9NU1QpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIGRjX2lzX2VtYmVkZGVkX3NpZ25hbChlbnVtIHNpZ25hbF90eXBlIHNpZ25hbCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9FRFAgfHwgc2lnbmFs ID09IFNJR05BTF9UWVBFX0xWRFMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lz X2x2ZHNfc2lnbmFsKGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiAoc2lnbmFsID09IFNJR05BTF9UWVBFX0xWRFMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIGRjX2lzX2R2aV9zaWduYWwoZW51bSBzaWduYWxfdHlwZSBzaWduYWwpCjE0NDc0OiB7 CjE0NDc0OiAgc3dpdGNoIChzaWduYWwpIHsKMTQ0NzQ6ICBjYXNlIFNJR05BTF9UWVBFX0RWSV9T SU5HTEVfTElOSzoKMTQ0NzQ6ICBjYXNlIFNJR05BTF9UWVBFX0RWSV9EVUFMX0xJTks6CjE0NDc0 OiAgIHJldHVybiB0cnVlOwoxNDQ3NDogIGJyZWFrOwoxNDQ3NDogIGRlZmF1bHQ6CjE0NDc0OiAg IHJldHVybiBmYWxzZTsKMTQ0NzQ6ICB9CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGNf aXNfZHZpX3NpbmdsZV9saW5rX3NpZ25hbChlbnVtIHNpZ25hbF90eXBlIHNpZ25hbCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9EVklfU0lOR0xFX0xJTksp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2R1YWxfbGlua19zaWduYWwoZW51 bSBzaWduYWxfdHlwZSBzaWduYWwpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChzaWduYWwgPT0g U0lHTkFMX1RZUEVfRFZJX0RVQUxfTElOSyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg ZGNfaXNfYXVkaW9fY2FwYWJsZV9zaWduYWwoZW51bSBzaWduYWxfdHlwZSBzaWduYWwpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIChzaWduYWwgPT0gU0lHTkFMX1RZUEVfRElTUExBWV9QT1JUIHx8 CjE0NDc0OiAgIHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9ESVNQTEFZX1BPUlRfTVNUIHx8CjE0NDc0 OiAgIGRjX2lzX2hkbWlfc2lnbmFsKHNpZ25hbCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIGRjX2lzX3ZpcnR1YWxfc2lnbmFsKGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAoc2lnbmFsID09IFNJR05BTF9UWVBFX1ZJUlRVQUwpOwoxNDQ3NDog fQoxNDQ3NDogIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RjX2h3X3R5cGVzLmgiIDIKMTQ0NzQ6ICMgNDUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9kY19od190eXBlcy5oIgoxNDQ3NDogdW5pb24gbGFyZ2VfaW50ZWdl ciB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDMyX3QgbG93X3BhcnQ7CjE0NDc0OiAg IGludDMyX3QgaGlnaF9wYXJ0OwoxNDQ3NDogIH07CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgewox NDQ3NDogICB1aW50MzJfdCBsb3dfcGFydDsKMTQ0NzQ6ICAgaW50MzJfdCBoaWdoX3BhcnQ7CjE0 NDc0OiAgfSB1OwoxNDQ3NDogCjE0NDc0OiAgaW50NjRfdCBxdWFkX3BhcnQ7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19wbGFuZV9hZGRyX3R5cGUgewox NDQ3NDogIFBMTl9BRERSX1RZUEVfR1JBUEhJQ1MgPSAwLAoxNDQ3NDogIFBMTl9BRERSX1RZUEVf R1JQSF9TVEVSRU8sCjE0NDc0OiAgUExOX0FERFJfVFlQRV9WSURFT19QUk9HUkVTU0lWRSwKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzIHsKMTQ0NzQ6ICBl bnVtIGRjX3BsYW5lX2FkZHJfdHlwZSB0eXBlOwoxNDQ3NDogIGJvb2wgdG16X3N1cmZhY2U7CjE0 NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3R7CjE0NDc0OiAgICB1bmlvbiBsYXJnZV9pbnRl Z2VyIGFkZHI7CjE0NDc0OiAgICB1bmlvbiBsYXJnZV9pbnRlZ2VyIG1ldGFfYWRkcjsKMTQ0NzQ6 ICAgIHVuaW9uIGxhcmdlX2ludGVnZXIgZGNjX2NvbnN0X2NvbG9yOwoxNDQ3NDogICB9IGdycGg7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgdW5pb24gbGFyZ2Vf aW50ZWdlciBsZWZ0X2FkZHI7CjE0NDc0OiAgICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGxlZnRfbWV0 YV9hZGRyOwoxNDQ3NDogICAgdW5pb24gbGFyZ2VfaW50ZWdlciBsZWZ0X2RjY19jb25zdF9jb2xv cjsKMTQ0NzQ6IAoxNDQ3NDogICAgdW5pb24gbGFyZ2VfaW50ZWdlciByaWdodF9hZGRyOwoxNDQ3 NDogICAgdW5pb24gbGFyZ2VfaW50ZWdlciByaWdodF9tZXRhX2FkZHI7CjE0NDc0OiAgICB1bmlv biBsYXJnZV9pbnRlZ2VyIHJpZ2h0X2RjY19jb25zdF9jb2xvcjsKMTQ0NzQ6IAoxNDQ3NDogICB9 IGdycGhfc3RlcmVvOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAg IHVuaW9uIGxhcmdlX2ludGVnZXIgbHVtYV9hZGRyOwoxNDQ3NDogICAgdW5pb24gbGFyZ2VfaW50 ZWdlciBsdW1hX21ldGFfYWRkcjsKMTQ0NzQ6ICAgIHVuaW9uIGxhcmdlX2ludGVnZXIgbHVtYV9k Y2NfY29uc3RfY29sb3I7CjE0NDc0OiAKMTQ0NzQ6ICAgIHVuaW9uIGxhcmdlX2ludGVnZXIgY2hy b21hX2FkZHI7CjE0NDc0OiAgICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGNocm9tYV9tZXRhX2FkZHI7 CjE0NDc0OiAgICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGNocm9tYV9kY2NfY29uc3RfY29sb3I7CjE0 NDc0OiAgIH0gdmlkZW9fcHJvZ3Jlc3NpdmU7CjE0NDc0OiAgfTsKMTQ0NzQ6IAoxNDQ3NDogIHVu aW9uIGxhcmdlX2ludGVnZXIgcGFnZV90YWJsZV9iYXNlOwoxNDQ3NDogCjE0NDc0OiAgdWludDhf dCB2bWlkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX3NpemUgewoxNDQ3NDog IGludCB3aWR0aDsKMTQ0NzQ6ICBpbnQgaGVpZ2h0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IHJlY3QgewoxNDQ3NDogIGludCB4OwoxNDQ3NDogIGludCB5OwoxNDQ3NDogIGludCB3 aWR0aDsKMTQ0NzQ6ICBpbnQgaGVpZ2h0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IHBsYW5lX3NpemUgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50 IHN1cmZhY2VfcGl0Y2g7CjE0NDc0OiAgaW50IGNocm9tYV9waXRjaDsKMTQ0NzQ6ICBzdHJ1Y3Qg cmVjdCBzdXJmYWNlX3NpemU7CjE0NDc0OiAgc3RydWN0IHJlY3QgY2hyb21hX3NpemU7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfcGxhbmVfZGNjX3BhcmFtIHsKMTQ0NzQ6ICBi b29sIGVuYWJsZTsKMTQ0NzQ6IAoxNDQ3NDogIGludCBtZXRhX3BpdGNoOwoxNDQ3NDogIGJvb2wg aW5kZXBlbmRlbnRfNjRiX2Jsa3M7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgbWV0YV9waXRjaF9jOwox NDQ3NDogIGJvb2wgaW5kZXBlbmRlbnRfNjRiX2Jsa3NfYzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCB7CjE0NDc0OiAgU1VSRkFDRV9Q SVhFTF9GT1JNQVRfR1JQSF9CRUdJTiA9IDAsCjE0NDc0OiAKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVM X0ZPUk1BVF9HUlBIX1BBTEVUQV8yNTZfQ09MT1JTID0KMTQ0NzQ6ICAgU1VSRkFDRV9QSVhFTF9G T1JNQVRfR1JQSF9CRUdJTiwKMTQ0NzQ6IAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dS UEhfQVJHQjE1NTUsCjE0NDc0OiAKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX1JH QjU2NSwKMTQ0NzQ6IAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQVJHQjg4ODgs CjE0NDc0OiAKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX0FCR1I4ODg4LAoxNDQ3 NDogCjE0NDc0OiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9BUkdCMjEwMTAxMCwKMTQ0NzQ6 IAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQUJHUjIxMDEwMTAsCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9BQkdSMjEw MTAxMF9YUl9CSUFTLAoxNDQ3NDogCjE0NDc0OiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9B UkdCMTYxNjE2MTYsCjE0NDc0OiAKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX0FS R0IxNjE2MTYxNkYsCjE0NDc0OiAKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX0FC R1IxNjE2MTYxNkYsCjE0NDc0OiAKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX1JH QjExMTExMF9GSVgsCjE0NDc0OiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9CR1IxMDExMTFf RklYLAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfUkdCMTExMTEwX0ZMT0FULAox NDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQkdSMTAxMTExX0ZMT0FULAoxNDQ3NDog IFNVUkZBQ0VfUElYRUxfRk9STUFUX1ZJREVPX0JFR0lOLAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxf Rk9STUFUX1ZJREVPXzQyMF9ZQ2JDciA9CjE0NDc0OiAgIFNVUkZBQ0VfUElYRUxfRk9STUFUX1ZJ REVPX0JFR0lOLAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX1ZJREVPXzQyMF9ZQ3JDYiwK MTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9WSURFT180MjBfMTBicGNfWUNiQ3IsCjE0NDc0 OiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRfVklERU9fNDIwXzEwYnBjX1lDckNiLAoxNDQ3NDogICBT VVJGQUNFX1BJWEVMX0ZPUk1BVF9TVUJTQU1QTEVfRU5ELAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxf Rk9STUFUX1ZJREVPX0FDcllDYjIxMDEwMTAsCjE0NDc0OiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRf VklERU9fQ3JZQ2JBMTAxMDEwMiwKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9WSURFT19B WUNyQ2I4ODg4LAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX0lOVkFMSUQKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl bnVtIHBpeGVsX2Zvcm1hdCB7CjE0NDc0OiAKMTQ0NzQ6ICBQSVhFTF9GT1JNQVRfVU5JTklUSUFM SVpFRCwKMTQ0NzQ6ICBQSVhFTF9GT1JNQVRfSU5ERVg4LAoxNDQ3NDogIFBJWEVMX0ZPUk1BVF9S R0I1NjUsCjE0NDc0OiAgUElYRUxfRk9STUFUX0FSR0I4ODg4LAoxNDQ3NDogIFBJWEVMX0ZPUk1B VF9BUkdCMjEwMTAxMCwKMTQ0NzQ6ICBQSVhFTF9GT1JNQVRfQVJHQjIxMDEwMTBfWFJCSUFTLAox NDQ3NDogIFBJWEVMX0ZPUk1BVF9GUDE2LAoxNDQ3NDogCjE0NDc0OiAgUElYRUxfRk9STUFUXzQy MEJQUDgsCjE0NDc0OiAgUElYRUxfRk9STUFUXzQyMEJQUDEwLAoxNDQ3NDogCjE0NDc0OiAgUElY RUxfRk9STUFUX0lOVkFMSUQsCjE0NDc0OiAKMTQ0NzQ6ICBQSVhFTF9GT1JNQVRfR1JQSF9CRUdJ TiA9IFBJWEVMX0ZPUk1BVF9JTkRFWDgsCjE0NDc0OiAgUElYRUxfRk9STUFUX0dSUEhfRU5EID0g UElYRUxfRk9STUFUX0ZQMTYsCjE0NDc0OiAgUElYRUxfRk9STUFUX1ZJREVPX0JFR0lOID0gUElY RUxfRk9STUFUXzQyMEJQUDgsCjE0NDc0OiAgUElYRUxfRk9STUFUX1ZJREVPX0VORCA9IFBJWEVM X0ZPUk1BVF80MjBCUFAxMCwKMTQ0NzQ6ICBQSVhFTF9GT1JNQVRfVU5LTk9XTgoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSB0aWxlX3NwbGl0X3ZhbHVlcyB7CjE0NDc0OiAgRENfRElTUExB WV9NSUNST19USUxJTkcgPSAweDAsCjE0NDc0OiAgRENfVEhJTl9NSUNST19USUxJTkcgPSAweDEs CjE0NDc0OiAgRENfREVQVEhfTUlDUk9fVElMSU5HID0gMHgyLAoxNDQ3NDogIERDX1JPVEFURURf TUlDUk9fVElMSU5HID0gMHgzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB0cmlwbGVC dWZmZXJfZW5hYmxlIHsKMTQ0NzQ6ICBEQ19UUklQTEVCVUZGRVJfRElTQUJMRSA9IDB4MCwKMTQ0 NzQ6ICBEQ19UUklQTEVCVUZGRVJfRU5BQkxFID0gMHgxLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhcnJheV9tb2RlX3ZhbHVlcyB7CjE0NDc0 OiAgRENfQVJSQVlfTElORUFSX0dFTkVSQUwgPSAwLAoxNDQ3NDogIERDX0FSUkFZX0xJTkVBUl9B TExJR05FRCwKMTQ0NzQ6ICBEQ19BUlJBWV8xRF9USUxFRF9USElOMSwKMTQ0NzQ6ICBEQ19BUlJB WV8xRF9USUxFRF9USElDSywKMTQ0NzQ6ICBEQ19BUlJBWV8yRF9USUxFRF9USElOMSwKMTQ0NzQ6 ICBEQ19BUlJBWV9QUlRfVElMRURfVEhJTjEsCjE0NDc0OiAgRENfQVJSQVlfUFJUXzJEX1RJTEVE X1RISU4xLAoxNDQ3NDogIERDX0FSUkFZXzJEX1RJTEVEX1RISUNLLAoxNDQ3NDogIERDX0FSUkFZ XzJEX1RJTEVEX1hfVEhJQ0ssCjE0NDc0OiAgRENfQVJSQVlfUFJUX1RJTEVEX1RISUNLLAoxNDQ3 NDogIERDX0FSUkFZX1BSVF8yRF9USUxFRF9USElDSywKMTQ0NzQ6ICBEQ19BUlJBWV9QUlRfM0Rf VElMRURfVEhJTjEsCjE0NDc0OiAgRENfQVJSQVlfM0RfVElMRURfVEhJTjEsCjE0NDc0OiAgRENf QVJSQVlfM0RfVElMRURfVEhJQ0ssCjE0NDc0OiAgRENfQVJSQVlfM0RfVElMRURfWF9USElDSywK MTQ0NzQ6ICBEQ19BUlJBWV9QUlRfM0RfVElMRURfVEhJQ0ssCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBlbnVtIHRpbGVfbW9kZV92YWx1ZXMgewoxNDQ3NDogIERDX0FERFJfU1VSRl9NSUNST19U SUxJTkdfRElTUExBWSA9IDB4MCwKMTQ0NzQ6ICBEQ19BRERSX1NVUkZfTUlDUk9fVElMSU5HX05P Tl9ESVNQTEFZID0gMHgxLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBzd2l6emxlX21v ZGVfdmFsdWVzIHsKMTQ0NzQ6ICBEQ19TV19MSU5FQVIgPSAwLAoxNDQ3NDogIERDX1NXXzI1NkJf UyA9IDEsCjE0NDc0OiAgRENfU1dfMjU2X0QgPSAyLAoxNDQ3NDogIERDX1NXXzI1Nl9SID0gMywK MTQ0NzQ6ICBEQ19TV180S0JfUyA9IDUsCjE0NDc0OiAgRENfU1dfNEtCX0QgPSA2LAoxNDQ3NDog IERDX1NXXzRLQl9SID0gNywKMTQ0NzQ6ICBEQ19TV182NEtCX1MgPSA5LAoxNDQ3NDogIERDX1NX XzY0S0JfRCA9IDEwLAoxNDQ3NDogIERDX1NXXzY0S0JfUiA9IDExLAoxNDQ3NDogIERDX1NXX1ZB Ul9TID0gMTMsCjE0NDc0OiAgRENfU1dfVkFSX0QgPSAxNCwKMTQ0NzQ6ICBEQ19TV19WQVJfUiA9 IDE1LAoxNDQ3NDogIERDX1NXXzY0S0JfU19UID0gMTcsCjE0NDc0OiAgRENfU1dfNjRLQl9EX1Qg PSAxOCwKMTQ0NzQ6ICBEQ19TV180S0JfU19YID0gMjEsCjE0NDc0OiAgRENfU1dfNEtCX0RfWCA9 IDIyLAoxNDQ3NDogIERDX1NXXzRLQl9SX1ggPSAyMywKMTQ0NzQ6ICBEQ19TV182NEtCX1NfWCA9 IDI1LAoxNDQ3NDogIERDX1NXXzY0S0JfRF9YID0gMjYsCjE0NDc0OiAgRENfU1dfNjRLQl9SX1gg PSAyNywKMTQ0NzQ6ICBEQ19TV19WQVJfU19YID0gMjksCjE0NDc0OiAgRENfU1dfVkFSX0RfWCA9 IDMwLAoxNDQ3NDogIERDX1NXX1ZBUl9SX1ggPSAzMSwKMTQ0NzQ6ICBEQ19TV19NQVggPSAzMiwK MTQ0NzQ6ICBEQ19TV19VTktOT1dOID0gRENfU1dfTUFYCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiB1bmlvbiBkY190aWxpbmdfaW5mbyB7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IG51 bV9iYW5rczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg IHVuc2lnbmVkIGludCBiYW5rX3dpZHRoOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgYmFua193aWR0 aF9jOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdW5z aWduZWQgaW50IGJhbmtfaGVpZ2h0OwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgYmFua19oZWlnaHRf YzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHRpbGVfYXNw ZWN0OwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgdGlsZV9hc3BlY3RfYzsKMTQ0NzQ6ICMgMzE3ICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfaHdfdHlwZXMuaCIK MTQ0NzQ6ICAgZW51bSB0aWxlX3NwbGl0X3ZhbHVlcyB0aWxlX3NwbGl0OwoxNDQ3NDogICBlbnVt IHRpbGVfc3BsaXRfdmFsdWVzIHRpbGVfc3BsaXRfYzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgZW51bSB0aWxlX21vZGVfdmFsdWVzIHRp bGVfbW9kZTsKMTQ0NzQ6ICAgZW51bSB0aWxlX21vZGVfdmFsdWVzIHRpbGVfbW9kZV9jOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgaW50 IHBpcGVfY29uZmlnOwoxNDQ3NDogIyAzNDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9kY19od190eXBlcy5oIgoxNDQ3NDogICBlbnVtIGFycmF5X21vZGVfdmFs dWVzIGFycmF5X21vZGU7CjE0NDc0OiAgfSBnZng4OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHsK MTQ0NzQ6ICAgZW51bSBzd2l6emxlX21vZGVfdmFsdWVzIHN3aXp6bGU7CjE0NDc0OiAgIHVuc2ln bmVkIGludCBudW1fcGlwZXM7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBtYXhfY29tcHJlc3NlZF9m cmFnczsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHBpcGVfaW50ZXJsZWF2ZTsKMTQ0NzQ6IAoxNDQ3 NDogICB1bnNpZ25lZCBpbnQgbnVtX2JhbmtzOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbnVtX3No YWRlcl9lbmdpbmVzOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbnVtX3JiX3Blcl9zZTsKMTQ0NzQ6 ICAgYm9vbCBzaGFkZXJFbmFibGU7CjE0NDc0OiAKMTQ0NzQ6ICAgYm9vbCBtZXRhX2xpbmVhcjsK MTQ0NzQ6ICAgYm9vbCByYl9hbGlnbmVkOwoxNDQ3NDogICBib29sIHBpcGVfYWxpZ25lZDsKMTQ0 NzQ6ICB9IGdmeDk7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfcm90 YXRpb25fYW5nbGUgewoxNDQ3NDogIFJPVEFUSU9OX0FOR0xFXzAgPSAwLAoxNDQ3NDogIFJPVEFU SU9OX0FOR0xFXzkwLAoxNDQ3NDogIFJPVEFUSU9OX0FOR0xFXzE4MCwKMTQ0NzQ6ICBST1RBVElP Tl9BTkdMRV8yNzAsCjE0NDc0OiAgUk9UQVRJT05fQU5HTEVfQ09VTlQKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IGVudW0gZGNfc2Nhbl9kaXJlY3Rpb24gewoxNDQ3NDogIFNDQU5fRElSRUNUSU9O X1VOS05PV04gPSAwLAoxNDQ3NDogIFNDQU5fRElSRUNUSU9OX0hPUklaT05UQUwgPSAxLAoxNDQ3 NDogIFNDQU5fRElSRUNUSU9OX1ZFUlRJQ0FMID0gMiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkY19jdXJzb3JfcG9zaXRpb24gewoxNDQ3NDogIHVpbnQzMl90IHg7CjE0NDc0OiAg dWludDMyX3QgeTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHhfaG90c3BvdDsKMTQ0NzQ6ICB1 aW50MzJfdCB5X2hvdHNwb3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBib29sIGVuYWJsZTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRj X2N1cnNvcl9taV9wYXJhbSB7CjE0NDc0OiAgdW5zaWduZWQgaW50IHBpeGVsX2Nsa19raHo7CjE0 NDc0OiAgdW5zaWduZWQgaW50IHJlZl9jbGtfa2h6OwoxNDQ3NDogIHN0cnVjdCByZWN0IHZpZXdw b3J0OwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGhfc2NhbGVfcmF0aW87CjE0NDc0OiAgc3Ry dWN0IGZpeGVkMzFfMzIgdl9zY2FsZV9yYXRpbzsKMTQ0NzQ6ICBlbnVtIGRjX3JvdGF0aW9uX2Fu Z2xlIHJvdGF0aW9uOwoxNDQ3NDogIGJvb2wgbWlycm9yOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIEdBTU1BX1JHQl8yNTZfRU5UUklFUyA9 IDI1NiwKMTQ0NzQ6ICBHQU1NQV9SR0JfRkxPQVRfMTAyNF9FTlRSSUVTID0gMTAyNCwKMTQ0NzQ6 ICBHQU1NQV9DU19URk1fMURfRU5UUklFUyA9IDQwOTYsCjE0NDc0OiAgR0FNTUFfQ1VTVE9NX0VO VFJJRVMgPSA0MDk2LAoxNDQ3NDogIEdBTU1BX01BWF9FTlRSSUVTID0gNDA5NgoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19nYW1tYV90eXBlIHsKMTQ0NzQ6ICBHQU1NQV9SR0JfMjU2 ID0gMSwKMTQ0NzQ6ICBHQU1NQV9SR0JfRkxPQVRfMTAyNCA9IDIsCjE0NDc0OiAgR0FNTUFfQ1Nf VEZNXzFEID0gMywKMTQ0NzQ6ICBHQU1NQV9DVVNUT00gPSA0LAoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGRjX2NzY190cmFuc2Zvcm0gewoxNDQ3NDogIHVpbnQxNl90IG1hdHJpeFsx Ml07CjE0NDc0OiAgYm9vbCBlbmFibGVfYWRqdXN0bWVudDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBkY19yZ2JfZml4ZWQgewoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIHJlZDsK MTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBncmVlbjsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8z MiBibHVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX2dhbW1hIHsKMTQ0NzQ6 ICBzdHJ1Y3Qga3JlZiByZWZjb3VudDsKMTQ0NzQ6ICBlbnVtIGRjX2dhbW1hX3R5cGUgdHlwZTsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qg ZGNfZ2FtbWFfZW50cmllcyB7CjE0NDc0OiAgIHN0cnVjdCBmaXhlZDMxXzMyIHJlZFtHQU1NQV9N QVhfRU5UUklFU107CjE0NDc0OiAgIHN0cnVjdCBmaXhlZDMxXzMyIGdyZWVuW0dBTU1BX01BWF9F TlRSSUVTXTsKMTQ0NzQ6ICAgc3RydWN0IGZpeGVkMzFfMzIgYmx1ZVtHQU1NQV9NQVhfRU5UUklF U107CjE0NDc0OiAgfSBlbnRyaWVzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGNf Y29udGV4dCAqY3R4OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9v bCBpc19pZGVudGl0eTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDQ1NiAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2h3X3R5cGVzLmgiCjE0NDc0OiBlbnVtIGRjX2N1 cnNvcl9jb2xvcl9mb3JtYXQgewoxNDQ3NDogIENVUlNPUl9NT0RFX01PTk8sCjE0NDc0OiAgQ1VS U09SX01PREVfQ09MT1JfMUJJVF9BTkQsCjE0NDc0OiAgQ1VSU09SX01PREVfQ09MT1JfUFJFX01V TFRJUExJRURfQUxQSEEsCjE0NDc0OiAgQ1VSU09SX01PREVfQ09MT1JfVU5fUFJFX01VTFRJUExJ RURfQUxQSEEsCjE0NDc0OiAgQ1VSU09SX01PREVfQ09MT1JfNjRCSVRfRlBfUFJFX01VTFRJUExJ RUQsCjE0NDc0OiAgQ1VSU09SX01PREVfQ09MT1JfNjRCSVRfRlBfVU5fUFJFX01VTFRJUExJRUQK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGRjX2N1cnNvcl9hdHRyaWJ1dGVfZmxhZ3MgewoxNDQ3NDog IHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQzMl90IEVOQUJMRV9NQUdOSUZJQ0FUSU9OOjE7CjE0NDc0 OiAgIHVpbnQzMl90IElOVkVSU0VfVFJBTlNQQVJFTlRfQ0xBTVBJTkc6MTsKMTQ0NzQ6ICAgdWlu dDMyX3QgSE9SSVpPTlRBTF9NSVJST1I6MTsKMTQ0NzQ6ICAgdWludDMyX3QgVkVSVElDQUxfTUlS Uk9SOjE7CjE0NDc0OiAgIHVpbnQzMl90IElOVkVSVF9QSVhFTF9EQVRBOjE7CjE0NDc0OiAgIHVp bnQzMl90IFpFUk9fRVhQQU5TSU9OOjE7CjE0NDc0OiAgIHVpbnQzMl90IE1JTl9NQVhfSU5WRVJU OjE7CjE0NDc0OiAgIHVpbnQzMl90IEVOQUJMRV9DVVJTT1JfREVHQU1NQToxOwoxNDQ3NDogICB1 aW50MzJfdCBSRVNFUlZFRDoyNDsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDMyX3QgdmFs dWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfY3Vyc29yX2F0dHJpYnV0ZXMg ewoxNDQ3NDogIHVuaW9uIGxhcmdlX2ludGVnZXIgYWRkcmVzczsKMTQ0NzQ6ICB1aW50MzJfdCBw aXRjaDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3Qgd2lkdGg7CjE0NDc0OiAgdWlu dDMyX3QgaGVpZ2h0OwoxNDQ3NDogCjE0NDc0OiAgZW51bSBkY19jdXJzb3JfY29sb3JfZm9ybWF0 IGNvbG9yX2Zvcm1hdDsKMTQ0NzQ6ICB1aW50MzJfdCBzZHJfd2hpdGVfbGV2ZWw7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIGVudW0gZGNfcm90YXRpb25fYW5nbGUgcm90YXRpb25fYW5nbGU7CjE0 NDc0OiAKMTQ0NzQ6ICB1bmlvbiBkY19jdXJzb3JfYXR0cmlidXRlX2ZsYWdzIGF0dHJpYnV0ZV9m bGFnczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcHBfY3Vyc29yX2F0dHJpYnV0 ZXMgewoxNDQ3NDogIGludCBiaWFzOwoxNDQ3NDogIGludCBzY2FsZTsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2NvbG9yX3NwYWNlIHsKMTQ0NzQ6ICBD T0xPUl9TUEFDRV9VTktOT1dOLAoxNDQ3NDogIENPTE9SX1NQQUNFX1NSR0IsCjE0NDc0OiAgQ09M T1JfU1BBQ0VfWFJfUkdCLAoxNDQ3NDogIENPTE9SX1NQQUNFX1NSR0JfTElNSVRFRCwKMTQ0NzQ6 ICBDT0xPUl9TUEFDRV9NU1JFRl9TQ1JHQiwKMTQ0NzQ6ICBDT0xPUl9TUEFDRV9ZQ0JDUjYwMSwK MTQ0NzQ6ICBDT0xPUl9TUEFDRV9ZQ0JDUjcwOSwKMTQ0NzQ6ICBDT0xPUl9TUEFDRV9YVl9ZQ0Nf NzA5LAoxNDQ3NDogIENPTE9SX1NQQUNFX1hWX1lDQ182MDEsCjE0NDc0OiAgQ09MT1JfU1BBQ0Vf WUNCQ1I2MDFfTElNSVRFRCwKMTQ0NzQ6ICBDT0xPUl9TUEFDRV9ZQ0JDUjcwOV9MSU1JVEVELAox NDQ3NDogIENPTE9SX1NQQUNFXzIwMjBfUkdCX0ZVTExSQU5HRSwKMTQ0NzQ6ICBDT0xPUl9TUEFD RV8yMDIwX1JHQl9MSU1JVEVEUkFOR0UsCjE0NDc0OiAgQ09MT1JfU1BBQ0VfMjAyMF9ZQ0JDUiwK MTQ0NzQ6ICBDT0xPUl9TUEFDRV9BRE9CRVJHQiwKMTQ0NzQ6ICBDT0xPUl9TUEFDRV9EQ0lQMywK MTQ0NzQ6ICBDT0xPUl9TUEFDRV9ESVNQTEFZTkFUSVZFLAoxNDQ3NDogIENPTE9SX1NQQUNFX0RP TEJZVklTSU9OLAoxNDQ3NDogIENPTE9SX1NQQUNFX0FQUENUUkwsCjE0NDc0OiAgQ09MT1JfU1BB Q0VfQ1VTVE9NUE9JTlRTLAoxNDQ3NDogIENPTE9SX1NQQUNFX1lDQkNSNzA5X0JMQUNLLAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19kaXRoZXJfb3B0aW9uIHsKMTQ0NzQ6ICBESVRI RVJfT1BUSU9OX0RFRkFVTFQsCjE0NDc0OiAgRElUSEVSX09QVElPTl9ESVNBQkxFLAoxNDQ3NDog IERJVEhFUl9PUFRJT05fRk02LAoxNDQ3NDogIERJVEhFUl9PUFRJT05fRk04LAoxNDQ3NDogIERJ VEhFUl9PUFRJT05fRk0xMCwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX1NQQVRJQUw2X0ZSQU1FX1JB TkRPTSwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX1NQQVRJQUw4X0ZSQU1FX1JBTkRPTSwKMTQ0NzQ6 ICBESVRIRVJfT1BUSU9OX1NQQVRJQUwxMF9GUkFNRV9SQU5ET00sCjE0NDc0OiAgRElUSEVSX09Q VElPTl9TUEFUSUFMNiwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX1NQQVRJQUw4LAoxNDQ3NDogIERJ VEhFUl9PUFRJT05fU1BBVElBTDEwLAoxNDQ3NDogIERJVEhFUl9PUFRJT05fVFJVTjYsCjE0NDc0 OiAgRElUSEVSX09QVElPTl9UUlVOOCwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX1RSVU4xMCwKMTQ0 NzQ6ICBESVRIRVJfT1BUSU9OX1RSVU4xMF9TUEFUSUFMOCwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9O X1RSVU4xMF9TUEFUSUFMNiwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX1RSVU4xMF9GTTgsCjE0NDc0 OiAgRElUSEVSX09QVElPTl9UUlVOMTBfRk02LAoxNDQ3NDogIERJVEhFUl9PUFRJT05fVFJVTjEw X1NQQVRJQUw4X0ZNNiwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX1NQQVRJQUwxMF9GTTgsCjE0NDc0 OiAgRElUSEVSX09QVElPTl9TUEFUSUFMMTBfRk02LAoxNDQ3NDogIERJVEhFUl9PUFRJT05fVFJV TjhfU1BBVElBTDYsCjE0NDc0OiAgRElUSEVSX09QVElPTl9UUlVOOF9GTTYsCjE0NDc0OiAgRElU SEVSX09QVElPTl9TUEFUSUFMOF9GTTYsCjE0NDc0OiAgRElUSEVSX09QVElPTl9NQVggPSBESVRI RVJfT1BUSU9OX1NQQVRJQUw4X0ZNNiwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX0lOVkFMSUQKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfcXVhbnRpemF0aW9uX3JhbmdlIHsKMTQ0NzQ6 ICBRVUFOVElaQVRJT05fUkFOR0VfVU5LTk9XTiwKMTQ0NzQ6ICBRVUFOVElaQVRJT05fUkFOR0Vf RlVMTCwKMTQ0NzQ6ICBRVUFOVElaQVRJT05fUkFOR0VfTElNSVRFRAoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogZW51bSBkY19keW5hbWljX2V4cGFuc2lvbiB7CjE0NDc0OiAgRFlOX0VYUEFOU0lP Tl9BVVRPLAoxNDQ3NDogIERZTl9FWFBBTlNJT05fRElTQUJMRQoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNjYWxpbmdfdGFwcyB7CjE0NDc0 OiAgdWludDMyX3Qgdl90YXBzOwoxNDQ3NDogIHVpbnQzMl90IGhfdGFwczsKMTQ0NzQ6ICB1aW50 MzJfdCB2X3RhcHNfYzsKMTQ0NzQ6ICB1aW50MzJfdCBoX3RhcHNfYzsKMTQ0NzQ6ICBib29sIGlu dGVnZXJfc2NhbGluZzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfdGltaW5nX3N0 YW5kYXJkIHsKMTQ0NzQ6ICBEQ19USU1JTkdfU1RBTkRBUkRfVU5ERUZJTkVELAoxNDQ3NDogIERD X1RJTUlOR19TVEFOREFSRF9ETVQsCjE0NDc0OiAgRENfVElNSU5HX1NUQU5EQVJEX0dURiwKMTQ0 NzQ6ICBEQ19USU1JTkdfU1RBTkRBUkRfQ1ZULAoxNDQ3NDogIERDX1RJTUlOR19TVEFOREFSRF9D VlRfUkIsCjE0NDc0OiAgRENfVElNSU5HX1NUQU5EQVJEX0NFQTc3MCwKMTQ0NzQ6ICBEQ19USU1J TkdfU1RBTkRBUkRfQ0VBODYxLAoxNDQ3NDogIERDX1RJTUlOR19TVEFOREFSRF9IRE1JLAoxNDQ3 NDogIERDX1RJTUlOR19TVEFOREFSRF9UVl9OVFNDLAoxNDQ3NDogIERDX1RJTUlOR19TVEFOREFS RF9UVl9OVFNDX0osCjE0NDc0OiAgRENfVElNSU5HX1NUQU5EQVJEX1RWX1BBTCwKMTQ0NzQ6ICBE Q19USU1JTkdfU1RBTkRBUkRfVFZfUEFMX00sCjE0NDc0OiAgRENfVElNSU5HX1NUQU5EQVJEX1RW X1BBTF9DTiwKMTQ0NzQ6ICBEQ19USU1JTkdfU1RBTkRBUkRfVFZfU0VDQU0sCjE0NDc0OiAgRENf VElNSU5HX1NUQU5EQVJEX0VYUExJQ0lULAoxNDQ3NDogCjE0NDc0OiAgRENfVElNSU5HX1NUQU5E QVJEX1VTRVJfT1ZFUlJJREUsCjE0NDc0OiAKMTQ0NzQ6ICBEQ19USU1JTkdfU1RBTkRBUkRfTUFY CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2NvbG9yX2RlcHRoIHsKMTQ0NzQ6ICBD T0xPUl9ERVBUSF9VTkRFRklORUQsCjE0NDc0OiAgQ09MT1JfREVQVEhfNjY2LAoxNDQ3NDogIENP TE9SX0RFUFRIXzg4OCwKMTQ0NzQ6ICBDT0xPUl9ERVBUSF8xMDEwMTAsCjE0NDc0OiAgQ09MT1Jf REVQVEhfMTIxMjEyLAoxNDQ3NDogIENPTE9SX0RFUFRIXzE0MTQxNCwKMTQ0NzQ6ICBDT0xPUl9E RVBUSF8xNjE2MTYsCjE0NDc0OiAgQ09MT1JfREVQVEhfOTk5LAoxNDQ3NDogIENPTE9SX0RFUFRI XzExMTExMSwKMTQ0NzQ6ICBDT0xPUl9ERVBUSF9DT1VOVAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogZW51bSBkY19waXhlbF9lbmNvZGluZyB7CjE0NDc0OiAgUElYRUxfRU5DT0RJTkdfVU5ERUZJ TkVELAoxNDQ3NDogIFBJWEVMX0VOQ09ESU5HX1JHQiwKMTQ0NzQ6ICBQSVhFTF9FTkNPRElOR19Z Q0JDUjQyMiwKMTQ0NzQ6ICBQSVhFTF9FTkNPRElOR19ZQ0JDUjQ0NCwKMTQ0NzQ6ICBQSVhFTF9F TkNPRElOR19ZQ0JDUjQyMCwKMTQ0NzQ6ICBQSVhFTF9FTkNPRElOR19DT1VOVAoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19hc3BlY3RfcmF0aW8gewoxNDQ3NDogIEFTUEVDVF9SQVRJ T19OT19EQVRBLAoxNDQ3NDogIEFTUEVDVF9SQVRJT180XzMsCjE0NDc0OiAgQVNQRUNUX1JBVElP XzE2XzksCjE0NDc0OiAgQVNQRUNUX1JBVElPXzY0XzI3LAoxNDQ3NDogIEFTUEVDVF9SQVRJT18y NTZfMTM1LAoxNDQ3NDogIEFTUEVDVF9SQVRJT19GVVRVUkUKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IGVudW0gc2Nhbm5pbmdfdHlwZSB7CjE0NDc0OiAgU0NBTk5JTkdfVFlQRV9OT0RBVEEgPSAw LAoxNDQ3NDogIFNDQU5OSU5HX1RZUEVfT1ZFUlNDQU4sCjE0NDc0OiAgU0NBTk5JTkdfVFlQRV9V TkRFUlNDQU4sCjE0NDc0OiAgU0NBTk5JTkdfVFlQRV9GVVRVUkUsCjE0NDc0OiAgU0NBTk5JTkdf VFlQRV9VTkRFRklORUQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19jcnRjX3Rp bWluZ19mbGFncyB7CjE0NDc0OiAgdWludDMyX3QgSU5URVJMQUNFIDoxOwoxNDQ3NDogIHVpbnQz Ml90IEhTWU5DX1BPU0lUSVZFX1BPTEFSSVRZIDoxOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3Qg VlNZTkNfUE9TSVRJVkVfUE9MQVJJVFkgOjE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQz Ml90IEhPUlpfQ09VTlRfQllfVFdPOjE7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBFWENMVVNJ VkVfM0QgOjE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IFJJR0hUX0VZRV8zRF9Q T0xBUklUWSA6MTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IFNVQl9TQU1QTEVfM0QgOjE7CjE0 NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBVU0VfSU5fM0RfVklFV19PTkxZIDoxOwoxNDQ3NDogCjE0 NDc0OiAgdWludDMyX3QgU1RFUkVPXzNEX1BSRUZFUkVOQ0UgOjE7CjE0NDc0OiAKMTQ0NzQ6ICB1 aW50MzJfdCBZX09OTFkgOjE7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBZQ0JDUjQyMCA6MTsK MTQ0NzQ6ICB1aW50MzJfdCBEVERfQ09VTlRFUiA6NTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90 IEZPUkNFX0hEUiA6MTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBM VEVfMzQwTUNTQ19TQ1JBTUJMRToxOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgRFNDIDogMTsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfdGltaW5nXzNkX2Zvcm1hdCB7CjE0NDc0 OiAgVElNSU5HXzNEX0ZPUk1BVF9OT05FLAoxNDQ3NDogIFRJTUlOR18zRF9GT1JNQVRfRlJBTUVf QUxURVJOQVRFLAoxNDQ3NDogIFRJTUlOR18zRF9GT1JNQVRfSU5CQU5EX0ZBLAoxNDQ3NDogIFRJ TUlOR18zRF9GT1JNQVRfRFBfSERNSV9JTkJBTkRfRkEsCjE0NDc0OiAKMTQ0NzQ6ICBUSU1JTkdf M0RfRk9STUFUX1NJREVCQU5EX0ZBLAoxNDQ3NDogIFRJTUlOR18zRF9GT1JNQVRfSFdfRlJBTUVf UEFDS0lORywKMTQ0NzQ6ICBUSU1JTkdfM0RfRk9STUFUX1NXX0ZSQU1FX1BBQ0tJTkcsCjE0NDc0 OiAgVElNSU5HXzNEX0ZPUk1BVF9ST1dfSU5URVJMRUFWRSwKMTQ0NzQ6ICBUSU1JTkdfM0RfRk9S TUFUX0NPTFVNTl9JTlRFUkxFQVZFLAoxNDQ3NDogIFRJTUlOR18zRF9GT1JNQVRfUElYRUxfSU5U RVJMRUFWRSwKMTQ0NzQ6ICBUSU1JTkdfM0RfRk9STUFUX1NJREVfQllfU0lERSwKMTQ0NzQ6ICBU SU1JTkdfM0RfRk9STUFUX1RPUF9BTkRfQk9UVE9NLAoxNDQ3NDogIFRJTUlOR18zRF9GT1JNQVRf U0JTX1NXX1BBQ0tFRCwKMTQ0NzQ6IAoxNDQ3NDogIFRJTUlOR18zRF9GT1JNQVRfVEJfU1dfUEFD S0VELAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBUSU1JTkdfM0RfRk9STUFUX01BWCwKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19kc2NfY29uZmlnIHsKMTQ0NzQ6ICB1aW50MzJf dCBudW1fc2xpY2VzX2g7CjE0NDc0OiAgdWludDMyX3QgbnVtX3NsaWNlc192OwoxNDQ3NDogIHVp bnQzMl90IGJpdHNfcGVyX3BpeGVsOwoxNDQ3NDogIGJvb2wgYmxvY2tfcHJlZF9lbmFibGU7CjE0 NDc0OiAgdWludDMyX3QgbGluZWJ1Zl9kZXB0aDsKMTQ0NzQ6ICB1aW50MzJfdCB2ZXJzaW9uX21p bm9yOwoxNDQ3NDogIGJvb2wgeWNiY3I0MjJfc2ltcGxlOwoxNDQ3NDogIGludDMyX3QgcmNfYnVm ZmVyX3NpemU7CjE0NDc0OiB9OwoxNDQ3NDogc3RydWN0IGRjX2NydGNfdGltaW5nIHsKMTQ0NzQ6 ICB1aW50MzJfdCBoX3RvdGFsOwoxNDQ3NDogIHVpbnQzMl90IGhfYm9yZGVyX2xlZnQ7CjE0NDc0 OiAgdWludDMyX3QgaF9hZGRyZXNzYWJsZTsKMTQ0NzQ6ICB1aW50MzJfdCBoX2JvcmRlcl9yaWdo dDsKMTQ0NzQ6ICB1aW50MzJfdCBoX2Zyb250X3BvcmNoOwoxNDQ3NDogIHVpbnQzMl90IGhfc3lu Y193aWR0aDsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHZfdG90YWw7CjE0NDc0OiAgdWludDMy X3Qgdl9ib3JkZXJfdG9wOwoxNDQ3NDogIHVpbnQzMl90IHZfYWRkcmVzc2FibGU7CjE0NDc0OiAg dWludDMyX3Qgdl9ib3JkZXJfYm90dG9tOwoxNDQ3NDogIHVpbnQzMl90IHZfZnJvbnRfcG9yY2g7 CjE0NDc0OiAgdWludDMyX3Qgdl9zeW5jX3dpZHRoOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3Qg cGl4X2Nsa18xMDBoejsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHZpYzsKMTQ0NzQ6ICB1aW50 MzJfdCBoZG1pX3ZpYzsKMTQ0NzQ6ICBlbnVtIGRjX3RpbWluZ18zZF9mb3JtYXQgdGltaW5nXzNk X2Zvcm1hdDsKMTQ0NzQ6ICBlbnVtIGRjX2NvbG9yX2RlcHRoIGRpc3BsYXlfY29sb3JfZGVwdGg7 CjE0NDc0OiAgZW51bSBkY19waXhlbF9lbmNvZGluZyBwaXhlbF9lbmNvZGluZzsKMTQ0NzQ6ICBl bnVtIGRjX2FzcGVjdF9yYXRpbyBhc3BlY3RfcmF0aW87CjE0NDc0OiAgZW51bSBzY2FubmluZ190 eXBlIHNjYW5fdHlwZTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY19jcnRjX3RpbWluZ19mbGFn cyBmbGFnczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfZHNjX2NvbmZpZyBkc2NfY2ZnOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSB0cmlnZ2VyX2RlbGF5IHsKMTQ0NzQ6ICBUUklHR0VSX0RFTEFZ X05FWFRfUElYRUwgPSAwLAoxNDQ3NDogIFRSSUdHRVJfREVMQVlfTkVYVF9MSU5FLAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjcnRjX2V2ZW50IHsKMTQ0NzQ6ICBDUlRDX0VWRU5UX1ZT WU5DX1JJU0lORyA9IDAsCjE0NDc0OiAgQ1JUQ19FVkVOVF9WU1lOQ19GQUxMSU5HCjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY3J0Y190cmlnZ2VyX2luZm8gewoxNDQ3NDogIGJvb2wg ZW5hYmxlZDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpldmVudF9zb3VyY2U7CjE0 NDc0OiAgZW51bSBjcnRjX2V2ZW50IGV2ZW50OwoxNDQ3NDogIGVudW0gdHJpZ2dlcl9kZWxheSBk ZWxheTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19jcnRjX3RpbWluZ19hZGp1 c3QgewoxNDQ3NDogIHVpbnQzMl90IHZfdG90YWxfbWluOwoxNDQ3NDogIHVpbnQzMl90IHZfdG90 YWxfbWF4OwoxNDQ3NDogIHVpbnQzMl90IHZfdG90YWxfbWlkOwoxNDQ3NDogIHVpbnQzMl90IHZf dG90YWxfbWlkX2ZyYW1lX251bTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBlbnVtIHZyYW1fdHlwZSB7CjE0NDc0OiAgVklERU9fTUVNT1JZX1RZUEVfR0REUjUgPSAy LAoxNDQ3NDogIFZJREVPX01FTU9SWV9UWVBFX0REUjMgPSAzLAoxNDQ3NDogIFZJREVPX01FTU9S WV9UWVBFX0REUjQgPSA0LAoxNDQ3NDogIFZJREVPX01FTU9SWV9UWVBFX0hCTSA9IDUsCjE0NDc0 OiAgVklERU9fTUVNT1JZX1RZUEVfR0REUjYgPSA2LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBkd2JfY252X291dF9icGMgewoxNDQ3NDogIERXQl9DTlZfT1VUX0JQQ184QlBDID0gMCwK MTQ0NzQ6ICBEV0JfQ05WX09VVF9CUENfMTBCUEMgPSAxLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogZW51bSBkd2Jfb3V0cHV0X2RlcHRoIHsKMTQ0NzQ6ICBEV0JfT1VUUFVUX1BJWEVMX0RFUFRI XzhCUEMgPSAwLAoxNDQ3NDogIERXQl9PVVRQVVRfUElYRUxfREVQVEhfMTBCUEMgPSAxLAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkd2JfY2FwdHVyZV9yYXRlIHsKMTQ0NzQ6ICBkd2Jf Y2FwdHVyZV9yYXRlXzAgPSAwLAoxNDQ3NDogIGR3Yl9jYXB0dXJlX3JhdGVfMSA9IDEsCjE0NDc0 OiAgZHdiX2NhcHR1cmVfcmF0ZV8yID0gMiwKMTQ0NzQ6ICBkd2JfY2FwdHVyZV9yYXRlXzMgPSAz LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkd2Jfc2NhbGVyX21vZGUgewoxNDQ3NDog IGR3Yl9zY2FsZXJfbW9kZV9ieXBhc3M0NDQgPSAwLAoxNDQ3NDogIGR3Yl9zY2FsZXJfbW9kZV9y Z2I0NDQgPSAxLAoxNDQ3NDogIGR3Yl9zY2FsZXJfbW9kZV95dXY0NDQgPSAyLAoxNDQ3NDogIGR3 Yl9zY2FsZXJfbW9kZV95dXY0MjAgPSAzCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGR3 Yl9zdWJzYW1wbGVfcG9zaXRpb24gewoxNDQ3NDogIERXQl9JTlRFUlNUSVRJQUxfU1VCU0FNUExJ TkcgPSAwLAoxNDQ3NDogIERXQl9DT1NJVEVEX1NVQlNBTVBMSU5HID0gMQoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogZW51bSBkd2Jfc3RlcmVvX2V5ZV9zZWxlY3QgewoxNDQ3NDogIERXQl9TVEVS RU9fRVlFX0xFRlQgPSAxLAoxNDQ3NDogIERXQl9TVEVSRU9fRVlFX1JJR0hUID0gMiwKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZHdiX3N0ZXJlb190eXBlIHsKMTQ0NzQ6ICBEV0JfU1RF UkVPX1RZUEVfRlJBTUVfUEFDS0lORyA9IDAsCjE0NDc0OiAgRFdCX1NURVJFT19UWVBFX0ZSQU1F X1NFUVVFTlRJQUwgPSAzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBtY2lmX2J1Zl9wYXJhbXMgewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyBsdW1h X2FkZHJlc3NbNF07CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIGNocm9tYV9hZGRyZXNzWzRd OwoxNDQ3NDogIHVuc2lnbmVkIGludCBsdW1hX3BpdGNoOwoxNDQ3NDogIHVuc2lnbmVkIGludCBj aHJvbWFfcGl0Y2g7CjE0NDc0OiAgdW5zaWduZWQgaW50IHdhcm11cF9waXRjaDsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgc3dsb2NrOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCB0Z19jb2xvciB7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MTZfdCBjb2xvcl9yX2Ny OwoxNDQ3NDogIHVpbnQxNl90IGNvbG9yX2dfeTsKMTQ0NzQ6ICB1aW50MTZfdCBjb2xvcl9iX2Ni OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9kY190eXBlcy5oIiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2RhbF90eXBlcy5oIiAxCjE0NDc0OiAjIDI5ICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9kYWxfdHlwZXMu aCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2lu Y2x1ZGUvc2lnbmFsX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMzAgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2RhbF90eXBlcy5oIiAyCjE0NDc0OiAjIDEgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBlcy5oIiAxCjE0 NDc0OiAjIDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVk ZS9kYWxfdHlwZXMuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGFsX2xvZ2dlcjsKMTQ0NzQ6 IHN0cnVjdCBkY19iaW9zOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjZV92ZXJzaW9uIHsKMTQ0NzQ6 ICBEQ0VfVkVSU0lPTl9VTktOT1dOID0gKC0xKSwKMTQ0NzQ6ICBEQ0VfVkVSU0lPTl84XzAsCjE0 NDc0OiAgRENFX1ZFUlNJT05fOF8xLAoxNDQ3NDogIERDRV9WRVJTSU9OXzhfMywKMTQ0NzQ6ICBE Q0VfVkVSU0lPTl8xMF8wLAoxNDQ3NDogIERDRV9WRVJTSU9OXzExXzAsCjE0NDc0OiAgRENFX1ZF UlNJT05fMTFfMiwKMTQ0NzQ6ICBEQ0VfVkVSU0lPTl8xMV8yMiwKMTQ0NzQ6ICBEQ0VfVkVSU0lP Tl8xMl8wLAoxNDQ3NDogIERDRV9WRVJTSU9OXzEyXzEsCjE0NDc0OiAgRENFX1ZFUlNJT05fTUFY LAoxNDQ3NDogIERDTl9WRVJTSU9OXzFfMCwKMTQ0NzQ6ICBEQ05fVkVSU0lPTl8xXzAxLAoxNDQ3 NDogIERDTl9WRVJTSU9OXzJfMCwKMTQ0NzQ6ICBEQ05fVkVSU0lPTl8yXzEsCjE0NDc0OiAgRENO X1ZFUlNJT05fTUFYCjE0NDc0OiB9OwoxNDQ3NDogIyAzOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZ3JwaF9vYmplY3RfZGVmcy5o IiAxCjE0NDc0OiAjIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv aW5jbHVkZS9ncnBoX29iamVjdF9kZWZzLmgiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2lkLmgiIDEKMTQ0NzQ6 ICMgMzAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dy cGhfb2JqZWN0X2lkLmgiCjE0NDc0OiBlbnVtIG9iamVjdF90eXBlIHsKMTQ0NzQ6ICBPQkpFQ1Rf VFlQRV9VTktOT1dOID0gMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgT0JKRUNUX1RZUEVfR1BV LAoxNDQ3NDogIE9CSkVDVF9UWVBFX0VOQ09ERVIsCjE0NDc0OiAgT0JKRUNUX1RZUEVfQ09OTkVD VE9SLAoxNDQ3NDogIE9CSkVDVF9UWVBFX1JPVVRFUiwKMTQ0NzQ6ICBPQkpFQ1RfVFlQRV9HRU5F UklDLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBPQkpFQ1RfVFlQRV9BVURJTywKMTQ0NzQ6ICBP QkpFQ1RfVFlQRV9DT05UUk9MTEVSLAoxNDQ3NDogIE9CSkVDVF9UWVBFX0NMT0NLX1NPVVJDRSwK MTQ0NzQ6ICBPQkpFQ1RfVFlQRV9FTkdJTkUsCjE0NDc0OiAKMTQ0NzQ6ICBPQkpFQ1RfVFlQRV9D T1VOVAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIG9iamVjdF9lbnVtX2lk IHsKMTQ0NzQ6ICBFTlVNX0lEX1VOS05PV04gPSAwLAoxNDQ3NDogIEVOVU1fSURfMSwKMTQ0NzQ6 ICBFTlVNX0lEXzIsCjE0NDc0OiAgRU5VTV9JRF8zLAoxNDQ3NDogIEVOVU1fSURfNCwKMTQ0NzQ6 ICBFTlVNX0lEXzUsCjE0NDc0OiAgRU5VTV9JRF82LAoxNDQ3NDogIEVOVU1fSURfNywKMTQ0NzQ6 IAoxNDQ3NDogIEVOVU1fSURfQ09VTlQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBnZW5lcmljX2lkIHsKMTQ0NzQ6ICBHRU5FUklDX0lEX1VOS05PV04gPSAwLAoxNDQ3NDog IEdFTkVSSUNfSURfTVhNX09QTSwKMTQ0NzQ6ICBHRU5FUklDX0lEX0dMU1lOQywKMTQ0NzQ6ICBH RU5FUklDX0lEX1NURVJFTywKMTQ0NzQ6IAoxNDQ3NDogIEdFTkVSSUNfSURfQ09VTlQKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjb250cm9sbGVyX2lkIHsKMTQ0NzQ6ICBD T05UUk9MTEVSX0lEX1VOREVGSU5FRCA9IDAsCjE0NDc0OiAgQ09OVFJPTExFUl9JRF9EMCwKMTQ0 NzQ6ICBDT05UUk9MTEVSX0lEX0QxLAoxNDQ3NDogIENPTlRST0xMRVJfSURfRDIsCjE0NDc0OiAg Q09OVFJPTExFUl9JRF9EMywKMTQ0NzQ6ICBDT05UUk9MTEVSX0lEX0Q0LAoxNDQ3NDogIENPTlRS T0xMRVJfSURfRDUsCjE0NDc0OiAgQ09OVFJPTExFUl9JRF9VTkRFUkxBWTAsCjE0NDc0OiAgQ09O VFJPTExFUl9JRF9NQVggPSBDT05UUk9MTEVSX0lEX1VOREVSTEFZMAoxNDQ3NDogfTsKMTQ0NzQ6 ICMgOTMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dy cGhfb2JqZWN0X2lkLmgiCjE0NDc0OiBlbnVtIGNsb2NrX3NvdXJjZV9pZCB7CjE0NDc0OiAgQ0xP Q0tfU09VUkNFX0lEX1VOREVGSU5FRCA9IDAsCjE0NDc0OiAgQ0xPQ0tfU09VUkNFX0lEX1BMTDAs CjE0NDc0OiAgQ0xPQ0tfU09VUkNFX0lEX1BMTDEsCjE0NDc0OiAgQ0xPQ0tfU09VUkNFX0lEX1BM TDIsCjE0NDc0OiAgQ0xPQ0tfU09VUkNFX0lEX0VYVEVSTkFMLAoxNDQ3NDogIENMT0NLX1NPVVJD RV9JRF9EQ1BMTCwKMTQ0NzQ6ICBDTE9DS19TT1VSQ0VfSURfREZTLAoxNDQ3NDogIENMT0NLX1NP VVJDRV9JRF9WQ0UsCjE0NDc0OiAKMTQ0NzQ6ICBDTE9DS19TT1VSQ0VfSURfRFBfRFRPLAoxNDQ3 NDogCjE0NDc0OiAgQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9QTEwwLAoxNDQ3NDogIENMT0NLX1NP VVJDRV9DT01CT19QSFlfUExMMSwKMTQ0NzQ6ICBDTE9DS19TT1VSQ0VfQ09NQk9fUEhZX1BMTDIs CjE0NDc0OiAgQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9QTEwzLAoxNDQ3NDogIENMT0NLX1NPVVJD RV9DT01CT19QSFlfUExMNCwKMTQ0NzQ6ICBDTE9DS19TT1VSQ0VfQ09NQk9fUEhZX1BMTDUsCjE0 NDc0OiAgQ0xPQ0tfU09VUkNFX0NPTUJPX0RJU1BMQVlfUExMMAoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBlbnVtIGVuY29kZXJfaWQgewoxNDQ3NDogIEVOQ09ERVJfSURfVU5LTk9X TiA9IDAsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIEVOQ09ERVJfSURfSU5URVJOQUxfTFZEUywK MTQ0NzQ6ICBFTkNPREVSX0lEX0lOVEVSTkFMX1RNRFMxLAoxNDQ3NDogIEVOQ09ERVJfSURfSU5U RVJOQUxfVE1EUzIsCjE0NDc0OiAgRU5DT0RFUl9JRF9JTlRFUk5BTF9EQUMxLAoxNDQ3NDogIEVO Q09ERVJfSURfSU5URVJOQUxfREFDMiwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRU5DT0RFUl9J RF9JTlRFUk5BTF9MVlRNMSwKMTQ0NzQ6ICBFTkNPREVSX0lEX0lOVEVSTkFMX0hETUksCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIEVOQ09ERVJfSURfSU5URVJOQUxfS0xEU0NQX1RNRFMxLAoxNDQ3 NDogIEVOQ09ERVJfSURfSU5URVJOQUxfS0xEU0NQX0RBQzEsCjE0NDc0OiAgRU5DT0RFUl9JRF9J TlRFUk5BTF9LTERTQ1BfREFDMiwKMTQ0NzQ6IAoxNDQ3NDogIEVOQ09ERVJfSURfRVhURVJOQUxf TVZQVV9GUEdBLAoxNDQ3NDogIEVOQ09ERVJfSURfSU5URVJOQUxfRERJLAoxNDQ3NDogIEVOQ09E RVJfSURfSU5URVJOQUxfVU5JUEhZLAoxNDQ3NDogIEVOQ09ERVJfSURfSU5URVJOQUxfS0xEU0NQ X0xWVE1BLAoxNDQ3NDogIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMSwKMTQ0NzQ6ICBFTkNP REVSX0lEX0lOVEVSTkFMX1VOSVBIWTIsCjE0NDc0OiAgRU5DT0RFUl9JRF9FWFRFUk5BTF9OVVRN RUcsCjE0NDc0OiAgRU5DT0RFUl9JRF9FWFRFUk5BTF9UUkFWSVMsCjE0NDc0OiAKMTQ0NzQ6ICBF TkNPREVSX0lEX0lOVEVSTkFMX1dJUkVMRVNTLAoxNDQ3NDogIEVOQ09ERVJfSURfSU5URVJOQUxf VU5JUEhZMywKMTQ0NzQ6ICBFTkNPREVSX0lEX0lOVEVSTkFMX1ZJUlRVQUwsCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gY29ubmVjdG9yX2lkIHsKMTQ0NzQ6ICBDT05ORUNU T1JfSURfVU5LTk9XTiA9IDAsCjE0NDc0OiAgQ09OTkVDVE9SX0lEX1NJTkdMRV9MSU5LX0RWSUkg PSAxLAoxNDQ3NDogIENPTk5FQ1RPUl9JRF9EVUFMX0xJTktfRFZJSSA9IDIsCjE0NDc0OiAgQ09O TkVDVE9SX0lEX1NJTkdMRV9MSU5LX0RWSUQgPSAzLAoxNDQ3NDogIENPTk5FQ1RPUl9JRF9EVUFM X0xJTktfRFZJRCA9IDQsCjE0NDc0OiAgQ09OTkVDVE9SX0lEX1ZHQSA9IDUsCjE0NDc0OiAgQ09O TkVDVE9SX0lEX0hETUlfVFlQRV9BID0gMTIsCjE0NDc0OiAgQ09OTkVDVE9SX0lEX0xWRFMgPSAx NCwKMTQ0NzQ6ICBDT05ORUNUT1JfSURfUENJRSA9IDE2LAoxNDQ3NDogIENPTk5FQ1RPUl9JRF9I QVJEQ09ERV9EVkkgPSAxOCwKMTQ0NzQ6ICBDT05ORUNUT1JfSURfRElTUExBWV9QT1JUID0gMTks CjE0NDc0OiAgQ09OTkVDVE9SX0lEX0VEUCA9IDIwLAoxNDQ3NDogIENPTk5FQ1RPUl9JRF9NWE0g PSAyMSwKMTQ0NzQ6ICBDT05ORUNUT1JfSURfV0lSRUxFU1MgPSAyMiwKMTQ0NzQ6ICBDT05ORUNU T1JfSURfTUlSQUNBU1QgPSAyMywKMTQ0NzQ6IAoxNDQ3NDogIENPTk5FQ1RPUl9JRF9WSVJUVUFM ID0gMTAwCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXVkaW9faWQgewox NDQ3NDogIEFVRElPX0lEX1VOS05PV04gPSAwLAoxNDQ3NDogIEFVRElPX0lEX0lOVEVSTkFMX0Fa QUxJQQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGVuZ2luZV9pZCB7CjE0 NDc0OiAgRU5HSU5FX0lEX0RJR0EsCjE0NDc0OiAgRU5HSU5FX0lEX0RJR0IsCjE0NDc0OiAgRU5H SU5FX0lEX0RJR0MsCjE0NDc0OiAgRU5HSU5FX0lEX0RJR0QsCjE0NDc0OiAgRU5HSU5FX0lEX0RJ R0UsCjE0NDc0OiAgRU5HSU5FX0lEX0RJR0YsCjE0NDc0OiAgRU5HSU5FX0lEX0RJR0csCjE0NDc0 OiAgRU5HSU5FX0lEX0RBQ0EsCjE0NDc0OiAgRU5HSU5FX0lEX0RBQ0IsCjE0NDc0OiAgRU5HSU5F X0lEX1ZDRSwKMTQ0NzQ6ICBFTkdJTkVfSURfVklSVFVBTCwKMTQ0NzQ6IAoxNDQ3NDogIEVOR0lO RV9JRF9DT1VOVCwKMTQ0NzQ6ICBFTkdJTkVfSURfVU5LTk9XTiA9ICgtMUwpCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBlbnVtIHRyYW5zbWl0dGVyX2NvbG9yX2RlcHRoIHsKMTQ0NzQ6ICBUUkFO U01JVFRFUl9DT0xPUl9ERVBUSF8yNCA9IDAsCjE0NDc0OiAgVFJBTlNNSVRURVJfQ09MT1JfREVQ VEhfMzAsCjE0NDc0OiAgVFJBTlNNSVRURVJfQ09MT1JfREVQVEhfMzYsCjE0NDc0OiAgVFJBTlNN SVRURVJfQ09MT1JfREVQVEhfNDgKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZHBfYWx0 X21vZGUgewoxNDQ3NDogIERQX0FsdF9tb2RlX19Vbmtub3duID0gMCwKMTQ0NzQ6ICBEUF9BbHRf bW9kZV9fQ29ubmVjdCwKMTQ0NzQ6ICBEUF9BbHRfbW9kZV9fTm9Db25uZWN0LAoxNDQ3NDogfTsK MTQ0NzQ6ICMgMjIwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5j bHVkZS9ncnBoX29iamVjdF9pZC5oIgoxNDQ3NDogc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCB7 CjE0NDc0OiAgdWludDMyX3QgaWQ6ODsKMTQ0NzQ6ICB1aW50MzJfdCBlbnVtX2lkOjQ7CjE0NDc0 OiAgdWludDMyX3QgdHlwZTo0OwoxNDQ3NDogIHVpbnQzMl90IHJlc2VydmVkOjE2OwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBncmFwaGljc19vYmplY3Rf aWQgZGFsX2dyYXBoaWNzX29iamVjdF9pZF9pbml0KAoxNDQ3NDogIHVpbnQzMl90IGlkLAoxNDQ3 NDogIGVudW0gb2JqZWN0X2VudW1faWQgZW51bV9pZCwKMTQ0NzQ6ICBlbnVtIG9iamVjdF90eXBl IHR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCByZXN1bHQg PSB7CjE0NDc0OiAgIGlkLCBlbnVtX2lkLCB0eXBlLCAwCjE0NDc0OiAgfTsKMTQ0NzQ6IAoxNDQ3 NDogIHJldHVybiByZXN1bHQ7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdWludDMy X3QgZGFsX2dyYXBoaWNzX29iamVjdF9pZF90b191aW50KAoxNDQ3NDogIHN0cnVjdCBncmFwaGlj c19vYmplY3RfaWQgaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGlkLmlkICsgKGlkLmVudW1f aWQgPDwgMHg4KSArIChpZC50eXBlIDw8IDB4Yyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGVu dW0gY29udHJvbGxlcl9pZCBkYWxfZ3JhcGhpY3Nfb2JqZWN0X2lkX2dldF9jb250cm9sbGVyX2lk KAoxNDQ3NDogIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgaWQpCjE0NDc0OiB7CjE0NDc0OiAg aWYgKGlkLnR5cGUgPT0gT0JKRUNUX1RZUEVfQ09OVFJPTExFUikKMTQ0NzQ6ICAgcmV0dXJuIChl bnVtIGNvbnRyb2xsZXJfaWQpIGlkLmlkOwoxNDQ3NDogIHJldHVybiBDT05UUk9MTEVSX0lEX1VO REVGSU5FRDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgZW51bSBjbG9ja19zb3VyY2VfaWQgZGFs X2dyYXBoaWNzX29iamVjdF9pZF9nZXRfY2xvY2tfc291cmNlX2lkKAoxNDQ3NDogIHN0cnVjdCBn cmFwaGljc19vYmplY3RfaWQgaWQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGlkLnR5cGUgPT0gT0JK RUNUX1RZUEVfQ0xPQ0tfU09VUkNFKQoxNDQ3NDogICByZXR1cm4gKGVudW0gY2xvY2tfc291cmNl X2lkKSBpZC5pZDsKMTQ0NzQ6ICByZXR1cm4gQ0xPQ0tfU09VUkNFX0lEX1VOREVGSU5FRDsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgZW51bSBlbmNvZGVyX2lkIGRhbF9ncmFwaGljc19vYmplY3Rf aWRfZ2V0X2VuY29kZXJfaWQoCjE0NDc0OiAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBpZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoaWQudHlwZSA9PSBPQkpFQ1RfVFlQRV9FTkNPREVSKQoxNDQ3 NDogICByZXR1cm4gKGVudW0gZW5jb2Rlcl9pZCkgaWQuaWQ7CjE0NDc0OiAgcmV0dXJuIEVOQ09E RVJfSURfVU5LTk9XTjsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgZW51bSBjb25uZWN0b3JfaWQg ZGFsX2dyYXBoaWNzX29iamVjdF9pZF9nZXRfY29ubmVjdG9yX2lkKAoxNDQ3NDogIHN0cnVjdCBn cmFwaGljc19vYmplY3RfaWQgaWQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGlkLnR5cGUgPT0gT0JK RUNUX1RZUEVfQ09OTkVDVE9SKQoxNDQ3NDogICByZXR1cm4gKGVudW0gY29ubmVjdG9yX2lkKSBp ZC5pZDsKMTQ0NzQ6ICByZXR1cm4gQ09OTkVDVE9SX0lEX1VOS05PV047CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGVudW0gYXVkaW9faWQgZGFsX2dyYXBoaWNzX29iamVjdF9pZF9nZXRfYXVkaW9f aWQoCjE0NDc0OiAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBpZCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBpZiAoaWQudHlwZSA9PSBPQkpFQ1RfVFlQRV9BVURJTykKMTQ0NzQ6ICAgcmV0dXJuIChlbnVt IGF1ZGlvX2lkKSBpZC5pZDsKMTQ0NzQ6ICByZXR1cm4gQVVESU9fSURfVU5LTk9XTjsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgZW51bSBlbmdpbmVfaWQgZGFsX2dyYXBoaWNzX29iamVjdF9pZF9n ZXRfZW5naW5lX2lkKAoxNDQ3NDogIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgaWQpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKGlkLnR5cGUgPT0gT0JKRUNUX1RZUEVfRU5HSU5FKQoxNDQ3NDogICBy ZXR1cm4gKGVudW0gZW5naW5lX2lkKSBpZC5pZDsKMTQ0NzQ6ICByZXR1cm4gRU5HSU5FX0lEX1VO S05PV047CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGFsX2dyYXBoaWNzX29iamVjdF9p ZF9lcXVhbCgKMTQ0NzQ6ICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGlkXzEsCjE0NDc0OiAg c3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBpZF8yKQoxNDQ3NDogewoxNDQ3NDogIGlmICgoaWRf MS5pZCA9PSBpZF8yLmlkKSAmJiAoaWRfMS5lbnVtX2lkID09IGlkXzIuZW51bV9pZCkgJiYKMTQ0 NzQ6ICAgKGlkXzEudHlwZSA9PSBpZF8yLnR5cGUpKSB7CjE0NDc0OiAgIHJldHVybiB0cnVlOwox NDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gZmFsc2U7CjE0NDc0OiB9CjE0NDc0OiAjIDMwICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9k ZWZzLmgiIDIKMTQ0NzQ6ICMgNDUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2RlZnMuaCIKMTQ0NzQ6IGVudW0gaHBkX3NvdXJjZV9p ZCB7CjE0NDc0OiAgSFBEX1NPVVJDRUlEMSA9IDAsCjE0NDc0OiAgSFBEX1NPVVJDRUlEMiwKMTQ0 NzQ6ICBIUERfU09VUkNFSUQzLAoxNDQ3NDogIEhQRF9TT1VSQ0VJRDQsCjE0NDc0OiAgSFBEX1NP VVJDRUlENSwKMTQ0NzQ6ICBIUERfU09VUkNFSUQ2LAoxNDQ3NDogCjE0NDc0OiAgSFBEX1NPVVJD RUlEX0NPVU5ULAoxNDQ3NDogIEhQRF9TT1VSQ0VJRF9VTktOT1dOCjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IGVudW0gY2hhbm5lbF9pZCB7CjE0NDc0OiAgQ0hBTk5FTF9JRF9VTktO T1dOID0gMCwKMTQ0NzQ6ICBDSEFOTkVMX0lEX0REQzEsCjE0NDc0OiAgQ0hBTk5FTF9JRF9EREMy LAoxNDQ3NDogIENIQU5ORUxfSURfRERDMywKMTQ0NzQ6ICBDSEFOTkVMX0lEX0REQzQsCjE0NDc0 OiAgQ0hBTk5FTF9JRF9EREM1LAoxNDQ3NDogIENIQU5ORUxfSURfRERDNiwKMTQ0NzQ6ICBDSEFO TkVMX0lEX0REQ19WR0EsCjE0NDc0OiAgQ0hBTk5FTF9JRF9JMkNfUEFELAoxNDQ3NDogIENIQU5O RUxfSURfQ09VTlQKMTQ0NzQ6IH07CjE0NDc0OiAjIDgxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9kZWZzLmgiCjE0NDc0OiBlbnVt IHRyYW5zbWl0dGVyIHsKMTQ0NzQ6ICBUUkFOU01JVFRFUl9VTktOT1dOID0gKC0xTCksCjE0NDc0 OiAgVFJBTlNNSVRURVJfVU5JUEhZX0EsCjE0NDc0OiAgVFJBTlNNSVRURVJfVU5JUEhZX0IsCjE0 NDc0OiAgVFJBTlNNSVRURVJfVU5JUEhZX0MsCjE0NDc0OiAgVFJBTlNNSVRURVJfVU5JUEhZX0Qs CjE0NDc0OiAgVFJBTlNNSVRURVJfVU5JUEhZX0UsCjE0NDc0OiAgVFJBTlNNSVRURVJfVU5JUEhZ X0YsCjE0NDc0OiAgVFJBTlNNSVRURVJfTlVUTUVHX0NSVCwKMTQ0NzQ6ICBUUkFOU01JVFRFUl9U UkFWSVNfQ1JULAoxNDQ3NDogIFRSQU5TTUlUVEVSX1RSQVZJU19MQ0QsCjE0NDc0OiAgVFJBTlNN SVRURVJfVU5JUEhZX0csCjE0NDc0OiAgVFJBTlNNSVRURVJfQ09VTlQKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHN5bmNfc291cmNlIHsKMTQ0NzQ6ICBTWU5D X1NPVVJDRV9OT05FID0gMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgU1lOQ19TT1VSQ0VfQ09O VFJPTExFUjAsCjE0NDc0OiAgU1lOQ19TT1VSQ0VfQ09OVFJPTExFUjEsCjE0NDc0OiAgU1lOQ19T T1VSQ0VfQ09OVFJPTExFUjIsCjE0NDc0OiAgU1lOQ19TT1VSQ0VfQ09OVFJPTExFUjMsCjE0NDc0 OiAgU1lOQ19TT1VSQ0VfQ09OVFJPTExFUjQsCjE0NDc0OiAgU1lOQ19TT1VSQ0VfQ09OVFJPTExF UjUsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFNZTkNfU09VUkNFX0dTTF9HUk9VUDAsCjE0NDc0 OiAgU1lOQ19TT1VSQ0VfR1NMX0dST1VQMSwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9HU0xfR1JPVVAy LAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFNZTkNfU09VUkNFX0dTTF9JT19GSVJT VCwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9HU0xfSU9fR0VOTE9DS19DTE9DSyA9IFNZTkNfU09VUkNF X0dTTF9JT19GSVJTVCwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9HU0xfSU9fR0VOTE9DS19WU1lOQywK MTQ0NzQ6ICBTWU5DX1NPVVJDRV9HU0xfSU9fU1dBUExPQ0tfQSwKMTQ0NzQ6ICBTWU5DX1NPVVJD RV9HU0xfSU9fU1dBUExPQ0tfQiwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9HU0xfSU9fTEFTVCA9IFNZ TkNfU09VUkNFX0dTTF9JT19TV0FQTE9DS19CLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBTWU5D X1NPVVJDRV9JT19GSVJTVCwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9JT19HRU5FUklDX0EgPSBTWU5D X1NPVVJDRV9JT19GSVJTVCwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9JT19HRU5FUklDX0IsCjE0NDc0 OiAgU1lOQ19TT1VSQ0VfSU9fR0VORVJJQ19DLAoxNDQ3NDogIFNZTkNfU09VUkNFX0lPX0dFTkVS SUNfRCwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9JT19HRU5FUklDX0UsCjE0NDc0OiAgU1lOQ19TT1VS Q0VfSU9fR0VORVJJQ19GLAoxNDQ3NDogIFNZTkNfU09VUkNFX0lPX0hQRDEsCjE0NDc0OiAgU1lO Q19TT1VSQ0VfSU9fSFBEMiwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9JT19IU1lOQ19BLAoxNDQ3NDog IFNZTkNfU09VUkNFX0lPX1ZTWU5DX0EsCjE0NDc0OiAgU1lOQ19TT1VSQ0VfSU9fSFNZTkNfQiwK MTQ0NzQ6ICBTWU5DX1NPVVJDRV9JT19WU1lOQ19CLAoxNDQ3NDogIFNZTkNfU09VUkNFX0lPX0xB U1QgPSBTWU5DX1NPVVJDRV9JT19WU1lOQ19CLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBTWU5D X1NPVVJDRV9EVUFMX0dQVV9QSU4KMTQ0NzQ6IH07CjE0NDc0OiAjIDE1MSAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZ3JwaF9vYmplY3RfZGVmcy5oIgox NDQ3NDogZW51bSBjb25uZWN0b3JfbGF5b3V0X3R5cGUgewoxNDQ3NDogIENPTk5FQ1RPUl9MQVlP VVRfVFlQRV9VTktOT1dOLAoxNDQ3NDogIENPTk5FQ1RPUl9MQVlPVVRfVFlQRV9EVklfRCwKMTQ0 NzQ6ICBDT05ORUNUT1JfTEFZT1VUX1RZUEVfRFZJX0ksCjE0NDc0OiAgQ09OTkVDVE9SX0xBWU9V VF9UWVBFX1ZHQSwKMTQ0NzQ6ICBDT05ORUNUT1JfTEFZT1VUX1RZUEVfSERNSSwKMTQ0NzQ6ICBD T05ORUNUT1JfTEFZT1VUX1RZUEVfRFAsCjE0NDc0OiAgQ09OTkVDVE9SX0xBWU9VVF9UWVBFX01J TklfRFAsCjE0NDc0OiB9OwoxNDQ3NDogc3RydWN0IGNvbm5lY3Rvcl9sYXlvdXRfaW5mbyB7CjE0 NDc0OiAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBjb25uZWN0b3JfaWQ7CjE0NDc0OiAgZW51 bSBjb25uZWN0b3JfbGF5b3V0X3R5cGUgY29ubmVjdG9yX3R5cGU7CjE0NDc0OiAgdW5zaWduZWQg aW50IGxlbmd0aDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcG9zaXRpb247CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzbG90X2xheW91dF9pbmZvIHsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgbGVuZ3RoOwoxNDQ3NDogIHVuc2lnbmVkIGludCB3aWR0aDsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgbnVtX29mX2Nvbm5lY3RvcnM7CjE0NDc0OiAgc3RydWN0IGNvbm5lY3Rvcl9sYXlv dXRfaW5mbyBjb25uZWN0b3JzWygxNildOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGJvYXJkX2xheW91dF9pbmZvIHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbnVtX29mX3Nsb3RzOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaXNfbnVtYmVyX29mX3Nsb3RzX3Zh bGlkIDogMTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaXNfc2xvdHNfc2l6ZV92YWxpZCA6IDE7CjE0 NDc0OiAgdW5zaWduZWQgaW50IGlzX2Nvbm5lY3Rvcl9vZmZzZXRzX3ZhbGlkIDogMTsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgaXNfY29ubmVjdG9yX2xlbmd0aHNfdmFsaWQgOiAxOwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IHNsb3RfbGF5b3V0X2luZm8gc2xvdHNbKDQpXTsKMTQ0NzQ6IH07CjE0NDc0 OiAjIDM5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfdHlw ZXMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGRjX3BsYW5lX3N0YXRlOwoxNDQ3NDogc3RydWN0IGRjX3N0cmVhbV9zdGF0 ZTsKMTQ0NzQ6IHN0cnVjdCBkY19saW5rOwoxNDQ3NDogc3RydWN0IGRjX3Npbms7CjE0NDc0OiBz dHJ1Y3QgZGFsOwoxNDQ3NDogc3RydWN0IGRjX2RtdWJfc3J2OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjZV9lbnZpcm9ubWVudCB7CjE0NDc0OiAgRENFX0VO Vl9QUk9EVUNUSU9OX0RSViA9IDAsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRENF X0VOVl9GUEdBX01BWElNVVMsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERDRV9FTlZfRElBRywK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERDRV9FTlZfVklSVFVBTF9I VwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNzggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9kY190eXBlcy5oIgoxNDQ3NDogc3RydWN0IGh3X2FzaWNfaWQgewoxNDQ3NDog IHVpbnQzMl90IGNoaXBfaWQ7CjE0NDc0OiAgdWludDMyX3QgY2hpcF9mYW1pbHk7CjE0NDc0OiAg dWludDMyX3QgcGNpX3JldmlzaW9uX2lkOwoxNDQ3NDogIHVpbnQzMl90IGh3X2ludGVybmFsX3Jl djsKMTQ0NzQ6ICB1aW50MzJfdCB2cmFtX3R5cGU7CjE0NDc0OiAgdWludDMyX3QgdnJhbV93aWR0 aDsKMTQ0NzQ6ICB1aW50MzJfdCBmZWF0dXJlX2ZsYWdzOwoxNDQ3NDogIHVpbnQzMl90IGZha2Vf cGF0aHNfbnVtOwoxNDQ3NDogIHZvaWQgKmF0b21iaW9zX2Jhc2VfYWRkcmVzczsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19wZXJmX3RyYWNlIHsKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIHJlYWRfY291bnQ7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB3cml0ZV9jb3VudDsKMTQ0NzQ6 ICB1bnNpZ25lZCBsb25nIGxhc3RfZW50cnlfcmVhZDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxh c3RfZW50cnlfd3JpdGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfY29udGV4 dCB7CjE0NDc0OiAgc3RydWN0IGRjICpkYzsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKmRyaXZlcl9j b250ZXh0OwoxNDQ3NDogIHN0cnVjdCBkY19wZXJmX3RyYWNlICpwZXJmX3RyYWNlOwoxNDQ3NDog IHZvaWQgKmNnc19kZXZpY2U7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRjZV9lbnZpcm9ubWVudCBk Y2VfZW52aXJvbm1lbnQ7CjE0NDc0OiAgc3RydWN0IGh3X2FzaWNfaWQgYXNpY19pZDsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gZGNlX3ZlcnNpb24gZGNlX3Zl cnNpb247CjE0NDc0OiAgc3RydWN0IGRjX2Jpb3MgKmRjX2Jpb3M7CjE0NDc0OiAgYm9vbCBjcmVh dGVkX2Jpb3M7CjE0NDc0OiAgc3RydWN0IGdwaW9fc2VydmljZSAqZ3Bpb19zZXJ2aWNlOwoxNDQ3 NDogIHVpbnQzMl90IGRjX3NpbmtfaWRfY291bnQ7CjE0NDc0OiAgdWludDMyX3QgZGNfc3RyZWFt X2lkX2NvdW50OwoxNDQ3NDogIHVpbnQ2NF90IGZiY19ncHVfYWRkcjsKMTQ0NzQ6ICBzdHJ1Y3Qg ZGNfZG11Yl9zcnYgKmRtdWJfc3J2OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiB9OwoxNDQ3NDogIyAxMzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9kY190eXBlcy5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvZGMvZGNfZGRjX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMjggIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY19kZGNfdHlwZXMuaCIKMTQ0NzQ6 IGVudW0gYXV4X3RyYW5zYWN0aW9uX3R5cGUgewoxNDQ3NDogIEFVWF9UUkFOU0FDVElPTl9UWVBF X0RQLAoxNDQ3NDogIEFVWF9UUkFOU0FDVElPTl9UWVBFX0kyQwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBlbnVtIGkyY2F1eF90cmFuc2FjdGlvbl9hY3Rpb24gewoxNDQ3NDogIEky Q0FVWF9UUkFOU0FDVElPTl9BQ1RJT05fSTJDX1dSSVRFID0gMHgwMCwKMTQ0NzQ6ICBJMkNBVVhf VFJBTlNBQ1RJT05fQUNUSU9OX0kyQ19SRUFEID0gMHgxMCwKMTQ0NzQ6ICBJMkNBVVhfVFJBTlNB Q1RJT05fQUNUSU9OX0kyQ19TVEFUVVNfUkVRVUVTVCA9IDB4MjAsCjE0NDc0OiAKMTQ0NzQ6ICBJ MkNBVVhfVFJBTlNBQ1RJT05fQUNUSU9OX0kyQ19XUklURV9NT1QgPSAweDQwLAoxNDQ3NDogIEky Q0FVWF9UUkFOU0FDVElPTl9BQ1RJT05fSTJDX1JFQURfTU9UID0gMHg1MCwKMTQ0NzQ6ICBJMkNB VVhfVFJBTlNBQ1RJT05fQUNUSU9OX0kyQ19TVEFUVVNfUkVRVUVTVF9NT1QgPSAweDYwLAoxNDQ3 NDogCjE0NDc0OiAgSTJDQVVYX1RSQU5TQUNUSU9OX0FDVElPTl9EUF9XUklURSA9IDB4ODAsCjE0 NDc0OiAgSTJDQVVYX1RSQU5TQUNUSU9OX0FDVElPTl9EUF9SRUFEID0gMHg5MAoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSBhdXhfY2hhbm5lbF9vcGVyYXRpb25fcmVzdWx0IHsKMTQ0NzQ6 ICBBVVhfQ0hBTk5FTF9PUEVSQVRJT05fU1VDQ0VFREVELAoxNDQ3NDogIEFVWF9DSEFOTkVMX09Q RVJBVElPTl9GQUlMRURfUkVBU09OX1VOS05PV04sCjE0NDc0OiAgQVVYX0NIQU5ORUxfT1BFUkFU SU9OX0ZBSUxFRF9JTlZBTElEX1JFUExZLAoxNDQ3NDogIEFVWF9DSEFOTkVMX09QRVJBVElPTl9G QUlMRURfVElNRU9VVCwKMTQ0NzQ6ICBBVVhfQ0hBTk5FTF9PUEVSQVRJT05fRkFJTEVEX0hQRF9E SVNDT04sCjE0NDc0OiAgQVVYX0NIQU5ORUxfT1BFUkFUSU9OX0ZBSUxFRF9FTkdJTkVfQUNRVUlS RQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXV4X3JlcXVlc3RfdHJh bnNhY3Rpb25fZGF0YSB7CjE0NDc0OiAgZW51bSBhdXhfdHJhbnNhY3Rpb25fdHlwZSB0eXBlOwox NDQ3NDogIGVudW0gaTJjYXV4X3RyYW5zYWN0aW9uX2FjdGlvbiBhY3Rpb247CjE0NDc0OiAKMTQ0 NzQ6ICB1aW50MzJfdCBhZGRyZXNzOwoxNDQ3NDogCjE0NDc0OiAgdWludDhfdCBkZWxheTsKMTQ0 NzQ6ICB1aW50MzJfdCBsZW5ndGg7CjE0NDc0OiAgdWludDhfdCAqZGF0YTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gYXV4X3RyYW5zYWN0aW9uX3JlcGx5IHsKMTQ0NzQ6ICBBVVhfVFJB TlNBQ1RJT05fUkVQTFlfQVVYX0FDSyA9IDB4MDAsCjE0NDc0OiAgQVVYX1RSQU5TQUNUSU9OX1JF UExZX0FVWF9OQUNLID0gMHgwMSwKMTQ0NzQ6ICBBVVhfVFJBTlNBQ1RJT05fUkVQTFlfQVVYX0RF RkVSID0gMHgwMiwKMTQ0NzQ6ICBBVVhfVFJBTlNBQ1RJT05fUkVQTFlfSTJDX09WRVJfQVVYX05B Q0sgPSAweDA0LAoxNDQ3NDogIEFVWF9UUkFOU0FDVElPTl9SRVBMWV9JMkNfT1ZFUl9BVVhfREVG RVIgPSAweDA4LAoxNDQ3NDogCjE0NDc0OiAgQVVYX1RSQU5TQUNUSU9OX1JFUExZX0kyQ19BQ0sg PSAweDAwLAoxNDQ3NDogIEFVWF9UUkFOU0FDVElPTl9SRVBMWV9JMkNfTkFDSyA9IDB4MTAsCjE0 NDc0OiAgQVVYX1RSQU5TQUNUSU9OX1JFUExZX0kyQ19ERUZFUiA9IDB4MjAsCjE0NDc0OiAKMTQ0 NzQ6ICBBVVhfVFJBTlNBQ1RJT05fUkVQTFlfSFBEX0RJU0NPTiA9IDB4NDAsCjE0NDc0OiAKMTQ0 NzQ6ICBBVVhfVFJBTlNBQ1RJT05fUkVQTFlfSU5WQUxJRCA9IDB4RkYKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBhdXhfcmVwbHlfdHJhbnNhY3Rpb25fZGF0YSB7CjE0NDc0OiAgZW51 bSBhdXhfdHJhbnNhY3Rpb25fcmVwbHkgc3RhdHVzOwoxNDQ3NDogIHVpbnQzMl90IGxlbmd0aDsK MTQ0NzQ6ICB1aW50OF90ICpkYXRhOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGky Y19wYXlsb2FkIHsKMTQ0NzQ6ICBib29sIHdyaXRlOwoxNDQ3NDogIHVpbnQ4X3QgYWRkcmVzczsK MTQ0NzQ6ICB1aW50MzJfdCBsZW5ndGg7CjE0NDc0OiAgdWludDhfdCAqZGF0YTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gaTJjX2NvbW1hbmRfZW5naW5lIHsKMTQ0NzQ6ICBJMkNfQ09N TUFORF9FTkdJTkVfREVGQVVMVCwKMTQ0NzQ6ICBJMkNfQ09NTUFORF9FTkdJTkVfU1csCjE0NDc0 OiAgSTJDX0NPTU1BTkRfRU5HSU5FX0hXCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg aTJjX2NvbW1hbmQgewoxNDQ3NDogIHN0cnVjdCBpMmNfcGF5bG9hZCAqcGF5bG9hZHM7CjE0NDc0 OiAgdWludDhfdCBudW1iZXJfb2ZfcGF5bG9hZHM7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGkyY19j b21tYW5kX2VuZ2luZSBlbmdpbmU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWlu dDMyX3Qgc3BlZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZ3Bpb19kZGNfaHdf aW5mbyB7CjE0NDc0OiAgYm9vbCBod19zdXBwb3J0ZWQ7CjE0NDc0OiAgdWludDMyX3QgZGRjX2No YW5uZWw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGRjIHsKMTQ0NzQ6ICBzdHJ1 Y3QgZ3BpbyAqcGluX2RhdGE7CjE0NDc0OiAgc3RydWN0IGdwaW8gKnBpbl9jbG9jazsKMTQ0NzQ6 ICBzdHJ1Y3QgZ3Bpb19kZGNfaHdfaW5mbyBod19pbmZvOwoxNDQ3NDogIHN0cnVjdCBkY19jb250 ZXh0ICpjdHg7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkZGNfd2EgewoxNDQ3NDog IHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQzMl90IERQX1NLSVBfUE9XRVJfT0ZGOjE7CjE0NDc0OiAg IHVpbnQzMl90IERQX0FVWF9QT1dFUl9VUF9XQV9ERUxBWToxOwoxNDQ3NDogIH0gYml0czsKMTQ0 NzQ6ICB1aW50MzJfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGRjX2Zs YWdzIHsKMTQ0NzQ6ICB1aW50OF90IEVESURfUVVFUllfRE9ORV9PTkNFOjE7CjE0NDc0OiAgdWlu dDhfdCBJU19JTlRFUk5BTF9ESVNQTEFZOjE7CjE0NDc0OiAgdWludDhfdCBGT1JDRV9SRUFEX1JF UEVBVEVEX1NUQVJUOjE7CjE0NDc0OiAgdWludDhfdCBFRElEX1NUUkVTU19SRUFEOjE7CjE0NDc0 OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGRjX3RyYW5zYWN0aW9uX3R5cGUgewox NDQ3NDogIEREQ19UUkFOU0FDVElPTl9UWVBFX05PTkUgPSAwLAoxNDQ3NDogIEREQ19UUkFOU0FD VElPTl9UWVBFX0kyQywKMTQ0NzQ6ICBERENfVFJBTlNBQ1RJT05fVFlQRV9JMkNfT1ZFUl9BVVgs CjE0NDc0OiAgRERDX1RSQU5TQUNUSU9OX1RZUEVfSTJDX09WRVJfQVVYX1dJVEhfREVGRVIsCjE0 NDc0OiAgRERDX1RSQU5TQUNUSU9OX1RZUEVfSTJDX09WRVJfQVVYX1JFVFJZX0RFRkVSCjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRpc3BsYXlfZG9uZ2xlX3R5cGUgewoxNDQ3NDogIERJ U1BMQVlfRE9OR0xFX05PTkUgPSAwLAoxNDQ3NDogCjE0NDc0OiAgRElTUExBWV9ET05HTEVfRFBf VkdBX0NPTlZFUlRFUiwKMTQ0NzQ6ICBESVNQTEFZX0RPTkdMRV9EUF9EVklfQ09OVkVSVEVSLAox NDQ3NDogIERJU1BMQVlfRE9OR0xFX0RQX0hETUlfQ09OVkVSVEVSLAoxNDQ3NDogCjE0NDc0OiAg RElTUExBWV9ET05HTEVfRFBfRFZJX0RPTkdMRSwKMTQ0NzQ6ICBESVNQTEFZX0RPTkdMRV9EUF9I RE1JX0RPTkdMRSwKMTQ0NzQ6IAoxNDQ3NDogIERJU1BMQVlfRE9OR0xFX0RQX0hETUlfTUlTTUFU Q0hFRF9ET05HTEUsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGRjX3NlcnZpY2Ug ewoxNDQ3NDogIHN0cnVjdCBkZGMgKmRkY19waW47CjE0NDc0OiAgc3RydWN0IGRkY19mbGFncyBm bGFnczsKMTQ0NzQ6ICB1bmlvbiBkZGNfd2Egd2E7CjE0NDc0OiAgZW51bSBkZGNfdHJhbnNhY3Rp b25fdHlwZSB0cmFuc2FjdGlvbl90eXBlOwoxNDQ3NDogIGVudW0gZGlzcGxheV9kb25nbGVfdHlw ZSBkb25nbGVfdHlwZTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIHN0 cnVjdCBkY19saW5rICpsaW5rOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgYWRkcmVzczsKMTQ0 NzQ6ICB1aW50MzJfdCBlZGlkX2J1Zl9sZW47CjE0NDc0OiAgdWludDhfdCBlZGlkX2J1ZlsxMDI0 XTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDEzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2RjX3R5cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogZW51bSB0aWxpbmdfbW9k ZSB7CjE0NDc0OiAgVElMSU5HX01PREVfSU5WQUxJRCwKMTQ0NzQ6ICBUSUxJTkdfTU9ERV9MSU5F QVIsCjE0NDc0OiAgVElMSU5HX01PREVfVElMRUQsCjE0NDc0OiAgVElMSU5HX01PREVfQ09VTlQK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gdmlld18zZF9mb3JtYXQgewoxNDQ3NDogIFZJ RVdfM0RfRk9STUFUX05PTkUgPSAwLAoxNDQ3NDogIFZJRVdfM0RfRk9STUFUX0ZSQU1FX1NFUVVF TlRJQUwsCjE0NDc0OiAgVklFV18zRF9GT1JNQVRfU0lERV9CWV9TSURFLAoxNDQ3NDogIFZJRVdf M0RfRk9STUFUX1RPUF9BTkRfQk9UVE9NLAoxNDQ3NDogIFZJRVdfM0RfRk9STUFUX0NPVU5ULAox NDQ3NDogIFZJRVdfM0RfRk9STUFUX0ZJUlNUID0gVklFV18zRF9GT1JNQVRfRlJBTUVfU0VRVUVO VElBTAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBwbGFuZV9zdGVyZW9fZm9ybWF0IHsK MTQ0NzQ6ICBQTEFORV9TVEVSRU9fRk9STUFUX05PTkUgPSAwLAoxNDQ3NDogIFBMQU5FX1NURVJF T19GT1JNQVRfU0lERV9CWV9TSURFID0gMSwKMTQ0NzQ6ICBQTEFORV9TVEVSRU9fRk9STUFUX1RP UF9BTkRfQk9UVE9NID0gMiwKMTQ0NzQ6ICBQTEFORV9TVEVSRU9fRk9STUFUX0ZSQU1FX0FMVEVS TkFURSA9IDMsCjE0NDc0OiAgUExBTkVfU1RFUkVPX0ZPUk1BVF9ST1dfSU5URVJMRUFWRUQgPSA1 LAoxNDQ3NDogIFBMQU5FX1NURVJFT19GT1JNQVRfQ09MVU1OX0lOVEVSTEVBVkVEID0gNiwKMTQ0 NzQ6ICBQTEFORV9TVEVSRU9fRk9STUFUX0NIRUNLRVJfQk9BUkQgPSA3CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBk Y19lZGlkX2Nvbm5lY3Rvcl90eXBlIHsKMTQ0NzQ6ICBEQ19FRElEX0NPTk5FQ1RPUl9VTktOT1dO ID0gMCwKMTQ0NzQ6ICBEQ19FRElEX0NPTk5FQ1RPUl9BTkFMT0cgPSAxLAoxNDQ3NDogIERDX0VE SURfQ09OTkVDVE9SX0RJR0lUQUwgPSAxMCwKMTQ0NzQ6ICBEQ19FRElEX0NPTk5FQ1RPUl9EVkkg PSAxMSwKMTQ0NzQ6ICBEQ19FRElEX0NPTk5FQ1RPUl9IRE1JQSA9IDEyLAoxNDQ3NDogIERDX0VE SURfQ09OTkVDVE9SX01EREkgPSAxNCwKMTQ0NzQ6ICBEQ19FRElEX0NPTk5FQ1RPUl9ESVNQTEFZ UE9SVCA9IDE1CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2VkaWRfc3RhdHVzIHsK MTQ0NzQ6ICBFRElEX09LLAoxNDQ3NDogIEVESURfQkFEX0lOUFVULAoxNDQ3NDogIEVESURfTk9f UkVTUE9OU0UsCjE0NDc0OiAgRURJRF9CQURfQ0hFQ0tTVU0sCjE0NDc0OiAgRURJRF9USEVfU0FN RSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYWN0X3JldHVybl9zdGF0dXMgewoxNDQ3 NDogIEFDVF9TVUNDRVNTLAoxNDQ3NDogIEFDVF9MSU5LX0xPU1QsCjE0NDc0OiAgQUNUX0ZBSUxF RAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfY2VhX2F1ZGlvX21v ZGUgewoxNDQ3NDogIHVpbnQ4X3QgZm9ybWF0X2NvZGU7CjE0NDc0OiAgdWludDhfdCBjaGFubmVs X2NvdW50OwoxNDQ3NDogIHVpbnQ4X3Qgc2FtcGxlX3JhdGU7CjE0NDc0OiAgdW5pb24gewoxNDQ3 NDogICB1aW50OF90IHNhbXBsZV9zaXplOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgbWF4X2Jp dF9yYXRlOwoxNDQ3NDogICB1aW50OF90IGF1ZGlvX2NvZGVjX3ZlbmRvcl9zcGVjaWZpYzsKMTQ0 NzQ6ICB9OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX2VkaWQgewoxNDQ3NDog IHVpbnQzMl90IGxlbmd0aDsKMTQ0NzQ6ICB1aW50OF90IHJhd19lZGlkWzEwMjRdOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgMjE1ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvZGNfdHlwZXMuaCIKMTQ0NzQ6IHVuaW9uIGRpc3BsYXlfY29udGVudF9zdXBwb3J0IHsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgcmF3OwoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVuc2lnbmVk IGludCB2YWxpZF9jb250ZW50X3R5cGUgOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBnYW1lX2Nv bnRlbnQgOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBjaW5lbWFfY29udGVudCA6MTsKMTQ0NzQ6 ICAgdW5zaWduZWQgaW50IHBob3RvX2NvbnRlbnQgOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBn cmFwaGljc19jb250ZW50IDoxOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQgOjI3Owox NDQ3NDogIH0gYml0czsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19wYW5lbF9w YXRjaCB7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRwcG93ZXJ1cF9kZWxheTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgZXh0cmFfdDEyX21zOwoxNDQ3NDogIHVuc2lnbmVkIGludCBleHRyYV9kZWxheV9i YWNrbGlnaHRfb2ZmOwoxNDQ3NDogIHVuc2lnbmVkIGludCBleHRyYV90N19tczsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgbWFuYWdlX3NlY29uZGFyeV9saW5rOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGRjX2VkaWRfY2FwcyB7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MTZfdCBtYW51ZmFj dHVyZXJfaWQ7CjE0NDc0OiAgdWludDE2X3QgcHJvZHVjdF9pZDsKMTQ0NzQ6ICB1aW50MzJfdCBz ZXJpYWxfbnVtYmVyOwoxNDQ3NDogIHVpbnQ4X3QgbWFudWZhY3R1cmVfd2VlazsKMTQ0NzQ6ICB1 aW50OF90IG1hbnVmYWN0dXJlX3llYXI7CjE0NDc0OiAgdWludDhfdCBkaXNwbGF5X25hbWVbMjBd OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90IHNwZWFrZXJfZmxhZ3M7CjE0NDc0OiAg dWludDMyX3QgYXVkaW9fbW9kZV9jb3VudDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY2VhX2F1ZGlvX21v ZGUgYXVkaW9fbW9kZXNbMTZdOwoxNDQ3NDogIHVpbnQzMl90IGF1ZGlvX2xhdGVuY3k7CjE0NDc0 OiAgdWludDMyX3QgdmlkZW9fbGF0ZW5jeTsKMTQ0NzQ6IAoxNDQ3NDogIHVuaW9uIGRpc3BsYXlf Y29udGVudF9zdXBwb3J0IGNvbnRlbnRfc3VwcG9ydDsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQ4X3Qg cXNfYml0OwoxNDQ3NDogIHVpbnQ4X3QgcXlfYml0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBi b29sIGx0ZV8zNDBtY3NjX3NjcmFtYmxlOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBlZGlkX2hkbWk7 CjE0NDc0OiAgYm9vbCBoZHJfc3VwcG9ydGVkOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX3Bh bmVsX3BhdGNoIHBhbmVsX3BhdGNoOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHZp ZXcgewoxNDQ3NDogIHVpbnQzMl90IHdpZHRoOwoxNDQ3NDogIHVpbnQzMl90IGhlaWdodDsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19tb2RlX2ZsYWdzIHsKMTQ0NzQ6IAoxNDQ3 NDogIHVpbnQzMl90IElOVEVSTEFDRSA6MTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IE5BVElW RSA6MTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IFBSRUZFUlJFRCA6MTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgdWludDMyX3QgUkVEVUNFRF9CTEFOS0lORyA6MTsKMTQ0NzQ6IAoxNDQ3NDog IHVpbnQzMl90IFZJREVPX09QVElNSVpFRF9SQVRFIDoxOwoxNDQ3NDogCjE0NDc0OiAgdWludDMy X3QgUEFDS0VEX1BJWEVMX0ZPUk1BVCA6MTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IFBSRUZF UlJFRF9WSUVXIDoxOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgVElMRURfTU9ERSA6MTsKMTQ0 NzQ6ICB1aW50MzJfdCBEU0VfTU9ERSA6MTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIHVpbnQzMl90IE1JUkFDQVNUX1JFRlJFU0hfRElWSURFUjsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY190aW1pbmdfc291cmNlIHsKMTQ0NzQ6ICBUSU1J TkdfU09VUkNFX1VOREVGSU5FRCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgVElNSU5HX1NPVVJD RV9VU0VSX0ZPUkNFRCwKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX1VTRVJfT1ZFUlJJREUsCjE0NDc0 OiAgVElNSU5HX1NPVVJDRV9DVVNUT00sCjE0NDc0OiAgVElNSU5HX1NPVVJDRV9FWFBMSUNJVCwK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgVElNSU5HX1NPVVJDRV9FRElEX0NFQV9TVkRfM0QsCjE0 NDc0OiAgVElNSU5HX1NPVVJDRV9FRElEX0NFQV9TVkRfUFJFRkVSUkVELAoxNDQ3NDogIFRJTUlO R19TT1VSQ0VfRURJRF9DRUFfU1ZEXzQyMCwKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX0VESURfREVU QUlMRUQsCjE0NDc0OiAgVElNSU5HX1NPVVJDRV9FRElEX0VTVEFCTElTSEVELAoxNDQ3NDogIFRJ TUlOR19TT1VSQ0VfRURJRF9TVEFOREFSRCwKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX0VESURfQ0VB X1NWRCwKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX0VESURfQ1ZUXzNCWVRFLAoxNDQ3NDogIFRJTUlO R19TT1VSQ0VfRURJRF80QllURSwKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX1ZCSU9TLAoxNDQ3NDog IFRJTUlOR19TT1VSQ0VfQ1YsCjE0NDc0OiAgVElNSU5HX1NPVVJDRV9UViwKMTQ0NzQ6ICBUSU1J TkdfU09VUkNFX0hETUlfVklDLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBUSU1JTkdfU09VUkNF X0RFRkFVTFQsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFRJTUlOR19TT1VSQ0VfQ1VTVE9NX0JB U0UsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFRJTUlOR19TT1VSQ0VfUkFOR0VMSU1JVCwKMTQ0 NzQ6ICBUSU1JTkdfU09VUkNFX09TX0ZPUkNFRCwKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX0lNUExJ Q0lULAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX0JBU0lDTU9ERSwKMTQ0 NzQ6IAoxNDQ3NDogIFRJTUlOR19TT1VSQ0VfQ09VTlQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHN0ZXJlb18zZF9mZWF0dXJlcyB7CjE0NDc0OiAgYm9vbCBzdXBwb3J0 ZWQgOwoxNDQ3NDogIGJvb2wgYWxsVGltaW5ncyA7CjE0NDc0OiAgYm9vbCBjbG9uZU1vZGUgOwox NDQ3NDogIGJvb2wgc2NhbGluZyA7CjE0NDc0OiAgYm9vbCBzaW5nbGVGcmFtZVNXUGFja2VkOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY190aW1pbmdfc3VwcG9ydF9tZXRob2Qgewox NDQ3NDogIFRJTUlOR19TVVBQT1JUX01FVEhPRF9VTkRFRklORUQsCjE0NDc0OiAgVElNSU5HX1NV UFBPUlRfTUVUSE9EX0VYUExJQ0lULAoxNDQ3NDogIFRJTUlOR19TVVBQT1JUX01FVEhPRF9JTVBM SUNJVCwKMTQ0NzQ6ICBUSU1JTkdfU1VQUE9SVF9NRVRIT0RfTkFUSVZFCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZGNfbW9kZV9pbmZvIHsKMTQ0NzQ6ICB1aW50MzJfdCBwaXhlbF93 aWR0aDsKMTQ0NzQ6ICB1aW50MzJfdCBwaXhlbF9oZWlnaHQ7CjE0NDc0OiAgdWludDMyX3QgZmll bGRfcmF0ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRjX3RpbWluZ19z dGFuZGFyZCB0aW1pbmdfc3RhbmRhcmQ7CjE0NDc0OiAgZW51bSBkY190aW1pbmdfc291cmNlIHRp bWluZ19zb3VyY2U7CjE0NDc0OiAgc3RydWN0IGRjX21vZGVfZmxhZ3MgZmxhZ3M7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX3Bvd2VyX3N0YXRlIHsKMTQ0NzQ6ICBEQ19QT1dFUl9T VEFURV9PTiA9IDEsCjE0NDc0OiAgRENfUE9XRVJfU1RBVEVfU1RBTkRCWSwKMTQ0NzQ6ICBEQ19Q T1dFUl9TVEFURV9TVVNQRU5ELAoxNDQ3NDogIERDX1BPV0VSX1NUQVRFX09GRgoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX3ZpZGVvX3Bvd2VyX3N0YXRlIHsKMTQ0NzQ6 ICBEQ19WSURFT19QT1dFUl9VTlNQRUNJRklFRCA9IDAsCjE0NDc0OiAgRENfVklERU9fUE9XRVJf T04gPSAxLAoxNDQ3NDogIERDX1ZJREVPX1BPV0VSX1NUQU5EQlksCjE0NDc0OiAgRENfVklERU9f UE9XRVJfU1VTUEVORCwKMTQ0NzQ6ICBEQ19WSURFT19QT1dFUl9PRkYsCjE0NDc0OiAgRENfVklE RU9fUE9XRVJfSElCRVJOQVRFLAoxNDQ3NDogIERDX1ZJREVPX1BPV0VSX1NIVVRET1dOLAoxNDQ3 NDogIERDX1ZJREVPX1BPV0VSX1VMUFMsCjE0NDc0OiAgRENfVklERU9fUE9XRVJfQUZURVJfUkVT RVQsCjE0NDc0OiAgRENfVklERU9fUE9XRVJfTUFYSU1VTQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogZW51bSBkY19hY3BpX2NtX3Bvd2VyX3N0YXRlIHsKMTQ0NzQ6ICBEQ19BQ1BJX0NNX1BPV0VS X1NUQVRFX0QwID0gMSwKMTQ0NzQ6ICBEQ19BQ1BJX0NNX1BPV0VSX1NUQVRFX0QxID0gMiwKMTQ0 NzQ6ICBEQ19BQ1BJX0NNX1BPV0VSX1NUQVRFX0QyID0gNCwKMTQ0NzQ6ICBEQ19BQ1BJX0NNX1BP V0VSX1NUQVRFX0QzID0gOAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19jb25uZWN0 aW9uX3R5cGUgewoxNDQ3NDogIGRjX2Nvbm5lY3Rpb25fbm9uZSwKMTQ0NzQ6ICBkY19jb25uZWN0 aW9uX3NpbmdsZSwKMTQ0NzQ6ICBkY19jb25uZWN0aW9uX21zdF9icmFuY2gsCjE0NDc0OiAgZGNf Y29ubmVjdGlvbl9hY3RpdmVfZG9uZ2xlCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg ZGNfY3NjX2FkanVzdG1lbnRzIHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBjb250cmFzdDsK MTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBzYXR1cmF0aW9uOwoxNDQ3NDogIHN0cnVjdCBmaXhl ZDMxXzMyIGJyaWdodG5lc3M7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgaHVlOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkcGNkX2Rvd25zdHJlYW1fcG9ydF9tYXhfYnBjIHsKMTQ0 NzQ6ICBET1dOX1NUUkVBTV9NQVhfOEJQQyA9IDAsCjE0NDc0OiAgRE9XTl9TVFJFQU1fTUFYXzEw QlBDLAoxNDQ3NDogIERPV05fU1RSRUFNX01BWF8xMkJQQywKMTQ0NzQ6ICBET1dOX1NUUkVBTV9N QVhfMTZCUEMKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBsaW5rX3RyYWlu aW5nX29mZnNldCB7CjE0NDc0OiAgRFBSWCA9IDAsCjE0NDc0OiAgTFRUUFJfUEhZX1JFUEVBVEVS MSA9IDEsCjE0NDc0OiAgTFRUUFJfUEhZX1JFUEVBVEVSMiA9IDIsCjE0NDc0OiAgTFRUUFJfUEhZ X1JFUEVBVEVSMyA9IDMsCjE0NDc0OiAgTFRUUFJfUEhZX1JFUEVBVEVSNCA9IDQsCjE0NDc0OiAg TFRUUFJfUEhZX1JFUEVBVEVSNSA9IDUsCjE0NDc0OiAgTFRUUFJfUEhZX1JFUEVBVEVSNiA9IDYs CjE0NDc0OiAgTFRUUFJfUEhZX1JFUEVBVEVSNyA9IDcsCjE0NDc0OiAgTFRUUFJfUEhZX1JFUEVB VEVSOCA9IDgKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19sdHRwcl9jYXBzIHsK MTQ0NzQ6ICB1bmlvbiBkcGNkX3JldiByZXZpc2lvbjsKMTQ0NzQ6ICB1aW50OF90IG1vZGU7CjE0 NDc0OiAgdWludDhfdCBtYXhfbGFuZV9jb3VudDsKMTQ0NzQ6ICB1aW50OF90IG1heF9saW5rX3Jh dGU7CjE0NDc0OiAgdWludDhfdCBwaHlfcmVwZWF0ZXJfY250OwoxNDQ3NDogIHVpbnQ4X3QgbWF4 X2V4dF90aW1lb3V0OwoxNDQ3NDogIHVpbnQ4X3QgYXV4X3JkX2ludGVydmFsWzggLSAxXTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19kb25nbGVfY2FwcyB7CjE0NDc0OiAKMTQ0 NzQ6ICBlbnVtIGRpc3BsYXlfZG9uZ2xlX3R5cGUgZG9uZ2xlX3R5cGU7CjE0NDc0OiAgYm9vbCBl eHRlbmRlZENhcFZhbGlkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBib29sIGlzX2RwX2hkbWlf czNkX2NvbnZlcnRlcjsKMTQ0NzQ6ICBib29sIGlzX2RwX2hkbWlfeWNiY3I0MjJfcGFzc190aHJv dWdoOwoxNDQ3NDogIGJvb2wgaXNfZHBfaGRtaV95Y2JjcjQyMF9wYXNzX3Rocm91Z2g7CjE0NDc0 OiAgYm9vbCBpc19kcF9oZG1pX3ljYmNyNDIyX2NvbnZlcnRlcjsKMTQ0NzQ6ICBib29sIGlzX2Rw X2hkbWlfeWNiY3I0MjBfY29udmVydGVyOwoxNDQ3NDogIHVpbnQzMl90IGRwX2hkbWlfbWF4X2Jw YzsKMTQ0NzQ6ICB1aW50MzJfdCBkcF9oZG1pX21heF9waXhlbF9jbGtfaW5fa2h6OwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBzY2FsaW5nX3RyYW5zZm9ybWF0aW9uIHsKMTQ0NzQ6ICBT Q0FMSU5HX1RSQU5TRk9STUFUSU9OX1VOSU5JVElBTElaRUQsCjE0NDc0OiAgU0NBTElOR19UUkFO U0ZPUk1BVElPTl9JREVOVElUWSA9IDB4MDAwMSwKMTQ0NzQ6ICBTQ0FMSU5HX1RSQU5TRk9STUFU SU9OX0NFTlRFUl9USU1JTkcgPSAweDAwMDIsCjE0NDc0OiAgU0NBTElOR19UUkFOU0ZPUk1BVElP Tl9GVUxMX1NDUkVFTl9TQ0FMRSA9IDB4MDAwNCwKMTQ0NzQ6ICBTQ0FMSU5HX1RSQU5TRk9STUFU SU9OX1BSRVNFUlZFX0FTUEVDVF9SQVRJT19TQ0FMRSA9IDB4MDAwOCwKMTQ0NzQ6ICBTQ0FMSU5H X1RSQU5TRk9STUFUSU9OX0RBTF9ERUNJREUgPSAweDAwMTAsCjE0NDc0OiAgU0NBTElOR19UUkFO U0ZPUk1BVElPTl9JTlZBTElEID0gMHg4MDAwMDAwMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg U0NBTElOR19UUkFOU0ZPUk1BVElPTl9CRUdJTkcgPSBTQ0FMSU5HX1RSQU5TRk9STUFUSU9OX0lE RU5USVRZLAoxNDQ3NDogIFNDQUxJTkdfVFJBTlNGT1JNQVRJT05fRU5EID0KMTQ0NzQ6ICAgU0NB TElOR19UUkFOU0ZPUk1BVElPTl9QUkVTRVJWRV9BU1BFQ1RfUkFUSU9fU0NBTEUKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGlzcGxheV9jb250ZW50X3R5cGUgewoxNDQ3NDogIERJU1BM QVlfQ09OVEVOVF9UWVBFX05PX0RBVEEgPSAwLAoxNDQ3NDogIERJU1BMQVlfQ09OVEVOVF9UWVBF X0dSQVBISUNTID0gMSwKMTQ0NzQ6ICBESVNQTEFZX0NPTlRFTlRfVFlQRV9QSE9UTyA9IDIsCjE0 NDc0OiAgRElTUExBWV9DT05URU5UX1RZUEVfQ0lORU1BID0gNCwKMTQ0NzQ6ICBESVNQTEFZX0NP TlRFTlRfVFlQRV9HQU1FID0gOAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgZHdiX3N0ZXJlb19wYXJhbXMgewoxNDQ3NDogIGJvb2wgc3RlcmVvX2VuYWJsZWQ7CjE0NDc0 OiAgZW51bSBkd2Jfc3RlcmVvX3R5cGUgc3RlcmVvX3R5cGU7CjE0NDc0OiAgYm9vbCBzdGVyZW9f cG9sYXJpdHk7CjE0NDc0OiAgZW51bSBkd2Jfc3RlcmVvX2V5ZV9zZWxlY3Qgc3RlcmVvX2V5ZV9z ZWxlY3Q7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfZHdiX2Nudl9wYXJhbXMg ewoxNDQ3NDogIHVuc2lnbmVkIGludCBzcmNfd2lkdGg7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNy Y19oZWlnaHQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IGNyb3Bfd2lkdGg7CjE0NDc0OiAgYm9vbCBj cm9wX2VuOwoxNDQ3NDogIHVuc2lnbmVkIGludCBjcm9wX2hlaWdodDsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgY3JvcF94OwoxNDQ3NDogIHVuc2lnbmVkIGludCBjcm9wX3k7CjE0NDc0OiAgZW51bSBk d2JfY252X291dF9icGMgY252X291dF9icGM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgZGNfZHdiX3BhcmFtcyB7CjE0NDc0OiAgc3RydWN0IGRjX2R3Yl9jbnZfcGFyYW1zIGNudl9w YXJhbXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRlc3Rfd2lkdGg7CjE0NDc0OiAgdW5zaWduZWQg aW50IGRlc3RfaGVpZ2h0OwoxNDQ3NDogIGVudW0gZHdiX3NjYWxlcl9tb2RlIG91dF9mb3JtYXQ7 CjE0NDc0OiAgZW51bSBkd2Jfb3V0cHV0X2RlcHRoIG91dHB1dF9kZXB0aDsKMTQ0NzQ6ICBlbnVt IGR3Yl9jYXB0dXJlX3JhdGUgY2FwdHVyZV9yYXRlOwoxNDQ3NDogIHN0cnVjdCBzY2FsaW5nX3Rh cHMgc2NhbGVyX3RhcHM7CjE0NDc0OiAgZW51bSBkd2Jfc3Vic2FtcGxlX3Bvc2l0aW9uIHN1YnNh bXBsZV9wb3NpdGlvbjsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuYyAqb3V0X3RyYW5z ZmVyX2Z1bmM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdW5pb24g YXVkaW9fc2FtcGxlX3JhdGVzIHsKMTQ0NzQ6ICBzdHJ1Y3Qgc2FtcGxlX3JhdGVzIHsKMTQ0NzQ6 ICAgdWludDhfdCBSQVRFXzMyOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkFURV80NF8xOjE7CjE0NDc0 OiAgIHVpbnQ4X3QgUkFURV80ODoxOwoxNDQ3NDogICB1aW50OF90IFJBVEVfODhfMjoxOwoxNDQ3 NDogICB1aW50OF90IFJBVEVfOTY6MTsKMTQ0NzQ6ICAgdWludDhfdCBSQVRFXzE3Nl80OjE7CjE0 NDc0OiAgIHVpbnQ4X3QgUkFURV8xOTI6MTsKMTQ0NzQ6ICB9IHJhdGU7CjE0NDc0OiAKMTQ0NzQ6 ICB1aW50OF90IGFsbDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdWRpb19zcGVh a2VyX2ZsYWdzIHsKMTQ0NzQ6ICB1aW50MzJfdCBGTF9GUjoxOwoxNDQ3NDogIHVpbnQzMl90IExG RToxOwoxNDQ3NDogIHVpbnQzMl90IEZDOjE7CjE0NDc0OiAgdWludDMyX3QgUkxfUlI6MTsKMTQ0 NzQ6ICB1aW50MzJfdCBSQzoxOwoxNDQ3NDogIHVpbnQzMl90IEZMQ19GUkM6MTsKMTQ0NzQ6ICB1 aW50MzJfdCBSTENfUlJDOjE7CjE0NDc0OiAgdWludDMyX3QgU1VQUE9SVF9BSToxOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF1ZGlvX3NwZWFrZXJfaW5mbyB7CjE0NDc0OiAgdWlu dDMyX3QgQUxMU1BFQUtFUlM6NzsKMTQ0NzQ6ICB1aW50MzJfdCBTVVBQT1JUX0FJOjE7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdWRpb19pbmZvX2ZsYWdzIHsKMTQ0 NzQ6IAoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgYXVkaW9fc3BlYWtl cl9mbGFncyBzcGVha2VyX2ZsYWdzOwoxNDQ3NDogICBzdHJ1Y3QgYXVkaW9fc3BlYWtlcl9pbmZv IGluZm87CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBhbGw7CjE0NDc0OiAgfTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXVkaW9fZm9ybWF0X2NvZGUgewoxNDQ3NDogIEFVRElPX0ZP Uk1BVF9DT0RFX0ZJUlNUID0gMSwKMTQ0NzQ6ICBBVURJT19GT1JNQVRfQ09ERV9MSU5FQVJQQ00g PSBBVURJT19GT1JNQVRfQ09ERV9GSVJTVCwKMTQ0NzQ6IAoxNDQ3NDogIEFVRElPX0ZPUk1BVF9D T0RFX0FDMywKMTQ0NzQ6IAoxNDQ3NDogIEFVRElPX0ZPUk1BVF9DT0RFX01QRUcxLAoxNDQ3NDog CjE0NDc0OiAgQVVESU9fRk9STUFUX0NPREVfTVAzLAoxNDQ3NDogCjE0NDc0OiAgQVVESU9fRk9S TUFUX0NPREVfTVBFRzIsCjE0NDc0OiAgQVVESU9fRk9STUFUX0NPREVfQUFDLAoxNDQ3NDogIEFV RElPX0ZPUk1BVF9DT0RFX0RUUywKMTQ0NzQ6ICBBVURJT19GT1JNQVRfQ09ERV9BVFJBQywKMTQ0 NzQ6ICBBVURJT19GT1JNQVRfQ09ERV8xQklUQVVESU8sCjE0NDc0OiAgQVVESU9fRk9STUFUX0NP REVfRE9MQllESUdJVEFMUExVUywKMTQ0NzQ6ICBBVURJT19GT1JNQVRfQ09ERV9EVFNfSEQsCjE0 NDc0OiAgQVVESU9fRk9STUFUX0NPREVfTUFUX01MUCwKMTQ0NzQ6ICBBVURJT19GT1JNQVRfQ09E RV9EU1QsCjE0NDc0OiAgQVVESU9fRk9STUFUX0NPREVfV01BUFJPLAoxNDQ3NDogIEFVRElPX0ZP Uk1BVF9DT0RFX0xBU1QsCjE0NDc0OiAgQVVESU9fRk9STUFUX0NPREVfQ09VTlQgPQoxNDQ3NDog ICBBVURJT19GT1JNQVRfQ09ERV9MQVNUIC0gQVVESU9fRk9STUFUX0NPREVfRklSU1QKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdWRpb19tb2RlIHsKMTQ0NzQ6IAoxNDQ3NDogIGVu dW0gYXVkaW9fZm9ybWF0X2NvZGUgZm9ybWF0X2NvZGU7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90 IGNoYW5uZWxfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiBhdWRpb19zYW1wbGVfcmF0ZXMg c2FtcGxlX3JhdGVzOwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IHNh bXBsZV9zaXplOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgbWF4X2JpdF9yYXRlOwoxNDQ3NDog CjE0NDc0OiAgIHVpbnQ4X3QgdmVuZG9yX3NwZWNpZmljOwoxNDQ3NDogIH07CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXVkaW9faW5mbyB7CjE0NDc0OiAgc3RydWN0IGF1ZGlvX2lu Zm9fZmxhZ3MgZmxhZ3M7CjE0NDc0OiAgdWludDMyX3QgdmlkZW9fbGF0ZW5jeTsKMTQ0NzQ6ICB1 aW50MzJfdCBhdWRpb19sYXRlbmN5OwoxNDQ3NDogIHVpbnQzMl90IGRpc3BsYXlfaW5kZXg7CjE0 NDc0OiAgdWludDhfdCBkaXNwbGF5X25hbWVbMjBdOwoxNDQ3NDogIHVpbnQzMl90IG1hbnVmYWN0 dXJlX2lkOwoxNDQ3NDogIHVpbnQzMl90IHByb2R1Y3RfaWQ7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50 MzJfdCBwb3J0X2lkWzJdOwoxNDQ3NDogIHVpbnQzMl90IG1vZGVfY291bnQ7CjE0NDc0OiAKMTQ0 NzQ6ICBzdHJ1Y3QgYXVkaW9fbW9kZSBtb2Rlc1sxNl07CjE0NDc0OiB9OwoxNDQ3NDogc3RydWN0 IGF1ZGlvX2NoZWNrIHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgYXVkaW9fcGFja2V0X3R5cGU7CjE0 NDc0OiAgdW5zaWduZWQgaW50IG1heF9hdWRpb3NhbXBsZV9yYXRlOwoxNDQ3NDogIHVuc2lnbmVk IGludCBhY2F0OwoxNDQ3NDogfTsKMTQ0NzQ6IGVudW0gZGNfaW5mb2ZyYW1lX3R5cGUgewoxNDQ3 NDogIERDX0hETUlfSU5GT0ZSQU1FX1RZUEVfVkVORE9SID0gMHg4MSwKMTQ0NzQ6ICBEQ19IRE1J X0lORk9GUkFNRV9UWVBFX0FWSSA9IDB4ODIsCjE0NDc0OiAgRENfSERNSV9JTkZPRlJBTUVfVFlQ RV9TUEQgPSAweDgzLAoxNDQ3NDogIERDX0hETUlfSU5GT0ZSQU1FX1RZUEVfQVVESU8gPSAweDg0 LAoxNDQ3NDogIERDX0RQX0lORk9GUkFNRV9UWVBFX1BQUyA9IDB4MTAsCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgewoxNDQ3NDogIGJvb2wgdmFsaWQ7CjE0 NDc0OiAgdWludDhfdCBoYjA7CjE0NDc0OiAgdWludDhfdCBoYjE7CjE0NDc0OiAgdWludDhfdCBo YjI7CjE0NDc0OiAgdWludDhfdCBoYjM7CjE0NDc0OiAgdWludDhfdCBzYlszMl07CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXRfMTI4IHsKMTQ0NzQ6ICBib29s IHZhbGlkOwoxNDQ3NDogIHVpbnQ4X3QgaGIwOwoxNDQ3NDogIHVpbnQ4X3QgaGIxOwoxNDQ3NDog IHVpbnQ4X3QgaGIyOwoxNDQ3NDogIHVpbnQ4X3QgaGIzOwoxNDQ3NDogIHVpbnQ4X3Qgc2JbMTI4 XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfcGxh bmVfZmxpcF90aW1lIHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdGltZV9lbGFwc2VkX2luX3VzWzEw XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaW5kZXg7CjE0NDc0OiAgdW5zaWduZWQgaW50IHByZXZf dXBkYXRlX3RpbWVfaW5fdXM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHNyX2Nv bmZpZyB7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBwc3JfdmVyc2lvbjsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgcHNyX3JmYl9zZXR1cF90aW1lOwoxNDQ3NDogIGJvb2wgcHNyX2V4aXRfbGlua190cmFp bmluZ19yZXF1aXJlZDsKMTQ0NzQ6ICBib29sIHBzcl9mcmFtZV9jYXB0dXJlX2luZGljYXRpb25f cmVxOwoxNDQ3NDogIHVuc2lnbmVkIGludCBwc3Jfc2RwX3RyYW5zbWl0X2xpbmVfbnVtX2RlYWRs aW5lOwoxNDQ3NDogIGJvb2wgYWxsb3dfc211X29wdGltaXphdGlvbnM7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiB1bmlvbiBkbWN1X3Bzcl9sZXZlbCB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6 ICAgdW5zaWduZWQgaW50IFNLSVBfQ1JDOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBTS0lQX0RQ X1ZJRF9TVFJFQU1fRElTQUJMRToxOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgU0tJUF9QSFlfUE9X RVJfRE9XTjoxOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgU0tJUF9BVVhfQUNLX0NIRUNLOjE7CjE0 NDc0OiAgIHVuc2lnbmVkIGludCBTS0lQX0NSVENfRElTQUJMRToxOwoxNDQ3NDogICB1bnNpZ25l ZCBpbnQgU0tJUF9BVVhfUkZCX0NBUFRVUkVfQ0hFQ0s6MTsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50 IFNLSVBfU01VX05PVElGSUNBVElPTjoxOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgU0tJUF9BVVRP X1NUQVRFX0FEVkFOQ0U6MTsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IERJU0FCTEVfUFNSX0VOVFJZ X0FCT1JUOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBTS0lQX1NJTkdMRV9PVEdfRElTQUJMRTox OwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgUkVTRVJWRUQ6MjI7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3 NDogIHVuc2lnbmVkIGludCB1MzJhbGw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHBo eXNpY2FsX3BoeV9pZCB7CjE0NDc0OiAgUEhZTERfMCwKMTQ0NzQ6ICBQSFlMRF8xLAoxNDQ3NDog IFBIWUxEXzIsCjE0NDc0OiAgUEhZTERfMywKMTQ0NzQ6ICBQSFlMRF80LAoxNDQ3NDogIFBIWUxE XzUsCjE0NDc0OiAgUEhZTERfNiwKMTQ0NzQ6ICBQSFlMRF83LAoxNDQ3NDogIFBIWUxEXzgsCjE0 NDc0OiAgUEhZTERfOSwKMTQ0NzQ6ICBQSFlMRF9DT1VOVCwKMTQ0NzQ6ICBQSFlMRF9VTktOT1dO ID0gKC0xTCkKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gcGh5X3R5cGUgewoxNDQ3NDog IFBIWV9UWVBFX1VOS05PV04gPSAxLAoxNDQ3NDogIFBIWV9UWVBFX1BDSUVfUEhZID0gMiwKMTQ0 NzQ6ICBQSFlfVFlQRV9VTklQSFkgPSAzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IHBzcl9jb250ZXh0IHsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gY2hhbm5lbF9pZCBjaGFubmVsOwox NDQ3NDogCjE0NDc0OiAgZW51bSB0cmFuc21pdHRlciB0cmFuc21pdHRlcklkOwoxNDQ3NDogCjE0 NDc0OiAgZW51bSBlbmdpbmVfaWQgZW5naW5lSWQ7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGNvbnRy b2xsZXJfaWQgY29udHJvbGxlcklkOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBwaHlfdHlwZSBwaHlU eXBlOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBwaHlzaWNhbF9waHlfaWQgc211UGh5SWQ7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBj cnRjVGltaW5nVmVydGljYWxUb3RhbDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBi b29sIHBzclN1cHBvcnRlZERpc3BsYXlDb25maWc7CjE0NDc0OiAKMTQ0NzQ6ICBib29sIHBzckV4 aXRMaW5rVHJhaW5pbmdSZXF1aXJlZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBib29sIHBzckZyYW1lQ2FwdHVyZUluZGljYXRpb25SZXE7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IHNkcFRyYW5zbWl0 TGluZU51bURlYWRsaW5lOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVk IGludCB2c3luY19yYXRlX2h6OwoxNDQ3NDogIHVuc2lnbmVkIGludCBza2lwUHNyV2FpdEZvclBs bExvY2s7CjE0NDc0OiAgdW5zaWduZWQgaW50IG51bWJlck9mQ29udHJvbGxlcnM7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBib29sIHJmYl91cGRhdGVfYXV0b19lbjsK MTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCB0aW1laHlzdF9mcmFtZXM7CjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgaHlzdF9saW5lczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgYXV4X3JlcGVhdHM7CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiBkbWN1 X3Bzcl9sZXZlbCBwc3JfbGV2ZWw7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5z aWduZWQgaW50IGZyYW1lX2RlbGF5OwoxNDQ3NDogIGJvb2wgYWxsb3dfc211X29wdGltaXphdGlv bnM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY29sb3JzcGFjZV90cmFuc2Zvcm0g ewoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIG1hdHJpeFsxMl07CjE0NDc0OiAgYm9vbCBlbmFi bGVfcmVtYXA7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGkyY19tb3RfbW9kZSB7CjE0 NDc0OiAgSTJDX01PVF9VTkRFRiwKMTQ0NzQ6ICBJMkNfTU9UX1RSVUUsCjE0NDc0OiAgSTJDX01P VF9GQUxTRQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IEFzaWNTdGF0ZUV4IHsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgbWVtb3J5Q2xvY2s7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRpc3Bs YXlDbG9jazsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZW5naW5lQ2xvY2s7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IG1heFN1cHBvcnRlZERwcENsb2NrOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHBDbG9j azsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc29jQ2xvY2s7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRj ZkNsb2NrRGVlcFNsZWVwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBmQ2xvY2s7CjE0NDc0OiAgdW5z aWduZWQgaW50IHBoeUNsb2NrOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVt IGRjX2Nsb2NrX3R5cGUgewoxNDQ3NDogIERDX0NMT0NLX1RZUEVfRElTUENMSyA9IDAsCjE0NDc0 OiAgRENfQ0xPQ0tfVFlQRV9EUFBDTEsgPSAxLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGRjX2Nsb2NrX2NvbmZpZyB7CjE0NDc0OiAgdWludDMyX3QgbWF4X2Nsb2NrX2toejsKMTQ0 NzQ6ICB1aW50MzJfdCBtaW5fY2xvY2tfa2h6OwoxNDQ3NDogIHVpbnQzMl90IGJ3X3JlcXVpcmVx dWlyZWRfY2xvY2tfa2h6OwoxNDQ3NDogIHVpbnQzMl90IGN1cnJlbnRfY2xvY2tfa2h6OwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkc2Nfc2xpY2VfY2FwczEgewoxNDQ3 NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgTlVNX1NMSUNFU18xIDogMTsKMTQ0NzQ6ICAg dWludDhfdCBOVU1fU0xJQ0VTXzIgOiAxOwoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEIDogMTsK MTQ0NzQ6ICAgdWludDhfdCBOVU1fU0xJQ0VTXzQgOiAxOwoxNDQ3NDogICB1aW50OF90IE5VTV9T TElDRVNfNiA6IDE7CjE0NDc0OiAgIHVpbnQ4X3QgTlVNX1NMSUNFU184IDogMTsKMTQ0NzQ6ICAg dWludDhfdCBOVU1fU0xJQ0VTXzEwIDogMTsKMTQ0NzQ6ICAgdWludDhfdCBOVU1fU0xJQ0VTXzEy IDogMTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiB1bmlvbiBkc2Nfc2xpY2VfY2FwczIgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0 OiAgIHVpbnQ4X3QgTlVNX1NMSUNFU18xNiA6IDE7CjE0NDc0OiAgIHVpbnQ4X3QgTlVNX1NMSUNF U18yMCA6IDE7CjE0NDc0OiAgIHVpbnQ4X3QgTlVNX1NMSUNFU18yNCA6IDE7CjE0NDc0OiAgIHVp bnQ4X3QgUkVTRVJWRUQgOiA1OwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGRzY19jb2xvcl9mb3JtYXRzIHsKMTQ0NzQ6 ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IFJHQiA6IDE7CjE0NDc0OiAgIHVpbnQ4X3QgWUNC Q1JfNDQ0IDogMTsKMTQ0NzQ6ICAgdWludDhfdCBZQ0JDUl9TSU1QTEVfNDIyIDogMTsKMTQ0NzQ6 ICAgdWludDhfdCBZQ0JDUl9OQVRJVkVfNDIyIDogMTsKMTQ0NzQ6ICAgdWludDhfdCBZQ0JDUl9O QVRJVkVfNDIwIDogMTsKMTQ0NzQ6ICAgdWludDhfdCBSRVNFUlZFRCA6IDM7CjE0NDc0OiAgfSBi aXRzOwoxNDQ3NDogIHVpbnQ4X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24g ZHNjX2NvbG9yX2RlcHRoIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IFJFU0VS VkVEMSA6IDE7CjE0NDc0OiAgIHVpbnQ4X3QgQ09MT1JfREVQVEhfOF9CUEMgOiAxOwoxNDQ3NDog ICB1aW50OF90IENPTE9SX0RFUFRIXzEwX0JQQyA6IDE7CjE0NDc0OiAgIHVpbnQ4X3QgQ09MT1Jf REVQVEhfMTJfQlBDIDogMTsKMTQ0NzQ6ICAgdWludDhfdCBSRVNFUlZFRDIgOiAzOwoxNDQ3NDog IH0gYml0czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBkc2NfZGVjX2RwY2RfY2FwcyB7CjE0NDc0OiAgYm9vbCBpc19kc2Nfc3VwcG9ydGVkOwox NDQ3NDogIHVpbnQ4X3QgZHNjX3ZlcnNpb247CjE0NDc0OiAgaW50MzJfdCByY19idWZmZXJfc2l6 ZTsKMTQ0NzQ6ICB1bmlvbiBkc2Nfc2xpY2VfY2FwczEgc2xpY2VfY2FwczE7CjE0NDc0OiAgdW5p b24gZHNjX3NsaWNlX2NhcHMyIHNsaWNlX2NhcHMyOwoxNDQ3NDogIGludDMyX3QgbGJfYml0X2Rl cHRoOwoxNDQ3NDogIGJvb2wgaXNfYmxvY2tfcHJlZF9zdXBwb3J0ZWQ7CjE0NDc0OiAgaW50MzJf dCBlZHBfbWF4X2JpdHNfcGVyX3BpeGVsOwoxNDQ3NDogIHVuaW9uIGRzY19jb2xvcl9mb3JtYXRz IGNvbG9yX2Zvcm1hdHM7CjE0NDc0OiAgdW5pb24gZHNjX2NvbG9yX2RlcHRoIGNvbG9yX2RlcHRo OwoxNDQ3NDogIGludDMyX3QgdGhyb3VnaHB1dF9tb2RlXzBfbXBzOwoxNDQ3NDogIGludDMyX3Qg dGhyb3VnaHB1dF9tb2RlXzFfbXBzOwoxNDQ3NDogIGludDMyX3QgbWF4X3NsaWNlX3dpZHRoOwox NDQ3NDogIHVpbnQzMl90IGJwcF9pbmNyZW1lbnRfZGl2OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICB1aW50MzJfdCBicmFuY2hfb3ZlcmFsbF90aHJvdWdocHV0XzBfbXBzOwoxNDQ3NDogIHVpbnQz Ml90IGJyYW5jaF9vdmVyYWxsX3Rocm91Z2hwdXRfMV9tcHM7CjE0NDc0OiAgdWludDMyX3QgYnJh bmNoX21heF9saW5lX3dpZHRoOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzAgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvZGNjZy5oIiAyCjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBkY2NnIHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDog IGNvbnN0IHN0cnVjdCBkY2NnX2Z1bmNzICpmdW5jczsKMTQ0NzQ6IAoxNDQ3NDogIGludCByZWZf ZHBwY2xrOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjY2dfZnVuY3MgewoxNDQ3 NDogIHZvaWQgKCp1cGRhdGVfZHBwX2R0bykoc3RydWN0IGRjY2cgKmRjY2csCjE0NDc0OiAgICBp bnQgZHBwX2luc3QsCjE0NDc0OiAgICBpbnQgcmVxX2RwcGNsayk7CjE0NDc0OiAgdm9pZCAoKmdl dF9kY2NnX3JlZl9mcmVxKShzdHJ1Y3QgZGNjZyAqZGNjZywKMTQ0NzQ6ICAgIHVuc2lnbmVkIGlu dCB4dGFsaW5fZnJlcV9pbktoeiwKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCAqZGNjZ19yZWZfZnJl cV9pbktoeik7CjE0NDc0OiAgdm9pZCAoKmRjY2dfaW5pdCkoc3RydWN0IGRjY2cgKmRjY2cpOwox NDQ3NDogfTsKMTQ0NzQ6ICMgMjcgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9jbGtfbWdyX2ludGVybmFs LmgiIDEKMTQ0NzQ6ICMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9pbmMvaHcvY2xrX21ncl9pbnRlcm5hbC5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3IuaCIgMQoxNDQ3NDog IyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9j bGtfbWdyLmgiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9kYy5oIiAxCjE0NDc0OiAjIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvZGMuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2RjX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMzAgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMg MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvbG9nZ2Vy X3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9pbmNsdWRlL2xvZ2dlcl90eXBlcy5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvb3NfdHlwZXMuaCIgMQoxNDQ3NDogIyAzMCAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvbG9nZ2VyX3R5 cGVzLmgiIDIKMTQ0NzQ6ICMgNzIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9pbmNsdWRlL2xvZ2dlcl90eXBlcy5oIgoxNDQ3NDogc3RydWN0IGRhbF9sb2dnZXI7CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19sb2dfYnVmZmVyX2N0eCB7CjE0NDc0OiAgY2hhciAqYnVm OwoxNDQ3NDogIHNpemVfdCBwb3M7CjE0NDc0OiAgc2l6ZV90IHNpemU7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBlbnVtIGRjX2xvZ190eXBlIHsKMTQ0NzQ6ICBMT0dfRVJST1IgPSAwLAoxNDQ3 NDogIExPR19XQVJOSU5HLAoxNDQ3NDogIExPR19ERUJVRywKMTQ0NzQ6ICBMT0dfREMsCjE0NDc0 OiAgTE9HX0RUTiwKMTQ0NzQ6ICBMT0dfU1VSRkFDRSwKMTQ0NzQ6ICBMT0dfSFdfSE9UUExVRywK MTQ0NzQ6ICBMT0dfSFdfTElOS19UUkFJTklORywKMTQ0NzQ6ICBMT0dfSFdfU0VUX01PREUsCjE0 NDc0OiAgTE9HX0hXX1JFU1VNRV9TMywKMTQ0NzQ6ICBMT0dfSFdfQVVESU8sCjE0NDc0OiAgTE9H X0hXX0hQRF9JUlEsCjE0NDc0OiAgTE9HX01TVCwKMTQ0NzQ6ICBMT0dfU0NBTEVSLAoxNDQ3NDog IExPR19CSU9TLAoxNDQ3NDogIExPR19CQU5EV0lEVEhfQ0FMQ1MsCjE0NDc0OiAgTE9HX0JBTkRX SURUSF9WQUxJREFUSU9OLAoxNDQ3NDogIExPR19JMkNfQVVYLAoxNDQ3NDogIExPR19TWU5DLAox NDQ3NDogIExPR19CQUNLTElHSFQsCjE0NDc0OiAgTE9HX0ZFQVRVUkVfT1ZFUlJJREUsCjE0NDc0 OiAgTE9HX0RFVEVDVElPTl9FRElEX1BBUlNFUiwKMTQ0NzQ6ICBMT0dfREVURUNUSU9OX0RQX0NB UFMsCjE0NDc0OiAgTE9HX1JFU09VUkNFLAoxNDQ3NDogIExPR19ETUwsCjE0NDc0OiAgTE9HX0VW RU5UX01PREVfU0VULAoxNDQ3NDogIExPR19FVkVOVF9ERVRFQ1RJT04sCjE0NDc0OiAgTE9HX0VW RU5UX0xJTktfVFJBSU5JTkcsCjE0NDc0OiAgTE9HX0VWRU5UX0xJTktfTE9TUywKMTQ0NzQ6ICBM T0dfRVZFTlRfVU5ERVJGTE9XLAoxNDQ3NDogIExPR19JRl9UUkFDRSwKMTQ0NzQ6ICBMT0dfUEVS Rl9UUkFDRSwKMTQ0NzQ6ICBMT0dfRElTUExBWVNUQVRTLAoxNDQ3NDogIExPR19IRE1JX1JFVElN RVJfUkVEUklWRVIsCjE0NDc0OiAgTE9HX0RTQywKMTQ0NzQ6ICBMT0dfRFdCLAoxNDQ3NDogIExP R19HQU1NQV9ERUJVRywKMTQ0NzQ6ICBMT0dfTUFYX0hXX1BPSU5UUywKMTQ0NzQ6ICBMT0dfQUxM X1RGX0NIQU5ORUxTLAoxNDQ3NDogIExPR19TQU1QTEVfMURMVVQsCjE0NDc0OiAgTE9HX1NFQ1RJ T05fVE9UQUxfQ09VTlQKMTQ0NzQ6IH07CjE0NDc0OiAjIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncGlvX3R5cGVzLmgiIDEKMTQ0NzQ6 ICMgNDAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dw aW9fdHlwZXMuaCIKMTQ0NzQ6IGVudW0gZ3Bpb19yZXN1bHQgewoxNDQ3NDogIEdQSU9fUkVTVUxU X09LLAoxNDQ3NDogIEdQSU9fUkVTVUxUX05VTExfSEFORExFLAoxNDQ3NDogIEdQSU9fUkVTVUxU X0lOVkFMSURfREFUQSwKMTQ0NzQ6ICBHUElPX1JFU1VMVF9ERVZJQ0VfQlVTWSwKMTQ0NzQ6ICBH UElPX1JFU1VMVF9PUEVOX0ZBSUxFRCwKMTQ0NzQ6ICBHUElPX1JFU1VMVF9BTFJFQURZX09QRU5F RCwKMTQ0NzQ6ICBHUElPX1JFU1VMVF9OT05fU1BFQ0lGSUNfRVJST1IKMTQ0NzQ6IH07CjE0NDc0 OiAjIDU4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9n cGlvX3R5cGVzLmgiCjE0NDc0OiBlbnVtIGdwaW9faWQgewoxNDQ3NDogIEdQSU9fSURfVU5LTk9X TiA9ICgtMSksCjE0NDc0OiAgR1BJT19JRF9ERENfREFUQSwKMTQ0NzQ6ICBHUElPX0lEX0REQ19D TE9DSywKMTQ0NzQ6ICBHUElPX0lEX0dFTkVSSUMsCjE0NDc0OiAgR1BJT19JRF9IUEQsCjE0NDc0 OiAgR1BJT19JRF9HUElPX1BBRCwKMTQ0NzQ6ICBHUElPX0lEX1ZJUF9QQUQsCjE0NDc0OiAgR1BJ T19JRF9TWU5DLAoxNDQ3NDogIEdQSU9fSURfR1NMLAoxNDQ3NDogIEdQSU9fSURfQ09VTlQsCjE0 NDc0OiAgR1BJT19JRF9NSU4gPSBHUElPX0lEX0REQ19EQVRBLAoxNDQ3NDogIEdQSU9fSURfTUFY ID0gR1BJT19JRF9HU0wKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBncGlvX3Bpbl9pbmZvIHsKMTQ0NzQ6ICB1aW50MzJfdCBvZmZzZXQ7CjE0 NDc0OiAgdWludDMyX3Qgb2Zmc2V0X3k7CjE0NDc0OiAgdWludDMyX3Qgb2Zmc2V0X2VuOwoxNDQ3 NDogIHVpbnQzMl90IG9mZnNldF9tYXNrOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgbWFzazsK MTQ0NzQ6ICB1aW50MzJfdCBtYXNrX3k7CjE0NDc0OiAgdWludDMyX3QgbWFza19lbjsKMTQ0NzQ6 ICB1aW50MzJfdCBtYXNrX21hc2s7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGdwaW9f cGluX291dHB1dF9zdGF0ZSB7CjE0NDc0OiAgR1BJT19QSU5fT1VUUFVUX1NUQVRFX0FDVElWRV9M T1csCjE0NDc0OiAgR1BJT19QSU5fT1VUUFVUX1NUQVRFX0FDVElWRV9ISUdILAoxNDQ3NDogIEdQ SU9fUElOX09VVFBVVF9TVEFURV9ERUZBVUxUID0gR1BJT19QSU5fT1VUUFVUX1NUQVRFX0FDVElW RV9MT1cKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZ3Bpb19nZW5lcmljIHsKMTQ0NzQ6 ICBHUElPX0dFTkVSSUNfVU5LTk9XTiA9ICgtMSksCjE0NDc0OiAgR1BJT19HRU5FUklDX0EsCjE0 NDc0OiAgR1BJT19HRU5FUklDX0IsCjE0NDc0OiAgR1BJT19HRU5FUklDX0MsCjE0NDc0OiAgR1BJ T19HRU5FUklDX0QsCjE0NDc0OiAgR1BJT19HRU5FUklDX0UsCjE0NDc0OiAgR1BJT19HRU5FUklD X0YsCjE0NDc0OiAgR1BJT19HRU5FUklDX0csCjE0NDc0OiAgR1BJT19HRU5FUklDX0NPVU5ULAox NDQ3NDogIEdQSU9fR0VORVJJQ19NSU4gPSBHUElPX0dFTkVSSUNfQSwKMTQ0NzQ6ICBHUElPX0dF TkVSSUNfTUFYID0gR1BJT19HRU5FUklDX0IKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0g Z3Bpb19ocGQgewoxNDQ3NDogIEdQSU9fSFBEX1VOS05PV04gPSAoLTEpLAoxNDQ3NDogIEdQSU9f SFBEXzEsCjE0NDc0OiAgR1BJT19IUERfMiwKMTQ0NzQ6ICBHUElPX0hQRF8zLAoxNDQ3NDogIEdQ SU9fSFBEXzQsCjE0NDc0OiAgR1BJT19IUERfNSwKMTQ0NzQ6ICBHUElPX0hQRF82LAoxNDQ3NDog IEdQSU9fSFBEX0NPVU5ULAoxNDQ3NDogIEdQSU9fSFBEX01JTiA9IEdQSU9fSFBEXzEsCjE0NDc0 OiAgR1BJT19IUERfTUFYID0gR1BJT19IUERfNgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51 bSBncGlvX2dwaW9fcGFkIHsKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEX1VOS05PV04gPSAoLTEpLAox NDQ3NDogIEdQSU9fR1BJT19QQURfMCwKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzEsCjE0NDc0OiAg R1BJT19HUElPX1BBRF8yLAoxNDQ3NDogIEdQSU9fR1BJT19QQURfMywKMTQ0NzQ6ICBHUElPX0dQ SU9fUEFEXzQsCjE0NDc0OiAgR1BJT19HUElPX1BBRF81LAoxNDQ3NDogIEdQSU9fR1BJT19QQURf NiwKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzcsCjE0NDc0OiAgR1BJT19HUElPX1BBRF84LAoxNDQ3 NDogIEdQSU9fR1BJT19QQURfOSwKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzEwLAoxNDQ3NDogIEdQ SU9fR1BJT19QQURfMTEsCjE0NDc0OiAgR1BJT19HUElPX1BBRF8xMiwKMTQ0NzQ6ICBHUElPX0dQ SU9fUEFEXzEzLAoxNDQ3NDogIEdQSU9fR1BJT19QQURfMTQsCjE0NDc0OiAgR1BJT19HUElPX1BB RF8xNSwKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzE2LAoxNDQ3NDogIEdQSU9fR1BJT19QQURfMTcs CjE0NDc0OiAgR1BJT19HUElPX1BBRF8xOCwKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzE5LAoxNDQ3 NDogIEdQSU9fR1BJT19QQURfMjAsCjE0NDc0OiAgR1BJT19HUElPX1BBRF8yMSwKMTQ0NzQ6ICBH UElPX0dQSU9fUEFEXzIyLAoxNDQ3NDogIEdQSU9fR1BJT19QQURfMjMsCjE0NDc0OiAgR1BJT19H UElPX1BBRF8yNCwKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzI1LAoxNDQ3NDogIEdQSU9fR1BJT19Q QURfMjYsCjE0NDc0OiAgR1BJT19HUElPX1BBRF8yNywKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzI4 LAoxNDQ3NDogIEdQSU9fR1BJT19QQURfMjksCjE0NDc0OiAgR1BJT19HUElPX1BBRF8zMCwKMTQ0 NzQ6ICBHUElPX0dQSU9fUEFEX0NPVU5ULAoxNDQ3NDogIEdQSU9fR1BJT19QQURfTUlOID0gR1BJ T19HUElPX1BBRF8wLAoxNDQ3NDogIEdQSU9fR1BJT19QQURfTUFYID0gR1BJT19HUElPX1BBRF8z MAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBncGlvX3ZpcF9wYWQgewoxNDQ3NDogIEdQ SU9fVklQX1BBRF9VTktOT1dOID0gKC0xKSwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgR1BJT19W SVBfUEFEX1NDTCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgR1BJT19WSVBfUEFEX1NEQSwKMTQ0 NzQ6ICBHUElPX1ZJUF9QQURfVkhBRCwKMTQ0NzQ6ICBHUElPX1ZJUF9QQURfVlBIQ1RMLAoxNDQ3 NDogIEdQSU9fVklQX1BBRF9WSVBDTEssCjE0NDc0OiAgR1BJT19WSVBfUEFEX1ZJRCwKMTQ0NzQ6 ICBHUElPX1ZJUF9QQURfVlBDTEswLAoxNDQ3NDogIEdQSU9fVklQX1BBRF9EVkFMSUQsCjE0NDc0 OiAgR1BJT19WSVBfUEFEX1BTWU5DLAoxNDQ3NDogIEdQSU9fVklQX1BBRF9DT1VOVCwKMTQ0NzQ6 ICBHUElPX1ZJUF9QQURfTUlOID0gR1BJT19WSVBfUEFEX1NDTCwKMTQ0NzQ6ICBHUElPX1ZJUF9Q QURfTUFYID0gR1BJT19WSVBfUEFEX1BTWU5DCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVt IGdwaW9fc3luYyB7CjE0NDc0OiAgR1BJT19TWU5DX1VOS05PV04gPSAoLTEpLAoxNDQ3NDogIEdQ SU9fU1lOQ19IU1lOQ19BLAoxNDQ3NDogIEdQSU9fU1lOQ19WU1lOQ19BLAoxNDQ3NDogIEdQSU9f U1lOQ19IU1lOQ19CLAoxNDQ3NDogIEdQSU9fU1lOQ19WU1lOQ19CLAoxNDQ3NDogIEdQSU9fU1lO Q19DT1VOVCwKMTQ0NzQ6ICBHUElPX1NZTkNfTUlOID0gR1BJT19TWU5DX0hTWU5DX0EsCjE0NDc0 OiAgR1BJT19TWU5DX01BWCA9IEdQSU9fU1lOQ19WU1lOQ19CCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBlbnVtIGdwaW9fZ3NsIHsKMTQ0NzQ6ICBHUElPX0dTTF9VTktOT1dOID0gKC0xKSwKMTQ0 NzQ6ICBHUElPX0dTTF9HRU5MT0NLX0NMT0NLLAoxNDQ3NDogIEdQSU9fR1NMX0dFTkxPQ0tfVlNZ TkMsCjE0NDc0OiAgR1BJT19HU0xfU1dBUExPQ0tfQSwKMTQ0NzQ6ICBHUElPX0dTTF9TV0FQTE9D S19CLAoxNDQ3NDogIEdQSU9fR1NMX0NPVU5ULAoxNDQ3NDogIEdQSU9fR1NMX01JTiA9IEdQSU9f R1NMX0dFTkxPQ0tfQ0xPQ0ssCjE0NDc0OiAgR1BJT19HU0xfTUFYID0gR1BJT19HU0xfU1dBUExP Q0tfQgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGVudW0gZ3Bpb19kZGNfbGluZSB7CjE0NDc0OiAgR1BJT19ERENfTElORV9V TktOT1dOID0gKC0xKSwKMTQ0NzQ6ICBHUElPX0REQ19MSU5FX0REQzEsCjE0NDc0OiAgR1BJT19E RENfTElORV9EREMyLAoxNDQ3NDogIEdQSU9fRERDX0xJTkVfRERDMywKMTQ0NzQ6ICBHUElPX0RE Q19MSU5FX0REQzQsCjE0NDc0OiAgR1BJT19ERENfTElORV9EREM1LAoxNDQ3NDogIEdQSU9fRERD X0xJTkVfRERDNiwKMTQ0NzQ6ICBHUElPX0REQ19MSU5FX0REQ19WR0EsCjE0NDc0OiAgR1BJT19E RENfTElORV9WSVBfUEFELAoxNDQ3NDogIEdQSU9fRERDX0xJTkVfSTJDX1BBRCA9IEdQSU9fRERD X0xJTkVfVklQX1BBRCwKMTQ0NzQ6ICBHUElPX0REQ19MSU5FX0NPVU5ULAoxNDQ3NDogIEdQSU9f RERDX0xJTkVfTUlOID0gR1BJT19ERENfTElORV9EREMxLAoxNDQ3NDogIEdQSU9fRERDX0xJTkVf TUFYID0gR1BJT19ERENfTElORV9JMkNfUEFECjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBncGlvX21vZGUgewoxNDQ3 NDogIEdQSU9fTU9ERV9VTktOT1dOID0gKC0xKSwKMTQ0NzQ6ICBHUElPX01PREVfSU5QVVQsCjE0 NDc0OiAgR1BJT19NT0RFX09VVFBVVCwKMTQ0NzQ6ICBHUElPX01PREVfRkFTVF9PVVRQVVQsCjE0 NDc0OiAgR1BJT19NT0RFX0hBUkRXQVJFLAoxNDQ3NDogIEdQSU9fTU9ERV9JTlRFUlJVUFQKMTQ0 NzQ6IH07CjE0NDc0OiAjIDI0NiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2luY2x1ZGUvZ3Bpb190eXBlcy5oIgoxNDQ3NDogZW51bSBncGlvX3NpZ25hbF9zb3VyY2Ug ewoxNDQ3NDogIEdQSU9fU0lHTkFMX1NPVVJDRV9VTktOT1dOID0gKC0xKSwKMTQ0NzQ6ICBHUElP X1NJR05BTF9TT1VSQ0VfREFDQV9TVEVSRU9fU1lOQywKMTQ0NzQ6ICBHUElPX1NJR05BTF9TT1VS Q0VfUEFTU19USFJPVUdIX1NURVJFT19TWU5DLAoxNDQ3NDogIEdQSU9fU0lHTkFMX1NPVVJDRV9E QUNCX1NURVJFT19TWU5DLAoxNDQ3NDogIEdQSU9fU0lHTkFMX1NPVVJDRV9EQUNBX0hTWU5DLAox NDQ3NDogIEdQSU9fU0lHTkFMX1NPVVJDRV9EQUNCX0hTWU5DLAoxNDQ3NDogIEdQSU9fU0lHTkFM X1NPVVJDRV9EQUNBX1ZTWU5DLAoxNDQ3NDogIEdQSU9fU0lHTkFMX1NPVVJDRV9EQUNCX1ZTWU5D LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBncGlvX3N0ZXJlb19zb3VyY2UgewoxNDQ3 NDogIEdQSU9fU1RFUkVPX1NPVVJDRV9VTktOT1dOID0gKC0xKSwKMTQ0NzQ6ICBHUElPX1NURVJF T19TT1VSQ0VfRDEsCjE0NDc0OiAgR1BJT19TVEVSRU9fU09VUkNFX0QyLAoxNDQ3NDogIEdQSU9f U1RFUkVPX1NPVVJDRV9EMywKMTQ0NzQ6ICBHUElPX1NURVJFT19TT1VSQ0VfRDQsCjE0NDc0OiAg R1BJT19TVEVSRU9fU09VUkNFX0Q1LAoxNDQ3NDogIEdQSU9fU1RFUkVPX1NPVVJDRV9ENgoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVt IGdwaW9fY29uZmlnX3R5cGUgewoxNDQ3NDogIEdQSU9fQ09ORklHX1RZUEVfTk9ORSwKMTQ0NzQ6 ICBHUElPX0NPTkZJR19UWVBFX0REQywKMTQ0NzQ6ICBHUElPX0NPTkZJR19UWVBFX0hQRCwKMTQ0 NzQ6ICBHUElPX0NPTkZJR19UWVBFX0dFTkVSSUNfTVVYLAoxNDQ3NDogIEdQSU9fQ09ORklHX1RZ UEVfR1NMX01VWCwKMTQ0NzQ6ICBHUElPX0NPTkZJR19UWVBFX0kyQ19BVVhfRFVBTF9NT0RFCjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBncGlvX2RkY19jb25m aWdfdHlwZSB7CjE0NDc0OiAgR1BJT19ERENfQ09ORklHX1RZUEVfTU9ERV9BVVgsCjE0NDc0OiAg R1BJT19ERENfQ09ORklHX1RZUEVfTU9ERV9JMkMsCjE0NDc0OiAgR1BJT19ERENfQ09ORklHX1RZ UEVfUE9MTF9GT1JfQ09OTkVDVCwKMTQ0NzQ6ICBHUElPX0REQ19DT05GSUdfVFlQRV9QT0xMX0ZP Ul9ESVNDT05ORUNULAoxNDQ3NDogIEdQSU9fRERDX0NPTkZJR19UWVBFX0RJU0FCTEVfUE9MTElO RwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGdwaW9fZGRjX2NvbmZpZyB7CjE0NDc0 OiAgZW51bSBncGlvX2RkY19jb25maWdfdHlwZSB0eXBlOwoxNDQ3NDogIGJvb2wgZGF0YV9lbl9i aXRfcHJlc2VudDsKMTQ0NzQ6ICBib29sIGNsb2NrX2VuX2JpdF9wcmVzZW50OwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBncGlvX2hwZF9jb25maWcgewox NDQ3NDogIHVpbnQzMl90IGRlbGF5X29uX2Nvbm5lY3Q7CjE0NDc0OiAgdWludDMyX3QgZGVsYXlf b25fZGlzY29ubmVjdDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBncGlvX2dlbmVy aWNfbXV4X2NvbmZpZyB7CjE0NDc0OiAgYm9vbCBlbmFibGVfb3V0cHV0X2Zyb21fbXV4OwoxNDQ3 NDogIGVudW0gZ3Bpb19zaWduYWxfc291cmNlIG11eF9zZWxlY3Q7CjE0NDc0OiAgZW51bSBncGlv X3N0ZXJlb19zb3VyY2Ugc3RlcmVvX3NlbGVjdDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVu dW0gZ3Bpb19nc2xfbXV4X2NvbmZpZ190eXBlIHsKMTQ0NzQ6ICBHUElPX0dTTF9NVVhfQ09ORklH X1RZUEVfRElTQUJMRSwKMTQ0NzQ6ICBHUElPX0dTTF9NVVhfQ09ORklHX1RZUEVfVElNSU5HX1NZ TkMsCjE0NDc0OiAgR1BJT19HU0xfTVVYX0NPTkZJR19UWVBFX0ZMSVBfU1lOQwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGdwaW9fZ3NsX211eF9jb25maWcgewoxNDQ3NDogIGVudW0g Z3Bpb19nc2xfbXV4X2NvbmZpZ190eXBlIHR5cGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVp bnQzMl90IGdzbF9ncm91cDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBncGlvX2Nv bmZpZ19kYXRhIHsKMTQ0NzQ6ICBlbnVtIGdwaW9fY29uZmlnX3R5cGUgdHlwZTsKMTQ0NzQ6ICB1 bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBncGlvX2RkY19jb25maWcgZGRjOwoxNDQ3NDogICBzdHJ1 Y3QgZ3Bpb19ocGRfY29uZmlnIGhwZDsKMTQ0NzQ6ICAgc3RydWN0IGdwaW9fZ2VuZXJpY19tdXhf Y29uZmlnIGdlbmVyaWNfbXV4OwoxNDQ3NDogICBzdHJ1Y3QgZ3Bpb19nc2xfbXV4X2NvbmZpZyBn c2xfbXV4OwoxNDQ3NDogIH0gY29uZmlnOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzMgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCjE0NDc0OiAjIDEgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2xpbmtfc2Vydmlj ZV90eXBlcy5oIiAxCjE0NDc0OiAjIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvaW5jbHVkZS9saW5rX3NlcnZpY2VfdHlwZXMuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZGFsX3R5cGVzLmgiIDEK MTQ0NzQ6ICMgMzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNs dWRlL2xpbmtfc2VydmljZV90eXBlcy5oIiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pcnFfdHlwZXMuaCIgMQoxNDQ3NDogIyAzMiAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvbGlua19zZXJ2aWNl X3R5cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGRjOwoxNDQ3NDogc3Ry dWN0IGlycV9tYW5hZ2VyOwoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBNQVhfQ09OVFJP TExFUl9OVU0gPSA2CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRwX3Bvd2VyX3N0YXRl IHsKMTQ0NzQ6ICBEUF9QT1dFUl9TVEFURV9EMCA9IDEsCjE0NDc0OiAgRFBfUE9XRVJfU1RBVEVf RDMKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZWRwX3JldmlzaW9uIHsKMTQ0NzQ6IAox NDQ3NDogIEVEUF9SRVZJU0lPTl8xMSA9IDB4MDAsCjE0NDc0OiAKMTQ0NzQ6ICBFRFBfUkVWSVNJ T05fMTIgPSAweDAxLAoxNDQ3NDogCjE0NDc0OiAgRURQX1JFVklTSU9OXzEzID0gMHgwMgoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgTElOS19SQVRFX1JFRl9GUkVRX0lO X0tIWiA9IDI3MDAwCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGxpbmtfdHJhaW5pbmdf cmVzdWx0IHsKMTQ0NzQ6ICBMSU5LX1RSQUlOSU5HX1NVQ0NFU1MsCjE0NDc0OiAgTElOS19UUkFJ TklOR19DUl9GQUlMX0xBTkUwLAoxNDQ3NDogIExJTktfVFJBSU5JTkdfQ1JfRkFJTF9MQU5FMSwK MTQ0NzQ6ICBMSU5LX1RSQUlOSU5HX0NSX0ZBSUxfTEFORTIzLAoxNDQ3NDogCjE0NDc0OiAgTElO S19UUkFJTklOR19FUV9GQUlMX0NSLAoxNDQ3NDogCjE0NDc0OiAgTElOS19UUkFJTklOR19FUV9G QUlMX0VRLAoxNDQ3NDogIExJTktfVFJBSU5JTkdfTFFBX0ZBSUwsCjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgbGlua190cmFpbmluZ19zZXR0aW5ncyB7CjE0NDc0OiAgc3RydWN0IGRj X2xpbmtfc2V0dGluZ3MgbGlua19zZXR0aW5nczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfbGFuZV9zZXR0 aW5ncyBsYW5lX3NldHRpbmdzW0xBTkVfQ09VTlRfRFBfTUFYXTsKMTQ0NzQ6IAoxNDQ3NDogIGVu dW0gZGNfdm9sdGFnZV9zd2luZyAqdm9sdGFnZV9zd2luZzsKMTQ0NzQ6ICBlbnVtIGRjX3ByZV9l bXBoYXNpcyAqcHJlX2VtcGhhc2lzOwoxNDQ3NDogIGVudW0gZGNfcG9zdF9jdXJzb3IyICpwb3N0 X2N1cnNvcjI7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MTZfdCBjcl9wYXR0ZXJuX3RpbWU7CjE0NDc0 OiAgdWludDE2X3QgZXFfcGF0dGVybl90aW1lOwoxNDQ3NDogIGVudW0gZGNfZHBfdHJhaW5pbmdf cGF0dGVybiBwYXR0ZXJuX2Zvcl9lcTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgZW5oYW5jZWRfZnJh bWluZzsKMTQ0NzQ6ICBib29sIGFsbG93X2ludmFsaWRfbXNhX3RpbWluZ19wYXJhbTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRwX3Rlc3RfcGF0dGVybiB7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERQX1RFU1RfUEFUVEVSTl9WSURFT19NT0RFID0gMCwK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRFBfVEVTVF9QQVRURVJOX1BIWV9QQVRURVJOX0JFR0lO LAoxNDQ3NDogIERQX1RFU1RfUEFUVEVSTl9EMTAyID0gRFBfVEVTVF9QQVRURVJOX1BIWV9QQVRU RVJOX0JFR0lOLAoxNDQ3NDogIERQX1RFU1RfUEFUVEVSTl9TWU1CT0xfRVJST1IsCjE0NDc0OiAg RFBfVEVTVF9QQVRURVJOX1BSQlM3LAoxNDQ3NDogIERQX1RFU1RfUEFUVEVSTl84MEJJVF9DVVNU T00sCjE0NDc0OiAgRFBfVEVTVF9QQVRURVJOX0NQMjUyMF8xLAoxNDQ3NDogIERQX1RFU1RfUEFU VEVSTl9DUDI1MjBfMiwKMTQ0NzQ6ICBEUF9URVNUX1BBVFRFUk5fSEJSMl9DT01QTElBTkNFX0VZ RSA9IERQX1RFU1RfUEFUVEVSTl9DUDI1MjBfMiwKMTQ0NzQ6ICBEUF9URVNUX1BBVFRFUk5fQ1Ay NTIwXzMsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERQX1RFU1RfUEFUVEVSTl9UUkFJTklOR19Q QVRURVJOMSwKMTQ0NzQ6ICBEUF9URVNUX1BBVFRFUk5fVFJBSU5JTkdfUEFUVEVSTjIsCjE0NDc0 OiAgRFBfVEVTVF9QQVRURVJOX1RSQUlOSU5HX1BBVFRFUk4zLAoxNDQ3NDogIERQX1RFU1RfUEFU VEVSTl9UUkFJTklOR19QQVRURVJONCwKMTQ0NzQ6ICBEUF9URVNUX1BBVFRFUk5fUEhZX1BBVFRF Uk5fRU5EID0gRFBfVEVTVF9QQVRURVJOX1RSQUlOSU5HX1BBVFRFUk40LAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBEUF9URVNUX1BBVFRFUk5fQ09MT1JfU1FVQVJFUywKMTQ0NzQ6ICBEUF9URVNU X1BBVFRFUk5fQ09MT1JfU1FVQVJFU19DRUEsCjE0NDc0OiAgRFBfVEVTVF9QQVRURVJOX1ZFUlRJ Q0FMX0JBUlMsCjE0NDc0OiAgRFBfVEVTVF9QQVRURVJOX0hPUklaT05UQUxfQkFSUywKMTQ0NzQ6 ICBEUF9URVNUX1BBVFRFUk5fQ09MT1JfUkFNUCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRFBf VEVTVF9QQVRURVJOX0FVRElPX09QRVJBVE9SX0RFRklORUQsCjE0NDc0OiAgRFBfVEVTVF9QQVRU RVJOX0FVRElPX1NBV1RPT1RILAoxNDQ3NDogCjE0NDc0OiAgRFBfVEVTVF9QQVRURVJOX1VOU1VQ UE9SVEVECjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRwX3Rlc3RfcGF0dGVybl9jb2xv cl9zcGFjZSB7CjE0NDc0OiAgRFBfVEVTVF9QQVRURVJOX0NPTE9SX1NQQUNFX1JHQiwKMTQ0NzQ6 ICBEUF9URVNUX1BBVFRFUk5fQ09MT1JfU1BBQ0VfWUNCQ1I2MDEsCjE0NDc0OiAgRFBfVEVTVF9Q QVRURVJOX0NPTE9SX1NQQUNFX1lDQkNSNzA5LAoxNDQ3NDogIERQX1RFU1RfUEFUVEVSTl9DT0xP Ul9TUEFDRV9VTkRFRklORUQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZHBfcGFuZWxf bW9kZSB7CjE0NDc0OiAKMTQ0NzQ6ICBEUF9QQU5FTF9NT0RFX0RFRkFVTFQsCjE0NDc0OiAKMTQ0 NzQ6ICBEUF9QQU5FTF9NT0RFX0VEUCwKMTQ0NzQ6IAoxNDQ3NDogIERQX1BBTkVMX01PREVfU1BF Q0lBTAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkcGNkX3RyYWluaW5n X2xhbmVfc2V0IHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgVk9M VEFHRV9TV0lOR19TRVQ6MjsKMTQ0NzQ6ICAgdWludDhfdCBNQVhfU1dJTkdfUkVBQ0hFRDoxOwox NDQ3NDogICB1aW50OF90IFBSRV9FTVBIQVNJU19TRVQ6MjsKMTQ0NzQ6ICAgdWludDhfdCBNQVhf UFJFX0VNUEhBU0lTX1JFQUNIRUQ6MTsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IFBPU1RfQ1VS U09SMl9TRVQ6MjsKMTQ0NzQ6ICMgMTYxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvaW5jbHVkZS9saW5rX3NlcnZpY2VfdHlwZXMuaCIKMTQ0NzQ6ICB9IGJpdHM7CjE0 NDc0OiAKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZHBfbXN0X3N0cmVhbV9hbGxvY2F0aW9uIHsKMTQ0NzQ6ICB1aW50 OF90IHZjcF9pZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDhfdCBzbG90X2NvdW50Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHBfbXN0X3N0cmVhbV9hbGxv Y2F0aW9uX3RhYmxlIHsKMTQ0NzQ6IAoxNDQ3NDogIGludCBzdHJlYW1fY291bnQ7CjE0NDc0OiAK MTQ0NzQ6ICBzdHJ1Y3QgZHBfbXN0X3N0cmVhbV9hbGxvY2F0aW9uIHN0cmVhbV9hbGxvY2F0aW9u c1tNQVhfQ09OVFJPTExFUl9OVU1dOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzQgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCjE0NDc0OiAjIDEgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2N0 cmxfZGVmcy5oIiAxCjE0NDc0OiAjIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9jdHJsX2RlZnMuaCIKMTQ0NzQ6ICMgMSAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZ3JwaF9vYmplY3Rf ZGVmcy5oIiAxCjE0NDc0OiAjIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9jdHJsX2RlZnMuaCIgMgoxNDQ3NDogIyA0MiAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZ3JwaF9vYmplY3Rf Y3RybF9kZWZzLmgiCjE0NDc0OiBlbnVtIGRpc3BsYXlfb3V0cHV0X2JpdF9kZXB0aCB7CjE0NDc0 OiAgUEFORUxfVU5ERUZJTkUgPSAwLAoxNDQ3NDogIFBBTkVMXzZCSVRfQ09MT1IgPSAxLAoxNDQ3 NDogIFBBTkVMXzhCSVRfQ09MT1IgPSAyLAoxNDQ3NDogIFBBTkVMXzEwQklUX0NPTE9SID0gMywK MTQ0NzQ6ICBQQU5FTF8xMkJJVF9DT0xPUiA9IDQsCjE0NDc0OiAgUEFORUxfMTZCSVRfQ09MT1Ig PSA1LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGFsX2Rl dmljZV90eXBlIHsKMTQ0NzQ6ICBERVZJQ0VfVFlQRV9VTktOT1dOID0gMCwKMTQ0NzQ6ICBERVZJ Q0VfVFlQRV9MQ0QsCjE0NDc0OiAgREVWSUNFX1RZUEVfQ1JULAoxNDQ3NDogIERFVklDRV9UWVBF X0RGUCwKMTQ0NzQ6ICBERVZJQ0VfVFlQRV9DViwKMTQ0NzQ6ICBERVZJQ0VfVFlQRV9UViwKMTQ0 NzQ6ICBERVZJQ0VfVFlQRV9DRiwKMTQ0NzQ6ICBERVZJQ0VfVFlQRV9XSVJFTEVTUwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlX2lkIHsKMTQ0NzQ6ICBlbnVt IGRhbF9kZXZpY2VfdHlwZSBkZXZpY2VfdHlwZToxNjsKMTQ0NzQ6ICB1aW50MzJfdCBlbnVtX2lk OjE2OwoxNDQ3NDogIHVpbnQxNl90IHJhd19kZXZpY2VfdGFnOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGdyYXBoaWNzX29iamVjdF9pMmNfaW5mbyB7CjE0NDc0OiAgc3RydWN0IGdw aW9faW5mbyB7CjE0NDc0OiAgIHVpbnQzMl90IGNsa19tYXNrX3JlZ2lzdGVyX2luZGV4OwoxNDQ3 NDogICB1aW50MzJfdCBjbGtfZW5fcmVnaXN0ZXJfaW5kZXg7CjE0NDc0OiAgIHVpbnQzMl90IGNs a195X3JlZ2lzdGVyX2luZGV4OwoxNDQ3NDogICB1aW50MzJfdCBjbGtfYV9yZWdpc3Rlcl9pbmRl eDsKMTQ0NzQ6ICAgdWludDMyX3QgZGF0YV9tYXNrX3JlZ2lzdGVyX2luZGV4OwoxNDQ3NDogICB1 aW50MzJfdCBkYXRhX2VuX3JlZ2lzdGVyX2luZGV4OwoxNDQ3NDogICB1aW50MzJfdCBkYXRhX3lf cmVnaXN0ZXJfaW5kZXg7CjE0NDc0OiAgIHVpbnQzMl90IGRhdGFfYV9yZWdpc3Rlcl9pbmRleDsK MTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCBjbGtfbWFza19zaGlmdDsKMTQ0NzQ6ICAgdWludDMy X3QgY2xrX2VuX3NoaWZ0OwoxNDQ3NDogICB1aW50MzJfdCBjbGtfeV9zaGlmdDsKMTQ0NzQ6ICAg dWludDMyX3QgY2xrX2Ffc2hpZnQ7CjE0NDc0OiAgIHVpbnQzMl90IGRhdGFfbWFza19zaGlmdDsK MTQ0NzQ6ICAgdWludDMyX3QgZGF0YV9lbl9zaGlmdDsKMTQ0NzQ6ICAgdWludDMyX3QgZGF0YV95 X3NoaWZ0OwoxNDQ3NDogICB1aW50MzJfdCBkYXRhX2Ffc2hpZnQ7CjE0NDc0OiAgfSBncGlvX2lu Zm87CjE0NDc0OiAKMTQ0NzQ6ICBib29sIGkyY19od19hc3Npc3Q7CjE0NDc0OiAgdWludDMyX3Qg aTJjX2xpbmU7CjE0NDc0OiAgdWludDMyX3QgaTJjX2VuZ2luZV9pZDsKMTQ0NzQ6ICB1aW50MzJf dCBpMmNfc2xhdmVfYWRkcmVzczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBncmFw aGljc19vYmplY3RfaHBkX2luZm8gewoxNDQ3NDogIHVpbnQ4X3QgaHBkX2ludF9ncGlvX3VpZDsK MTQ0NzQ6ICB1aW50OF90IGhwZF9hY3RpdmU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgY29ubmVjdG9yX2RldmljZV90YWdfaW5mbyB7CjE0NDc0OiAgdWludDMyX3QgYWNwaV9kZXZp Y2U7CjE0NDc0OiAgc3RydWN0IGRldmljZV9pZCBkZXZfaWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZGV2aWNlX3RpbWluZyB7CjE0NDc0OiAgc3RydWN0IG1pc2NfaW5mbyB7CjE0 NDc0OiAgIHVpbnQzMl90IEhPUklaT05UQUxfQ1VUX09GRjoxOwoxNDQ3NDogCjE0NDc0OiAgIHVp bnQzMl90IEhfU1lOQ19QT0xBUklUWToxOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90IFZfU1lO Q19QT0xBUklUWToxOwoxNDQ3NDogICB1aW50MzJfdCBWRVJUSUNBTF9DVVRfT0ZGOjE7CjE0NDc0 OiAgIHVpbnQzMl90IEhfUkVQTElDQVRJT05fQlkyOjE7CjE0NDc0OiAgIHVpbnQzMl90IFZfUkVQ TElDQVRJT05fQlkyOjE7CjE0NDc0OiAgIHVpbnQzMl90IENPTVBPU0lURV9TWU5DOjE7CjE0NDc0 OiAgIHVpbnQzMl90IElOVEVSTEFDRToxOwoxNDQ3NDogICB1aW50MzJfdCBET1VCTEVfQ0xPQ0s6 MTsKMTQ0NzQ6ICAgdWludDMyX3QgUkdCODg4OjE7CjE0NDc0OiAgIHVpbnQzMl90IEdSRVlfTEVW RUw6MjsKMTQ0NzQ6ICAgdWludDMyX3QgU1BBVElBTDoxOwoxNDQ3NDogICB1aW50MzJfdCBURU1Q T1JBTDoxOwoxNDQ3NDogICB1aW50MzJfdCBBUElfRU5BQkxFRDoxOwoxNDQ3NDogIH0gbWlzY19p bmZvOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgcGl4ZWxfY2xrOwoxNDQ3NDogIHVpbnQzMl90 IGhvcml6b250YWxfYWRkcmVzc2FibGU7CjE0NDc0OiAgdWludDMyX3QgaG9yaXpvbnRhbF9ibGFu a2luZ190aW1lOwoxNDQ3NDogIHVpbnQzMl90IHZlcnRpY2FsX2FkZHJlc3NhYmxlOwoxNDQ3NDog IHVpbnQzMl90IHZlcnRpY2FsX2JsYW5raW5nX3RpbWU7CjE0NDc0OiAgdWludDMyX3QgaG9yaXpv bnRhbF9zeW5jX29mZnNldDsKMTQ0NzQ6ICB1aW50MzJfdCBob3Jpem9udGFsX3N5bmNfd2lkdGg7 CjE0NDc0OiAgdWludDMyX3QgdmVydGljYWxfc3luY19vZmZzZXQ7CjE0NDc0OiAgdWludDMyX3Qg dmVydGljYWxfc3luY193aWR0aDsKMTQ0NzQ6ICB1aW50MzJfdCBob3Jpem9udGFsX2JvcmRlcjsK MTQ0NzQ6ICB1aW50MzJfdCB2ZXJ0aWNhbF9ib3JkZXI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3Qgc3VwcG9ydGVkX3JlZnJlc2hfcmF0ZSB7CjE0NDc0OiAgdWludDMyX3QgUkVGUkVT SF9SQVRFXzMwSFo6MTsKMTQ0NzQ6ICB1aW50MzJfdCBSRUZSRVNIX1JBVEVfNDBIWjoxOwoxNDQ3 NDogIHVpbnQzMl90IFJFRlJFU0hfUkFURV80OEhaOjE7CjE0NDc0OiAgdWludDMyX3QgUkVGUkVT SF9SQVRFXzUwSFo6MTsKMTQ0NzQ6ICB1aW50MzJfdCBSRUZSRVNIX1JBVEVfNjBIWjoxOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGVtYmVkZGVkX3BhbmVsX2luZm8gewoxNDQ3NDog IHN0cnVjdCBkZXZpY2VfdGltaW5nIGxjZF90aW1pbmc7CjE0NDc0OiAgdWludDMyX3Qgc3NfaWQ7 CjE0NDc0OiAgc3RydWN0IHN1cHBvcnRlZF9yZWZyZXNoX3JhdGUgc3VwcG9ydGVkX3JyOwoxNDQ3 NDogIHVpbnQzMl90IGRycl9lbmFibGVkOwoxNDQ3NDogIHVpbnQzMl90IG1pbl9kcnJfcmVmcmVz aF9yYXRlOwoxNDQ3NDogIGJvb2wgcmVhbHRla19lRFBUb0xWRFM7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgZGNfZmlybXdhcmVfaW5mbyB7CjE0NDc0OiAgc3RydWN0IHBsbF9pbmZv IHsKMTQ0NzQ6ICAgdWludDMyX3QgY3J5c3RhbF9mcmVxdWVuY3k7CjE0NDc0OiAgIHVpbnQzMl90 IG1pbl9pbnB1dF9weGxfY2xrX3BsbF9mcmVxdWVuY3k7CjE0NDc0OiAgIHVpbnQzMl90IG1heF9p bnB1dF9weGxfY2xrX3BsbF9mcmVxdWVuY3k7CjE0NDc0OiAgIHVpbnQzMl90IG1pbl9vdXRwdXRf cHhsX2Nsa19wbGxfZnJlcXVlbmN5OwoxNDQ3NDogICB1aW50MzJfdCBtYXhfb3V0cHV0X3B4bF9j bGtfcGxsX2ZyZXF1ZW5jeTsKMTQ0NzQ6ICB9IHBsbF9pbmZvOwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IGZpcm13YXJlX2ZlYXR1cmUgewoxNDQ3NDogICB1aW50MzJfdCBtZW1vcnlfY2xrX3NzX3Bl cmNlbnRhZ2U7CjE0NDc0OiAgIHVpbnQzMl90IGVuZ2luZV9jbGtfc3NfcGVyY2VudGFnZTsKMTQ0 NzQ6ICB9IGZlYXR1cmU7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBkZWZhdWx0X2Rpc3BsYXlf ZW5naW5lX3BsbF9mcmVxdWVuY3k7CjE0NDc0OiAgdWludDMyX3QgZXh0ZXJuYWxfY2xvY2tfc291 cmNlX2ZyZXF1ZW5jeV9mb3JfZHA7CjE0NDc0OiAgdWludDMyX3Qgc211X2dwdV9wbGxfb3V0cHV0 X2ZyZXE7CjE0NDc0OiAgdWludDhfdCBtaW5fYWxsb3dlZF9ibF9sZXZlbDsKMTQ0NzQ6ICB1aW50 OF90IHJlbW90ZV9kaXNwbGF5X2NvbmZpZzsKMTQ0NzQ6ICB1aW50MzJfdCBkZWZhdWx0X21lbW9y eV9jbGs7CjE0NDc0OiAgdWludDMyX3QgZGVmYXVsdF9lbmdpbmVfY2xrOwoxNDQ3NDogIHVpbnQz Ml90IGRwX3BoeV9yZWZfY2xrOwoxNDQ3NDogIHVpbnQzMl90IGkyY19lbmdpbmVfcmVmX2NsazsK MTQ0NzQ6ICBib29sIG9lbV9pMmNfcHJlc2VudDsKMTQ0NzQ6ICB1aW50OF90IG9lbV9pMmNfb2Jq X2lkOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3RlcF9hbmRfZGVs YXlfaW5mbyB7CjE0NDc0OiAgdWludDMyX3Qgc3RlcDsKMTQ0NzQ6ICB1aW50MzJfdCBkZWxheTsK MTQ0NzQ6ICB1aW50MzJfdCByZWNvbW1lbmRlZF9yZWZfZGl2OwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IHNwcmVhZF9zcGVjdHJ1bV9pbmZvIHsKMTQ0NzQ6ICBzdHJ1Y3Qgc3ByZWFk X3NwZWN0cnVtX3R5cGUgewoxNDQ3NDogICBib29sIENFTlRFUl9NT0RFOjE7CjE0NDc0OiAgIGJv b2wgRVhURVJOQUw6MTsKMTQ0NzQ6ICAgYm9vbCBTVEVQX0FORF9ERUxBWV9JTkZPOjE7CjE0NDc0 OiAgfSB0eXBlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHNwcmVh ZF9zcGVjdHJ1bV9wZXJjZW50YWdlOwoxNDQ3NDogIHVpbnQzMl90IHNwcmVhZF9wZXJjZW50YWdl X2RpdmlkZXI7CjE0NDc0OiAgdWludDMyX3Qgc3ByZWFkX3NwZWN0cnVtX3JhbmdlOwoxNDQ3NDog CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3Qgc3RlcF9hbmRfZGVsYXlfaW5mbyBzdGVw X2FuZF9kZWxheV9pbmZvOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJf dCB0YXJnZXRfY2xvY2tfcmFuZ2U7CjE0NDc0OiAgfTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGdyYXBoaWNzX29iamVjdF9lbmNvZGVyX2NhcF9pbmZvIHsKMTQ0NzQ6 ICB1aW50MzJfdCBkcF9oYnIyX2NhcDoxOwoxNDQ3NDogIHVpbnQzMl90IGRwX2hicjJfdmFsaWRh dGVkOjE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgcmVzZXJ2ZWQ6 MTU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGluX2Nvbm5lY3Rvcl9pbmZvIHsK MTQ0NzQ6ICB1aW50MzJfdCBncGlvX2lkOwoxNDQ3NDogIGJvb2wgZ3Bpb190dl9hY3RpdmVfc3Rh dGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0geyBJTlZBTElEX0RESV9D SEFOTkVMX01BUFBJTkcgPSAweDAgfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogdW5pb24gZGRpX2NoYW5uZWxfbWFwcGluZyB7CjE0NDc0OiAgc3RydWN0IG1hcHBpbmcg ewoxNDQ3NDogICB1aW50OF90IGxhbmUwOjI7CjE0NDc0OiAgIHVpbnQ4X3QgbGFuZTE6MjsKMTQ0 NzQ6ICAgdWludDhfdCBsYW5lMjoyOwoxNDQ3NDogICB1aW50OF90IGxhbmUzOjI7CjE0NDc0OiAg fSBtYXBwaW5nOwoxNDQ3NDogIHVpbnQ4X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRyYW5zbWl0dGVyX2NvbmZpZ3VyYXRpb25f aW5mbyB7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHRyYW5zbWl0dGVyIHRyYW5zbWl0dGVyX3BoeV9p ZDsKMTQ0NzQ6IAoxNDQ3NDogIHVuaW9uIGRkaV9jaGFubmVsX21hcHBpbmcgb3V0cHV0X2NoYW5u ZWxfbWFwcGluZzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0cmFuc21pdHRlcl9j b25maWd1cmF0aW9uIHsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB0cmFuc21pdHRlcl9jb25maWd1 cmF0aW9uX2luZm8gcHJpbWFyeV90cmFuc21pdHRlcl9jb25maWc7CjE0NDc0OiAKMTQ0NzQ6ICBz dHJ1Y3QgdHJhbnNtaXR0ZXJfY29uZmlndXJhdGlvbl9pbmZvIHNlY29uZGFyeV90cmFuc21pdHRl cl9jb25maWc7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2N0cmxfZGVmcy5oIgoxNDQ3NDog c3RydWN0IGkyY19yZWdfaW5mbyB7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBpMmNfcmVnX2luZGV4 OwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgaTJjX3JlZ192YWw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZXh0X2hkbWlfc2V0dGluZ3MgewoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgc2x2 X2FkZHI7CjE0NDc0OiAgdW5zaWduZWQgY2hhciByZWdfbnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNf cmVnX2luZm8gcmVnX3NldHRpbmdzWzldOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcmVnX251bV82 ZzsKMTQ0NzQ6ICBzdHJ1Y3QgaTJjX3JlZ19pbmZvIHJlZ19zZXR0aW5nc182Z1szXTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaW50ZWdyYXRlZF9pbmZv IHsKMTQ0NzQ6ICBzdHJ1Y3QgY2xvY2tfdm9sdGFnZV9jYXBzIHsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgIHVpbnQzMl90IHZvbHRhZ2VfaW5kZXg7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3Qg bWF4X3N1cHBvcnRlZF9jbGs7CjE0NDc0OiAgfSBkaXNwX2Nsa192b2x0YWdlWzRdOwoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IGRpc3BsYXlfY29ubmVjdGlvbl9pbmZvIHsKMTQ0NzQ6ICAgc3RydWN0 IGV4dGVybmFsX2Rpc3BsYXlfcGF0aCB7CjE0NDc0OiAKMTQ0NzQ6ICAgIHVpbnQzMl90IGRldmlj ZV90YWc7CjE0NDc0OiAKMTQ0NzQ6ICAgIHVpbnQzMl90IGRldmljZV9hY3BpX2VudW07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogICAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBkZXZpY2VfY29u bmVjdG9yX2lkOwoxNDQ3NDogCjE0NDc0OiAgICB1aW50OF90IGV4dF9hdXhfZGRjX2x1dF9pbmRl eDsKMTQ0NzQ6IAoxNDQ3NDogICAgdWludDhfdCBleHRfaHBkX3Bpbl9sdXRfaW5kZXg7CjE0NDc0 OiAKMTQ0NzQ6ICAgIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgZXh0X2VuY29kZXJfb2JqX2lk OwoxNDQ3NDogCjE0NDc0OiAgICB1bmlvbiBkZGlfY2hhbm5lbF9tYXBwaW5nIGNoYW5uZWxfbWFw cGluZzsKMTQ0NzQ6IAoxNDQ3NDogICAgdW5zaWduZWQgc2hvcnQgY2FwczsKMTQ0NzQ6ICAgfSBw YXRoWzddOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgZ3VfaWRbMTZdOwoxNDQ3NDogICB1aW50 OF90IGNoZWNrc3VtOwoxNDQ3NDogIH0gZXh0X2Rpc3BfY29ubl9pbmZvOwoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IGF2YWlsYWJsZV9zX2Nsa19saXN0IHsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJf dCBzdXBwb3J0ZWRfc19jbGs7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3Qgdm9sdGFnZV9pbmRl eDsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCB2b2x0YWdlX2lkOwoxNDQ3NDogIH0gYXZhaWxf c19jbGtbNV07CjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90IG1lbW9yeV90eXBlOwoxNDQ3NDogIHVp bnQ4X3QgbWFfY2hhbm5lbF9udW1iZXI7CjE0NDc0OiAgdWludDMyX3QgYm9vdF91cF9lbmdpbmVf Y2xvY2s7CjE0NDc0OiAgdWludDMyX3QgZGVudGlzdF92Y29fZnJlcTsKMTQ0NzQ6ICB1aW50MzJf dCBib290X3VwX3VtYV9jbG9jazsKMTQ0NzQ6ICB1aW50MzJfdCBib290X3VwX3JlcV9kaXNwbGF5 X3ZlY3RvcjsKMTQ0NzQ6ICB1aW50MzJfdCBvdGhlcl9kaXNwbGF5X21pc2M7CjE0NDc0OiAgdWlu dDMyX3QgZ3B1X2NhcF9pbmZvOwoxNDQ3NDogIHVpbnQzMl90IHNiX21taW9fYmFzZV9hZGRyOwox NDQ3NDogIHVpbnQzMl90IHN5c3RlbV9jb25maWc7CjE0NDc0OiAgdWludDMyX3QgY3B1X2NhcF9p bmZvOwoxNDQ3NDogIHVpbnQzMl90IG1heF9uYl92b2x0YWdlOwoxNDQ3NDogIHVpbnQzMl90IG1p bl9uYl92b2x0YWdlOwoxNDQ3NDogIHVpbnQzMl90IGJvb3RfdXBfbmJfdm9sdGFnZTsKMTQ0NzQ6 ICB1aW50MzJfdCBleHRfZGlzcF9jb25uX2luZm9fb2Zmc2V0OwoxNDQ3NDogIHVpbnQzMl90IGNz cl9tM19hcmJfY250bF9kZWZhdWx0WzEwXTsKMTQ0NzQ6ICB1aW50MzJfdCBjc3JfbTNfYXJiX2Nu dGxfdXZkWzEwXTsKMTQ0NzQ6ICB1aW50MzJfdCBjc3JfbTNfYXJiX2NudGxfZnMzZFsxMF07CjE0 NDc0OiAgdWludDMyX3QgZ21jX3Jlc3RvcmVfcmVzZXRfdGltZTsKMTQ0NzQ6ICB1aW50MzJfdCBt aW5pbXVtX25fY2xrOwoxNDQ3NDogIHVpbnQzMl90IGlkbGVfbl9jbGs7CjE0NDc0OiAgdWludDMy X3QgZGRyX2RsbF9wb3dlcl91cF90aW1lOwoxNDQ3NDogIHVpbnQzMl90IGRkcl9wbGxfcG93ZXJf dXBfdGltZTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHBjaWVfY2xrX3NzX3R5cGU7CjE0NDc0 OiAgdWludDMyX3QgbHZkc19zc19wZXJjZW50YWdlOwoxNDQ3NDogIHVpbnQzMl90IGx2ZHNfc3Nw cmVhZF9yYXRlX2luXzEwaHo7CjE0NDc0OiAgdWludDMyX3QgaGRtaV9zc19wZXJjZW50YWdlOwox NDQ3NDogIHVpbnQzMl90IGhkbWlfc3NwcmVhZF9yYXRlX2luXzEwaHo7CjE0NDc0OiAgdWludDMy X3QgZHZpX3NzX3BlcmNlbnRhZ2U7CjE0NDc0OiAgdWludDMyX3QgZHZpX3NzcHJlYWRfcmF0ZV9p bl8xMF9oejsKMTQ0NzQ6ICB1aW50MzJfdCBzY2xrX2RwbV9ib29zdF9tYXJnaW47CjE0NDc0OiAg dWludDMyX3Qgc2Nsa19kcG1fdGhyb3R0bGVfbWFyZ2luOwoxNDQ3NDogIHVpbnQzMl90IHNjbGtf ZHBtX3RkcF9saW1pdF9wZzsKMTQ0NzQ6ICB1aW50MzJfdCBzY2xrX2RwbV90ZHBfbGltaXRfYm9v c3Q7CjE0NDc0OiAgdWludDMyX3QgYm9vc3RfZW5naW5lX2Nsb2NrOwoxNDQ3NDogIHVpbnQzMl90 IGJvb3N0X3ZpZF8yYml0OwoxNDQ3NDogIHVpbnQzMl90IGVuYWJsZV9ib29zdDsKMTQ0NzQ6ICB1 aW50MzJfdCBnbmJfdGRwX2xpbWl0OwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgbWF4X2x2ZHNf cGNsa19mcmVxX2luX3NpbmdsZV9saW5rOwoxNDQ3NDogIHVpbnQzMl90IGx2ZHNfbWlzYzsKMTQ0 NzQ6ICB1aW50MzJfdCBsdmRzX3B3cl9vbl9zZXFfZGlnX29uX3RvX2RlX2luXzRtczsKMTQ0NzQ6 ICB1aW50MzJfdCBsdmRzX3B3cl9vbl9zZXFfZGVfdG9fdmFyeV9ibF9pbl80bXM7CjE0NDc0OiAg dWludDMyX3QgbHZkc19wd3Jfb2ZmX3NlcV92YXJ5X2JsX3RvX2RlX2luNG1zOwoxNDQ3NDogIHVp bnQzMl90IGx2ZHNfcHdyX29mZl9zZXFfZGVfdG9fZGlnX29uX2luNG1zOwoxNDQ3NDogIHVpbnQz Ml90IGx2ZHNfb2ZmX3RvX29uX2RlbGF5X2luXzRtczsKMTQ0NzQ6ICB1aW50MzJfdCBsdmRzX3B3 cl9vbl9zZXFfdmFyeV9ibF90b19ibG9uX2luXzRtczsKMTQ0NzQ6ICB1aW50MzJfdCBsdmRzX3B3 cl9vZmZfc2VxX2Jsb25fdG9fdmFyeV9ibF9pbl80bXM7CjE0NDc0OiAgdWludDMyX3QgbHZkc19y ZXNlcnZlZDE7CjE0NDc0OiAgdWludDMyX3QgbHZkc19iaXRfZGVwdGhfY29udHJvbF92YWw7CjE0 NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwMF9leHRfaGRtaV9zbHZfYWRkcjsKMTQ0NzQ6 ICB1bnNpZ25lZCBjaGFyIGRwMF9leHRfaGRtaV9yZWdfbnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNf cmVnX2luZm8gZHAwX2V4dF9oZG1pX3JlZ19zZXR0aW5nc1s5XTsKMTQ0NzQ6ICB1bnNpZ25lZCBj aGFyIGRwMF9leHRfaGRtaV82Z19yZWdfbnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNfcmVnX2luZm8g ZHAwX2V4dF9oZG1pXzZnX3JlZ19zZXR0aW5nc1szXTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRw MV9leHRfaGRtaV9zbHZfYWRkcjsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwMV9leHRfaGRtaV9y ZWdfbnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAxX2V4dF9oZG1pX3JlZ19zZXR0 aW5nc1s5XTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwMV9leHRfaGRtaV82Z19yZWdfbnVtOwox NDQ3NDogIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAxX2V4dF9oZG1pXzZnX3JlZ19zZXR0aW5nc1sz XTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwMl9leHRfaGRtaV9zbHZfYWRkcjsKMTQ0NzQ6ICB1 bnNpZ25lZCBjaGFyIGRwMl9leHRfaGRtaV9yZWdfbnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNfcmVn X2luZm8gZHAyX2V4dF9oZG1pX3JlZ19zZXR0aW5nc1s5XTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFy IGRwMl9leHRfaGRtaV82Z19yZWdfbnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAy X2V4dF9oZG1pXzZnX3JlZ19zZXR0aW5nc1szXTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwM19l eHRfaGRtaV9zbHZfYWRkcjsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwM19leHRfaGRtaV9yZWdf bnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAzX2V4dF9oZG1pX3JlZ19zZXR0aW5n c1s5XTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwM19leHRfaGRtaV82Z19yZWdfbnVtOwoxNDQ3 NDogIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAzX2V4dF9oZG1pXzZnX3JlZ19zZXR0aW5nc1szXTsK MTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGRwX3NzX2NvbnRyb2w7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHBvd2VyX3NvdXJjZSB7CjE0NDc0 OiAgUE9XRVJfU09VUkNFX0FDID0gMCwKMTQ0NzQ6ICBQT1dFUl9TT1VSQ0VfREMsCjE0NDc0OiAg UE9XRVJfU09VUkNFX0xJTUlURURfUE9XRVIsCjE0NDc0OiAgUE9XRVJfU09VUkNFX0xJTUlURURf UE9XRVJfMiwKMTQ0NzQ6ICBQT1dFUl9TT1VSQ0VfTUFYCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgYmlvc19ldmVudF9pbmZvIHsKMTQ0NzQ6ICB1aW50MzJfdCB0aGVybWFsX3N0YXRl OwoxNDQ3NDogIHVpbnQzMl90IGJhY2tsaWdodF9sZXZlbDsKMTQ0NzQ6ICBlbnVtIHBvd2VyX3Nv dXJjZSBwb3dlclNvdXJjZTsKMTQ0NzQ6ICBib29sIGhhc190aGVybWFsX3N0YXRlX2NoYW5nZWQ7 CjE0NDc0OiAgYm9vbCBoYXNfcG93ZXJfc291cmNlX2NoYW5nZWQ7CjE0NDc0OiAgYm9vbCBoYXNf Zm9yY2VkX21vZGVfY2hhbmdlZDsKMTQ0NzQ6ICBib29sIGZvcmNlZF9tb2RlOwoxNDQ3NDogIGJv b2wgYmFja2xpZ2h0X2NoYW5nZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERGU19CWVBBU1NfRU5BQkxFID0g MHgxMAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgSU5WQUxJRF9CQUNL TElHSFQgPSAtMQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBhbmVsX2JhY2tsaWdo dF9ib3VuZGFyaWVzIHsKMTQ0NzQ6ICB1aW50MzJfdCBtaW5fc2lnbmFsX2xldmVsOwoxNDQ3NDog IHVpbnQzMl90IG1heF9zaWduYWxfbGV2ZWw7CjE0NDc0OiB9OwoxNDQ3NDogIyAzNSAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjLmgiIDIKMTQ0NzQ6ICMgMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9vcHAuaCIg MQoxNDQ3NDogIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2luYy9ody9vcHAuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2luYy9ody9od19zaGFyZWQuaCIgMQoxNDQ3NDogIyAzMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9od19zaGFyZWQuaCIKMTQ0 NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2h3 X3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMzIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9pbmMvaHcvaHdfc2hhcmVkLmgiIDIKMTQ0NzQ6ICMgNDEgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvaHdfc2hhcmVkLmgiCjE0NDc0 OiBzdHJ1Y3QgZ2FtbWFfY3VydmUgewoxNDQ3NDogIHVpbnQzMl90IG9mZnNldDsKMTQ0NzQ6ICB1 aW50MzJfdCBzZWdtZW50c19udW07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY3Vy dmVfcG9pbnRzIHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiB4OwoxNDQ3NDogIHN0cnVjdCBm aXhlZDMxXzMyIHk7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgb2Zmc2V0OwoxNDQ3NDogIHN0 cnVjdCBmaXhlZDMxXzMyIHNsb3BlOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgY3VzdG9tX2Zs b2F0X3g7CjE0NDc0OiAgdWludDMyX3QgY3VzdG9tX2Zsb2F0X3k7CjE0NDc0OiAgdWludDMyX3Qg Y3VzdG9tX2Zsb2F0X29mZnNldDsKMTQ0NzQ6ICB1aW50MzJfdCBjdXN0b21fZmxvYXRfc2xvcGU7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY3VydmVfcG9pbnRzMyB7CjE0NDc0OiAg c3RydWN0IGN1cnZlX3BvaW50cyByZWQ7CjE0NDc0OiAgc3RydWN0IGN1cnZlX3BvaW50cyBncmVl bjsKMTQ0NzQ6ICBzdHJ1Y3QgY3VydmVfcG9pbnRzIGJsdWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgcHdsX3Jlc3VsdF9kYXRhIHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBy ZWQ7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgZ3JlZW47CjE0NDc0OiAgc3RydWN0IGZpeGVk MzFfMzIgYmx1ZTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGRlbHRhX3JlZDsK MTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBkZWx0YV9ncmVlbjsKMTQ0NzQ6ICBzdHJ1Y3QgZml4 ZWQzMV8zMiBkZWx0YV9ibHVlOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgcmVkX3JlZzsKMTQ0 NzQ6ICB1aW50MzJfdCBncmVlbl9yZWc7CjE0NDc0OiAgdWludDMyX3QgYmx1ZV9yZWc7CjE0NDc0 OiAKMTQ0NzQ6ICB1aW50MzJfdCBkZWx0YV9yZWRfcmVnOwoxNDQ3NDogIHVpbnQzMl90IGRlbHRh X2dyZWVuX3JlZzsKMTQ0NzQ6ICB1aW50MzJfdCBkZWx0YV9ibHVlX3JlZzsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19yZ2IgewoxNDQ3NDogIHVpbnQzMl90IHJlZDsKMTQ0NzQ6 ICB1aW50MzJfdCBncmVlbjsKMTQ0NzQ6ICB1aW50MzJfdCBibHVlOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHRldHJhaGVkcmFsXzE3eDE3eDE3IHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNf cmdiIGx1dDBbMTIyOV07CjE0NDc0OiAgc3RydWN0IGRjX3JnYiBsdXQxWzEyMjhdOwoxNDQ3NDog IHN0cnVjdCBkY19yZ2IgbHV0MlsxMjI4XTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcmdiIGx1dDNbMTIy OF07CjE0NDc0OiB9OwoxNDQ3NDogc3RydWN0IHRldHJhaGVkcmFsXzl4OXg5IHsKMTQ0NzQ6ICBz dHJ1Y3QgZGNfcmdiIGx1dDBbMTgzXTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcmdiIGx1dDFbMTgyXTsK MTQ0NzQ6ICBzdHJ1Y3QgZGNfcmdiIGx1dDJbMTgyXTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcmdiIGx1 dDNbMTgyXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0ZXRyYWhlZHJhbF9wYXJh bXMgewoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHRldHJhaGVkcmFsXzE3eDE3eDE3 IHRldHJhaGVkcmFsXzE3OwoxNDQ3NDogICBzdHJ1Y3QgdGV0cmFoZWRyYWxfOXg5eDkgdGV0cmFo ZWRyYWxfOTsKMTQ0NzQ6ICB9OwoxNDQ3NDogIGJvb2wgdXNlX3RldHJhaGVkcmFsXzk7CjE0NDc0 OiAgYm9vbCB1c2VfMTJiaXRzOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHB3bF9wYXJhbXMgewox NDQ3NDogIHN0cnVjdCBnYW1tYV9jdXJ2ZSBhcnJfY3VydmVfcG9pbnRzWzM0XTsKMTQ0NzQ6ICB1 bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBjdXJ2ZV9wb2ludHMgYXJyX3BvaW50c1syXTsKMTQ0NzQ6 ICAgc3RydWN0IGN1cnZlX3BvaW50czMgY29ybmVyX3BvaW50c1syXTsKMTQ0NzQ6ICB9OwoxNDQ3 NDogIHN0cnVjdCBwd2xfcmVzdWx0X2RhdGEgcmdiX3Jlc3VsdGVkWzI1NiArIDNdOwoxNDQ3NDog IHVpbnQzMl90IGh3X3BvaW50c19udW07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGxiX3BpeGVsX2Rl cHRoIHsKMTQ0NzQ6IAoxNDQ3NDogIExCX1BJWEVMX0RFUFRIXzE4QlBQID0gMSwKMTQ0NzQ6ICBM Ql9QSVhFTF9ERVBUSF8yNEJQUCA9IDIsCjE0NDc0OiAgTEJfUElYRUxfREVQVEhfMzBCUFAgPSA0 LAoxNDQ3NDogIExCX1BJWEVMX0RFUFRIXzM2QlBQID0gOAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogZW51bSBncmFwaGljc19jc2NfYWRqdXN0X3R5cGUgewoxNDQ3NDogIEdSQVBISUNTX0NTQ19B REpVU1RfVFlQRV9CWVBBU1MgPSAwLAoxNDQ3NDogIEdSQVBISUNTX0NTQ19BREpVU1RfVFlQRV9I VywKMTQ0NzQ6ICBHUkFQSElDU19DU0NfQURKVVNUX1RZUEVfU1cKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IGVudW0gaXBwX2RlZ2FtbWFfbW9kZSB7CjE0NDc0OiAgSVBQX0RFR0FNTUFfTU9ERV9C WVBBU1MsCjE0NDc0OiAgSVBQX0RFR0FNTUFfTU9ERV9IV19zUkdCLAoxNDQ3NDogIElQUF9ERUdB TU1BX01PREVfSFdfeHZZQ0MsCjE0NDc0OiAgSVBQX0RFR0FNTUFfTU9ERV9VU0VSX1BXTAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBpcHBfb3V0cHV0X2Zvcm1hdCB7CjE0NDc0OiAgSVBQ X09VVFBVVF9GT1JNQVRfMTJfQklUX0ZJWCwKMTQ0NzQ6ICBJUFBfT1VUUFVUX0ZPUk1BVF8xNl9C SVRfQllQQVNTLAoxNDQ3NDogIElQUF9PVVRQVVRfRk9STUFUX0ZMT0FUCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBlbnVtIGV4cGFuc2lvbl9tb2RlIHsKMTQ0NzQ6ICBFWFBBTlNJT05fTU9ERV9E WU5BTUlDLAoxNDQ3NDogIEVYUEFOU0lPTl9NT0RFX1pFUk8KMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBkZWZhdWx0X2FkanVzdG1lbnQgewoxNDQ3NDogIGVudW0gbGJfcGl4ZWxfZGVw dGggbGJfY29sb3JfZGVwdGg7CjE0NDc0OiAgZW51bSBkY19jb2xvcl9zcGFjZSBvdXRfY29sb3Jf c3BhY2U7CjE0NDc0OiAgZW51bSBkY19jb2xvcl9zcGFjZSBpbl9jb2xvcl9zcGFjZTsKMTQ0NzQ6 ICBlbnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2RlcHRoOwoxNDQ3NDogIGVudW0gcGl4ZWxfZm9y bWF0IHN1cmZhY2VfcGl4ZWxfZm9ybWF0OwoxNDQ3NDogIGVudW0gZ3JhcGhpY3NfY3NjX2FkanVz dF90eXBlIGNzY19hZGp1c3RfdHlwZTsKMTQ0NzQ6ICBib29sIGZvcmNlX2h3X2RlZmF1bHQ7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBvdXRfY3NjX2NvbG9yX21hdHJp eCB7CjE0NDc0OiAgZW51bSBkY19jb2xvcl9zcGFjZSBjb2xvcl9zcGFjZTsKMTQ0NzQ6ICB1aW50 MTZfdCByZWd2YWxbMTJdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBnYW11dF9yZW1h cF9zZWxlY3QgewoxNDQ3NDogIEdBTVVUX1JFTUFQX0JZUEFTUyA9IDAsCjE0NDc0OiAgR0FNVVRf UkVNQVBfQ09FRkYsCjE0NDc0OiAgR0FNVVRfUkVNQVBfQ09NQV9DT0VGRiwKMTQ0NzQ6ICBHQU1V VF9SRU1BUF9DT01CX0NPRUZGCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIG9wcF9yZWdh bW1hIHsKMTQ0NzQ6ICBPUFBfUkVHQU1NQV9CWVBBU1MgPSAwLAoxNDQ3NDogIE9QUF9SRUdBTU1B X1NSR0IsCjE0NDc0OiAgT1BQX1JFR0FNTUFfWFZZQ0MsCjE0NDc0OiAgT1BQX1JFR0FNTUFfVVNF UgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBvcHRjX2RzY19tb2RlIHsKMTQ0NzQ6ICBP UFRDX0RTQ19ESVNBQkxFRCA9IDAsCjE0NDc0OiAgT1BUQ19EU0NfRU5BQkxFRF80NDQgPSAxLAox NDQ3NDogIE9QVENfRFNDX0VOQUJMRURfTkFUSVZFX1NVQlNBTVBMRUQgPSAyCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfYmlhc19hbmRfc2NhbGUgewoxNDQ3NDogIHVpbnQxNl90 IHNjYWxlX3JlZDsKMTQ0NzQ6ICB1aW50MTZfdCBiaWFzX3JlZDsKMTQ0NzQ6ICB1aW50MTZfdCBz Y2FsZV9ncmVlbjsKMTQ0NzQ6ICB1aW50MTZfdCBiaWFzX2dyZWVuOwoxNDQ3NDogIHVpbnQxNl90 IHNjYWxlX2JsdWU7CjE0NDc0OiAgdWludDE2X3QgYmlhc19ibHVlOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogZW51bSB0ZXN0X3BhdHRlcm5fZHluX3JhbmdlIHsKMTQ0NzQ6ICBURVNUX1BBVFRF Uk5fRFlOX1JBTkdFX1ZFU0EgPSAwLAoxNDQ3NDogIFRFU1RfUEFUVEVSTl9EWU5fUkFOR0VfQ0VB CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHRlc3RfcGF0dGVybl9tb2RlIHsKMTQ0NzQ6 ICBURVNUX1BBVFRFUk5fTU9ERV9DT0xPUlNRVUFSRVNfUkdCID0gMCwKMTQ0NzQ6ICBURVNUX1BB VFRFUk5fTU9ERV9DT0xPUlNRVUFSRVNfWUNCQ1I2MDEsCjE0NDc0OiAgVEVTVF9QQVRURVJOX01P REVfQ09MT1JTUVVBUkVTX1lDQkNSNzA5LAoxNDQ3NDogIFRFU1RfUEFUVEVSTl9NT0RFX1ZFUlRJ Q0FMQkFSUywKMTQ0NzQ6ICBURVNUX1BBVFRFUk5fTU9ERV9IT1JJWk9OVEFMQkFSUywKMTQ0NzQ6 ICBURVNUX1BBVFRFUk5fTU9ERV9TSU5HTEVSQU1QX1JHQiwKMTQ0NzQ6ICBURVNUX1BBVFRFUk5f TU9ERV9EVUFMUkFNUF9SR0IsCjE0NDc0OiAgVEVTVF9QQVRURVJOX01PREVfWFJfQklBU19SR0IK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gdGVzdF9wYXR0ZXJuX2NvbG9yX2Zvcm1hdCB7 CjE0NDc0OiAgVEVTVF9QQVRURVJOX0NPTE9SX0ZPUk1BVF9CUENfNiA9IDAsCjE0NDc0OiAgVEVT VF9QQVRURVJOX0NPTE9SX0ZPUk1BVF9CUENfOCwKMTQ0NzQ6ICBURVNUX1BBVFRFUk5fQ09MT1Jf Rk9STUFUX0JQQ18xMCwKMTQ0NzQ6ICBURVNUX1BBVFRFUk5fQ09MT1JfRk9STUFUX0JQQ18xMgox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjb250cm9sbGVyX2RwX3Rlc3RfcGF0dGVybiB7 CjE0NDc0OiAgQ09OVFJPTExFUl9EUF9URVNUX1BBVFRFUk5fRDEwMiA9IDAsCjE0NDc0OiAgQ09O VFJPTExFUl9EUF9URVNUX1BBVFRFUk5fU1lNQk9MRVJST1IsCjE0NDc0OiAgQ09OVFJPTExFUl9E UF9URVNUX1BBVFRFUk5fUFJCUzcsCjE0NDc0OiAgQ09OVFJPTExFUl9EUF9URVNUX1BBVFRFUk5f Q09MT1JTUVVBUkVTLAoxNDQ3NDogIENPTlRST0xMRVJfRFBfVEVTVF9QQVRURVJOX1ZFUlRJQ0FM QkFSUywKMTQ0NzQ6ICBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9IT1JJWk9OVEFMQkFSUywK MTQ0NzQ6ICBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9DT0xPUlJBTVAsCjE0NDc0OiAgQ09O VFJPTExFUl9EUF9URVNUX1BBVFRFUk5fVklERU9NT0RFLAoxNDQ3NDogIENPTlRST0xMRVJfRFBf VEVTVF9QQVRURVJOX1JFU0VSVkVEXzgsCjE0NDc0OiAgQ09OVFJPTExFUl9EUF9URVNUX1BBVFRF Uk5fUkVTRVJWRURfOSwKMTQ0NzQ6ICBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9SRVNFUlZF RF9BLAoxNDQ3NDogIENPTlRST0xMRVJfRFBfVEVTVF9QQVRURVJOX0NPTE9SU1FVQVJFU19DRUEs CjE0NDc0OiAgQ09OVFJPTExFUl9EUF9URVNUX1BBVFRFUk5fU09MSURfQ09MT1IKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gY29udHJvbGxlcl9kcF9jb2xvcl9zcGFjZSB7CjE0NDc0OiAg Q09OVFJPTExFUl9EUF9DT0xPUl9TUEFDRV9SR0IsCjE0NDc0OiAgQ09OVFJPTExFUl9EUF9DT0xP Ul9TUEFDRV9ZQ0JDUjYwMSwKMTQ0NzQ6ICBDT05UUk9MTEVSX0RQX0NPTE9SX1NQQUNFX1lDQkNS NzA5LAoxNDQ3NDogIENPTlRST0xMRVJfRFBfQ09MT1JfU1BBQ0VfVURFRklORUQKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfbHV0X21vZGUgewoxNDQ3NDogIExVVF9CWVBBU1MsCjE0 NDc0OiAgTFVUX1JBTV9BLAoxNDQ3NDogIExVVF9SQU1fQgoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzAg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvb3BwLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvaW5jL2h3L3RyYW5zZm9ybS5oIiAxCjE0NDc0OiAjIDM1ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L3RyYW5zZm9ybS5oIgoxNDQ3NDog c3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg dHJhbnNmb3JtIHsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgdHJhbnNmb3JtX2Z1bmNzICpmdW5jczsK MTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIGludCBpbnN0OwoxNDQ3NDog IHN0cnVjdCBkcHBfY2FwcyAqY2FwczsKMTQ0NzQ6ICBzdHJ1Y3QgcHdsX3BhcmFtcyByZWdhbW1h X3BhcmFtczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjb2xvcmltZXRy eSB7CjE0NDc0OiAgQ09MT1JJTUVUUllfTk9fREFUQSA9IDAsCjE0NDc0OiAgQ09MT1JJTUVUUllf SVRVNjAxID0gMSwKMTQ0NzQ6ICBDT0xPUklNRVRSWV9JVFU3MDkgPSAyLAoxNDQ3NDogIENPTE9S SU1FVFJZX0VYVEVOREVEID0gMwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjb2xvcmlt ZXRyeV9leHQgewoxNDQ3NDogIENPTE9SSU1FVFJZRVhfWFZZQ0M2MDEgPSAwLAoxNDQ3NDogIENP TE9SSU1FVFJZRVhfWFZZQ0M3MDkgPSAxLAoxNDQ3NDogIENPTE9SSU1FVFJZRVhfU1lDQzYwMSA9 IDIsCjE0NDc0OiAgQ09MT1JJTUVUUllFWF9BRE9CRVlDQzYwMSA9IDMsCjE0NDc0OiAgQ09MT1JJ TUVUUllFWF9BRE9CRVJHQiA9IDQsCjE0NDc0OiAgQ09MT1JJTUVUUllFWF9CVDIwMjBZQ0MgPSA1 LAoxNDQ3NDogIENPTE9SSU1FVFJZRVhfQlQyMDIwUkdCWUNCQ1IgPSA2LAoxNDQ3NDogIENPTE9S SU1FVFJZRVhfUkVTRVJWRUQgPSA3CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGFjdGl2 ZV9mb3JtYXRfaW5mbyB7CjE0NDc0OiAgQUNUSVZFX0ZPUk1BVF9OT19EQVRBID0gMCwKMTQ0NzQ6 ICBBQ1RJVkVfRk9STUFUX1ZBTElEID0gMQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBlbnVtIGFjdGl2ZV9mb3JtYXRfYXNwZWN0X3JhdGlvIHsKMTQ0NzQ6ICBBQ1RJVkVfRk9STUFU X0FTUEVDVF9SQVRJT19TQU1FX0FTX1BJQ1RVUkUgPSA4LAoxNDQ3NDogIEFDVElWRV9GT1JNQVRf QVNQRUNUX1JBVElPXzRfMyA9IDksCjE0NDc0OiAgQUNUSVZFX0ZPUk1BVF9BU1BFQ1RfUkFUSU9f MTZfOSA9IDBYQSwKMTQ0NzQ6ICBBQ1RJVkVfRk9STUFUX0FTUEVDVF9SQVRJT18xNF85ID0gMFhC CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGJhcl9pbmZvIHsKMTQ0NzQ6ICBCQVJfSU5G T19OT1RfVkFMSUQgPSAwLAoxNDQ3NDogIEJBUl9JTkZPX1ZFUlRJQ0FMX1ZBTElEID0gMSwKMTQ0 NzQ6ICBCQVJfSU5GT19IT1JJWk9OVEFMX1ZBTElEID0gMiwKMTQ0NzQ6ICBCQVJfSU5GT19CT1RI X1ZBTElEID0gMwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBwaWN0dXJlX3NjYWxpbmcg ewoxNDQ3NDogIFBJQ1RVUkVfU0NBTElOR19VTklGT1JNID0gMCwKMTQ0NzQ6ICBQSUNUVVJFX1ND QUxJTkdfSE9SSVpPTlRBTCA9IDEsCjE0NDc0OiAgUElDVFVSRV9TQ0FMSU5HX1ZFUlRJQ0FMID0g MiwKMTQ0NzQ6ICBQSUNUVVJFX1NDQUxJTkdfQk9USCA9IDMKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZW51bSByZ2JfcXVhbnRpemF0aW9uX3JhbmdlIHsKMTQ0NzQ6ICBSR0JfUVVB TlRJWkFUSU9OX0RFRkFVTFRfUkFOR0UgPSAwLAoxNDQ3NDogIFJHQl9RVUFOVElaQVRJT05fTElN SVRFRF9SQU5HRSA9IDEsCjE0NDc0OiAgUkdCX1FVQU5USVpBVElPTl9GVUxMX1JBTkdFID0gMiwK MTQ0NzQ6ICBSR0JfUVVBTlRJWkFUSU9OX1JFU0VSVkVEID0gMwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBlbnVtIHl5Y19xdWFudGl6YXRpb25fcmFuZ2UgewoxNDQ3NDogIFlZQ19R VUFOVElaQVRJT05fTElNSVRFRF9SQU5HRSA9IDAsCjE0NDc0OiAgWVlDX1FVQU5USVpBVElPTl9G VUxMX1JBTkdFID0gMSwKMTQ0NzQ6ICBZWUNfUVVBTlRJWkFUSU9OX1JFU0VSVkVEMiA9IDIsCjE0 NDc0OiAgWVlDX1FVQU5USVpBVElPTl9SRVNFUlZFRDMgPSAzCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBlbnVtIGdyYXBoaWNzX2dhbXV0X2FkanVzdF90eXBlIHsKMTQ0NzQ6ICBHUkFQSElDU19H QU1VVF9BREpVU1RfVFlQRV9CWVBBU1MgPSAwLAoxNDQ3NDogIEdSQVBISUNTX0dBTVVUX0FESlVT VF9UWVBFX0hXLAoxNDQ3NDogIEdSQVBISUNTX0dBTVVUX0FESlVTVF9UWVBFX1NXCjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGxiX21lbW9yeV9jb25maWcgewoxNDQ3NDogCjE0NDc0OiAg TEJfTUVNT1JZX0NPTkZJR18wID0gMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgTEJfTUVNT1JZ X0NPTkZJR18xID0gMSwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgTEJfTUVNT1JZX0NPTkZJR18y ID0gMiwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIExCX01FTU9SWV9D T05GSUdfMyA9IDMKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB4Zm1fZ3JwaF9jc2Nf YWRqdXN0bWVudCB7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgdGVtcGVyYXR1cmVfbWF0cml4 WzEyXTsKMTQ0NzQ6ICBlbnVtIGdyYXBoaWNzX2dhbXV0X2FkanVzdF90eXBlIGdhbXV0X2FkanVz dF90eXBlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG92ZXJzY2FuX2luZm8gewox NDQ3NDogIGludCBsZWZ0OwoxNDQ3NDogIGludCByaWdodDsKMTQ0NzQ6ICBpbnQgdG9wOwoxNDQ3 NDogIGludCBib3R0b207CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2NhbGluZ19y YXRpb3MgewoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGhvcno7CjE0NDc0OiAgc3RydWN0IGZp eGVkMzFfMzIgdmVydDsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBob3J6X2M7CjE0NDc0OiAg c3RydWN0IGZpeGVkMzFfMzIgdmVydF9jOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IHNoYXJwbmVzc19hZGogewoxNDQ3NDogIGludCBob3J6OwoxNDQ3NDogIGludCB2ZXJ0OwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGxpbmVfYnVmZmVyX3BhcmFtcyB7CjE0NDc0OiAg Ym9vbCBhbHBoYV9lbjsKMTQ0NzQ6ICBib29sIHBpeGVsX2V4cGFuX21vZGU7CjE0NDc0OiAgYm9v bCBpbnRlcmxlYXZlX2VuOwoxNDQ3NDogIGludCBkeW5hbWljX3BpeGVsX2RlcHRoOwoxNDQ3NDog IGVudW0gbGJfcGl4ZWxfZGVwdGggZGVwdGg7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3Qgc2NsX2luaXRzIHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBoOwoxNDQ3NDogIHN0cnVj dCBmaXhlZDMxXzMyIGhfYzsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiB2OwoxNDQ3NDogIHN0 cnVjdCBmaXhlZDMxXzMyIHZfYm90OwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIHZfYzsKMTQ0 NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiB2X2NfYm90OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IHNjYWxlcl9kYXRhIHsKMTQ0NzQ6ICBpbnQgaF9hY3RpdmU7CjE0NDc0OiAgaW50IHZf YWN0aXZlOwoxNDQ3NDogIHN0cnVjdCBzY2FsaW5nX3RhcHMgdGFwczsKMTQ0NzQ6ICBzdHJ1Y3Qg cmVjdCB2aWV3cG9ydDsKMTQ0NzQ6ICBzdHJ1Y3QgcmVjdCB2aWV3cG9ydF9jOwoxNDQ3NDogIHN0 cnVjdCByZWN0IHJlY291dDsKMTQ0NzQ6ICBzdHJ1Y3Qgc2NhbGluZ19yYXRpb3MgcmF0aW9zOwox NDQ3NDogIHN0cnVjdCBzY2xfaW5pdHMgaW5pdHM7CjE0NDc0OiAgc3RydWN0IHNoYXJwbmVzc19h ZGogc2hhcnBuZXNzOwoxNDQ3NDogIGVudW0gcGl4ZWxfZm9ybWF0IGZvcm1hdDsKMTQ0NzQ6ICBz dHJ1Y3QgbGluZV9idWZmZXJfcGFyYW1zIGxiX3BhcmFtczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCB0cmFuc2Zvcm1fZnVuY3MgewoxNDQ3NDogIHZvaWQgKCp0cmFuc2Zvcm1fcmVz ZXQpKHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqdHJhbnNm b3JtX3NldF9zY2FsZXIpKHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKMTQ0NzQ6ICAgIGNvbnN0IHN0 cnVjdCBzY2FsZXJfZGF0YSAqc2NsX2RhdGEpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnRyYW5z Zm9ybV9zZXRfcGl4ZWxfc3RvcmFnZV9kZXB0aCkoCjE0NDc0OiAgICBzdHJ1Y3QgdHJhbnNmb3Jt ICp4Zm0sCjE0NDc0OiAgICBlbnVtIGxiX3BpeGVsX2RlcHRoIGRlcHRoLAoxNDQ3NDogICAgY29u c3Qgc3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zICpiaXRfZGVwdGhfcGFyYW1zKTsK MTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCp0cmFuc2Zvcm1fZ2V0X29wdGltYWxfbnVtYmVyX29mX3Rh cHMpKAoxNDQ3NDogICAgc3RydWN0IHRyYW5zZm9ybSAqeGZtLAoxNDQ3NDogICAgc3RydWN0IHNj YWxlcl9kYXRhICpzY2xfZGF0YSwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBzY2FsaW5nX3RhcHMg KmluX3RhcHMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnRyYW5zZm9ybV9zZXRfZ2FtdXRfcmVt YXApKAoxNDQ3NDogICAgc3RydWN0IHRyYW5zZm9ybSAqeGZtLAoxNDQ3NDogICAgY29uc3Qgc3Ry dWN0IHhmbV9ncnBoX2NzY19hZGp1c3RtZW50ICphZGp1c3QpOwoxNDQ3NDogCjE0NDc0OiAgdm9p ZCAoKm9wcF9zZXRfY3NjX2RlZmF1bHQpKAoxNDQ3NDogICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm0s CjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2FkanVzdG1lbnQgKmRlZmF1bHRfYWRqdXN0 KTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpvcHBfc2V0X2NzY19hZGp1c3RtZW50KSgKMTQ0NzQ6 ICAgc3RydWN0IHRyYW5zZm9ybSAqeGZtLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3Qgb3V0X2NzY19j b2xvcl9tYXRyaXggKnRibF9lbnRyeSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqb3BwX3Bvd2Vy X29uX3JlZ2FtbWFfbHV0KSgKMTQ0NzQ6ICAgc3RydWN0IHRyYW5zZm9ybSAqeGZtLAoxNDQ3NDog ICBib29sIHBvd2VyX29uKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpvcHBfcHJvZ3JhbV9yZWdh bW1hX2x1dCkoCjE0NDc0OiAgICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm0sCjE0NDc0OiAgICBjb25z dCBzdHJ1Y3QgcHdsX3Jlc3VsdF9kYXRhICpyZ2IsCjE0NDc0OiAgICB1aW50MzJfdCBudW0pOwox NDQ3NDogCjE0NDc0OiAgdm9pZCAoKm9wcF9jb25maWd1cmVfcmVnYW1tYV9sdXQpKAoxNDQ3NDog ICAgc3RydWN0IHRyYW5zZm9ybSAqeGZtLAoxNDQ3NDogICAgYm9vbCBpc19yYW1fYSk7CjE0NDc0 OiAKMTQ0NzQ6ICB2b2lkICgqb3BwX3Byb2dyYW1fcmVnYW1tYV9sdXRiX3NldHRpbmdzKSgKMTQ0 NzQ6ICAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBwd2xf cGFyYW1zICpwYXJhbXMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKm9wcF9wcm9ncmFtX3JlZ2Ft bWFfbHV0YV9zZXR0aW5ncykoCjE0NDc0OiAgICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm0sCjE0NDc0 OiAgICBjb25zdCBzdHJ1Y3QgcHdsX3BhcmFtcyAqcGFyYW1zKTsKMTQ0NzQ6IAoxNDQ3NDogIHZv aWQgKCpvcHBfcHJvZ3JhbV9yZWdhbW1hX3B3bCkoCjE0NDc0OiAgIHN0cnVjdCB0cmFuc2Zvcm0g KnhmbSwgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqb3BwX3NldF9yZWdhbW1hX21vZGUpKAoxNDQ3NDogICAgc3RydWN0IHRyYW5zZm9ybSAq eGZtX2Jhc2UsCjE0NDc0OiAgICBlbnVtIG9wcF9yZWdhbW1hIG1vZGUpOwoxNDQ3NDogCjE0NDc0 OiAgdm9pZCAoKmlwcF9zZXRfZGVnYW1tYSkoCjE0NDc0OiAgICBzdHJ1Y3QgdHJhbnNmb3JtICp4 Zm1fYmFzZSwKMTQ0NzQ6ICAgIGVudW0gaXBwX2RlZ2FtbWFfbW9kZSBtb2RlKTsKMTQ0NzQ6IAox NDQ3NDogIHZvaWQgKCppcHBfcHJvZ3JhbV9pbnB1dF9sdXQpKAoxNDQ3NDogICAgc3RydWN0IHRy YW5zZm9ybSAqeGZtX2Jhc2UsCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3QgZGNfZ2FtbWEgKmdhbW1h KTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCppcHBfcHJvZ3JhbV9kZWdhbW1hX3B3bCkoc3RydWN0 IHRyYW5zZm9ybSAqeGZtX2Jhc2UsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IHB3bF9w YXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaXBwX3NldHVwKSgKMTQ0NzQ6 ICAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbV9iYXNlLAoxNDQ3NDogICAgZW51bSBzdXJmYWNlX3Bp eGVsX2Zvcm1hdCBmb3JtYXQsCjE0NDc0OiAgICBlbnVtIGV4cGFuc2lvbl9tb2RlIG1vZGUsCjE0 NDc0OiAgICBzdHJ1Y3QgZGNfY3NjX3RyYW5zZm9ybSBpbnB1dF9jc2NfY29sb3JfbWF0cml4LAox NDQ3NDogICAgZW51bSBkY19jb2xvcl9zcGFjZSBpbnB1dF9jb2xvcl9zcGFjZSk7CjE0NDc0OiAK MTQ0NzQ6ICB2b2lkICgqaXBwX2Z1bGxfYnlwYXNzKShzdHJ1Y3QgdHJhbnNmb3JtICp4Zm1fYmFz ZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2V0X2N1cnNvcl9hdHRyaWJ1dGVzKSgKMTQ0NzQ6 ICAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbV9iYXNlLAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IGRj X2N1cnNvcl9hdHRyaWJ1dGVzICphdHRyKTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogY29uc3QgdWludDE2X3QgKmdldF9maWx0ZXJfMnRhcF8xNnAodm9pZCk7CjE0NDc0OiBjb25z dCB1aW50MTZfdCAqZ2V0X2ZpbHRlcl8ydGFwXzY0cCh2b2lkKTsKMTQ0NzQ6IGNvbnN0IHVpbnQx Nl90ICpnZXRfZmlsdGVyXzN0YXBfMTZwKHN0cnVjdCBmaXhlZDMxXzMyIHJhdGlvKTsKMTQ0NzQ6 IGNvbnN0IHVpbnQxNl90ICpnZXRfZmlsdGVyXzN0YXBfNjRwKHN0cnVjdCBmaXhlZDMxXzMyIHJh dGlvKTsKMTQ0NzQ6IGNvbnN0IHVpbnQxNl90ICpnZXRfZmlsdGVyXzR0YXBfMTZwKHN0cnVjdCBm aXhlZDMxXzMyIHJhdGlvKTsKMTQ0NzQ6IGNvbnN0IHVpbnQxNl90ICpnZXRfZmlsdGVyXzR0YXBf NjRwKHN0cnVjdCBmaXhlZDMxXzMyIHJhdGlvKTsKMTQ0NzQ6IGNvbnN0IHVpbnQxNl90ICpnZXRf ZmlsdGVyXzV0YXBfNjRwKHN0cnVjdCBmaXhlZDMxXzMyIHJhdGlvKTsKMTQ0NzQ6IGNvbnN0IHVp bnQxNl90ICpnZXRfZmlsdGVyXzZ0YXBfNjRwKHN0cnVjdCBmaXhlZDMxXzMyIHJhdGlvKTsKMTQ0 NzQ6IGNvbnN0IHVpbnQxNl90ICpnZXRfZmlsdGVyXzd0YXBfNjRwKHN0cnVjdCBmaXhlZDMxXzMy IHJhdGlvKTsKMTQ0NzQ6IGNvbnN0IHVpbnQxNl90ICpnZXRfZmlsdGVyXzh0YXBfNjRwKHN0cnVj dCBmaXhlZDMxXzMyIHJhdGlvKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0g ZHNjbF9kYXRhX3Byb2Nlc3NpbmdfZm9ybWF0IHsKMTQ0NzQ6ICBEU0NMX0RBVEFfUFJDRVNTSU5H X0ZJWEVEX0ZPUk1BVCwKMTQ0NzQ6ICBEU0NMX0RBVEFfUFJDRVNTSU5HX0ZMT0FUX0ZPUk1BVCwK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcHBfY2FwcyB7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRz Y2xfZGF0YV9wcm9jZXNzaW5nX2Zvcm1hdCBkc2NsX2RhdGFfcHJvY19mb3JtYXQ7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkc2NsX2NhbGNf bGJfbnVtX3BhcnRpdGlvbnMpKAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IHNjYWxlcl9kYXRhICpz Y2xfZGF0YSwKMTQ0NzQ6ICAgIGVudW0gbGJfbWVtb3J5X2NvbmZpZyBsYl9jb25maWcsCjE0NDc0 OiAgICBpbnQgKm51bV9wYXJ0X3ksCjE0NDc0OiAgICBpbnQgKm51bV9wYXJ0X2MpOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgMzIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9pbmMvaHcvb3BwLmgiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2luYy9ody9tcGMuaCIgMQoxNDQ3NDogIyAzNiAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tcGMuaCIKMTQ0NzQ6IGVudW0g bXBjX291dHB1dF9jc2NfbW9kZSB7CjE0NDc0OiAgTVBDX09VVFBVVF9DU0NfRElTQUJMRSA9IDAs CjE0NDc0OiAgTVBDX09VVFBVVF9DU0NfQ09FRl9BLAoxNDQ3NDogIE1QQ19PVVRQVVRfQ1NDX0NP RUZfQgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIG1wY2NfYmxlbmRfbW9k ZSB7CjE0NDc0OiAgTVBDQ19CTEVORF9NT0RFX0JZUEFTUywKMTQ0NzQ6ICBNUENDX0JMRU5EX01P REVfVE9QX0xBWUVSX1BBU1NUSFJPVUdILAoxNDQ3NDogIE1QQ0NfQkxFTkRfTU9ERV9UT1BfTEFZ RVJfT05MWSwKMTQ0NzQ6ICBNUENDX0JMRU5EX01PREVfVE9QX0JPVF9CTEVORElORwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBtcGNjX2FscGhhX2JsZW5kX21vZGUgewoxNDQ3NDogIE1Q Q0NfQUxQSEFfQkxFTkRfTU9ERV9QRVJfUElYRUxfQUxQSEEsCjE0NDc0OiAgTVBDQ19BTFBIQV9C TEVORF9NT0RFX1BFUl9QSVhFTF9BTFBIQV9DT01CSU5FRF9HTE9CQUxfR0FJTiwKMTQ0NzQ6ICBN UENDX0FMUEhBX0JMRU5EX01PREVfR0xPQkFMX0FMUEhBCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbXBjY19ibG5kX2NmZyB7CjE0NDc0OiAg c3RydWN0IHRnX2NvbG9yIGJsYWNrX2NvbG9yOwoxNDQ3NDogIGVudW0gbXBjY19hbHBoYV9ibGVu ZF9tb2RlIGFscGhhX21vZGU7CjE0NDc0OiAgYm9vbCBwcmVfbXVsdGlwbGllZF9hbHBoYTsKMTQ0 NzQ6ICBpbnQgZ2xvYmFsX2dhaW47CjE0NDc0OiAgaW50IGdsb2JhbF9hbHBoYTsKMTQ0NzQ6ICBi b29sIG92ZXJsYXBfb25seTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50IGJvdHRvbV9nYWlu X21vZGU7CjE0NDc0OiAgaW50IGJhY2tncm91bmRfY29sb3JfYnBjOwoxNDQ3NDogIGludCB0b3Bf Z2FpbjsKMTQ0NzQ6ICBpbnQgYm90dG9tX2luc2lkZV9nYWluOwoxNDQ3NDogIGludCBib3R0b21f b3V0c2lkZV9nYWluOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1wY2Nfc21fY2Zn IHsKMTQ0NzQ6ICBib29sIGVuYWJsZTsKMTQ0NzQ6IAoxNDQ3NDogIGludCBzbV9tb2RlOwoxNDQ3 NDogCjE0NDc0OiAgYm9vbCBmcmFtZV9hbHQ7CjE0NDc0OiAKMTQ0NzQ6ICBib29sIGZpZWxkX2Fs dDsKMTQ0NzQ6IAoxNDQ3NDogIGludCBmb3JjZV9uZXh0X2ZyYW1lX3Bvcmxhcml0eTsKMTQ0NzQ6 IAoxNDQ3NDogIGludCBmb3JjZV9uZXh0X2ZpZWxkX3BvbGFyaXR5OwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IG1wY19kZW5vcm1fY2xhbXAgewoxNDQ3NDogIGludCBjbGFtcF9tYXhf cl9jcjsKMTQ0NzQ6ICBpbnQgY2xhbXBfbWluX3JfY3I7CjE0NDc0OiAgaW50IGNsYW1wX21heF9n X3k7CjE0NDc0OiAgaW50IGNsYW1wX21pbl9nX3k7CjE0NDc0OiAgaW50IGNsYW1wX21heF9iX2Ni OwoxNDQ3NDogIGludCBjbGFtcF9taW5fYl9jYjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1wY2MgewoxNDQ3NDogIGludCBt cGNjX2lkOwoxNDQ3NDogIGludCBkcHBfaWQ7CjE0NDc0OiAgc3RydWN0IG1wY2MgKm1wY2NfYm90 OwoxNDQ3NDogIHN0cnVjdCBtcGNjX2JsbmRfY2ZnIGJsbmRfY2ZnOwoxNDQ3NDogIHN0cnVjdCBt cGNjX3NtX2NmZyBzbV9jZmc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgbXBjX3RyZWUgewoxNDQ3NDogIGludCBvcHBfaWQ7CjE0NDc0OiAg c3RydWN0IG1wY2MgKm9wcF9saXN0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1w YyB7CjE0NDc0OiAgY29uc3Qgc3RydWN0IG1wY19mdW5jcyAqZnVuY3M7CjE0NDc0OiAgc3RydWN0 IGRjX2NvbnRleHQgKmN0eDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBtcGNjIG1wY2NfYXJyYXlb Nl07CjE0NDc0OiAgc3RydWN0IHB3bF9wYXJhbXMgYmxlbmRlcl9wYXJhbXM7CjE0NDc0OiAgYm9v bCBjbV9ieXBhc3NfbW9kZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtcGNjX3N0 YXRlIHsKMTQ0NzQ6ICB1aW50MzJfdCBvcHBfaWQ7CjE0NDc0OiAgdWludDMyX3QgZHBwX2lkOwox NDQ3NDogIHVpbnQzMl90IGJvdF9tcGNjX2lkOwoxNDQ3NDogIHVpbnQzMl90IG1vZGU7CjE0NDc0 OiAgdWludDMyX3QgYWxwaGFfbW9kZTsKMTQ0NzQ6ICB1aW50MzJfdCBwcmVfbXVsdGlwbGllZF9h bHBoYTsKMTQ0NzQ6ICB1aW50MzJfdCBvdmVybGFwX29ubHk7CjE0NDc0OiAgdWludDMyX3QgaWRs ZTsKMTQ0NzQ6ICB1aW50MzJfdCBidXN5OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IG1wY19mdW5jcyB7CjE0NDc0OiAgdm9pZCAoKnJlYWRfbXBjY19zdGF0ZSkoCjE0NDc0OiAgICBz dHJ1Y3QgbXBjICptcGMsCjE0NDc0OiAgICBpbnQgbXBjY19pbnN0LAoxNDQ3NDogICAgc3RydWN0 IG1wY2Nfc3RhdGUgKnMpOwoxNDQ3NDogIyAxNjEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbXBjLmgiCjE0NDc0OiAgc3RydWN0IG1wY2MqICgqaW5z ZXJ0X3BsYW5lKSgKMTQ0NzQ6ICAgIHN0cnVjdCBtcGMgKm1wYywKMTQ0NzQ6ICAgIHN0cnVjdCBt cGNfdHJlZSAqdHJlZSwKMTQ0NzQ6ICAgIHN0cnVjdCBtcGNjX2JsbmRfY2ZnICpibG5kX2NmZywK MTQ0NzQ6ICAgIHN0cnVjdCBtcGNjX3NtX2NmZyAqc21fY2ZnLAoxNDQ3NDogICAgc3RydWN0IG1w Y2MgKmluc2VydF9hYm92ZV9tcGNjLAoxNDQ3NDogICAgaW50IGRwcF9pZCwKMTQ0NzQ6ICAgIGlu dCBtcGNjX2lkKTsKMTQ0NzQ6ICMgMTgwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvaW5jL2h3L21wYy5oIgoxNDQ3NDogIHZvaWQgKCpyZW1vdmVfbXBjYykoCjE0 NDc0OiAgICBzdHJ1Y3QgbXBjICptcGMsCjE0NDc0OiAgICBzdHJ1Y3QgbXBjX3RyZWUgKnRyZWUs CjE0NDc0OiAgICBzdHJ1Y3QgbXBjYyAqbXBjYyk7CjE0NDc0OiAjIDE5MyAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tcGMuaCIKMTQ0NzQ6ICB2b2lk ICgqbXBjX2luaXQpKHN0cnVjdCBtcGMgKm1wYyk7CjE0NDc0OiAgdm9pZCAoKm1wY19pbml0X3Np bmdsZV9pbnN0KSgKMTQ0NzQ6ICAgIHN0cnVjdCBtcGMgKm1wYywKMTQ0NzQ6ICAgIHVuc2lnbmVk IGludCBtcGNjX2lkKTsKMTQ0NzQ6ICMgMjA4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L21wYy5oIgoxNDQ3NDogIHZvaWQgKCp1cGRhdGVfYmxlbmRp bmcpKAoxNDQ3NDogICBzdHJ1Y3QgbXBjICptcGMsCjE0NDc0OiAgIHN0cnVjdCBtcGNjX2JsbmRf Y2ZnICpibG5kX2NmZywKMTQ0NzQ6ICAgaW50IG1wY2NfaWQpOwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IG1wY2MqICgqZ2V0X21wY2NfZm9yX2RwcCkoCjE0NDc0OiAgICBzdHJ1Y3QgbXBjX3RyZWUg KnRyZWUsCjE0NDc0OiAgICBpbnQgZHBwX2lkKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCp3YWl0 X2Zvcl9pZGxlKShzdHJ1Y3QgbXBjICptcGMsIGludCBpZCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lk ICgqYXNzZXJ0X21wY2NfaWRsZV9iZWZvcmVfY29ubmVjdCkoc3RydWN0IG1wYyAqbXBjLCBpbnQg bXBjY19pZCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaW5pdF9tcGNjX2xpc3RfZnJvbV9odyko CjE0NDc0OiAgIHN0cnVjdCBtcGMgKm1wYywKMTQ0NzQ6ICAgc3RydWN0IG1wY190cmVlICp0cmVl KTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpzZXRfZGVub3JtKShzdHJ1Y3QgbXBjICptcGMsCjE0 NDc0OiAgICBpbnQgb3BwX2lkLAoxNDQ3NDogICAgZW51bSBkY19jb2xvcl9kZXB0aCBvdXRwdXRf ZGVwdGgpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9kZW5vcm1fY2xhbXApKAoxNDQ3NDog ICAgc3RydWN0IG1wYyAqbXBjLAoxNDQ3NDogICAgaW50IG9wcF9pZCwKMTQ0NzQ6ICAgIHN0cnVj dCBtcGNfZGVub3JtX2NsYW1wIGRlbm9ybV9jbGFtcCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgq c2V0X291dHB1dF9jc2MpKHN0cnVjdCBtcGMgKm1wYywKMTQ0NzQ6ICAgIGludCBvcHBfaWQsCjE0 NDc0OiAgICBjb25zdCB1aW50MTZfdCAqcmVndmFsLAoxNDQ3NDogICAgZW51bSBtcGNfb3V0cHV0 X2NzY19tb2RlIG9jc2NfbW9kZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2V0X29jc2NfZGVm YXVsdCkoc3RydWN0IG1wYyAqbXBjLAoxNDQ3NDogICAgaW50IG9wcF9pZCwKMTQ0NzQ6ICAgIGVu dW0gZGNfY29sb3Jfc3BhY2UgY29sb3Jfc3BhY2UsCjE0NDc0OiAgICBlbnVtIG1wY19vdXRwdXRf Y3NjX21vZGUgb2NzY19tb2RlKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpzZXRfb3V0cHV0X2dh bW1hKSgKMTQ0NzQ6ICAgIHN0cnVjdCBtcGMgKm1wYywKMTQ0NzQ6ICAgIGludCBtcGNjX2lkLAox NDQ3NDogICAgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAgdm9pZCAo KnBvd2VyX29uX21wY19tZW1fcHdyKSgKMTQ0NzQ6ICAgIHN0cnVjdCBtcGMgKm1wYywKMTQ0NzQ6 ICAgIGludCBtcGNjX2lkLAoxNDQ3NDogICAgYm9vbCBwb3dlcl9vbik7CjE0NDc0OiAKMTQ0NzQ6 IH07CjE0NDc0OiAjIDMzICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvaW5jL2h3L29wcC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmaXhlZDMxXzMyOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gY2xhbXBpbmdfcmFuZ2UgewoxNDQ3NDogIENMQU1QSU5H X0ZVTExfUkFOR0UgPSAwLAoxNDQ3NDogIENMQU1QSU5HX0xJTUlURURfUkFOR0VfOEJQQywKMTQ0 NzQ6ICBDTEFNUElOR19MSU1JVEVEX1JBTkdFXzEwQlBDLAoxNDQ3NDogIENMQU1QSU5HX0xJTUlU RURfUkFOR0VfMTJCUEMsCjE0NDc0OiAKMTQ0NzQ6ICBDTEFNUElOR19MSU1JVEVEX1JBTkdFX1BS T0dSQU1NQUJMRQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsYW1waW5nX2FuZF9w aXhlbF9lbmNvZGluZ19wYXJhbXMgewoxNDQ3NDogIGVudW0gZGNfcGl4ZWxfZW5jb2RpbmcgcGl4 ZWxfZW5jb2Rpbmc7CjE0NDc0OiAgZW51bSBjbGFtcGluZ19yYW5nZSBjbGFtcGluZ19sZXZlbDsK MTQ0NzQ6ICBlbnVtIGRjX2NvbG9yX2RlcHRoIGNfZGVwdGg7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgYml0X2RlcHRoX3JlZHVjdGlvbl9wYXJhbXMgewoxNDQ3NDogIHN0cnVjdCB7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCBUUlVOQ0FURV9FTkFCTEVEOjE7CjE0 NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgVFJVTkNBVEVfREVQVEg6MjsKMTQ0NzQ6IAoxNDQ3NDog ICB1aW50MzJfdCBUUlVOQ0FURV9NT0RFOjE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgIHVpbnQzMl90IFNQQVRJQUxfRElUSEVSX0VOQUJMRUQ6MTsKMTQ0NzQ6IAoxNDQ3NDogICB1 aW50MzJfdCBTUEFUSUFMX0RJVEhFUl9ERVBUSDoyOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90 IFNQQVRJQUxfRElUSEVSX01PREU6MjsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCBSR0JfUkFO RE9NOjE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgRlJBTUVfUkFORE9NOjE7CjE0NDc0OiAK MTQ0NzQ6ICAgdWludDMyX3QgSElHSFBBU1NfUkFORE9NOjE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgIHVpbnQzMl90IEZSQU1FX01PRFVMQVRJT05fRU5BQkxFRDoxOwoxNDQ3NDog CjE0NDc0OiAgIHVpbnQzMl90IEZSQU1FX01PRFVMQVRJT05fREVQVEg6MjsKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50MzJfdCBURU1QT1JBTF9MRVZFTDoxOwoxNDQ3NDogICB1aW50MzJfdCBGUkMyNToy OwoxNDQ3NDogICB1aW50MzJfdCBGUkM1MDoyOwoxNDQ3NDogICB1aW50MzJfdCBGUkM3NToyOwox NDQ3NDogIH0gZmxhZ3M7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCByX3NlZWRfdmFsdWU7CjE0 NDc0OiAgdWludDMyX3QgYl9zZWVkX3ZhbHVlOwoxNDQ3NDogIHVpbnQzMl90IGdfc2VlZF92YWx1 ZTsKMTQ0NzQ6ICBlbnVtIGRjX3BpeGVsX2VuY29kaW5nIHBpeGVsX2VuY29kaW5nOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB3aWRlX2dhbXV0X3JlZ2FtbWFfbW9kZSB7CjE0NDc0OiAK MTQ0NzQ6ICBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9HUkFQSElDU19CWVBBU1MsCjE0NDc0OiAK MTQ0NzQ6ICBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9HUkFQSElDU19TUkdCMjQsCjE0NDc0OiAK MTQ0NzQ6ICBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9HUkFQSElDU19YWVlDQzIyLAoxNDQ3NDog CjE0NDc0OiAgV0lERV9HQU1VVF9SRUdBTU1BX01PREVfR1JBUEhJQ1NfTUFUUklYX0EsCjE0NDc0 OiAKMTQ0NzQ6ICBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9HUkFQSElDU19NQVRSSVhfQiwKMTQ0 NzQ6IAoxNDQ3NDogIFdJREVfR0FNVVRfUkVHQU1NQV9NT0RFX09WTF9CWVBBU1MsCjE0NDc0OiAK MTQ0NzQ6ICBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9PVkxfU1JHQjI0LAoxNDQ3NDogCjE0NDc0 OiAgV0lERV9HQU1VVF9SRUdBTU1BX01PREVfT1ZMX1hZWUNDMjIsCjE0NDc0OiAKMTQ0NzQ6ICBX SURFX0dBTVVUX1JFR0FNTUFfTU9ERV9PVkxfTUFUUklYX0EsCjE0NDc0OiAKMTQ0NzQ6ICBXSURF X0dBTVVUX1JFR0FNTUFfTU9ERV9PVkxfTUFUUklYX0IKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBnYW1tYV9waXhlbCB7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgcjsKMTQ0NzQ6 ICBzdHJ1Y3QgZml4ZWQzMV8zMiBnOwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGI7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGNoYW5uZWxfbmFtZSB7CjE0NDc0OiAgQ0hBTk5FTF9O QU1FX1JFRCwKMTQ0NzQ6ICBDSEFOTkVMX05BTUVfR1JFRU4sCjE0NDc0OiAgQ0hBTk5FTF9OQU1F X0JMVUUKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjdXN0b21fZmxvYXRfZm9ybWF0 IHsKMTQ0NzQ6ICB1aW50MzJfdCBtYW50aXNzYV9iaXRzOwoxNDQ3NDogIHVpbnQzMl90IGV4cG9u ZW50YV9iaXRzOwoxNDQ3NDogIGJvb2wgc2lnbjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBjdXN0b21fZmxvYXRfdmFsdWUgewoxNDQ3NDogIHVpbnQzMl90IG1hbnRpc3NhOwoxNDQ3 NDogIHVpbnQzMl90IGV4cG9uZW50YTsKMTQ0NzQ6ICB1aW50MzJfdCB2YWx1ZTsKMTQ0NzQ6ICBi b29sIG5lZ2F0aXZlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGh3X3hfcG9pbnQg ewoxNDQ3NDogIHVpbnQzMl90IGN1c3RvbV9mbG9hdF94OwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMx XzMyIHg7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgcmVnYW1tYV95X3JlZDsKMTQ0NzQ6ICBz dHJ1Y3QgZml4ZWQzMV8zMiByZWdhbW1hX3lfZ3JlZW47CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFf MzIgcmVnYW1tYV95X2JsdWU7CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBwd2xfZmxvYXRfZGF0YV9leCB7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgcjsKMTQ0NzQ6 ICBzdHJ1Y3QgZml4ZWQzMV8zMiBnOwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGI7CjE0NDc0 OiAgc3RydWN0IGZpeGVkMzFfMzIgZGVsdGFfcjsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBk ZWx0YV9nOwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGRlbHRhX2I7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBlbnVtIGh3X3BvaW50X3Bvc2l0aW9uIHsKMTQ0NzQ6IAoxNDQ3NDogIEhXX1BP SU5UX1BPU0lUSU9OX01JRERMRSwKMTQ0NzQ6IAoxNDQ3NDogIEhXX1BPSU5UX1BPU0lUSU9OX0xF RlQsCjE0NDc0OiAKMTQ0NzQ6ICBIV19QT0lOVF9QT1NJVElPTl9SSUdIVAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGdhbW1hX3BvaW50IHsKMTQ0NzQ6ICBpbnQzMl90IGxlZnRfaW5k ZXg7CjE0NDc0OiAgaW50MzJfdCByaWdodF9pbmRleDsKMTQ0NzQ6ICBlbnVtIGh3X3BvaW50X3Bv c2l0aW9uIHBvczsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBjb2VmZjsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwaXhlbF9nYW1tYV9wb2ludCB7CjE0NDc0OiAgc3RydWN0IGdh bW1hX3BvaW50IHI7CjE0NDc0OiAgc3RydWN0IGdhbW1hX3BvaW50IGc7CjE0NDc0OiAgc3RydWN0 IGdhbW1hX3BvaW50IGI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZ2FtbWFfY29l ZmZpY2llbnRzIHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBhMFszXTsKMTQ0NzQ6ICBzdHJ1 Y3QgZml4ZWQzMV8zMiBhMVszXTsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBhMlszXTsKMTQ0 NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBhM1szXTsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiB1 c2VyX2dhbW1hWzNdOwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIHVzZXJfY29udHJhc3Q7CjE0 NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgdXNlcl9icmlnaHRuZXNzOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHB3bF9mbG9hdF9kYXRhIHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8z MiByOwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGc7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFf MzIgYjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtcGNfdHJlZV9jZmcgewoxNDQ3 NDogIGludCBudW1fcGlwZXM7CjE0NDc0OiAgaW50IGRwcFs2XTsKMTQ0NzQ6ICBpbnQgbXBjY1s2 XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29y IHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIHVpbnQzMl90IGluc3Q7 CjE0NDc0OiAgc3RydWN0IHB3bF9wYXJhbXMgcmVnYW1tYV9wYXJhbXM7CjE0NDc0OiAgc3RydWN0 IG1wY190cmVlIG1wY190cmVlX3BhcmFtczsKMTQ0NzQ6ICBib29sIG1wY2NfZGlzY29ubmVjdF9w ZW5kaW5nWzZdOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBvcHBfZnVuY3MgKmZ1bmNzOwoxNDQ3NDog IHVpbnQzMl90IGR5bl9leHBhbnNpb247CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGZt dF9zdGVyZW9fYWN0aW9uIHsKMTQ0NzQ6ICBGTVRfU1RFUkVPX0FDVElPTl9FTkFCTEUgPSAwLAox NDQ3NDogIEZNVF9TVEVSRU9fQUNUSU9OX0RJU0FCTEUsCjE0NDc0OiAgRk1UX1NURVJFT19BQ1RJ T05fVVBEQVRFX1BPTEFSSVRZCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgb3BwX2dy cGhfY3NjX2FkanVzdG1lbnQgewoxNDQ3NDogCjE0NDc0OiAgZW51bSBkY19jb2xvcl9zcGFjZSBj X3NwYWNlOwoxNDQ3NDogIGVudW0gZGNfY29sb3JfZGVwdGggY29sb3JfZGVwdGg7CjE0NDc0OiAg ZW51bSBncmFwaGljc19jc2NfYWRqdXN0X3R5cGUgY3NjX2FkanVzdF90eXBlOwoxNDQ3NDogIGlu dDMyX3QgYWRqdXN0X2RpdmlkZXI7CjE0NDc0OiAgaW50MzJfdCBncnBoX2NvbnQ7CjE0NDc0OiAg aW50MzJfdCBncnBoX3NhdDsKMTQ0NzQ6ICBpbnQzMl90IGdycGhfYnJpZ2h0OwoxNDQ3NDogIGlu dDMyX3QgZ3JwaF9odWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGh3X2FkanVzdG1lbnRfcmFuZ2UgewoxNDQ3NDogIGludDMyX3QgaHdfZGVmYXVsdDsK MTQ0NzQ6ICBpbnQzMl90IG1pbjsKMTQ0NzQ6ICBpbnQzMl90IG1heDsKMTQ0NzQ6ICBpbnQzMl90 IHN0ZXA7CjE0NDc0OiAgdWludDMyX3QgZGl2aWRlcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGVudW0gb3ZsX2NzY19hZGp1c3RfaXRlbSB7CjE0NDc0OiAgT1ZFUkxBWV9CUklHSFRORVNTID0g MCwKMTQ0NzQ6ICBPVkVSTEFZX0dBTU1BLAoxNDQ3NDogIE9WRVJMQVlfQ09OVFJBU1QsCjE0NDc0 OiAgT1ZFUkxBWV9TQVRVUkFUSU9OLAoxNDQ3NDogIE9WRVJMQVlfSFVFLAoxNDQ3NDogIE9WRVJM QVlfQUxQSEEsCjE0NDc0OiAgT1ZFUkxBWV9BTFBIQV9QRVJfUElYLAoxNDQ3NDogIE9WRVJMQVlf Q09MT1JfVEVNUEVSQVRVUkUKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gb3BwYnVmX2Rp c3BsYXlfc2VnbWVudGF0aW9uIHsKMTQ0NzQ6ICBPUFBCVUZfRElTUExBWV9TRUdNRU5UQVRJT05f MV9TRUdNRU5UID0gMCwKMTQ0NzQ6ICBPUFBCVUZfRElTUExBWV9TRUdNRU5UQVRJT05fMl9TRUdN RU5UID0gMSwKMTQ0NzQ6ICBPUFBCVUZfRElTUExBWV9TRUdNRU5UQVRJT05fNF9TRUdNRU5UID0g MiwKMTQ0NzQ6ICBPUFBCVUZfRElTUExBWV9TRUdNRU5UQVRJT05fNF9TRUdNRU5UX1NQTElUX0xF RlQgPSAzLAoxNDQ3NDogIE9QUEJVRl9ESVNQTEFZX1NFR01FTlRBVElPTl80X1NFR01FTlRfU1BM SVRfUklHSFQgPSA0CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgb3BwYnVmX3BhcmFt cyB7CjE0NDc0OiAgdWludDMyX3QgYWN0aXZlX3dpZHRoOwoxNDQ3NDogIGVudW0gb3BwYnVmX2Rp c3BsYXlfc2VnbWVudGF0aW9uIG1zb19zZWdtZW50YXRpb247CjE0NDc0OiAgdWludDMyX3QgbXNv X292ZXJsYXBfcGl4ZWxfbnVtOwoxNDQ3NDogIHVpbnQzMl90IHBpeGVsX3JlcGV0aXRpb247CjE0 NDc0OiAgdWludDMyX3QgbnVtX3NlZ21lbnRfcGFkZGVkX3BpeGVsczsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBvcHBfZnVuY3MgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgdm9pZCAoKm9wcF9wcm9ncmFtX2ZtdCkoCjE0NDc0OiAgICBzdHJ1Y3Qgb3V0 cHV0X3BpeGVsX3Byb2Nlc3NvciAqb3BwLAoxNDQ3NDogICAgc3RydWN0IGJpdF9kZXB0aF9yZWR1 Y3Rpb25fcGFyYW1zICpmbXRfYml0X2RlcHRoLAoxNDQ3NDogICAgc3RydWN0IGNsYW1waW5nX2Fu ZF9waXhlbF9lbmNvZGluZ19wYXJhbXMgKmNsYW1waW5nKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQg KCpvcHBfc2V0X2R5bl9leHBhbnNpb24pKAoxNDQ3NDogICBzdHJ1Y3Qgb3V0cHV0X3BpeGVsX3By b2Nlc3NvciAqb3BwLAoxNDQ3NDogICBlbnVtIGRjX2NvbG9yX3NwYWNlIGNvbG9yX3NwLAoxNDQ3 NDogICBlbnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2RwdGgsCjE0NDc0OiAgIGVudW0gc2lnbmFs X3R5cGUgc2lnbmFsKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpvcHBfcHJvZ3JhbV9iaXRfZGVw dGhfcmVkdWN0aW9uKSgKMTQ0NzQ6ICAgc3RydWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9w cCwKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zICpwYXJh bXMpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqb3BwX2dldF91bmRlcmxheV9hZGp1 c3RtZW50X3JhbmdlKSgKMTQ0NzQ6ICAgIHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpv cHAsCjE0NDc0OiAgICBlbnVtIG92bF9jc2NfYWRqdXN0X2l0ZW0gb3ZlcmxheV9hZGp1c3RfaXRl bSwKMTQ0NzQ6ICAgIHN0cnVjdCBod19hZGp1c3RtZW50X3JhbmdlICpyYW5nZSk7CjE0NDc0OiAK MTQ0NzQ6ICB2b2lkICgqb3BwX2Rlc3Ryb3kpKHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29y ICoqb3BwKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpvcHBfcHJvZ3JhbV9zdGVyZW8pKAoxNDQ3 NDogICBzdHJ1Y3Qgb3V0cHV0X3BpeGVsX3Byb2Nlc3NvciAqb3BwLAoxNDQ3NDogICBib29sIGVu YWJsZSwKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICp0aW1pbmcpOwoxNDQ3 NDogCjE0NDc0OiAgdm9pZCAoKm9wcF9waXBlX2Nsb2NrX2NvbnRyb2wpKAoxNDQ3NDogICAgc3Ry dWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9wcCwKMTQ0NzQ6ICAgIGJvb2wgZW5hYmxlKTsK MTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpvcHBfc2V0X2Rpc3BfcGF0dGVybl9nZW5lcmF0b3IpKAox NDQ3NDogICAgc3RydWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9wcCwKMTQ0NzQ6ICAgIGVu dW0gY29udHJvbGxlcl9kcF90ZXN0X3BhdHRlcm4gdGVzdF9wYXR0ZXJuLAoxNDQ3NDogICAgZW51 bSBjb250cm9sbGVyX2RwX2NvbG9yX3NwYWNlIGNvbG9yX3NwYWNlLAoxNDQ3NDogICAgZW51bSBk Y19jb2xvcl9kZXB0aCBjb2xvcl9kZXB0aCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCB0Z19jb2xv ciAqc29saWRfY29sb3IsCjE0NDc0OiAgICBpbnQgd2lkdGgsCjE0NDc0OiAgICBpbnQgaGVpZ2h0 KTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCpkcGdfaXNfYmxhbmtlZCkoCjE0NDc0OiAgICBzdHJ1 Y3Qgb3V0cHV0X3BpeGVsX3Byb2Nlc3NvciAqb3BwKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpv cHBfZHBnX3NldF9ibGFua19jb2xvcikoCjE0NDc0OiAgICBzdHJ1Y3Qgb3V0cHV0X3BpeGVsX3By b2Nlc3NvciAqb3BwLAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IHRnX2NvbG9yICpjb2xvcik7CjE0 NDc0OiAKMTQ0NzQ6ICB2b2lkICgqb3BwX3Byb2dyYW1fbGVmdF9lZGdlX2V4dHJhX3BpeGVsKSgK MTQ0NzQ6ICAgIHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpvcHAsCjE0NDc0OiAgICBi b29sIGNvdW50KTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzYgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9od19zZXF1ZW5j ZXIuaCIgMQoxNDQ3NDogIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2luYy9od19zZXF1ZW5jZXIuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jbG9ja19zb3VyY2UuaCIgMQoxNDQ3NDogIyAz MCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jbG9ja19z b3VyY2UuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2luY2x1ZGUvZ3JwaF9vYmplY3RfaWQuaCIgMQoxNDQ3NDogIyAzMSAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jbG9ja19zb3VyY2UuaCIgMgoxNDQ3 NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9i aW9zX3BhcnNlcl90eXBlcy5oIiAxCjE0NDc0OiAjIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9iaW9zX3BhcnNlcl90eXBlcy5oIgoxNDQ3NDogIyAx ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMu aCIgMQoxNDQ3NDogIyAzNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2RjL2RtX3NlcnZpY2VzLmgiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3RyYWNlLmgiIDEKMTQ0NzQ6ICMgMzIg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1 X2RtX3RyYWNlLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgiIDEK MTQ0NzQ6ICMgMjMgIi4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgiCjE0NDc0OiBzdHJ1Y3Qg bW9kdWxlOwoxNDQ3NDogc3RydWN0IHRyYWNlcG9pbnQ7CjE0NDc0OiBzdHJ1Y3Qgbm90aWZpZXJf YmxvY2s7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0cmFjZV9ldmFsX21hcCB7CjE0NDc0OiAgY29u c3QgY2hhciAqc3lzdGVtOwoxNDQ3NDogIGNvbnN0IGNoYXIgKmV2YWxfc3RyaW5nOwoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgZXZhbF92YWx1ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHNyY3Vfc3RydWN0IHRyYWNlcG9pbnRfc3JjdTsKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIGludAoxNDQ3NDogdHJhY2Vwb2ludF9wcm9iZV9yZWdpc3Rlcihz dHJ1Y3QgdHJhY2Vwb2ludCAqdHAsIHZvaWQgKnByb2JlLCB2b2lkICpkYXRhKTsKMTQ0NzQ6IGV4 dGVybiBpbnQKMTQ0NzQ6IHRyYWNlcG9pbnRfcHJvYmVfcmVnaXN0ZXJfcHJpbyhzdHJ1Y3QgdHJh Y2Vwb2ludCAqdHAsIHZvaWQgKnByb2JlLCB2b2lkICpkYXRhLAoxNDQ3NDogICAgICAgICAgIGlu dCBwcmlvKTsKMTQ0NzQ6IGV4dGVybiBpbnQKMTQ0NzQ6IHRyYWNlcG9pbnRfcHJvYmVfdW5yZWdp c3RlcihzdHJ1Y3QgdHJhY2Vwb2ludCAqdHAsIHZvaWQgKnByb2JlLCB2b2lkICpkYXRhKTsKMTQ0 NzQ6IGV4dGVybiB2b2lkCjE0NDc0OiBmb3JfZWFjaF9rZXJuZWxfdHJhY2Vwb2ludCh2b2lkICgq ZmN0KShzdHJ1Y3QgdHJhY2Vwb2ludCAqdHAsIHZvaWQgKnByaXYpLAoxNDQ3NDogICB2b2lkICpw cml2KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgdHBfbW9kdWxlIHsKMTQ0NzQ6ICBz dHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CjE0NDc0OiAgc3RydWN0IG1vZHVsZSAqbW9kOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCB0cmFjZV9tb2R1bGVfaGFzX2JhZF90YWludChzdHJ1Y3Qg bW9kdWxlICptb2QpOwoxNDQ3NDogZXh0ZXJuIGludCByZWdpc3Rlcl90cmFjZXBvaW50X21vZHVs ZV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKMTQ0NzQ6IGV4dGVybiBpbnQg dW5yZWdpc3Rlcl90cmFjZXBvaW50X21vZHVsZV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxv Y2sgKm5iKTsKMTQ0NzQ6ICMgODAgIi4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHRyYWNlcG9pbnRfc3luY2hyb25pemVfdW5yZWdpc3Rlcih2b2lkKQoxNDQ3NDogewox NDQ3NDogIHN5bmNocm9uaXplX3NyY3UoJnRyYWNlcG9pbnRfc3JjdSk7CjE0NDc0OiAgc3luY2hy b25pemVfcmN1KCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHN5c2NhbGxfcmVnZnVuYyh2b2lkKTsKMTQ0 NzQ6IGV4dGVybiB2b2lkIHN5c2NhbGxfdW5yZWdmdW5jKHZvaWQpOwoxNDQ3NDogIyAxMDEgIi4v aW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgdHJhY2Vwb2ludCAqdHJh Y2Vwb2ludF9wdHJfZGVyZWYodHJhY2Vwb2ludF9wdHJfdCAqcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gb2Zmc2V0X3RvX3B0cihwKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzMgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3RyYWNlLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB0cmFjZXBvaW50IF9fdHJhY2Vwb2ludF9h bWRncHVfZGNfcnJlZzsgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCB0cmFjZV9hbWRncHVfZGNfcnJlZyh1bnNpZ25lZCBsb25nICpy ZWFkX2NvdW50LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbHVlKSB7IGlmIChzdGF0aWNfa2V5 X2ZhbHNlKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcua2V5KSkgZG8geyBzdHJ1Y3QgdHJh Y2Vwb2ludF9mdW5jICppdF9mdW5jX3B0cjsgdm9pZCAqaXRfZnVuYzsgdm9pZCAqX19kYXRhOyBp bnQgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9faWR4ID0gMDsgaWYgKCEoY3B1bWFza190 ZXN0X2NwdSgoKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBzY3JfcmV0X187IGRvIHsgY29uc3Qgdm9p ZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJihjcHVfbnVtYmVyKSkgKyAwKSkoKHZvaWQgKikw KTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsgc3dpdGNoKHNpemVvZihjcHVfbnVt YmVyKSkgeyBjYXNlIDE6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3Jl dF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAo Im1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAi bSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAi IiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251 bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6 IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJy ZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIi LCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1 bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2UgMjog cHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6 ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikp OyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIg IjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBj YXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6 ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNt IHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZv X3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1 X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2FzZSA0OiBwc2NyX3JldF9fID0gKHsg dHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikp IHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwl MCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6 IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIg KHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0 aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9f KSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3Yi ICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChj cHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19y ZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDg6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJl cikgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2 b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19y ZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgi bW92IiAidyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJt IiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVt YmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoi ICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJl YWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7 IGRlZmF1bHQ6IF9fYmFkX3NpemVfY2FsbF9wYXJhbWV0ZXIoKTsgYnJlYWs7IH0gcHNjcl9yZXRf XzsgfSkpLCAoKGNvbnN0IHN0cnVjdCBjcHVtYXNrICopJl9fY3B1X29ubGluZV9tYXNrKSkpKSBy ZXR1cm47ICh7IGludCBfX3JldF93YXJuX29uID0gISEoMCAmJiAocHJlZW1wdF9jb3VudCgpICYg KCgoMVVMIDw8ICgxKSktMSkgPDwgKCgoMCArIDgpICsgOCkgKyA0KSkpKTsgaWYgKF9fYnVpbHRp bl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZv bGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVn X3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2Vu dHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50 cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29y ZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNl Y3Rpb24iIDogOiAiaSIgKCJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Ft ZGdwdV9kbS9hbWRncHVfZG1fdHJhY2UuaCIpLCAiaSIgKDM0KSwgImkiICgoMSA8PCAwKXwoKDEg PDwgMSkgfCAoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0g d2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNj YXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQi IDogOiAiaSIgKDQ0KSk7IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3Jl dF93YXJuX29uKSwgMCk7IH0pOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OyBpZiAoMCkgeyBfX2lkeCA9IHNyY3VfcmVhZF9sb2NrX25vdHJhY2UoJnRyYWNlcG9pbnRfc3Jj dSk7IHJjdV9pcnFfZW50ZXJfaXJxc29uKCk7IH0gaXRfZnVuY19wdHIgPSAoeyB0eXBlb2YoKCZf X3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcpLT5mdW5jcykgX19fX19fX19wMSA9ICh7IHVuaW9u IHsgdHlwZW9mKCgmX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnKS0+ZnVuY3MpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKCZfX3RyYWNlcG9p bnRfYW1kZ3B1X2RjX3JyZWcpLT5mdW5jcyksIF9fdS5fX2MsIHNpemVvZigoJl9fdHJhY2Vwb2lu dF9hbWRncHVfZGNfcnJlZyktPmZ1bmNzKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNr KCYoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcpLT5mdW5jcyksIF9fdS5fX2MsIHNpemVv ZigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJlZyktPmZ1bmNzKSk7IGRvIHsgfSB3aGlsZSAo MCk7IF9fdS5fX3ZhbDsgfSk7ICgodHlwZW9mKCooJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJl ZyktPmZ1bmNzKSAqKShfX19fX19fX3AxKSk7IH0pOyBpZiAoaXRfZnVuY19wdHIpIHsgZG8geyBp dF9mdW5jID0gKGl0X2Z1bmNfcHRyKS0+ZnVuYzsgX19kYXRhID0gKGl0X2Z1bmNfcHRyKS0+ZGF0 YTsgKCh2b2lkKCopKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqcmVhZF9jb3VudCwgdWlu dDMyX3QgcmVnLCB1aW50MzJfdCB2YWx1ZSkpKGl0X2Z1bmMpKShfX2RhdGEsIHJlYWRfY291bnQs IHJlZywgdmFsdWUpOyB9IHdoaWxlICgoKytpdF9mdW5jX3B0ciktPmZ1bmMpOyB9IGlmICgwKSB7 IHJjdV9pcnFfZXhpdF9pcnFzb24oKTsgc3JjdV9yZWFkX3VubG9ja19ub3RyYWNlKCZ0cmFjZXBv aW50X3NyY3UsIF9faWR4KTsgfSBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OyB9IHdoaWxlICgwKTsgaWYgKDAgJiYgKGNwdW1hc2tfdGVzdF9jcHUoKCh7IHR5cGVvZihjcHVf bnVtYmVyKSBwc2NyX3JldF9fOyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBl b2YoKCYoY3B1X251bWJlcikpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsg fSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBwc2NyX3Jl dF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1 X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAi JSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFr OyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUw IiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDog YXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRp bGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18p IDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgp OyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDI6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2Yo Y3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNl IDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9 cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZv bGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3Jl dF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJt b3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0i IChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIl JSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1i ZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9 KTsgYnJlYWs7IGNhc2UgNDogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9f cmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxl ICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6 ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3 ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVf bnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3Mi IjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsg YnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIx IiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVm YXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2FzZSA4 OiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChz aXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUi ImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVy KSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIl IiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7 IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAi IDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBh c20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChw Zm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJj cHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2Nh bGxfcGFyYW1ldGVyKCk7IGJyZWFrOyB9IHBzY3JfcmV0X187IH0pKSwgKChjb25zdCBzdHJ1Y3Qg Y3B1bWFzayAqKSZfX2NwdV9vbmxpbmVfbWFzaykpKSkgeyByY3VfcmVhZF9sb2NrX3NjaGVkX25v dHJhY2UoKTsgKHsgdHlwZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNzKSkg Kl9fX19fX19fcDEgPSAodHlwZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNz KSkgKikoeyB1bmlvbiB7IHR5cGVvZigoX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNz KSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJigo X190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNzKSksIF9fdS5fX2MsIHNpemVvZigoX190 cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNzKSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVf bm9jaGVjaygmKChfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcuZnVuY3MpKSwgX191Ll9fYywg c2l6ZW9mKChfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcuZnVuY3MpKSk7IGRvIHsgfSB3aGls ZSAoMCk7IF9fdS5fX3ZhbDsgfSk7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBlb2YoKihfX3Ry YWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcuZnVuY3MpKSAqKShfX19fX19fX3AxKSk7IH0pOyByY3Vf cmVhZF91bmxvY2tfc2NoZWRfbm90cmFjZSgpOyB9IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX2FtZGdw dV9kY19ycmVnKHZvaWQgKCpwcm9iZSkodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25nICpyZWFk X2NvdW50LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbHVlKSwgdm9pZCAqZGF0YSkgeyByZXR1 cm4gdHJhY2Vwb2ludF9wcm9iZV9yZWdpc3RlcigmX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVn LCAodm9pZCAqKXByb2JlLCBkYXRhKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmVnaXN0ZXJfdHJhY2VfcHJpb19hbWRncHVf ZGNfcnJlZyh2b2lkICgqcHJvYmUpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqcmVhZF9j b3VudCwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWx1ZSksIHZvaWQgKmRhdGEsIGludCBwcmlv KSB7IHJldHVybiB0cmFjZXBvaW50X3Byb2JlX3JlZ2lzdGVyX3ByaW8oJl9fdHJhY2Vwb2ludF9h bWRncHVfZGNfcnJlZywgKHZvaWQgKilwcm9iZSwgZGF0YSwgcHJpbyk7IH0gc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHVucmVnaXN0 ZXJfdHJhY2VfYW1kZ3B1X2RjX3JyZWcodm9pZCAoKnByb2JlKSh2b2lkICpfX2RhdGEsIHVuc2ln bmVkIGxvbmcgKnJlYWRfY291bnQsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsdWUpLCB2b2lk ICpkYXRhKSB7IHJldHVybiB0cmFjZXBvaW50X3Byb2JlX3VucmVnaXN0ZXIoJl9fdHJhY2Vwb2lu dF9hbWRncHVfZGNfcnJlZywgKHZvaWQgKilwcm9iZSwgZGF0YSk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjaGVja190cmFj ZV9jYWxsYmFja190eXBlX2FtZGdwdV9kY19ycmVnKHZvaWQgKCpjYikodm9pZCAqX19kYXRhLCB1 bnNpZ25lZCBsb25nICpyZWFkX2NvdW50LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbHVlKSkg eyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgdHJhY2VfYW1kZ3B1X2RjX3JyZWdfZW5hYmxlZCh2b2lkKSB7IHJldHVybiBzdGF0 aWNfa2V5X2ZhbHNlKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcua2V5KTsgfQoxNDQ3NDog IyA0OSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2FtZGdwdV9kbS9h bWRncHVfZG1fdHJhY2UuaCIKMTQ0NzQ6ICA7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qg dHJhY2Vwb2ludCBfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3dyZWc7IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdHJhY2VfYW1kZ3B1 X2RjX3dyZWcodW5zaWduZWQgbG9uZyAqd3JpdGVfY291bnQsIHVpbnQzMl90IHJlZywgdWludDMy X3QgdmFsdWUpIHsgaWYgKHN0YXRpY19rZXlfZmFsc2UoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNf d3JlZy5rZXkpKSBkbyB7IHN0cnVjdCB0cmFjZXBvaW50X2Z1bmMgKml0X2Z1bmNfcHRyOyB2b2lk ICppdF9mdW5jOyB2b2lkICpfX2RhdGE7IGludCBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19pZHggPSAwOyBpZiAoIShjcHVtYXNrX3Rlc3RfY3B1KCgoeyB0eXBlb2YoY3B1X251bWJlcikg cHNjcl9yZXRfXzsgZG8geyBjb25zdCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKGNw dV9udW1iZXIpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUg KDApOyBzd2l0Y2goc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogcHNjcl9yZXRfXyA9ICh7 IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIp KSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIs JTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAy OiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIi IChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xh dGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRf XykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92 IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAo Y3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9f cmV0X187IH0pOyBicmVhazsgY2FzZSAyOiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1i ZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20g dm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9f cmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAo Im1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAi bSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAi IiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251 bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6 IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFr OyBjYXNlIDQ6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBz d2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIg ImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNw dV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikp OyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIg IjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBj YXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6 ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9f YmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2UgODogcHNjcl9y ZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNw dV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIg IiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVh azsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwl MCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6 IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIg KHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0 aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9f KSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUo KTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgZGVmYXVsdDogX19iYWRfc2l6ZV9jYWxsX3BhcmFt ZXRlcigpOyBicmVhazsgfSBwc2NyX3JldF9fOyB9KSksICgoY29uc3Qgc3RydWN0IGNwdW1hc2sg KikmX19jcHVfb25saW5lX21hc2spKSkpIHJldHVybjsgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAh ISgwICYmIChwcmVlbXB0X2NvdW50KCkgJiAoKCgxVUwgPDwgKDEpKS0xKSA8PCAoKCgwICsgOCkg KyA4KSArIDQpKSkpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkp IGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBi IiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcg IiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIg IiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMg YnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4i ICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV90cmFjZS5oIiksICJp IiAoNTEpLCAiaSIgKCgxIDw8IDApfCgoMSA8PCAxKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXpl b2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMw OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIg LSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoNDUpKTsgfSk7IH0gd2hpbGUgKDAp OyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7IF9fYXNtX18gX192 b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IGlmICgwKSB7IF9faWR4ID0gc3JjdV9yZWFkX2xv Y2tfbm90cmFjZSgmdHJhY2Vwb2ludF9zcmN1KTsgcmN1X2lycV9lbnRlcl9pcnFzb24oKTsgfSBp dF9mdW5jX3B0ciA9ICh7IHR5cGVvZigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZyktPmZ1 bmNzKSBfX19fX19fX3AxID0gKHsgdW5pb24geyB0eXBlb2YoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1 X2RjX3dyZWcpLT5mdW5jcykgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVh ZF9vbmNlX3NpemUoJigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZyktPmZ1bmNzKSwgX191 Ll9fYywgc2l6ZW9mKCgmX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnKS0+ZnVuY3MpKTsgZWxz ZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3Jl ZyktPmZ1bmNzKSwgX191Ll9fYywgc2l6ZW9mKCgmX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVn KS0+ZnVuY3MpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsgKCh0eXBlb2YoKigm X190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnKS0+ZnVuY3MpICopKF9fX19fX19fcDEpKTsgfSk7 IGlmIChpdF9mdW5jX3B0cikgeyBkbyB7IGl0X2Z1bmMgPSAoaXRfZnVuY19wdHIpLT5mdW5jOyBf X2RhdGEgPSAoaXRfZnVuY19wdHIpLT5kYXRhOyAoKHZvaWQoKikodm9pZCAqX19kYXRhLCB1bnNp Z25lZCBsb25nICp3cml0ZV9jb3VudCwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWx1ZSkpKGl0 X2Z1bmMpKShfX2RhdGEsIHdyaXRlX2NvdW50LCByZWcsIHZhbHVlKTsgfSB3aGlsZSAoKCsraXRf ZnVuY19wdHIpLT5mdW5jKTsgfSBpZiAoMCkgeyByY3VfaXJxX2V4aXRfaXJxc29uKCk7IHNyY3Vf cmVhZF91bmxvY2tfbm90cmFjZSgmdHJhY2Vwb2ludF9zcmN1LCBfX2lkeCk7IH0gX19hc21fXyBf X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7IGlmICgwICYmIChjcHVt YXNrX3Rlc3RfY3B1KCgoeyB0eXBlb2YoY3B1X251bWJlcikgcHNjcl9yZXRfXzsgZG8geyBjb25z dCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKGNwdV9udW1iZXIpKSArIDApKSgodm9p ZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyBzd2l0Y2goc2l6ZW9mKGNw dV9udW1iZXIpKSB7IGNhc2UgMTogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBw Zm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0 aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9f KSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3Yi ICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChj cHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIi Z3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIp KTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUi ICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsg ZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2Fz ZSAyOiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNo IChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVt YmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoi ICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJl YWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIs JTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4 OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIi IChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9w ZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDQ6IHBzY3JfcmV0X18g PSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVt YmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAi MSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNh c2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDog Ij1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20g dm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9f cmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAo Im1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAi bSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0g cGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2UgODogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVf bnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTog YXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRp bGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18p IDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIg ImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNw dV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikp OyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBi cmVhazsgZGVmYXVsdDogX19iYWRfc2l6ZV9jYWxsX3BhcmFtZXRlcigpOyBicmVhazsgfSBwc2Ny X3JldF9fOyB9KSksICgoY29uc3Qgc3RydWN0IGNwdW1hc2sgKikmX19jcHVfb25saW5lX21hc2sp KSkpIHsgcmN1X3JlYWRfbG9ja19zY2hlZF9ub3RyYWNlKCk7ICh7IHR5cGVvZigqKF9fdHJhY2Vw b2ludF9hbWRncHVfZGNfd3JlZy5mdW5jcykpICpfX19fX19fX3AxID0gKHR5cGVvZigqKF9fdHJh Y2Vwb2ludF9hbWRncHVfZGNfd3JlZy5mdW5jcykpICopKHsgdW5pb24geyB0eXBlb2YoKF9fdHJh Y2Vwb2ludF9hbWRncHVfZGNfd3JlZy5mdW5jcykpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7 IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZy5m dW5jcykpLCBfX3UuX19jLCBzaXplb2YoKF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZy5mdW5j cykpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigoX190cmFjZXBvaW50X2FtZGdw dV9kY193cmVnLmZ1bmNzKSksIF9fdS5fX2MsIHNpemVvZigoX190cmFjZXBvaW50X2FtZGdwdV9k Y193cmVnLmZ1bmNzKSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOyBkbyB7IH0g d2hpbGUgKDApOyA7ICgodHlwZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnLmZ1bmNz KSkgKikoX19fX19fX19wMSkpOyB9KTsgcmN1X3JlYWRfdW5sb2NrX3NjaGVkX25vdHJhY2UoKTsg fSB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGludCByZWdpc3Rlcl90cmFjZV9hbWRncHVfZGNfd3JlZyh2b2lkICgqcHJvYmUpKHZvaWQg Kl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqd3JpdGVfY291bnQsIHVpbnQzMl90IHJlZywgdWludDMy X3QgdmFsdWUpLCB2b2lkICpkYXRhKSB7IHJldHVybiB0cmFjZXBvaW50X3Byb2JlX3JlZ2lzdGVy KCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3dyZWcsICh2b2lkICopcHJvYmUsIGRhdGEpOyB9IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCByZWdpc3Rlcl90cmFjZV9wcmlvX2FtZGdwdV9kY193cmVnKHZvaWQgKCpwcm9iZSkodm9pZCAq X19kYXRhLCB1bnNpZ25lZCBsb25nICp3cml0ZV9jb3VudCwgdWludDMyX3QgcmVnLCB1aW50MzJf dCB2YWx1ZSksIHZvaWQgKmRhdGEsIGludCBwcmlvKSB7IHJldHVybiB0cmFjZXBvaW50X3Byb2Jl X3JlZ2lzdGVyX3ByaW8oJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZywgKHZvaWQgKilwcm9i ZSwgZGF0YSwgcHJpbyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHVucmVnaXN0ZXJfdHJhY2VfYW1kZ3B1X2RjX3dyZWcodm9p ZCAoKnByb2JlKSh2b2lkICpfX2RhdGEsIHVuc2lnbmVkIGxvbmcgKndyaXRlX2NvdW50LCB1aW50 MzJfdCByZWcsIHVpbnQzMl90IHZhbHVlKSwgdm9pZCAqZGF0YSkgeyByZXR1cm4gdHJhY2Vwb2lu dF9wcm9iZV91bnJlZ2lzdGVyKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3dyZWcsICh2b2lkICop cHJvYmUsIGRhdGEpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgY2hlY2tfdHJhY2VfY2FsbGJhY2tfdHlwZV9hbWRncHVfZGNf d3JlZyh2b2lkICgqY2IpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqd3JpdGVfY291bnQs IHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsdWUpKSB7IH0gc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0cmFjZV9hbWRncHVfZGNf d3JlZ19lbmFibGVkKHZvaWQpIHsgcmV0dXJuIHN0YXRpY19rZXlfZmFsc2UoJl9fdHJhY2Vwb2lu dF9hbWRncHVfZGNfd3JlZy5rZXkpOyB9CjE0NDc0OiAjIDY2ICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV90cmFjZS5oIgoxNDQ3NDog IDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHRyYWNlcG9pbnQgX190cmFj ZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZTsgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0cmFjZV9hbWRncHVfZGNfcGVyZm9y bWFuY2UodW5zaWduZWQgbG9uZyByZWFkX2NvdW50LCB1bnNpZ25lZCBsb25nIHdyaXRlX2NvdW50 LCB1bnNpZ25lZCBsb25nICpsYXN0X3JlYWQsIHVuc2lnbmVkIGxvbmcgKmxhc3Rfd3JpdGUsIGNv bnN0IGNoYXIgKmZ1bmMsIHVuc2lnbmVkIGludCBsaW5lKSB7IGlmIChzdGF0aWNfa2V5X2ZhbHNl KCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlLmtleSkpIGRvIHsgc3RydWN0IHRy YWNlcG9pbnRfZnVuYyAqaXRfZnVuY19wdHI7IHZvaWQgKml0X2Z1bmM7IHZvaWQgKl9fZGF0YTsg aW50IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2lkeCA9IDA7IGlmICghKGNwdW1hc2tf dGVzdF9jcHUoKCh7IHR5cGVvZihjcHVfbnVtYmVyKSBwc2NyX3JldF9fOyBkbyB7IGNvbnN0IHZv aWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X251bWJlcikpICsgMCkpKCh2b2lkICop MCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoY3B1X251 bWJlcikpIHsgY2FzZSAxOiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19y ZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUg KCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDog Im0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncg IiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9u dW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIi OiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBi cmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEi IiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZh dWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDI6 IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNp emVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIi Z3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIp KTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUi ICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsg Y2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIg OiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFz bSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBm b19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNw dV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2UgNDogcHNjcl9yZXRfXyA9ICh7 IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIp KSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIs JTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAy OiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIi IChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xh dGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRf XykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92 IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAo Y3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9f cmV0X187IH0pOyBicmVhazsgY2FzZSA4OiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1i ZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20g dm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9f cmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAo Im1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAi bSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAi IiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251 bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6 IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFr OyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7IGJyZWFrOyB9IHBzY3JfcmV0 X187IH0pKSwgKChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqKSZfX2NwdV9vbmxpbmVfbWFzaykpKSkg cmV0dXJuOyAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKDAgJiYgKHByZWVtcHRfY291bnQoKSAm ICgoKDFVTCA8PCAoMSkpLTEpIDw8ICgoKDAgKyA4KSArIDgpICsgNCkpKSk7IGlmIChfX2J1aWx0 aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2 b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1 Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19l bnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2Vu dHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0Lndv cmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3Bz ZWN0aW9uIiA6IDogImkiICgiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9h bWRncHVfZG0vYW1kZ3B1X2RtX3RyYWNlLmgiKSwgImkiICg2OSksICJpIiAoKDEgPDwgMCl8KCgx IDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9 IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlz Y2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0 IiA6IDogImkiICg0NikpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19y ZXRfd2Fybl9vbiksIDApOyB9KTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnki KTsgaWYgKDApIHsgX19pZHggPSBzcmN1X3JlYWRfbG9ja19ub3RyYWNlKCZ0cmFjZXBvaW50X3Ny Y3UpOyByY3VfaXJxX2VudGVyX2lycXNvbigpOyB9IGl0X2Z1bmNfcHRyID0gKHsgdHlwZW9mKCgm X190cmFjZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZSktPmZ1bmNzKSBfX19fX19fX3AxID0g KHsgdW5pb24geyB0eXBlb2YoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ ZnVuY3MpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXpl KCYoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVuY3MpLCBfX3UuX19j LCBzaXplb2YoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVuY3MpKTsg ZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNf cGVyZm9ybWFuY2UpLT5mdW5jcyksIF9fdS5fX2MsIHNpemVvZigoJl9fdHJhY2Vwb2ludF9hbWRn cHVfZGNfcGVyZm9ybWFuY2UpLT5mdW5jcykpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7 IH0pOyAoKHR5cGVvZigqKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVu Y3MpICopKF9fX19fX19fcDEpKTsgfSk7IGlmIChpdF9mdW5jX3B0cikgeyBkbyB7IGl0X2Z1bmMg PSAoaXRfZnVuY19wdHIpLT5mdW5jOyBfX2RhdGEgPSAoaXRfZnVuY19wdHIpLT5kYXRhOyAoKHZv aWQoKikodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25nIHJlYWRfY291bnQsIHVuc2lnbmVkIGxv bmcgd3JpdGVfY291bnQsIHVuc2lnbmVkIGxvbmcgKmxhc3RfcmVhZCwgdW5zaWduZWQgbG9uZyAq bGFzdF93cml0ZSwgY29uc3QgY2hhciAqZnVuYywgdW5zaWduZWQgaW50IGxpbmUpKShpdF9mdW5j KSkoX19kYXRhLCByZWFkX2NvdW50LCB3cml0ZV9jb3VudCwgbGFzdF9yZWFkLCBsYXN0X3dyaXRl LCBmdW5jLCBsaW5lKTsgfSB3aGlsZSAoKCsraXRfZnVuY19wdHIpLT5mdW5jKTsgfSBpZiAoMCkg eyByY3VfaXJxX2V4aXRfaXJxc29uKCk7IHNyY3VfcmVhZF91bmxvY2tfbm90cmFjZSgmdHJhY2Vw b2ludF9zcmN1LCBfX2lkeCk7IH0gX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnki KTsgfSB3aGlsZSAoMCk7IGlmICgwICYmIChjcHVtYXNrX3Rlc3RfY3B1KCgoeyB0eXBlb2YoY3B1 X251bWJlcikgcHNjcl9yZXRfXzsgZG8geyBjb25zdCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlw ZW9mKCgmKGNwdV9udW1iZXIpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7 IH0gd2hpbGUgKDApOyBzd2l0Y2goc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogcHNjcl9y ZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNw dV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIg IiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVh azsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwl MCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6 IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIg KHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0 aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9f KSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUo KTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2FzZSAyOiBwc2NyX3JldF9fID0gKHsgdHlwZW9m KGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2Fz ZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2 b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19y ZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgi bW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJt IiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVt YmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsg fSk7IGJyZWFrOyBjYXNlIDQ6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZv X3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGls ZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykg OiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAi dyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1 X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdz IiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7 IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAi MSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRl ZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2Ug ODogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAo c2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUl IiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJl cikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAi JSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFr OyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUw IiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODog YXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVy Y3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgZGVmYXVsdDogX19iYWRfc2l6ZV9j YWxsX3BhcmFtZXRlcigpOyBicmVhazsgfSBwc2NyX3JldF9fOyB9KSksICgoY29uc3Qgc3RydWN0 IGNwdW1hc2sgKikmX19jcHVfb25saW5lX21hc2spKSkpIHsgcmN1X3JlYWRfbG9ja19zY2hlZF9u b3RyYWNlKCk7ICh7IHR5cGVvZigqKF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFuY2Uu ZnVuY3MpKSAqX19fX19fX19wMSA9ICh0eXBlb2YoKihfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3Bl cmZvcm1hbmNlLmZ1bmNzKSkgKikoeyB1bmlvbiB7IHR5cGVvZigoX190cmFjZXBvaW50X2FtZGdw dV9kY19wZXJmb3JtYW5jZS5mdW5jcykpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgx KSBfX3JlYWRfb25jZV9zaXplKCYoKF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFuY2Uu ZnVuY3MpKSwgX191Ll9fYywgc2l6ZW9mKChfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1h bmNlLmZ1bmNzKSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKChfX3RyYWNlcG9p bnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlLmZ1bmNzKSksIF9fdS5fX2MsIHNpemVvZigoX190cmFj ZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZS5mdW5jcykpKTsgZG8geyB9IHdoaWxlICgwKTsg X191Ll9fdmFsOyB9KTsgZG8geyB9IHdoaWxlICgwKTsgOyAoKHR5cGVvZigqKF9fdHJhY2Vwb2lu dF9hbWRncHVfZGNfcGVyZm9ybWFuY2UuZnVuY3MpKSAqKShfX19fX19fX3AxKSk7IH0pOyByY3Vf cmVhZF91bmxvY2tfc2NoZWRfbm90cmFjZSgpOyB9IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX2FtZGdw dV9kY19wZXJmb3JtYW5jZSh2b2lkICgqcHJvYmUpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9u ZyByZWFkX2NvdW50LCB1bnNpZ25lZCBsb25nIHdyaXRlX2NvdW50LCB1bnNpZ25lZCBsb25nICps YXN0X3JlYWQsIHVuc2lnbmVkIGxvbmcgKmxhc3Rfd3JpdGUsIGNvbnN0IGNoYXIgKmZ1bmMsIHVu c2lnbmVkIGludCBsaW5lKSwgdm9pZCAqZGF0YSkgeyByZXR1cm4gdHJhY2Vwb2ludF9wcm9iZV9y ZWdpc3RlcigmX190cmFjZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZSwgKHZvaWQgKilwcm9i ZSwgZGF0YSk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX3ByaW9fYW1kZ3B1X2RjX3BlcmZvcm1hbmNl KHZvaWQgKCpwcm9iZSkodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25nIHJlYWRfY291bnQsIHVu c2lnbmVkIGxvbmcgd3JpdGVfY291bnQsIHVuc2lnbmVkIGxvbmcgKmxhc3RfcmVhZCwgdW5zaWdu ZWQgbG9uZyAqbGFzdF93cml0ZSwgY29uc3QgY2hhciAqZnVuYywgdW5zaWduZWQgaW50IGxpbmUp LCB2b2lkICpkYXRhLCBpbnQgcHJpbykgeyByZXR1cm4gdHJhY2Vwb2ludF9wcm9iZV9yZWdpc3Rl cl9wcmlvKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlLCAodm9pZCAqKXByb2Jl LCBkYXRhLCBwcmlvKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQgdW5yZWdpc3Rlcl90cmFjZV9hbWRncHVfZGNfcGVyZm9ybWFu Y2Uodm9pZCAoKnByb2JlKSh2b2lkICpfX2RhdGEsIHVuc2lnbmVkIGxvbmcgcmVhZF9jb3VudCwg dW5zaWduZWQgbG9uZyB3cml0ZV9jb3VudCwgdW5zaWduZWQgbG9uZyAqbGFzdF9yZWFkLCB1bnNp Z25lZCBsb25nICpsYXN0X3dyaXRlLCBjb25zdCBjaGFyICpmdW5jLCB1bnNpZ25lZCBpbnQgbGlu ZSksIHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRyYWNlcG9pbnRfcHJvYmVfdW5yZWdpc3RlcigmX190 cmFjZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZSwgKHZvaWQgKilwcm9iZSwgZGF0YSk7IH0g c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBjaGVja190cmFjZV9jYWxsYmFja190eXBlX2FtZGdwdV9kY19wZXJmb3JtYW5jZSh2b2lk ICgqY2IpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyByZWFkX2NvdW50LCB1bnNpZ25lZCBs b25nIHdyaXRlX2NvdW50LCB1bnNpZ25lZCBsb25nICpsYXN0X3JlYWQsIHVuc2lnbmVkIGxvbmcg Kmxhc3Rfd3JpdGUsIGNvbnN0IGNoYXIgKmZ1bmMsIHVuc2lnbmVkIGludCBsaW5lKSkgeyB9IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgdHJhY2VfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlX2VuYWJsZWQodm9pZCkgeyByZXR1cm4gc3Rh dGljX2tleV9mYWxzZSgmX190cmFjZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZS5rZXkpOyB9 CjE0NDc0OiAjIDk4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1k Z3B1X2RtL2FtZGdwdV9kbV90cmFjZS5oIgoxNDQ3NDogIDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS90cmFjZS9kZWZpbmVfdHJh Y2UuaCIgMQoxNDQ3NDogIyAxMDUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3RyYWNlLmgiIDIKMTQ0NzQ6ICMgMzUgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlcy5oIiAyCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvZG1fc2VydmljZXNfdHlwZXMuaCIgMQoxNDQ3NDogIyAzMiAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzX3R5cGVzLmgiCjE0NDc0 OiBzdHJ1Y3QgcHBfc211X2Z1bmNzOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZG1fcHBfY2xvY2tf cmFuZ2UgewoxNDQ3NDogIGludCBtaW5fa2h6OwoxNDQ3NDogIGludCBtYXhfa2h6OwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkbV9wcF9jbG9ja3Nfc3RhdGUgewoxNDQ3NDogIERNX1BQ X0NMT0NLU19TVEFURV9JTlZBTElELAoxNDQ3NDogIERNX1BQX0NMT0NLU19TVEFURV9VTFRSQV9M T1csCjE0NDc0OiAgRE1fUFBfQ0xPQ0tTX1NUQVRFX0xPVywKMTQ0NzQ6ICBETV9QUF9DTE9DS1Nf U1RBVEVfTk9NSU5BTCwKMTQ0NzQ6ICBETV9QUF9DTE9DS1NfU1RBVEVfUEVSRk9STUFOQ0UsCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERNX1BQX0NMT0NLU19EUE1fU1RBVEVfTEVWRUxfSU5WQUxJ RCA9IERNX1BQX0NMT0NLU19TVEFURV9JTlZBTElELAoxNDQ3NDogIERNX1BQX0NMT0NLU19EUE1f U1RBVEVfTEVWRUxfMCwKMTQ0NzQ6ICBETV9QUF9DTE9DS1NfRFBNX1NUQVRFX0xFVkVMXzEsCjE0 NDc0OiAgRE1fUFBfQ0xPQ0tTX0RQTV9TVEFURV9MRVZFTF8yLAoxNDQ3NDogCjE0NDc0OiAgRE1f UFBfQ0xPQ0tTX0RQTV9TVEFURV9MRVZFTF8zLAoxNDQ3NDogIERNX1BQX0NMT0NLU19EUE1fU1RB VEVfTEVWRUxfNCwKMTQ0NzQ6ICBETV9QUF9DTE9DS1NfRFBNX1NUQVRFX0xFVkVMXzUsCjE0NDc0 OiAgRE1fUFBfQ0xPQ0tTX0RQTV9TVEFURV9MRVZFTF82LAoxNDQ3NDogIERNX1BQX0NMT0NLU19E UE1fU1RBVEVfTEVWRUxfNywKMTQ0NzQ6IAoxNDQ3NDogIERNX1BQX0NMT0NLU19NQVhfU1RBVEVT CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZG1fcHBfZ3B1X2Nsb2NrX3JhbmdlIHsK MTQ0NzQ6ICBlbnVtIGRtX3BwX2Nsb2Nrc19zdGF0ZSBjbG9ja19zdGF0ZTsKMTQ0NzQ6ICBzdHJ1 Y3QgZG1fcHBfY2xvY2tfcmFuZ2Ugc2NsazsKMTQ0NzQ6ICBzdHJ1Y3QgZG1fcHBfY2xvY2tfcmFu Z2UgbWNsazsKMTQ0NzQ6ICBzdHJ1Y3QgZG1fcHBfY2xvY2tfcmFuZ2UgZWNsazsKMTQ0NzQ6ICBz dHJ1Y3QgZG1fcHBfY2xvY2tfcmFuZ2UgZGNsazsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVu dW0gZG1fcHBfY2xvY2tfdHlwZSB7CjE0NDc0OiAgRE1fUFBfQ0xPQ0tfVFlQRV9ESVNQTEFZX0NM SyA9IDEsCjE0NDc0OiAgRE1fUFBfQ0xPQ0tfVFlQRV9FTkdJTkVfQ0xLLAoxNDQ3NDogIERNX1BQ X0NMT0NLX1RZUEVfTUVNT1JZX0NMSywKMTQ0NzQ6ICBETV9QUF9DTE9DS19UWVBFX0RDRkNMSywK MTQ0NzQ6ICBETV9QUF9DTE9DS19UWVBFX0RDRUZDTEssCjE0NDc0OiAgRE1fUFBfQ0xPQ0tfVFlQ RV9TT0NDTEssCjE0NDc0OiAgRE1fUFBfQ0xPQ0tfVFlQRV9QSVhFTENMSywKMTQ0NzQ6ICBETV9Q UF9DTE9DS19UWVBFX0RJU1BMQVlQSFlDTEssCjE0NDc0OiAgRE1fUFBfQ0xPQ0tfVFlQRV9EUFBD TEssCjE0NDc0OiAgRE1fUFBfQ0xPQ0tfVFlQRV9GQ0xLLAoxNDQ3NDogfTsKMTQ0NzQ6ICMgOTcg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlc190 eXBlcy5oIgoxNDQ3NDogc3RydWN0IGRtX3BwX2Nsb2NrX2xldmVscyB7CjE0NDc0OiAgdWludDMy X3QgbnVtX2xldmVsczsKMTQ0NzQ6ICB1aW50MzJfdCBjbG9ja3NfaW5fa2h6WzE2XTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkbV9wcF9jbG9ja193aXRoX2xhdGVuY3kgewoxNDQ3 NDogIHVpbnQzMl90IGNsb2Nrc19pbl9raHo7CjE0NDc0OiAgdWludDMyX3QgbGF0ZW5jeV9pbl91 czsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkbV9wcF9jbG9ja19sZXZlbHNfd2l0 aF9sYXRlbmN5IHsKMTQ0NzQ6ICB1aW50MzJfdCBudW1fbGV2ZWxzOwoxNDQ3NDogIHN0cnVjdCBk bV9wcF9jbG9ja193aXRoX2xhdGVuY3kgZGF0YVsxNl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZG1fcHBfY2xvY2tfd2l0aF92b2x0YWdlIHsKMTQ0NzQ6ICB1aW50MzJfdCBjbG9j a3NfaW5fa2h6OwoxNDQ3NDogIHVpbnQzMl90IHZvbHRhZ2VfaW5fbXY7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZG1fcHBfY2xvY2tfbGV2ZWxzX3dpdGhfdm9sdGFnZSB7CjE0NDc0 OiAgdWludDMyX3QgbnVtX2xldmVsczsKMTQ0NzQ6ICBzdHJ1Y3QgZG1fcHBfY2xvY2tfd2l0aF92 b2x0YWdlIGRhdGFbMTZdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRtX3BwX3Np bmdsZV9kaXNwX2NvbmZpZyB7CjE0NDc0OiAgZW51bSBzaWduYWxfdHlwZSBzaWduYWw7CjE0NDc0 OiAgdWludDhfdCB0cmFuc21pdHRlcjsKMTQ0NzQ6ICB1aW50OF90IGRkaV9jaGFubmVsX21hcHBp bmc7CjE0NDc0OiAgdWludDhfdCBwaXBlX2lkeDsKMTQ0NzQ6ICB1aW50MzJfdCBzcmNfaGVpZ2h0 OwoxNDQ3NDogIHVpbnQzMl90IHNyY193aWR0aDsKMTQ0NzQ6ICB1aW50MzJfdCB2X3JlZnJlc2g7 CjE0NDc0OiAgdWludDMyX3Qgc3ltX2Nsb2NrOwoxNDQ3NDogIHN0cnVjdCBkY19saW5rX3NldHRp bmdzIGxpbmtfc2V0dGluZ3M7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogZW51bSBkbV9wcF93bV9zZXRfaWQgewoxNDQ3NDogIFdNX1NFVF9BID0gMCwKMTQ0NzQ6ICBX TV9TRVRfQiwKMTQ0NzQ6ICBXTV9TRVRfQywKMTQ0NzQ6ICBXTV9TRVRfRCwKMTQ0NzQ6ICBXTV9T RVRfSU5WQUxJRCA9IDB4ZmZmZiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkbV9w cF9jbG9ja19yYW5nZV9mb3Jfd21fc2V0IHsKMTQ0NzQ6ICBlbnVtIGRtX3BwX3dtX3NldF9pZCB3 bV9zZXRfaWQ7CjE0NDc0OiAgdWludDMyX3Qgd21fbWluX2VuZ19jbGtfaW5fa2h6OwoxNDQ3NDog IHVpbnQzMl90IHdtX21heF9lbmdfY2xrX2luX2toejsKMTQ0NzQ6ICB1aW50MzJfdCB3bV9taW5f bWVtX2Nsa19pbl9raHo7CjE0NDc0OiAgdWludDMyX3Qgd21fbWF4X21lbV9jbGtfaW5fa2h6Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRtX3BwX3dtX3NldHNfd2l0aF9jbG9ja19y YW5nZXMgewoxNDQ3NDogIHVpbnQzMl90IG51bV93bV9zZXRzOwoxNDQ3NDogIHN0cnVjdCBkbV9w cF9jbG9ja19yYW5nZV9mb3Jfd21fc2V0IHdtX2Nsa19yYW5nZXNbNF07CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZG1fcHBfY2xvY2tfcmFuZ2VfZm9yX2RtaWZfd21fc2V0X3NvYzE1 IHsKMTQ0NzQ6ICBlbnVtIGRtX3BwX3dtX3NldF9pZCB3bV9zZXRfaWQ7CjE0NDc0OiAgdWludDMy X3Qgd21fbWluX2RjZmNsa19jbGtfaW5fa2h6OwoxNDQ3NDogIHVpbnQzMl90IHdtX21heF9kY2Zj bGtfY2xrX2luX2toejsKMTQ0NzQ6ICB1aW50MzJfdCB3bV9taW5fbWVtX2Nsa19pbl9raHo7CjE0 NDc0OiAgdWludDMyX3Qgd21fbWF4X21lbV9jbGtfaW5fa2h6OwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGRtX3BwX2Nsb2NrX3JhbmdlX2Zvcl9tY2lmX3dtX3NldF9zb2MxNSB7CjE0 NDc0OiAgZW51bSBkbV9wcF93bV9zZXRfaWQgd21fc2V0X2lkOwoxNDQ3NDogIHVpbnQzMl90IHdt X21pbl9zb2NjbGtfY2xrX2luX2toejsKMTQ0NzQ6ICB1aW50MzJfdCB3bV9tYXhfc29jY2xrX2Ns a19pbl9raHo7CjE0NDc0OiAgdWludDMyX3Qgd21fbWluX21lbV9jbGtfaW5fa2h6OwoxNDQ3NDog IHVpbnQzMl90IHdtX21heF9tZW1fY2xrX2luX2toejsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkbV9wcF93bV9zZXRzX3dpdGhfY2xvY2tfcmFuZ2VzX3NvYzE1IHsKMTQ0NzQ6ICB1 aW50MzJfdCBudW1fd21fZG1pZl9zZXRzOwoxNDQ3NDogIHVpbnQzMl90IG51bV93bV9tY2lmX3Nl dHM7CjE0NDc0OiAgc3RydWN0IGRtX3BwX2Nsb2NrX3JhbmdlX2Zvcl9kbWlmX3dtX3NldF9zb2Mx NQoxNDQ3NDogICB3bV9kbWlmX2Nsb2Nrc19yYW5nZXNbNF07CjE0NDc0OiAgc3RydWN0IGRtX3Bw X2Nsb2NrX3JhbmdlX2Zvcl9tY2lmX3dtX3NldF9zb2MxNQoxNDQ3NDogICB3bV9tY2lmX2Nsb2Nr c19yYW5nZXNbNF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGRtX3BwX2Rpc3BsYXlfY29uZmlndXJhdGlvbiB7CjE0NDc0OiAgYm9vbCBuYl9wc3RhdGVf c3dpdGNoX2Rpc2FibGU7CjE0NDc0OiAgYm9vbCBjcHVfY2M2X2Rpc2FibGU7CjE0NDc0OiAgYm9v bCBjcHVfcHN0YXRlX2Rpc2FibGU7CjE0NDc0OiAgdWludDMyX3QgY3B1X3BzdGF0ZV9zZXBhcmF0 aW9uX3RpbWU7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBtaW5fbWVtb3J5X2Nsb2NrX2toejsK MTQ0NzQ6ICB1aW50MzJfdCBtaW5fZW5naW5lX2Nsb2NrX2toejsKMTQ0NzQ6ICB1aW50MzJfdCBt aW5fZW5naW5lX2Nsb2NrX2RlZXBfc2xlZXBfa2h6OwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3Qg YXZhaWxfbWNsa19zd2l0Y2hfdGltZV91czsKMTQ0NzQ6ICB1aW50MzJfdCBhdmFpbF9tY2xrX3N3 aXRjaF90aW1lX2luX2Rpc3BfYWN0aXZlX3VzOwoxNDQ3NDogIHVpbnQzMl90IG1pbl9kY2ZjbG9j a19raHo7CjE0NDc0OiAgdWludDMyX3QgbWluX2RjZmNfZGVlcF9zbGVlcF9jbG9ja19raHo7CjE0 NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBkaXNwX2Nsa19raHo7CjE0NDc0OiAKMTQ0NzQ6ICBib29s IGFsbF9kaXNwbGF5c19pbl9zeW5jOwoxNDQ3NDogCjE0NDc0OiAgdWludDhfdCBkaXNwbGF5X2Nv dW50OwoxNDQ3NDogIHN0cnVjdCBkbV9wcF9zaW5nbGVfZGlzcF9jb25maWcgZGlzcF9jb25maWdz WzZdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQ4X3QgY3J0Y19pbmRleDsK MTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGxpbmVfdGltZV9pbl91czsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBkbV9ibF9kYXRhX3BvaW50IHsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50 OF90IGx1bWluYW5jZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBz aWduYWxfbGV2ZWw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGRtX2FjcGlfYXRpZl9iYWNrbGlnaHRfY2FwcyB7CjE0NDc0OiAgdWludDE2X3Qgc2l6ZTsK MTQ0NzQ6ICB1aW50MTZfdCBmbGFnczsKMTQ0NzQ6ICB1aW50OF90IGVycm9yX2NvZGU7CjE0NDc0 OiAgdWludDhfdCBhY19sZXZlbF9wZXJjZW50YWdlOwoxNDQ3NDogIHVpbnQ4X3QgZGNfbGV2ZWxf cGVyY2VudGFnZTsKMTQ0NzQ6ICB1aW50OF90IG1pbl9pbnB1dF9zaWduYWw7CjE0NDc0OiAgdWlu dDhfdCBtYXhfaW5wdXRfc2lnbmFsOwoxNDQ3NDogIHVpbnQ4X3QgbnVtX2RhdGFfcG9pbnRzOwox NDQ3NDogIHN0cnVjdCBkbV9ibF9kYXRhX3BvaW50IGRhdGFfcG9pbnRzWzk5XTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZG1fYWNwaV9kaXNwbGF5X3R5cGUgewoxNDQ3NDogIEFjcGlE aXNwbGF5VHlwZV9MQ0QxID0gMCwKMTQ0NzQ6ICBBY3BpRGlzcGxheVR5cGVfQ1JUMSA9IDEsCjE0 NDc0OiAgQWNwaURpc3BsYXlUeXBlX0RGUDEgPSAzLAoxNDQ3NDogIEFjcGlEaXNwbGF5VHlwZV9D UlQyID0gNCwKMTQ0NzQ6ICBBY3BpRGlzcGxheVR5cGVfTENEMiA9IDUsCjE0NDc0OiAgQWNwaURp c3BsYXlUeXBlX0RGUDIgPSA3LAoxNDQ3NDogIEFjcGlEaXNwbGF5VHlwZV9ERlAzID0gOSwKMTQ0 NzQ6ICBBY3BpRGlzcGxheVR5cGVfREZQNCA9IDEwLAoxNDQ3NDogIEFjcGlEaXNwbGF5VHlwZV9E RlA1ID0gMTEsCjE0NDc0OiAgQWNwaURpc3BsYXlUeXBlX0RGUDYgPSAxMgoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGRtX3BwX3Bvd2VyX2xldmVsX2NoYW5nZV9yZXF1ZXN0IHsKMTQ0 NzQ6ICBlbnVtIGRtX3BwX2Nsb2Nrc19zdGF0ZSBwb3dlcl9sZXZlbDsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBkbV9wcF9jbG9ja19mb3Jfdm9sdGFnZV9yZXEgewoxNDQ3NDogIGVu dW0gZG1fcHBfY2xvY2tfdHlwZSBjbGtfdHlwZTsKMTQ0NzQ6ICB1aW50MzJfdCBjbG9ja3NfaW5f a2h6OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRtX3BwX3N0YXRpY19jbG9ja19p bmZvIHsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfc2Nsa19raHo7CjE0NDc0OiAgdWludDMyX3QgbWF4 X21jbGtfa2h6OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRtX3BwX2Nsb2Nrc19zdGF0 ZSBtYXhfY2xvY2tzX3N0YXRlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGR0bl9t aW5fY2xrX2luZm8gewoxNDQ3NDogIHVpbnQzMl90IGRpc3BfY2xrX2toejsKMTQ0NzQ6ICB1aW50 MzJfdCBtaW5fZW5naW5lX2Nsb2NrX2toejsKMTQ0NzQ6ICB1aW50MzJfdCBtaW5fbWVtb3J5X2Ns b2NrX2toejsKMTQ0NzQ6IH07CjE0NDc0OiAjIDM4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9sb2dnZXJfaW50ZXJmYWNlLmgi IDEKMTQ0NzQ6ICMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9p bmNsdWRlL2xvZ2dlcl9pbnRlcmZhY2UuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvbG9nZ2VyX3R5cGVzLmgiIDEKMTQ0NzQ6ICMg MzAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2xvZ2dl cl9pbnRlcmZhY2UuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfY29udGV4dDsKMTQ0NzQ6 IHN0cnVjdCBkY19saW5rOwoxNDQ3NDogc3RydWN0IGRjX3N1cmZhY2VfdXBkYXRlOwoxNDQ3NDog c3RydWN0IHJlc291cmNlX2NvbnRleHQ7CjE0NDc0OiBzdHJ1Y3QgZGNfc3RhdGU7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZv aWQgZGNfY29ubl9sb2dfaGV4X2xpbnV4KGNvbnN0IHVpbnQ4X3QgKmhleF9kYXRhLCBpbnQgaGV4 X2RhdGFfY291bnQpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIHByZV9zdXJmYWNlX3RyYWNlKAoxNDQ3 NDogICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgZGNfcGxhbmVfc3RhdGUg KmNvbnN0ICpwbGFuZV9zdGF0ZXMsCjE0NDc0OiAgIGludCBzdXJmYWNlX2NvdW50KTsKMTQ0NzQ6 IAoxNDQ3NDogdm9pZCB1cGRhdGVfc3VyZmFjZV90cmFjZSgKMTQ0NzQ6ICAgc3RydWN0IGRjICpk YywKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX3N1cmZhY2VfdXBkYXRlICp1cGRhdGVzLAoxNDQ3 NDogICBpbnQgc3VyZmFjZV9jb3VudCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgcG9zdF9zdXJmYWNl X3RyYWNlKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGNvbnRleHRfdGltaW5n X3RyYWNlKAoxNDQ3NDogICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgcmVzb3VyY2Vf Y29udGV4dCAqcmVzX2N0eCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgY29udGV4dF9jbG9ja190cmFj ZSgKMTQ0NzQ6ICAgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0YXRlICpjb250 ZXh0KTsKMTQ0NzQ6ICMgMzkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9kbV9zZXJ2aWNlcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBkbXViX3NydjsKMTQ0NzQ6IHN0cnVjdCBkY19kbXViX3NydjsKMTQ0NzQ6IAox NDQ3NDogaXJxX2hhbmRsZXJfaWR4IGRtX3JlZ2lzdGVyX2ludGVycnVwdCgKMTQ0NzQ6ICBzdHJ1 Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogIHN0cnVjdCBkY19pbnRlcnJ1cHRfcGFyYW1zICpp bnRfcGFyYW1zLAoxNDQ3NDogIGludGVycnVwdF9oYW5kbGVyIGloLAoxNDQ3NDogIHZvaWQgKmhh bmRsZXJfYXJncyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHVpbnQzMl90IGRtX3JlYWRfcmVnX2Z1bmMoCjE0NDc0OiAgY29u c3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICB1aW50MzJfdCBhZGRyZXNzLAoxNDQ3 NDogIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSk7CjE0NDc0OiAjIDczICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZG1f d3JpdGVfcmVnX2Z1bmMoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0 NzQ6ICB1aW50MzJfdCBhZGRyZXNzLAoxNDQ3NDogIHVpbnQzMl90IHZhbHVlLAoxNDQ3NDogIGNv bnN0IGNoYXIgKmZ1bmNfbmFtZSkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAoKChzdHJ1Y3QgY2dzX2RldmljZSAqKWN0eC0+ Y2dzX2RldmljZSktPm9wcy0+d3JpdGVfcmVnaXN0ZXIoY3R4LT5jZ3NfZGV2aWNlLCBhZGRyZXNz LHZhbHVlKSk7CjE0NDc0OiAgdHJhY2VfYW1kZ3B1X2RjX3dyZWcoJmN0eC0+cGVyZl90cmFjZS0+ d3JpdGVfY291bnQsIGFkZHJlc3MsIHZhbHVlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdWlu dDMyX3QgZG1fcmVhZF9pbmRleF9yZWcoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NvbnRleHQg KmN0eCwKMTQ0NzQ6ICBlbnVtIGNnc19pbmRfcmVnIGFkZHJfc3BhY2UsCjE0NDc0OiAgdWludDMy X3QgaW5kZXgpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgoKHN0cnVjdCBjZ3NfZGV2aWNlICop Y3R4LT5jZ3NfZGV2aWNlKS0+b3BzLT5yZWFkX2luZF9yZWdpc3RlcihjdHgtPmNnc19kZXZpY2Us IGFkZHJfc3BhY2UsaW5kZXgpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkbV93cml0 ZV9pbmRleF9yZWcoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6 ICBlbnVtIGNnc19pbmRfcmVnIGFkZHJfc3BhY2UsCjE0NDc0OiAgdWludDMyX3QgaW5kZXgsCjE0 NDc0OiAgdWludDMyX3QgdmFsdWUpCjE0NDc0OiB7CjE0NDc0OiAgKCgoc3RydWN0IGNnc19kZXZp Y2UgKiljdHgtPmNnc19kZXZpY2UpLT5vcHMtPndyaXRlX2luZF9yZWdpc3RlcihjdHgtPmNnc19k ZXZpY2UsIGFkZHJfc3BhY2UsaW5kZXgsdmFsdWUpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dWludDMyX3QgZ2V0X3JlZ19maWVsZF92YWx1ZV9leCgKMTQ0NzQ6ICB1aW50MzJfdCByZWdfdmFs dWUsCjE0NDc0OiAgdWludDMyX3QgbWFzaywKMTQ0NzQ6ICB1aW50OF90IHNoaWZ0KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAobWFzayAmIHJlZ192YWx1ZSkgPj4gc2hpZnQ7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHVpbnQzMl90IHNldF9yZWdfZmllbGRfdmFsdWVfZXgoCjE0NDc0OiAgdWludDMyX3QgcmVn X3ZhbHVlLAoxNDQ3NDogIHVpbnQzMl90IHZhbHVlLAoxNDQ3NDogIHVpbnQzMl90IG1hc2ssCjE0 NDc0OiAgdWludDhfdCBzaGlmdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyBpbnQgX19yZXRfd2Fybl9v biA9ICEhKCEobWFzayAhPSAwKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5f b24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4 MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQi ICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAi LmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVj MSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6 ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlcy5oIiksICJpIiAo MTI2KSwgImkiICgoMSA8PCAwKXwoKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVn X2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNo c2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBv cHNlY3Rpb25cblx0IiA6IDogImkiICg0NykpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9l eHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6ICByZXR1cm4gKHJlZ192YWx1 ZSAmIH5tYXNrKSB8IChtYXNrICYgKHZhbHVlIDw8IHNoaWZ0KSk7CjE0NDc0OiB9CjE0NDc0OiAj IDEzNyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZp Y2VzLmgiCjE0NDc0OiB1aW50MzJfdCBnZW5lcmljX3JlZ19zZXRfZXgoY29uc3Qgc3RydWN0IGRj X2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgdWludDMyX3QgYWRkciwgdWludDMyX3QgcmVnX3ZhbCwg aW50IG4sCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQxLCB1aW50MzJfdCBtYXNrMSwgdWludDMyX3Qg ZmllbGRfdmFsdWUxLCAuLi4pOwoxNDQ3NDogCjE0NDc0OiB1aW50MzJfdCBnZW5lcmljX3JlZ191 cGRhdGVfZXgoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgdWludDMyX3Qg YWRkciwgaW50IG4sCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQxLCB1aW50MzJfdCBtYXNrMSwgdWlu dDMyX3QgZmllbGRfdmFsdWUxLCAuLi4pOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfZG11Yl9z cnYgKmRjX2RtdWJfc3J2X2NyZWF0ZShzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZG11Yl9zcnYgKmRt dWIpOwoxNDQ3NDogdm9pZCBkY19kbXViX3Nydl9kZXN0cm95KHN0cnVjdCBkY19kbXViX3NydiAq KmRtdWJfc3J2KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCByZWdfc2VxdWVuY2Vfc3RhcnRfZ2F0aGVy KGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgpOwoxNDQ3NDogdm9pZCByZWdfc2VxdWVuY2Vf c3RhcnRfZXhlY3V0ZShjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsKMTQ0NzQ6IHZvaWQg cmVnX3NlcXVlbmNlX3dhaXRfZG9uZShjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsKMTQ0 NzQ6ICMgMTU5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1f c2VydmljZXMuaCIKMTQ0NzQ6IHZvaWQgZ2VuZXJpY19yZWdfd2FpdChjb25zdCBzdHJ1Y3QgZGNf Y29udGV4dCAqY3R4LAoxNDQ3NDogIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IG1hc2ssIHVpbnQz Ml90IHNoaWZ0LCB1aW50MzJfdCBjb25kaXRpb25fdmFsdWUsCjE0NDc0OiAgdW5zaWduZWQgaW50 IGRlbGF5X2JldHdlZW5fcG9sbF91cywgdW5zaWduZWQgaW50IHRpbWVfb3V0X251bV90cmllcywK MTQ0NzQ6ICBjb25zdCBjaGFyICpmdW5jX25hbWUsIGludCBsaW5lKTsKMTQ0NzQ6IAoxNDQ3NDog dW5zaWduZWQgaW50IHNucHJpbnRmX2NvdW50KGNoYXIgKnBCdWYsIHVuc2lnbmVkIGludCBidWZT aXplLCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiAjIDIwOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzLmgiCjE0NDc0OiBib29sIGRtX3BwX2dl dF9jbG9ja19sZXZlbHNfYnlfdHlwZSgKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAq Y3R4LAoxNDQ3NDogIGVudW0gZG1fcHBfY2xvY2tfdHlwZSBjbGtfdHlwZSwKMTQ0NzQ6ICBzdHJ1 Y3QgZG1fcHBfY2xvY2tfbGV2ZWxzICpjbGtfbGV2ZWxfaW5mbyk7CjE0NDc0OiAKMTQ0NzQ6IGJv b2wgZG1fcHBfZ2V0X2Nsb2NrX2xldmVsc19ieV90eXBlX3dpdGhfbGF0ZW5jeSgKMTQ0NzQ6ICBj b25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogIGVudW0gZG1fcHBfY2xvY2tfdHlw ZSBjbGtfdHlwZSwKMTQ0NzQ6ICBzdHJ1Y3QgZG1fcHBfY2xvY2tfbGV2ZWxzX3dpdGhfbGF0ZW5j eSAqY2xrX2xldmVsX2luZm8pOwoxNDQ3NDogCjE0NDc0OiBib29sIGRtX3BwX2dldF9jbG9ja19s ZXZlbHNfYnlfdHlwZV93aXRoX3ZvbHRhZ2UoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NvbnRl eHQgKmN0eCwKMTQ0NzQ6ICBlbnVtIGRtX3BwX2Nsb2NrX3R5cGUgY2xrX3R5cGUsCjE0NDc0OiAg c3RydWN0IGRtX3BwX2Nsb2NrX2xldmVsc193aXRoX3ZvbHRhZ2UgKmNsa19sZXZlbF9pbmZvKTsK MTQ0NzQ6IAoxNDQ3NDogYm9vbCBkbV9wcF9ub3RpZnlfd21fY2xvY2tfY2hhbmdlcygKMTQ0NzQ6 ICBjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogIHN0cnVjdCBkbV9wcF93bV9z ZXRzX3dpdGhfY2xvY2tfcmFuZ2VzICp3bV93aXRoX2Nsb2NrX3Jhbmdlcyk7CjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgZG1fcHBfZ2V0X2Z1bmNzKHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAg IHN0cnVjdCBwcF9zbXVfZnVuY3MgKmZ1bmNzKTsKMTQ0NzQ6ICMgMjQxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIKMTQ0NzQ6IGJvb2wg ZG1fcHBfYXBwbHlfZGlzcGxheV9yZXF1aXJlbWVudHMoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRj X2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZG1fcHBfZGlzcGxheV9jb25maWd1 cmF0aW9uICpwcF9kaXNwbGF5X2NmZyk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZG1fcHBfYXBwbHlf cG93ZXJfbGV2ZWxfY2hhbmdlX3JlcXVlc3QoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NvbnRl eHQgKmN0eCwKMTQ0NzQ6ICBzdHJ1Y3QgZG1fcHBfcG93ZXJfbGV2ZWxfY2hhbmdlX3JlcXVlc3Qg KmxldmVsX2NoYW5nZV9yZXEpOwoxNDQ3NDogCjE0NDc0OiBib29sIGRtX3BwX2FwcGx5X2Nsb2Nr X2Zvcl92b2x0YWdlX3JlcXVlc3QoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0 eCwKMTQ0NzQ6ICBzdHJ1Y3QgZG1fcHBfY2xvY2tfZm9yX3ZvbHRhZ2VfcmVxICpjbG9ja19mb3Jf dm9sdGFnZV9yZXEpOwoxNDQ3NDogCjE0NDc0OiBib29sIGRtX3BwX2dldF9zdGF0aWNfY2xvY2tz KAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAgc3RydWN0IGRt X3BwX3N0YXRpY19jbG9ja19pbmZvICpzdGF0aWNfY2xrX2luZm8pOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBlcnNpc3RlbnRfZGF0YV9mbGFnIHsKMTQ0NzQ6ICBib29s IHNhdmVfcGVyX2xpbms7CjE0NDc0OiAgYm9vbCBzYXZlX3Blcl9lZGlkOwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgMjkxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1f c2VydmljZXMuaCIKMTQ0NzQ6IGJvb2wgZG1fd3JpdGVfcGVyc2lzdGVudF9kYXRhKHN0cnVjdCBk Y19jb250ZXh0ICpjdHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19zaW5rICpzaW5rLAoxNDQ3 NDogICBjb25zdCBjaGFyICptb2R1bGVfbmFtZSwKMTQ0NzQ6ICAgY29uc3QgY2hhciAqa2V5X25h bWUsCjE0NDc0OiAgIHZvaWQgKnBhcmFtcywKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHNpemUsCjE0 NDc0OiAgIHN0cnVjdCBwZXJzaXN0ZW50X2RhdGFfZmxhZyAqZmxhZyk7CjE0NDc0OiAjIDMyNSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzLmgi CjE0NDc0OiBib29sIGRtX3JlYWRfcGVyc2lzdGVudF9kYXRhKHN0cnVjdCBkY19jb250ZXh0ICpj dHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19zaW5rICpzaW5rLAoxNDQ3NDogICBjb25zdCBj aGFyICptb2R1bGVfbmFtZSwKMTQ0NzQ6ICAgY29uc3QgY2hhciAqa2V5X25hbWUsCjE0NDc0OiAg IHZvaWQgKnBhcmFtcywKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHNpemUsCjE0NDc0OiAgIHN0cnVj dCBwZXJzaXN0ZW50X2RhdGFfZmxhZyAqZmxhZyk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZG1fcXVl cnlfZXh0ZW5kZWRfYnJpZ2h0bmVzc19jYXBzCjE0NDc0OiAgKHN0cnVjdCBkY19jb250ZXh0ICpj dHgsIGVudW0gZG1fYWNwaV9kaXNwbGF5X3R5cGUgZGlzcGxheSwKMTQ0NzQ6ICAgIHN0cnVjdCBk bV9hY3BpX2F0aWZfYmFja2xpZ2h0X2NhcHMgKnBDYXBzKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBk bV9kbWN1X3NldF9waXBlKHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCBjb250 cm9sbGVyX2lkKTsKMTQ0NzQ6ICMgMzQ3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgbG9uZyBkbV9n ZXRfdGltZXN0YW1wKHN0cnVjdCBkY19jb250ZXh0ICpjdHgpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGt0aW1lX2dldF9yYXdfbnMoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdW5zaWduZWQg bG9uZyBsb25nIGRtX2dldF9lbGFwc2VfdGltZV9pbl9ucyhzdHJ1Y3QgZGNfY29udGV4dCAqY3R4 LAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudF90aW1lX3N0YW1wLAoxNDQ3NDog ICB1bnNpZ25lZCBsb25nIGxvbmcgbGFzdF90aW1lX3N0YW1wKTsKMTQ0NzQ6ICMgMzcxICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIKMTQ0 NzQ6IHZvaWQgZG1fZHRuX2xvZ19iZWdpbihzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDog IHN0cnVjdCBkY19sb2dfYnVmZmVyX2N0eCAqbG9nX2N0eCk7CjE0NDc0OiB2b2lkIGRtX2R0bl9s b2dfYXBwZW5kX3Yoc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICBzdHJ1Y3QgZGNfbG9n X2J1ZmZlcl9jdHggKmxvZ19jdHgsCjE0NDc0OiAgY29uc3QgY2hhciAqbXNnLCAuLi4pOwoxNDQ3 NDogdm9pZCBkbV9kdG5fbG9nX2VuZChzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogIHN0 cnVjdCBkY19sb2dfYnVmZmVyX2N0eCAqbG9nX2N0eCk7CjE0NDc0OiAjIDMxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9iaW9zX3BhcnNlcl90eXBlcy5o IiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9p bmNsdWRlL3NpZ25hbF90eXBlcy5oIiAxCjE0NDc0OiAjIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9iaW9zX3BhcnNlcl90eXBlcy5oIiAyCjE0NDc0 OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dy cGhfb2JqZWN0X2N0cmxfZGVmcy5oIiAxCjE0NDc0OiAjIDMzICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9iaW9zX3BhcnNlcl90eXBlcy5oIiAyCjE0NDc0 OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dw aW9fdHlwZXMuaCIgMQoxNDQ3NDogIyAzNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2luY2x1ZGUvYmlvc19wYXJzZXJfdHlwZXMuaCIgMgoxNDQ3NDogIyAxICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9saW5rX3NlcnZpY2Vf dHlwZXMuaCIgMQoxNDQ3NDogIyAzNSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2luY2x1ZGUvYmlvc19wYXJzZXJfdHlwZXMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGVudW0gYXNfc2lnbmFsX3R5cGUgewoxNDQ3NDogIEFTX1NJR05BTF9UWVBFX05PTkUgPSAw TCwKMTQ0NzQ6ICBBU19TSUdOQUxfVFlQRV9EVkksCjE0NDc0OiAgQVNfU0lHTkFMX1RZUEVfSERN SSwKMTQ0NzQ6ICBBU19TSUdOQUxfVFlQRV9MVkRTLAoxNDQ3NDogIEFTX1NJR05BTF9UWVBFX0RJ U1BMQVlfUE9SVCwKMTQ0NzQ6ICBBU19TSUdOQUxfVFlQRV9HUFVfUExMLAoxNDQ3NDogIEFTX1NJ R05BTF9UWVBFX1hHTUksCjE0NDc0OiAgQVNfU0lHTkFMX1RZUEVfVU5LTk9XTgoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSBicF9yZXN1bHQgewoxNDQ3NDogIEJQX1JFU1VMVF9PSyA9IDAs CjE0NDc0OiAgQlBfUkVTVUxUX0JBRElOUFVULAoxNDQ3NDogIEJQX1JFU1VMVF9CQURCSU9TVEFC TEUsCjE0NDc0OiAgQlBfUkVTVUxUX1VOU1VQUE9SVEVELAoxNDQ3NDogIEJQX1JFU1VMVF9OT1JF Q09SRCwKMTQ0NzQ6ICBCUF9SRVNVTFRfRkFJTFVSRQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBicF9lbmNvZGVyX2NvbnRyb2xfYWN0aW9uIHsKMTQ0NzQ6IAoxNDQ3NDogIEVOQ09ERVJf Q09OVFJPTF9ESVNBQkxFID0gMCwKMTQ0NzQ6ICBFTkNPREVSX0NPTlRST0xfRU5BQkxFLAoxNDQ3 NDogIEVOQ09ERVJfQ09OVFJPTF9TRVRVUCwKMTQ0NzQ6ICBFTkNPREVSX0NPTlRST0xfSU5JVAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBicF90cmFuc21pdHRlcl9jb250cm9sX2FjdGlv biB7CjE0NDc0OiAKMTQ0NzQ6ICBUUkFOU01JVFRFUl9DT05UUk9MX0RJU0FCTEUgPSAwLAoxNDQ3 NDogIFRSQU5TTUlUVEVSX0NPTlRST0xfRU5BQkxFLAoxNDQ3NDogIFRSQU5TTUlUVEVSX0NPTlRS T0xfQkFDS0xJR0hUX09GRiwKMTQ0NzQ6ICBUUkFOU01JVFRFUl9DT05UUk9MX0JBQ0tMSUdIVF9P TiwKMTQ0NzQ6ICBUUkFOU01JVFRFUl9DT05UUk9MX0JBQ0tMSUdIVF9CUklHSFRORVNTLAoxNDQ3 NDogIFRSQU5TTUlUVEVSX0NPTlRST0xfTENEX1NFVEZfVEVTVF9TVEFSVCwKMTQ0NzQ6ICBUUkFO U01JVFRFUl9DT05UUk9MX0xDRF9TRUxGX1RFU1RfU1RPUCwKMTQ0NzQ6ICBUUkFOU01JVFRFUl9D T05UUk9MX0lOSVQsCjE0NDc0OiAgVFJBTlNNSVRURVJfQ09OVFJPTF9ERUFDVElWQVRFLAoxNDQ3 NDogIFRSQU5TTUlUVEVSX0NPTlRST0xfQUNUSUFWQVRFLAoxNDQ3NDogIFRSQU5TTUlUVEVSX0NP TlRST0xfU0VUVVAsCjE0NDc0OiAgVFJBTlNNSVRURVJfQ09OVFJPTF9TRVRfVk9MVEFHRV9BTkRf UFJFRU1QQVNJUywKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBUUkFOU01JVFRFUl9D T05UUk9MX1BPV0VSX09OLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFRSQU5TTUlU VEVSX0NPTlRST0xfUE9XRVJfT0ZGCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGJwX2V4 dGVybmFsX2VuY29kZXJfY29udHJvbF9hY3Rpb24gewoxNDQ3NDogIEVYVEVSTkFMX0VOQ09ERVJf Q09OVFJPTF9ESVNBQkxFID0gMCwKMTQ0NzQ6ICBFWFRFUk5BTF9FTkNPREVSX0NPTlRST0xfRU5B QkxFID0gMSwKMTQ0NzQ6ICBFWFRFUk5BTF9FTkNPREVSX0NPTlRST0xfSU5JVCA9IDB4NywKMTQ0 NzQ6ICBFWFRFUk5BTF9FTkNPREVSX0NPTlRST0xfU0VUVVAgPSAweGYsCjE0NDc0OiAgRVhURVJO QUxfRU5DT0RFUl9DT05UUk9MX1VOQkxBTksgPSAweDEwLAoxNDQ3NDogIEVYVEVSTkFMX0VOQ09E RVJfQ09OVFJPTF9CTEFOSyA9IDB4MTEsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGJw X3BpcGVfY29udHJvbF9hY3Rpb24gewoxNDQ3NDogIEFTSUNfUElQRV9ESVNBQkxFID0gMCwKMTQ0 NzQ6ICBBU0lDX1BJUEVfRU5BQkxFLAoxNDQ3NDogIEFTSUNfUElQRV9JTklUCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYnBfZW5jb2Rlcl9jb250cm9sIHsKMTQ0NzQ6ICBlbnVtIGJw X2VuY29kZXJfY29udHJvbF9hY3Rpb24gYWN0aW9uOwoxNDQ3NDogIGVudW0gZW5naW5lX2lkIGVu Z2luZV9pZDsKMTQ0NzQ6ICBlbnVtIHRyYW5zbWl0dGVyIHRyYW5zbWl0dGVyOwoxNDQ3NDogIGVu dW0gc2lnbmFsX3R5cGUgc2lnbmFsOwoxNDQ3NDogIGVudW0gZGNfbGFuZV9jb3VudCBsYW5lc19u dW1iZXI7CjE0NDc0OiAgZW51bSBkY19jb2xvcl9kZXB0aCBjb2xvcl9kZXB0aDsKMTQ0NzQ6ICBi b29sIGVuYWJsZV9kcF9hdWRpbzsKMTQ0NzQ6ICB1aW50MzJfdCBwaXhlbF9jbG9jazsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBicF9leHRlcm5hbF9lbmNvZGVyX2NvbnRyb2wgewox NDQ3NDogIGVudW0gYnBfZXh0ZXJuYWxfZW5jb2Rlcl9jb250cm9sX2FjdGlvbiBhY3Rpb247CjE0 NDc0OiAgZW51bSBlbmdpbmVfaWQgZW5naW5lX2lkOwoxNDQ3NDogIGVudW0gZGNfbGlua19yYXRl IGxpbmtfcmF0ZTsKMTQ0NzQ6ICBlbnVtIGRjX2xhbmVfY291bnQgbGFuZXNfbnVtYmVyOwoxNDQ3 NDogIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsOwoxNDQ3NDogIGVudW0gZGNfY29sb3JfZGVwdGgg Y29sb3JfZGVwdGg7CjE0NDc0OiAgYm9vbCBjb2hlcmVudDsKMTQ0NzQ6ICBzdHJ1Y3QgZ3JhcGhp Y3Nfb2JqZWN0X2lkIGVuY29kZXJfaWQ7CjE0NDc0OiAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9p ZCBjb25uZWN0b3Jfb2JqX2lkOwoxNDQ3NDogIHVpbnQzMl90IHBpeGVsX2Nsb2NrOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJwX2NydGNfc291cmNlX3NlbGVjdCB7CjE0NDc0OiAg ZW51bSBlbmdpbmVfaWQgZW5naW5lX2lkOwoxNDQ3NDogIGVudW0gY29udHJvbGxlcl9pZCBjb250 cm9sbGVyX2lkOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBzaWduYWxfdHlwZSBzaWduYWw7CjE0NDc0 OiAKMTQ0NzQ6ICBlbnVtIHNpZ25hbF90eXBlIHNpbmtfc2lnbmFsOwoxNDQ3NDogIGVudW0gZGlz cGxheV9vdXRwdXRfYml0X2RlcHRoIGRpc3BsYXlfb3V0cHV0X2JpdF9kZXB0aDsKMTQ0NzQ6ICBi b29sIGVuYWJsZV9kcF9hdWRpbzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBicF90 cmFuc21pdHRlcl9jb250cm9sIHsKMTQ0NzQ6ICBlbnVtIGJwX3RyYW5zbWl0dGVyX2NvbnRyb2xf YWN0aW9uIGFjdGlvbjsKMTQ0NzQ6ICBlbnVtIGVuZ2luZV9pZCBlbmdpbmVfaWQ7CjE0NDc0OiAg ZW51bSB0cmFuc21pdHRlciB0cmFuc21pdHRlcjsKMTQ0NzQ6ICBlbnVtIGRjX2xhbmVfY291bnQg bGFuZXNfbnVtYmVyOwoxNDQ3NDogIGVudW0gY2xvY2tfc291cmNlX2lkIHBsbF9pZDsKMTQ0NzQ6 ICBlbnVtIHNpZ25hbF90eXBlIHNpZ25hbDsKMTQ0NzQ6ICBlbnVtIGRjX2NvbG9yX2RlcHRoIGNv bG9yX2RlcHRoOwoxNDQ3NDogIGVudW0gaHBkX3NvdXJjZV9pZCBocGRfc2VsOwoxNDQ3NDogIHN0 cnVjdCBncmFwaGljc19vYmplY3RfaWQgY29ubmVjdG9yX29ial9pZDsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBwaXhlbF9jbG9jazsKMTQ0NzQ6ICB1aW50MzJfdCBs YW5lX3NlbGVjdDsKMTQ0NzQ6ICB1aW50MzJfdCBsYW5lX3NldHRpbmdzOwoxNDQ3NDogIGJvb2wg Y29oZXJlbnQ7CjE0NDc0OiAgYm9vbCBtdWx0aV9wYXRoOwoxNDQ3NDogIGJvb2wgc2luZ2xlX3Bs bF9tb2RlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJwX2h3X2NydGNfdGltaW5n X3BhcmFtZXRlcnMgewoxNDQ3NDogIGVudW0gY29udHJvbGxlcl9pZCBjb250cm9sbGVyX2lkOwox NDQ3NDogCjE0NDc0OiAgdWludDMyX3QgaF90b3RhbDsKMTQ0NzQ6ICB1aW50MzJfdCBoX2FkZHJl c3NhYmxlOwoxNDQ3NDogIHVpbnQzMl90IGhfb3ZlcnNjYW5fbGVmdDsKMTQ0NzQ6ICB1aW50MzJf dCBoX292ZXJzY2FuX3JpZ2h0OwoxNDQ3NDogIHVpbnQzMl90IGhfc3luY19zdGFydDsKMTQ0NzQ6 ICB1aW50MzJfdCBoX3N5bmNfd2lkdGg7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90 IHZfdG90YWw7CjE0NDc0OiAgdWludDMyX3Qgdl9hZGRyZXNzYWJsZTsKMTQ0NzQ6ICB1aW50MzJf dCB2X292ZXJzY2FuX3RvcDsKMTQ0NzQ6ICB1aW50MzJfdCB2X292ZXJzY2FuX2JvdHRvbTsKMTQ0 NzQ6ICB1aW50MzJfdCB2X3N5bmNfc3RhcnQ7CjE0NDc0OiAgdWludDMyX3Qgdl9zeW5jX3dpZHRo OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHRpbWluZ19mbGFncyB7CjE0NDc0OiAgIHVpbnQzMl90 IElOVEVSTEFDRToxOwoxNDQ3NDogICB1aW50MzJfdCBQSVhFTF9SRVBFVElUSU9OOjQ7CjE0NDc0 OiAgIHVpbnQzMl90IEhTWU5DX1BPU0lUSVZFX1BPTEFSSVRZOjE7CjE0NDc0OiAgIHVpbnQzMl90 IFZTWU5DX1BPU0lUSVZFX1BPTEFSSVRZOjE7CjE0NDc0OiAgIHVpbnQzMl90IEhPUlpfQ09VTlRf QllfVFdPOjE7CjE0NDc0OiAgfSBmbGFnczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBicF9hZGp1c3RfcGl4ZWxfY2xvY2tfcGFyYW1ldGVycyB7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVt IHNpZ25hbF90eXBlIHNpZ25hbF90eXBlOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGdyYXBoaWNz X29iamVjdF9pZCBlbmNvZGVyX29iamVjdF9pZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICB1aW50MzJfdCBwaXhlbF9jbG9jazsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGFkanVz dGVkX3BpeGVsX2Nsb2NrOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCByZWZlcmVu Y2VfZGl2aWRlcjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgcGl4ZWxfY2xvY2tf cG9zdF9kaXZpZGVyOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBzc19lbmFibGU7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYnBfcGl4ZWxfY2xvY2tfcGFyYW1ldGVycyB7CjE0NDc0OiAg ZW51bSBjb250cm9sbGVyX2lkIGNvbnRyb2xsZXJfaWQ7CjE0NDc0OiAgZW51bSBjbG9ja19zb3Vy Y2VfaWQgcGxsX2lkOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBzaWduYWxfdHlwZSBzaWduYWxfdHlw ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgdGFyZ2V0X3BpeGVsX2Nsb2NrXzEw MGh6OwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgcmVmZXJlbmNlX2RpdmlkZXI7CjE0NDc0OiAK MTQ0NzQ6ICB1aW50MzJfdCBmZWVkYmFja19kaXZpZGVyOwoxNDQ3NDogCjE0NDc0OiAgdWludDMy X3QgZnJhY3Rpb25hbF9mZWVkYmFja19kaXZpZGVyOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3Qg cGl4ZWxfY2xvY2tfcG9zdF9kaXZpZGVyOwoxNDQ3NDogIHN0cnVjdCBncmFwaGljc19vYmplY3Rf aWQgZW5jb2Rlcl9vYmplY3RfaWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGRm c19ieXBhc3NfZGlzcGxheV9jbG9jazsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gdHJhbnNtaXR0ZXJf Y29sb3JfZGVwdGggY29sb3JfZGVwdGg7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgcHJvZ3JhbV9w aXhlbF9jbG9ja19mbGFncyB7CjE0NDc0OiAgIHVpbnQzMl90IEZPUkNFX1BST0dSQU1NSU5HX09G X1BMTDoxOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgVVNFX0VfQ0xPQ0tfQVNf U09VUkNFX0ZPUl9EX0NMT0NLOjE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgU0VUX0VYVEVS TkFMX1JFRl9ESVZfU1JDOjE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgU0VUX0RJU1BDTEtf REZTX0JZUEFTUzoxOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90IFBST0dSQU1fUEhZX1BMTF9P TkxZOjE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgU1VQUE9SVF9ZVVZfNDIwOjE7CjE0NDc0 OiAKMTQ0NzQ6ICAgdWludDMyX3QgU0VUX1hUQUxJTl9SRUZfU1JDOjE7CjE0NDc0OiAKMTQ0NzQ6 ICAgdWludDMyX3QgU0VUX0dFTkxPQ0tfUkVGX0RJVl9TUkM6MTsKMTQ0NzQ6ICB9IGZsYWdzOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBicF9kY2VfY2xvY2tfdHlwZSB7CjE0NDc0OiAg RENFQ0xPQ0tfVFlQRV9ESVNQTEFZX0NMT0NLID0gMCwKMTQ0NzQ6ICBEQ0VDTE9DS19UWVBFX0RQ UkVGQ0xLID0gMQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYnBfc2V0 X2RjZV9jbG9ja19wYXJhbWV0ZXJzIHsKMTQ0NzQ6ICBlbnVtIGNsb2NrX3NvdXJjZV9pZCBwbGxf aWQ7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCB0YXJnZXRfY2xvY2tfZnJlcXVlbmN5OwoxNDQ3 NDogCjE0NDc0OiAgZW51bSBicF9kY2VfY2xvY2tfdHlwZSBjbG9ja190eXBlOwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IHNldF9kY2VfY2xvY2tfZmxhZ3MgewoxNDQ3NDogICB1aW50MzJfdCBVU0Vf R0VORVJJQ0FfQVNfU09VUkNFX0ZPUl9EUFJFRkNMSzoxOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQz Ml90IFVTRV9YVEFMSU5fQVNfU09VUkNFX0ZPUl9EUFJFRkNMSzoxOwoxNDQ3NDogCjE0NDc0OiAg IHVpbnQzMl90IFVTRV9QQ0lFX0FTX1NPVVJDRV9GT1JfRFBSRUZDTEs6MTsKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50MzJfdCBVU0VfR0VOTE9DS19BU19TT1VSQ0VfRk9SX0RQUkVGQ0xLOjE7CjE0NDc0 OiAgfSBmbGFnczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzcHJlYWRfc3BlY3Ry dW1fZmxhZ3MgewoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgQ0VOVEVSX1NQUkVBRDoxOwoxNDQ3 NDogCjE0NDc0OiAgdWludDMyX3QgRVhURVJOQUxfU1M6MTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQz Ml90IERTX1RZUEU6MTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBicF9zcHJlYWRf c3BlY3RydW1fcGFyYW1ldGVycyB7CjE0NDc0OiAgZW51bSBjbG9ja19zb3VyY2VfaWQgcGxsX2lk OwoxNDQ3NDogIHVpbnQzMl90IHBlcmNlbnRhZ2U7CjE0NDc0OiAgdWludDMyX3QgZHNfZnJhY19h bW91bnQ7CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAg ICB1aW50MzJfdCBzdGVwOwoxNDQ3NDogICAgdWludDMyX3QgZGVsYXk7CjE0NDc0OiAgICB1aW50 MzJfdCByYW5nZTsKMTQ0NzQ6ICAgfSB2ZXIxOwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAg dWludDMyX3QgZmVlZGJhY2tfYW1vdW50OwoxNDQ3NDogICAgdWludDMyX3QgbmZyYWNfYW1vdW50 OwoxNDQ3NDogICAgdWludDMyX3QgZHNfZnJhY19zaXplOwoxNDQ3NDogICB9IGRzOwoxNDQ3NDog IH07CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc3ByZWFkX3NwZWN0cnVtX2ZsYWdzIGZsYWdzOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJwX2VuY29kZXJfY2FwX2luZm8gewoxNDQ3 NDogIHVpbnQzMl90IERQX0hCUjJfQ0FQOjE7CjE0NDc0OiAgdWludDMyX3QgRFBfSEJSMl9FTjox OwoxNDQ3NDogIHVpbnQzMl90IERQX0hCUjNfRU46MTsKMTQ0NzQ6ICB1aW50MzJfdCBIRE1JXzZH Ql9FTjoxOwoxNDQ3NDogIHVpbnQzMl90IERQX0lTX1VTQl9DOjE7CjE0NDc0OiAgdWludDMyX3Qg UkVTRVJWRUQ6Mjc7CjE0NDc0OiB9OwoxNDQ3NDogIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jbG9ja19zb3VyY2UuaCIgMgoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgY2xvY2tfc291cmNlOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3ByZWFkX3NwZWN0 cnVtX2RhdGEgewoxNDQ3NDogIHVpbnQzMl90IHBlcmNlbnRhZ2U7CjE0NDc0OiAgdWludDMyX3Qg cGVyY2VudGFnZV9kaXZpZGVyOwoxNDQ3NDogIHVpbnQzMl90IGZyZXFfcmFuZ2Vfa2h6OwoxNDQ3 NDogIHVpbnQzMl90IG1vZHVsYXRpb25fZnJlcV9oejsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBz cHJlYWRfc3BlY3RydW1fZmxhZ3MgZmxhZ3M7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgZGVsdGFfc2lnbWFfZGF0YSB7CjE0NDc0OiAgdWludDMyX3QgZmVlZGJhY2tfYW1vdW50Owox NDQ3NDogIHVpbnQzMl90IG5mcmFjX2Ftb3VudDsKMTQ0NzQ6ICB1aW50MzJfdCBkc19mcmFjX3Np emU7CjE0NDc0OiAgdWludDMyX3QgZHNfZnJhY19hbW91bnQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBpeGVs X2Nsa19mbGFncyB7CjE0NDc0OiAgdWludDMyX3QgRU5BQkxFX1NTOjE7CjE0NDc0OiAgdWludDMy X3QgRElTUExBWV9CTEFOS0VEOjE7CjE0NDc0OiAgdWludDMyX3QgUFJPR1JBTV9QSVhFTF9DTE9D SzoxOwoxNDQ3NDogIHVpbnQzMl90IFBST0dSQU1fSURfQ0xPQ0s6MTsKMTQ0NzQ6ICB1aW50MzJf dCBTVVBQT1JUX1lDQkNSNDIwOjE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjc2RwX3JlZl9jbGtfZHNfcGFyYW1zIHsKMTQ0 NzQ6ICBib29sIGh3X2Rzb19uX2RwX3JlZl9jbGs7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBh dmdfZHBfcmVmX2Nsa19raHo7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBzc19wZXJjZW50YWdl X29uX2RwX3JlZl9jbGs7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHNzX3BlcmNl bnRhZ2VfZGl2aWRlcjsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBp eGVsX2Nsa19wYXJhbXMgewoxNDQ3NDogIHVpbnQzMl90IHJlcXVlc3RlZF9waXhfY2xrXzEwMGh6 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCByZXF1ZXN0ZWRfc3ltX2NsazsKMTQ0 NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGRwX3JlZl9jbGs7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qg Z3JhcGhpY3Nfb2JqZWN0X2lkIGVuY29kZXJfb2JqZWN0X2lkOwoxNDQ3NDogCjE0NDc0OiAgZW51 bSBzaWduYWxfdHlwZSBzaWduYWxfdHlwZTsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gY29udHJvbGxl cl9pZCBjb250cm9sbGVyX2lkOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBkY19jb2xvcl9kZXB0aCBj b2xvcl9kZXB0aDsKMTQ0NzQ6ICBzdHJ1Y3QgY3NkcF9yZWZfY2xrX2RzX3BhcmFtcyBkZV9zcHJl YWRfcGFyYW1zOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBkY19waXhlbF9lbmNvZGluZyBwaXhlbF9l bmNvZGluZzsKMTQ0NzQ6ICBzdHJ1Y3QgcGl4ZWxfY2xrX2ZsYWdzIGZsYWdzOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBwbGxfc2V0dGluZ3MgewoxNDQ3NDogIHVpbnQzMl90IGFjdHVhbF9waXhfY2xrXzEwMGh6 OwoxNDQ3NDogIHVpbnQzMl90IGFkanVzdGVkX3BpeF9jbGtfMTAwaHo7CjE0NDc0OiAgdWludDMy X3QgY2FsY3VsYXRlZF9waXhfY2xrXzEwMGh6OwoxNDQ3NDogIHVpbnQzMl90IHZjb19mcmVxOwox NDQ3NDogIHVpbnQzMl90IHJlZmVyZW5jZV9mcmVxOwoxNDQ3NDogIHVpbnQzMl90IHJlZmVyZW5j ZV9kaXZpZGVyOwoxNDQ3NDogIHVpbnQzMl90IGZlZWRiYWNrX2RpdmlkZXI7CjE0NDc0OiAgdWlu dDMyX3QgZnJhY3RfZmVlZGJhY2tfZGl2aWRlcjsKMTQ0NzQ6ICB1aW50MzJfdCBwaXhfY2xrX3Bv c3RfZGl2aWRlcjsKMTQ0NzQ6ICB1aW50MzJfdCBzc19wZXJjZW50YWdlOwoxNDQ3NDogIGJvb2wg dXNlX2V4dGVybmFsX2NsazsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjYWxjX3Bs bF9jbG9ja19zb3VyY2VfaW5pdF9kYXRhIHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfYmlvcyAqYnA7CjE0 NDc0OiAgdWludDMyX3QgbWluX3BpeF9jbGtfcGxsX3Bvc3RfZGl2aWRlcjsKMTQ0NzQ6ICB1aW50 MzJfdCBtYXhfcGl4X2Nsa19wbGxfcG9zdF9kaXZpZGVyOwoxNDQ3NDogIHVpbnQzMl90IG1pbl9w bGxfcmVmX2RpdmlkZXI7CjE0NDc0OiAgdWludDMyX3QgbWF4X3BsbF9yZWZfZGl2aWRlcjsKMTQ0 NzQ6ICB1aW50MzJfdCBtaW5fb3ZlcnJpZGVfaW5wdXRfcHhsX2Nsa19wbGxfZnJlcV9raHo7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IG1heF9vdmVycmlkZV9pbnB1dF9weGxfY2xr X3BsbF9mcmVxX2toejsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgbnVtX2ZyYWN0 X2ZiX2RpdmlkZXJfZGVjaW1hbF9wb2ludDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMy X3QgbnVtX2ZyYWN0X2ZiX2RpdmlkZXJfZGVjaW1hbF9wb2ludF9wcmVjaXNpb247CjE0NDc0OiAK MTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgY2FsY19wbGxfY2xvY2tfc291cmNlIHsKMTQ0NzQ6ICB1aW50MzJfdCBy ZWZfZnJlcV9raHo7CjE0NDc0OiAgdWludDMyX3QgbWluX3BpeF9jbG9ja19wbGxfcG9zdF9kaXZp ZGVyOwoxNDQ3NDogIHVpbnQzMl90IG1heF9waXhfY2xvY2tfcGxsX3Bvc3RfZGl2aWRlcjsKMTQ0 NzQ6ICB1aW50MzJfdCBtaW5fcGxsX3JlZl9kaXZpZGVyOwoxNDQ3NDogIHVpbnQzMl90IG1heF9w bGxfcmVmX2RpdmlkZXI7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfdmNvX2toejsKMTQ0 NzQ6ICB1aW50MzJfdCBtaW5fdmNvX2toejsKMTQ0NzQ6ICB1aW50MzJfdCBtaW5fcGxsX2lucHV0 X2ZyZXFfa2h6OwoxNDQ3NDogIHVpbnQzMl90IG1heF9wbGxfaW5wdXRfZnJlcV9raHo7CjE0NDc0 OiAKMTQ0NzQ6ICB1aW50MzJfdCBmcmFjdF9mYl9kaXZpZGVyX2RlY2ltYWxfcG9pbnRzX251bTsK MTQ0NzQ6ICB1aW50MzJfdCBmcmFjdF9mYl9kaXZpZGVyX2ZhY3RvcjsKMTQ0NzQ6ICB1aW50MzJf dCBmcmFjdF9mYl9kaXZpZGVyX3ByZWNpc2lvbjsKMTQ0NzQ6ICB1aW50MzJfdCBmcmFjdF9mYl9k aXZpZGVyX3ByZWNpc2lvbl9mYWN0b3I7CjE0NDc0OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eDsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbG9ja19zb3VyY2VfZnVuY3MgewoxNDQ3 NDogIGJvb2wgKCpjc19wb3dlcl9kb3duKSgKMTQ0NzQ6ICAgIHN0cnVjdCBjbG9ja19zb3VyY2Ug Kik7CjE0NDc0OiAgYm9vbCAoKnByb2dyYW1fcGl4X2Nsaykoc3RydWN0IGNsb2NrX3NvdXJjZSAq LAoxNDQ3NDogICAgc3RydWN0IHBpeGVsX2Nsa19wYXJhbXMgKiwgc3RydWN0IHBsbF9zZXR0aW5n cyAqKTsKMTQ0NzQ6ICB1aW50MzJfdCAoKmdldF9waXhfY2xrX2RpdmlkZXJzKSgKMTQ0NzQ6ICAg IHN0cnVjdCBjbG9ja19zb3VyY2UgKiwKMTQ0NzQ6ICAgIHN0cnVjdCBwaXhlbF9jbGtfcGFyYW1z ICosCjE0NDc0OiAgICBzdHJ1Y3QgcGxsX3NldHRpbmdzICopOwoxNDQ3NDogIGJvb2wgKCpnZXRf cGl4ZWxfY2xrX2ZyZXF1ZW5jeV8xMDBoeikoCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3QgY2xvY2tf c291cmNlICpjbG9ja19zb3VyY2UsCjE0NDc0OiAgICB1bnNpZ25lZCBpbnQgaW5zdCwKMTQ0NzQ6 ICAgIHVuc2lnbmVkIGludCAqcGl4ZWxfY2xrX2toeik7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgY2xvY2tfc291cmNlIHsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgY2xvY2tfc291cmNl X2Z1bmNzICpmdW5jczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIGVu dW0gY2xvY2tfc291cmNlX2lkIGlkOwoxNDQ3NDogIGJvb2wgZHBfY2xrX3NyYzsKMTQ0NzQ6IH07 CjE0NDc0OiAjIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMv aW5jL2h3X3NlcXVlbmNlci5oIiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvdGltaW5nX2dlbmVyYXRvci5oIiAxCjE0NDc0OiAj IDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L3Rp bWluZ19nZW5lcmF0b3IuaCIKMTQ0NzQ6IHN0cnVjdCBkY19iaW9zOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBjcnRjX3Bvc2l0aW9uIHsKMTQ0NzQ6ICBpbnQzMl90IHZlcnRpY2FsX2Nv dW50OwoxNDQ3NDogIGludDMyX3QgaG9yaXpvbnRhbF9jb3VudDsKMTQ0NzQ6ICBpbnQzMl90IG5v bWluYWxfdmNvdW50OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjcF9nc2xfcGFy YW1zIHsKMTQ0NzQ6ICBpbnQgZ3NsX2dyb3VwOwoxNDQ3NDogIGludCBnc2xfbWFzdGVyOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGdzbF9wYXJhbXMgewoxNDQ3NDogIGludCBnc2ww X2VuOwoxNDQ3NDogIGludCBnc2wxX2VuOwoxNDQ3NDogIGludCBnc2wyX2VuOwoxNDQ3NDogIGlu dCBnc2xfbWFzdGVyX2VuOwoxNDQ3NDogIGludCBnc2xfbWFzdGVyX21vZGU7CjE0NDc0OiAgaW50 IG1hc3Rlcl91cGRhdGVfbG9ja19nc2xfZW47CjE0NDc0OiAgaW50IGdzbF93aW5kb3dfc3RhcnRf eDsKMTQ0NzQ6ICBpbnQgZ3NsX3dpbmRvd19lbmRfeDsKMTQ0NzQ6ICBpbnQgZ3NsX3dpbmRvd19z dGFydF95OwoxNDQ3NDogIGludCBnc2xfd2luZG93X2VuZF95OwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJyX3BhcmFtcyB7CjE0NDc0OiAgdWludDMyX3QgdmVydGlj YWxfdG90YWxfbWluOwoxNDQ3NDogIHVpbnQzMl90IHZlcnRpY2FsX3RvdGFsX21heDsKMTQ0NzQ6 ICB1aW50MzJfdCB2ZXJ0aWNhbF90b3RhbF9taWQ7CjE0NDc0OiAgdWludDMyX3QgdmVydGljYWxf dG90YWxfbWlkX2ZyYW1lX251bTsKMTQ0NzQ6ICBib29sIGltbWVkaWF0ZV9mbGlwOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjcnRjX3N0YXRl IHsKMTQ0NzQ6ICBDUlRDX1NUQVRFX1ZCTEFOSyA9IDAsCjE0NDc0OiAgQ1JUQ19TVEFURV9WQUNU SVZFCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgdnVwZGF0ZV9rZWVwb3V0X3BhcmFt cyB7CjE0NDc0OiAgaW50IHN0YXJ0X29mZnNldDsKMTQ0NzQ6ICBpbnQgZW5kX29mZnNldDsKMTQ0 NzQ6ICBpbnQgZW5hYmxlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNydGNfc3Rl cmVvX2ZsYWdzIHsKMTQ0NzQ6ICB1aW50OF90IFBST0dSQU1fU1RFUkVPIDogMTsKMTQ0NzQ6ICB1 aW50OF90IFBST0dSQU1fUE9MQVJJVFkgOiAxOwoxNDQ3NDogIHVpbnQ4X3QgUklHSFRfRVlFX1BP TEFSSVRZIDogMTsKMTQ0NzQ6ICB1aW50OF90IEZSQU1FX1BBQ0tFRCA6IDE7CjE0NDc0OiAgdWlu dDhfdCBESVNBQkxFX1NURVJFT19EUF9TWU5DIDogMTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGVudW0gY3JjX3NlbGVjdGlvbiB7CjE0NDc0OiAKMTQ0NzQ6ICBVTklPTl9XSU5ET1dfQV9CID0g MCwKMTQ0NzQ6ICBVTklPTl9XSU5ET1dfQV9OT1RfQiwKMTQ0NzQ6ICBVTklPTl9XSU5ET1dfTk9U X0FfQiwKMTQ0NzQ6ICBVTklPTl9XSU5ET1dfTk9UX0FfTk9UX0IsCjE0NDc0OiAgSU5URVJTRUNU X1dJTkRPV19BX0IsCjE0NDc0OiAgSU5URVJTRUNUX1dJTkRPV19BX05PVF9CLAoxNDQ3NDogIElO VEVSU0VDVF9XSU5ET1dfTk9UX0FfQiwKMTQ0NzQ6ICBJTlRFUlNFQ1RfV0lORE9XX05PVF9BX05P VF9CLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBoX3RpbWluZ19kaXZfbW9kZSB7CjE0 NDc0OiAgSF9USU1JTkdfTk9fRElWLAoxNDQ3NDogIEhfVElNSU5HX0RJVl9CWTIsCjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY3JjX3BhcmFtcyB7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50 MTZfdCB3aW5kb3dhX3hfc3RhcnQ7CjE0NDc0OiAgdWludDE2X3Qgd2luZG93YV94X2VuZDsKMTQ0 NzQ6ICB1aW50MTZfdCB3aW5kb3dhX3lfc3RhcnQ7CjE0NDc0OiAgdWludDE2X3Qgd2luZG93YV95 X2VuZDsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQxNl90IHdpbmRvd2JfeF9zdGFydDsKMTQ0NzQ6ICB1 aW50MTZfdCB3aW5kb3diX3hfZW5kOwoxNDQ3NDogIHVpbnQxNl90IHdpbmRvd2JfeV9zdGFydDsK MTQ0NzQ6ICB1aW50MTZfdCB3aW5kb3diX3lfZW5kOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBjcmNf c2VsZWN0aW9uIHNlbGVjdGlvbjsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgY29udGludW91c19tb2Rl OwoxNDQ3NDogIGJvb2wgZW5hYmxlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRp bWluZ19nZW5lcmF0b3IgewoxNDQ3NDogIGNvbnN0IHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yX2Z1 bmNzICpmdW5jczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfYmlvcyAqYnA7CjE0NDc0OiAgc3RydWN0IGRj X2NvbnRleHQgKmN0eDsKMTQ0NzQ6ICBpbnQgaW5zdDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkY19jcnRjX3RpbWluZzsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRycl9wYXJhbXM7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRpbWluZ19nZW5lcmF0b3JfZnVuY3Mgewox NDQ3NDogIGJvb2wgKCp2YWxpZGF0ZV90aW1pbmcpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0 ZywKMTQ0NzQ6ICAgICAgICBjb25zdCBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKnRpbWluZyk7CjE0 NDc0OiAgdm9pZCAoKnByb2dyYW1fdGltaW5nKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcs CjE0NDc0OiAgICAgICAgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICp0aW1pbmcsCjE0NDc0 OiAgICAgICAgaW50IHZyZWFkeV9vZmZzZXQsCjE0NDc0OiAgICAgICAgaW50IHZzdGFydHVwX3N0 YXJ0LAoxNDQ3NDogICAgICAgIGludCB2dXBkYXRlX29mZnNldCwKMTQ0NzQ6ICAgICAgICBpbnQg dnVwZGF0ZV93aWR0aCwKMTQ0NzQ6ICAgICAgICBjb25zdCBlbnVtIHNpZ25hbF90eXBlIHNpZ25h bCwKMTQ0NzQ6ICAgICAgICBib29sIHVzZV92YmlvcwoxNDQ3NDogICk7CjE0NDc0OiAgdm9pZCAo KnNldHVwX3ZlcnRpY2FsX2ludGVycnVwdDApKAoxNDQ3NDogICAgc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKm9wdGMsCjE0NDc0OiAgICB1aW50MzJfdCBzdGFydF9saW5lLAoxNDQ3NDogICAgdWlu dDMyX3QgZW5kX2xpbmUpOwoxNDQ3NDogIHZvaWQgKCpzZXR1cF92ZXJ0aWNhbF9pbnRlcnJ1cHQx KSgKMTQ0NzQ6ICAgIHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICpvcHRjLAoxNDQ3NDogICAgdWlu dDMyX3Qgc3RhcnRfbGluZSk7CjE0NDc0OiAgdm9pZCAoKnNldHVwX3ZlcnRpY2FsX2ludGVycnVw dDIpKAoxNDQ3NDogICAgc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMsCjE0NDc0OiAgICB1 aW50MzJfdCBzdGFydF9saW5lKTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCplbmFibGVfY3J0Yyko c3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICBib29sICgqZGlzYWJsZV9jcnRj KShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcpOwoxNDQ3NDogIGJvb2wgKCppc19jb3VudGVy X21vdmluZykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICB2b2lkICgqZ2V0 X3Bvc2l0aW9uKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcsCjE0NDc0OiAgICAgc3RydWN0 IGNydGNfcG9zaXRpb24gKnBvc2l0aW9uKTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90ICgqZ2V0 X2ZyYW1lX2NvdW50KShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcpOwoxNDQ3NDogIHZvaWQg KCpnZXRfc2Nhbm91dHBvcykoCjE0NDc0OiAgIHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywK MTQ0NzQ6ICAgdWludDMyX3QgKnZfYmxhbmtfc3RhcnQsCjE0NDc0OiAgIHVpbnQzMl90ICp2X2Js YW5rX2VuZCwKMTQ0NzQ6ICAgdWludDMyX3QgKmhfcG9zaXRpb24sCjE0NDc0OiAgIHVpbnQzMl90 ICp2X3Bvc2l0aW9uKTsKMTQ0NzQ6ICBib29sICgqZ2V0X290Z19hY3RpdmVfc2l6ZSkoc3RydWN0 IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMsCjE0NDc0OiAgICB1aW50MzJfdCAqb3RnX2FjdGl2ZV93 aWR0aCwKMTQ0NzQ6ICAgIHVpbnQzMl90ICpvdGdfYWN0aXZlX2hlaWdodCk7CjE0NDc0OiAgYm9v bCAoKmlzX21hdGNoaW5nX3RpbWluZykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLAoxNDQ3 NDogICAgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICpvdGdfdGltaW5nKTsKMTQ0NzQ6ICB2 b2lkICgqc2V0X2Vhcmx5X2NvbnRyb2wpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKMTQ0 NzQ6ICAgICAgICAgICB1aW50MzJfdCBlYXJseV9jbnRsKTsKMTQ0NzQ6ICB2b2lkICgqd2FpdF9m b3Jfc3RhdGUpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKMTQ0NzQ6ICAgICAgICBlbnVt IGNydGNfc3RhdGUgc3RhdGUpOwoxNDQ3NDogIHZvaWQgKCpzZXRfYmxhbmspKHN0cnVjdCB0aW1p bmdfZ2VuZXJhdG9yICp0ZywKMTQ0NzQ6ICAgICAgYm9vbCBlbmFibGVfYmxhbmtpbmcpOwoxNDQ3 NDogIGJvb2wgKCppc19ibGFua2VkKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcpOwoxNDQ3 NDogIHZvaWQgKCpzZXRfb3ZlcnNjYW5fYmxhbmtfY29sb3IpIChzdHJ1Y3QgdGltaW5nX2dlbmVy YXRvciAqdGcsIGNvbnN0IHN0cnVjdCB0Z19jb2xvciAqY29sb3IpOwoxNDQ3NDogIHZvaWQgKCpz ZXRfYmxhbmtfY29sb3IpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywgY29uc3Qgc3RydWN0 IHRnX2NvbG9yICpjb2xvcik7CjE0NDc0OiAgdm9pZCAoKnNldF9jb2xvcnMpKHN0cnVjdCB0aW1p bmdfZ2VuZXJhdG9yICp0ZywKMTQ0NzQ6ICAgICAgIGNvbnN0IHN0cnVjdCB0Z19jb2xvciAqYmxh bmtfY29sb3IsCjE0NDc0OiAgICAgICBjb25zdCBzdHJ1Y3QgdGdfY29sb3IgKm92ZXJzY2FuX2Nv bG9yKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkaXNhYmxlX3ZnYSkoc3RydWN0IHRpbWluZ19n ZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICBib29sICgqZGlkX3RyaWdnZXJlZF9yZXNldF9vY2N1ciko c3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICB2b2lkICgqc2V0dXBfZ2xvYmFs X3N3YXBfbG9jaykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLAoxNDQ3NDogICAgICAgIGNv bnN0IHN0cnVjdCBkY3BfZ3NsX3BhcmFtcyAqZ3NsX3BhcmFtcyk7CjE0NDc0OiAgdm9pZCAoKnVu bG9jaykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICB2b2lkICgqbG9jayko c3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICB2b2lkICgqbG9ja19kb3VibGVi dWZmZXJfZGlzYWJsZSkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICB2b2lk ICgqbG9ja19kb3VibGVidWZmZXJfZW5hYmxlKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcp OwoxNDQ3NDogIHZvaWQoKnRyaXBsZWJ1ZmZlcl91bmxvY2spKHN0cnVjdCB0aW1pbmdfZ2VuZXJh dG9yICp0Zyk7CjE0NDc0OiAgdm9pZCgqdHJpcGxlYnVmZmVyX2xvY2spKHN0cnVjdCB0aW1pbmdf Z2VuZXJhdG9yICp0Zyk7CjE0NDc0OiAgdm9pZCAoKmVuYWJsZV9yZXNldF90cmlnZ2VyKShzdHJ1 Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcsCjE0NDc0OiAgICAgICAgICBpbnQgc291cmNlX3RnX2lu c3QpOwoxNDQ3NDogIHZvaWQgKCplbmFibGVfY3J0Y19yZXNldCkoc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKnRnLAoxNDQ3NDogICAgICAgaW50IHNvdXJjZV90Z19pbnN0LAoxNDQ3NDogICAgICAg c3RydWN0IGNydGNfdHJpZ2dlcl9pbmZvICpjcnRjX3RwKTsKMTQ0NzQ6ICB2b2lkICgqZGlzYWJs ZV9yZXNldF90cmlnZ2VyKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcpOwoxNDQ3NDogIHZv aWQgKCp0ZWFyX2Rvd25fZ2xvYmFsX3N3YXBfbG9jaykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3Ig KnRnKTsKMTQ0NzQ6ICB2b2lkICgqZW5hYmxlX2FkdmFuY2VkX3JlcXVlc3QpKHN0cnVjdCB0aW1p bmdfZ2VuZXJhdG9yICp0ZywKMTQ0NzQ6ICAgICAgYm9vbCBlbmFibGUsIGNvbnN0IHN0cnVjdCBk Y19jcnRjX3RpbWluZyAqdGltaW5nKTsKMTQ0NzQ6ICB2b2lkICgqc2V0X2Rycikoc3RydWN0IHRp bWluZ19nZW5lcmF0b3IgKnRnLCBjb25zdCBzdHJ1Y3QgZHJyX3BhcmFtcyAqcGFyYW1zKTsKMTQ0 NzQ6ICB2b2lkICgqc2V0X3N0YXRpY19zY3JlZW5fY29udHJvbCkoc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKnRnLAoxNDQ3NDogICAgICAgdWludDMyX3QgZXZlbnRfdHJpZ2dlcnMsCjE0NDc0OiAg ICAgICB1aW50MzJfdCBudW1fZnJhbWVzKTsKMTQ0NzQ6ICB2b2lkICgqc2V0X3Rlc3RfcGF0dGVy bikoCjE0NDc0OiAgIHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKMTQ0NzQ6ICAgZW51bSBj b250cm9sbGVyX2RwX3Rlc3RfcGF0dGVybiB0ZXN0X3BhdHRlcm4sCjE0NDc0OiAgIGVudW0gZGNf Y29sb3JfZGVwdGggY29sb3JfZGVwdGgpOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCAoKmFybV92ZXJ0 X2ludHIpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywgdWludDhfdCB3aWR0aCk7CjE0NDc0 OiAKMTQ0NzQ6ICB2b2lkICgqcHJvZ3JhbV9nbG9iYWxfc3luYykoc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKnRnLAoxNDQ3NDogICAgaW50IHZyZWFkeV9vZmZzZXQsCjE0NDc0OiAgICBpbnQgdnN0 YXJ0dXBfc3RhcnQsCjE0NDc0OiAgICBpbnQgdnVwZGF0ZV9vZmZzZXQsCjE0NDc0OiAgICBpbnQg dnVwZGF0ZV93aWR0aCk7CjE0NDc0OiAgdm9pZCAoKmVuYWJsZV9vcHRjX2Nsb2NrKShzdHJ1Y3Qg dGltaW5nX2dlbmVyYXRvciAqdGcsIGJvb2wgZW5hYmxlKTsKMTQ0NzQ6ICB2b2lkICgqcHJvZ3Jh bV9zdGVyZW8pKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKMTQ0NzQ6ICAgY29uc3Qgc3Ry dWN0IGRjX2NydGNfdGltaW5nICp0aW1pbmcsIHN0cnVjdCBjcnRjX3N0ZXJlb19mbGFncyAqZmxh Z3MpOwoxNDQ3NDogIGJvb2wgKCppc19zdGVyZW9fbGVmdF9leWUpKHN0cnVjdCB0aW1pbmdfZ2Vu ZXJhdG9yICp0Zyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2V0X2JsYW5rX2RhdGFfZG91Ymxl X2J1ZmZlcikoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLCBib29sIGVuYWJsZSk7CjE0NDc0 OiAKMTQ0NzQ6ICB2b2lkICgqdGdfaW5pdCkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsK MTQ0NzQ6ICBib29sICgqaXNfdGdfZW5hYmxlZCkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRn KTsKMTQ0NzQ6ICBib29sICgqaXNfb3B0Y191bmRlcmZsb3dfb2NjdXJyZWQpKHN0cnVjdCB0aW1p bmdfZ2VuZXJhdG9yICp0Zyk7CjE0NDc0OiAgdm9pZCAoKmNsZWFyX29wdGNfdW5kZXJmbG93KShz dHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9k d2Jfc291cmNlKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqb3B0YywKMTQ0NzQ6ICAgdWludDMy X3QgZHdiX3BpcGVfaW5zdCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZ2V0X29wdGNfc291cmNl KShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqb3B0YywKMTQ0NzQ6ICAgIHVpbnQzMl90ICpudW1f b2ZfaW5wdXRfc2VnbWVudHMsCjE0NDc0OiAgICB1aW50MzJfdCAqc2VnMF9zcmNfc2VsLAoxNDQ3 NDogICAgdWludDMyX3QgKnNlZzFfc3JjX3NlbCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCpjb25maWd1cmVfY3JjKShzdHJ1Y3QgdGltaW5n X2dlbmVyYXRvciAqdGcsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGNyY19wYXJhbXMg KnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IGJvb2wgKCpnZXRfY3JjKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcsCjE0NDc0OiAgICB1 aW50MzJfdCAqcl9jciwgdWludDMyX3QgKmdfeSwgdWludDMyX3QgKmJfY2IpOwoxNDQ3NDogCjE0 NDc0OiAgdm9pZCAoKnByb2dyYW1fbWFudWFsX3RyaWdnZXIpKHN0cnVjdCB0aW1pbmdfZ2VuZXJh dG9yICpvcHRjKTsKMTQ0NzQ6ICB2b2lkICgqc2V0dXBfbWFudWFsX3RyaWdnZXIpKHN0cnVjdCB0 aW1pbmdfZ2VuZXJhdG9yICpvcHRjKTsKMTQ0NzQ6ICBib29sICgqZ2V0X2h3X3RpbWluZykoc3Ry dWN0IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY3J0Y190aW1p bmcgKmh3X2NydGNfdGltaW5nKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpzZXRfdnRnX3BhcmFt cykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMsCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3Qg ZGNfY3J0Y190aW1pbmcgKmRjX2NydGNfdGltaW5nKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpz ZXRfZHNjX2NvbmZpZykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMsCjE0NDc0OiAgICAg ICAgICAgZW51bSBvcHRjX2RzY19tb2RlIGRzY19tb2RlLAoxNDQ3NDogICAgICAgICAgIHVpbnQz Ml90IGRzY19ieXRlc19wZXJfcGl4ZWwsCjE0NDc0OiAgICAgICAgICAgdWludDMyX3QgZHNjX3Ns aWNlX3dpZHRoKTsKMTQ0NzQ6ICB2b2lkICgqc2V0X29kbV9ieXBhc3MpKHN0cnVjdCB0aW1pbmdf Z2VuZXJhdG9yICpvcHRjLCBjb25zdCBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKmRjX2NydGNfdGlt aW5nKTsKMTQ0NzQ6ICB2b2lkICgqc2V0X29kbV9jb21iaW5lKShzdHJ1Y3QgdGltaW5nX2dlbmVy YXRvciAqb3B0YywgaW50ICpvcHBfaWQsIGludCBvcHBfY250LAoxNDQ3NDogICAgc3RydWN0IGRj X2NydGNfdGltaW5nICp0aW1pbmcpOwoxNDQ3NDogIHZvaWQgKCpzZXRfZ3NsKShzdHJ1Y3QgdGlt aW5nX2dlbmVyYXRvciAqb3B0YywgY29uc3Qgc3RydWN0IGdzbF9wYXJhbXMgKnBhcmFtcyk7CjE0 NDc0OiAgdm9pZCAoKnNldF9nc2xfc291cmNlX3NlbGVjdCkoc3RydWN0IHRpbWluZ19nZW5lcmF0 b3IgKm9wdGMsCjE0NDc0OiAgICBpbnQgZ3JvdXBfaWR4LAoxNDQ3NDogICAgdWludDMyX3QgZ3Ns X3JlYWR5X3NpZ25hbCk7CjE0NDc0OiB9OwoxNDQ3NDogIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9od19zZXF1ZW5jZXIuaCIgMgoxNDQ3NDogCjE0 NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMv aHcvbGlua19lbmNvZGVyLmgiIDEKMTQ0NzQ6ICMgMzcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbGlua19lbmNvZGVyLmgiCjE0NDc0OiBzdHJ1Y3Qg ZGNfY29udGV4dDsKMTQ0NzQ6IHN0cnVjdCBlbmNvZGVyX3NldF9kcF9waHlfcGF0dGVybl9wYXJh bTsKMTQ0NzQ6IHN0cnVjdCBsaW5rX21zdF9zdHJlYW1fYWxsb2NhdGlvbl90YWJsZTsKMTQ0NzQ6 IHN0cnVjdCBkY19saW5rX3NldHRpbmdzOwoxNDQ3NDogc3RydWN0IGxpbmtfdHJhaW5pbmdfc2V0 dGluZ3M7CjE0NDc0OiBzdHJ1Y3QgcGlwZV9jdHg7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBlbmNv ZGVyX2luaXRfZGF0YSB7CjE0NDc0OiAgZW51bSBjaGFubmVsX2lkIGNoYW5uZWw7CjE0NDc0OiAg c3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBjb25uZWN0b3I7CjE0NDc0OiAgZW51bSBocGRfc291 cmNlX2lkIGhwZF9zb3VyY2U7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0 X2lkIGVuY29kZXI7CjE0NDc0OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKMTQ0NzQ6ICBlbnVt IHRyYW5zbWl0dGVyIHRyYW5zbWl0dGVyOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGVuY29kZXJfZmVhdHVyZV9zdXBwb3J0IHsKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVj dCB7CjE0NDc0OiAgICB1aW50MzJfdCBJU19IQlIyX0NBUEFCTEU6MTsKMTQ0NzQ6ICAgIHVpbnQz Ml90IElTX0hCUjNfQ0FQQUJMRToxOwoxNDQ3NDogICAgdWludDMyX3QgSVNfVFBTM19DQVBBQkxF OjE7CjE0NDc0OiAgICB1aW50MzJfdCBJU19UUFM0X0NBUEFCTEU6MTsKMTQ0NzQ6ICAgIHVpbnQz Ml90IEhETUlfNkdCX0VOOjE7CjE0NDc0OiAgICB1aW50MzJfdCBEUF9JU19VU0JfQzoxOwoxNDQ3 NDogICB9IGJpdHM7CjE0NDc0OiAgIHVpbnQzMl90IHJhdzsKMTQ0NzQ6ICB9IGZsYWdzOwoxNDQ3 NDogCjE0NDc0OiAgZW51bSBkY19jb2xvcl9kZXB0aCBtYXhfaGRtaV9kZWVwX2NvbG9yOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBtYXhfaGRtaV9waXhlbF9jbG9jazsKMTQ0NzQ6ICBib29sIGhkbWlf eWNiY3I0MjBfc3VwcG9ydGVkOwoxNDQ3NDogIGJvb2wgZHBfeWNiY3I0MjBfc3VwcG9ydGVkOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZHBjZF9wc3JfY29uZmlndXJhdGlvbiB7CjE0 NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBFTkFCTEUgOiAxOwoxNDQ3NDog ICB1bnNpZ25lZCBjaGFyIFRSQU5TTUlUVEVSX0FDVElWRV9JTl9QU1IgOiAxOwoxNDQ3NDogICB1 bnNpZ25lZCBjaGFyIENSQ19WRVJJRklDQVRJT04gOiAxOwoxNDQ3NDogICB1bnNpZ25lZCBjaGFy IEZSQU1FX0NBUFRVUkVfSU5ESUNBVElPTiA6IDE7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQg Y2hhciBMSU5FX0NBUFRVUkVfSU5ESUNBVElPTiA6IDE7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWdu ZWQgY2hhciBJUlFfSFBEX1dJVEhfQ1JDX0VSUk9SIDogMTsKMTQ0NzQ6ICAgdW5zaWduZWQgY2hh ciBSRVNFUlZFRCA6IDI7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcmF3 OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gcHNyX2Vycm9yX3N0YXR1cyB7CjE0NDc0 OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBMSU5LX0NSQ19FUlJPUiA6MTsKMTQ0 NzQ6ICAgdW5zaWduZWQgY2hhciBSRkJfU1RPUkFHRV9FUlJPUiA6MTsKMTQ0NzQ6ICAgdW5zaWdu ZWQgY2hhciBSRVNFUlZFRCA6NjsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdW5zaWduZWQgY2hh ciByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBwc3Jfc2lua19wc3Jfc3RhdHVz IHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgU0lOS19TRUxGX1JFRlJF U0hfU1RBVFVTIDozOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgUkVTRVJWRUQgOjU7CjE0NDc0OiAg fSBiaXRzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGxpbmtfZW5jb2RlciB7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGxpbmtfZW5jb2Rl cl9mdW5jcyAqZnVuY3M7CjE0NDc0OiAgaW50MzJfdCBhdXhfY2hhbm5lbF9vZmZzZXQ7CjE0NDc0 OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKMTQ0NzQ6ICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0 X2lkIGlkOwoxNDQ3NDogIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgY29ubmVjdG9yOwoxNDQ3 NDogIHVpbnQzMl90IG91dHB1dF9zaWduYWxzOwoxNDQ3NDogIGVudW0gZW5naW5lX2lkIHByZWZl cnJlZF9lbmdpbmU7CjE0NDc0OiAgc3RydWN0IGVuY29kZXJfZmVhdHVyZV9zdXBwb3J0IGZlYXR1 cmVzOwoxNDQ3NDogIGVudW0gdHJhbnNtaXR0ZXIgdHJhbnNtaXR0ZXI7CjE0NDc0OiAgZW51bSBo cGRfc291cmNlX2lkIGhwZF9zb3VyY2U7CjE0NDc0OiAgYm9vbCB1c2JjX2NvbWJvX3BoeTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBsaW5rX2VuY19zdGF0ZSB7CjE0NDc0OiAKMTQ0 NzQ6ICAgdWludDMyX3QgZHBoeV9mZWNfZW47CjE0NDc0OiAgIHVpbnQzMl90IGRwaHlfZmVjX3Jl YWR5X3NoYWRvdzsKMTQ0NzQ6ICAgdWludDMyX3QgZHBoeV9mZWNfYWN0aXZlX3N0YXR1czsKMTQ0 NzQ6ICAgdWludDMyX3QgZHBfbGlua190cmFpbmluZ19jb21wbGV0ZTsKMTQ0NzQ6IAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGxpbmtfZW5jb2Rlcl9mdW5jcyB7CjE0NDc0OiAgdm9p ZCAoKnJlYWRfc3RhdGUpKAoxNDQ3NDogICAgc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLCBzdHJ1 Y3QgbGlua19lbmNfc3RhdGUgKnMpOwoxNDQ3NDogIGJvb2wgKCp2YWxpZGF0ZV9vdXRwdXRfd2l0 aF9zdHJlYW0pKAoxNDQ3NDogICBzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMsIGNvbnN0IHN0cnVj dCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAgdm9pZCAoKmh3X2luaXQpKHN0cnVj dCBsaW5rX2VuY29kZXIgKmVuYyk7CjE0NDc0OiAgdm9pZCAoKnNldHVwKShzdHJ1Y3QgbGlua19l bmNvZGVyICplbmMsCjE0NDc0OiAgIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsKTsKMTQ0NzQ6ICB2 b2lkICgqZW5hYmxlX3RtZHNfb3V0cHV0KShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMsCjE0NDc0 OiAgIGVudW0gY2xvY2tfc291cmNlX2lkIGNsb2NrX3NvdXJjZSwKMTQ0NzQ6ICAgZW51bSBkY19j b2xvcl9kZXB0aCBjb2xvcl9kZXB0aCwKMTQ0NzQ6ICAgZW51bSBzaWduYWxfdHlwZSBzaWduYWws CjE0NDc0OiAgIHVpbnQzMl90IHBpeGVsX2Nsb2NrKTsKMTQ0NzQ6ICB2b2lkICgqZW5hYmxlX2Rw X291dHB1dCkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3Qg ZGNfbGlua19zZXR0aW5ncyAqbGlua19zZXR0aW5ncywKMTQ0NzQ6ICAgZW51bSBjbG9ja19zb3Vy Y2VfaWQgY2xvY2tfc291cmNlKTsKMTQ0NzQ6ICB2b2lkICgqZW5hYmxlX2RwX21zdF9vdXRwdXQp KHN0cnVjdCBsaW5rX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX2xpbmtf c2V0dGluZ3MgKmxpbmtfc2V0dGluZ3MsCjE0NDc0OiAgIGVudW0gY2xvY2tfc291cmNlX2lkIGNs b2NrX3NvdXJjZSk7CjE0NDc0OiAgdm9pZCAoKmVuYWJsZV9sdmRzX291dHB1dCkoc3RydWN0IGxp bmtfZW5jb2RlciAqZW5jLAoxNDQ3NDogICBlbnVtIGNsb2NrX3NvdXJjZV9pZCBjbG9ja19zb3Vy Y2UsCjE0NDc0OiAgIHVpbnQzMl90IHBpeGVsX2Nsb2NrKTsKMTQ0NzQ6ICB2b2lkICgqZGlzYWJs ZV9vdXRwdXQpKHN0cnVjdCBsaW5rX2VuY29kZXIgKmxpbmtfZW5jLAoxNDQ3NDogICBlbnVtIHNp Z25hbF90eXBlIHNpZ25hbCk7CjE0NDc0OiAgdm9pZCAoKmRwX3NldF9sYW5lX3NldHRpbmdzKShz dHJ1Y3QgbGlua19lbmNvZGVyICplbmMsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBsaW5rX3RyYWlu aW5nX3NldHRpbmdzICpsaW5rX3NldHRpbmdzKTsKMTQ0NzQ6ICB2b2lkICgqZHBfc2V0X3BoeV9w YXR0ZXJuKShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBl bmNvZGVyX3NldF9kcF9waHlfcGF0dGVybl9wYXJhbSAqcGFyYSk7CjE0NDc0OiAgdm9pZCAoKnVw ZGF0ZV9tc3Rfc3RyZWFtX2FsbG9jYXRpb25fdGFibGUpKAoxNDQ3NDogICBzdHJ1Y3QgbGlua19l bmNvZGVyICplbmMsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBsaW5rX21zdF9zdHJlYW1fYWxsb2Nh dGlvbl90YWJsZSAqdGFibGUpOwoxNDQ3NDogIHZvaWQgKCpwc3JfcHJvZ3JhbV9kcF9kcGh5X2Zh c3RfdHJhaW5pbmcpKHN0cnVjdCBsaW5rX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgIGJvb2wgZXhp dF9saW5rX3RyYWluaW5nX3JlcXVpcmVkKTsKMTQ0NzQ6ICB2b2lkICgqcHNyX3Byb2dyYW1fc2Vj b25kYXJ5X3BhY2tldCkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAoxNDQ3NDogICAgIHVuc2ln bmVkIGludCBzZHBfdHJhbnNtaXRfbGluZV9udW1fZGVhZGxpbmUpOwoxNDQ3NDogIHZvaWQgKCpj b25uZWN0X2RpZ19iZV90b19mZSkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAoxNDQ3NDogICBl bnVtIGVuZ2luZV9pZCBlbmdpbmUsCjE0NDc0OiAgIGJvb2wgY29ubmVjdCk7CjE0NDc0OiAgdm9p ZCAoKmVuYWJsZV9ocGQpKHN0cnVjdCBsaW5rX2VuY29kZXIgKmVuYyk7CjE0NDc0OiAgdm9pZCAo KmRpc2FibGVfaHBkKShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMpOwoxNDQ3NDogIGJvb2wgKCpp c19kaWdfZW5hYmxlZCkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jKTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgKCpnZXRfZGlnX2Zyb250ZW5kKShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMpOwoxNDQ3 NDogIHZvaWQgKCpkZXN0cm95KShzdHJ1Y3QgbGlua19lbmNvZGVyICoqZW5jKTsKMTQ0NzQ6IAox NDQ3NDogIHZvaWQgKCpmZWNfc2V0X2VuYWJsZSkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAox NDQ3NDogICBib29sIGVuYWJsZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZmVjX3NldF9yZWFk eSkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAoxNDQ3NDogICBib29sIHJlYWR5KTsKMTQ0NzQ6 IAoxNDQ3NDogIGJvb2wgKCpmZWNfaXNfYWN0aXZlKShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMp OwoxNDQ3NDogIGJvb2wgKCppc19pbl9hbHRfbW9kZSkgKHN0cnVjdCBsaW5rX2VuY29kZXIgKmVu Yyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZ2V0X21heF9saW5rX2NhcCkoc3RydWN0IGxpbmtf ZW5jb2RlciAqZW5jLAoxNDQ3NDogICBzdHJ1Y3QgZGNfbGlua19zZXR0aW5ncyAqbGlua19zZXR0 aW5ncyk7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHNpZ25hbF90eXBlICgqZ2V0X2RpZ19tb2RlKSgK MTQ0NzQ6ICAgc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jKTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDMz ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3X3NlcXVl bmNlci5oIiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvY29yZV9zdGF0dXMuaCIgMQoxNDQ3NDogIyAyOSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jb3JlX3N0YXR1cy5oIgoxNDQ3NDogZW51 bSBkY19zdGF0dXMgewoxNDQ3NDogIERDX09LID0gMSwKMTQ0NzQ6IAoxNDQ3NDogIERDX05PX0NP TlRST0xMRVJfUkVTT1VSQ0UgPSAyLAoxNDQ3NDogIERDX05PX1NUUkVBTV9FTkNfUkVTT1VSQ0Ug PSAzLAoxNDQ3NDogIERDX05PX0NMT0NLX1NPVVJDRV9SRVNPVVJDRSA9IDQsCjE0NDc0OiAgRENf RkFJTF9DT05UUk9MTEVSX1ZBTElEQVRFID0gNSwKMTQ0NzQ6ICBEQ19GQUlMX0VOQ19WQUxJREFU RSA9IDYsCjE0NDc0OiAgRENfRkFJTF9BVFRBQ0hfU1VSRkFDRVMgPSA3LAoxNDQ3NDogIERDX0ZB SUxfREVUQUNIX1NVUkZBQ0VTID0gOCwKMTQ0NzQ6ICBEQ19GQUlMX1NVUkZBQ0VfVkFMSURBVEUg PSA5LAoxNDQ3NDogIERDX05PX0RQX0xJTktfQkFORFdJRFRIID0gMTAsCjE0NDc0OiAgRENfRVhD RUVEX0RPTkdMRV9DQVAgPSAxMSwKMTQ0NzQ6ICBEQ19TVVJGQUNFX1BJWEVMX0ZPUk1BVF9VTlNV UFBPUlRFRCA9IDEyLAoxNDQ3NDogIERDX0ZBSUxfQkFORFdJRFRIX1ZBTElEQVRFID0gMTMsCjE0 NDc0OiAgRENfRkFJTF9TQ0FMSU5HID0gMTQsCjE0NDc0OiAgRENfRkFJTF9EUF9MSU5LX1RSQUlO SU5HID0gMTUsCjE0NDc0OiAgRENfRkFJTF9EU0NfVkFMSURBVEUgPSAxNiwKMTQ0NzQ6ICBEQ19O T19EU0NfUkVTT1VSQ0UgPSAxNywKMTQ0NzQ6ICBEQ19GQUlMX1VOU1VQUE9SVEVEXzEgPSAxOCwK MTQ0NzQ6ICBEQ19GQUlMX0NMS19FWENFRURfTUFYID0gMjEsCjE0NDc0OiAgRENfRkFJTF9DTEtf QkVMT1dfTUlOID0gMjIsCjE0NDc0OiAgRENfRkFJTF9DTEtfQkVMT1dfQ0ZHX1JFUVVJUkVEID0g MjMsCjE0NDc0OiAKMTQ0NzQ6ICBEQ19FUlJPUl9VTkVYUEVDVEVEID0gLTEKMTQ0NzQ6IH07CjE0 NDc0OiAjIDM0ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5j L2h3X3NlcXVlbmNlci5oIiAyCjE0NDc0OiAKMTQ0NzQ6IGVudW0gdmxpbmVfc2VsZWN0IHsKMTQ0 NzQ6ICBWTElORTAsCjE0NDc0OiAgVkxJTkUxCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgcGlwZV9jdHg7CjE0NDc0OiBzdHJ1Y3QgZGNfc3RhdGU7CjE0NDc0OiBzdHJ1Y3QgZGNfc3Ry ZWFtX3N0YXR1czsKMTQ0NzQ6IHN0cnVjdCBkY193cml0ZWJhY2tfaW5mbzsKMTQ0NzQ6IHN0cnVj dCBkY2h1Yl9pbml0X2RhdGE7CjE0NDc0OiBzdHJ1Y3QgZGNfc3RhdGljX3NjcmVlbl9wYXJhbXM7 CjE0NDc0OiBzdHJ1Y3QgcmVzb3VyY2VfcG9vbDsKMTQ0NzQ6IHN0cnVjdCBkY19waHlfYWRkcl9z cGFjZV9jb25maWc7CjE0NDc0OiBzdHJ1Y3QgZGNfdmlydHVhbF9hZGRyX3NwYWNlX2NvbmZpZzsK MTQ0NzQ6IHN0cnVjdCBkcHA7CjE0NDc0OiBzdHJ1Y3QgZGNlX2h3c2VxOwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgaHdfc2VxdWVuY2VyX2Z1bmNzIHsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCplZHBf cG93ZXJfY29udHJvbCkoc3RydWN0IGRjX2xpbmsgKmxpbmssIGJvb2wgZW5hYmxlKTsKMTQ0NzQ6 ICB2b2lkICgqZWRwX3dhaXRfZm9yX2hwZF9yZWFkeSkoc3RydWN0IGRjX2xpbmsgKmxpbmssIGJv b2wgcG93ZXJfdXApOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaW5pdF9odykoc3Ry dWN0IGRjICpkYyk7CjE0NDc0OiAgdm9pZCAoKmVuYWJsZV9hY2NlbGVyYXRlZF9tb2RlKShzdHJ1 Y3QgZGMgKmRjLAoxNDQ3NDogICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KTsKMTQ0NzQ6ICBl bnVtIGRjX3N0YXR1cyAoKmFwcGx5X2N0eF90b19odykoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAg IHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAgdm9pZCAoKmRpc2FibGVfcGxhbmUp KHN0cnVjdCBkYyAqZGMsIHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogIHZvaWQg KCphcHBseV9jdHhfZm9yX3N1cmZhY2UpKHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICBjb25zdCBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0OiAgICBpbnQgbnVtX3BsYW5lcywg c3RydWN0IGRjX3N0YXRlICpjb250ZXh0KTsKMTQ0NzQ6ICB2b2lkICgqcHJvZ3JhbV9mcm9udF9l bmRfZm9yX2N0eCkoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgIHN0cnVjdCBkY19zdGF0ZSAqY29u dGV4dCk7CjE0NDc0OiAgdm9pZCAoKnVwZGF0ZV9wbGFuZV9hZGRyKShjb25zdCBzdHJ1Y3QgZGMg KmRjLAoxNDQ3NDogICAgc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7CjE0NDc0OiAgdm9pZCAo KnVwZGF0ZV9kY2h1Yikoc3RydWN0IGRjZV9od3NlcSAqaHdzLAoxNDQ3NDogICAgc3RydWN0IGRj aHViX2luaXRfZGF0YSAqZGhfZGF0YSk7CjE0NDc0OiAgdm9pZCAoKndhaXRfZm9yX21wY2NfZGlz Y29ubmVjdCkoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgIHN0cnVjdCByZXNvdXJjZV9wb29sICpy ZXNfcG9vbCwKMTQ0NzQ6ICAgIHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogIHZv aWQgKCpwcm9ncmFtX3RyaXBsZWJ1ZmZlcikoY29uc3Qgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAg c3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCwgYm9vbCBlbmFibGVUcmlwbGVCdWZmZXIpOwoxNDQ3 NDogIHZvaWQgKCp1cGRhdGVfcGVuZGluZ19zdGF0dXMpKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9j dHgpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqcGlwZV9jb250cm9sX2xvY2tfZ2xv YmFsKShzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICAgc3RydWN0IHBpcGVfY3R4ICpwaXBlLCBib29s IGxvY2spOwoxNDQ3NDogIHZvaWQgKCpwaXBlX2NvbnRyb2xfbG9jaykoc3RydWN0IGRjICpkYywK MTQ0NzQ6ICAgIHN0cnVjdCBwaXBlX2N0eCAqcGlwZSwgYm9vbCBsb2NrKTsKMTQ0NzQ6ICB2b2lk ICgqc2V0X2ZsaXBfY29udHJvbF9nc2wpKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgsCjE0NDc0 OiAgICBib29sIGZsaXBfaW1tZWRpYXRlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9pZCAo KmdldF9wb3NpdGlvbikoc3RydWN0IHBpcGVfY3R4ICoqcGlwZV9jdHgsIGludCBudW1fcGlwZXMs CjE0NDc0OiAgICBzdHJ1Y3QgY3J0Y19wb3NpdGlvbiAqcG9zaXRpb24pOwoxNDQ3NDogIGludCAo KmdldF92dXBkYXRlX29mZnNldF9mcm9tX3ZzeW5jKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4 KTsKMTQ0NzQ6ICB2b2lkICgqZW5hYmxlX3Blcl9mcmFtZV9jcnRjX3Bvc2l0aW9uX3Jlc2V0KShz dHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICAgaW50IGdyb3VwX3NpemUsIHN0cnVjdCBwaXBlX2N0eCAq Z3JvdXBlZF9waXBlc1tdKTsKMTQ0NzQ6ICB2b2lkICgqZW5hYmxlX3RpbWluZ19zeW5jaHJvbml6 YXRpb24pKHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICBpbnQgZ3JvdXBfaW5kZXgsIGludCBncm91 cF9zaXplLAoxNDQ3NDogICAgc3RydWN0IHBpcGVfY3R4ICpncm91cGVkX3BpcGVzW10pOwoxNDQ3 NDogIHZvaWQgKCpzZXR1cF9wZXJpb2RpY19pbnRlcnJ1cHQpKHN0cnVjdCBkYyAqZGMsCjE0NDc0 OiAgICBzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4LAoxNDQ3NDogICAgZW51bSB2bGluZV9zZWxl Y3QgdmxpbmUpOwoxNDQ3NDogIHZvaWQgKCpzZXRfZHJyKShzdHJ1Y3QgcGlwZV9jdHggKipwaXBl X2N0eCwgaW50IG51bV9waXBlcywKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCB2bWluLCB1bnNpZ25l ZCBpbnQgdm1heCwKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCB2bWlkLCB1bnNpZ25lZCBpbnQgdm1p ZF9mcmFtZV9udW1iZXIpOwoxNDQ3NDogIHZvaWQgKCpzZXRfc3RhdGljX3NjcmVlbl9jb250cm9s KShzdHJ1Y3QgcGlwZV9jdHggKipwaXBlX2N0eCwKMTQ0NzQ6ICAgIGludCBudW1fcGlwZXMsCjE0 NDc0OiAgICBjb25zdCBzdHJ1Y3QgZGNfc3RhdGljX3NjcmVlbl9wYXJhbXMgKmV2ZW50cyk7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCplbmFibGVfc3RyZWFtKShzdHJ1Y3QgcGlwZV9j dHggKnBpcGVfY3R4KTsKMTQ0NzQ6ICB2b2lkICgqZGlzYWJsZV9zdHJlYW0pKHN0cnVjdCBwaXBl X2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogIHZvaWQgKCpibGFua19zdHJlYW0pKHN0cnVjdCBwaXBl X2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogIHZvaWQgKCp1bmJsYW5rX3N0cmVhbSkoc3RydWN0IHBp cGVfY3R4ICpwaXBlX2N0eCwKMTQ0NzQ6ICAgIHN0cnVjdCBkY19saW5rX3NldHRpbmdzICpsaW5r X3NldHRpbmdzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnByZXBhcmVfYmFuZHdp ZHRoKShzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogIGJv b2wgKCp1cGRhdGVfYmFuZHdpZHRoKShzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfc3RhdGUgKmNv bnRleHQpOwoxNDQ3NDogIHZvaWQgKCpvcHRpbWl6ZV9iYW5kd2lkdGgpKHN0cnVjdCBkYyAqZGMs IHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQg KCpzZXRfYXZtdXRlKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4LCBib29sIGVuYWJsZSk7CjE0 NDc0OiAgdm9pZCAoKnNlbmRfaW1tZWRpYXRlX3NkcF9tZXNzYWdlKSgKMTQ0NzQ6ICAgIHN0cnVj dCBwaXBlX2N0eCAqcGlwZV9jdHgsCjE0NDc0OiAgICBjb25zdCB1aW50OF90ICpjdXN0b21fc2Rw X21lc3NhZ2UsCjE0NDc0OiAgICB1bnNpZ25lZCBpbnQgc2RwX21lc3NhZ2Vfc2l6ZSk7CjE0NDc0 OiAgdm9pZCAoKnVwZGF0ZV9pbmZvX2ZyYW1lKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4KTsK MTQ0NzQ6ICB2b2lkICgqc2V0X2RtZGF0YV9hdHRyaWJ1dGVzKShzdHJ1Y3QgcGlwZV9jdHggKnBp cGUpOwoxNDQ3NDogIHZvaWQgKCpwcm9ncmFtX2RtZGF0YV9lbmdpbmUpKHN0cnVjdCBwaXBlX2N0 eCAqcGlwZV9jdHgpOwoxNDQ3NDogIGJvb2wgKCpkbWRhdGFfc3RhdHVzX2RvbmUpKHN0cnVjdCBw aXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2V0X2N1 cnNvcl9wb3NpdGlvbikoc3RydWN0IHBpcGVfY3R4ICpwaXBlKTsKMTQ0NzQ6ICB2b2lkICgqc2V0 X2N1cnNvcl9hdHRyaWJ1dGUpKHN0cnVjdCBwaXBlX2N0eCAqcGlwZSk7CjE0NDc0OiAgdm9pZCAo KnNldF9jdXJzb3Jfc2RyX3doaXRlX2xldmVsKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGUpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqcHJvZ3JhbV9nYW11dF9yZW1hcCkoc3RydWN0IHBp cGVfY3R4ICpwaXBlX2N0eCk7CjE0NDc0OiAgdm9pZCAoKnByb2dyYW1fb3V0cHV0X2NzYykoc3Ry dWN0IGRjICpkYywgc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCwKMTQ0NzQ6ICAgIGVudW0gZGNf Y29sb3Jfc3BhY2UgY29sb3JzcGFjZSwKMTQ0NzQ6ICAgIHVpbnQxNl90ICptYXRyaXgsIGludCBv cHBfaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCppbml0X3N5c19jdHgpKHN0cnVj dCBkY2VfaHdzZXEgKmh3cywKMTQ0NzQ6ICAgIHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICBzdHJ1 Y3QgZGNfcGh5X2FkZHJfc3BhY2VfY29uZmlnICpwYV9jb25maWcpOwoxNDQ3NDogIHZvaWQgKCpp bml0X3ZtX2N0eCkoc3RydWN0IGRjZV9od3NlcSAqaHdzLAoxNDQ3NDogICAgc3RydWN0IGRjICpk YywKMTQ0NzQ6ICAgIHN0cnVjdCBkY192aXJ0dWFsX2FkZHJfc3BhY2VfY29uZmlnICp2YV9jb25m aWcsCjE0NDc0OiAgICBpbnQgdm1pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCp1 cGRhdGVfd3JpdGViYWNrKShzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICAgc3RydWN0IGRjX3dyaXRl YmFja19pbmZvICp3Yl9pbmZvLAoxNDQ3NDogICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KTsK MTQ0NzQ6ICB2b2lkICgqZW5hYmxlX3dyaXRlYmFjaykoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAg IHN0cnVjdCBkY193cml0ZWJhY2tfaW5mbyAqd2JfaW5mbywKMTQ0NzQ6ICAgIHN0cnVjdCBkY19z dGF0ZSAqY29udGV4dCk7CjE0NDc0OiAgdm9pZCAoKmRpc2FibGVfd3JpdGViYWNrKShzdHJ1Y3Qg ZGMgKmRjLAoxNDQ3NDogICAgdW5zaWduZWQgaW50IGR3Yl9waXBlX2luc3QpOwoxNDQ3NDogCjE0 NDc0OiAgYm9vbCAoKm1taHViYnViX3dhcm11cCkoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgIHVu c2lnbmVkIGludCBudW1fZHdiLAoxNDQ3NDogICAgc3RydWN0IGRjX3dyaXRlYmFja19pbmZvICp3 Yl9pbmZvKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgZW51bSBkY19zdGF0dXMgKCpzZXRfY2xv Y2spKHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICBlbnVtIGRjX2Nsb2NrX3R5cGUgY2xvY2tfdHlw ZSwKMTQ0NzQ6ICAgIHVpbnQzMl90IGNsa19raHosIHVpbnQzMl90IHN0ZXBwaW5nKTsKMTQ0NzQ6 ICB2b2lkICgqZ2V0X2Nsb2NrKShzdHJ1Y3QgZGMgKmRjLCBlbnVtIGRjX2Nsb2NrX3R5cGUgY2xv Y2tfdHlwZSwKMTQ0NzQ6ICAgIHN0cnVjdCBkY19jbG9ja19jb25maWcgKmNsb2NrX2NmZyk7CjE0 NDc0OiAgdm9pZCAoKm9wdGltaXplX3B3cl9zdGF0ZSkoY29uc3Qgc3RydWN0IGRjICpkYywKMTQ0 NzQ6ICAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAgdm9pZCAoKmV4aXRfb3B0 aW1pemVkX3B3cl9zdGF0ZSkoY29uc3Qgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgIHN0cnVjdCBk Y19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCplbmFibGVf YXVkaW9fc3RyZWFtKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4KTsKMTQ0NzQ6ICB2b2lkICgq ZGlzYWJsZV9hdWRpb19zdHJlYW0pKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2V0dXBfc3RlcmVvKShzdHJ1Y3QgcGlwZV9jdHggKnBp cGVfY3R4LCBzdHJ1Y3QgZGMgKmRjKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmxv Z19od19zdGF0ZSkoc3RydWN0IGRjICpkYywgc3RydWN0IGRjX2xvZ19idWZmZXJfY3R4ICpsb2df Y3R4KTsKMTQ0NzQ6ICB2b2lkICgqZ2V0X2h3X3N0YXRlKShzdHJ1Y3QgZGMgKmRjLCBjaGFyICpw QnVmLAoxNDQ3NDogICAgdW5zaWduZWQgaW50IGJ1ZlNpemUsIHVuc2lnbmVkIGludCBtYXNrKTsK MTQ0NzQ6ICB2b2lkICgqY2xlYXJfc3RhdHVzX2JpdHMpKHN0cnVjdCBkYyAqZGMsIHVuc2lnbmVk IGludCBtYXNrKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB2b2lk IGNvbG9yX3NwYWNlX3RvX2JsYWNrX2NvbG9yKAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkYyAqZGMs CjE0NDc0OiAgZW51bSBkY19jb2xvcl9zcGFjZSBjb2xvcnNwYWNlLAoxNDQ3NDogIHN0cnVjdCB0 Z19jb2xvciAqYmxhY2tfY29sb3IpOwoxNDQ3NDogCjE0NDc0OiBib29sIGh3c3Nfd2FpdF9mb3Jf YmxhbmtfY29tcGxldGUoCjE0NDc0OiAgIHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0Zyk7CjE0 NDc0OiAKMTQ0NzQ6IGNvbnN0IHVpbnQxNl90ICpmaW5kX2NvbG9yX21hdHJpeCgKMTQ0NzQ6ICAg ZW51bSBkY19jb2xvcl9zcGFjZSBjb2xvcl9zcGFjZSwKMTQ0NzQ6ICAgdWludDMyX3QgKmFycmF5 X3NpemUpOwoxNDQ3NDogIyAzOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2RjLmgiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2luYy9jb21wcmVzc29yLmgiIDEKMTQ0NzQ6ICMgMzAgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29tcHJlc3Nvci5oIgoxNDQ3NDog IyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9iaW9z X3BhcnNlcl9pbnRlcmZhY2UuaCIgMQoxNDQ3NDogIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvYmlvc19wYXJzZXJfaW50ZXJmYWNlLmgiCjE0NDc0 OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY19iaW9z X3R5cGVzLmgiIDEKMTQ0NzQ6ICMgNDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9kY19iaW9zX3R5cGVzLmgiCjE0NDc0OiBzdHJ1Y3QgZGNfdmJpb3NfZnVuY3Mg ewoxNDQ3NDogIHVpbnQ4X3QgKCpnZXRfY29ubmVjdG9yc19udW1iZXIpKHN0cnVjdCBkY19iaW9z ICpiaW9zKTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgKCpnZXRf Y29ubmVjdG9yX2lkKSgKMTQ0NzQ6ICAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCjE0NDc0OiAgIHVp bnQ4X3QgY29ubmVjdG9yX2luZGV4KTsKMTQ0NzQ6ICBlbnVtIGJwX3Jlc3VsdCAoKmdldF9zcmNf b2JqKSgKMTQ0NzQ6ICAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCjE0NDc0OiAgIHN0cnVjdCBncmFw aGljc19vYmplY3RfaWQgb2JqZWN0X2lkLCB1aW50MzJfdCBpbmRleCwKMTQ0NzQ6ICAgc3RydWN0 IGdyYXBoaWNzX29iamVjdF9pZCAqc3JjX29iamVjdF9pZCk7CjE0NDc0OiAgZW51bSBicF9yZXN1 bHQgKCpnZXRfaTJjX2luZm8pKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqZGNiLAoxNDQ3NDog ICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGlkLAoxNDQ3NDogICBzdHJ1Y3QgZ3JhcGhpY3Nf b2JqZWN0X2kyY19pbmZvICppbmZvKTsKMTQ0NzQ6ICBlbnVtIGJwX3Jlc3VsdCAoKmdldF9ocGRf aW5mbykoCjE0NDc0OiAgIHN0cnVjdCBkY19iaW9zICpiaW9zLAoxNDQ3NDogICBzdHJ1Y3QgZ3Jh cGhpY3Nfb2JqZWN0X2lkIGlkLAoxNDQ3NDogICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2hwZF9p bmZvICppbmZvKTsKMTQ0NzQ6ICBlbnVtIGJwX3Jlc3VsdCAoKmdldF9kZXZpY2VfdGFnKSgKMTQ0 NzQ6ICAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCjE0NDc0OiAgIHN0cnVjdCBncmFwaGljc19vYmpl Y3RfaWQgY29ubmVjdG9yX29iamVjdF9pZCwKMTQ0NzQ6ICAgdWludDMyX3QgZGV2aWNlX3RhZ19p bmRleCwKMTQ0NzQ6ICAgc3RydWN0IGNvbm5lY3Rvcl9kZXZpY2VfdGFnX2luZm8gKmluZm8pOwox NDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqZ2V0X3NwcmVhZF9zcGVjdHJ1bV9pbmZvKSgKMTQ0NzQ6 ICAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCjE0NDc0OiAgIGVudW0gYXNfc2lnbmFsX3R5cGUgc2ln bmFsLAoxNDQ3NDogICB1aW50MzJfdCBpbmRleCwKMTQ0NzQ6ICAgc3RydWN0IHNwcmVhZF9zcGVj dHJ1bV9pbmZvICpzc19pbmZvKTsKMTQ0NzQ6ICB1aW50MzJfdCAoKmdldF9zc19lbnRyeV9udW1i ZXIpKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAgZW51bSBhc19zaWdu YWxfdHlwZSBzaWduYWwpOwoxNDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqZ2V0X2VtYmVkZGVkX3Bh bmVsX2luZm8pKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAgc3RydWN0 IGVtYmVkZGVkX3BhbmVsX2luZm8gKmluZm8pOwoxNDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqZ2V0 X2dwaW9fcGluX2luZm8pKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAg dWludDMyX3QgZ3Bpb19pZCwKMTQ0NzQ6ICAgc3RydWN0IGdwaW9fcGluX2luZm8gKmluZm8pOwox NDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqZ2V0X2VuY29kZXJfY2FwX2luZm8pKAoxNDQ3NDogICBz dHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBv YmplY3RfaWQsCjE0NDc0OiAgIHN0cnVjdCBicF9lbmNvZGVyX2NhcF9pbmZvICppbmZvKTsKMTQ0 NzQ6IAoxNDQ3NDogIGJvb2wgKCppc19hY2NlbGVyYXRlZF9tb2RlKSgKMTQ0NzQ6ICAgc3RydWN0 IGRjX2Jpb3MgKmJpb3MpOwoxNDQ3NDogIHZvaWQgKCpzZXRfc2NyYXRjaF9jcml0aWNhbF9zdGF0 ZSkoCjE0NDc0OiAgIHN0cnVjdCBkY19iaW9zICpiaW9zLAoxNDQ3NDogICBib29sIHN0YXRlKTsK MTQ0NzQ6ICBib29sICgqaXNfZGV2aWNlX2lkX3N1cHBvcnRlZCkoCjE0NDc0OiAgIHN0cnVjdCBk Y19iaW9zICpiaW9zLAoxNDQ3NDogICBzdHJ1Y3QgZGV2aWNlX2lkIGlkKTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGJwX3Jlc3VsdCAoKmVuY29kZXJfY29udHJvbCkoCjE0 NDc0OiAgIHN0cnVjdCBkY19iaW9zICpiaW9zLAoxNDQ3NDogICBzdHJ1Y3QgYnBfZW5jb2Rlcl9j b250cm9sICpjbnRsKTsKMTQ0NzQ6ICBlbnVtIGJwX3Jlc3VsdCAoKnRyYW5zbWl0dGVyX2NvbnRy b2wpKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAgc3RydWN0IGJwX3Ry YW5zbWl0dGVyX2NvbnRyb2wgKmNudGwpOwoxNDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqZW5hYmxl X2NydGMpKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAgZW51bSBjb250 cm9sbGVyX2lkIGlkLAoxNDQ3NDogICBib29sIGVuYWJsZSk7CjE0NDc0OiAgZW51bSBicF9yZXN1 bHQgKCphZGp1c3RfcGl4ZWxfY2xvY2spKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywK MTQ0NzQ6ICAgc3RydWN0IGJwX2FkanVzdF9waXhlbF9jbG9ja19wYXJhbWV0ZXJzICpicF9wYXJh bXMpOwoxNDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqc2V0X3BpeGVsX2Nsb2NrKSgKMTQ0NzQ6ICAg c3RydWN0IGRjX2Jpb3MgKmJpb3MsCjE0NDc0OiAgIHN0cnVjdCBicF9waXhlbF9jbG9ja19wYXJh bWV0ZXJzICpicF9wYXJhbXMpOwoxNDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqc2V0X2RjZV9jbG9j aykoCjE0NDc0OiAgIHN0cnVjdCBkY19iaW9zICpiaW9zLAoxNDQ3NDogICBzdHJ1Y3QgYnBfc2V0 X2RjZV9jbG9ja19wYXJhbWV0ZXJzICpicF9wYXJhbXMpOwoxNDQ3NDogIGVudW0gYnBfcmVzdWx0 ICgqZW5hYmxlX3NwcmVhZF9zcGVjdHJ1bV9vbl9wcGxsKSgKMTQ0NzQ6ICAgc3RydWN0IGRjX2Jp b3MgKmJpb3MsCjE0NDc0OiAgIHN0cnVjdCBicF9zcHJlYWRfc3BlY3RydW1fcGFyYW1ldGVycyAq YnBfcGFyYW1zLAoxNDQ3NDogICBib29sIGVuYWJsZSk7CjE0NDc0OiAgZW51bSBicF9yZXN1bHQg KCpwcm9ncmFtX2NydGNfdGltaW5nKSgKMTQ0NzQ6ICAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCjE0 NDc0OiAgIHN0cnVjdCBicF9od19jcnRjX3RpbWluZ19wYXJhbWV0ZXJzICpicF9wYXJhbXMpOwox NDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqcHJvZ3JhbV9kaXNwbGF5X2VuZ2luZV9wbGwpKAoxNDQ3 NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAgc3RydWN0IGJwX3BpeGVsX2Nsb2Nr X3BhcmFtZXRlcnMgKmJwX3BhcmFtcyk7CjE0NDc0OiAgZW51bSBicF9yZXN1bHQgKCplbmFibGVf ZGlzcF9wb3dlcl9nYXRpbmcpKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6 ICAgZW51bSBjb250cm9sbGVyX2lkIGNvbnRyb2xsZXJfaWQsCjE0NDc0OiAgIGVudW0gYnBfcGlw ZV9jb250cm9sX2FjdGlvbiBhY3Rpb24pOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmJpb3NfcGFy c2VyX2Rlc3Ryb3kpKHN0cnVjdCBkY19iaW9zICoqZGNiKTsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0g YnBfcmVzdWx0ICgqZ2V0X2JvYXJkX2xheW91dF9pbmZvKSgKMTQ0NzQ6ICAgc3RydWN0IGRjX2Jp b3MgKmRjYiwKMTQ0NzQ6ICAgc3RydWN0IGJvYXJkX2xheW91dF9pbmZvICpib2FyZF9sYXlvdXRf aW5mbyk7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYmlvc19yZWdpc3RlcnMgewox NDQ3NDogIHVpbnQzMl90IEJJT1NfU0NSQVRDSF8zOwoxNDQ3NDogIHVpbnQzMl90IEJJT1NfU0NS QVRDSF82OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX2Jpb3MgewoxNDQ3NDog IGNvbnN0IHN0cnVjdCBkY192Ymlvc19mdW5jcyAqZnVuY3M7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50 OF90ICpiaW9zOwoxNDQ3NDogIHVpbnQzMl90IGJpb3Nfc2l6ZTsKMTQ0NzQ6IAoxNDQ3NDogIHVp bnQ4X3QgKmJpb3NfbG9jYWxfaW1hZ2U7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4 dCAqY3R4OwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBiaW9zX3JlZ2lzdGVycyAqcmVnczsKMTQ0NzQ6 ICBzdHJ1Y3QgaW50ZWdyYXRlZF9pbmZvICppbnRlZ3JhdGVkX2luZm87CjE0NDc0OiAgc3RydWN0 IGRjX2Zpcm13YXJlX2luZm8gZndfaW5mbzsKMTQ0NzQ6ICBib29sIGZ3X2luZm9fdmFsaWQ7CjE0 NDc0OiB9OwoxNDQ3NDogIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2luY2x1ZGUvYmlvc19wYXJzZXJfaW50ZXJmYWNlLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGJpb3NfcGFyc2VyOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYnBfaW5pdF9kYXRhIHsKMTQ0 NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIHVpbnQ4X3QgKmJpb3M7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfYmlvcyAqZGFsX2Jpb3NfcGFyc2VyX2NyZWF0 ZSgKMTQ0NzQ6ICBzdHJ1Y3QgYnBfaW5pdF9kYXRhICppbml0LAoxNDQ3NDogIGVudW0gZGNlX3Zl cnNpb24gZGNlX3ZlcnNpb24pOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGRhbF9iaW9zX3BhcnNlcl9k ZXN0cm95KHN0cnVjdCBkY19iaW9zICoqZGNiKTsKMTQ0NzQ6ICMgMzEgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29tcHJlc3Nvci5oIiAyCjE0NDc0OiAK MTQ0NzQ6IGVudW0gZmJjX2NvbXByZXNzX3JhdGlvIHsKMTQ0NzQ6ICBGQkNfQ09NUFJFU1NfUkFU SU9fSU5WQUxJRCA9IDAsCjE0NDc0OiAgRkJDX0NPTVBSRVNTX1JBVElPXzFUTzEgPSAxLAoxNDQ3 NDogIEZCQ19DT01QUkVTU19SQVRJT18yVE8xID0gMiwKMTQ0NzQ6ICBGQkNfQ09NUFJFU1NfUkFU SU9fNFRPMSA9IDQsCjE0NDc0OiAgRkJDX0NPTVBSRVNTX1JBVElPXzhUTzEgPSA4LAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZmJjX3BoeXNpY2FsX2FkZHJlc3MgewoxNDQ3NDogIHN0 cnVjdCB7CjE0NDc0OiAgIHVpbnQzMl90IGxvd19wYXJ0OwoxNDQ3NDogICBpbnQzMl90IGhpZ2hf cGFydDsKMTQ0NzQ6ICB9IGFkZHI7CjE0NDc0OiAgdWludDY0X3QgcXVhZF9wYXJ0OwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNvbXByX2FkZHJfYW5kX3BpdGNoX3BhcmFtcyB7CjE0 NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBpbnN0OwoxNDQ3NDogIHVpbnQzMl90IHNvdXJjZV92aWV3 X3dpZHRoOwoxNDQ3NDogIHVpbnQzMl90IHNvdXJjZV92aWV3X2hlaWdodDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gZmJjX2h3X21heF9yZXNvbHV0aW9uX3N1cHBvcnRlZCB7CjE0NDc0 OiAgRkJDX01BWF9YID0gMzg0MCwKMTQ0NzQ6ICBGQkNfTUFYX1kgPSAyNDAwLAoxNDQ3NDogIEZC Q19NQVhfWF9TRyA9IDE5MjAsCjE0NDc0OiAgRkJDX01BWF9ZX1NHID0gMTA4MCwKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjb21wcmVzc29yOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg Y29tcHJlc3Nvcl9mdW5jcyB7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqcG93ZXJfdXBfZmJjKShz dHJ1Y3QgY29tcHJlc3NvciAqY3ApOwoxNDQ3NDogIHZvaWQgKCplbmFibGVfZmJjKShzdHJ1Y3Qg Y29tcHJlc3NvciAqY3AsCjE0NDc0OiAgIHN0cnVjdCBjb21wcl9hZGRyX2FuZF9waXRjaF9wYXJh bXMgKnBhcmFtcyk7CjE0NDc0OiAgdm9pZCAoKmRpc2FibGVfZmJjKShzdHJ1Y3QgY29tcHJlc3Nv ciAqY3ApOwoxNDQ3NDogIHZvaWQgKCpzZXRfZmJjX2ludmFsaWRhdGlvbl90cmlnZ2Vycykoc3Ry dWN0IGNvbXByZXNzb3IgKmNwLAoxNDQ3NDogICB1aW50MzJfdCBmYmNfdHJpZ2dlcik7CjE0NDc0 OiAgdm9pZCAoKnN1cmZhY2VfYWRkcmVzc19hbmRfcGl0Y2gpKAoxNDQ3NDogICBzdHJ1Y3QgY29t cHJlc3NvciAqY3AsCjE0NDc0OiAgIHN0cnVjdCBjb21wcl9hZGRyX2FuZF9waXRjaF9wYXJhbXMg KnBhcmFtcyk7CjE0NDc0OiAgYm9vbCAoKmlzX2ZiY19lbmFibGVkX2luX2h3KShzdHJ1Y3QgY29t cHJlc3NvciAqY3AsCjE0NDc0OiAgIHVpbnQzMl90ICpmYmNfbWFwcGVkX2NydGNfaWQpOwoxNDQ3 NDogfTsKMTQ0NzQ6IHN0cnVjdCBjb21wcmVzc29yIHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4 dCAqY3R4OwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgYXR0YWNoZWRfaW5zdDsKMTQ0NzQ6ICBi b29sIGlzX2VuYWJsZWQ7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGNvbXByZXNzb3JfZnVuY3MgKmZ1 bmNzOwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgdWludDMyX3QgcmF3OwoxNDQ3NDogICBzdHJ1 Y3QgewoxNDQ3NDogICAgdWludDMyX3QgRkJDX1NVUFBPUlQ6MTsKMTQ0NzQ6ICAgIHVpbnQzMl90 IEZCX1BPT0w6MTsKMTQ0NzQ6ICAgIHVpbnQzMl90IERZTkFNSUNfQUxMT0M6MTsKMTQ0NzQ6ICAg IHVpbnQzMl90IExQVF9TVVBQT1JUOjE7CjE0NDc0OiAgICB1aW50MzJfdCBMUFRfTUNfQ09ORklH OjE7CjE0NDc0OiAgICB1aW50MzJfdCBEVU1NWV9CQUNLRU5EOjE7CjE0NDc0OiAgICB1aW50MzJf dCBDTEtfR0FUSU5HX0RJU0FCTEVEOjE7CjE0NDc0OiAKMTQ0NzQ6ICAgfSBiaXRzOwoxNDQ3NDog IH0gb3B0aW9uczsKMTQ0NzQ6IAoxNDQ3NDogIHVuaW9uIGZiY19waHlzaWNhbF9hZGRyZXNzIGNv bXByX3N1cmZhY2VfYWRkcmVzczsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGVtYmVkZGVkX3Bh bmVsX2hfc2l6ZTsKMTQ0NzQ6ICB1aW50MzJfdCBlbWJlZGRlZF9wYW5lbF92X3NpemU7CjE0NDc0 OiAgdWludDMyX3QgbWVtb3J5X2J1c193aWR0aDsKMTQ0NzQ6ICB1aW50MzJfdCBiYW5rc19udW07 CjE0NDc0OiAgdWludDMyX3QgcmF3X3NpemU7CjE0NDc0OiAgdWludDMyX3QgY2hhbm5lbF9pbnRl cmxlYXZlX3NpemU7CjE0NDc0OiAgdWludDMyX3QgZHJhbV9jaGFubmVsc19udW07CjE0NDc0OiAK MTQ0NzQ6ICB1aW50MzJfdCBhbGxvY2F0ZWRfc2l6ZTsKMTQ0NzQ6ICB1aW50MzJfdCBwcmVmZXJy ZWRfcmVxdWVzdGVkX3NpemU7CjE0NDc0OiAgdWludDMyX3QgbHB0X2NoYW5uZWxzX251bTsKMTQ0 NzQ6ICBlbnVtIGZiY19jb21wcmVzc19yYXRpbyBtaW5fY29tcHJlc3NfcmF0aW87CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZmJjX2lucHV0X2luZm8gewoxNDQ3NDogIGJvb2wgZHlu YW1pY19mYmNfYnVmZmVyX2FsbG9jOwoxNDQ3NDogIHVuc2lnbmVkIGludCBzb3VyY2Vfdmlld193 aWR0aDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc291cmNlX3ZpZXdfaGVpZ2h0OwoxNDQ3NDogIHVu c2lnbmVkIGludCBudW1fb2ZfYWN0aXZlX3RhcmdldHM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBmYmNfcmVxdWVzdGVkX2NvbXByZXNzZWRfc2l6ZSB7CjE0NDc0OiAg dW5zaWduZWQgaW50IHByZWZlcnJlZF9zaXplOwoxNDQ3NDogIHVuc2lnbmVkIGludCBwcmVmZXJy ZWRfc2l6ZV9hbGlnbm1lbnQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1pbl9zaXplOwoxNDQ3NDog IHVuc2lnbmVkIGludCBtaW5fc2l6ZV9hbGlnbm1lbnQ7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDog ICBzdHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAgICB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX211c3Rf YmVfZnJhbWVidWZmZXJfcG9vbCA6IDE7CjE0NDc0OiAKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCBt aW5fbXVzdF9iZV9mcmFtZWJ1ZmZlcl9wb29sIDogMTsKMTQ0NzQ6ICAgfSBiaXRzOwoxNDQ3NDog ICB1bnNpZ25lZCBpbnQgZmxhZ3M7CjE0NDc0OiAgfTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDM5ICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMgoxNDQ3NDog IyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Rt Y3UuaCIgMQoxNDQ3NDogIyAyOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2luYy9ody9kbWN1LmgiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlc190eXBlcy5oIiAxCjE0NDc0OiAjIDI5ICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2RtY3UuaCIg MgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBkbWN1X3N0YXRlIHsKMTQ0NzQ6ICBETUNVX1VOTE9BREVEID0gMCwKMTQ0NzQ6ICBETUNV X0xPQURFRF9VTklOSVRJQUxJWkVEID0gMSwKMTQ0NzQ6ICBETUNVX1JVTk5JTkcgPSAyLAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRtY3VfdmVyc2lvbiB7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGludGVyZmFjZV92ZXJzaW9uOwoxNDQ3NDogIHVuc2lnbmVkIGludCBhYm1fdmVyc2lv bjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcHNyX3ZlcnNpb247CjE0NDc0OiAgdW5zaWduZWQgaW50 IGJ1aWxkX3ZlcnNpb247CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZG1jdSB7CjE0 NDc0OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZG1jdV9m dW5jcyAqZnVuY3M7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRtY3Vfc3RhdGUgZG1jdV9zdGF0ZTsK MTQ0NzQ6ICBzdHJ1Y3QgZG1jdV92ZXJzaW9uIGRtY3VfdmVyc2lvbjsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgY2FjaGVkX3dhaXRfbG9vcF9udW1iZXI7CjE0NDc0OiAgdWludDMyX3QgcHNwX3ZlcnNp b247CjE0NDc0OiAgYm9vbCBhdXRvX2xvYWRfZG1jdTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkbWN1X2Z1bmNzIHsKMTQ0NzQ6ICBib29sICgqZG1jdV9pbml0KShzdHJ1Y3QgZG1j dSAqZG1jdSk7CjE0NDc0OiAgYm9vbCAoKmxvYWRfaXJhbSkoc3RydWN0IGRtY3UgKmRtY3UsCjE0 NDc0OiAgICB1bnNpZ25lZCBpbnQgc3RhcnRfb2Zmc2V0LAoxNDQ3NDogICAgY29uc3QgY2hhciAq c3JjLAoxNDQ3NDogICAgdW5zaWduZWQgaW50IGJ5dGVzKTsKMTQ0NzQ6ICB2b2lkICgqc2V0X3Bz cl9lbmFibGUpKHN0cnVjdCBkbWN1ICpkbWN1LCBib29sIGVuYWJsZSwgYm9vbCB3YWl0KTsKMTQ0 NzQ6ICBib29sICgqc2V0dXBfcHNyKShzdHJ1Y3QgZG1jdSAqZG1jdSwKMTQ0NzQ6ICAgIHN0cnVj dCBkY19saW5rICpsaW5rLAoxNDQ3NDogICAgc3RydWN0IHBzcl9jb250ZXh0ICpwc3JfY29udGV4 dCk7CjE0NDc0OiAgdm9pZCAoKmdldF9wc3Jfc3RhdGUpKHN0cnVjdCBkbWN1ICpkbWN1LCB1aW50 MzJfdCAqcHNyX3N0YXRlKTsKMTQ0NzQ6ICB2b2lkICgqc2V0X3Bzcl93YWl0X2xvb3ApKHN0cnVj dCBkbWN1ICpkbWN1LAoxNDQ3NDogICAgdW5zaWduZWQgaW50IHdhaXRfbG9vcF9udW1iZXIpOwox NDQ3NDogIHZvaWQgKCpnZXRfcHNyX3dhaXRfbG9vcCkoc3RydWN0IGRtY3UgKmRtY3UsCjE0NDc0 OiAgICB1bnNpZ25lZCBpbnQgKnBzcl93YWl0X2xvb3BfbnVtYmVyKTsKMTQ0NzQ6ICBib29sICgq aXNfZG1jdV9pbml0aWFsaXplZCkoc3RydWN0IGRtY3UgKmRtY3UpOwoxNDQ3NDogIGJvb2wgKCps b2NrX3BoeSkoc3RydWN0IGRtY3UgKmRtY3UpOwoxNDQ3NDogIGJvb2wgKCp1bmxvY2tfcGh5KShz dHJ1Y3QgZG1jdSAqZG1jdSk7CjE0NDc0OiB9OwoxNDQ3NDogIyA0MCAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjLmgiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X21vZGVfbGliLmgi IDEKMTQ0NzQ6ICMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9kbWwvZGlzcGxheV9tb2RlX2xpYi5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1sL2RtbF9jb21tb25fZGVmcy5oIiAxCjE0NDc0OiAj IDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1sL2RtbF9j b21tb25fZGVmcy5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvZG1sL2RjX2ZlYXR1cmVzLmgiIDEKMTQ0NzQ6ICMgMzEgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZG1sX2NvbW1vbl9kZWZzLmgiIDIK MTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Rt bC9kaXNwbGF5X21vZGVfc3RydWN0cy5oIiAxCjE0NDc0OiAjIDMwICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1sL2Rpc3BsYXlfbW9kZV9zdHJ1Y3RzLmgiCjE0 NDc0OiB0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV92b2x0YWdlX3NjYWxpbmdfc3Qgdm9sdGFnZV9z Y2FsaW5nX3N0OwoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlfc29jX2JvdW5kaW5nX2Jv eF9zdCBzb2NfYm91bmRpbmdfYm94X3N0OwoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlf aXBfcGFyYW1zX3N0IGlwX3BhcmFtc19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3NfZHBp X2Rpc3BsYXlfcGlwZV9zb3VyY2VfcGFyYW1zX3N0IGRpc3BsYXlfcGlwZV9zb3VyY2VfcGFyYW1z X3N0OwoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9vdXRwdXRfcGFyYW1z X3N0IGRpc3BsYXlfb3V0cHV0X3BhcmFtc19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3Nf ZHBpX3NjYWxlcl9yYXRpb19kZXB0aF9zdCBzY2FsZXJfcmF0aW9fZGVwdGhfc3Q7CjE0NDc0OiB0 eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9zY2FsZXJfdGFwc19zdCBzY2FsZXJfdGFwc19zdDsKMTQ0 NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfcGlwZV9kZXN0X3BhcmFtc19zdCBk aXNwbGF5X3BpcGVfZGVzdF9wYXJhbXNfc3Q7CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBfdmNzX2Rw aV9kaXNwbGF5X3BpcGVfcGFyYW1zX3N0IGRpc3BsYXlfcGlwZV9wYXJhbXNfc3Q7CjE0NDc0OiB0 eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2Nsb2Nrc19hbmRfY2ZnX3N0IGRpc3BsYXlf Y2xvY2tzX2FuZF9jZmdfc3Q7CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdDsKMTQ0NzQ6IHR5 cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGF0YV9ycV9taXNjX3BhcmFtc19zdCBkaXNw bGF5X2RhdGFfcnFfbWlzY19wYXJhbXNfc3Q7CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBfdmNzX2Rw aV9kaXNwbGF5X2RhdGFfcnFfc2l6aW5nX3BhcmFtc19zdCBkaXNwbGF5X2RhdGFfcnFfc2l6aW5n X3BhcmFtc19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGF0YV9y cV9kbGdfcGFyYW1zX3N0IGRpc3BsYXlfZGF0YV9ycV9kbGdfcGFyYW1zX3N0OwoxNDQ3NDogdHlw ZWRlZiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9kbGdfcGFyYW1zX3N0IGRpc3BsYXlfcnFf ZGxnX3BhcmFtc19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfcnFf c2l6aW5nX3BhcmFtc19zdCBkaXNwbGF5X3JxX3NpemluZ19wYXJhbXNfc3Q7CjE0NDc0OiB0eXBl ZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3JxX21pc2NfcGFyYW1zX3N0IGRpc3BsYXlfcnFf bWlzY19wYXJhbXNfc3Q7CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3Jx X3BhcmFtc19zdCBkaXNwbGF5X3JxX3BhcmFtc19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92 Y3NfZHBpX2Rpc3BsYXlfZGxnX3JlZ3Nfc3QgZGlzcGxheV9kbGdfcmVnc19zdDsKMTQ0NzQ6IHR5 cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfdHR1X3JlZ3Nfc3QgZGlzcGxheV90dHVfcmVn c19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGF0YV9ycV9yZWdz X3N0IGRpc3BsYXlfZGF0YV9ycV9yZWdzX3N0OwoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgX3Zjc19k cGlfZGlzcGxheV9ycV9yZWdzX3N0IGRpc3BsYXlfcnFfcmVnc19zdDsKMTQ0NzQ6IHR5cGVkZWYg c3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGxnX3N5c19wYXJhbXNfc3QgZGlzcGxheV9kbGdfc3lz X3BhcmFtc19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfYXJiX3Bh cmFtc19zdCBkaXNwbGF5X2FyYl9wYXJhbXNfc3Q7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBfdmNz X2RwaV92b2x0YWdlX3NjYWxpbmdfc3QgewoxNDQ3NDogIGludCBzdGF0ZTsKMTQ0NzQ6ICBkb3Vi bGUgZHNjY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUgZGNmY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUg c29jY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUgcGh5Y2xrX2QxOF9taHo7CjE0NDc0OiAgZG91Ymxl IGRyYW1fc3BlZWRfbXRzOwoxNDQ3NDogIGRvdWJsZSBmYWJyaWNjbGtfbWh6OwoxNDQ3NDogIGRv dWJsZSBkaXNwY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUgcGh5Y2xrX21oejsKMTQ0NzQ6ICBkb3Vi bGUgZHBwY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUgZHRiY2xrX21oejsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBfdmNzX2RwaV9zb2NfYm91bmRpbmdfYm94X3N0IHsKMTQ0NzQ6ICBk b3VibGUgc3JfZXhpdF90aW1lX3VzOwoxNDQ3NDogIGRvdWJsZSBzcl9lbnRlcl9wbHVzX2V4aXRf dGltZV91czsKMTQ0NzQ6ICBkb3VibGUgdXJnZW50X2xhdGVuY3lfdXM7CjE0NDc0OiAgZG91Ymxl IHVyZ2VudF9sYXRlbmN5X3BpeGVsX2RhdGFfb25seV91czsKMTQ0NzQ6ICBkb3VibGUgdXJnZW50 X2xhdGVuY3lfcGl4ZWxfbWl4ZWRfd2l0aF92bV9kYXRhX3VzOwoxNDQ3NDogIGRvdWJsZSB1cmdl bnRfbGF0ZW5jeV92bV9kYXRhX29ubHlfdXM7CjE0NDc0OiAgZG91YmxlIHdyaXRlYmFja19sYXRl bmN5X3VzOwoxNDQ3NDogIGRvdWJsZSBpZGVhbF9kcmFtX2J3X2FmdGVyX3VyZ2VudF9wZXJjZW50 OwoxNDQ3NDogIGRvdWJsZSBwY3RfaWRlYWxfZHJhbV9zZHBfYndfYWZ0ZXJfdXJnZW50X3BpeGVs X29ubHk7CjE0NDc0OiAgZG91YmxlIHBjdF9pZGVhbF9kcmFtX3NkcF9id19hZnRlcl91cmdlbnRf cGl4ZWxfYW5kX3ZtOwoxNDQ3NDogIGRvdWJsZSBwY3RfaWRlYWxfZHJhbV9zZHBfYndfYWZ0ZXJf dXJnZW50X3ZtX29ubHk7CjE0NDc0OiAgZG91YmxlIG1heF9hdmdfc2RwX2J3X3VzZV9ub3JtYWxf cGVyY2VudDsKMTQ0NzQ6ICBkb3VibGUgbWF4X2F2Z19kcmFtX2J3X3VzZV9ub3JtYWxfcGVyY2Vu dDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWF4X3JlcXVlc3Rfc2l6ZV9ieXRlczsKMTQ0NzQ6ICBk b3VibGUgZG93bnNwcmVhZF9wZXJjZW50OwoxNDQ3NDogIGRvdWJsZSBkcmFtX3BhZ2Vfb3Blbl90 aW1lX25zOwoxNDQ3NDogIGRvdWJsZSBkcmFtX3J3X3R1cm5hcm91bmRfdGltZV9uczsKMTQ0NzQ6 ICBkb3VibGUgZHJhbV9yZXR1cm5fYnVmZmVyX3Blcl9jaGFubmVsX2J5dGVzOwoxNDQ3NDogIGRv dWJsZSBkcmFtX2NoYW5uZWxfd2lkdGhfYnl0ZXM7CjE0NDc0OiAgZG91YmxlIGZhYnJpY19kYXRh cGF0aF90b19kY25fZGF0YV9yZXR1cm5fYnl0ZXM7CjE0NDc0OiAgZG91YmxlIGRjbl9kb3duc3By ZWFkX3BlcmNlbnQ7CjE0NDc0OiAgZG91YmxlIGRpc3BjbGtfZHBwY2xrX3Zjb19zcGVlZF9taHo7 CjE0NDc0OiAgZG91YmxlIGRmc192Y29fcGVyaW9kX3BzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB1 cmdlbnRfb3V0X29mX29yZGVyX3JldHVybl9wZXJfY2hhbm5lbF9waXhlbF9vbmx5X2J5dGVzOwox NDQ3NDogIHVuc2lnbmVkIGludCB1cmdlbnRfb3V0X29mX29yZGVyX3JldHVybl9wZXJfY2hhbm5l bF9waXhlbF9hbmRfdm1fYnl0ZXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IHVyZ2VudF9vdXRfb2Zf b3JkZXJfcmV0dXJuX3Blcl9jaGFubmVsX3ZtX29ubHlfYnl0ZXM7CjE0NDc0OiAgdW5zaWduZWQg aW50IHJvdW5kX3RyaXBfcGluZ19sYXRlbmN5X2RjZmNsa19jeWNsZXM7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IHVyZ2VudF9vdXRfb2Zfb3JkZXJfcmV0dXJuX3Blcl9jaGFubmVsX2J5dGVzOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBjaGFubmVsX2ludGVybGVhdmVfYnl0ZXM7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IG51bV9iYW5rczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbnVtX2NoYW5zOwoxNDQ3NDog IHVuc2lnbmVkIGludCB2bW1fcGFnZV9zaXplX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBo b3N0dm1fbWluX3BhZ2Vfc2l6ZV9ieXRlczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZ3B1dm1fbWlu X3BhZ2Vfc2l6ZV9ieXRlczsKMTQ0NzQ6ICBkb3VibGUgZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5j eV91czsKMTQ0NzQ6ICBkb3VibGUgZHVtbXlfcHN0YXRlX2xhdGVuY3lfdXM7CjE0NDc0OiAgZG91 YmxlIHdyaXRlYmFja19kcmFtX2Nsb2NrX2NoYW5nZV9sYXRlbmN5X3VzOwoxNDQ3NDogIHVuc2ln bmVkIGludCByZXR1cm5fYnVzX3dpZHRoX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB2b2x0 YWdlX292ZXJyaWRlOwoxNDQ3NDogIGRvdWJsZSB4ZmNfYnVzX3RyYW5zcG9ydF90aW1lX3VzOwox NDQ3NDogIGRvdWJsZSB4ZmNfeGJ1Zl9sYXRlbmN5X3RvbGVyYW5jZV91czsKMTQ0NzQ6ICBpbnQg dXNlX3VyZ2VudF9idXJzdF9idzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbnVtX3N0YXRlczsKMTQ0 NzQ6ICBzdHJ1Y3QgX3Zjc19kcGlfdm9sdGFnZV9zY2FsaW5nX3N0IGNsb2NrX2xpbWl0c1s4XTsK MTQ0NzQ6ICBib29sIGRvX3VyZ2VudF9sYXRlbmN5X2FkanVzdG1lbnQ7CjE0NDc0OiAgZG91Ymxl IHVyZ2VudF9sYXRlbmN5X2FkanVzdG1lbnRfZmFicmljX2Nsb2NrX2NvbXBvbmVudF91czsKMTQ0 NzQ6ICBkb3VibGUgdXJnZW50X2xhdGVuY3lfYWRqdXN0bWVudF9mYWJyaWNfY2xvY2tfcmVmZXJl bmNlX21oejsKMTQ0NzQ6ICBib29sIGRpc2FibGVfZHJhbV9jbG9ja19jaGFuZ2VfdmFjdGl2ZV9z dXBwb3J0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF92Y3NfZHBpX2lwX3BhcmFt c19zdCB7CjE0NDc0OiAgYm9vbCBncHV2bV9lbmFibGU7CjE0NDc0OiAgYm9vbCBob3N0dm1fZW5h YmxlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBncHV2bV9tYXhfcGFnZV90YWJsZV9sZXZlbHM7CjE0 NDc0OiAgdW5zaWduZWQgaW50IGhvc3R2bV9tYXhfcGFnZV90YWJsZV9sZXZlbHM7CjE0NDc0OiAg dW5zaWduZWQgaW50IGhvc3R2bV9jYWNoZWRfcGFnZV90YWJsZV9sZXZlbHM7CjE0NDc0OiAgdW5z aWduZWQgaW50IHB0ZV9ncm91cF9zaXplX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBtYXhf aW50ZXJfZGNuX3RpbGVfcmVwZWF0ZXJzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBudW1fZHNjOwox NDQ3NDogIHVuc2lnbmVkIGludCBvZG1fY2FwYWJsZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcm9i X2J1ZmZlcl9zaXplX2tieXRlczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZGV0X2J1ZmZlcl9zaXpl X2tieXRlczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHB0ZV9idWZmZXJfc2l6ZV9pbl9wdGVfcmVx c19sdW1hOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHRlX2J1ZmZlcl9zaXplX2luX3B0ZV9yZXFz X2Nocm9tYTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcGRlX3Byb2NfYnVmZmVyX3NpemVfNjRrX3Jl cXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRwcF9vdXRwdXRfYnVmZmVyX3BpeGVsczsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgb3BwX291dHB1dF9idWZmZXJfbGluZXM7CjE0NDc0OiAgdW5zaWduZWQg aW50IHBpeGVsX2NodW5rX3NpemVfa2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcHRlX2Vu YWJsZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcHRlX2NodW5rX3NpemVfa2J5dGVzOwoxNDQ3NDog IHVuc2lnbmVkIGludCBtZXRhX2NodW5rX3NpemVfa2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCB3cml0ZWJhY2tfY2h1bmtfc2l6ZV9rYnl0ZXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGxpbmVf YnVmZmVyX3NpemVfYml0czsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWF4X2xpbmVfYnVmZmVyX2xp bmVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfbHVtYV9idWZmZXJfc2l6ZV9rYnl0 ZXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IHdyaXRlYmFja19jaHJvbWFfYnVmZmVyX3NpemVfa2J5 dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfY2hyb21hX2xpbmVfYnVmZmVyX3dp ZHRoX3BpeGVsczsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfaW50ZXJm YWNlX2J1ZmZlcl9zaXplX2tieXRlczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgd3JpdGViYWNrX2xp bmVfYnVmZmVyX2J1ZmZlcl9zaXplOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IHdyaXRl YmFja18xMGJwYzQyMF9zdXBwb3J0ZWQ7CjE0NDc0OiAgZG91YmxlIHdyaXRlYmFja19tYXhfaHNj bF9yYXRpbzsKMTQ0NzQ6ICBkb3VibGUgd3JpdGViYWNrX21heF92c2NsX3JhdGlvOwoxNDQ3NDog IGRvdWJsZSB3cml0ZWJhY2tfbWluX2hzY2xfcmF0aW87CjE0NDc0OiAgZG91YmxlIHdyaXRlYmFj a19taW5fdnNjbF9yYXRpbzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgd3JpdGViYWNrX21heF9oc2Ns X3RhcHM7CjE0NDc0OiAgdW5zaWduZWQgaW50IHdyaXRlYmFja19tYXhfdnNjbF90YXBzOwoxNDQ3 NDogIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfbGluZV9idWZmZXJfbHVtYV9idWZmZXJfc2l6ZTsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgd3JpdGViYWNrX2xpbmVfYnVmZmVyX2Nocm9tYV9idWZmZXJf c2l6ZTsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBtYXhfcGFnZV90YWJsZV9sZXZlbHM7 CjE0NDc0OiAgdW5zaWduZWQgaW50IG1heF9udW1fZHBwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBt YXhfbnVtX290ZzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY3Vyc29yX2NodW5rX3NpemU7CjE0NDc0 OiAgdW5zaWduZWQgaW50IGN1cnNvcl9idWZmZXJfc2l6ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg bWF4X251bV93YjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWF4X2RjaHViX3BzY2xfYndfcGl4X3Bl cl9jbGs7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1heF9wc2NsX2xiX2J3X3BpeF9wZXJfY2xrOwox NDQ3NDogIHVuc2lnbmVkIGludCBtYXhfbGJfdnNjbF9id19waXhfcGVyX2NsazsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgbWF4X3ZzY2xfaHNjbF9id19waXhfcGVyX2NsazsKMTQ0NzQ6ICBkb3VibGUg bWF4X2hzY2xfcmF0aW87CjE0NDc0OiAgZG91YmxlIG1heF92c2NsX3JhdGlvOwoxNDQ3NDogIHVu c2lnbmVkIGludCBoc2NsX211bHRzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB2c2NsX211bHRzOwox NDQ3NDogIHVuc2lnbmVkIGludCBtYXhfaHNjbF90YXBzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBt YXhfdnNjbF90YXBzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB4ZmNfc3VwcG9ydGVkOwoxNDQ3NDog IHVuc2lnbmVkIGludCBwdG9pX3N1cHBvcnRlZDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZ2Z4N19j b21wYXRfdGlsaW5nX3N1cHBvcnRlZDsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgb2RtX2NvbWJpbmVf NHRvMV9zdXBwb3J0ZWQ7CjE0NDc0OiAgYm9vbCBkeW5hbWljX21ldGFkYXRhX3ZtX2VuYWJsZWQ7 CjE0NDc0OiAgdW5zaWduZWQgaW50IG1heF9udW1faGRtaV9mcmxfb3V0cHV0czsKMTQ0NzQ6IAox NDQ3NDogIHVuc2lnbmVkIGludCB4ZmNfZmlsbF9jb25zdGFudF9ieXRlczsKMTQ0NzQ6ICBkb3Vi bGUgZGlzcGNsa19yYW1wX21hcmdpbl9wZXJjZW50OwoxNDQ3NDogIGRvdWJsZSB4ZmNfZmlsbF9i d19vdmVyaGVhZF9wZXJjZW50OwoxNDQ3NDogIGRvdWJsZSB1bmRlcnNjYW5fZmFjdG9yOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBtaW5fdmJsYW5rX2xpbmVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBk cHBjbGtfZGVsYXlfc3VidG90YWw7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRpc3BjbGtfZGVsYXlf c3VidG90YWw7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRjZmNsa19jc3RhdGVfbGF0ZW5jeTsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgZHBwY2xrX2RlbGF5X3NjbDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg ZHBwY2xrX2RlbGF5X3NjbF9sYl9vbmx5OwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHBjbGtfZGVs YXlfY252Y19mb3JtYXR0ZXI7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRwcGNsa19kZWxheV9jbnZj X2N1cnNvcjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaXNfbGluZV9idWZmZXJfYnBwX2ZpeGVkOwox NDQ3NDogIHVuc2lnbmVkIGludCBsaW5lX2J1ZmZlcl9maXhlZF9icHA7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGRjY19zdXBwb3J0ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgSXNMaW5l QnVmZmVyQnBwRml4ZWQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IExpbmVCdWZmZXJGaXhlZEJwcDsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY2FuX3ZzdGFydHVwX2xpbmVzX2V4Y2VlZF92c3luY19wbHVz X2JhY2tfcG9yY2hfbGluZXNfbWludXNfb25lOwoxNDQ3NDogIHVuc2lnbmVkIGludCBidWdfZm9y Y2luZ19MQ19yZXFfc2FtZV9zaXplX2ZpeGVkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IF92Y3NfZHBpX2Rpc3BsYXlfeGZjX3BhcmFtc19zdCB7CjE0NDc0OiAgZG91YmxlIHhmY190 c2x2X3ZyZWFkeV9vZmZzZXRfdXM7CjE0NDc0OiAgZG91YmxlIHhmY190c2x2X3Z1cGRhdGVfd2lk dGhfdXM7CjE0NDc0OiAgZG91YmxlIHhmY190c2x2X3Z1cGRhdGVfb2Zmc2V0X3VzOwoxNDQ3NDog IGludCB4ZmNfc2x2X2NodW5rX3NpemVfYnl0ZXM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9waXBlX3NvdXJjZV9wYXJhbXNfc3QgewoxNDQ3NDogIGlu dCBzb3VyY2VfZm9ybWF0OwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgZGNjOwoxNDQ3NDogIHVuc2ln bmVkIGludCBkY2NfcmF0ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZGNjX3JhdGVfY2hyb21hOwox NDQ3NDogIHVuc2lnbmVkIGNoYXIgZGNjX3VzZV9nbG9iYWw7CjE0NDc0OiAgdW5zaWduZWQgY2hh ciB2bTsKMTQ0NzQ6ICBib29sIGdwdXZtOwoxNDQ3NDogIGJvb2wgaG9zdHZtOwoxNDQ3NDogIGJv b2wgZ3B1dm1fbGV2ZWxzX2ZvcmNlX2VuOwoxNDQ3NDogIHVuc2lnbmVkIGludCBncHV2bV9sZXZl bHNfZm9yY2U7CjE0NDc0OiAgYm9vbCBob3N0dm1fbGV2ZWxzX2ZvcmNlX2VuOwoxNDQ3NDogIHVu c2lnbmVkIGludCBob3N0dm1fbGV2ZWxzX2ZvcmNlOwoxNDQ3NDogIGludCBzb3VyY2Vfc2NhbjsK MTQ0NzQ6ICBpbnQgc3dfbW9kZTsKMTQ0NzQ6ICBpbnQgbWFjcm9fdGlsZV9zaXplOwoxNDQ3NDog IHVuc2lnbmVkIGludCBzdXJmYWNlX3dpZHRoX3k7CjE0NDc0OiAgdW5zaWduZWQgaW50IHN1cmZh Y2VfaGVpZ2h0X3k7CjE0NDc0OiAgdW5zaWduZWQgaW50IHN1cmZhY2Vfd2lkdGhfYzsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgc3VyZmFjZV9oZWlnaHRfYzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdmll d3BvcnRfd2lkdGg7CjE0NDc0OiAgdW5zaWduZWQgaW50IHZpZXdwb3J0X2hlaWdodDsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgdmlld3BvcnRfeV95OwoxNDQ3NDogIHVuc2lnbmVkIGludCB2aWV3cG9y dF95X2M7CjE0NDc0OiAgdW5zaWduZWQgaW50IHZpZXdwb3J0X3dpZHRoX2M7CjE0NDc0OiAgdW5z aWduZWQgaW50IHZpZXdwb3J0X2hlaWdodF9jOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkYXRhX3Bp dGNoOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkYXRhX3BpdGNoX2M7CjE0NDc0OiAgdW5zaWduZWQg aW50IG1ldGFfcGl0Y2g7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1ldGFfcGl0Y2hfYzsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgY3VyMF9zcmNfd2lkdGg7CjE0NDc0OiAgaW50IGN1cjBfYnBwOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBjdXIxX3NyY193aWR0aDsKMTQ0NzQ6ICBpbnQgY3VyMV9icHA7CjE0 NDc0OiAgaW50IG51bV9jdXJzb3JzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgaXNfaHNwbGl0Owox NDQ3NDogIHVuc2lnbmVkIGNoYXIgZHluYW1pY19tZXRhZGF0YV9lbmFibGU7CjE0NDc0OiAgdW5z aWduZWQgaW50IGR5bmFtaWNfbWV0YWRhdGFfbGluZXNfYmVmb3JlX2FjdGl2ZTsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgZHluYW1pY19tZXRhZGF0YV94bWl0X2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVk IGludCBoc3BsaXRfZ3JwOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgeGZjX2VuYWJsZTsKMTQ0NzQ6 ICB1bnNpZ25lZCBjaGFyIHhmY19zbGF2ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGltbWVkaWF0 ZV9mbGlwOwoxNDQ3NDogIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3hmY19wYXJhbXNfc3QgeGZj X3BhcmFtczsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgdl90b3RhbF9taW47CjE0NDc0 OiAgdW5zaWduZWQgY2hhciB2X3RvdGFsX21heDsKMTQ0NzQ6IH07CjE0NDc0OiBzdHJ1Y3Qgd3Jp dGViYWNrX3N0IHsKMTQ0NzQ6ICBpbnQgd2Jfc3JjX2hlaWdodDsKMTQ0NzQ6ICBpbnQgd2Jfc3Jj X3dpZHRoOwoxNDQ3NDogIGludCB3Yl9kc3Rfd2lkdGg7CjE0NDc0OiAgaW50IHdiX2RzdF9oZWln aHQ7CjE0NDc0OiAgaW50IHdiX3BpeGVsX2Zvcm1hdDsKMTQ0NzQ6ICBpbnQgd2JfaHRhcHNfbHVt YTsKMTQ0NzQ6ICBpbnQgd2JfdnRhcHNfbHVtYTsKMTQ0NzQ6ICBpbnQgd2JfaHRhcHNfY2hyb21h OwoxNDQ3NDogIGludCB3Yl92dGFwc19jaHJvbWE7CjE0NDc0OiAgZG91YmxlIHdiX2hyYXRpbzsK MTQ0NzQ6ICBkb3VibGUgd2JfdnJhdGlvOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IF92Y3NfZHBpX2Rpc3BsYXlfb3V0cHV0X3BhcmFtc19zdCB7CjE0NDc0OiAgaW50IGRwX2xhbmVz OwoxNDQ3NDogIGRvdWJsZSBvdXRwdXRfYnBwOwoxNDQ3NDogIGludCBkc2NfZW5hYmxlOwoxNDQ3 NDogIGludCB3Yl9lbmFibGU7CjE0NDc0OiAgaW50IG51bV9hY3RpdmVfd2I7CjE0NDc0OiAgaW50 IG91dHB1dF9icGM7CjE0NDc0OiAgaW50IG91dHB1dF90eXBlOwoxNDQ3NDogIGludCBvdXRwdXRf Zm9ybWF0OwoxNDQ3NDogIGludCBkc2Nfc2xpY2VzOwoxNDQ3NDogIGludCBtYXhfYXVkaW9fc2Ft cGxlX3JhdGU7CjE0NDc0OiAgc3RydWN0IHdyaXRlYmFja19zdCB3YjsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBfdmNzX2RwaV9zY2FsZXJfcmF0aW9fZGVwdGhfc3QgewoxNDQ3NDog IGRvdWJsZSBoc2NsX3JhdGlvOwoxNDQ3NDogIGRvdWJsZSB2c2NsX3JhdGlvOwoxNDQ3NDogIGRv dWJsZSBoc2NsX3JhdGlvX2M7CjE0NDc0OiAgZG91YmxlIHZzY2xfcmF0aW9fYzsKMTQ0NzQ6ICBk b3VibGUgdmluaXQ7CjE0NDc0OiAgZG91YmxlIHZpbml0X2M7CjE0NDc0OiAgZG91YmxlIHZpbml0 X2JvdDsKMTQ0NzQ6ICBkb3VibGUgdmluaXRfYm90X2M7CjE0NDc0OiAgaW50IGxiX2RlcHRoOwox NDQ3NDogIGludCBzY2xfZW5hYmxlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF92 Y3NfZHBpX3NjYWxlcl90YXBzX3N0IHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaHRhcHM7CjE0NDc0 OiAgdW5zaWduZWQgaW50IHZ0YXBzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBodGFwc19jOwoxNDQ3 NDogIHVuc2lnbmVkIGludCB2dGFwc19jOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IF92Y3NfZHBpX2Rpc3BsYXlfcGlwZV9kZXN0X3BhcmFtc19zdCB7CjE0NDc0OiAgdW5zaWduZWQg aW50IHJlY291dF93aWR0aDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVjb3V0X2hlaWdodDsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgZnVsbF9yZWNvdXRfd2lkdGg7CjE0NDc0OiAgdW5zaWduZWQgaW50 IGZ1bGxfcmVjb3V0X2hlaWdodDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaGJsYW5rX3N0YXJ0Owox NDQ3NDogIHVuc2lnbmVkIGludCBoYmxhbmtfZW5kOwoxNDQ3NDogIHVuc2lnbmVkIGludCB2Ymxh bmtfc3RhcnQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHZibGFua19lbmQ7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGh0b3RhbDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdnRvdGFsOwoxNDQ3NDogIHVuc2ln bmVkIGludCB2YWN0aXZlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBoYWN0aXZlOwoxNDQ3NDogIHVu c2lnbmVkIGludCB2c3RhcnR1cF9zdGFydDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdnVwZGF0ZV9v ZmZzZXQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHZ1cGRhdGVfd2lkdGg7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IHZyZWFkeV9vZmZzZXQ7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBpbnRlcmxhY2VkOwox NDQ3NDogIHVuc2lnbmVkIGNoYXIgZW1iZWRkZWQ7CjE0NDc0OiAgZG91YmxlIHBpeGVsX3JhdGVf bWh6OwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgc3luY2hyb25pemVkX3ZibGFua19hbGxfcGxhbmVz OwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgb3RnX2luc3Q7CjE0NDc0OiAgdW5zaWduZWQgaW50IG9k bV9jb21iaW5lOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgdXNlX21heGltdW1fdnN0YXJ0dXA7CjE0 NDc0OiAgdW5zaWduZWQgaW50IHZ0b3RhbF9tYXg7CjE0NDc0OiAgdW5zaWduZWQgaW50IHZ0b3Rh bF9taW47CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9w aXBlX3BhcmFtc19zdCB7CjE0NDc0OiAgZGlzcGxheV9waXBlX3NvdXJjZV9wYXJhbXNfc3Qgc3Jj OwoxNDQ3NDogIGRpc3BsYXlfcGlwZV9kZXN0X3BhcmFtc19zdCBkZXN0OwoxNDQ3NDogIHNjYWxl cl9yYXRpb19kZXB0aF9zdCBzY2FsZV9yYXRpb19kZXB0aDsKMTQ0NzQ6ICBzY2FsZXJfdGFwc19z dCBzY2FsZV90YXBzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF92Y3NfZHBpX2Rp c3BsYXlfY2xvY2tzX2FuZF9jZmdfc3QgewoxNDQ3NDogIGludCB2b2x0YWdlOwoxNDQ3NDogIGRv dWJsZSBkcHBjbGtfbWh6OwoxNDQ3NDogIGRvdWJsZSByZWZjbGtfbWh6OwoxNDQ3NDogIGRvdWJs ZSBkaXNwY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUgZGNmY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUg c29jY2xrX21oejsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBfdmNzX2RwaV9kaXNw bGF5X2UyZV9waXBlX3BhcmFtc19zdCB7CjE0NDc0OiAgZGlzcGxheV9waXBlX3BhcmFtc19zdCBw aXBlOwoxNDQ3NDogIGRpc3BsYXlfb3V0cHV0X3BhcmFtc19zdCBkb3V0OwoxNDQ3NDogIGRpc3Bs YXlfY2xvY2tzX2FuZF9jZmdfc3QgY2xrc19jZmc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kYXRhX3JxX21pc2NfcGFyYW1zX3N0IHsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgZnVsbF9zd2F0aF9ieXRlczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3RvcmVk X3N3YXRoX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBibGsyNTZfaGVpZ2h0OwoxNDQ3NDog IHVuc2lnbmVkIGludCBibGsyNTZfd2lkdGg7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlcV9oZWln aHQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlcV93aWR0aDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RhdGFfcnFfc2l6aW5nX3BhcmFtc19zdCB7CjE0 NDc0OiAgdW5zaWduZWQgaW50IGNodW5rX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBtaW5f Y2h1bmtfYnl0ZXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1ldGFfY2h1bmtfYnl0ZXM7CjE0NDc0 OiAgdW5zaWduZWQgaW50IG1pbl9tZXRhX2NodW5rX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBtcHRlX2dyb3VwX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHRlX2dyb3VwX2J5dGVz OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGF0YV9y cV9kbGdfcGFyYW1zX3N0IHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3dhdGhfd2lkdGhfdWI7CjE0 NDc0OiAgdW5zaWduZWQgaW50IHN3YXRoX2hlaWdodDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVx X3Blcl9zd2F0aF91YjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWV0YV9wdGVfYnl0ZXNfcGVyX2Zy YW1lX3ViOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHRlX3JlcV9wZXJfcm93X3ViOwoxNDQ3NDog IHVuc2lnbmVkIGludCBkcHRlX2dyb3Vwc19wZXJfcm93X3ViOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBkcHRlX3Jvd19oZWlnaHQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRwdGVfYnl0ZXNfcGVyX3Jv d191YjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWV0YV9jaHVua3NfcGVyX3Jvd191YjsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgbWV0YV9yZXFfcGVyX3Jvd191YjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg bWV0YV9yb3dfaGVpZ2h0OwoxNDQ3NDogIHVuc2lnbmVkIGludCBtZXRhX2J5dGVzX3Blcl9yb3df dWI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9k bGdfcGFyYW1zX3N0IHsKMTQ0NzQ6ICBkaXNwbGF5X2RhdGFfcnFfZGxnX3BhcmFtc19zdCBycV9s OwoxNDQ3NDogIGRpc3BsYXlfZGF0YV9ycV9kbGdfcGFyYW1zX3N0IHJxX2M7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9zaXppbmdfcGFyYW1zX3N0 IHsKMTQ0NzQ6ICBkaXNwbGF5X2RhdGFfcnFfc2l6aW5nX3BhcmFtc19zdCBycV9sOwoxNDQ3NDog IGRpc3BsYXlfZGF0YV9ycV9zaXppbmdfcGFyYW1zX3N0IHJxX2M7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9taXNjX3BhcmFtc19zdCB7CjE0NDc0 OiAgZGlzcGxheV9kYXRhX3JxX21pc2NfcGFyYW1zX3N0IHJxX2w7CjE0NDc0OiAgZGlzcGxheV9k YXRhX3JxX21pc2NfcGFyYW1zX3N0IHJxX2M7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9wYXJhbXNfc3QgewoxNDQ3NDogIHVuc2lnbmVkIGNoYXIg eXV2NDIwOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgeXV2NDIwXzEwYnBjOwoxNDQ3NDogIHVuc2ln bmVkIGNoYXIgcmdiZV9hbHBoYTsKMTQ0NzQ6ICBkaXNwbGF5X3JxX21pc2NfcGFyYW1zX3N0IG1p c2M7CjE0NDc0OiAgZGlzcGxheV9ycV9zaXppbmdfcGFyYW1zX3N0IHNpemluZzsKMTQ0NzQ6ICBk aXNwbGF5X3JxX2RsZ19wYXJhbXNfc3QgZGxnOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGxnX3JlZ3Nfc3QgewoxNDQ3NDogIHVuc2lnbmVkIGludCBy ZWZjeWNfaF9ibGFua19lbmQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRsZ192YmxhbmtfZW5kOwox NDQ3NDogIHVuc2lnbmVkIGludCBtaW5fZHN0X3lfbmV4dF9zdGFydDsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgcmVmY3ljX3Blcl9odG90YWw7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZmN5Y194X2Fm dGVyX3NjYWxlcjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHN0X3lfYWZ0ZXJfc2NhbGVyOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBkc3RfeV9wcmVmZXRjaDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHN0 X3lfcGVyX3ZtX3ZibGFuazsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHN0X3lfcGVyX3Jvd192Ymxh bms7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRzdF95X3Blcl92bV9mbGlwOwoxNDQ3NDogIHVuc2ln bmVkIGludCBkc3RfeV9wZXJfcm93X2ZsaXA7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZl9mcmVx X3RvX3BpeF9mcmVxOwoxNDQ3NDogIHVuc2lnbmVkIGludCB2cmF0aW9fcHJlZmV0Y2g7CjE0NDc0 OiAgdW5zaWduZWQgaW50IHZyYXRpb19wcmVmZXRjaF9jOwoxNDQ3NDogIHVuc2lnbmVkIGludCBy ZWZjeWNfcGVyX3B0ZV9ncm91cF92YmxhbmtfbDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3lj X3Blcl9wdGVfZ3JvdXBfdmJsYW5rX2M7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZmN5Y19wZXJf bWV0YV9jaHVua192YmxhbmtfbDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9tZXRh X2NodW5rX3ZibGFua19jOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX3B0ZV9ncm91 cF9mbGlwX2w7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfcHRlX2dyb3VwX2ZsaXBf YzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9tZXRhX2NodW5rX2ZsaXBfbDsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9tZXRhX2NodW5rX2ZsaXBfYzsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgZHN0X3lfcGVyX3B0ZV9yb3dfbm9tX2w7CjE0NDc0OiAgdW5zaWduZWQgaW50 IGRzdF95X3Blcl9wdGVfcm93X25vbV9jOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZjeWNfcGVy X3B0ZV9ncm91cF9ub21fbDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9wdGVfZ3Jv dXBfbm9tX2M7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRzdF95X3Blcl9tZXRhX3Jvd19ub21fbDsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHN0X3lfcGVyX21ldGFfcm93X25vbV9jOwoxNDQ3NDogIHVu c2lnbmVkIGludCByZWZjeWNfcGVyX21ldGFfY2h1bmtfbm9tX2w7CjE0NDc0OiAgdW5zaWduZWQg aW50IHJlZmN5Y19wZXJfbWV0YV9jaHVua19ub21fYzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVm Y3ljX3Blcl9saW5lX2RlbGl2ZXJ5X3ByZV9sOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZjeWNf cGVyX2xpbmVfZGVsaXZlcnlfcHJlX2M7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZmN5Y19wZXJf bGluZV9kZWxpdmVyeV9sOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX2xpbmVfZGVs aXZlcnlfYzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY2h1bmtfaGRsX2FkanVzdF9jdXIwOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBjaHVua19oZGxfYWRqdXN0X2N1cjE7CjE0NDc0OiAgdW5zaWduZWQg aW50IHZyZWFkeV9hZnRlcl92Y291bnQwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkc3RfeV9vZmZz ZXRfY3VyMDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHN0X3lfb2Zmc2V0X2N1cjE7CjE0NDc0OiAg dW5zaWduZWQgaW50IHhmY19yZWdfdHJhbnNmZXJfZGVsYXk7CjE0NDc0OiAgdW5zaWduZWQgaW50 IHhmY19yZWdfcHJlY2hhcmdlX2RlbGF5OwoxNDQ3NDogIHVuc2lnbmVkIGludCB4ZmNfcmVnX3Jl bW90ZV9zdXJmYWNlX2ZsaXBfbGF0ZW5jeTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgeGZjX3JlZ19w cmVmZXRjaF9tYXJnaW47CjE0NDc0OiAgdW5zaWduZWQgaW50IGRzdF95X2RlbHRhX2RycV9saW1p dDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl92bV9ncm91cF92Ymxhbms7CjE0NDc0 OiAgdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfdm1fZ3JvdXBfZmxpcDsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgcmVmY3ljX3Blcl92bV9yZXFfdmJsYW5rOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZj eWNfcGVyX3ZtX3JlcV9mbGlwOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX3ZtX2Rt ZGF0YTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0 dV9yZWdzX3N0IHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcW9zX2xldmVsX2xvd193bTsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgcW9zX2xldmVsX2hpZ2hfd207CjE0NDc0OiAgdW5zaWduZWQgaW50IG1p bl90dHVfdmJsYW5rOwoxNDQ3NDogIHVuc2lnbmVkIGludCBxb3NfbGV2ZWxfZmxpcDsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9yZXFfZGVsaXZlcnlfbDsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgcmVmY3ljX3Blcl9yZXFfZGVsaXZlcnlfYzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVm Y3ljX3Blcl9yZXFfZGVsaXZlcnlfY3VyMDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Bl cl9yZXFfZGVsaXZlcnlfY3VyMTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9yZXFf ZGVsaXZlcnlfcHJlX2w7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfcmVxX2RlbGl2 ZXJ5X3ByZV9jOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX3JlcV9kZWxpdmVyeV9w cmVfY3VyMDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9yZXFfZGVsaXZlcnlfcHJl X2N1cjE7CjE0NDc0OiAgdW5zaWduZWQgaW50IHFvc19sZXZlbF9maXhlZF9sOwoxNDQ3NDogIHVu c2lnbmVkIGludCBxb3NfbGV2ZWxfZml4ZWRfYzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcW9zX2xl dmVsX2ZpeGVkX2N1cjA7CjE0NDc0OiAgdW5zaWduZWQgaW50IHFvc19sZXZlbF9maXhlZF9jdXIx OwoxNDQ3NDogIHVuc2lnbmVkIGludCBxb3NfcmFtcF9kaXNhYmxlX2w7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IHFvc19yYW1wX2Rpc2FibGVfYzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcW9zX3JhbXBf ZGlzYWJsZV9jdXIwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBxb3NfcmFtcF9kaXNhYmxlX2N1cjE7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kYXRhX3Jx X3JlZ3Nfc3QgewoxNDQ3NDogIHVuc2lnbmVkIGludCBjaHVua19zaXplOwoxNDQ3NDogIHVuc2ln bmVkIGludCBtaW5fY2h1bmtfc2l6ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWV0YV9jaHVua19z aXplOwoxNDQ3NDogIHVuc2lnbmVkIGludCBtaW5fbWV0YV9jaHVua19zaXplOwoxNDQ3NDogIHVu c2lnbmVkIGludCBkcHRlX2dyb3VwX3NpemU7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1wdGVfZ3Jv dXBfc2l6ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3dhdGhfaGVpZ2h0OwoxNDQ3NDogIHVuc2ln bmVkIGludCBwdGVfcm93X2hlaWdodF9saW5lYXI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9yZWdzX3N0IHsKMTQ0NzQ6ICBkaXNwbGF5X2RhdGFf cnFfcmVnc19zdCBycV9yZWdzX2w7CjE0NDc0OiAgZGlzcGxheV9kYXRhX3JxX3JlZ3Nfc3QgcnFf cmVnc19jOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcnFfZXhwYW5zaW9uX21vZGU7CjE0NDc0OiAg dW5zaWduZWQgaW50IHBycV9leHBhbnNpb25fbW9kZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbXJx X2V4cGFuc2lvbl9tb2RlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBjcnFfZXhwYW5zaW9uX21vZGU7 CjE0NDc0OiAgdW5zaWduZWQgaW50IHBsYW5lMV9iYXNlX2FkZHJlc3M7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kbGdfc3lzX3BhcmFtc19zdCB7CjE0 NDc0OiAgZG91YmxlIHRfbWNsa193bV91czsKMTQ0NzQ6ICBkb3VibGUgdF91cmdfd21fdXM7CjE0 NDc0OiAgZG91YmxlIHRfc3Jfd21fdXM7CjE0NDc0OiAgZG91YmxlIHRfZXh0cmFfdXM7CjE0NDc0 OiAgZG91YmxlIG1lbV90cmlwX3VzOwoxNDQ3NDogIGRvdWJsZSB0X3NyeF9kZWxheV91czsKMTQ0 NzQ6ICBkb3VibGUgZGVlcHNsZWVwX2RjZmNsa19taHo7CjE0NDc0OiAgZG91YmxlIHRvdGFsX2Zs aXBfYnc7CjE0NDc0OiAgdW5zaWduZWQgaW50IHRvdGFsX2ZsaXBfYnl0ZXM7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9hcmJfcGFyYW1zX3N0IHsKMTQ0 NzQ6ICBpbnQgbWF4X3JlcV9vdXRzdGFuZGluZzsKMTQ0NzQ6ICBpbnQgbWluX3JlcV9vdXRzdGFu ZGluZzsKMTQ0NzQ6ICBpbnQgc2F0X2xldmVsX3VzOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzIgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZG1sX2NvbW1vbl9k ZWZzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2RtbC9kaXNwbGF5X21vZGVfZW51bXMuaCIgMQoxNDQ3NDogIyAyOCAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X21vZGVfZW51bXMu aCIKMTQ0NzQ6IGVudW0gb3V0cHV0X2VuY29kZXJfY2xhc3MgewoxNDQ3NDogIGRtX2RwID0gMCwg ZG1faGRtaSA9IDEsIGRtX3diID0gMiwgZG1fZWRwCjE0NDc0OiB9OwoxNDQ3NDogZW51bSBvdXRw dXRfZm9ybWF0X2NsYXNzIHsKMTQ0NzQ6ICBkbV80NDQgPSAwLCBkbV80MjAgPSAxLCBkbV9uNDIy LCBkbV9zNDIyCjE0NDc0OiB9OwoxNDQ3NDogZW51bSBzb3VyY2VfZm9ybWF0X2NsYXNzIHsKMTQ0 NzQ6ICBkbV80NDRfMTYgPSAwLAoxNDQ3NDogIGRtXzQ0NF8zMiA9IDEsCjE0NDc0OiAgZG1fNDQ0 XzY0ID0gMiwKMTQ0NzQ6ICBkbV80MjBfOCA9IDMsCjE0NDc0OiAgZG1fNDIwXzEwID0gNCwKMTQ0 NzQ6ICBkbV80MjBfMTIgPSA1LAoxNDQ3NDogIGRtXzQyMl84ID0gNiwKMTQ0NzQ6ICBkbV80MjJf MTAgPSA3LAoxNDQ3NDogIGRtXzQ0NF84ID0gOCwKMTQ0NzQ6ICBkbV9tb25vXzggPSBkbV80NDRf OCwKMTQ0NzQ6ICBkbV9tb25vXzE2ID0gZG1fNDQ0XzE2LAoxNDQ3NDogIGRtX3JnYmUgPSA5LAox NDQ3NDogIGRtX3JnYmVfYWxwaGEgPSAxMCwKMTQ0NzQ6IH07CjE0NDc0OiBlbnVtIG91dHB1dF9i cGNfY2xhc3MgewoxNDQ3NDogIGRtX291dF82ID0gMCwgZG1fb3V0XzggPSAxLCBkbV9vdXRfMTAg PSAyLCBkbV9vdXRfMTIgPSAzLCBkbV9vdXRfMTYgPSA0CjE0NDc0OiB9OwoxNDQ3NDogZW51bSBz Y2FuX2RpcmVjdGlvbl9jbGFzcyB7CjE0NDc0OiAgZG1faG9yeiA9IDAsIGRtX3ZlcnQgPSAxCjE0 NDc0OiB9OwoxNDQ3NDogZW51bSBkbV9zd2l6emxlX21vZGUgewoxNDQ3NDogIGRtX3N3X2xpbmVh ciA9IDAsCjE0NDc0OiAgZG1fc3dfMjU2Yl9zID0gMSwKMTQ0NzQ6ICBkbV9zd18yNTZiX2QgPSAy LAoxNDQ3NDogIGRtX3N3X1NQQVJFXzAgPSAzLAoxNDQ3NDogIGRtX3N3X1NQQVJFXzEgPSA0LAox NDQ3NDogIGRtX3N3XzRrYl9zID0gNSwKMTQ0NzQ6ICBkbV9zd180a2JfZCA9IDYsCjE0NDc0OiAg ZG1fc3dfU1BBUkVfMiA9IDcsCjE0NDc0OiAgZG1fc3dfU1BBUkVfMyA9IDgsCjE0NDc0OiAgZG1f c3dfNjRrYl9zID0gOSwKMTQ0NzQ6ICBkbV9zd182NGtiX2QgPSAxMCwKMTQ0NzQ6ICBkbV9zd19T UEFSRV80ID0gMTEsCjE0NDc0OiAgZG1fc3dfU1BBUkVfNSA9IDEyLAoxNDQ3NDogIGRtX3N3X3Zh cl9zID0gMTMsCjE0NDc0OiAgZG1fc3dfdmFyX2QgPSAxNCwKMTQ0NzQ6ICBkbV9zd19TUEFSRV82 ID0gMTUsCjE0NDc0OiAgZG1fc3dfU1BBUkVfNyA9IDE2LAoxNDQ3NDogIGRtX3N3XzY0a2Jfc190 ID0gMTcsCjE0NDc0OiAgZG1fc3dfNjRrYl9kX3QgPSAxOCwKMTQ0NzQ6ICBkbV9zd19TUEFSRV8x MCA9IDE5LAoxNDQ3NDogIGRtX3N3X1NQQVJFXzExID0gMjAsCjE0NDc0OiAgZG1fc3dfNGtiX3Nf eCA9IDIxLAoxNDQ3NDogIGRtX3N3XzRrYl9kX3ggPSAyMiwKMTQ0NzQ6ICBkbV9zd19TUEFSRV8x MiA9IDIzLAoxNDQ3NDogIGRtX3N3X1NQQVJFXzEzID0gMjQsCjE0NDc0OiAgZG1fc3dfNjRrYl9z X3ggPSAyNSwKMTQ0NzQ6ICBkbV9zd182NGtiX2RfeCA9IDI2LAoxNDQ3NDogIGRtX3N3X1NQQVJF XzE0ID0gMjcsCjE0NDc0OiAgZG1fc3dfU1BBUkVfMTUgPSAyOCwKMTQ0NzQ6ICBkbV9zd192YXJf c194ID0gMjksCjE0NDc0OiAgZG1fc3dfdmFyX2RfeCA9IDMwLAoxNDQ3NDogIGRtX3N3XzY0a2Jf cl94LAoxNDQ3NDogIGRtX3N3X2dmeDdfMmRfdGhpbl9sX3ZwLAoxNDQ3NDogIGRtX3N3X2dmeDdf MmRfdGhpbl9nbCwKMTQ0NzQ6IH07CjE0NDc0OiBlbnVtIGxiX2RlcHRoIHsKMTQ0NzQ6ICBkbV9s Yl8xMCA9IDAsIGRtX2xiXzggPSAxLCBkbV9sYl82ID0gMiwgZG1fbGJfMTIgPSAzLCBkbV9sYl8x NiA9IDQsCjE0NDc0OiAgZG1fbGJfMTkgPSA1CjE0NDc0OiB9OwoxNDQ3NDogZW51bSB2b2x0YWdl X3N0YXRlIHsKMTQ0NzQ6ICBkbV92bWluID0gMCwgZG1fdm1pZCA9IDEsIGRtX3Zub20gPSAyLCBk bV92bWF4ID0gMwoxNDQ3NDogfTsKMTQ0NzQ6IGVudW0gc291cmNlX21hY3JvX3RpbGVfc2l6ZSB7 CjE0NDc0OiAgZG1fNGtfdGlsZSA9IDAsIGRtXzY0a190aWxlID0gMSwgZG1fMjU2a190aWxlID0g MgoxNDQ3NDogfTsKMTQ0NzQ6IGVudW0gY3Vyc29yX2JwcCB7CjE0NDc0OiAgZG1fY3VyXzJiaXQg PSAwLCBkbV9jdXJfMzJiaXQgPSAxLCBkbV9jdXJfNjRiaXQgPSAyCjE0NDc0OiB9OwoxNDQ3NDog ZW51bSBjbG9ja19jaGFuZ2Vfc3VwcG9ydCB7CjE0NDc0OiAgZG1fZHJhbV9jbG9ja19jaGFuZ2Vf dW5pbml0aWFsaXplZCA9IDAsCjE0NDc0OiAgZG1fZHJhbV9jbG9ja19jaGFuZ2VfdmFjdGl2ZSwK MTQ0NzQ6ICBkbV9kcmFtX2Nsb2NrX2NoYW5nZV92YmxhbmssCjE0NDc0OiAgZG1fZHJhbV9jbG9j a19jaGFuZ2VfdW5zdXBwb3J0ZWQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gb3V0cHV0 X3N0YW5kYXJkIHsKMTQ0NzQ6ICBkbV9zdGRfdW5pbml0aWFsaXplZCA9IDAsIGRtX3N0ZF9jdnRy MiwgZG1fc3RkX2N2dAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBtcGNfY29tYmluZV9h ZmZpbml0eSB7CjE0NDc0OiAgZG1fbXBjX2Fsd2F5c193aGVuX3Bvc3NpYmxlLAoxNDQ3NDogIGRt X21wY19yZWR1Y2Vfdm9sdGFnZSwKMTQ0NzQ6ICBkbV9tcGNfcmVkdWNlX3ZvbHRhZ2VfYW5kX2Ns b2NrcywKMTQ0NzQ6ICBkbV9tcGNfbmV2ZXIKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0g UmVxdWVzdFR5cGUgewoxNDQ3NDogIFJFUV8yNTZCeXRlcywgUkVRXzEyOEJ5dGVzTm9uQ29udGln dW91cywgUkVRXzEyOEJ5dGVzQ29udGlndW91cywgUkVRX05BCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBlbnVtIHNlbGZfcmVmcmVzaF9hZmZpbml0eSB7CjE0NDc0OiAgZG1fdHJ5X3RvX2FsbG93 X3NlbGZfcmVmcmVzaF9hbmRfbWNsa19zd2l0Y2gsCjE0NDc0OiAgZG1fYWxsb3dfc2VsZl9yZWZy ZXNoX2FuZF9tY2xrX3N3aXRjaCwKMTQ0NzQ6ICBkbV9hbGxvd19zZWxmX3JlZnJlc2gsCjE0NDc0 OiAgZG1fbmVpdGhlcl9zZWxmX3JlZnJlc2hfbm9yX21jbGtfc3dpdGNoCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBlbnVtIGRtX3ZhbGlkYXRpb25fc3RhdHVzIHsKMTQ0NzQ6ICBETUxfVkFMSURB VElPTl9PSywKMTQ0NzQ6ICBETUxfRkFJTF9TQ0FMRV9SQVRJT19UQVAsCjE0NDc0OiAgRE1MX0ZB SUxfU09VUkNFX1BJWEVMX0ZPUk1BVCwKMTQ0NzQ6ICBETUxfRkFJTF9WSUVXUE9SVF9TSVpFLAox NDQ3NDogIERNTF9GQUlMX1RPVEFMX1ZfQUNUSVZFX0JXLAoxNDQ3NDogIERNTF9GQUlMX0RJT19T VVBQT1JULAoxNDQ3NDogIERNTF9GQUlMX05PVF9FTk9VR0hfRFNDLAoxNDQ3NDogIERNTF9GQUlM X0RTQ19DTEtfUkVRVUlSRUQsCjE0NDc0OiAgRE1MX0ZBSUxfRFNDX1ZBTElEQVRJT05fRkFJTFVS RSwKMTQ0NzQ6ICBETUxfRkFJTF9VUkdFTlRfTEFURU5DWSwKMTQ0NzQ6ICBETUxfRkFJTF9SRU9S REVSSU5HX0JVRkZFUiwKMTQ0NzQ6ICBETUxfRkFJTF9ESVNQQ0xLX0RQUENMSywKMTQ0NzQ6ICBE TUxfRkFJTF9UT1RBTF9BVkFJTEFCTEVfUElQRVMsCjE0NDc0OiAgRE1MX0ZBSUxfTlVNX09URywK MTQ0NzQ6ICBETUxfRkFJTF9XUklURUJBQ0tfTU9ERSwKMTQ0NzQ6ICBETUxfRkFJTF9XUklURUJB Q0tfTEFURU5DWSwKMTQ0NzQ6ICBETUxfRkFJTF9XUklURUJBQ0tfU0NBTEVfUkFUSU9fVEFQLAox NDQ3NDogIERNTF9GQUlMX0NVUlNPUl9TVVBQT1JULAoxNDQ3NDogIERNTF9GQUlMX1BJVENIX1NV UFBPUlQsCjE0NDc0OiAgRE1MX0ZBSUxfUFRFX0JVRkZFUl9TSVpFLAoxNDQ3NDogIERNTF9GQUlM X0hPU1RfVk1fSU1NRURJQVRFX0ZMSVAsCjE0NDc0OiAgRE1MX0ZBSUxfRFNDX0lOUFVUX0JQQywK MTQ0NzQ6ICBETUxfRkFJTF9QUkVGRVRDSF9TVVBQT1JULAoxNDQ3NDogIERNTF9GQUlMX1ZfUkFU SU9fUFJFRkVUQ0gsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHdyaXRlYmFja19jb25m aWcgewoxNDQ3NDogIGRtX25vcm1hbCwKMTQ0NzQ6ICBkbV93aG9sZV9idWZmZXJfZm9yX3Npbmds ZV9zdHJlYW1fbm9faW50ZXJsZWF2ZSwKMTQ0NzQ6ICBkbV93aG9sZV9idWZmZXJfZm9yX3Npbmds ZV9zdHJlYW1faW50ZXJsZWF2ZSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gb2RtX2Nv bWJpbmVfbW9kZSB7CjE0NDc0OiAgZG1fb2RtX2NvbWJpbmVfbW9kZV9kaXNhYmxlZCwKMTQ0NzQ6 ICBkbV9vZG1fY29tYmluZV9tb2RlXzJ0bzEsCjE0NDc0OiAgZG1fb2RtX2NvbWJpbmVfbW9kZV80 dG8xLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBvZG1fY29tYmluZV9wb2xpY3kgewox NDQ3NDogIGRtX29kbV9jb21iaW5lX3BvbGljeV9kYWwsCjE0NDc0OiAgZG1fb2RtX2NvbWJpbmVf cG9saWN5X25vbmUsCjE0NDc0OiAgZG1fb2RtX2NvbWJpbmVfcG9saWN5XzJ0bzEsCjE0NDc0OiAg ZG1fb2RtX2NvbWJpbmVfcG9saWN5XzR0bzEsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVt IGltbWVkaWF0ZV9mbGlwX3JlcXVpcmVtZW50IHsKMTQ0NzQ6ICBkbV9pbW1lZGlhdGVfZmxpcF9u b3RfcmVxdWlyZWQsCjE0NDc0OiAgZG1faW1tZWRpYXRlX2ZsaXBfcmVxdWlyZWQsCjE0NDc0OiB9 OwoxNDQ3NDogIyAzMyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RtbC9kbWxfY29tbW9uX2RlZnMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGRvdWJsZSBk bWxfcm91bmQoZG91YmxlIGEpOwoxNDQ3NDogIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X21vZGVfbGliLmgiIDIKMTQ0NzQ6ICMgMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X21v ZGVfdmJhLmgiIDEKMTQ0NzQ6ICMgMzIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9kbWwvZGlzcGxheV9tb2RlX3ZiYS5oIgoxNDQ3NDogc3RydWN0IGRpc3BsYXlf bW9kZV9saWI7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgTW9kZVN1cHBvcnRBbmRTeXN0ZW1Db25maWd1 cmF0aW9uKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYik7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBkb3VibGUgZ2V0X2Nsa19kY2ZfZGVlcHNsZWVwKHN0cnVjdCBkaXNw bGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3Qg KnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfd21fdXJn ZW50KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVf cGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKMTQ0NzQ6IGRv dWJsZSBnZXRfd21fbWVtb3J5X3RyaXAoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGli LCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBu dW1fcGlwZXMpOwoxNDQ3NDogZG91YmxlIGdldF93bV93cml0ZWJhY2tfdXJnZW50KHN0cnVjdCBk aXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNf c3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfd21f c3R1dHRlcl9leGl0KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlz cGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsK MTQ0NzQ6IGRvdWJsZSBnZXRfd21fc3R1dHRlcl9lbnRlcl9leGl0KHN0cnVjdCBkaXNwbGF5X21v ZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVz LCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfd21fZHJhbV9jbG9j a19jaGFuZ2Uoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3 NDogZG91YmxlIGdldF93bV93cml0ZWJhY2tfZHJhbV9jbG9ja19jaGFuZ2Uoc3RydWN0IGRpc3Bs YXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAq cGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3NDogZG91YmxlIGdldF93bV94ZmNf dW5kZXJmbG93KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxh eV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKMTQ0 NzQ6IGRvdWJsZSBnZXRfc3R1dHRlcl9lZmZpY2llbmN5X25vX3ZibGFuayhzdHJ1Y3QgZGlzcGxh eV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpw aXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CjE0NDc0OiBkb3VibGUgZ2V0X3N0dXR0ZXJf ZWZmaWNpZW5jeShzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3Bs YXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CjE0 NDc0OiBkb3VibGUgZ2V0X3VyZ2VudF9sYXRlbmN5KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICpt b2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25l ZCBpbnQgbnVtX3BpcGVzKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfdXJnZW50X2V4dHJhX2xhdGVuY3ko c3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBl X3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3NDogZG91Ymxl IGdldF9ub251cmdlbnRfbGF0ZW5jeShzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIs IGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51 bV9waXBlcyk7CjE0NDc0OiBkb3VibGUgZ2V0X2RyYW1fY2xvY2tfY2hhbmdlX2xhdGVuY3koc3Ry dWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3Bh cmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3NDogZG91YmxlIGdl dF9kaXNwY2xrX2NhbGN1bGF0ZWQoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBj b25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1f cGlwZXMpOwoxNDQ3NDogZG91YmxlIGdldF90b3RhbF9kYXRhX3JlYWRfYncoc3RydWN0IGRpc3Bs YXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAq cGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3NDogZG91YmxlIGdldF9yZXR1cm5f Yncoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9w aXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3NDogZG91 YmxlIGdldF90Y2FsYyhzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRp c3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7 CjE0NDc0OiBkb3VibGUgZ2V0X2ZyYWN0aW9uX29mX3VyZ2VudF9iYW5kd2lkdGgoc3RydWN0IGRp c3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19z dCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3NDogZG91YmxlIGdldF9mcmFj dGlvbl9vZl91cmdlbnRfYmFuZHdpZHRoX2ltbV9mbGlwKHN0cnVjdCBkaXNwbGF5X21vZGVfbGli ICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNp Z25lZCBpbnQgbnVtX3BpcGVzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGRvdWJs ZSBnZXRfZHNjX2RlbGF5KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3Qg ZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVz LCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X2RwcGNsa19jYWxj dWxhdGVkKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9l MmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzLCB1bnNpZ25l ZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X2RzY2Nsa19jYWxjdWxhdGVkKHN0 cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9w YXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hp Y2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X21pbl90dHVfdmJsYW5rKHN0cnVjdCBkaXNwbGF5 X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBp cGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CjE0 NDc0OiBkb3VibGUgZ2V0X3ZyYXRpb19wcmVmZXRjaF9sKHN0cnVjdCBkaXNwbGF5X21vZGVfbGli ICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNp Z25lZCBpbnQgbnVtX3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3Vi bGUgZ2V0X3ZyYXRpb19wcmVmZXRjaF9jKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xp YiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQg bnVtX3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X2Rz dF94X2FmdGVyX3NjYWxlcihzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0 IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBl cywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwoxNDQ3NDogZG91YmxlIGdldF9kc3RfeV9hZnRl cl9zY2FsZXIoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2ln bmVkIGludCB3aGljaF9waXBlKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfZHN0X3lfcGVyX3ZtX3ZibGFu ayhzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3Bp cGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50 IHdoaWNoX3BpcGUpOwoxNDQ3NDogZG91YmxlIGdldF9kc3RfeV9wZXJfcm93X3ZibGFuayhzdHJ1 Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFy YW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNo X3BpcGUpOwoxNDQ3NDogZG91YmxlIGdldF9kc3RfeV9wcmVmZXRjaChzdHJ1Y3QgZGlzcGxheV9t b2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBl cywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwoxNDQ3 NDogZG91YmxlIGdldF9kc3RfeV9wZXJfdm1fZmxpcChzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAq bW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWdu ZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwoxNDQ3NDogZG91Ymxl IGdldF9kc3RfeV9wZXJfcm93X2ZsaXAoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGli LCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBu dW1fcGlwZXMsIHVuc2lnbmVkIGludCB3aGljaF9waXBlKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfeGZj X3RyYW5zZmVyX2RlbGF5KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3Qg ZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVz LCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X3hmY19wcmVjaGFy Z2VfZGVsYXkoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2ln bmVkIGludCB3aGljaF9waXBlKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfeGZjX3JlbW90ZV9zdXJmYWNl X2ZsaXBfbGF0ZW5jeShzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRp c3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywg dW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwoxNDQ3NDogZG91YmxlIGdldF94ZmNfcHJlZmV0Y2hf bWFyZ2luKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9l MmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzLCB1bnNpZ25l ZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X3JlZmN5Y19wZXJfdm1fZ3JvdXBf dmJsYW5rKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9l MmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzLCB1bnNpZ25l ZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X3JlZmN5Y19wZXJfdm1fZ3JvdXBf ZmxpcChzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJl X3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQg aW50IHdoaWNoX3BpcGUpOwoxNDQ3NDogZG91YmxlIGdldF9yZWZjeWNfcGVyX3ZtX3JlcV92Ymxh bmsoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9w aXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2lnbmVkIGlu dCB3aGljaF9waXBlKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfcmVmY3ljX3Blcl92bV9yZXFfZmxpcChz dHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVf cGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdo aWNoX3BpcGUpOwoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBpbnQgZ2V0X3ZzdGFydHVwX2NhbGN1 bGF0ZWQoCjE0NDc0OiAgIHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKMTQ0NzQ6 ICAgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAoxNDQ3NDogICB1bnNp Z25lZCBpbnQgbnVtX3BpcGVzLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CjE0 NDc0OiAKMTQ0NzQ6IGRvdWJsZSBnZXRfdG90YWxfaW1tZWRpYXRlX2ZsaXBfYnl0ZXMoCjE0NDc0 OiAgIHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKMTQ0NzQ6ICAgY29uc3QgZGlz cGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbnVt X3BpcGVzKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfdG90YWxfaW1tZWRpYXRlX2ZsaXBfYncoCjE0NDc0 OiAgIHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKMTQ0NzQ6ICAgY29uc3QgZGlz cGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbnVt X3BpcGVzKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfdG90YWxfcHJlZmV0Y2hfYncoCjE0NDc0OiAgIHN0 cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKMTQ0NzQ6ICAgY29uc3QgZGlzcGxheV9l MmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbnVtX3BpcGVz KTsKMTQ0NzQ6IHVuc2lnbmVkIGludCBkbWxfZ2V0X3ZvbHRhZ2VfbGV2ZWwoCjE0NDc0OiAgIHN0 cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKMTQ0NzQ6ICAgY29uc3QgZGlzcGxheV9l MmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbnVtX3BpcGVz KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBQaXhlbENsb2NrQWRqdXN0bWVudEZvclByb2dyZXNzaXZl VG9JbnRlcmxhY2VVbml0KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYik7CjE0NDc0 OiAKMTQ0NzQ6IGJvb2wgQ2FsY3VsYXRlMjU2QkJsb2NrU2l6ZXMoCjE0NDc0OiAgIGVudW0gc291 cmNlX2Zvcm1hdF9jbGFzcyBTb3VyY2VQaXhlbEZvcm1hdCwKMTQ0NzQ6ICAgZW51bSBkbV9zd2l6 emxlX21vZGUgU3VyZmFjZVRpbGluZywKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IEJ5dGVQZXJQaXhl bFksCjE0NDc0OiAgIHVuc2lnbmVkIGludCBCeXRlUGVyUGl4ZWxDLAoxNDQ3NDogICB1bnNpZ25l ZCBpbnQgKkJsb2NrSGVpZ2h0MjU2Qnl0ZXNZLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgKkJsb2Nr SGVpZ2h0MjU2Qnl0ZXNDLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgKkJsb2NrV2lkdGgyNTZCeXRl c1ksCjE0NDc0OiAgIHVuc2lnbmVkIGludCAqQmxvY2tXaWR0aDI1NkJ5dGVzQyk7CjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCB2YmFfdmFyc19zdCB7CjE0NDc0OiAgaXBfcGFyYW1zX3N0IGlwOwoxNDQ3 NDogIHNvY19ib3VuZGluZ19ib3hfc3Qgc29jOwoxNDQ3NDogCjE0NDc0OiAgaW50IG1heE1wY0Nv bWI7CjE0NDc0OiAgYm9vbCBVc2VNYXhpbXVtVlN0YXJ0dXA7CjE0NDc0OiAKMTQ0NzQ6ICBkb3Vi bGUgV3JpdGViYWNrRElTUENMSzsKMTQ0NzQ6ICBkb3VibGUgRFBQQ0xLVXNpbmdTaW5nbGVEUFBM dW1hOwoxNDQ3NDogIGRvdWJsZSBEUFBDTEtVc2luZ1NpbmdsZURQUENocm9tYTsKMTQ0NzQ6ICBk b3VibGUgRElTUENMS1dpdGhSYW1waW5nOwoxNDQ3NDogIGRvdWJsZSBESVNQQ0xLV2l0aG91dFJh bXBpbmc7CjE0NDc0OiAgZG91YmxlIEdsb2JhbERQUENMSzsKMTQ0NzQ6ICBkb3VibGUgRElTUENM S1dpdGhSYW1waW5nUm91bmRlZFRvREZTR3JhbnVsYXJpdHk7CjE0NDc0OiAgZG91YmxlIERJU1BD TEtXaXRob3V0UmFtcGluZ1JvdW5kZWRUb0RGU0dyYW51bGFyaXR5OwoxNDQ3NDogIGRvdWJsZSBN YXhEaXNwY2xrUm91bmRlZFRvREZTR3JhbnVsYXJpdHk7CjE0NDc0OiAgYm9vbCBEQ0NFbmFibGVk QW55UGxhbmU7CjE0NDc0OiAgZG91YmxlIFJldHVybkJhbmR3aWR0aFRvRENOOwoxNDQ3NDogIHVu c2lnbmVkIGludCBUb3RhbEFjdGl2ZURQUDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgVG90YWxEQ0NB Y3RpdmVEUFA7CjE0NDc0OiAgZG91YmxlIFVyZ2VudFJvdW5kVHJpcEFuZE91dE9mT3JkZXJMYXRl bmN5OwoxNDQ3NDogIGRvdWJsZSBTdHV0dGVyUGVyaW9kOwoxNDQ3NDogIGRvdWJsZSBGcmFtZVRp bWVGb3JNaW5GdWxsREVUQnVmZmVyaW5nVGltZTsKMTQ0NzQ6ICBkb3VibGUgQXZlcmFnZVJlYWRC YW5kd2lkdGg7CjE0NDc0OiAgZG91YmxlIFRvdGFsUm93UmVhZEJhbmR3aWR0aDsKMTQ0NzQ6ICBk b3VibGUgUGFydE9mQnVyc3RUaGF0Rml0c0luUk9COwoxNDQ3NDogIGRvdWJsZSBTdHV0dGVyQnVy c3RUaW1lOwoxNDQ3NDogIHVuc2lnbmVkIGludCBOZXh0UHJlZmV0Y2hNb2RlOwoxNDQ3NDogIGRv dWJsZSBOZXh0TWF4VlN0YXJ0dXA7CjE0NDc0OiAgZG91YmxlIFZCbGFua1RpbWU7CjE0NDc0OiAg ZG91YmxlIFNtYWxsZXN0VkJsYW5rOwoxNDQ3NDogIGRvdWJsZSBEQ0ZDTEtEZWVwU2xlZXBQZXJQ bGFuZVs4XTsKMTQ0NzQ6ICBkb3VibGUgRWZmZWN0aXZlREVUUGx1c0xCTGluZXNMdW1hOwoxNDQ3 NDogIGRvdWJsZSBFZmZlY3RpdmVERVRQbHVzTEJMaW5lc0Nocm9tYTsKMTQ0NzQ6ICBkb3VibGUg VXJnZW50TGF0ZW5jeVN1cHBvcnRVc0x1bWE7CjE0NDc0OiAgZG91YmxlIFVyZ2VudExhdGVuY3lT dXBwb3J0VXNDaHJvbWE7CjE0NDc0OiAgdW5zaWduZWQgaW50IERTQ0Zvcm1hdEZhY3RvcjsKMTQ0 NzQ6IAoxNDQ3NDogIGJvb2wgRHVtbXlQU3RhdGVDaGVjazsKMTQ0NzQ6ICBib29sIERSQU1DbG9j a0NoYW5nZVN1cHBvcnRzVkFjdGl2ZTsKMTQ0NzQ6ICBib29sIFByZWZldGNoTW9kZVN1cHBvcnRl ZDsKMTQ0NzQ6ICBib29sIFByZWZldGNoQW5kSW1tZWRpYXRlRmxpcFN1cHBvcnRlZDsKMTQ0NzQ6 ICBlbnVtIHNlbGZfcmVmcmVzaF9hZmZpbml0eSBBbGxvd0RSQU1TZWxmUmVmcmVzaE9yRFJBTUNs b2NrQ2hhbmdlSW5WYmxhbms7CjE0NDc0OiAgZG91YmxlIFhGQ1JlbW90ZVN1cmZhY2VGbGlwRGVs YXk7CjE0NDc0OiAgZG91YmxlIFRJbml0WEZpbGw7CjE0NDc0OiAgZG91YmxlIFRzbHZDaGs7CjE0 NDc0OiAgZG91YmxlIFNyY0FjdGl2ZURyYWluUmF0ZTsKMTQ0NzQ6ICBib29sIEltbWVkaWF0ZUZs aXBTdXBwb3J0ZWQ7CjE0NDc0OiAgZW51bSBtcGNfY29tYmluZV9hZmZpbml0eSBXaGVuVG9Eb01Q Q0NvbWJpbmU7CjE0NDc0OiAKMTQ0NzQ6ICBib29sIFByZWZldGNoRVJST1I7CjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgVlN0YXJ0dXBMaW5lczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgQWN0 aXZlRFBQczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTEJMYXRlbmN5SGlkaW5nU291cmNlTGluZXNZ OwoxNDQ3NDogIHVuc2lnbmVkIGludCBMQkxhdGVuY3lIaWRpbmdTb3VyY2VMaW5lc0M7CjE0NDc0 OiAgZG91YmxlIEFjdGl2ZURSQU1DbG9ja0NoYW5nZUxhdGVuY3lNYXJnaW5bOF07CjE0NDc0OiAg ZG91YmxlIE1pbkFjdGl2ZURSQU1DbG9ja0NoYW5nZU1hcmdpbjsKMTQ0NzQ6ICBkb3VibGUgSW5p dEZpbGxMZXZlbDsKMTQ0NzQ6ICBkb3VibGUgRmluYWxGaWxsTWFyZ2luOwoxNDQ3NDogIGRvdWJs ZSBGaW5hbEZpbGxMZXZlbDsKMTQ0NzQ6ICBkb3VibGUgUmVtYWluaW5nRmlsbExldmVsOwoxNDQ3 NDogIGRvdWJsZSBURmluYWx4RmlsbDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIGRvdWJsZSBTUkV4aXRUaW1lOwoxNDQ3NDogIGRvdWJsZSBTUkVudGVyUGx1c0V4aXRU aW1lOwoxNDQ3NDogIGRvdWJsZSBVcmdlbnRMYXRlbmN5UGl4ZWxEYXRhT25seTsKMTQ0NzQ6ICBk b3VibGUgVXJnZW50TGF0ZW5jeVBpeGVsTWl4ZWRXaXRoVk1EYXRhOwoxNDQ3NDogIGRvdWJsZSBV cmdlbnRMYXRlbmN5Vk1EYXRhT25seTsKMTQ0NzQ6ICBkb3VibGUgVXJnZW50TGF0ZW5jeTsKMTQ0 NzQ6ICBkb3VibGUgV3JpdGViYWNrTGF0ZW5jeTsKMTQ0NzQ6ICBkb3VibGUgUGVyY2VudE9mSWRl YWxEUkFNRmFicmljQW5kU0RQUG9ydEJXUmVjZWl2ZWRBZnRlclVyZ0xhdGVuY3lQaXhlbERhdGFP bmx5OwoxNDQ3NDogIGRvdWJsZSBQZXJjZW50T2ZJZGVhbERSQU1GYWJyaWNBbmRTRFBQb3J0QldS ZWNlaXZlZEFmdGVyVXJnTGF0ZW5jeVBpeGVsTWl4ZWRXaXRoVk1EYXRhOwoxNDQ3NDogIGRvdWJs ZSBQZXJjZW50T2ZJZGVhbERSQU1GYWJyaWNBbmRTRFBQb3J0QldSZWNlaXZlZEFmdGVyVXJnTGF0 ZW5jeVZNRGF0YU9ubHk7CjE0NDc0OiAgZG91YmxlIE1heEF2ZXJhZ2VQZXJjZW50T2ZJZGVhbFNE UFBvcnRCV0Rpc3BsYXlDYW5Vc2VJbk5vcm1hbFN5c3RlbU9wZXJhdGlvbjsKMTQ0NzQ6ICBkb3Vi bGUgTWF4QXZlcmFnZVBlcmNlbnRPZklkZWFsRFJBTUJXRGlzcGxheUNhblVzZUluTm9ybWFsU3lz dGVtT3BlcmF0aW9uOwoxNDQ3NDogIGRvdWJsZSBOdW1iZXJPZkNoYW5uZWxzOwoxNDQ3NDogIGRv dWJsZSBEUkFNQ2hhbm5lbFdpZHRoOwoxNDQ3NDogIGRvdWJsZSBGYWJyaWNEYXRhcGF0aFRvRENO RGF0YVJldHVybjsKMTQ0NzQ6ICBkb3VibGUgUmV0dXJuQnVzV2lkdGg7CjE0NDc0OiAgZG91Ymxl IERvd25zcHJlYWRpbmc7CjE0NDc0OiAgZG91YmxlIERJU1BDTEtEUFBDTEtEU0NDTEtEb3duU3By ZWFkaW5nOwoxNDQ3NDogIGRvdWJsZSBESVNQQ0xLRFBQQ0xLVkNPU3BlZWQ7CjE0NDc0OiAgZG91 YmxlIFJvdW5kVHJpcFBpbmdMYXRlbmN5Q3ljbGVzOwoxNDQ3NDogIGRvdWJsZSBVcmdlbnRPdXRP Zk9yZGVyUmV0dXJuUGVyQ2hhbm5lbDsKMTQ0NzQ6ICBkb3VibGUgVXJnZW50T3V0T2ZPcmRlclJl dHVyblBlckNoYW5uZWxQaXhlbERhdGFPbmx5OwoxNDQ3NDogIGRvdWJsZSBVcmdlbnRPdXRPZk9y ZGVyUmV0dXJuUGVyQ2hhbm5lbFBpeGVsTWl4ZWRXaXRoVk1EYXRhOwoxNDQ3NDogIGRvdWJsZSBV cmdlbnRPdXRPZk9yZGVyUmV0dXJuUGVyQ2hhbm5lbFZNRGF0YU9ubHk7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IFZNTVBhZ2VTaXplOwoxNDQ3NDogIGRvdWJsZSBEUkFNQ2xvY2tDaGFuZ2VMYXRlbmN5 OwoxNDQ3NDogIGRvdWJsZSBYRkNCdXNUcmFuc3BvcnRUaW1lOwoxNDQ3NDogIGJvb2wgVXNlVXJn ZW50QnVyc3RCYW5kd2lkdGg7CjE0NDc0OiAgZG91YmxlIFhGQ1hCVUZMYXRlbmN5VG9sZXJhbmNl OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IFJP QkJ1ZmZlclNpemVJbktCeXRlOwoxNDQ3NDogIGRvdWJsZSBERVRCdWZmZXJTaXplSW5LQnl0ZTsK MTQ0NzQ6ICBkb3VibGUgREVUQnVmZmVyU2l6ZUluVGltZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg RFBQT3V0cHV0QnVmZmVyUGl4ZWxzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBPUFBPdXRwdXRCdWZm ZXJMaW5lczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgUGl4ZWxDaHVua1NpemVJbktCeXRlOwoxNDQ3 NDogIGRvdWJsZSBSZXR1cm5CVzsKMTQ0NzQ6ICBib29sIEdQVVZNRW5hYmxlOwoxNDQ3NDogIGJv b2wgSG9zdFZNRW5hYmxlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBHUFVWTU1heFBhZ2VUYWJsZUxl dmVsczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgSG9zdFZNTWF4UGFnZVRhYmxlTGV2ZWxzOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBIb3N0Vk1DYWNoZWRQYWdlVGFibGVMZXZlbHM7CjE0NDc0OiAgdW5z aWduZWQgaW50IE92ZXJyaWRlR1BVVk1QYWdlVGFibGVMZXZlbHM7CjE0NDc0OiAgdW5zaWduZWQg aW50IE92ZXJyaWRlSG9zdFZNUGFnZVRhYmxlTGV2ZWxzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBN ZXRhQ2h1bmtTaXplOwoxNDQ3NDogIGRvdWJsZSBNaW5QaXhlbENodW5rU2l6ZUJ5dGVzOwoxNDQ3 NDogIGRvdWJsZSBNaW5NZXRhQ2h1bmtTaXplQnl0ZXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IFdy aXRlYmFja0NodW5rU2l6ZTsKMTQ0NzQ6ICBib29sIE9ETUNhcGFiaWxpdHk7CjE0NDc0OiAgdW5z aWduZWQgaW50IE51bWJlck9mRFNDOwoxNDQ3NDogIHVuc2lnbmVkIGludCBMaW5lQnVmZmVyU2l6 ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTWF4TGluZUJ1ZmZlckxpbmVzOwoxNDQ3NDogIHVuc2ln bmVkIGludCBXcml0ZWJhY2tJbnRlcmZhY2VMdW1hQnVmZmVyU2l6ZTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgV3JpdGViYWNrSW50ZXJmYWNlQ2hyb21hQnVmZmVyU2l6ZTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgV3JpdGViYWNrQ2hyb21hTGluZUJ1ZmZlcldpZHRoOwoxNDQ3NDogIGVudW0gd3JpdGVi YWNrX2NvbmZpZyBXcml0ZWJhY2tDb25maWd1cmF0aW9uOwoxNDQ3NDogIGRvdWJsZSBNYXhEQ0hV QlRvUFNDTFRocm91Z2hwdXQ7CjE0NDc0OiAgZG91YmxlIE1heFBTQ0xUb0xCVGhyb3VnaHB1dDsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgUFRFQnVmZmVyU2l6ZUluUmVxdWVzdHNMdW1hOwoxNDQ3NDog IHVuc2lnbmVkIGludCBQVEVCdWZmZXJTaXplSW5SZXF1ZXN0c0Nocm9tYTsKMTQ0NzQ6ICBkb3Vi bGUgRElTUENMS1JhbXBpbmdNYXJnaW47CjE0NDc0OiAgdW5zaWduZWQgaW50IE1heEludGVyRENO VGlsZVJlcGVhdGVyczsKMTQ0NzQ6ICBib29sIFhGQ1N1cHBvcnRlZDsKMTQ0NzQ6ICBkb3VibGUg WEZDU2x2Q2h1bmtTaXplOwoxNDQ3NDogIGRvdWJsZSBYRkNGaWxsQldPdmVyaGVhZDsKMTQ0NzQ6 ICBkb3VibGUgWEZDRmlsbENvbnN0YW50OwoxNDQ3NDogIGRvdWJsZSBYRkNUU2x2VnVwZGF0ZU9m ZnNldDsKMTQ0NzQ6ICBkb3VibGUgWEZDVFNsdlZ1cGRhdGVXaWR0aDsKMTQ0NzQ6ICBkb3VibGUg WEZDVFNsdlZyZWFkeU9mZnNldDsKMTQ0NzQ6ICBkb3VibGUgRFBQQ0xLRGVsYXlTdWJ0b3RhbDsK MTQ0NzQ6ICBkb3VibGUgRFBQQ0xLRGVsYXlTQ0w7CjE0NDc0OiAgZG91YmxlIERQUENMS0RlbGF5 U0NMTEJPbmx5OwoxNDQ3NDogIGRvdWJsZSBEUFBDTEtEZWxheUNOVkNGb3JtYXRlcjsKMTQ0NzQ6 ICBkb3VibGUgRFBQQ0xLRGVsYXlDTlZDQ3Vyc29yOwoxNDQ3NDogIGRvdWJsZSBESVNQQ0xLRGVs YXlTdWJ0b3RhbDsKMTQ0NzQ6ICBib29sIFByb2dyZXNzaXZlVG9JbnRlcmxhY2VVbml0SW5PUFA7 CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgVm9sdGFnZUxldmVsOwoxNDQ3NDogIGRvdWJsZSBGYWJyaWND bG9jazsKMTQ0NzQ6ICBkb3VibGUgRFJBTVNwZWVkOwoxNDQ3NDogIGRvdWJsZSBESVNQQ0xLOwox NDQ3NDogIGRvdWJsZSBTT0NDTEs7CjE0NDc0OiAgZG91YmxlIERDRkNMSzsKMTQ0NzQ6IAoxNDQ3 NDogIHVuc2lnbmVkIGludCBOdW1iZXJPZkFjdGl2ZVBsYW5lczsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgTnVtYmVyT2ZEU0NTbGljZXNbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFZpZXdwb3J0V2lk dGhbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFZpZXdwb3J0SGVpZ2h0WzhdOwoxNDQ3NDogIHVu c2lnbmVkIGludCBWaWV3cG9ydFlTdGFydFlbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFZpZXdw b3J0WVN0YXJ0Q1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgUGl0Y2hZWzhdOwoxNDQ3NDogIHVu c2lnbmVkIGludCBQaXRjaENbOF07CjE0NDc0OiAgZG91YmxlIEhSYXRpb1s4XTsKMTQ0NzQ6ICBk b3VibGUgVlJhdGlvWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBodGFwc1s4XTsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgdnRhcHNbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IEhUQVBzQ2hyb21hWzhd OwoxNDQ3NDogIHVuc2lnbmVkIGludCBWVEFQc0Nocm9tYVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgSFRvdGFsWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBWVG90YWxbOF07CjE0NDc0OiAgdW5z aWduZWQgaW50IFZUb3RhbF9NYXhbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFZUb3RhbF9NaW5b OF07CjE0NDc0OiAgaW50IERQUFBlclBsYW5lWzhdOwoxNDQ3NDogIGRvdWJsZSBQaXhlbENsb2Nr WzhdOwoxNDQ3NDogIGRvdWJsZSBQaXhlbENsb2NrQmFja0VuZFs4XTsKMTQ0NzQ6ICBib29sIERD Q0VuYWJsZVs4XTsKMTQ0NzQ6ICBib29sIEZFQ0VuYWJsZVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgRENDTWV0YVBpdGNoWVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgRENDTWV0YVBpdGNoQ1s4 XTsKMTQ0NzQ6ICBlbnVtIHNjYW5fZGlyZWN0aW9uX2NsYXNzIFNvdXJjZVNjYW5bOF07CjE0NDc0 OiAgZW51bSBzb3VyY2VfZm9ybWF0X2NsYXNzIFNvdXJjZVBpeGVsRm9ybWF0WzhdOwoxNDQ3NDog IGJvb2wgV3JpdGViYWNrRW5hYmxlWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBBY3RpdmVXcml0 ZWJhY2tzUGVyUGxhbmVbOF07CjE0NDc0OiAgZG91YmxlIFdyaXRlYmFja0Rlc3RpbmF0aW9uV2lk dGhbOF07CjE0NDc0OiAgZG91YmxlIFdyaXRlYmFja0Rlc3RpbmF0aW9uSGVpZ2h0WzhdOwoxNDQ3 NDogIGRvdWJsZSBXcml0ZWJhY2tTb3VyY2VIZWlnaHRbOF07CjE0NDc0OiAgZW51bSBzb3VyY2Vf Zm9ybWF0X2NsYXNzIFdyaXRlYmFja1BpeGVsRm9ybWF0WzhdOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBXcml0ZWJhY2tMdW1hSFRhcHNbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFdyaXRlYmFja0x1 bWFWVGFwc1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgV3JpdGViYWNrQ2hyb21hSFRhcHNbOF07 CjE0NDc0OiAgdW5zaWduZWQgaW50IFdyaXRlYmFja0Nocm9tYVZUYXBzWzhdOwoxNDQ3NDogIGRv dWJsZSBXcml0ZWJhY2tIUmF0aW9bOF07CjE0NDc0OiAgZG91YmxlIFdyaXRlYmFja1ZSYXRpb1s4 XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgSEFjdGl2ZVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg VkFjdGl2ZVs4XTsKMTQ0NzQ6ICBib29sIEludGVybGFjZVs4XTsKMTQ0NzQ6ICBlbnVtIGRtX3N3 aXp6bGVfbW9kZSBTdXJmYWNlVGlsaW5nWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBTY2FsZXJS ZWNvdXRXaWR0aFs4XTsKMTQ0NzQ6ICBib29sIER5bmFtaWNNZXRhZGF0YUVuYWJsZVs4XTsKMTQ0 NzQ6ICBpbnQgRHluYW1pY01ldGFkYXRhTGluZXNCZWZvcmVBY3RpdmVSZXF1aXJlZFs4XTsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgRHluYW1pY01ldGFkYXRhVHJhbnNtaXR0ZWRCeXRlc1s4XTsKMTQ0 NzQ6ICBkb3VibGUgRENDUmF0ZVs4XTsKMTQ0NzQ6ICBkb3VibGUgQXZlcmFnZURDQ0NvbXByZXNz aW9uUmF0ZTsKMTQ0NzQ6ICBlbnVtIG9kbV9jb21iaW5lX21vZGUgT0RNQ29tYmluZUVuYWJsZWRb OF07CjE0NDc0OiAgZG91YmxlIE91dHB1dEJwcFs4XTsKMTQ0NzQ6ICBib29sIERTQ0VuYWJsZWRb OF07CjE0NDc0OiAgdW5zaWduZWQgaW50IERTQ0lucHV0Qml0UGVyQ29tcG9uZW50WzhdOwoxNDQ3 NDogIGVudW0gb3V0cHV0X2Zvcm1hdF9jbGFzcyBPdXRwdXRGb3JtYXRbOF07CjE0NDc0OiAgZW51 bSBvdXRwdXRfZW5jb2Rlcl9jbGFzcyBPdXRwdXRbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IEJs ZW5kaW5nQW5kVGltaW5nWzhdOwoxNDQ3NDogIGJvb2wgU3luY2hyb25pemVkVkJsYW5rOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBOdW1iZXJPZkN1cnNvcnNbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50 IEN1cnNvcldpZHRoWzhdWzJdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBDdXJzb3JCUFBbOF1bMl07 CjE0NDc0OiAgYm9vbCBYRkNFbmFibGVkWzhdOwoxNDQ3NDogIGJvb2wgU2NhbGVyRW5hYmxlZFs4 XTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBJbW1lZGlhdGVGbGlwU3VwcG9ydDsKMTQ0 NzQ6ICBkb3VibGUgREVUQnVmZmVyU2l6ZVlbOF07CjE0NDc0OiAgZG91YmxlIERFVEJ1ZmZlclNp emVDWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBTd2F0aEhlaWdodFlbOF07CjE0NDc0OiAgdW5z aWduZWQgaW50IFN3YXRoSGVpZ2h0Q1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTEJCaXRQZXJQ aXhlbFs4XTsKMTQ0NzQ6ICBkb3VibGUgTGFzdFBpeGVsT2ZMaW5lRXh0cmFXYXRlcm1hcms7CjE0 NDc0OiAgZG91YmxlIFRvdGFsRGF0YVJlYWRCYW5kd2lkdGg7CjE0NDc0OiAgdW5zaWduZWQgaW50 IFRvdGFsQWN0aXZlV3JpdGViYWNrOwoxNDQ3NDogIHVuc2lnbmVkIGludCBFZmZlY3RpdmVMQkxh dGVuY3lIaWRpbmdTb3VyY2VMaW5lc0x1bWE7CjE0NDc0OiAgdW5zaWduZWQgaW50IEVmZmVjdGl2 ZUxCTGF0ZW5jeUhpZGluZ1NvdXJjZUxpbmVzQ2hyb21hOwoxNDQ3NDogIGRvdWJsZSBCYW5kd2lk dGhBdmFpbGFibGVGb3JJbW1lZGlhdGVGbGlwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBQcmVmZXRj aE1vZGVbNyArIDFdWzJdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBQcmVmZXRjaE1vZGVQZXJTdGF0 ZVs3ICsgMV1bMl07CjE0NDc0OiAgdW5zaWduZWQgaW50IE1pblByZWZldGNoTW9kZTsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgTWF4UHJlZmV0Y2hNb2RlOwoxNDQ3NDogIGJvb2wgQW55TGluZXNGb3JW TU9yUm93VG9vTGFyZ2U7CjE0NDc0OiAgZG91YmxlIE1heFZTdGFydHVwOwoxNDQ3NDogIGJvb2wg SWdub3JlVmlld3BvcnRQb3NpdGlvbmluZzsKMTQ0NzQ6ICBib29sIEVycm9yUmVzdWx0WzhdOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGRvdWJsZSBEQ0ZDTEtEZWVwU2xlZXA7CjE0 NDc0OiAgZG91YmxlIFVyZ2VudFdhdGVybWFyazsKMTQ0NzQ6ICBkb3VibGUgVXJnZW50RXh0cmFM YXRlbmN5OwoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tVcmdlbnRXYXRlcm1hcms7CjE0NDc0OiAg ZG91YmxlIFN0dXR0ZXJFeGl0V2F0ZXJtYXJrOwoxNDQ3NDogIGRvdWJsZSBTdHV0dGVyRW50ZXJQ bHVzRXhpdFdhdGVybWFyazsKMTQ0NzQ6ICBkb3VibGUgRFJBTUNsb2NrQ2hhbmdlV2F0ZXJtYXJr OwoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tEUkFNQ2xvY2tDaGFuZ2VXYXRlcm1hcms7CjE0NDc0 OiAgZG91YmxlIFN0dXR0ZXJFZmZpY2llbmN5OwoxNDQ3NDogIGRvdWJsZSBTdHV0dGVyRWZmaWNp ZW5jeU5vdEluY2x1ZGluZ1ZCbGFuazsKMTQ0NzQ6ICBkb3VibGUgTm9uVXJnZW50TGF0ZW5jeVRv bGVyYW5jZTsKMTQ0NzQ6ICBkb3VibGUgTWluQWN0aXZlRFJBTUNsb2NrQ2hhbmdlTGF0ZW5jeVN1 cHBvcnRlZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGRvdWJsZSBE SVNQQ0xLX2NhbGN1bGF0ZWQ7CjE0NDc0OiAgZG91YmxlIERQUENMS19jYWxjdWxhdGVkWzhdOwox NDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IFZVcGRhdGVPZmZzZXRQaXhbOF07CjE0NDc0OiAg ZG91YmxlIFZVcGRhdGVXaWR0aFBpeFs4XTsKMTQ0NzQ6ICBkb3VibGUgVlJlYWR5T2Zmc2V0UGl4 WzhdOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IFRvdEltbWVkaWF0ZUZsaXBCeXRlczsK MTQ0NzQ6ICBkb3VibGUgVENhbGM7CjE0NDc0OiAKMTQ0NzQ6ICBkaXNwbGF5X2UyZV9waXBlX3Bh cmFtc19zdCBjYWNoZV9waXBlc1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY2FjaGVfbnVtX3Bp cGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBwaXBlX3BsYW5lWzhdOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIGJvb2wgRW1iZWRkZWRQYW5lbFs4XTsKMTQ0NzQ6ICBib29sIFN1cHBv cnRHRlg3Q29tcGF0aWJsZVRpbGluZ0luMzJicHBBbmQ2NGJwcDsKMTQ0NzQ6ICBkb3VibGUgTWF4 SFNDTFJhdGlvOwoxNDQ3NDogIGRvdWJsZSBNYXhWU0NMUmF0aW87CjE0NDc0OiAgdW5zaWduZWQg aW50IE1heE51bVdyaXRlYmFjazsKMTQ0NzQ6ICBib29sIFdyaXRlYmFja0x1bWFBbmRDaHJvbWFT Y2FsaW5nU3VwcG9ydGVkOwoxNDQ3NDogIGJvb2wgQ3Vyc29yNjRCcHBTdXBwb3J0OwoxNDQ3NDog IGRvdWJsZSBEQ0ZDTEtQZXJTdGF0ZVs3ICsgMV07CjE0NDc0OiAgZG91YmxlIERDRkNMS1N0YXRl WzcgKyAxXVsyXTsKMTQ0NzQ6ICBkb3VibGUgRmFicmljQ2xvY2tQZXJTdGF0ZVs3ICsgMV07CjE0 NDc0OiAgZG91YmxlIFNPQ0NMS1BlclN0YXRlWzcgKyAxXTsKMTQ0NzQ6ICBkb3VibGUgUEhZQ0xL UGVyU3RhdGVbNyArIDFdOwoxNDQ3NDogIGRvdWJsZSBEVEJDTEtQZXJTdGF0ZVs3ICsgMV07CjE0 NDc0OiAgZG91YmxlIE1heERwcGNsa1s3ICsgMV07CjE0NDc0OiAgZG91YmxlIE1heERTQ0NMS1s3 ICsgMV07CjE0NDc0OiAgZG91YmxlIERSQU1TcGVlZFBlclN0YXRlWzcgKyAxXTsKMTQ0NzQ6ICBk b3VibGUgTWF4RGlzcGNsa1s3ICsgMV07CjE0NDc0OiAgaW50IFZvbHRhZ2VPdmVycmlkZUxldmVs OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBib29sIFNjYWxlUmF0aW9BbmRUYXBzU3VwcG9ydDsK MTQ0NzQ6ICBib29sIFNvdXJjZUZvcm1hdFBpeGVsQW5kU2NhblN1cHBvcnQ7CjE0NDc0OiAgZG91 YmxlIFRvdGFsQmFuZHdpZHRoQ29uc3VtZWRHQnl0ZVBlclNlY29uZDsKMTQ0NzQ6ICBib29sIERD Q0VuYWJsZWRJbkFueVBsYW5lOwoxNDQ3NDogIGJvb2wgV3JpdGViYWNrTGF0ZW5jeVN1cHBvcnQ7 CjE0NDc0OiAgYm9vbCBXcml0ZWJhY2tNb2RlU3VwcG9ydDsKMTQ0NzQ6ICBib29sIFdyaXRlYmFj azEwYnBjNDIwU3VwcG9ydGVkOwoxNDQ3NDogIGJvb2wgQmFuZHdpZHRoU3VwcG9ydFs3ICsgMV07 CjE0NDc0OiAgdW5zaWduZWQgaW50IFRvdGFsTnVtYmVyT2ZBY3RpdmVXcml0ZWJhY2s7CjE0NDc0 OiAgZG91YmxlIENyaXRpY2FsUG9pbnQ7CjE0NDc0OiAgZG91YmxlIFJldHVybkJXVG9EQ05QZXJT dGF0ZTsKMTQ0NzQ6ICBib29sIElzRXJyb3JSZXN1bHRbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGJv b2wgcHJlZmV0Y2hfdm1fYndfdmFsaWQ7CjE0NDc0OiAgYm9vbCBwcmVmZXRjaF9yb3dfYndfdmFs aWQ7CjE0NDc0OiAgYm9vbCBOdW1iZXJPZk9UR1N1cHBvcnQ7CjE0NDc0OiAgYm9vbCBOb25zdXBw b3J0ZWREU0NJbnB1dEJQQzsKMTQ0NzQ6ICBib29sIFdyaXRlYmFja1NjYWxlUmF0aW9BbmRUYXBz U3VwcG9ydDsKMTQ0NzQ6ICBib29sIEN1cnNvclN1cHBvcnQ7CjE0NDc0OiAgYm9vbCBQaXRjaFN1 cHBvcnQ7CjE0NDc0OiAgZW51bSBkbV92YWxpZGF0aW9uX3N0YXR1cyBWYWxpZGF0aW9uU3RhdHVz WzcgKyAxXTsKMTQ0NzQ6IAoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tMaW5lQnVmZmVyTHVtYUJ1 ZmZlclNpemU7CjE0NDc0OiAgZG91YmxlIFdyaXRlYmFja0xpbmVCdWZmZXJDaHJvbWFCdWZmZXJT aXplOwoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tNaW5IU0NMUmF0aW87CjE0NDc0OiAgZG91Ymxl IFdyaXRlYmFja01pblZTQ0xSYXRpbzsKMTQ0NzQ6ICBkb3VibGUgV3JpdGViYWNrTWF4SFNDTFJh dGlvOwoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tNYXhWU0NMUmF0aW87CjE0NDc0OiAgZG91Ymxl IFdyaXRlYmFja01heEhTQ0xUYXBzOwoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tNYXhWU0NMVGFw czsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTWF4TnVtRFBQOwoxNDQ3NDogIHVuc2lnbmVkIGludCBN YXhOdW1PVEc7CjE0NDc0OiAgZG91YmxlIEN1cnNvckJ1ZmZlclNpemU7CjE0NDc0OiAgZG91Ymxl IEN1cnNvckNodW5rU2l6ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTW9kZTsKMTQ0NzQ6ICBkb3Vi bGUgT3V0cHV0TGlua0RQTGFuZXNbOF07CjE0NDc0OiAgZG91YmxlIEZvcmNlZE91dHB1dExpbmtC UFBbOF07CjE0NDc0OiAgZG91YmxlIEltbWVkaWF0ZUZsaXBCV1s4XTsKMTQ0NzQ6ICBkb3VibGUg TWF4TWF4VlN0YXJ0dXBbNyArIDFdWzJdOwoxNDQ3NDogCjE0NDc0OiAgZG91YmxlIFdyaXRlYmFj a0x1bWFWRXh0cmE7CjE0NDc0OiAgZG91YmxlIFdyaXRlYmFja0Nocm9tYVZFeHRyYTsKMTQ0NzQ6 ICBkb3VibGUgV3JpdGViYWNrUmVxdWlyZWRESVNQQ0xLOwoxNDQ3NDogIGRvdWJsZSBNYXhpbXVt U3dhdGhXaWR0aFN1cHBvcnQ7CjE0NDc0OiAgZG91YmxlIE1heGltdW1Td2F0aFdpZHRoSW5ERVRC dWZmZXI7CjE0NDc0OiAgZG91YmxlIE1heGltdW1Td2F0aFdpZHRoSW5MaW5lQnVmZmVyOwoxNDQ3 NDogIGRvdWJsZSBNYXhEaXNwY2xrUm91bmRlZERvd25Ub0RGU0dyYW51bGFyaXR5OwoxNDQ3NDog IGRvdWJsZSBNYXhEcHBjbGtSb3VuZGVkRG93blRvREZTR3JhbnVsYXJpdHk7CjE0NDc0OiAgZG91 YmxlIFBsYW5lUmVxdWlyZWRESVNQQ0xLV2l0aG91dE9ETUNvbWJpbmU7CjE0NDc0OiAgZG91Ymxl IFBsYW5lUmVxdWlyZWRESVNQQ0xLV2l0aE9ETUNvbWJpbmU7CjE0NDc0OiAgZG91YmxlIFBsYW5l UmVxdWlyZWRESVNQQ0xLOwoxNDQ3NDogIGRvdWJsZSBUb3RhbE51bWJlck9mQWN0aXZlT1RHOwox NDQ3NDogIGRvdWJsZSBGRUNPdmVyaGVhZDsKMTQ0NzQ6ICBkb3VibGUgRWZmZWN0aXZlRkVDT3Zl cmhlYWQ7CjE0NDc0OiAgZG91YmxlIE91dGJwcDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgT3V0YnBw RFNDOwoxNDQ3NDogIGRvdWJsZSBUb3RhbERTQ1VuaXRzUmVxdWlyZWQ7CjE0NDc0OiAgZG91Ymxl IGJwcDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc2xpY2VzOwoxNDQ3NDogIGRvdWJsZSBTd2F0aFdp ZHRoR3JhbnVsYXJpdHlZOwoxNDQ3NDogIGRvdWJsZSBSb3VuZGVkVXBNYXhTd2F0aFNpemVCeXRl c1k7CjE0NDc0OiAgZG91YmxlIFN3YXRoV2lkdGhHcmFudWxhcml0eUM7CjE0NDc0OiAgZG91Ymxl IFJvdW5kZWRVcE1heFN3YXRoU2l6ZUJ5dGVzQzsKMTQ0NzQ6ICBkb3VibGUgRWZmZWN0aXZlREVU TEJMaW5lc0x1bWE7CjE0NDc0OiAgZG91YmxlIEVmZmVjdGl2ZURFVExCTGluZXNDaHJvbWE7CjE0 NDc0OiAgZG91YmxlIFByb2plY3RlZERDRkNMS0RlZXBTbGVlcFs3ICsgMV1bMl07CjE0NDc0OiAg ZG91YmxlIFBERUFuZE1ldGFQVEVCeXRlc1BlckZyYW1lWTsKMTQ0NzQ6ICBkb3VibGUgUERFQW5k TWV0YVBURUJ5dGVzUGVyRnJhbWVDOwoxNDQ3NDogIHVuc2lnbmVkIGludCBNZXRhUm93Qnl0ZXNZ OwoxNDQ3NDogIHVuc2lnbmVkIGludCBNZXRhUm93Qnl0ZXNDOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBEUFRFQnl0ZXNQZXJSb3dDOwoxNDQ3NDogIHVuc2lnbmVkIGludCBEUFRFQnl0ZXNQZXJSb3dZ OwoxNDQ3NDogIGRvdWJsZSBFeHRyYUxhdGVuY3k7CjE0NDc0OiAgZG91YmxlIFRpbWVDYWxjOwox NDQ3NDogIGRvdWJsZSBUV2FpdDsKMTQ0NzQ6ICBkb3VibGUgTWF4aW11bVJlYWRCYW5kd2lkdGhX aXRoUHJlZmV0Y2g7CjE0NDc0OiAgZG91YmxlIE1heGltdW1SZWFkQmFuZHdpZHRoV2l0aG91dFBy ZWZldGNoOwoxNDQ3NDogIGRvdWJsZSB0b3RhbF9kY25fcmVhZF9id193aXRoX2ZsaXA7CjE0NDc0 OiAgZG91YmxlIHRvdGFsX2Rjbl9yZWFkX2J3X3dpdGhfZmxpcF9ub191cmdlbnRfYnVyc3Q7CjE0 NDc0OiAgZG91YmxlIEZyYWN0aW9uT2ZVcmdlbnRCYW5kd2lkdGg7CjE0NDc0OiAgZG91YmxlIEZy YWN0aW9uT2ZVcmdlbnRCYW5kd2lkdGhJbW1lZGlhdGVGbGlwOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBkb3VibGUgSWRlYWxTRFBQb3J0QmFuZHdpZHRoUGVyU3RhdGVbNyArIDFdWzJdOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBOb09mRFBQWzcgKyAxXVsyXVs4XTsKMTQ0NzQ6ICBpbnQgTm9PZkRQ UFRoaXNTdGF0ZVs4XTsKMTQ0NzQ6ICBlbnVtIG9kbV9jb21iaW5lX21vZGUgT0RNQ29tYmluZUVu YWJsZVBlclN0YXRlWzcgKyAxXVs4XTsKMTQ0NzQ6ICBkb3VibGUgU3dhdGhXaWR0aFlUaGlzU3Rh dGVbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFN3YXRoSGVpZ2h0Q1BlclN0YXRlWzcgKyAxXVsy XVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgU3dhdGhIZWlnaHRZVGhpc1N0YXRlWzhdOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBTd2F0aEhlaWdodENUaGlzU3RhdGVbOF07CjE0NDc0OiAgZG91Ymxl IFZSYXRpb1ByZVlbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBWUmF0aW9QcmVDWzcgKyAx XVsyXVs4XTsKMTQ0NzQ6ICBkb3VibGUgUmVxdWlyZWRQcmVmZXRjaFBpeGVsRGF0YUJXTHVtYVs3 ICsgMV1bMl1bOF07CjE0NDc0OiAgZG91YmxlIFJlcXVpcmVkUHJlZmV0Y2hQaXhlbERhdGFCV0No cm9tYVs3ICsgMV1bMl1bOF07CjE0NDc0OiAgZG91YmxlIFJlcXVpcmVkRFBQQ0xLWzcgKyAxXVsy XVs4XTsKMTQ0NzQ6ICBkb3VibGUgUmVxdWlyZWREUFBDTEtUaGlzU3RhdGVbOF07CjE0NDc0OiAg Ym9vbCBQVEVCdWZmZXJTaXplTm90RXhjZWVkZWRZWzcgKyAxXVsyXVs4XTsKMTQ0NzQ6ICBib29s IFBURUJ1ZmZlclNpemVOb3RFeGNlZWRlZENbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGJvb2wgQmFu ZHdpZHRoV2l0aG91dFByZWZldGNoU3VwcG9ydGVkWzcgKyAxXVsyXTsKMTQ0NzQ6ICBib29sIFBy ZWZldGNoU3VwcG9ydGVkWzcgKyAxXVsyXTsKMTQ0NzQ6ICBib29sIFZSYXRpb0luUHJlZmV0Y2hT dXBwb3J0ZWRbNyArIDFdWzJdOwoxNDQ3NDogIGRvdWJsZSBSZXF1aXJlZERJU1BDTEtbNyArIDFd WzJdOwoxNDQ3NDogIGJvb2wgRElTUENMS19EUFBDTEtfU3VwcG9ydFs3ICsgMV1bMl07CjE0NDc0 OiAgYm9vbCBUb3RhbEF2YWlsYWJsZVBpcGVzU3VwcG9ydFs3ICsgMV1bMl07CjE0NDc0OiAgdW5z aWduZWQgaW50IFRvdGFsTnVtYmVyT2ZBY3RpdmVEUFBbNyArIDFdWzJdOwoxNDQ3NDogIHVuc2ln bmVkIGludCBUb3RhbE51bWJlck9mRENDQWN0aXZlRFBQWzcgKyAxXVsyXTsKMTQ0NzQ6ICBib29s IE1vZGVTdXBwb3J0WzcgKyAxXVsyXTsKMTQ0NzQ6ICBkb3VibGUgUmV0dXJuQldQZXJTdGF0ZVs3 ICsgMV1bMl07CjE0NDc0OiAgYm9vbCBESU9TdXBwb3J0WzcgKyAxXTsKMTQ0NzQ6ICBib29sIE5v dEVub3VnaERTQ1VuaXRzWzcgKyAxXTsKMTQ0NzQ6ICBib29sIERTQ0NMS1JlcXVpcmVkTW9yZVRo YW5TdXBwb3J0ZWRbNyArIDFdOwoxNDQ3NDogIGJvb2wgRFRCQ0xLUmVxdWlyZWRNb3JlVGhhblN1 cHBvcnRlZFs3ICsgMV07CjE0NDc0OiAgZG91YmxlIFVyZ2VudFJvdW5kVHJpcEFuZE91dE9mT3Jk ZXJMYXRlbmN5UGVyU3RhdGVbNyArIDFdOwoxNDQ3NDogIGJvb2wgUk9CU3VwcG9ydFs3ICsgMV1b Ml07CjE0NDc0OiAgYm9vbCBQVEVCdWZmZXJTaXplTm90RXhjZWVkZWRbNyArIDFdWzJdOwoxNDQ3 NDogIGJvb2wgVG90YWxWZXJ0aWNhbEFjdGl2ZUJhbmR3aWR0aFN1cHBvcnRbNyArIDFdWzJdOwox NDQ3NDogIGRvdWJsZSBNYXhUb3RhbFZlcnRpY2FsQWN0aXZlQXZhaWxhYmxlQmFuZHdpZHRoWzcg KyAxXVsyXTsKMTQ0NzQ6ICBkb3VibGUgUHJlZmV0Y2hCV1s4XTsKMTQ0NzQ6ICBkb3VibGUgUERF QW5kTWV0YVBURUJ5dGVzUGVyRnJhbWVbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBNZXRh Um93Qnl0ZXNbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBEUFRFQnl0ZXNQZXJSb3dbNyAr IDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBQcmVmZXRjaExpbmVzWVs3ICsgMV1bMl1bOF07CjE0 NDc0OiAgZG91YmxlIFByZWZldGNoTGluZXNDWzcgKyAxXVsyXVs4XTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgTWF4TnVtU3dZWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBNYXhOdW1Td0NbOF07CjE0 NDc0OiAgZG91YmxlIFByZWZpbGxZWzhdOwoxNDQ3NDogIGRvdWJsZSBQcmVmaWxsQ1s4XTsKMTQ0 NzQ6ICBkb3VibGUgTGluZVRpbWVzRm9yUHJlZmV0Y2hbOF07CjE0NDc0OiAgZG91YmxlIExpbmVz Rm9yTWV0YVBURVs4XTsKMTQ0NzQ6ICBkb3VibGUgTGluZXNGb3JNZXRhQW5kRFBURVJvd1s4XTsK MTQ0NzQ6ICBkb3VibGUgTWluRFBQQ0xLVXNpbmdTaW5nbGVEUFBbOF07CjE0NDc0OiAgZG91Ymxl IFN3YXRoV2lkdGhZU2luZ2xlRFBQWzhdOwoxNDQ3NDogIGRvdWJsZSBCeXRlUGVyUGl4ZWxJbkRF VFlbOF07CjE0NDc0OiAgZG91YmxlIEJ5dGVQZXJQaXhlbEluREVUQ1s4XTsKMTQ0NzQ6ICBib29s IFJlcXVpcmVzRFNDWzcgKyAxXVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTnVtYmVyT2ZEU0NT bGljZVs3ICsgMV1bOF07CjE0NDc0OiAgZG91YmxlIFJlcXVpcmVzRkVDWzcgKyAxXVs4XTsKMTQ0 NzQ6ICBkb3VibGUgT3V0cHV0QnBwUGVyU3RhdGVbNyArIDFdWzhdOwoxNDQ3NDogIGRvdWJsZSBE U0NEZWxheVBlclN0YXRlWzcgKyAxXVs4XTsKMTQ0NzQ6ICBib29sIFZpZXdwb3J0U2l6ZVN1cHBv cnRbNyArIDFdWzJdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBSZWFkMjU2QmxvY2tIZWlnaHRZWzhd OwoxNDQ3NDogIHVuc2lnbmVkIGludCBSZWFkMjU2QmxvY2tXaWR0aFlbOF07CjE0NDc0OiAgdW5z aWduZWQgaW50IFJlYWQyNTZCbG9ja0hlaWdodENbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFJl YWQyNTZCbG9ja1dpZHRoQ1s4XTsKMTQ0NzQ6ICBkb3VibGUgTWF4U3dhdGhIZWlnaHRZWzhdOwox NDQ3NDogIGRvdWJsZSBNYXhTd2F0aEhlaWdodENbOF07CjE0NDc0OiAgZG91YmxlIE1pblN3YXRo SGVpZ2h0WVs4XTsKMTQ0NzQ6ICBkb3VibGUgTWluU3dhdGhIZWlnaHRDWzhdOwoxNDQ3NDogIGRv dWJsZSBSZWFkQmFuZHdpZHRoTHVtYVs4XTsKMTQ0NzQ6ICBkb3VibGUgUmVhZEJhbmR3aWR0aENo cm9tYVs4XTsKMTQ0NzQ6ICBkb3VibGUgUmVhZEJhbmR3aWR0aFs4XTsKMTQ0NzQ6ICBkb3VibGUg V3JpdGVCYW5kd2lkdGhbOF07CjE0NDc0OiAgZG91YmxlIFBTQ0xfRkFDVE9SWzhdOwoxNDQ3NDog IGRvdWJsZSBQU0NMX0ZBQ1RPUl9DSFJPTUFbOF07CjE0NDc0OiAgZG91YmxlIE1heGltdW1WU3Rh cnR1cFs3ICsgMV1bMl1bOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IE1hY3JvVGlsZVdpZHRoWVs4 XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTWFjcm9UaWxlV2lkdGhDWzhdOwoxNDQ3NDogIGRvdWJs ZSBBbGlnbmVkRENDTWV0YVBpdGNoWzhdOwoxNDQ3NDogIGRvdWJsZSBBbGlnbmVkWVBpdGNoWzhd OwoxNDQ3NDogIGRvdWJsZSBBbGlnbmVkQ1BpdGNoWzhdOwoxNDQ3NDogIGRvdWJsZSBNYXhpbXVt U3dhdGhXaWR0aFs4XTsKMTQ0NzQ6ICBkb3VibGUgY3Vyc29yX2J3WzhdOwoxNDQ3NDogIGRvdWJs ZSBjdXJzb3JfYndfcHJlWzhdOwoxNDQ3NDogIGRvdWJsZSBUbm9fYndbOF07CjE0NDc0OiAgZG91 YmxlIHByZWZldGNoX3Ztcm93X2J3WzhdOwoxNDQ3NDogIGRvdWJsZSBEZXN0aW5hdGlvbkxpbmVz VG9SZXF1ZXN0Vk1JbkltbWVkaWF0ZUZsaXBbOF07CjE0NDc0OiAgZG91YmxlIERlc3RpbmF0aW9u TGluZXNUb1JlcXVlc3RSb3dJbkltbWVkaWF0ZUZsaXBbOF07CjE0NDc0OiAgZG91YmxlIGZpbmFs X2ZsaXBfYndbOF07CjE0NDc0OiAgYm9vbCBJbW1lZGlhdGVGbGlwU3VwcG9ydGVkRm9yU3RhdGVb NyArIDFdWzJdOwoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tEZWxheVs3ICsgMV1bOF07CjE0NDc0 OiAgdW5zaWduZWQgaW50IHZtX2dyb3VwX2J5dGVzWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBk cHRlX2dyb3VwX2J5dGVzWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHRlX3Jvd19oZWlnaHRb OF07CjE0NDc0OiAgdW5zaWduZWQgaW50IG1ldGFfcmVxX2hlaWdodFs4XTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgbWV0YV9yZXFfd2lkdGhbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IG1ldGFfcm93 X2hlaWdodFs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWV0YV9yb3dfd2lkdGhbOF07CjE0NDc0 OiAgdW5zaWduZWQgaW50IGRwdGVfcm93X2hlaWdodF9jaHJvbWFbOF07CjE0NDc0OiAgdW5zaWdu ZWQgaW50IG1ldGFfcmVxX2hlaWdodF9jaHJvbWFbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IG1l dGFfcmVxX3dpZHRoX2Nocm9tYVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWV0YV9yb3dfaGVp Z2h0X2Nocm9tYVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWV0YV9yb3dfd2lkdGhfY2hyb21h WzhdOwoxNDQ3NDogIGJvb2wgSW1tZWRpYXRlRmxpcFN1cHBvcnRlZEZvclBpcGVbOF07CjE0NDc0 OiAgZG91YmxlIG1ldGFfcm93X2J3WzhdOwoxNDQ3NDogIGRvdWJsZSBkcHRlX3Jvd19id1s4XTsK MTQ0NzQ6ICBkb3VibGUgRGlzcGxheVBpcGVMaW5lRGVsaXZlcnlUaW1lTHVtYVs4XTsKMTQ0NzQ6 ICBkb3VibGUgRGlzcGxheVBpcGVMaW5lRGVsaXZlcnlUaW1lQ2hyb21hWzhdOwoxNDQ3NDogIGRv dWJsZSBEaXNwbGF5UGlwZVJlcXVlc3REZWxpdmVyeVRpbWVMdW1hWzhdOwoxNDQ3NDogIGRvdWJs ZSBEaXNwbGF5UGlwZVJlcXVlc3REZWxpdmVyeVRpbWVDaHJvbWFbOF07CjE0NDc0OiAgZW51bSBj bG9ja19jaGFuZ2Vfc3VwcG9ydCBEUkFNQ2xvY2tDaGFuZ2VTdXBwb3J0WzcgKyAxXVsyXTsKMTQ0 NzQ6ICBkb3VibGUgVXJnZW50QnVyc3RGYWN0b3JDdXJzb3JbOF07CjE0NDc0OiAgZG91YmxlIFVy Z2VudEJ1cnN0RmFjdG9yQ3Vyc29yUHJlWzhdOwoxNDQ3NDogIGRvdWJsZSBVcmdlbnRCdXJzdEZh Y3Rvckx1bWFbOF07CjE0NDc0OiAgZG91YmxlIFVyZ2VudEJ1cnN0RmFjdG9yTHVtYVByZVs4XTsK MTQ0NzQ6ICBkb3VibGUgVXJnZW50QnVyc3RGYWN0b3JDaHJvbWFbOF07CjE0NDc0OiAgZG91Ymxl IFVyZ2VudEJ1cnN0RmFjdG9yQ2hyb21hUHJlWzhdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBi b29sIE1QQ0NvbWJpbmVbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBTd2F0aFdpZHRoQ1Np bmdsZURQUFs4XTsKMTQ0NzQ6ICBkb3VibGUgTWF4aW11bVN3YXRoV2lkdGhJbkxpbmVCdWZmZXJM dW1hOwoxNDQ3NDogIGRvdWJsZSBNYXhpbXVtU3dhdGhXaWR0aEluTGluZUJ1ZmZlckNocm9tYTsK MTQ0NzQ6ICBkb3VibGUgTWF4aW11bVN3YXRoV2lkdGhMdW1hWzhdOwoxNDQ3NDogIGRvdWJsZSBN YXhpbXVtU3dhdGhXaWR0aENocm9tYVs4XTsKMTQ0NzQ6ICBlbnVtIG9kbV9jb21iaW5lX21vZGUg b2RtX2NvbWJpbmVfZHVtbXlbOF07CjE0NDc0OiAgZG91YmxlIGR1bW15MVs4XTsKMTQ0NzQ6ICBk b3VibGUgZHVtbXkyWzhdOwoxNDQ3NDogIGRvdWJsZSBkdW1teTNbOF07CjE0NDc0OiAgZG91Ymxl IGR1bW15NFs4XTsKMTQ0NzQ6ICBkb3VibGUgZHVtbXk1OwoxNDQ3NDogIGRvdWJsZSBkdW1teTY7 CjE0NDc0OiAgZG91YmxlIGR1bW15N1s4XTsKMTQ0NzQ6ICBkb3VibGUgZHVtbXk4WzhdOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIxbXNbOF07CjE0NDc0OiAgZG91YmxlIGR1bW15 aW50ZWdlcjJtc1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyM1s4XTsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyNFs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg ZHVtbXlpbnRlZ2VyNTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyNjsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyNzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlp bnRlZ2VyODsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyOTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgZHVtbXlpbnRlZ2VyMTA7CjE0NDc0OiAgdW5zaWduZWQgaW50IGR1bW15aW50ZWdl cjExOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIxMjsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgZHVtbXlpbnRlZ2VyYXJyMVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRl Z2VyYXJyMls4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyYXJyM1s4XTsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyYXJyNFs4XTsKMTQ0NzQ6ICBib29sIGR1bW15 c2luZ2xlc3RyaW5nOwoxNDQ3NDogIGJvb2wgU2luZ2xlRFBQVmlld3BvcnRTaXplU3VwcG9ydFBl clBsYW5lWzhdOwoxNDQ3NDogIGRvdWJsZSBQbGFuZVJlcXVpcmVkRElTUENMS1dpdGhPRE1Db21i aW5lMlRvMTsKMTQ0NzQ6ICBkb3VibGUgUGxhbmVSZXF1aXJlZERJU1BDTEtXaXRoT0RNQ29tYmlu ZTRUbzE7CjE0NDc0OiAgdW5zaWduZWQgaW50IFRvdGFsTnVtYmVyT2ZTaW5nbGVEUFBQbGFuZXNb NyArIDFdWzJdOwoxNDQ3NDogIGJvb2wgTGlua0RTQ0VuYWJsZTsKMTQ0NzQ6ICBib29sIE9ETUNv bWJpbmU0VG8xU3VwcG9ydENoZWNrT0tbNyArIDFdOwoxNDQ3NDogIGVudW0gb2RtX2NvbWJpbmVf bW9kZSBPRE1Db21iaW5lRW5hYmxlVGhpc1N0YXRlWzhdOwoxNDQ3NDogIGRvdWJsZSBTd2F0aFdp ZHRoQ1RoaXNTdGF0ZVs4XTsKMTQ0NzQ6ICBib29sIFZpZXdwb3J0U2l6ZVN1cHBvcnRQZXJQbGFu ZVs4XTsKMTQ0NzQ6ICBkb3VibGUgQWxpZ25lZERDQ01ldGFQaXRjaFlbOF07CjE0NDc0OiAgZG91 YmxlIEFsaWduZWREQ0NNZXRhUGl0Y2hDWzhdOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50 IE5vdEVub3VnaFVyZ2VudExhdGVuY3lIaWRpbmc7CjE0NDc0OiAgdW5zaWduZWQgaW50IE5vdEVu b3VnaFVyZ2VudExhdGVuY3lIaWRpbmdQcmU7CjE0NDc0OiAgaW50IFBURUJ1ZmZlclNpemVJblJl cXVlc3RzRm9yTHVtYTsKMTQ0NzQ6ICBpbnQgUFRFQnVmZmVyU2l6ZUluUmVxdWVzdHNGb3JDaHJv bWE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCBkcHRlX2dyb3VwX2J5dGVzX2Nocm9tYTsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdm1fZ3JvdXBfYnl0ZXNfY2hyb21hOwoxNDQ3NDogIGRvdWJs ZSBkc3RfeF9hZnRlcl9zY2FsZXI7CjE0NDc0OiAgZG91YmxlIGRzdF95X2FmdGVyX3NjYWxlcjsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgVlN0YXJ0dXBSZXF1aXJlZFdoZW5Ob3RFbm91Z2hUaW1lRm9y RHluYW1pY01ldGFkYXRhOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBkb3VibGUgUHJlZmV0Y2hC YW5kd2lkdGhbOF07CjE0NDc0OiAgZG91YmxlIFZJbml0UHJlRmlsbFlbOF07CjE0NDc0OiAgZG91 YmxlIFZJbml0UHJlRmlsbENbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IE1heE51bVN3YXRoWVs4 XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTWF4TnVtU3dhdGhDWzhdOwoxNDQ3NDogIHVuc2lnbmVk IGludCBWU3RhcnR1cFs4XTsKMTQ0NzQ6ICBkb3VibGUgRFNUWUFmdGVyU2NhbGVyWzhdOwoxNDQ3 NDogIGRvdWJsZSBEU1RYQWZ0ZXJTY2FsZXJbOF07CjE0NDc0OiAgYm9vbCBBbGxvd0RSQU1DbG9j a0NoYW5nZUR1cmluZ1ZCbGFua1s4XTsKMTQ0NzQ6ICBib29sIEFsbG93RFJBTVNlbGZSZWZyZXNo RHVyaW5nVkJsYW5rWzhdOwoxNDQ3NDogIGRvdWJsZSBWUmF0aW9QcmVmZXRjaFlbOF07CjE0NDc0 OiAgZG91YmxlIFZSYXRpb1ByZWZldGNoQ1s4XTsKMTQ0NzQ6ICBkb3VibGUgRGVzdGluYXRpb25M aW5lc0ZvclByZWZldGNoWzhdOwoxNDQ3NDogIGRvdWJsZSBEZXN0aW5hdGlvbkxpbmVzVG9SZXF1 ZXN0Vk1JblZCbGFua1s4XTsKMTQ0NzQ6ICBkb3VibGUgRGVzdGluYXRpb25MaW5lc1RvUmVxdWVz dFJvd0luVkJsYW5rWzhdOwoxNDQ3NDogIGRvdWJsZSBNaW5UVFVWQmxhbmtbOF07CjE0NDc0OiAg ZG91YmxlIEJ5dGVQZXJQaXhlbERFVFlbOF07CjE0NDc0OiAgZG91YmxlIEJ5dGVQZXJQaXhlbERF VENbOF07CjE0NDc0OiAgZG91YmxlIFN3YXRoV2lkdGhZWzhdOwoxNDQ3NDogIGRvdWJsZSBTd2F0 aFdpZHRoU2luZ2xlRFBQWVs4XTsKMTQ0NzQ6ICBkb3VibGUgQ3Vyc29yUmVxdWVzdERlbGl2ZXJ5 VGltZVs4XTsKMTQ0NzQ6ICBkb3VibGUgQ3Vyc29yUmVxdWVzdERlbGl2ZXJ5VGltZVByZWZldGNo WzhdOwoxNDQ3NDogIGRvdWJsZSBSZWFkQmFuZHdpZHRoUGxhbmVMdW1hWzhdOwoxNDQ3NDogIGRv dWJsZSBSZWFkQmFuZHdpZHRoUGxhbmVDaHJvbWFbOF07CjE0NDc0OiAgZG91YmxlIERpc3BsYXlQ aXBlTGluZURlbGl2ZXJ5VGltZUx1bWFQcmVmZXRjaFs4XTsKMTQ0NzQ6ICBkb3VibGUgRGlzcGxh eVBpcGVMaW5lRGVsaXZlcnlUaW1lQ2hyb21hUHJlZmV0Y2hbOF07CjE0NDc0OiAgZG91YmxlIERp c3BsYXlQaXBlUmVxdWVzdERlbGl2ZXJ5VGltZUx1bWFQcmVmZXRjaFs4XTsKMTQ0NzQ6ICBkb3Vi bGUgRGlzcGxheVBpcGVSZXF1ZXN0RGVsaXZlcnlUaW1lQ2hyb21hUHJlZmV0Y2hbOF07CjE0NDc0 OiAgZG91YmxlIFBpeGVsUFRFQnl0ZXNQZXJSb3dbOF07CjE0NDc0OiAgZG91YmxlIFBERUFuZE1l dGFQVEVCeXRlc0ZyYW1lWzhdOwoxNDQ3NDogIGRvdWJsZSBNZXRhUm93Qnl0ZVs4XTsKMTQ0NzQ6 ICBkb3VibGUgUHJlZmV0Y2hTb3VyY2VMaW5lc1lbOF07CjE0NDc0OiAgZG91YmxlIFJlcXVpcmVk UHJlZmV0Y2hQaXhEYXRhQldMdW1hWzhdOwoxNDQ3NDogIGRvdWJsZSBSZXF1aXJlZFByZWZldGNo UGl4RGF0YUJXQ2hyb21hWzhdOwoxNDQ3NDogIGRvdWJsZSBQcmVmZXRjaFNvdXJjZUxpbmVzQ1s4 XTsKMTQ0NzQ6ICBkb3VibGUgUFNDTF9USFJPVUdIUFVUX0xVTUFbOF07CjE0NDc0OiAgZG91Ymxl IFBTQ0xfVEhST1VHSFBVVF9DSFJPTUFbOF07CjE0NDc0OiAgZG91YmxlIERTQ0NMS19jYWxjdWxh dGVkWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBEU0NEZWxheVs4XTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgTWF4VlN0YXJ0dXBMaW5lc1s4XTsKMTQ0NzQ6ICBkb3VibGUgRFBQQ0xLVXNpbmdTaW5n bGVEUFBbOF07CjE0NDc0OiAgZG91YmxlIERQUENMS1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg RENDWU1heFVuY29tcHJlc3NlZEJsb2NrWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBEQ0NZTWF4 Q29tcHJlc3NlZEJsb2NrWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBEQ0NZSW5kZXBlbmRlbnQ2 NEJ5dGVCbG9ja1s4XTsKMTQ0NzQ6ICBkb3VibGUgTWF4aW11bURDQ0NvbXByZXNzaW9uWVN1cmZh Y2VbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IEJsb2NrSGVpZ2h0MjU2Qnl0ZXNZWzhdOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBCbG9ja0hlaWdodDI1NkJ5dGVzQ1s4XTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgQmxvY2tXaWR0aDI1NkJ5dGVzWVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgQmxvY2tX aWR0aDI1NkJ5dGVzQ1s4XTsKMTQ0NzQ6ICBkb3VibGUgWEZDU2xhdmVWVXBkYXRlT2Zmc2V0Wzhd OwoxNDQ3NDogIGRvdWJsZSBYRkNTbGF2ZVZ1cGRhdGVXaWR0aFs4XTsKMTQ0NzQ6ICBkb3VibGUg WEZDU2xhdmVWUmVhZHlPZmZzZXRbOF07CjE0NDc0OiAgZG91YmxlIFhGQ1RyYW5zZmVyRGVsYXlb OF07CjE0NDc0OiAgZG91YmxlIFhGQ1ByZWNoYXJnZURlbGF5WzhdOwoxNDQ3NDogIGRvdWJsZSBY RkNSZW1vdGVTdXJmYWNlRmxpcExhdGVuY3lbOF07CjE0NDc0OiAgZG91YmxlIFhGQ1ByZWZldGNo TWFyZ2luWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHRlX3Jvd193aWR0aF9sdW1hX3ViWzhd OwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHRlX3Jvd193aWR0aF9jaHJvbWFfdWJbOF07CjE0NDc0 OiAgZG91YmxlIEZ1bGxERVRCdWZmZXJpbmdUaW1lWVs4XTsKMTQ0NzQ6ICBkb3VibGUgRnVsbERF VEJ1ZmZlcmluZ1RpbWVDWzhdOwoxNDQ3NDogIGRvdWJsZSBEU1RfWV9QRVJfUFRFX1JPV19OT01f TFs4XTsKMTQ0NzQ6ICBkb3VibGUgRFNUX1lfUEVSX1BURV9ST1dfTk9NX0NbOF07CjE0NDc0OiAg ZG91YmxlIERTVF9ZX1BFUl9NRVRBX1JPV19OT01fTFs4XTsKMTQ0NzQ6ICBkb3VibGUgVGltZVBl ck1ldGFDaHVua05vbWluYWxbOF07CjE0NDc0OiAgZG91YmxlIFRpbWVQZXJNZXRhQ2h1bmtWQmxh bmtbOF07CjE0NDc0OiAgZG91YmxlIFRpbWVQZXJNZXRhQ2h1bmtGbGlwWzhdOwoxNDQ3NDogIHVu c2lnbmVkIGludCBzd2F0aF93aWR0aF9sdW1hX3ViWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBz d2F0aF93aWR0aF9jaHJvbWFfdWJbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFBpeGVsUFRFUmVx V2lkdGhZWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBQaXhlbFBURVJlcUhlaWdodFlbOF07CjE0 NDc0OiAgdW5zaWduZWQgaW50IFBURVJlcXVlc3RTaXplWVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgUGl4ZWxQVEVSZXFXaWR0aENbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFBpeGVsUFRFUmVx SGVpZ2h0Q1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgUFRFUmVxdWVzdFNpemVDWzhdOwoxNDQ3 NDogIGRvdWJsZSB0aW1lX3Blcl9wdGVfZ3JvdXBfbm9tX2x1bWFbOF07CjE0NDc0OiAgZG91Ymxl IHRpbWVfcGVyX3B0ZV9ncm91cF9ub21fY2hyb21hWzhdOwoxNDQ3NDogIGRvdWJsZSB0aW1lX3Bl cl9wdGVfZ3JvdXBfdmJsYW5rX2x1bWFbOF07CjE0NDc0OiAgZG91YmxlIHRpbWVfcGVyX3B0ZV9n cm91cF92YmxhbmtfY2hyb21hWzhdOwoxNDQ3NDogIGRvdWJsZSB0aW1lX3Blcl9wdGVfZ3JvdXBf ZmxpcF9sdW1hWzhdOwoxNDQ3NDogIGRvdWJsZSB0aW1lX3Blcl9wdGVfZ3JvdXBfZmxpcF9jaHJv bWFbOF07CjE0NDc0OiAgZG91YmxlIFRpbWVQZXJWTUdyb3VwVkJsYW5rWzhdOwoxNDQ3NDogIGRv dWJsZSBUaW1lUGVyVk1Hcm91cEZsaXBbOF07CjE0NDc0OiAgZG91YmxlIFRpbWVQZXJWTVJlcXVl c3RWQmxhbmtbOF07CjE0NDc0OiAgZG91YmxlIFRpbWVQZXJWTVJlcXVlc3RGbGlwWzhdOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBkcGRlMF9ieXRlc19wZXJfZnJhbWVfdWJfbFs4XTsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgbWV0YV9wdGVfYnl0ZXNfcGVyX2ZyYW1lX3ViX2xbOF07CjE0NDc0OiAgdW5z aWduZWQgaW50IGRwZGUwX2J5dGVzX3Blcl9mcmFtZV91Yl9jWzhdOwoxNDQ3NDogIHVuc2lnbmVk IGludCBtZXRhX3B0ZV9ieXRlc19wZXJfZnJhbWVfdWJfY1s4XTsKMTQ0NzQ6ICBkb3VibGUgTGlu ZXNUb0ZpbmlzaFN3YXRoVHJhbnNmZXJTdHV0dGVyQ3JpdGljYWxQbGFuZTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgQnl0ZVBlclBpeGVsWUNyaXRpY2FsUGxhbmU7CjE0NDc0OiAgZG91YmxlIFN3YXRo V2lkdGhZQ3JpdGljYWxQbGFuZTsKMTQ0NzQ6ICBkb3VibGUgTGluZXNJbkRFVFlbOF07CjE0NDc0 OiAgZG91YmxlIExpbmVzSW5ERVRZUm91bmRlZERvd25Ub1N3YXRoWzhdOwoxNDQ3NDogCjE0NDc0 OiAgZG91YmxlIFN3YXRoV2lkdGhTaW5nbGVEUFBDWzhdOwoxNDQ3NDogIGRvdWJsZSBTd2F0aFdp ZHRoQ1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgQnl0ZVBlclBpeGVsWVs4XTsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgQnl0ZVBlclBpeGVsQ1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlp bnRlZ2VyMTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyMjsKMTQ0NzQ6ICBkb3Vi bGUgRmluYWxEUkFNQ2xvY2tDaGFuZ2VMYXRlbmN5OwoxNDQ3NDogIGRvdWJsZSBUZG1kbF92bVs4 XTsKMTQ0NzQ6ICBkb3VibGUgVGRtZGxbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFRoaXNWU3Rh cnR1cDsKMTQ0NzQ6ICBib29sIFdyaXRlYmFja0FsbG93RFJBTUNsb2NrQ2hhbmdlRW5kUG9zaXRp b25bOF07CjE0NDc0OiAgZG91YmxlIERTVF9ZX1BFUl9NRVRBX1JPV19OT01fQ1s4XTsKMTQ0NzQ6 ICBkb3VibGUgVGltZVBlckNocm9tYU1ldGFDaHVua05vbWluYWxbOF07CjE0NDc0OiAgZG91Ymxl IFRpbWVQZXJDaHJvbWFNZXRhQ2h1bmtWQmxhbmtbOF07CjE0NDc0OiAgZG91YmxlIFRpbWVQZXJD aHJvbWFNZXRhQ2h1bmtGbGlwWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBEQ0NDTWF4VW5jb21w cmVzc2VkQmxvY2tbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IERDQ0NNYXhDb21wcmVzc2VkQmxv Y2tbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IERDQ0NJbmRlcGVuZGVudDY0Qnl0ZUJsb2NrWzhd OwoxNDQ3NDogIGRvdWJsZSBWU3RhcnR1cE1hcmdpbjsKMTQ0NzQ6ICBib29sIE5vdEVub3VnaFRp bWVGb3JEeW5hbWljTWV0YWRhdGE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGlu dCBNYXhpbXVtTWF4VlN0YXJ0dXBMaW5lczsKMTQ0NzQ6ICBkb3VibGUgRmFicmljQW5kRFJBTUJh bmR3aWR0aDsKMTQ0NzQ6ICBkb3VibGUgTGluZXNJbkRFVEx1bWE7CjE0NDc0OiAgZG91YmxlIExp bmVzSW5ERVRDaHJvbWE7CjE0NDc0OiAgdW5zaWduZWQgaW50IEltbWVkaWF0ZUZsaXBCeXRlc1s4 XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTGluZXNJbkRFVENbOF07CjE0NDc0OiAgdW5zaWduZWQg aW50IExpbmVzSW5ERVRDUm91bmRlZERvd25Ub1N3YXRoWzhdOwoxNDQ3NDogIGRvdWJsZSBVcmdl bnRMYXRlbmN5U3VwcG9ydFVzUGVyU3RhdGVbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBV cmdlbnRMYXRlbmN5U3VwcG9ydFVzWzhdOwoxNDQ3NDogIGRvdWJsZSBGYWJyaWNBbmREUkFNQmFu ZHdpZHRoUGVyU3RhdGVbNyArIDFdOwoxNDQ3NDogIGJvb2wgVXJnZW50TGF0ZW5jeVN1cHBvcnRb NyArIDFdWzJdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBTd2F0aFdpZHRoWVBlclN0YXRlWzcgKyAx XVsyXVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgU3dhdGhIZWlnaHRZUGVyU3RhdGVbNyArIDFd WzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBxdWFsX3Jvd19id1s4XTsKMTQ0NzQ6ICBkb3VibGUgcHJl ZmV0Y2hfcm93X2J3WzhdOwoxNDQ3NDogIGRvdWJsZSBwcmVmZXRjaF92bV9id1s4XTsKMTQ0NzQ6 IAoxNDQ3NDogIGRvdWJsZSBQVEVHcm91cFNpemU7CjE0NDc0OiAgdW5zaWduZWQgaW50IFBERVBy b2Nlc3NpbmdCdWZJbjY0S0JSZXFzOwoxNDQ3NDogCjE0NDc0OiAgZG91YmxlIE1heFRvdGFsVkFj dGl2ZVJEQmFuZHdpZHRoOwoxNDQ3NDogIGJvb2wgRG9VcmdlbnRMYXRlbmN5QWRqdXN0bWVudDsK MTQ0NzQ6ICBkb3VibGUgVXJnZW50TGF0ZW5jeUFkanVzdG1lbnRGYWJyaWNDbG9ja0NvbXBvbmVu dDsKMTQ0NzQ6ICBkb3VibGUgVXJnZW50TGF0ZW5jeUFkanVzdG1lbnRGYWJyaWNDbG9ja1JlZmVy ZW5jZTsKMTQ0NzQ6ICBkb3VibGUgTWluVXJnZW50TGF0ZW5jeVN1cHBvcnRVczsKMTQ0NzQ6ICBk b3VibGUgTWluRnVsbERFVEJ1ZmZlcmluZ1RpbWU7CjE0NDc0OiAgZG91YmxlIEF2ZXJhZ2VSZWFk QmFuZHdpZHRoR0J5dGVQZXJTZWNvbmQ7CjE0NDc0OiAgYm9vbCBGaXJzdE1haW5QbGFuZTsKMTQ0 NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBWaWV3cG9ydFdpZHRoQ2hyb21hWzhdOwoxNDQ3NDog IHVuc2lnbmVkIGludCBWaWV3cG9ydEhlaWdodENocm9tYVs4XTsKMTQ0NzQ6ICBkb3VibGUgSFJh dGlvQ2hyb21hWzhdOwoxNDQ3NDogIGRvdWJsZSBWUmF0aW9DaHJvbWFbOF07CjE0NDc0OiAgaW50 IFdyaXRlYmFja1NvdXJjZVdpZHRoWzhdOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBNb2RlSXNTdXBw b3J0ZWQ7CjE0NDc0OiAgYm9vbCBPRE1Db21iaW5lNFRvMVN1cHBvcnRlZDsKMTQ0NzQ6IAoxNDQ3 NDogIHVuc2lnbmVkIGludCBTdXJmYWNlV2lkdGhZWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBT dXJmYWNlV2lkdGhDWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBTdXJmYWNlSGVpZ2h0WVs4XTsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgU3VyZmFjZUhlaWdodENbOF07CjE0NDc0OiAgdW5zaWduZWQg aW50IFdyaXRlYmFja0hUYXBzWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBXcml0ZWJhY2tWVGFw c1s4XTsKMTQ0NzQ6ICBib29sIERTQ0VuYWJsZVs4XTsKMTQ0NzQ6IAoxNDQ3NDogIGRvdWJsZSBE UkFNQ2xvY2tDaGFuZ2VMYXRlbmN5T3ZlcnJpZGU7CjE0NDc0OiAKMTQ0NzQ6ICBkb3VibGUgR1BV Vk1NaW5QYWdlU2l6ZTsKMTQ0NzQ6ICBkb3VibGUgSG9zdFZNTWluUGFnZVNpemU7CjE0NDc0OiAK MTQ0NzQ6ICBib29sIE1QQ0NvbWJpbmVFbmFibGVbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IEhv c3RWTU1heE5vbkNhY2hlZFBhZ2VUYWJsZUxldmVsczsKMTQ0NzQ6ICBib29sIER5bmFtaWNNZXRh ZGF0YVZNRW5hYmxlZDsKMTQ0NzQ6ICBkb3VibGUgV3JpdGViYWNrSW50ZXJmYWNlQnVmZmVyU2l6 ZTsKMTQ0NzQ6ICBkb3VibGUgV3JpdGViYWNrTGluZUJ1ZmZlclNpemU7CjE0NDc0OiAKMTQ0NzQ6 ICBkb3VibGUgRENDUmF0ZUx1bWFbOF07CjE0NDc0OiAgZG91YmxlIERDQ1JhdGVDaHJvbWFbOF07 CjE0NDc0OiAKMTQ0NzQ6ICBkb3VibGUgUEhZQ0xLRDE4UGVyU3RhdGVbNyArIDFdOwoxNDQ3NDog IGludCBNaW5Wb2x0YWdlTGV2ZWw7CjE0NDc0OiAgaW50IE1heFZvbHRhZ2VMZXZlbDsKMTQ0NzQ6 IAoxNDQ3NDogIGJvb2wgV3JpdGViYWNrU3VwcG9ydEludGVybGVhdmVBbmRVc2luZ1dob2xlQnVm ZmVyRm9yQVNpbmdsZVN0cmVhbTsKMTQ0NzQ6ICBib29sIE51bWJlck9mSERNSUZSTFN1cHBvcnQ7 CjE0NDc0OiAgdW5zaWduZWQgaW50IE1heE51bUhETUlGUkxPdXRwdXRzOwoxNDQ3NDogIGludCBB dWRpb1NhbXBsZVJhdGVbOF07CjE0NDc0OiAgaW50IEF1ZGlvU2FtcGxlTGF5b3V0WzhdOwoxNDQ3 NDogCjE0NDc0OiAgaW50IFBlcmNlbnRNYXJnaW5PdmVyTWluaW11bVJlcXVpcmVkRENGQ0xLOwox NDQ3NDogIGJvb2wgRHluYW1pY01ldGFkYXRhU3VwcG9ydGVkWzcgKyAxXVsyXTsKMTQ0NzQ6ICBl bnVtIGltbWVkaWF0ZV9mbGlwX3JlcXVpcmVtZW50IEltbWVkaWF0ZUZsaXBSZXF1aXJlbWVudDsK MTQ0NzQ6ICBkb3VibGUgREVUQnVmZmVyU2l6ZVlUaGlzU3RhdGVbOF07CjE0NDc0OiAgZG91Ymxl IERFVEJ1ZmZlclNpemVDVGhpc1N0YXRlWzhdOwoxNDQ3NDogIGJvb2wgTm9VcmdlbnRMYXRlbmN5 SGlkaW5nWzhdOwoxNDQ3NDogIGJvb2wgTm9VcmdlbnRMYXRlbmN5SGlkaW5nUHJlWzhdOwoxNDQ3 NDogIGludCBzd2F0aF93aWR0aF9sdW1hX3ViX3RoaXNfc3RhdGVbOF07CjE0NDc0OiAgaW50IHN3 YXRoX3dpZHRoX2Nocm9tYV91Yl90aGlzX3N0YXRlWzhdOwoxNDQ3NDogIGRvdWJsZSBVcmdMYXRl bmN5WzcgKyAxXTsKMTQ0NzQ6ICBkb3VibGUgVkFjdGl2ZUN1cnNvckJhbmR3aWR0aFs3ICsgMV1b Ml1bOF07CjE0NDc0OiAgZG91YmxlIFZBY3RpdmVQaXhlbEJhbmR3aWR0aFs3ICsgMV1bMl1bOF07 CjE0NDc0OiAgYm9vbCBOb1RpbWVGb3JQcmVmZXRjaFs3ICsgMV1bMl1bOF07CjE0NDc0OiAgYm9v bCBOb1RpbWVGb3JEeW5hbWljTWV0YWRhdGFbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBk cHRlX3Jvd19iYW5kd2lkdGhbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBtZXRhX3Jvd19i YW5kd2lkdGhbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBERVRCdWZmZXJTaXplWUFsbFN0 YXRlc1s3ICsgMV1bMl1bOF07CjE0NDc0OiAgZG91YmxlIERFVEJ1ZmZlclNpemVDQWxsU3RhdGVz WzcgKyAxXVsyXVs4XTsKMTQ0NzQ6ICBpbnQgc3dhdGhfd2lkdGhfbHVtYV91Yl9hbGxfc3RhdGVz WzcgKyAxXVsyXVs4XTsKMTQ0NzQ6ICBpbnQgc3dhdGhfd2lkdGhfY2hyb21hX3ViX2FsbF9zdGF0 ZXNbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGJvb2wgTm90VXJnZW50TGF0ZW5jeUhpZGluZ1s3ICsg MV1bMl07CjE0NDc0OiAgdW5zaWduZWQgaW50IFN3YXRoSGVpZ2h0WUFsbFN0YXRlc1s3ICsgMV1b Ml1bOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFN3YXRoSGVpZ2h0Q0FsbFN0YXRlc1s3ICsgMV1b Ml1bOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFN3YXRoV2lkdGhZQWxsU3RhdGVzWzcgKyAxXVsy XVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgU3dhdGhXaWR0aENBbGxTdGF0ZXNbNyArIDFdWzJd WzhdOwoxNDQ3NDogIGRvdWJsZSBUb3RhbERQVEVSb3dCYW5kd2lkdGhbNyArIDFdWzJdOwoxNDQ3 NDogIGRvdWJsZSBUb3RhbE1ldGFSb3dCYW5kd2lkdGhbNyArIDFdWzJdOwoxNDQ3NDogIGRvdWJs ZSBUb3RhbFZBY3RpdmVDdXJzb3JCYW5kd2lkdGhbNyArIDFdWzJdOwoxNDQ3NDogIGRvdWJsZSBU b3RhbFZBY3RpdmVQaXhlbEJhbmR3aWR0aFs3ICsgMV1bMl07CjE0NDc0OiAgYm9vbCBVc2VNaW5p bXVtUmVxdWlyZWREQ0ZDTEs7CjE0NDc0OiAgZG91YmxlIFdyaXRlYmFja0RlbGF5VGltZVs4XTsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgRENDWUluZGVwZW5kZW50QmxvY2tbOF07CjE0NDc0OiAgdW5z aWduZWQgaW50IERDQ0NJbmRlcGVuZGVudEJsb2NrWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBk dW1teWludGVnZXIxNTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyMTY7CjE0NDc0 OiAgdW5zaWduZWQgaW50IGR1bW15aW50ZWdlcjE3OwoxNDQ3NDogIHVuc2lnbmVkIGludCBkdW1t eWludGVnZXIxODsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyMTk7CjE0NDc0OiAg dW5zaWduZWQgaW50IGR1bW15aW50ZWdlcjIwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkdW1teWlu dGVnZXIyMTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyMjI7CjE0NDc0OiAgdW5z aWduZWQgaW50IGR1bW15aW50ZWdlcjIzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkdW1teWludGVn ZXIyNDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyMjU7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGR1bW15aW50ZWdlcjI2OwoxNDQ3NDogIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIy NzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyMjg7CjE0NDc0OiAgdW5zaWduZWQg aW50IGR1bW15aW50ZWdlcjI5OwoxNDQ3NDogIGJvb2wgZHVtbXlzdHJpbmdbOF07CjE0NDc0OiAg ZG91YmxlIEJQUDsKMTQ0NzQ6ICBlbnVtIG9kbV9jb21iaW5lX3BvbGljeSBPRE1Db21iaW5lUG9s aWN5OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBDYWxjdWxhdGVNaW5BbmRNYXhQcmVm ZXRjaE1vZGUoCjE0NDc0OiAgIGVudW0gc2VsZl9yZWZyZXNoX2FmZmluaXR5IEFsbG93RFJBTVNl bGZSZWZyZXNoT3JEUkFNQ2xvY2tDaGFuZ2VJblZibGFuaywKMTQ0NzQ6ICAgdW5zaWduZWQgaW50 ICpNaW5QcmVmZXRjaE1vZGUsCjE0NDc0OiAgIHVuc2lnbmVkIGludCAqTWF4UHJlZmV0Y2hNb2Rl KTsKMTQ0NzQ6IAoxNDQ3NDogZG91YmxlIENhbGN1bGF0ZVdyaXRlQmFja0RJU1BDTEsoCjE0NDc0 OiAgIGVudW0gc291cmNlX2Zvcm1hdF9jbGFzcyBXcml0ZWJhY2tQaXhlbEZvcm1hdCwKMTQ0NzQ6 ICAgZG91YmxlIFBpeGVsQ2xvY2ssCjE0NDc0OiAgIGRvdWJsZSBXcml0ZWJhY2tIUmF0aW8sCjE0 NDc0OiAgIGRvdWJsZSBXcml0ZWJhY2tWUmF0aW8sCjE0NDc0OiAgIHVuc2lnbmVkIGludCBXcml0 ZWJhY2tMdW1hSFRhcHMsCjE0NDc0OiAgIHVuc2lnbmVkIGludCBXcml0ZWJhY2tMdW1hVlRhcHMs CjE0NDc0OiAgIHVuc2lnbmVkIGludCBXcml0ZWJhY2tDaHJvbWFIVGFwcywKMTQ0NzQ6ICAgdW5z aWduZWQgaW50IFdyaXRlYmFja0Nocm9tYVZUYXBzLAoxNDQ3NDogICBkb3VibGUgV3JpdGViYWNr RGVzdGluYXRpb25XaWR0aCwKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IEhUb3RhbCwKMTQ0NzQ6ICAg dW5zaWduZWQgaW50IFdyaXRlYmFja0Nocm9tYUxpbmVCdWZmZXJXaWR0aCk7CjE0NDc0OiAjIDMx ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1sL2Rpc3BsYXlf bW9kZV9saWIuaCIgMgoxNDQ3NDogCjE0NDc0OiBlbnVtIGRtbF9wcm9qZWN0IHsKMTQ0NzQ6ICBE TUxfUFJPSkVDVF9VTkRFRklORUQsCjE0NDc0OiAgRE1MX1BST0pFQ1RfUkFWRU4xLAoxNDQ3NDog IERNTF9QUk9KRUNUX05BVkkxMCwKMTQ0NzQ6ICBETUxfUFJPSkVDVF9OQVZJMTB2MiwKMTQ0NzQ6 ICBETUxfUFJPSkVDVF9EQ04yMSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkaXNw bGF5X21vZGVfbGliOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZG1sX2Z1bmNzIHsKMTQ0NzQ6ICB2 b2lkICgqcnFfZGxnX2dldF9kbGdfcmVnKSgKMTQ0NzQ6ICAgIHN0cnVjdCBkaXNwbGF5X21vZGVf bGliICptb2RlX2xpYiwKMTQ0NzQ6ICAgIGRpc3BsYXlfZGxnX3JlZ3Nfc3QgKmRsZ19yZWdzLAox NDQ3NDogICAgZGlzcGxheV90dHVfcmVnc19zdCAqdHR1X3JlZ3MsCjE0NDc0OiAgICBkaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCAqZTJlX3BpcGVfcGFyYW0sCjE0NDc0OiAgICBjb25zdCB1bnNp Z25lZCBpbnQgbnVtX3BpcGVzLAoxNDQ3NDogICAgY29uc3QgdW5zaWduZWQgaW50IHBpcGVfaWR4 LAoxNDQ3NDogICAgY29uc3QgYm9vbCBjc3RhdGVfZW4sCjE0NDc0OiAgICBjb25zdCBib29sIHBz dGF0ZV9lbiwKMTQ0NzQ6ICAgIGNvbnN0IGJvb2wgdm1fZW4sCjE0NDc0OiAgICBjb25zdCBib29s IGlnbm9yZV92aWV3cG9ydF9wb3MsCjE0NDc0OiAgICBjb25zdCBib29sIGltbWVkaWF0ZV9mbGlw X3N1cHBvcnQpOwoxNDQ3NDogIHZvaWQgKCpycV9kbGdfZ2V0X3JxX3JlZykoCjE0NDc0OiAgIHN0 cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKMTQ0NzQ6ICAgZGlzcGxheV9ycV9yZWdz X3N0ICpycV9yZWdzLAoxNDQ3NDogICBjb25zdCBkaXNwbGF5X3BpcGVfcGFyYW1zX3N0IHBpcGVf cGFyYW0pOwoxNDQ3NDogIHZvaWQgKCpyZWNhbGN1bGF0ZSkoc3RydWN0IGRpc3BsYXlfbW9kZV9s aWIgKm1vZGVfbGliKTsKMTQ0NzQ6ICB2b2lkICgqdmFsaWRhdGUpKHN0cnVjdCBkaXNwbGF5X21v ZGVfbGliICptb2RlX2xpYik7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGlzcGxh eV9tb2RlX2xpYiB7CjE0NDc0OiAgc3RydWN0IF92Y3NfZHBpX2lwX3BhcmFtc19zdCBpcDsKMTQ0 NzQ6ICBzdHJ1Y3QgX3Zjc19kcGlfc29jX2JvdW5kaW5nX2JveF9zdCBzb2M7CjE0NDc0OiAgZW51 bSBkbWxfcHJvamVjdCBwcm9qZWN0OwoxNDQ3NDogIHN0cnVjdCB2YmFfdmFyc19zdCB2YmE7CjE0 NDc0OiAgc3RydWN0IGRhbF9sb2dnZXIgKmxvZ2dlcjsKMTQ0NzQ6ICBzdHJ1Y3QgZG1sX2Z1bmNz IGZ1bmNzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkbWxfaW5pdF9pbnN0YW5jZShz dHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbGliLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgX3Zjc19k cGlfc29jX2JvdW5kaW5nX2JveF9zdCAqc29jX2JiLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgX3Zj c19kcGlfaXBfcGFyYW1zX3N0ICppcF9wYXJhbXMsCjE0NDc0OiAgIGVudW0gZG1sX3Byb2plY3Qg cHJvamVjdCk7CjE0NDc0OiAKMTQ0NzQ6IGNvbnN0IGNoYXIgKmRtbF9nZXRfc3RhdHVzX21lc3Nh Z2UoZW51bSBkbV92YWxpZGF0aW9uX3N0YXR1cyBzdGF0dXMpOwoxNDQ3NDogIyA0MSAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjLmgiIDIKMTQ0NzQ6ICMgNTIg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIgoxNDQ3NDog c3RydWN0IGRjX3ZlcnNpb25zIHsKMTQ0NzQ6ICBjb25zdCBjaGFyICpkY192ZXI7CjE0NDc0OiAg c3RydWN0IGRtY3VfdmVyc2lvbiBkbWN1X3ZlcnNpb247CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBlbnVtIGRwX3Byb3RvY29sX3ZlcnNpb24gewoxNDQ3NDogIERQX1ZFUlNJT05fMV80LAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19wbGFuZV90eXBlIHsKMTQ0NzQ6ICBEQ19QTEFO RV9UWVBFX0lOVkFMSUQsCjE0NDc0OiAgRENfUExBTkVfVFlQRV9EQ0VfUkdCLAoxNDQ3NDogIERD X1BMQU5FX1RZUEVfRENFX1VOREVSTEFZLAoxNDQ3NDogIERDX1BMQU5FX1RZUEVfRENOX1VOSVZF UlNBTCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19wbGFuZV9jYXAgewoxNDQ3 NDogIGVudW0gZGNfcGxhbmVfdHlwZSB0eXBlOwoxNDQ3NDogIHVpbnQzMl90IGJsZW5kc193aXRo X2Fib3ZlIDogMTsKMTQ0NzQ6ICB1aW50MzJfdCBibGVuZHNfd2l0aF9iZWxvdyA6IDE7CjE0NDc0 OiAgdWludDMyX3QgcGVyX3BpeGVsX2FscGhhIDogMTsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDog ICB1aW50MzJfdCBhcmdiODg4OCA6IDE7CjE0NDc0OiAgIHVpbnQzMl90IG52MTIgOiAxOwoxNDQ3 NDogICB1aW50MzJfdCBmcDE2IDogMTsKMTQ0NzQ6ICAgdWludDMyX3QgcDAxMCA6IDE7CjE0NDc0 OiAgIHVpbnQzMl90IGF5dXYgOiAxOwoxNDQ3NDogIH0gcGl4ZWxfZm9ybWF0X3N1cHBvcnQ7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDMyX3Qg YXJnYjg4ODg7CjE0NDc0OiAgIHVpbnQzMl90IG52MTI7CjE0NDc0OiAgIHVpbnQzMl90IGZwMTY7 CjE0NDc0OiAgfSBtYXhfdXBzY2FsZV9mYWN0b3I7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDMyX3QgYXJnYjg4ODg7CjE0NDc0OiAgIHVpbnQz Ml90IG52MTI7CjE0NDc0OiAgIHVpbnQzMl90IGZwMTY7CjE0NDc0OiAgfSBtYXhfZG93bnNjYWxl X2ZhY3RvcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19jYXBzIHsKMTQ0NzQ6 ICB1aW50MzJfdCBtYXhfc3RyZWFtczsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfbGlua3M7CjE0NDc0 OiAgdWludDMyX3QgbWF4X2F1ZGlvczsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfc2xhdmVfcGxhbmVz OwoxNDQ3NDogIHVpbnQzMl90IG1heF9wbGFuZXM7CjE0NDc0OiAgdWludDMyX3QgbWF4X2Rvd25z Y2FsZV9yYXRpbzsKMTQ0NzQ6ICB1aW50MzJfdCBpMmNfc3BlZWRfaW5fa2h6OwoxNDQ3NDogIHVp bnQzMl90IGRtZGF0YV9hbGxvY19zaXplOwoxNDQ3NDogIHVuc2lnbmVkIGludCBtYXhfY3Vyc29y X3NpemU7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1heF92aWRlb193aWR0aDsKMTQ0NzQ6ICBpbnQg bGluZWFyX3BpdGNoX2FsaWdubWVudDsKMTQ0NzQ6ICBib29sIGRjY19jb25zdF9jb2xvcjsKMTQ0 NzQ6ICBib29sIGR5bmFtaWNfYXVkaW87CjE0NDc0OiAgYm9vbCBpc19hcHU7CjE0NDc0OiAgYm9v bCBkdWFsX2xpbmtfZHZpOwoxNDQ3NDogIGJvb2wgcG9zdF9ibGVuZF9jb2xvcl9wcm9jZXNzaW5n OwoxNDQ3NDogIGJvb2wgZm9yY2VfZHBfdHBzNF9mb3JfY3AyNTIwOwoxNDQ3NDogIGJvb2wgZGlz YWJsZV9kcF9jbGtfc2hhcmU7CjE0NDc0OiAgYm9vbCBwc3Bfc2V0dXBfcGFuZWxfbW9kZTsKMTQ0 NzQ6ICBib29sIGV4dGVuZGVkX2F1eF90aW1lb3V0X3N1cHBvcnQ7CjE0NDc0OiAgYm9vbCBkbWN1 Yl9zdXBwb3J0OwoxNDQ3NDogIGJvb2wgaHdfM2RfbHV0OwoxNDQ3NDogIGVudW0gZHBfcHJvdG9j b2xfdmVyc2lvbiBtYXhfZHBfcHJvdG9jb2xfdmVyc2lvbjsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGxh bmVfY2FwIHBsYW5lc1s2XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19idWdf d2EgewoxNDQ3NDogIGJvb2wgbm9fY29ubmVjdF9waHlfY29uZmlnOwoxNDQ3NDogIGJvb2wgZGVk Y24yMF8zMDVfd2E7CjE0NDc0OiAgYm9vbCBza2lwX2Nsb2NrX3VwZGF0ZTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19kY2Nfc3VyZmFjZV9wYXJhbSB7CjE0NDc0OiAgc3RydWN0 IGRjX3NpemUgc3VyZmFjZV9zaXplOwoxNDQ3NDogIGVudW0gc3VyZmFjZV9waXhlbF9mb3JtYXQg Zm9ybWF0OwoxNDQ3NDogIGVudW0gc3dpenpsZV9tb2RlX3ZhbHVlcyBzd2l6emxlX21vZGU7CjE0 NDc0OiAgZW51bSBkY19zY2FuX2RpcmVjdGlvbiBzY2FuOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGRjX2RjY19zZXR0aW5nIHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWF4X2NvbXBy ZXNzZWRfYmxrX3NpemU7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1heF91bmNvbXByZXNzZWRfYmxr X3NpemU7CjE0NDc0OiAgYm9vbCBpbmRlcGVuZGVudF82NGJfYmxrczsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBkY19zdXJmYWNlX2RjY19jYXAgewoxNDQ3NDogIHVuaW9uIHsKMTQ0 NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIHN0cnVjdCBkY19kY2Nfc2V0dGluZyByZ2I7CjE0NDc0 OiAgIH0gZ3JwaDsKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgc3RydWN0IGRj X2RjY19zZXR0aW5nIGx1bWE7CjE0NDc0OiAgICBzdHJ1Y3QgZGNfZGNjX3NldHRpbmcgY2hyb21h OwoxNDQ3NDogICB9IHZpZGVvOwoxNDQ3NDogIH07CjE0NDc0OiAKMTQ0NzQ6ICBib29sIGNhcGFi bGU7CjE0NDc0OiAgYm9vbCBjb25zdF9jb2xvcl9zdXBwb3J0OwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGRjX3N0YXRpY19zY3JlZW5fcGFyYW1zIHsKMTQ0NzQ6ICBzdHJ1Y3Qgewox NDQ3NDogICBib29sIGZvcmNlX3RyaWdnZXI7CjE0NDc0OiAgIGJvb2wgY3Vyc29yX3VwZGF0ZTsK MTQ0NzQ6ICAgYm9vbCBzdXJmYWNlX3VwZGF0ZTsKMTQ0NzQ6ICAgYm9vbCBvdmVybGF5X3VwZGF0 ZTsKMTQ0NzQ6ICB9IHRyaWdnZXJzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBudW1fZnJhbWVzOwox NDQ3NDogfTsKMTQ0NzQ6ICMgMTk3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvZGMuaCIKMTQ0NzQ6IGVudW0gc3VyZmFjZV91cGRhdGVfdHlwZSB7CjE0NDc0OiAg VVBEQVRFX1RZUEVfRkFTVCwKMTQ0NzQ6ICBVUERBVEVfVFlQRV9NRUQsCjE0NDc0OiAgVVBEQVRF X1RZUEVfRlVMTCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjOwox NDQ3NDogc3RydWN0IGRjX3BsYW5lX3N0YXRlOwoxNDQ3NDogc3RydWN0IGRjX3N0YXRlOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19jYXBfZnVuY3MgewoxNDQ3NDogIGJvb2wgKCpn ZXRfZGNjX2NvbXByZXNzaW9uX2NhcCkoY29uc3Qgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgIGNv bnN0IHN0cnVjdCBkY19kY2Nfc3VyZmFjZV9wYXJhbSAqaW5wdXQsCjE0NDc0OiAgICBzdHJ1Y3Qg ZGNfc3VyZmFjZV9kY2NfY2FwICpvdXRwdXQpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGxpbmtfdHJhaW5pbmdfc2V0dGluZ3M7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZGNfY29uZmlnIHsKMTQ0NzQ6ICBib29sIGdwdV92bV9zdXBwb3J0OwoxNDQ3NDog IGJvb2wgZGlzYWJsZV9kaXNwX3BsbF9zaGFyaW5nOwoxNDQ3NDogIGJvb2wgZmJjX3N1cHBvcnQ7 CjE0NDc0OiAgYm9vbCBvcHRpbWl6ZV9lZHBfbGlua19yYXRlOwoxNDQ3NDogIGJvb2wgZGlzYWJs ZV9mcmFjdGlvbmFsX3B3bTsKMTQ0NzQ6ICBib29sIGFsbG93X3NlYW1sZXNzX2Jvb3Rfb3B0aW1p emF0aW9uOwoxNDQ3NDogIGJvb2wgcG93ZXJfZG93bl9kaXNwbGF5X29uX2Jvb3Q7CjE0NDc0OiAg Ym9vbCBlZHBfbm90X2Nvbm5lY3RlZDsKMTQ0NzQ6ICBib29sIGZvcmNlX2VudW1fZWRwOwoxNDQ3 NDogIGJvb2wgZm9yY2VkX2Nsb2NrczsKMTQ0NzQ6ICBib29sIGRpc2FibGVfZXh0ZW5kZWRfdGlt ZW91dF9zdXBwb3J0OwoxNDQ3NDogIGJvb2wgbXVsdGlfbW9uX3BwX21jbGtfc3dpdGNoOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB2aXN1YWxfY29uZmlybSB7CjE0NDc0OiAgVklTVUFM X0NPTkZJUk1fRElTQUJMRSA9IDAsCjE0NDc0OiAgVklTVUFMX0NPTkZJUk1fU1VSRkFDRSA9IDEs CjE0NDc0OiAgVklTVUFMX0NPTkZJUk1fSERSID0gMiwKMTQ0NzQ6ICBWSVNVQUxfQ09ORklSTV9N UENUUkVFID0gNCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNjX29wdGlvbiB7CjE0 NDc0OiAgRENDX0VOQUJMRSA9IDAsCjE0NDc0OiAgRENDX0RJU0FCTEUgPSAxLAoxNDQ3NDogIERD Q19IQUxGX1JFUV9ESVNBTEJFID0gMiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gcGlw ZV9zcGxpdF9wb2xpY3kgewoxNDQ3NDogIE1QQ19TUExJVF9EWU5BTUlDID0gMCwKMTQ0NzQ6ICBN UENfU1BMSVRfQVZPSUQgPSAxLAoxNDQ3NDogIE1QQ19TUExJVF9BVk9JRF9NVUxUX0RJU1AgPSAy LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB3bV9yZXBvcnRfbW9kZSB7CjE0NDc0OiAg V01fUkVQT1JUX0RFRkFVTFQgPSAwLAoxNDQ3NDogIFdNX1JFUE9SVF9PVkVSUklERSA9IDEsCjE0 NDc0OiB9OwoxNDQ3NDogZW51bSBkdG1fcHN0YXRlewoxNDQ3NDogIGR0bV9sZXZlbF9wMCA9IDAs CjE0NDc0OiAgZHRtX2xldmVsX3AxLAoxNDQ3NDogIGR0bV9sZXZlbF9wMiwKMTQ0NzQ6ICBkdG1f bGV2ZWxfcDMsCjE0NDc0OiAgZHRtX2xldmVsX3A0LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBkY25fcHdyX3N0YXRlIHsKMTQ0NzQ6ICBEQ05fUFdSX1NUQVRFX1VOS05PV04gPSAtMSwK MTQ0NzQ6ICBEQ05fUFdSX1NUQVRFX01JU1NJT05fTU9ERSA9IDAsCjE0NDc0OiAgRENOX1BXUl9T VEFURV9MT1dfUE9XRVIgPSAzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfY2xvY2tzIHsKMTQ0NzQ6ICBpbnQgZGlzcGNs a19raHo7CjE0NDc0OiAgaW50IGRwcGNsa19raHo7CjE0NDc0OiAgaW50IGRjZmNsa19raHo7CjE0 NDc0OiAgaW50IHNvY2Nsa19raHo7CjE0NDc0OiAgaW50IGRjZmNsa19kZWVwX3NsZWVwX2toejsK MTQ0NzQ6ICBpbnQgZmNsa19raHo7CjE0NDc0OiAgaW50IHBoeWNsa19raHo7CjE0NDc0OiAgaW50 IGRyYW1jbGtfa2h6OwoxNDQ3NDogIGJvb2wgcF9zdGF0ZV9jaGFuZ2Vfc3VwcG9ydDsKMTQ0NzQ6 ICBlbnVtIGRjbl9wd3Jfc3RhdGUgcHdyX3N0YXRlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgYm9vbCBwcmV2X3Bfc3RhdGVfY2hhbmdlX3N1cHBvcnQ7CjE0NDc0OiAg ZW51bSBkdG1fcHN0YXRlIGR0bV9sZXZlbDsKMTQ0NzQ6ICBpbnQgbWF4X3N1cHBvcnRlZF9kcHBj bGtfa2h6OwoxNDQ3NDogIGludCBtYXhfc3VwcG9ydGVkX2Rpc3BjbGtfa2h6OwoxNDQ3NDogIGlu dCBid19kcHBjbGtfa2h6OwoxNDQ3NDogIGludCBid19kaXNwY2xrX2toejsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19id192YWxpZGF0aW9uX3Byb2ZpbGUgewoxNDQ3NDogIGJv b2wgZW5hYmxlOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsX3RpY2tz OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyB2b2x0YWdlX2xldmVsX3RpY2tzOwoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgbG9uZyB3YXRlcm1hcmtfdGlja3M7CjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBsb25nIHJxX2RsZ190aWNrczsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyB0 b3RhbF9jb3VudDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxvbmcgc2tpcF9mYXN0X2NvdW50Owox NDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyBza2lwX3Bhc3NfY291bnQ7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyBsb25nIHNraXBfZmFpbF9jb3VudDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDM0OSAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjLmgiCjE0NDc0OiBzdHJ1 Y3QgZGNfZGVidWdfb3B0aW9ucyB7CjE0NDc0OiAgZW51bSB2aXN1YWxfY29uZmlybSB2aXN1YWxf Y29uZmlybTsKMTQ0NzQ6ICBib29sIHNhbml0eV9jaGVja3M7CjE0NDc0OiAgYm9vbCBtYXhfZGlz cF9jbGs7CjE0NDc0OiAgYm9vbCBzdXJmYWNlX3RyYWNlOwoxNDQ3NDogIGJvb2wgdGltaW5nX3Ry YWNlOwoxNDQ3NDogIGJvb2wgY2xvY2tfdHJhY2U7CjE0NDc0OiAgYm9vbCB2YWxpZGF0aW9uX3Ry YWNlOwoxNDQ3NDogIGJvb2wgYmFuZHdpZHRoX2NhbGNzX3RyYWNlOwoxNDQ3NDogIGludCBtYXhf ZG93bnNjYWxlX3NyY193aWR0aDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBkaXNhYmxl X3N0dXR0ZXI7CjE0NDc0OiAgYm9vbCB1c2VfbWF4X2xiOwoxNDQ3NDogIGVudW0gZGNjX29wdGlv biBkaXNhYmxlX2RjYzsKMTQ0NzQ6ICBlbnVtIHBpcGVfc3BsaXRfcG9saWN5IHBpcGVfc3BsaXRf cG9saWN5OwoxNDQ3NDogIGJvb2wgZm9yY2Vfc2luZ2xlX2Rpc3BfcGlwZV9zcGxpdDsKMTQ0NzQ6 ICBib29sIHZvbHRhZ2VfYWxpZ25fZmNsazsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgZGlzYWJsZV9k ZnNfYnlwYXNzOwoxNDQ3NDogIGJvb2wgZGlzYWJsZV9kcHBfcG93ZXJfZ2F0ZTsKMTQ0NzQ6ICBi b29sIGRpc2FibGVfaHVicF9wb3dlcl9nYXRlOwoxNDQ3NDogIGJvb2wgZGlzYWJsZV9kc2NfcG93 ZXJfZ2F0ZTsKMTQ0NzQ6ICBpbnQgZHNjX21pbl9zbGljZV9oZWlnaHRfb3ZlcnJpZGU7CjE0NDc0 OiAgaW50IGRzY19icHBfaW5jcmVtZW50X2RpdjsKMTQ0NzQ6ICBib29sIG5hdGl2ZTQyMl9zdXBw b3J0OwoxNDQ3NDogIGJvb2wgZGlzYWJsZV9wcGxpYl93bV9yYW5nZTsKMTQ0NzQ6ICBlbnVtIHdt X3JlcG9ydF9tb2RlIHBwbGliX3dtX3JlcG9ydF9tb2RlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBt aW5fZGlzcF9jbGtfa2h6OwoxNDQ3NDogIHVuc2lnbmVkIGludCBtaW5fZHBwX2Nsa19raHo7CjE0 NDc0OiAgaW50IHNyX2V4aXRfdGltZV9kcG0wX25zOwoxNDQ3NDogIGludCBzcl9lbnRlcl9wbHVz X2V4aXRfdGltZV9kcG0wX25zOwoxNDQ3NDogIGludCBzcl9leGl0X3RpbWVfbnM7CjE0NDc0OiAg aW50IHNyX2VudGVyX3BsdXNfZXhpdF90aW1lX25zOwoxNDQ3NDogIGludCB1cmdlbnRfbGF0ZW5j eV9uczsKMTQ0NzQ6ICB1aW50MzJfdCB1bmRlcmZsb3dfYXNzZXJ0X2RlbGF5X3VzOwoxNDQ3NDog IGludCBwZXJjZW50X29mX2lkZWFsX2RyYW1idzsKMTQ0NzQ6ICBpbnQgZHJhbV9jbG9ja19jaGFu Z2VfbGF0ZW5jeV9uczsKMTQ0NzQ6ICBib29sIG9wdGltaXplZF93YXRlcm1hcms7CjE0NDc0OiAg aW50IGFsd2F5c19zY2FsZTsKMTQ0NzQ6ICBib29sIGRpc2FibGVfcHBsaWJfY2xvY2tfcmVxdWVz dDsKMTQ0NzQ6ICBib29sIGRpc2FibGVfY2xvY2tfZ2F0ZTsKMTQ0NzQ6ICBib29sIGRpc2FibGVf ZG1jdTsKMTQ0NzQ6ICBib29sIGRpc2FibGVfcHNyOwoxNDQ3NDogIGJvb2wgZm9yY2VfYWJtX2Vu YWJsZTsKMTQ0NzQ6ICBib29sIGRpc2FibGVfc3RlcmVvX3N1cHBvcnQ7CjE0NDc0OiAgYm9vbCB2 c3Jfc3VwcG9ydDsKMTQ0NzQ6ICBib29sIHBlcmZvcm1hbmNlX3RyYWNlOwoxNDQ3NDogIGJvb2wg YXpfZW5kcG9pbnRfbXV0ZV9vbmx5OwoxNDQ3NDogIGJvb2wgYWx3YXlzX3VzZV9yZWdhbW1hOwox NDQ3NDogIGJvb2wgcDAxMF9tcG9fc3VwcG9ydDsKMTQ0NzQ6ICBib29sIHJlY292ZXJ5X2VuYWJs ZWQ7CjE0NDc0OiAgYm9vbCBhdm9pZF92Ymlvc19leGVjX3RhYmxlOwoxNDQ3NDogIGJvb2wgc2Ns X3Jlc2V0X2xlbmd0aDEwOwoxNDQ3NDogIGJvb2wgaGRtaTIwX2Rpc2FibGU7CjE0NDc0OiAgYm9v bCBza2lwX2RldGVjdGlvbl9saW5rX3RyYWluaW5nOwoxNDQ3NDogIGJvb2wgcmVtb3ZlX2Rpc2Nv bm5lY3RfZWRwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBmb3JjZV9vZG1fY29tYmluZTsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgZm9yY2VfZmNsa19raHo7CjE0NDc0OiAgYm9vbCBkaXNhYmxlX3RyaV9i dWY7CjE0NDc0OiAgYm9vbCBkbXViX29mZmxvYWRfZW5hYmxlZDsKMTQ0NzQ6ICBib29sIGRtY3Vi X2VtdWxhdGlvbjsKMTQ0NzQ6ICBib29sIGRtdWJfY29tbWFuZF90YWJsZTsKMTQ0NzQ6ICBzdHJ1 Y3QgZGNfYndfdmFsaWRhdGlvbl9wcm9maWxlIGJ3X3ZhbF9wcm9maWxlOwoxNDQ3NDogIGJvb2wg ZGlzYWJsZV9mZWM7CjE0NDc0OiAgYm9vbCBkaXNhYmxlXzQ4bWh6X3B3cmR3bjsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZm9yY2VfbWluX2RjZmNsa19taHo7 CjE0NDc0OiAgYm9vbCBkaXNhYmxlX3RpbWluZ19zeW5jOwoxNDQ3NDogIGJvb2wgY21faW5fYnlw YXNzOwoxNDQ3NDogIGludCBmb3JjZV9jbG9ja19tb2RlOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBu djEyX2lmbGlwX3ZtX3dhOwoxNDQ3NDogIGJvb2wgZGlzYWJsZV9kcmFtX2Nsb2NrX2NoYW5nZV92 YWN0aXZlX3N1cHBvcnQ7CjE0NDc0OiAgYm9vbCB2YWxpZGF0ZV9kbWxfb3V0cHV0OwoxNDQ3NDog IGJvb2wgZW5hYmxlX2RtY3ViX3N1cmZhY2VfZmxpcDsKMTQ0NzQ6ICBib29sIHVzYmNfY29tYm9f cGh5X3Jlc2V0X3dhOwoxNDQ3NDogIGJvb2wgZGlzYWJsZV9kc2M7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgZGNfZGVidWdfZGF0YSB7CjE0NDc0OiAgdWludDMyX3QgbHRGYWlsQ291 bnQ7CjE0NDc0OiAgdWludDMyX3QgaTJjRXJyb3JDb3VudDsKMTQ0NzQ6ICB1aW50MzJfdCBhdXhF cnJvckNvdW50OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX3BoeV9hZGRyX3Nw YWNlX2NvbmZpZyB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDY0X3Qgc3RhcnRfYWRk cjsKMTQ0NzQ6ICAgdWludDY0X3QgZW5kX2FkZHI7CjE0NDc0OiAgIHVpbnQ2NF90IGZiX3RvcDsK MTQ0NzQ6ICAgdWludDY0X3QgZmJfb2Zmc2V0OwoxNDQ3NDogICB1aW50NjRfdCBmYl9iYXNlOwox NDQ3NDogICB1aW50NjRfdCBhZ3BfdG9wOwoxNDQ3NDogICB1aW50NjRfdCBhZ3BfYm90OwoxNDQ3 NDogICB1aW50NjRfdCBhZ3BfYmFzZTsKMTQ0NzQ6ICB9IHN5c3RlbV9hcGVydHVyZTsKMTQ0NzQ6 IAoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ2NF90IHBhZ2VfdGFibGVfc3RhcnRfYWRk cjsKMTQ0NzQ6ICAgdWludDY0X3QgcGFnZV90YWJsZV9lbmRfYWRkcjsKMTQ0NzQ6ICAgdWludDY0 X3QgcGFnZV90YWJsZV9iYXNlX2FkZHI7CjE0NDc0OiAgfSBnYXJ0X2NvbmZpZzsKMTQ0NzQ6IAox NDQ3NDogIGJvb2wgdmFsaWQ7CjE0NDc0OiAgdWludDY0X3QgcGFnZV90YWJsZV9kZWZhdWx0X3Bh Z2VfYWRkcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY192aXJ0dWFsX2FkZHJf c3BhY2VfY29uZmlnIHsKMTQ0NzQ6ICB1aW50NjRfdCBwYWdlX3RhYmxlX2Jhc2VfYWRkcjsKMTQ0 NzQ6ICB1aW50NjRfdCBwYWdlX3RhYmxlX3N0YXJ0X2FkZHI7CjE0NDc0OiAgdWludDY0X3QgcGFn ZV90YWJsZV9lbmRfYWRkcjsKMTQ0NzQ6ICB1aW50MzJfdCBwYWdlX3RhYmxlX2Jsb2NrX3NpemVf aW5fYnl0ZXM7CjE0NDc0OiAgdWludDhfdCBwYWdlX3RhYmxlX2RlcHRoOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGRjX2JvdW5kaW5nX2JveF9vdmVycmlkZXMgewoxNDQ3NDogIGlu dCBzcl9leGl0X3RpbWVfbnM7CjE0NDc0OiAgaW50IHNyX2VudGVyX3BsdXNfZXhpdF90aW1lX25z OwoxNDQ3NDogIGludCB1cmdlbnRfbGF0ZW5jeV9uczsKMTQ0NzQ6ICBpbnQgcGVyY2VudF9vZl9p ZGVhbF9kcmFtYnc7CjE0NDc0OiAgaW50IGRyYW1fY2xvY2tfY2hhbmdlX2xhdGVuY3lfbnM7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgbWluX2RjZmNsa19taHo7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfc3RhdGU7CjE0NDc0OiBzdHJ1Y3Qg cmVzb3VyY2VfcG9vbDsKMTQ0NzQ6IHN0cnVjdCBkY2VfaHdzZXE7CjE0NDc0OiBzdHJ1Y3QgZ3B1 X2luZm9fc29jX2JvdW5kaW5nX2JveF92MV8wOwoxNDQ3NDogc3RydWN0IGRjIHsKMTQ0NzQ6ICBz dHJ1Y3QgZGNfdmVyc2lvbnMgdmVyc2lvbnM7CjE0NDc0OiAgc3RydWN0IGRjX2NhcHMgY2FwczsK MTQ0NzQ6ICBzdHJ1Y3QgZGNfY2FwX2Z1bmNzIGNhcF9mdW5jczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNf Y29uZmlnIGNvbmZpZzsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfZGVidWdfb3B0aW9ucyBkZWJ1ZzsKMTQ0 NzQ6ICBzdHJ1Y3QgZGNfYm91bmRpbmdfYm94X292ZXJyaWRlcyBiYl9vdmVycmlkZXM7CjE0NDc0 OiAgc3RydWN0IGRjX2J1Z193YSB3b3JrX2Fyb3VuZHM7CjE0NDc0OiAgc3RydWN0IGRjX2NvbnRl eHQgKmN0eDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGh5X2FkZHJfc3BhY2VfY29uZmlnIHZtX3BhX2Nv bmZpZzsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQ4X3QgbGlua19jb3VudDsKMTQ0NzQ6ICBzdHJ1Y3Qg ZGNfbGluayAqbGlua3NbNiAqIDJdOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX3N0YXRlICpj dXJyZW50X3N0YXRlOwoxNDQ3NDogIHN0cnVjdCByZXNvdXJjZV9wb29sICpyZXNfcG9vbDsKMTQ0 NzQ6IAoxNDQ3NDogIHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBzdHJ1Y3QgZG1fcHBfY2xvY2tfbGV2ZWxzIHNjbGtfbHZsczsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IGJ3X2NhbGNzX2RjZWlwICpid19kY2VpcDsKMTQ0NzQ6ICBzdHJ1Y3Qg YndfY2FsY3NfdmJpb3MgKmJ3X3ZiaW9zOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjbl9zb2Nf Ym91bmRpbmdfYm94ICpkY25fc29jOwoxNDQ3NDogIHN0cnVjdCBkY25faXBfcGFyYW1zICpkY25f aXA7CjE0NDc0OiAgc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgZG1sOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBod19zZXF1ZW5jZXJfZnVuY3MgaHdzczsKMTQ0NzQ6ICBz dHJ1Y3QgZGNlX2h3c2VxICpod3NlcTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBvcHRp bWl6ZWRfcmVxdWlyZWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCBvcHRpbWl6ZV9zZWFt bGVzc19ib290X3N0cmVhbXM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBjb21wcmVz c29yICpmYmNfY29tcHJlc3NvcjsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY19kZWJ1Z19kYXRh IGRlYnVnX2RhdGE7CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBjaGFyICpidWlsZF9pZDsKMTQ0NzQ6 ICBzdHJ1Y3Qgdm1faGVscGVyICp2bV9oZWxwZXI7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGdwdV9p bmZvX3NvY19ib3VuZGluZ19ib3hfdjFfMCAqc29jX2JvdW5kaW5nX2JveDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gZnJhbWVfYnVmZmVyX21vZGUgewoxNDQ3NDogIEZSQU1FX0JVRkZF Ul9NT0RFX0xPQ0FMX09OTFkgPSAwLAoxNDQ3NDogIEZSQU1FX0JVRkZFUl9NT0RFX1pGQl9PTkxZ LAoxNDQ3NDogIEZSQU1FX0JVRkZFUl9NT0RFX01JWEVEX1pGQl9BTkRfTE9DQUwsCjE0NDc0OiB9 IDsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjaHViX2luaXRfZGF0YSB7CjE0NDc0OiAgaW50NjRf dCB6ZmJfcGh5c19hZGRyX2Jhc2U7CjE0NDc0OiAgaW50NjRfdCB6ZmJfbWNfYmFzZV9hZGRyOwox NDQ3NDogIHVpbnQ2NF90IHpmYl9zaXplX2luX2J5dGU7CjE0NDc0OiAgZW51bSBmcmFtZV9idWZm ZXJfbW9kZSBmYl9tb2RlOwoxNDQ3NDogIGJvb2wgZGNodWJfaW5pdGlhbHppZWQ7CjE0NDc0OiAg Ym9vbCBkY2h1Yl9pbmZvX3ZhbGlkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRj X2luaXRfZGF0YSB7CjE0NDc0OiAgc3RydWN0IGh3X2FzaWNfaWQgYXNpY19pZDsKMTQ0NzQ6ICB2 b2lkICpkcml2ZXI7CjE0NDc0OiAgc3RydWN0IGNnc19kZXZpY2UgKmNnc19kZXZpY2U7CjE0NDc0 OiAgc3RydWN0IGRjX2JvdW5kaW5nX2JveF9vdmVycmlkZXMgYmJfb3ZlcnJpZGVzOwoxNDQ3NDog CjE0NDc0OiAgaW50IG51bV92aXJ0dWFsX2xpbmtzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2Jpb3MgKnZiaW9zX292ZXJyaWRlOwoxNDQ3NDogIGVu dW0gZGNlX2Vudmlyb25tZW50IGRjZV9lbnZpcm9ubWVudDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVj dCBkbXViX29mZmxvYWRfZnVuY3MgKmRtdWJfaWY7CjE0NDc0OiAgc3RydWN0IGRjX3JlZ19oZWxw ZXJfc3RhdGUgKmRtdWJfb2ZmbG9hZDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY19jb25maWcg ZmxhZ3M7CjE0NDc0OiAgdWludDMyX3QgbG9nX21hc2s7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZ3B1X2luZm9fc29jX2JvdW5kaW5nX2JveF92 MV8wICpzb2NfYm91bmRpbmdfYm94OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRj X2NhbGxiYWNrX2luaXQgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQ4X3Qg cmVzZXJ2ZWQ7CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkYyAqZGNf Y3JlYXRlKGNvbnN0IHN0cnVjdCBkY19pbml0X2RhdGEgKmluaXRfcGFyYW1zKTsKMTQ0NzQ6IHZv aWQgZGNfaGFyZHdhcmVfaW5pdChzdHJ1Y3QgZGMgKmRjKTsKMTQ0NzQ6IAoxNDQ3NDogaW50IGRj X2dldF92bWlkX3VzZV92ZWN0b3Ioc3RydWN0IGRjICpkYyk7CjE0NDc0OiB2b2lkIGRjX3NldHVw X3ZtX2NvbnRleHQoc3RydWN0IGRjICpkYywgc3RydWN0IGRjX3ZpcnR1YWxfYWRkcl9zcGFjZV9j b25maWcgKnZhX2NvbmZpZywgaW50IHZtaWQpOwoxNDQ3NDogCjE0NDc0OiBpbnQgZGNfc2V0dXBf c3lzdGVtX2NvbnRleHQoc3RydWN0IGRjICpkYywgc3RydWN0IGRjX3BoeV9hZGRyX3NwYWNlX2Nv bmZpZyAqcGFfY29uZmlnKTsKMTQ0NzQ6IHZvaWQgZGNfaW5pdF9jYWxsYmFja3Moc3RydWN0IGRj ICpkYywKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX2NhbGxiYWNrX2luaXQgKmluaXRfcGFyYW1z KTsKMTQ0NzQ6IHZvaWQgZGNfZGVpbml0X2NhbGxiYWNrcyhzdHJ1Y3QgZGMgKmRjKTsKMTQ0NzQ6 IHZvaWQgZGNfZGVzdHJveShzdHJ1Y3QgZGMgKipkYyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgVFJBTlNGRVJfRlVOQ19QT0lO VFMgPSAxMDI1CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfaGRyX3N0YXRpY19t ZXRhZGF0YSB7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY2hyb21hdGljaXR5X2dyZWVu X3g7CjE0NDc0OiAgdW5zaWduZWQgaW50IGNocm9tYXRpY2l0eV9ncmVlbl95OwoxNDQ3NDogIHVu c2lnbmVkIGludCBjaHJvbWF0aWNpdHlfYmx1ZV94OwoxNDQ3NDogIHVuc2lnbmVkIGludCBjaHJv bWF0aWNpdHlfYmx1ZV95OwoxNDQ3NDogIHVuc2lnbmVkIGludCBjaHJvbWF0aWNpdHlfcmVkX3g7 CjE0NDc0OiAgdW5zaWduZWQgaW50IGNocm9tYXRpY2l0eV9yZWRfeTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgY2hyb21hdGljaXR5X3doaXRlX3BvaW50X3g7CjE0NDc0OiAgdW5zaWduZWQgaW50IGNo cm9tYXRpY2l0eV93aGl0ZV9wb2ludF95OwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgbWluX2x1 bWluYW5jZTsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfbHVtaW5hbmNlOwoxNDQ3NDogIHVpbnQzMl90 IG1heGltdW1fY29udGVudF9saWdodF9sZXZlbDsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhpbXVtX2Zy YW1lX2F2ZXJhZ2VfbGlnaHRfbGV2ZWw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRj X3RyYW5zZmVyX2Z1bmNfdHlwZSB7CjE0NDc0OiAgVEZfVFlQRV9QUkVERUZJTkVELAoxNDQ3NDog IFRGX1RZUEVfRElTVFJJQlVURURfUE9JTlRTLAoxNDQ3NDogIFRGX1RZUEVfQllQQVNTLAoxNDQ3 NDogIFRGX1RZUEVfSFdQV0wKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY190cmFu c2Zlcl9mdW5jX2Rpc3RyaWJ1dGVkX3BvaW50cyB7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIg cmVkW1RSQU5TRkVSX0ZVTkNfUE9JTlRTXTsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBncmVl bltUUkFOU0ZFUl9GVU5DX1BPSU5UU107CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgYmx1ZVtU UkFOU0ZFUl9GVU5DX1BPSU5UU107CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MTZfdCBlbmRfZXhwb25l bnQ7CjE0NDc0OiAgdWludDE2X3QgeF9wb2ludF9hdF95MV9yZWQ7CjE0NDc0OiAgdWludDE2X3Qg eF9wb2ludF9hdF95MV9ncmVlbjsKMTQ0NzQ6ICB1aW50MTZfdCB4X3BvaW50X2F0X3kxX2JsdWU7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX3RyYW5zZmVyX2Z1bmNfcHJlZGVmaW5l ZCB7CjE0NDc0OiAgVFJBTlNGRVJfRlVOQ1RJT05fU1JHQiwKMTQ0NzQ6ICBUUkFOU0ZFUl9GVU5D VElPTl9CVDcwOSwKMTQ0NzQ6ICBUUkFOU0ZFUl9GVU5DVElPTl9QUSwKMTQ0NzQ6ICBUUkFOU0ZF Ul9GVU5DVElPTl9MSU5FQVIsCjE0NDc0OiAgVFJBTlNGRVJfRlVOQ1RJT05fVU5JVFksCjE0NDc0 OiAgVFJBTlNGRVJfRlVOQ1RJT05fSExHLAoxNDQ3NDogIFRSQU5TRkVSX0ZVTkNUSU9OX0hMRzEy LAoxNDQ3NDogIFRSQU5TRkVSX0ZVTkNUSU9OX0dBTU1BMjIsCjE0NDc0OiAgVFJBTlNGRVJfRlVO Q1RJT05fR0FNTUEyNCwKMTQ0NzQ6ICBUUkFOU0ZFUl9GVU5DVElPTl9HQU1NQTI2CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY190cmFuc2Zlcl9mdW5jIHsKMTQ0NzQ6 ICBzdHJ1Y3Qga3JlZiByZWZjb3VudDsKMTQ0NzQ6ICBlbnVtIGRjX3RyYW5zZmVyX2Z1bmNfdHlw ZSB0eXBlOwoxNDQ3NDogIGVudW0gZGNfdHJhbnNmZXJfZnVuY19wcmVkZWZpbmVkIHRmOwoxNDQ3 NDogCjE0NDc0OiAgdWludDMyX3Qgc2RyX3JlZl93aGl0ZV9sZXZlbDsKMTQ0NzQ6ICBzdHJ1Y3Qg ZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHB3bF9wYXJh bXMgcHdsOwoxNDQ3NDogICBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuY19kaXN0cmlidXRlZF9wb2lu dHMgdGZfcHRzOwoxNDQ3NDogIH07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHVu aW9uIGRjXzNkbHV0X3N0YXRlIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50MzJfdCBp bml0aWFsaXplZDoxOwoxNDQ3NDogICB1aW50MzJfdCBybXVfaWR4X3ZhbGlkOjE7CjE0NDc0OiAg IHVpbnQzMl90IHJtdV9tdXhfbnVtOjM7CjE0NDc0OiAgIHVpbnQzMl90IG1wY19ybXUwX211eDo0 OwoxNDQ3NDogICB1aW50MzJfdCBtcGNfcm11MV9tdXg6NDsKMTQ0NzQ6ICAgdWludDMyX3QgbXBj X3JtdTJfbXV4OjQ7CjE0NDc0OiAgIHVpbnQzMl90IHJlc2VydmVkOjE1OwoxNDQ3NDogIH0gYml0 czsKMTQ0NzQ6ICB1aW50MzJfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkY18zZGx1dCB7CjE0NDc0OiAgc3RydWN0IGtyZWYgcmVmY291bnQ7CjE0NDc0OiAg c3RydWN0IHRldHJhaGVkcmFsX3BhcmFtcyBsdXRfM2Q7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFf MzIgaGRyX211bHRpcGxpZXI7CjE0NDc0OiAgYm9vbCBpbml0aWFsaXplZDsKMTQ0NzQ6ICB1bmlv biBkY18zZGx1dF9zdGF0ZSBzdGF0ZTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgZGNfcGxhbmVfc3RhdHVzIHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyBy ZXF1ZXN0ZWRfYWRkcmVzczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyBjdXJyZW50 X2FkZHJlc3M7CjE0NDc0OiAgYm9vbCBpc19mbGlwX3BlbmRpbmc7CjE0NDc0OiAgYm9vbCBpc19y aWdodF9leWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBzdXJmYWNlX3VwZGF0ZV9m bGFncyB7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50MzJfdCBhZGRyX3Vw ZGF0ZToxOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90IGRjY19jaGFuZ2U6MTsKMTQ0NzQ6ICAg dWludDMyX3QgY29sb3Jfc3BhY2VfY2hhbmdlOjE7CjE0NDc0OiAgIHVpbnQzMl90IGhvcml6b250 YWxfbWlycm9yX2NoYW5nZToxOwoxNDQ3NDogICB1aW50MzJfdCBwZXJfcGl4ZWxfYWxwaGFfY2hh bmdlOjE7CjE0NDc0OiAgIHVpbnQzMl90IGdsb2JhbF9hbHBoYV9jaGFuZ2U6MTsKMTQ0NzQ6ICAg dWludDMyX3QgaGRyX211bHQ6MTsKMTQ0NzQ6ICAgdWludDMyX3Qgcm90YXRpb25fY2hhbmdlOjE7 CjE0NDc0OiAgIHVpbnQzMl90IHN3aXp6bGVfY2hhbmdlOjE7CjE0NDc0OiAgIHVpbnQzMl90IHNj YWxpbmdfY2hhbmdlOjE7CjE0NDc0OiAgIHVpbnQzMl90IHBvc2l0aW9uX2NoYW5nZToxOwoxNDQ3 NDogICB1aW50MzJfdCBpbl90cmFuc2Zlcl9mdW5jX2NoYW5nZToxOwoxNDQ3NDogICB1aW50MzJf dCBpbnB1dF9jc2NfY2hhbmdlOjE7CjE0NDc0OiAgIHVpbnQzMl90IGNvZWZmX3JlZHVjdGlvbl9j aGFuZ2U6MTsKMTQ0NzQ6ICAgdWludDMyX3Qgb3V0cHV0X3RmX2NoYW5nZToxOwoxNDQ3NDogICB1 aW50MzJfdCBwaXhlbF9mb3JtYXRfY2hhbmdlOjE7CjE0NDc0OiAgIHVpbnQzMl90IHBsYW5lX3Np emVfY2hhbmdlOjE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCBuZXdfcGxhbmU6 MTsKMTQ0NzQ6ICAgdWludDMyX3QgYnBwX2NoYW5nZToxOwoxNDQ3NDogICB1aW50MzJfdCBnYW1t YV9jaGFuZ2U6MTsKMTQ0NzQ6ICAgdWludDMyX3QgYmFuZHdpZHRoX2NoYW5nZToxOwoxNDQ3NDog ICB1aW50MzJfdCBjbG9ja19jaGFuZ2U6MTsKMTQ0NzQ6ICAgdWludDMyX3Qgc3RlcmVvX2Zvcm1h dF9jaGFuZ2U6MTsKMTQ0NzQ6ICAgdWludDMyX3QgZnVsbF91cGRhdGU6MTsKMTQ0NzQ6ICB9IGJp dHM7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZGNfcGxhbmVfc3RhdGUgewoxNDQ3NDogIHN0cnVjdCBkY19wbGFuZV9hZGRyZXNz IGFkZHJlc3M7CjE0NDc0OiAgc3RydWN0IGRjX3BsYW5lX2ZsaXBfdGltZSB0aW1lOwoxNDQ3NDog IGJvb2wgdHJpcGxlYnVmZmVyX2ZsaXBzOwoxNDQ3NDogIHN0cnVjdCBzY2FsaW5nX3RhcHMgc2Nh bGluZ19xdWFsaXR5OwoxNDQ3NDogIHN0cnVjdCByZWN0IHNyY19yZWN0OwoxNDQ3NDogIHN0cnVj dCByZWN0IGRzdF9yZWN0OwoxNDQ3NDogIHN0cnVjdCByZWN0IGNsaXBfcmVjdDsKMTQ0NzQ6IAox NDQ3NDogIHN0cnVjdCBwbGFuZV9zaXplIHBsYW5lX3NpemU7CjE0NDc0OiAgdW5pb24gZGNfdGls aW5nX2luZm8gdGlsaW5nX2luZm87CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGxhbmVfZGNj X3BhcmFtIGRjYzsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY19nYW1tYSAqZ2FtbWFfY29ycmVj dGlvbjsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuYyAqaW5fdHJhbnNmZXJfZnVuYzsK MTQ0NzQ6ICBzdHJ1Y3QgZGNfYmlhc19hbmRfc2NhbGUgKmJpYXNfYW5kX3NjYWxlOwoxNDQ3NDog IHN0cnVjdCBkY19jc2NfdHJhbnNmb3JtIGlucHV0X2NzY19jb2xvcl9tYXRyaXg7CjE0NDc0OiAg c3RydWN0IGZpeGVkMzFfMzIgY29lZmZfcmVkdWN0aW9uX2ZhY3RvcjsKMTQ0NzQ6ICBzdHJ1Y3Qg Zml4ZWQzMV8zMiBoZHJfbXVsdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2hk cl9zdGF0aWNfbWV0YWRhdGEgaGRyX3N0YXRpY19jdHg7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRj X2NvbG9yX3NwYWNlIGNvbG9yX3NwYWNlOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjXzNkbHV0 ICpsdXQzZF9mdW5jOwoxNDQ3NDogIHN0cnVjdCBkY190cmFuc2Zlcl9mdW5jICppbl9zaGFwZXJf ZnVuYzsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuYyAqYmxlbmRfdGY7CjE0NDc0OiAK MTQ0NzQ6ICBlbnVtIHN1cmZhY2VfcGl4ZWxfZm9ybWF0IGZvcm1hdDsKMTQ0NzQ6ICBlbnVtIGRj X3JvdGF0aW9uX2FuZ2xlIHJvdGF0aW9uOwoxNDQ3NDogIGVudW0gcGxhbmVfc3RlcmVvX2Zvcm1h dCBzdGVyZW9fZm9ybWF0OwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBpc190aWxpbmdfcm90YXRlZDsK MTQ0NzQ6ICBib29sIHBlcl9waXhlbF9hbHBoYTsKMTQ0NzQ6ICBib29sIGdsb2JhbF9hbHBoYTsK MTQ0NzQ6ICBpbnQgZ2xvYmFsX2FscGhhX3ZhbHVlOwoxNDQ3NDogIGJvb2wgdmlzaWJsZTsKMTQ0 NzQ6ICBib29sIGZsaXBfaW1tZWRpYXRlOwoxNDQ3NDogIGJvb2wgaG9yaXpvbnRhbF9taXJyb3I7 CjE0NDc0OiAgaW50IGxheWVyX2luZGV4OwoxNDQ3NDogCjE0NDc0OiAgdW5pb24gc3VyZmFjZV91 cGRhdGVfZmxhZ3MgdXBkYXRlX2ZsYWdzOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX3BsYW5l X3N0YXR1cyBzdGF0dXM7CjE0NDc0OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgYm9vbCBmb3JjZV9mdWxsX3VwZGF0ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgZW51bSBkY19pcnFfc291cmNlIGlycV9zb3VyY2U7CjE0NDc0OiAgc3RydWN0IGtyZWYg cmVmY291bnQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfcGxhbmVfaW5mbyB7 CjE0NDc0OiAgc3RydWN0IHBsYW5lX3NpemUgcGxhbmVfc2l6ZTsKMTQ0NzQ6ICB1bmlvbiBkY190 aWxpbmdfaW5mbyB0aWxpbmdfaW5mbzsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGxhbmVfZGNjX3BhcmFt IGRjYzsKMTQ0NzQ6ICBlbnVtIHN1cmZhY2VfcGl4ZWxfZm9ybWF0IGZvcm1hdDsKMTQ0NzQ6ICBl bnVtIGRjX3JvdGF0aW9uX2FuZ2xlIHJvdGF0aW9uOwoxNDQ3NDogIGVudW0gcGxhbmVfc3RlcmVv X2Zvcm1hdCBzdGVyZW9fZm9ybWF0OwoxNDQ3NDogIGVudW0gZGNfY29sb3Jfc3BhY2UgY29sb3Jf c3BhY2U7CjE0NDc0OiAgYm9vbCBob3Jpem9udGFsX21pcnJvcjsKMTQ0NzQ6ICBib29sIHZpc2li bGU7CjE0NDc0OiAgYm9vbCBwZXJfcGl4ZWxfYWxwaGE7CjE0NDc0OiAgYm9vbCBnbG9iYWxfYWxw aGE7CjE0NDc0OiAgaW50IGdsb2JhbF9hbHBoYV92YWx1ZTsKMTQ0NzQ6ICBib29sIGlucHV0X2Nz Y19lbmFibGVkOwoxNDQ3NDogIGludCBsYXllcl9pbmRleDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBkY19zY2FsaW5nX2luZm8gewoxNDQ3NDogIHN0cnVjdCByZWN0IHNyY19yZWN0 OwoxNDQ3NDogIHN0cnVjdCByZWN0IGRzdF9yZWN0OwoxNDQ3NDogIHN0cnVjdCByZWN0IGNsaXBf cmVjdDsKMTQ0NzQ6ICBzdHJ1Y3Qgc2NhbGluZ190YXBzIHNjYWxpbmdfcXVhbGl0eTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19zdXJmYWNlX3VwZGF0ZSB7CjE0NDc0OiAgc3Ry dWN0IGRjX3BsYW5lX3N0YXRlICpzdXJmYWNlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBjb25z dCBzdHJ1Y3QgZGNfZmxpcF9hZGRycyAqZmxpcF9hZGRyOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBk Y19wbGFuZV9pbmZvICpwbGFuZV9pbmZvOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY19zY2FsaW5n X2luZm8gKnNjYWxpbmdfaW5mbzsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBoZHJfbXVsdDsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGNfZ2FtbWEgKmdh bW1hOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY190cmFuc2Zlcl9mdW5jICppbl90cmFuc2Zlcl9m dW5jOwoxNDQ3NDogCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NzY190cmFuc2Zvcm0gKmlucHV0 X2NzY19jb2xvcl9tYXRyaXg7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGZpeGVkMzFfMzIgKmNvZWZm X3JlZHVjdGlvbl9mYWN0b3I7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX3RyYW5zZmVyX2Z1bmMg KmZ1bmNfc2hhcGVyOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY18zZGx1dCAqbHV0M2RfZnVuYzsK MTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuYyAqYmxlbmRfdGY7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfcGxhbmVf c3RhdGUgKmRjX2NyZWF0ZV9wbGFuZV9zdGF0ZShzdHJ1Y3QgZGMgKmRjKTsKMTQ0NzQ6IGNvbnN0 IHN0cnVjdCBkY19wbGFuZV9zdGF0dXMgKmRjX3BsYW5lX2dldF9zdGF0dXMoCjE0NDc0OiAgIGNv bnN0IHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwoxNDQ3NDogCjE0NDc0OiB2 b2lkIGRjX3BsYW5lX3N0YXRlX3JldGFpbihzdHJ1Y3QgZGNfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKTsKMTQ0NzQ6IHZvaWQgZGNfcGxhbmVfc3RhdGVfcmVsZWFzZShzdHJ1Y3QgZGNfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19nYW1tYV9yZXRhaW4o c3RydWN0IGRjX2dhbW1hICpkY19nYW1tYSk7CjE0NDc0OiB2b2lkIGRjX2dhbW1hX3JlbGVhc2Uo c3RydWN0IGRjX2dhbW1hICoqZGNfZ2FtbWEpOwoxNDQ3NDogc3RydWN0IGRjX2dhbW1hICpkY19j cmVhdGVfZ2FtbWEodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNfdHJhbnNmZXJfZnVuY19y ZXRhaW4oc3RydWN0IGRjX3RyYW5zZmVyX2Z1bmMgKmRjX3RmKTsKMTQ0NzQ6IHZvaWQgZGNfdHJh bnNmZXJfZnVuY19yZWxlYXNlKHN0cnVjdCBkY190cmFuc2Zlcl9mdW5jICpkY190Zik7CjE0NDc0 OiBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuYyAqZGNfY3JlYXRlX3RyYW5zZmVyX2Z1bmModm9pZCk7 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY18zZGx1dCAqZGNfY3JlYXRlXzNkbHV0X2Z1bmModm9p ZCk7CjE0NDc0OiB2b2lkIGRjXzNkbHV0X2Z1bmNfcmVsZWFzZShzdHJ1Y3QgZGNfM2RsdXQgKmx1 dCk7CjE0NDc0OiB2b2lkIGRjXzNkbHV0X2Z1bmNfcmV0YWluKHN0cnVjdCBkY18zZGx1dCAqbHV0 KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg ZGNfZmxpcF9hZGRycyB7CjE0NDc0OiAgc3RydWN0IGRjX3BsYW5lX2FkZHJlc3MgYWRkcmVzczsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZmxpcF90aW1lc3RhbXBfaW5fdXM7CjE0NDc0OiAgYm9vbCBm bGlwX2ltbWVkaWF0ZTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19w b3N0X3VwZGF0ZV9zdXJmYWNlc190b19zdHJlYW0oCjE0NDc0OiAgIHN0cnVjdCBkYyAqZGMpOwox NDQ3NDogCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9kY19zdHJlYW0uaCIgMQoxNDQ3NDogIyAzNSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2RjX3N0cmVhbS5oIgoxNDQ3NDogc3RydWN0IHRpbWluZ19zeW5j X2luZm8gewoxNDQ3NDogIGludCBncm91cF9pZDsKMTQ0NzQ6ICBpbnQgZ3JvdXBfc2l6ZTsKMTQ0 NzQ6ICBib29sIG1hc3RlcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19zdHJl YW1fc3RhdHVzIHsKMTQ0NzQ6ICBpbnQgcHJpbWFyeV9vdGdfaW5zdDsKMTQ0NzQ6ICBpbnQgc3Ry ZWFtX2VuY19pbnN0OwoxNDQ3NDogIGludCBwbGFuZV9jb3VudDsKMTQ0NzQ6ICBpbnQgYXVkaW9f aW5zdDsKMTQ0NzQ6ICBzdHJ1Y3QgdGltaW5nX3N5bmNfaW5mbyB0aW1pbmdfc3luY19pbmZvOwox NDQ3NDogIHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGVzWzRdOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZnJlZXN5bmNfY29udGV4dCB7CjE0NDc0OiAg Ym9vbCBkdW1teTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gaHVicF9kbWRhdGFfbW9k ZSB7CjE0NDc0OiAgRE1EQVRBX1NXX01PREUsCjE0NDc0OiAgRE1EQVRBX0hXX01PREUKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19kbWRhdGFfYXR0cmlidXRlcyB7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgZW51bSBodWJwX2RtZGF0YV9tb2RlIGRtZGF0YV9tb2Rl OwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBkbWRhdGFfcmVwZWF0OwoxNDQ3NDogCjE0NDc0OiAgdWlu dDMyX3QgZG1kYXRhX3NpemU7CjE0NDc0OiAKMTQ0NzQ6ICBib29sIGRtZGF0YV91cGRhdGVkOwox NDQ3NDogCjE0NDc0OiAgdW5pb24gbGFyZ2VfaW50ZWdlciBhZGRyZXNzOwoxNDQ3NDogCjE0NDc0 OiAgYm9vbCBkbWRhdGFfcW9zX21vZGU7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBkbWRhdGFf cW9zX2xldmVsOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGRtZGF0 YV9kbF9kZWx0YTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90ICpkbWRhdGFfc3dfZGF0YTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY193cml0ZWJhY2tfaW5mbyB7CjE0NDc0OiAg Ym9vbCB3Yl9lbmFibGVkOwoxNDQ3NDogIGludCBkd2JfcGlwZV9pbnN0OwoxNDQ3NDogIHN0cnVj dCBkY19kd2JfcGFyYW1zIGR3Yl9wYXJhbXM7CjE0NDc0OiAgc3RydWN0IG1jaWZfYnVmX3BhcmFt cyBtY2lmX2J1Zl9wYXJhbXM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfd3Jp dGViYWNrX3VwZGF0ZSB7CjE0NDc0OiAgdW5zaWduZWQgaW50IG51bV93Yl9pbmZvOwoxNDQ3NDog IHN0cnVjdCBkY193cml0ZWJhY2tfaW5mbyB3cml0ZWJhY2tfaW5mb1sxXTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gdmVydGljYWxfaW50ZXJydXB0X3JlZl9wb2ludCB7CjE0NDc0OiAg U1RBUlRfVl9VUERBVEUgPSAwLAoxNDQ3NDogIFNUQVJUX1ZfU1lOQywKMTQ0NzQ6ICBJTlZBTElE X1BPSU5UCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBwZXJpb2RpY19pbnRlcnJ1cHRfY29uZmlnIHsKMTQ0NzQ6ICBlbnVtIHZl cnRpY2FsX2ludGVycnVwdF9yZWZfcG9pbnQgcmVmX3BvaW50OwoxNDQ3NDogIGludCBsaW5lc19v ZmZzZXQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBzdHJlYW1fdXBkYXRlX2ZsYWdz IHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50MzJfdCBzY2FsaW5nOjE7CjE0NDc0OiAg IHVpbnQzMl90IG91dF90ZjoxOwoxNDQ3NDogICB1aW50MzJfdCBvdXRfY3NjOjE7CjE0NDc0OiAg IHVpbnQzMl90IGFibV9sZXZlbDoxOwoxNDQ3NDogICB1aW50MzJfdCBkcG1zX29mZjoxOwoxNDQ3 NDogICB1aW50MzJfdCBnYW11dF9yZW1hcDoxOwoxNDQ3NDogICB1aW50MzJfdCB3Yl91cGRhdGU6 MTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCByYXc7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlIHsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IGRjX3NpbmsgKnNpbms7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGNf bGluayAqbGluazsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGFuZWxfcGF0Y2ggc2lua19wYXRjaGVzOwox NDQ3NDogIHVuaW9uIGRpc3BsYXlfY29udGVudF9zdXBwb3J0IGNvbnRlbnRfc3VwcG9ydDsKMTQ0 NzQ6ICBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgdGltaW5nOwoxNDQ3NDogIHN0cnVjdCBkY19jcnRj X3RpbWluZ19hZGp1c3QgYWRqdXN0OwoxNDQ3NDogIHN0cnVjdCBkY19pbmZvX3BhY2tldCB2cnJf aW5mb3BhY2tldDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgdnNjX2luZm9wYWNrZXQ7 CjE0NDc0OiAgc3RydWN0IGRjX2luZm9fcGFja2V0IHZzcF9pbmZvcGFja2V0OwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IHJlY3Qgc3JjOwoxNDQ3NDogIHN0cnVjdCByZWN0IGRzdDsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgc3RydWN0IGZyZWVzeW5jX2NvbnRleHQgZnJlZXN5bmNfY3R4OwoxNDQ3 NDogCjE0NDc0OiAgc3RydWN0IGF1ZGlvX2luZm8gYXVkaW9faW5mbzsKMTQ0NzQ6IAoxNDQ3NDog IHN0cnVjdCBkY19pbmZvX3BhY2tldCBoZHJfc3RhdGljX21ldGFkYXRhOwoxNDQ3NDogIHVuaW9u IGxhcmdlX2ludGVnZXIgZG1kYXRhX2FkZHJlc3M7CjE0NDc0OiAgYm9vbCB1c2VfZHluYW1pY19t ZXRhOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX3RyYW5zZmVyX2Z1bmMgKm91dF90cmFuc2Zl cl9mdW5jOwoxNDQ3NDogIHN0cnVjdCBjb2xvcnNwYWNlX3RyYW5zZm9ybSBnYW11dF9yZW1hcF9t YXRyaXg7CjE0NDc0OiAgc3RydWN0IGRjX2NzY190cmFuc2Zvcm0gY3NjX2NvbG9yX21hdHJpeDsK MTQ0NzQ6IAoxNDQ3NDogIGVudW0gZGNfY29sb3Jfc3BhY2Ugb3V0cHV0X2NvbG9yX3NwYWNlOwox NDQ3NDogIGVudW0gZGNfZGl0aGVyX29wdGlvbiBkaXRoZXJfb3B0aW9uOwoxNDQ3NDogCjE0NDc0 OiAgZW51bSB2aWV3XzNkX2Zvcm1hdCB2aWV3X2Zvcm1hdDsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wg dXNlX3ZzY19zZHBfZm9yX2NvbG9yaW1ldHJ5OwoxNDQ3NDogIGJvb2wgaWdub3JlX21zYV90aW1p bmdfcGFyYW07CjE0NDc0OiAgYm9vbCBjb252ZXJ0ZXJfZGlzYWJsZV9hdWRpbzsKMTQ0NzQ6ICB1 aW50OF90IHFzX2JpdDsKMTQ0NzQ6ICB1aW50OF90IHF5X2JpdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcHNyX3ZlcnNpb247CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IGFibV9sZXZlbDsKMTQ0NzQ6IAox NDQ3NDogIHN0cnVjdCBwZXJpb2RpY19pbnRlcnJ1cHRfY29uZmlnIHBlcmlvZGljX2ludGVycnVw dDA7CjE0NDc0OiAgc3RydWN0IHBlcmlvZGljX2ludGVycnVwdF9jb25maWcgcGVyaW9kaWNfaW50 ZXJydXB0MTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eDsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1z IGJpdF9kZXB0aF9wYXJhbXM7CjE0NDc0OiAgc3RydWN0IGNsYW1waW5nX2FuZF9waXhlbF9lbmNv ZGluZ19wYXJhbXMgY2xhbXBpbmc7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgcGh5X3BpeF9jbGs7CjE0 NDc0OiAgZW51bSBzaWduYWxfdHlwZSBzaWduYWw7CjE0NDc0OiAgYm9vbCBkcG1zX29mZjsKMTQ0 NzQ6IAoxNDQ3NDogIHZvaWQgKmRtX3N0cmVhbV9jb250ZXh0OwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IGRjX2N1cnNvcl9hdHRyaWJ1dGVzIGN1cnNvcl9hdHRyaWJ1dGVzOwoxNDQ3NDogIHN0cnVj dCBkY19jdXJzb3JfcG9zaXRpb24gY3Vyc29yX3Bvc2l0aW9uOwoxNDQ3NDogIHVpbnQzMl90IHNk cl93aGl0ZV9sZXZlbDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGtyZWYgcmVmY291 bnQ7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgY3J0Y190cmlnZ2VyX2luZm8gdHJpZ2dlcmVkX2Ny dGNfcmVzZXQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBudW1fd2JfaW5m bzsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfd3JpdGViYWNrX2luZm8gd3JpdGViYWNrX2luZm9bMV07CjE0 NDc0OiAKMTQ0NzQ6ICBib29sIG1vZGVfY2hhbmdlZCA6IDE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgIHVpbnQ4X3Qgb3RnX29mZnNldDsKMTQ0NzQ6ICB9IG91dDsKMTQ0NzQ6IAox NDQ3NDogIGJvb2wgYXBwbHlfZWRwX2Zhc3RfYm9vdF9vcHRpbWl6YXRpb247CjE0NDc0OiAgYm9v bCBhcHBseV9zZWFtbGVzc19ib290X29wdGltaXphdGlvbjsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQz Ml90IHN0cmVhbV9pZDsKMTQ0NzQ6ICBib29sIGlzX2RzY19lbmFibGVkOwoxNDQ3NDogIHVuaW9u IHN0cmVhbV91cGRhdGVfZmxhZ3MgdXBkYXRlX2ZsYWdzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19zdHJlYW1fdXBkYXRlIHsKMTQ0NzQ6ICBzdHJ1 Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW07CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgcmVjdCBz cmM7CjE0NDc0OiAgc3RydWN0IHJlY3QgZHN0OwoxNDQ3NDogIHN0cnVjdCBkY190cmFuc2Zlcl9m dW5jICpvdXRfdHJhbnNmZXJfZnVuYzsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgKmhk cl9zdGF0aWNfbWV0YWRhdGE7CjE0NDc0OiAgdW5zaWduZWQgaW50ICphYm1fbGV2ZWw7CjE0NDc0 OiAKMTQ0NzQ6ICBzdHJ1Y3QgcGVyaW9kaWNfaW50ZXJydXB0X2NvbmZpZyAqcGVyaW9kaWNfaW50 ZXJydXB0MDsKMTQ0NzQ6ICBzdHJ1Y3QgcGVyaW9kaWNfaW50ZXJydXB0X2NvbmZpZyAqcGVyaW9k aWNfaW50ZXJydXB0MTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY19pbmZvX3BhY2tldCAqdnJy X2luZm9wYWNrZXQ7CjE0NDc0OiAgc3RydWN0IGRjX2luZm9fcGFja2V0ICp2c2NfaW5mb3BhY2tl dDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgKnZzcF9pbmZvcGFja2V0OwoxNDQ3NDog CjE0NDc0OiAgYm9vbCAqZHBtc19vZmY7CjE0NDc0OiAgYm9vbCBpbnRlZ2VyX3NjYWxpbmdfdXBk YXRlOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGNvbG9yc3BhY2VfdHJhbnNmb3JtICpnYW11dF9y ZW1hcDsKMTQ0NzQ6ICBlbnVtIGRjX2NvbG9yX3NwYWNlICpvdXRwdXRfY29sb3Jfc3BhY2U7CjE0 NDc0OiAgZW51bSBkY19kaXRoZXJfb3B0aW9uICpkaXRoZXJfb3B0aW9uOwoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IGRjX2NzY190cmFuc2Zvcm0gKm91dHB1dF9jc2NfdHJhbnNmb3JtOwoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IGRjX3dyaXRlYmFja191cGRhdGUgKndiX3VwZGF0ZTsKMTQ0NzQ6ICBz dHJ1Y3QgZGNfZHNjX2NvbmZpZyAqZHNjX2NvbmZpZzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGJvb2wgZGNfaXNfc3RyZWFtX3VuY2hhbmdlZCgKMTQ0NzQ6ICBzdHJ1Y3QgZGNfc3RyZWFtX3N0 YXRlICpvbGRfc3RyZWFtLCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwoxNDQ3NDog Ym9vbCBkY19pc19zdHJlYW1fc2NhbGluZ191bmNoYW5nZWQoCjE0NDc0OiAgc3RydWN0IGRjX3N0 cmVhbV9zdGF0ZSAqb2xkX3N0cmVhbSwgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsK MTQ0NzQ6ICMgMjczICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMv ZGNfc3RyZWFtLmgiCjE0NDc0OiB2b2lkIGRjX2NvbW1pdF91cGRhdGVzX2Zvcl9zdHJlYW0oc3Ry dWN0IGRjICpkYywKMTQ0NzQ6ICAgc3RydWN0IGRjX3N1cmZhY2VfdXBkYXRlICpzcmZfdXBkYXRl cywKMTQ0NzQ6ICAgaW50IHN1cmZhY2VfY291bnQsCjE0NDc0OiAgIHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKnN0cmVhbSwKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0cmVhbV91cGRhdGUgKnN0cmVhbV91 cGRhdGUsCjE0NDc0OiAgIHN0cnVjdCBkY19zdGF0ZSAqc3RhdGUpOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19zdHJlYW1fbG9nKGNvbnN0IHN0cnVjdCBkYyAqZGMsIGNv bnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAKMTQ0NzQ6IHVpbnQ4 X3QgZGNfZ2V0X2N1cnJlbnRfc3RyZWFtX2NvdW50KHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogc3Ry dWN0IGRjX3N0cmVhbV9zdGF0ZSAqZGNfZ2V0X3N0cmVhbV9hdF9pbmRleChzdHJ1Y3QgZGMgKmRj LCB1aW50OF90IGkpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1aW50 MzJfdCBkY19zdHJlYW1fZ2V0X3ZibGFua19jb3VudGVyKGNvbnN0IHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGJv b2wgZGNfc3RyZWFtX3NlbmRfZHBfc2RwKGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0 cmVhbSwKMTQ0NzQ6ICAgY29uc3QgdWludDhfdCAqY3VzdG9tX3NkcF9tZXNzYWdlLAoxNDQ3NDog ICB1bnNpZ25lZCBpbnQgc2RwX21lc3NhZ2Vfc2l6ZSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19zdHJlYW1fZ2V0X3NjYW5vdXRwb3MoY29u c3Qgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAoxNDQ3NDogICAgICAgdWludDMyX3Qg KnZfYmxhbmtfc3RhcnQsCjE0NDc0OiAgICAgICB1aW50MzJfdCAqdl9ibGFua19lbmQsCjE0NDc0 OiAgICAgICB1aW50MzJfdCAqaF9wb3NpdGlvbiwKMTQ0NzQ6ICAgICAgIHVpbnQzMl90ICp2X3Bv c2l0aW9uKTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19zdGF0dXMgZGNfYWRkX3N0cmVhbV90b19j dHgoCjE0NDc0OiAgICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKm5l d19jdHgsCjE0NDc0OiAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAK MTQ0NzQ6IGVudW0gZGNfc3RhdHVzIGRjX3JlbW92ZV9zdHJlYW1fZnJvbV9jdHgoCjE0NDc0OiAg IHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfc3RhdGUgKm5ld19jdHgsCjE0NDc0 OiAgICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGJvb2wgZGNfYWRkX3BsYW5lX3RvX2NvbnRleHQoCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBk YyAqZGMsCjE0NDc0OiAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKMTQ0NzQ6ICAg c3RydWN0IGRjX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0 YXRlICpjb250ZXh0KTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19yZW1vdmVfcGxhbmVfZnJvbV9j b250ZXh0KAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgZGNf c3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0OiAgIHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUsCjE0NDc0OiAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAKMTQ0 NzQ6IGJvb2wgZGNfcmVtX2FsbF9wbGFuZXNfZm9yX3N0cmVhbSgKMTQ0NzQ6ICAgY29uc3Qgc3Ry dWN0IGRjICpkYywKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAoxNDQ3 NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogCjE0NDc0OiBib29sIGRjX2Fk ZF9hbGxfcGxhbmVzX2Zvcl9zdHJlYW0oCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkYyAqZGMsCjE0 NDc0OiAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKMTQ0NzQ6ICAgc3RydWN0IGRj X3BsYW5lX3N0YXRlICogY29uc3QgKnBsYW5lX3N0YXRlcywKMTQ0NzQ6ICAgaW50IHBsYW5lX2Nv dW50LAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogCjE0NDc0OiBi b29sIGRjX3N0cmVhbV9hZGRfd3JpdGViYWNrKHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgIHN0cnVj dCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKMTQ0NzQ6ICAgc3RydWN0IGRjX3dyaXRlYmFja19p bmZvICp3Yl9pbmZvKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19zdHJlYW1fcmVtb3ZlX3dyaXRl YmFjayhzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJl YW0sCjE0NDc0OiAgIHVpbnQzMl90IGR3Yl9waXBlX2luc3QpOwoxNDQ3NDogCjE0NDc0OiBib29s IGRjX3N0cmVhbV93YXJtdXBfd3JpdGViYWNrKHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgIGludCBu dW1fZHdiLAoxNDQ3NDogICBzdHJ1Y3QgZGNfd3JpdGViYWNrX2luZm8gKndiX2luZm8pOwoxNDQ3 NDogCjE0NDc0OiBib29sIGRjX3N0cmVhbV9kbWRhdGFfc3RhdHVzX2RvbmUoc3RydWN0IGRjICpk Yywgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBk Y19zdHJlYW1fc2V0X2R5bmFtaWNfbWV0YWRhdGEoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgc3Ry dWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAoxNDQ3NDogICBzdHJ1Y3QgZGNfZG1kYXRhX2F0 dHJpYnV0ZXMgKmRtZGF0YV9hdHRyKTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19zdGF0dXMgZGNf dmFsaWRhdGVfc3RyZWFtKHN0cnVjdCBkYyAqZGMsIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0 cmVhbSk7CjE0NDc0OiAjIDM3NiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2RjX3N0cmVhbS5oIgoxNDQ3NDogYm9vbCBkY19lbmFibGVfc3RlcmVvKAoxNDQ3NDog IHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0LAoxNDQ3NDog IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbXNbXSwKMTQ0NzQ6ICB1aW50OF90IHN0cmVh bV9jb3VudCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBzdXJmYWNlX3VwZGF0ZV90eXBl IGRjX2NoZWNrX3VwZGF0ZV9zdXJmYWNlc19mb3Jfc3RyZWFtKAoxNDQ3NDogICBzdHJ1Y3QgZGMg KmRjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3VyZmFjZV91cGRhdGUgKnVwZGF0ZXMsCjE0NDc0OiAg IGludCBzdXJmYWNlX2NvdW50LAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RyZWFtX3VwZGF0ZSAqc3Ry ZWFtX3VwZGF0ZSwKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX3N0cmVhbV9zdGF0dXMgKnN0cmVh bV9zdGF0dXMpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg ZGNfc3RyZWFtX3N0YXRlICpkY19jcmVhdGVfc3RyZWFtX2Zvcl9zaW5rKHN0cnVjdCBkY19zaW5r ICpkY19zaW5rKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqZGNfY29w eV9zdHJlYW0oY29uc3Qgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCB1cGRhdGVfc3RyZWFtX3NpZ25hbChzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpz dHJlYW0sIHN0cnVjdCBkY19zaW5rICpzaW5rKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19zdHJl YW1fcmV0YWluKHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKmRjX3N0cmVhbSk7CjE0NDc0OiB2b2lk IGRjX3N0cmVhbV9yZWxlYXNlKHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKmRjX3N0cmVhbSk7CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19zdHJlYW1fc3RhdHVzICpkY19zdHJlYW1fZ2V0X3N0YXR1 c19mcm9tX3N0YXRlKAoxNDQ3NDogIHN0cnVjdCBkY19zdGF0ZSAqc3RhdGUsCjE0NDc0OiAgc3Ry dWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKMTQ0NzQ6IHN0cnVjdCBkY19zdHJlYW1fc3Rh dHVzICpkY19zdHJlYW1fZ2V0X3N0YXR1cygKMTQ0NzQ6ICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRl ICpkY19zdHJlYW0pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGJvb2wgZGNfc3RyZWFtX3NldF9jdXJzb3JfYXR0cmlidXRlcygKMTQ0NzQ6ICBzdHJ1Y3Qg ZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2N1cnNvcl9h dHRyaWJ1dGVzICphdHRyaWJ1dGVzKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19zdHJlYW1fc2V0 X2N1cnNvcl9wb3NpdGlvbigKMTQ0NzQ6ICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0s CjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2N1cnNvcl9wb3NpdGlvbiAqcG9zaXRpb24pOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfc3RyZWFtX2FkanVzdF92bWluX3ZtYXgoc3RydWN0 IGRjICpkYywKMTQ0NzQ6ICAgICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0 OiAgICAgc3RydWN0IGRjX2NydGNfdGltaW5nX2FkanVzdCAqYWRqdXN0KTsKMTQ0NzQ6IAoxNDQ3 NDogYm9vbCBkY19zdHJlYW1fZ2V0X2NydGNfcG9zaXRpb24oc3RydWN0IGRjICpkYywKMTQ0NzQ6 ICAgICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqKnN0cmVhbSwKMTQ0NzQ6ICAgICAgaW50IG51 bV9zdHJlYW1zLAoxNDQ3NDogICAgICB1bnNpZ25lZCBpbnQgKnZfcG9zLAoxNDQ3NDogICAgICB1 bnNpZ25lZCBpbnQgKm5vbV92X3Bvcyk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfc3RyZWFtX2Nv bmZpZ3VyZV9jcmMoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgICAgICAgc3RydWN0IGRjX3N0cmVh bV9zdGF0ZSAqc3RyZWFtLAoxNDQ3NDogICAgICAgICBib29sIGVuYWJsZSwKMTQ0NzQ6ICAgICAg ICAgYm9vbCBjb250aW51b3VzKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19zdHJlYW1fZ2V0X2Ny YyhzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICAgICAgICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAq c3RyZWFtLAoxNDQ3NDogICAgICAgICAgdWludDMyX3QgKnJfY3IsCjE0NDc0OiAgICAgICAgICB1 aW50MzJfdCAqZ195LAoxNDQ3NDogICAgICAgICAgdWludDMyX3QgKmJfY2IpOwoxNDQ3NDogCjE0 NDc0OiB2b2lkIGRjX3N0cmVhbV9zZXRfc3RhdGljX3NjcmVlbl9wYXJhbXMoc3RydWN0IGRjICpk YywKMTQ0NzQ6ICAgICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqKnN0cmVhbSwKMTQ0NzQ6ICAg ICAgaW50IG51bV9zdHJlYW1zLAoxNDQ3NDogICAgICBjb25zdCBzdHJ1Y3QgZGNfc3RhdGljX3Nj cmVlbl9wYXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNfc3RyZWFtX3NldF9k eW5fZXhwYW5zaW9uKHN0cnVjdCBkYyAqZGMsIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVh bSwKMTQ0NzQ6ICAgZW51bSBkY19keW5hbWljX2V4cGFuc2lvbiBvcHRpb24pOwoxNDQ3NDogCjE0 NDc0OiB2b2lkIGRjX3N0cmVhbV9zZXRfZGl0aGVyX29wdGlvbihzdHJ1Y3QgZGNfc3RyZWFtX3N0 YXRlICpzdHJlYW0sCjE0NDc0OiAgICAgIGVudW0gZGNfZGl0aGVyX29wdGlvbiBvcHRpb24pOwox NDQ3NDogCjE0NDc0OiBib29sIGRjX3N0cmVhbV9zZXRfZ2FtdXRfcmVtYXAoc3RydWN0IGRjICpk YywKMTQ0NzQ6ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0p OwoxNDQ3NDogCjE0NDc0OiBib29sIGRjX3N0cmVhbV9wcm9ncmFtX2NzY19tYXRyaXgoc3RydWN0 IGRjICpkYywKMTQ0NzQ6ICAgICAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7CjE0 NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfc3RyZWFtX2dldF9jcnRjX3Bvc2l0aW9uKHN0cnVjdCBkYyAq ZGMsCjE0NDc0OiAgICAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKipzdHJlYW0sCjE0NDc0OiAg ICAgIGludCBudW1fc3RyZWFtcywKMTQ0NzQ6ICAgICAgdW5zaWduZWQgaW50ICp2X3BvcywKMTQ0 NzQ6ICAgICAgdW5zaWduZWQgaW50ICpub21fdl9wb3MpOwoxNDQ3NDogIyA4NzQgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY192YWxpZGF0aW9uX3NldCB7CjE0NDc0 OiAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtOwoxNDQ3NDogIHN0cnVjdCBkY19wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGVzWzNdOwoxNDQ3NDogIHVpbnQ4X3QgcGxhbmVfY291bnQ7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBib29sIGRjX3ZhbGlkYXRlX3NlYW1sZXNzX2Jvb3RfdGlt aW5nKGNvbnN0IHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICAgY29uc3Qgc3RydWN0IGRjX3Npbmsg KnNpbmssCjE0NDc0OiAgICAgc3RydWN0IGRjX2NydGNfdGltaW5nICpjcnRjX3RpbWluZyk7CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gZGNfc3RhdHVzIGRjX3ZhbGlkYXRlX3BsYW5lKHN0cnVjdCBkYyAq ZGMsIGNvbnN0IHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwoxNDQ3NDogCjE0 NDc0OiB2b2lkIGdldF9jbG9ja19yZXF1aXJlbWVudHNfZm9yX3N0YXRlKHN0cnVjdCBkY19zdGF0 ZSAqc3RhdGUsIHN0cnVjdCBBc2ljU3RhdGVFeCAqaW5mbyk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wg ZGNfc2V0X2dlbmVyaWNfZ3Bpb19mb3Jfc3RlcmVvKGJvb2wgZW5hYmxlLAoxNDQ3NDogICBzdHJ1 Y3QgZ3Bpb19zZXJ2aWNlICpncGlvX3NlcnZpY2UpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfc3RhdHVzIGRjX3ZhbGlkYXRlX2dsb2JhbF9z dGF0ZSgKMTQ0NzQ6ICAgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0YXRlICpu ZXdfY3R4LAoxNDQ3NDogICBib29sIGZhc3RfdmFsaWRhdGUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgZGNfcmVzb3VyY2Vfc3RhdGVfY29uc3RydWN0KAoxNDQ3NDogICBjb25zdCBzdHJ1 Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmRzdF9jdHgpOwoxNDQ3NDogCjE0 NDc0OiB2b2lkIGRjX3Jlc291cmNlX3N0YXRlX2NvcHlfY29uc3RydWN0KAoxNDQ3NDogICBjb25z dCBzdHJ1Y3QgZGNfc3RhdGUgKnNyY19jdHgsCjE0NDc0OiAgIHN0cnVjdCBkY19zdGF0ZSAqZHN0 X2N0eCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNfcmVzb3VyY2Vfc3RhdGVfY29weV9jb25zdHJ1 Y3RfY3VycmVudCgKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgc3RydWN0 IGRjX3N0YXRlICpkc3RfY3R4KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19yZXNvdXJjZV9zdGF0 ZV9kZXN0cnVjdChzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogCjE0NDc0OiBib29s IGRjX3Jlc291cmNlX2lzX2RzY19lbmNvZGluZ19zdXBwb3J0ZWQoY29uc3Qgc3RydWN0IGRjICpk Yyk7CjE0NDc0OiAjIDkzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2RjL2RjLmgiCjE0NDc0OiBib29sIGRjX2NvbW1pdF9zdGF0ZShzdHJ1Y3QgZGMgKmRjLCBzdHJ1 Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19z dGF0ZSAqZGNfY3JlYXRlX3N0YXRlKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogc3RydWN0IGRjX3N0 YXRlICpkY19jb3B5X3N0YXRlKHN0cnVjdCBkY19zdGF0ZSAqc3JjX2N0eCk7CjE0NDc0OiB2b2lk IGRjX3JldGFpbl9zdGF0ZShzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogdm9pZCBk Y19yZWxlYXNlX3N0YXRlKHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRwY2RfY2FwcyB7CjE0NDc0 OiAgdW5pb24gZHBjZF9yZXYgZHBjZF9yZXY7CjE0NDc0OiAgdW5pb24gbWF4X2xhbmVfY291bnQg bWF4X2xuX2NvdW50OwoxNDQ3NDogIHVuaW9uIG1heF9kb3duX3NwcmVhZCBtYXhfZG93bl9zcHJl YWQ7CjE0NDc0OiAgdW5pb24gZHByeF9mZWF0dXJlIGRwcnhfZmVhdHVyZTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgdWludDhfdCBlZHBfc3VwcG9ydGVkX2xpbmtfcmF0ZXNfY291bnQ7CjE0NDc0 OiAgZW51bSBkY19saW5rX3JhdGUgZWRwX3N1cHBvcnRlZF9saW5rX3JhdGVzWzhdOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRpc3BsYXlfZG9uZ2xlX3R5cGUgZG9uZ2xlX3R5cGU7CjE0 NDc0OiAKMTQ0NzQ6ICBib29sIGlzX2JyYW5jaF9kZXY7CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiBz aW5rX2NvdW50IHNpbmtfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY19k b25nbGVfY2FwcyBkb25nbGVfY2FwczsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHNpbmtfZGV2 X2lkOwoxNDQ3NDogIGludDhfdCBzaW5rX2Rldl9pZF9zdHJbNl07CjE0NDc0OiAgaW50OF90IHNp bmtfaHdfcmV2aXNpb247CjE0NDc0OiAgaW50OF90IHNpbmtfZndfcmV2aXNpb25bMl07CjE0NDc0 OiAKMTQ0NzQ6ICB1aW50MzJfdCBicmFuY2hfZGV2X2lkOwoxNDQ3NDogIGludDhfdCBicmFuY2hf ZGV2X25hbWVbNl07CjE0NDc0OiAgaW50OF90IGJyYW5jaF9od19yZXZpc2lvbjsKMTQ0NzQ6ICBp bnQ4X3QgYnJhbmNoX2Z3X3JldmlzaW9uWzJdOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBhbGxvd19p bnZhbGlkX01TQV90aW1pbmdfcGFyYW07CjE0NDc0OiAgYm9vbCBwYW5lbF9tb2RlX2VkcDsKMTQ0 NzQ6ICBib29sIGRwY2RfZGlzcGxheV9jb250cm9sX2NhcGFibGU7CjE0NDc0OiAgYm9vbCBleHRf cmVjZWl2ZXJfY2FwX2ZpZWxkX3ByZXNlbnQ7CjE0NDc0OiAgdW5pb24gZHBjZF9mZWNfY2FwYWJp bGl0eSBmZWNfY2FwOwoxNDQ3NDogIHN0cnVjdCBkcGNkX2RzY19jYXBhYmlsaXRpZXMgZHNjX2Nh cHM7CjE0NDc0OiAgc3RydWN0IGRjX2x0dHByX2NhcHMgbHR0cHJfY2FwczsKMTQ0NzQ6IAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvZGNfbGluay5oIiAxCjE0NDc0OiAjIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfbGluay5oIgoxNDQ3NDogZW51bSBkY19saW5rX2Zl Y19zdGF0ZSB7CjE0NDc0OiAgZGNfbGlua19mZWNfbm90X3JlYWR5LAoxNDQ3NDogIGRjX2xpbmtf ZmVjX3JlYWR5LAoxNDQ3NDogIGRjX2xpbmtfZmVjX2VuYWJsZWQKMTQ0NzQ6IH07CjE0NDc0OiBz dHJ1Y3QgZGNfbGlua19zdGF0dXMgewoxNDQ3NDogIGJvb2wgbGlua19hY3RpdmU7CjE0NDc0OiAg c3RydWN0IGRwY2RfY2FwcyAqZHBjZF9jYXBzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgbGlua19tc3Rfc3RyZWFtX2FsbG9jYXRpb24gewoxNDQ3NDogCjE0NDc0OiAg Y29uc3Qgc3RydWN0IHN0cmVhbV9lbmNvZGVyICpzdHJlYW1fZW5jOwoxNDQ3NDogCjE0NDc0OiAg dWludDhfdCB2Y3BfaWQ7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90IHNsb3RfY291bnQ7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBsaW5rX21zdF9zdHJlYW1fYWxsb2Nh dGlvbl90YWJsZSB7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgc3RyZWFtX2NvdW50OwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IGxpbmtfbXN0X3N0cmVhbV9hbGxvY2F0aW9uIHN0cmVhbV9hbGxvY2F0aW9u c1tNQVhfQ09OVFJPTExFUl9OVU1dOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRp bWVfc3RhbXAgewoxNDQ3NDogIHVpbnQ2NF90IGVkcF9wb3dlcm9mZjsKMTQ0NzQ6ICB1aW50NjRf dCBlZHBfcG93ZXJvbjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBsaW5rX3RyYWNl IHsKMTQ0NzQ6ICBzdHJ1Y3QgdGltZV9zdGFtcCB0aW1lX3N0YW1wOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX2xpbmsgewoxNDQ3NDog IHN0cnVjdCBkY19zaW5rICpyZW1vdGVfc2lua3NbNF07CjE0NDc0OiAgdW5zaWduZWQgaW50IHNp bmtfY291bnQ7CjE0NDc0OiAgc3RydWN0IGRjX3NpbmsgKmxvY2FsX3Npbms7CjE0NDc0OiAgdW5z aWduZWQgaW50IGxpbmtfaW5kZXg7CjE0NDc0OiAgZW51bSBkY19jb25uZWN0aW9uX3R5cGUgdHlw ZTsKMTQ0NzQ6ICBlbnVtIHNpZ25hbF90eXBlIGNvbm5lY3Rvcl9zaWduYWw7CjE0NDc0OiAgZW51 bSBkY19pcnFfc291cmNlIGlycV9zb3VyY2VfaHBkOwoxNDQ3NDogIGVudW0gZGNfaXJxX3NvdXJj ZSBpcnFfc291cmNlX2hwZF9yeDsKMTQ0NzQ6ICBib29sIGlzX2hwZF9maWx0ZXJfZGlzYWJsZWQ7 CjE0NDc0OiAgYm9vbCBkcF9zc19vZmY7CjE0NDc0OiAgYm9vbCBsaW5rX3N0YXRlX3ZhbGlkOwox NDQ3NDogIGJvb2wgYXV4X2FjY2Vzc19kaXNhYmxlZDsKMTQ0NzQ6ICBib29sIHN5bmNfbHRfaW5f cHJvZ3Jlc3M7CjE0NDc0OiAgYm9vbCBpc19sdHRwcl9tb2RlX3RyYW5zcGFyZW50OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3Mg cmVwb3J0ZWRfbGlua19jYXA7CjE0NDc0OiAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgdmVyaWZp ZWRfbGlua19jYXA7CjE0NDc0OiAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgY3VyX2xpbmtfc2V0 dGluZ3M7CjE0NDc0OiAgc3RydWN0IGRjX2xhbmVfc2V0dGluZ3MgY3VyX2xhbmVfc2V0dGluZzsK MTQ0NzQ6ICBzdHJ1Y3QgZGNfbGlua19zZXR0aW5ncyBwcmVmZXJyZWRfbGlua19zZXR0aW5nOwox NDQ3NDogIHN0cnVjdCBkY19saW5rX3RyYWluaW5nX292ZXJyaWRlcyBwcmVmZXJyZWRfdHJhaW5p bmdfc2V0dGluZ3M7CjE0NDc0OiAgc3RydWN0IGRwX2F1ZGlvX3Rlc3RfZGF0YSBhdWRpb190ZXN0 X2RhdGE7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90IGRkY19od19pbnN0OwoxNDQ3NDogCjE0NDc0 OiAgdWludDhfdCBocGRfc3JjOwoxNDQ3NDogCjE0NDc0OiAgdWludDhfdCBsaW5rX2VuY19od19p bnN0OwoxNDQ3NDogCjE0NDc0OiAgYm9vbCB0ZXN0X3BhdHRlcm5fZW5hYmxlZDsKMTQ0NzQ6ICB1 bmlvbiBjb21wbGlhbmNlX3Rlc3Rfc3RhdGUgY29tcGxpYW5jZV90ZXN0X3N0YXRlOwoxNDQ3NDog CjE0NDc0OiAgdm9pZCAqcHJpdjsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkZGNfc2VydmljZSAq ZGRjOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBhdXhfbW9kZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGMgKmRjOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRj X2NvbnRleHQgKmN0eDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaW5rX2VuY29kZXIgKmxpbmtf ZW5jOwoxNDQ3NDogIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgbGlua19pZDsKMTQ0NzQ6ICB1 bmlvbiBkZGlfY2hhbm5lbF9tYXBwaW5nIGRkaV9jaGFubmVsX21hcHBpbmc7CjE0NDc0OiAgc3Ry dWN0IGNvbm5lY3Rvcl9kZXZpY2VfdGFnX2luZm8gZGV2aWNlX3RhZzsKMTQ0NzQ6ICBzdHJ1Y3Qg ZHBjZF9jYXBzIGRwY2RfY2FwczsKMTQ0NzQ6ICB1aW50MzJfdCBkb25nbGVfbWF4X3BpeF9jbGs7 CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgY2hpcF9jYXBzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBk cGNkX3NpbmtfY291bnQ7CjE0NDc0OiAgZW51bSBlZHBfcmV2aXNpb24gZWRwX3JldmlzaW9uOwox NDQ3NDogIGJvb2wgcHNyX2ZlYXR1cmVfZW5hYmxlZDsKMTQ0NzQ6ICBib29sIHBzcl9hbGxvd19h Y3RpdmU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaW5rX2ZsYWdzIHsKMTQ0NzQ6 ICAgYm9vbCBkcF9rZWVwX3JlY2VpdmVyX3Bvd2VyZWQ7CjE0NDc0OiAgIGJvb2wgZHBfc2tpcF9E SUQyOwoxNDQ3NDogICBib29sIGRwX3NraXBfcmVzZXRfc2VnbWVudDsKMTQ0NzQ6ICB9IHdhX2Zs YWdzOwoxNDQ3NDogIHN0cnVjdCBsaW5rX21zdF9zdHJlYW1fYWxsb2NhdGlvbl90YWJsZSBtc3Rf c3RyZWFtX2FsbG9jX3RhYmxlOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2xpbmtfc3RhdHVz IGxpbmtfc3RhdHVzOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGxpbmtfdHJhY2UgbGlua190cmFj ZTsKMTQ0NzQ6ICBzdHJ1Y3QgZ3BpbyAqaHBkX2dwaW87CjE0NDc0OiAgZW51bSBkY19saW5rX2Zl Y19zdGF0ZSBmZWNfc3RhdGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBjb25zdCBzdHJ1Y3Qg ZGNfbGlua19zdGF0dXMgKmRjX2xpbmtfZ2V0X3N0YXR1cyhjb25zdCBzdHJ1Y3QgZGNfbGluayAq ZGNfbGluayk7CjE0NDc0OiAjIDE1NiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RjX2xpbmsuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkY19saW5rICpkY19nZXRfbGlua19h dF9pbmRleChzdHJ1Y3QgZGMgKmRjLCB1aW50MzJfdCBsaW5rX2luZGV4KQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBkYy0+bGlua3NbbGlua19pbmRleF07CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHN0cnVjdCBkY19saW5rICpnZXRfZWRwX2xpbmsoY29uc3Qgc3RydWN0IGRjICpkYykKMTQ0NzQ6 IHsKMTQ0NzQ6ICBpbnQgaTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgZm9yIChpID0gMDsgaSA8 IGRjLT5saW5rX2NvdW50OyBpKyspIHsKMTQ0NzQ6ICAgaWYgKGRjLT5saW5rc1tpXS0+Y29ubmVj dG9yX3NpZ25hbCA9PSBTSUdOQUxfVFlQRV9FRFApCjE0NDc0OiAgICByZXR1cm4gZGMtPmxpbmtz W2ldOwoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gKCh2b2lkICopMCk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19saW5rX3Nl dF9iYWNrbGlnaHRfbGV2ZWwoY29uc3Qgc3RydWN0IGRjX2xpbmsgKmRjX2xpbmssCjE0NDc0OiAg IHVpbnQzMl90IGJhY2tsaWdodF9wd21fdTE2XzE2LAoxNDQ3NDogICB1aW50MzJfdCBmcmFtZV9y YW1wKTsKMTQ0NzQ6IAoxNDQ3NDogaW50IGRjX2xpbmtfZ2V0X2JhY2tsaWdodF9sZXZlbChjb25z dCBzdHJ1Y3QgZGNfbGluayAqZGNfbGluayk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfbGlua19z ZXRfYWJtX2Rpc2FibGUoY29uc3Qgc3RydWN0IGRjX2xpbmsgKmRjX2xpbmspOwoxNDQ3NDogCjE0 NDc0OiBib29sIGRjX2xpbmtfc2V0X3Bzcl9hbGxvd19hY3RpdmUoc3RydWN0IGRjX2xpbmsgKmRj X2xpbmssIGJvb2wgZW5hYmxlLCBib29sIHdhaXQpOwoxNDQ3NDogCjE0NDc0OiBib29sIGRjX2xp bmtfZ2V0X3Bzcl9zdGF0ZShjb25zdCBzdHJ1Y3QgZGNfbGluayAqZGNfbGluaywgdWludDMyX3Qg KnBzcl9zdGF0ZSk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfbGlua19zZXR1cF9wc3Ioc3RydWN0 IGRjX2xpbmsgKmRjX2xpbmssCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUg KnN0cmVhbSwgc3RydWN0IHBzcl9jb25maWcgKnBzcl9jb25maWcsCjE0NDc0OiAgIHN0cnVjdCBw c3JfY29udGV4dCAqcHNyX2NvbnRleHQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2RldGVjdF9yZWFzb24gewox NDQ3NDogIERFVEVDVF9SRUFTT05fQk9PVCwKMTQ0NzQ6ICBERVRFQ1RfUkVBU09OX0hQRCwKMTQ0 NzQ6ICBERVRFQ1RfUkVBU09OX0hQRFJYLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBk Y19saW5rX2RldGVjdChzdHJ1Y3QgZGNfbGluayAqZGNfbGluaywgZW51bSBkY19kZXRlY3RfcmVh c29uIHJlYXNvbik7CjE0NDc0OiBib29sIGRjX2xpbmtfZ2V0X2hwZF9zdGF0ZShzdHJ1Y3QgZGNf bGluayAqZGNfbGluayk7CjE0NDc0OiBlbnVtIGRjX3N0YXR1cyBkY19saW5rX2FsbG9jYXRlX21z dF9wYXlsb2FkKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogZW51bSBkY19zdGF0 dXMgZGNfbGlua19yZWFsbG9jYXRlX21zdF9wYXlsb2FkKHN0cnVjdCBkY19saW5rICpsaW5rKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogYm9vbCBkY19saW5rX2hhbmRsZV9ocGRfcnhfaXJxKHN0cnVjdCBkY19saW5rICpkY19s aW5rLAoxNDQ3NDogICB1bmlvbiBocGRfaXJxX2RhdGEgKmhwZF9pcnFfZHBjZF9kYXRhLCBib29s ICpvdXRfbGlua19sb3NzKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX3NpbmtfaW5pdF9kYXRh OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfc2luayAqZGNfbGlua19hZGRfcmVtb3RlX3Npbmso CjE0NDc0OiAgIHN0cnVjdCBkY19saW5rICpkY19saW5rLAoxNDQ3NDogICBjb25zdCB1aW50OF90 ICplZGlkLAoxNDQ3NDogICBpbnQgbGVuLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc2lua19pbml0X2Rh dGEgKmluaXRfZGF0YSk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNfbGlua19yZW1vdmVfcmVtb3Rl X3NpbmsoCjE0NDc0OiAgc3RydWN0IGRjX2xpbmsgKmxpbmssCjE0NDc0OiAgc3RydWN0IGRjX3Np bmsgKnNpbmspOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19saW5rX2Rw X3NldF9kcml2ZV9zZXR0aW5ncygKMTQ0NzQ6ICBzdHJ1Y3QgZGNfbGluayAqbGluaywKMTQ0NzQ6 ICBzdHJ1Y3QgbGlua190cmFpbmluZ19zZXR0aW5ncyAqbHRfc2V0dGluZ3MpOwoxNDQ3NDogCjE0 NDc0OiBib29sIGRjX2xpbmtfZHBfcGVyZm9ybV9saW5rX3RyYWluaW5nX3NraXBfYXV4KAoxNDQ3 NDogIHN0cnVjdCBkY19saW5rICpsaW5rLAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY19saW5rX3Nl dHRpbmdzICpsaW5rX3NldHRpbmcpOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGxpbmtfdHJhaW5pbmdf cmVzdWx0IGRjX2xpbmtfZHBfcGVyZm9ybV9saW5rX3RyYWluaW5nKAoxNDQ3NDogIHN0cnVjdCBk Y19saW5rICpsaW5rLAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY19saW5rX3NldHRpbmdzICpsaW5r X3NldHRpbmcsCjE0NDc0OiAgYm9vbCBza2lwX3ZpZGVvX3BhdHRlcm4pOwoxNDQ3NDogCjE0NDc0 OiBib29sIGRjX2xpbmtfZHBfc3luY19sdF9iZWdpbihzdHJ1Y3QgZGNfbGluayAqbGluayk7CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gbGlua190cmFpbmluZ19yZXN1bHQgZGNfbGlua19kcF9zeW5jX2x0 X2F0dGVtcHQoCjE0NDc0OiAgc3RydWN0IGRjX2xpbmsgKmxpbmssCjE0NDc0OiAgc3RydWN0IGRj X2xpbmtfc2V0dGluZ3MgKmxpbmtfc2V0dGluZywKMTQ0NzQ6ICBzdHJ1Y3QgZGNfbGlua190cmFp bmluZ19vdmVycmlkZXMgKmx0X3NldHRpbmdzKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19saW5r X2RwX3N5bmNfbHRfZW5kKHN0cnVjdCBkY19saW5rICpsaW5rLCBib29sIGxpbmtfZG93bik7CjE0 NDc0OiAKMTQ0NzQ6IHZvaWQgZGNfbGlua19kcF9lbmFibGVfaHBkKGNvbnN0IHN0cnVjdCBkY19s aW5rICpsaW5rKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19saW5rX2RwX2Rpc2FibGVfaHBkKGNv bnN0IHN0cnVjdCBkY19saW5rICpsaW5rKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19saW5rX2Rw X3NldF90ZXN0X3BhdHRlcm4oCjE0NDc0OiAgc3RydWN0IGRjX2xpbmsgKmxpbmssCjE0NDc0OiAg ZW51bSBkcF90ZXN0X3BhdHRlcm4gdGVzdF9wYXR0ZXJuLAoxNDQ3NDogIGVudW0gZHBfdGVzdF9w YXR0ZXJuX2NvbG9yX3NwYWNlIHRlc3RfcGF0dGVybl9jb2xvcl9zcGFjZSwKMTQ0NzQ6ICBjb25z dCBzdHJ1Y3QgbGlua190cmFpbmluZ19zZXR0aW5ncyAqcF9saW5rX3NldHRpbmdzLAoxNDQ3NDog IGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBfY3VzdG9tX3BhdHRlcm4sCjE0NDc0OiAgdW5zaWduZWQg aW50IGN1c3RfcGF0dGVybl9zaXplKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19saW5rX2VuYWJs ZV9ocGRfZmlsdGVyKHN0cnVjdCBkY19saW5rICpsaW5rLCBib29sIGVuYWJsZSk7CjE0NDc0OiAK MTQ0NzQ6IGJvb2wgZGNfbGlua19pc19kcF9zaW5rX3ByZXNlbnQoc3RydWN0IGRjX2xpbmsgKmxp bmspOwoxNDQ3NDogCjE0NDc0OiBib29sIGRjX2xpbmtfZGV0ZWN0X3Npbmsoc3RydWN0IGRjX2xp bmsgKmxpbmssIGVudW0gZGNfY29ubmVjdGlvbl90eXBlICp0eXBlKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19saW5rX3NldF9kcml2ZV9zZXR0aW5ncyhz dHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICAgIHN0cnVjdCBsaW5rX3RyYWluaW5nX3NldHRpbmdzICps dF9zZXR0aW5ncywKMTQ0NzQ6ICAgICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluayk7CjE0NDc0 OiB2b2lkIGRjX2xpbmtfcGVyZm9ybV9saW5rX3RyYWluaW5nKHN0cnVjdCBkYyAqZGMsCjE0NDc0 OiAgICAgICAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgKmxpbmtfc2V0dGluZywKMTQ0NzQ6ICAg ICAgICBib29sIHNraXBfdmlkZW9fcGF0dGVybik7CjE0NDc0OiB2b2lkIGRjX2xpbmtfc2V0X3By ZWZlcnJlZF9saW5rX3NldHRpbmdzKHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICAgICBzdHJ1Y3Qg ZGNfbGlua19zZXR0aW5ncyAqbGlua19zZXR0aW5nLAoxNDQ3NDogICAgICAgc3RydWN0IGRjX2xp bmsgKmxpbmspOwoxNDQ3NDogdm9pZCBkY19saW5rX3NldF9wcmVmZXJyZWRfdHJhaW5pbmdfc2V0 dGluZ3Moc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgICAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3Mg Kmxpbmtfc2V0dGluZywKMTQ0NzQ6ICAgICAgc3RydWN0IGRjX2xpbmtfdHJhaW5pbmdfb3ZlcnJp ZGVzICpsdF9vdmVycmlkZXMsCjE0NDc0OiAgICAgIHN0cnVjdCBkY19saW5rICpsaW5rLAoxNDQ3 NDogICAgICBib29sIHNraXBfaW1tZWRpYXRlX3JldHJhaW4pOwoxNDQ3NDogdm9pZCBkY19saW5r X2VuYWJsZV9ocGQoY29uc3Qgc3RydWN0IGRjX2xpbmsgKmxpbmspOwoxNDQ3NDogdm9pZCBkY19s aW5rX2Rpc2FibGVfaHBkKGNvbnN0IHN0cnVjdCBkY19saW5rICpsaW5rKTsKMTQ0NzQ6IHZvaWQg ZGNfbGlua19zZXRfdGVzdF9wYXR0ZXJuKHN0cnVjdCBkY19saW5rICpsaW5rLAoxNDQ3NDogICAg ZW51bSBkcF90ZXN0X3BhdHRlcm4gdGVzdF9wYXR0ZXJuLAoxNDQ3NDogICAgZW51bSBkcF90ZXN0 X3BhdHRlcm5fY29sb3Jfc3BhY2UgdGVzdF9wYXR0ZXJuX2NvbG9yX3NwYWNlLAoxNDQ3NDogICAg Y29uc3Qgc3RydWN0IGxpbmtfdHJhaW5pbmdfc2V0dGluZ3MgKnBfbGlua19zZXR0aW5ncywKMTQ0 NzQ6ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBfY3VzdG9tX3BhdHRlcm4sCjE0NDc0OiAgICB1 bnNpZ25lZCBpbnQgY3VzdF9wYXR0ZXJuX3NpemUpOwoxNDQ3NDogdWludDMyX3QgZGNfbGlua19i YW5kd2lkdGhfa2JwcygKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluaywKMTQ0NzQ6 ICBjb25zdCBzdHJ1Y3QgZGNfbGlua19zZXR0aW5ncyAqbGlua19zZXR0aW5nKTsKMTQ0NzQ6IAox NDQ3NDogY29uc3Qgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgKmRjX2xpbmtfZ2V0X2xpbmtfY2Fw KAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluayk7CjE0NDc0OiAKMTQ0NzQ6IHZv aWQgZGNfbGlua19vdmVyd3JpdGVfZXh0ZW5kZWRfcmVjZWl2ZXJfY2FwKAoxNDQ3NDogICBzdHJ1 Y3QgZGNfbGluayAqbGluayk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfc3VibWl0X2kyYygKMTQ0 NzQ6ICAgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgdWludDMyX3QgbGlua19pbmRleCwKMTQ0NzQ6 ICAgc3RydWN0IGkyY19jb21tYW5kICpjbWQpOwoxNDQ3NDogCjE0NDc0OiBib29sIGRjX3N1Ym1p dF9pMmNfb2VtKAoxNDQ3NDogICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgaTJjX2Nv bW1hbmQgKmNtZCk7CjE0NDc0OiAKMTQ0NzQ6IHVpbnQzMl90IGRjX2JhbmR3aWR0aF9pbl9rYnBz X2Zyb21fdGltaW5nKAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY19jcnRjX3RpbWluZyAqdGltaW5n KTsKMTQ0NzQ6ICMgOTgzICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvZGMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkY19jb250YWluZXJfaWQgewoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgY2hhciBn dWlkWzE2XTsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBwb3J0SWRbMl07CjE0NDc0OiAK MTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBtYW51ZmFjdHVyZXJOYW1lOwoxNDQ3NDogCjE0NDc0OiAg dW5zaWduZWQgc2hvcnQgcHJvZHVjdENvZGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBkY19zaW5rX2RzY19jYXBzIHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9v bCBpc192aXJ0dWFsX2RwY2RfZHNjOwoxNDQ3NDogIHN0cnVjdCBkc2NfZGVjX2RwY2RfY2FwcyBk c2NfZGVjX2NhcHM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZGNfc2luayB7CjE0NDc0OiAgZW51bSBzaWduYWxfdHlwZSBzaW5rX3NpZ25h bDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfZWRpZCBkY19lZGlkOwoxNDQ3NDogIHN0cnVjdCBkY19lZGlk X2NhcHMgZWRpZF9jYXBzOwoxNDQ3NDogIHN0cnVjdCBkY19jb250YWluZXJfaWQgKmRjX2NvbnRh aW5lcl9pZDsKMTQ0NzQ6ICB1aW50MzJfdCBkb25nbGVfbWF4X3BpeF9jbGs7CjE0NDc0OiAgdm9p ZCAqcHJpdjsKMTQ0NzQ6ICBzdHJ1Y3Qgc3RlcmVvXzNkX2ZlYXR1cmVzIGZlYXR1cmVzXzNkW1RJ TUlOR18zRF9GT1JNQVRfTUFYXTsKMTQ0NzQ6ICBib29sIGNvbnZlcnRlcl9kaXNhYmxlX2F1ZGlv OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX3NpbmtfZHNjX2NhcHMgc2lua19kc2NfY2FwczsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2xpbmsgKmxpbms7CjE0NDc0OiAgc3Ry dWN0IGRjX2NvbnRleHQgKmN0eDsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHNpbmtfaWQ7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBrcmVm IHJlZmNvdW50OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19zaW5rX3JldGFpbihz dHJ1Y3QgZGNfc2luayAqc2luayk7CjE0NDc0OiB2b2lkIGRjX3NpbmtfcmVsZWFzZShzdHJ1Y3Qg ZGNfc2luayAqc2luayk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19zaW5rX2luaXRfZGF0YSB7 CjE0NDc0OiAgZW51bSBzaWduYWxfdHlwZSBzaW5rX3NpZ25hbDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNf bGluayAqbGluazsKMTQ0NzQ6ICB1aW50MzJfdCBkb25nbGVfbWF4X3BpeF9jbGs7CjE0NDc0OiAg Ym9vbCBjb252ZXJ0ZXJfZGlzYWJsZV9hdWRpbzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBkY19zaW5rICpkY19zaW5rX2NyZWF0ZShjb25zdCBzdHJ1Y3QgZGNfc2lua19pbml0X2Rh dGEgKmluaXRfcGFyYW1zKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfY3Vyc29y IHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyBhZGRyZXNzOwoxNDQ3NDogIHN0cnVj dCBkY19jdXJzb3JfYXR0cmlidXRlcyBhdHRyaWJ1dGVzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2lycV9zb3VyY2UgZGNf aW50ZXJydXB0X3RvX2lycV9zb3VyY2UoCjE0NDc0OiAgIHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAg IHVpbnQzMl90IHNyY19pZCwKMTQ0NzQ6ICAgdWludDMyX3QgZXh0X2lkKTsKMTQ0NzQ6IGJvb2wg ZGNfaW50ZXJydXB0X3NldChzdHJ1Y3QgZGMgKmRjLCBlbnVtIGRjX2lycV9zb3VyY2Ugc3JjLCBi b29sIGVuYWJsZSk7CjE0NDc0OiB2b2lkIGRjX2ludGVycnVwdF9hY2soc3RydWN0IGRjICpkYywg ZW51bSBkY19pcnFfc291cmNlIHNyYyk7CjE0NDc0OiBlbnVtIGRjX2lycV9zb3VyY2UgZGNfZ2V0 X2hwZF9pcnFfc291cmNlX2F0X2luZGV4KAoxNDQ3NDogICBzdHJ1Y3QgZGMgKmRjLCB1aW50MzJf dCBsaW5rX2luZGV4KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiB2b2lkIGRjX3NldF9wb3dlcl9zdGF0ZSgKMTQ0NzQ6ICAgc3RydWN0IGRjICpkYywKMTQ0 NzQ6ICAgZW51bSBkY19hY3BpX2NtX3Bvd2VyX3N0YXRlIHBvd2VyX3N0YXRlKTsKMTQ0NzQ6IHZv aWQgZGNfcmVzdW1lKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogdW5zaWduZWQgaW50IGRjX2dldF9j dXJyZW50X2JhY2tsaWdodF9wd20oc3RydWN0IGRjICpkYyk7CjE0NDc0OiB1bnNpZ25lZCBpbnQg ZGNfZ2V0X3RhcmdldF9iYWNrbGlnaHRfcHdtKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogCjE0NDc0 OiBib29sIGRjX2lzX2RtY3VfaW5pdGlhbGl6ZWQoc3RydWN0IGRjICpkYyk7CjE0NDc0OiBib29s IGRjX2lzX2h3X2luaXRpYWxpemVkKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogCjE0NDc0OiBlbnVt IGRjX3N0YXR1cyBkY19zZXRfY2xvY2soc3RydWN0IGRjICpkYywgZW51bSBkY19jbG9ja190eXBl IGNsb2NrX3R5cGUsIHVpbnQzMl90IGNsa19raHosIHVpbnQzMl90IHN0ZXBwaW5nKTsKMTQ0NzQ6 IHZvaWQgZGNfZ2V0X2Nsb2NrKHN0cnVjdCBkYyAqZGMsIGVudW0gZGNfY2xvY2tfdHlwZSBjbG9j a190eXBlLCBzdHJ1Y3QgZGNfY2xvY2tfY29uZmlnICpjbG9ja19jZmcpOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvZGNfZHNjLmgiIDEKMTQ0NzQ6ICMgMzQgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9kY19kc2MuaCIKMTQ0NzQ6IHN0cnVjdCBkY19kc2NfYndfcmFu Z2UgewoxNDQ3NDogIHVpbnQzMl90IG1pbl9rYnBzOwoxNDQ3NDogIHVpbnQzMl90IG1pbl90YXJn ZXRfYnBwX3gxNjsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfa2JwczsKMTQ0NzQ6ICB1aW50MzJfdCBt YXhfdGFyZ2V0X2JwcF94MTY7CjE0NDc0OiAgdWludDMyX3Qgc3RyZWFtX2ticHM7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGlzcGxheV9zdHJlYW1fY29tcHJlc3NvciB7CjE0NDc0 OiAgY29uc3Qgc3RydWN0IGRzY19mdW5jcyAqZnVuY3M7CjE0NDc0OiAgc3RydWN0IGRjX2NvbnRl eHQgKmN0eDsKMTQ0NzQ6ICBpbnQgaW5zdDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBkY19kc2NfcG9saWN5IHsKMTQ0NzQ6ICBib29sIHVzZV9taW5fc2xpY2VzX2g7CjE0NDc0OiAg aW50IG1heF9zbGljZXNfaDsKMTQ0NzQ6ICBpbnQgbWluX3NsaWNlX2hlaWdodDsKMTQ0NzQ6ICB1 aW50MzJfdCBtYXhfdGFyZ2V0X2JwcDsKMTQ0NzQ6ICB1aW50MzJfdCBtaW5fdGFyZ2V0X2JwcDsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfZHNjX3BhcnNlX2RzY19kcGNkKGNvbnN0 IHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgIGNvbnN0IHVpbnQ4X3QgKmRwY2RfZHNjX2Jhc2ljX2Rh dGEsCjE0NDc0OiAgIGNvbnN0IHVpbnQ4X3QgKmRwY2RfZHNjX2V4dF9kYXRhLAoxNDQ3NDogICBz dHJ1Y3QgZHNjX2RlY19kcGNkX2NhcHMgKmRzY19zaW5rX2NhcHMpOwoxNDQ3NDogCjE0NDc0OiBi b29sIGRjX2RzY19jb21wdXRlX2JhbmR3aWR0aF9yYW5nZSgKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0 IGRpc3BsYXlfc3RyZWFtX2NvbXByZXNzb3IgKmRzYywKMTQ0NzQ6ICAgY29uc3QgdWludDMyX3Qg ZHNjX21pbl9zbGljZV9oZWlnaHRfb3ZlcnJpZGUsCjE0NDc0OiAgIGNvbnN0IHVpbnQzMl90IG1p bl9icHAsCjE0NDc0OiAgIGNvbnN0IHVpbnQzMl90IG1heF9icHAsCjE0NDc0OiAgIGNvbnN0IHN0 cnVjdCBkc2NfZGVjX2RwY2RfY2FwcyAqZHNjX3NpbmtfY2FwcywKMTQ0NzQ6ICAgY29uc3Qgc3Ry dWN0IGRjX2NydGNfdGltaW5nICp0aW1pbmcsCjE0NDc0OiAgIHN0cnVjdCBkY19kc2NfYndfcmFu Z2UgKnJhbmdlKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19kc2NfY29tcHV0ZV9jb25maWcoCjE0 NDc0OiAgIGNvbnN0IHN0cnVjdCBkaXNwbGF5X3N0cmVhbV9jb21wcmVzc29yICpkc2MsCjE0NDc0 OiAgIGNvbnN0IHN0cnVjdCBkc2NfZGVjX2RwY2RfY2FwcyAqZHNjX3NpbmtfY2FwcywKMTQ0NzQ6 ICAgY29uc3QgdWludDMyX3QgZHNjX21pbl9zbGljZV9oZWlnaHRfb3ZlcnJpZGUsCjE0NDc0OiAg IHVpbnQzMl90IHRhcmdldF9iYW5kd2lkdGhfa2JwcywKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRj X2NydGNfdGltaW5nICp0aW1pbmcsCjE0NDc0OiAgIHN0cnVjdCBkY19kc2NfY29uZmlnICpkc2Nf Y2ZnKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19kc2NfZ2V0X3BvbGljeV9mb3JfdGltaW5nKGNv bnN0IHN0cnVjdCBkY19jcnRjX3RpbWluZyAqdGltaW5nLAoxNDQ3NDogICBzdHJ1Y3QgZGNfZHNj X3BvbGljeSAqcG9saWN5KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19kc2NfcG9saWN5X3NldF9t YXhfdGFyZ2V0X2JwcF9saW1pdCh1aW50MzJfdCBsaW1pdCk7CjE0NDc0OiAjIDEwODYgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCjE0NDc0OiAjIDMw ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19t Z3IuaCIgMgoxNDQ3NDogIyA1MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2luYy9ody9jbGtfbWdyLmgiCjE0NDc0OiBzdHJ1Y3QgY2xrX2xpbWl0X3RhYmxlX2Vu dHJ5IHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdm9sdGFnZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg ZGNmY2xrX21oejsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZmNsa19taHo7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IG1lbWNsa19taHo7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNvY2Nsa19taHo7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbGtfbGltaXRfdGFibGUgewoxNDQ3 NDogIHN0cnVjdCBjbGtfbGltaXRfdGFibGVfZW50cnkgZW50cmllc1s4XTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgbnVtX2VudHJpZXM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgd21f cmFuZ2VfdGFibGVfZW50cnkgewoxNDQ3NDogIHVuc2lnbmVkIGludCB3bV9pbnN0OwoxNDQ3NDog IHVuc2lnbmVkIGludCB3bV90eXBlOwoxNDQ3NDogIGRvdWJsZSBwc3RhdGVfbGF0ZW5jeV91czsK MTQ0NzQ6ICBkb3VibGUgc3JfZXhpdF90aW1lX3VzOwoxNDQ3NDogIGRvdWJsZSBzcl9lbnRlcl9w bHVzX2V4aXRfdGltZV91czsKMTQ0NzQ6ICBib29sIHZhbGlkOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY2xrX2xvZ19pbmZvIHsKMTQ0NzQ6ICBib29sIGVuYWJsZWQ7 CjE0NDc0OiAgY2hhciAqcEJ1ZjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgYnVmU2l6ZTsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgKnN1bV9jaGFyc19wcmludGVkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGNsa19zdGF0ZV9yZWdpc3RlcnNfYW5kX2J5cGFzcyB7CjE0NDc0OiAgdWludDMy X3QgZGNmY2xrOwoxNDQ3NDogIHVpbnQzMl90IGRjZl9kZWVwX3NsZWVwX2RpdmlkZXI7CjE0NDc0 OiAgdWludDMyX3QgZGNmX2RlZXBfc2xlZXBfYWxsb3c7CjE0NDc0OiAgdWludDMyX3QgZHByZWZj bGs7CjE0NDc0OiAgdWludDMyX3QgZGlzcGNsazsKMTQ0NzQ6ICB1aW50MzJfdCBkcHBjbGs7CjE0 NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBkcHBjbGtfYnlwYXNzOwoxNDQ3NDogIHVpbnQzMl90IGRj ZmNsa19ieXBhc3M7CjE0NDc0OiAgdWludDMyX3QgZHByZWZjbGtfYnlwYXNzOwoxNDQ3NDogIHVp bnQzMl90IGRpc3BjbGtfYnlwYXNzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJ2 MV9jbGtfaW50ZXJuYWwgewoxNDQ3NDogIHVpbnQzMl90IENMSzBfQ0xLOF9DVVJSRU5UX0NOVDsK MTQ0NzQ6ICB1aW50MzJfdCBDTEswX0NMSzhfRFNfQ05UTDsKMTQ0NzQ6ICB1aW50MzJfdCBDTEsw X0NMSzhfQUxMT1dfRFM7CjE0NDc0OiAgdWludDMyX3QgQ0xLMF9DTEsxMF9DVVJSRU5UX0NOVDsK MTQ0NzQ6ICB1aW50MzJfdCBDTEswX0NMSzExX0NVUlJFTlRfQ05UOwoxNDQ3NDogCjE0NDc0OiAg dWludDMyX3QgQ0xLMF9DTEs4X0JZUEFTU19DTlRMOwoxNDQ3NDogIHVpbnQzMl90IENMSzBfQ0xL MTBfQllQQVNTX0NOVEw7CjE0NDc0OiAgdWludDMyX3QgQ0xLMF9DTEsxMV9CWVBBU1NfQ05UTDsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBybl9jbGtfaW50ZXJuYWwgewoxNDQ3NDog IHVpbnQzMl90IENMSzFfQ0xLMF9DVVJSRU5UX0NOVDsKMTQ0NzQ6ICB1aW50MzJfdCBDTEsxX0NM SzFfQ1VSUkVOVF9DTlQ7CjE0NDc0OiAgdWludDMyX3QgQ0xLMV9DTEsyX0NVUlJFTlRfQ05UOwox NDQ3NDogIHVpbnQzMl90IENMSzFfQ0xLM19DVVJSRU5UX0NOVDsKMTQ0NzQ6ICB1aW50MzJfdCBD TEsxX0NMSzNfRFNfQ05UTDsKMTQ0NzQ6ICB1aW50MzJfdCBDTEsxX0NMSzNfQUxMT1dfRFM7CjE0 NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBDTEsxX0NMSzBfQllQQVNTX0NOVEw7CjE0NDc0OiAgdWlu dDMyX3QgQ0xLMV9DTEsxX0JZUEFTU19DTlRMOwoxNDQ3NDogIHVpbnQzMl90IENMSzFfQ0xLMl9C WVBBU1NfQ05UTDsKMTQ0NzQ6ICB1aW50MzJfdCBDTEsxX0NMSzNfQllQQVNTX0NOVEw7CjE0NDc0 OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsa19zdGF0ZV9yZWdp c3RlcnMgewoxNDQ3NDogICB1aW50MzJfdCBDTEswX0NMSzhfQ1VSUkVOVF9DTlQ7CjE0NDc0OiAg IHVpbnQzMl90IENMSzBfQ0xLOF9EU19DTlRMOwoxNDQ3NDogICB1aW50MzJfdCBDTEswX0NMSzhf QUxMT1dfRFM7CjE0NDc0OiAgIHVpbnQzMl90IENMSzBfQ0xLMTBfQ1VSUkVOVF9DTlQ7CjE0NDc0 OiAgIHVpbnQzMl90IENMSzBfQ0xLMTFfQ1VSUkVOVF9DTlQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbGtfYnlwYXNzIHsKMTQ0NzQ6ICB1aW50MzJfdCBkY2ZjbGtf YnlwYXNzOwoxNDQ3NDogIHVpbnQzMl90IGRpc3BjbGtfcHlwYXNzOwoxNDQ3NDogIHVpbnQzMl90 IGRwcmVmY2xrX2J5cGFzczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgd21fdGFibGUgewoxNDQ3NDogIHN0cnVj dCB3bV9yYW5nZV90YWJsZV9lbnRyeSBlbnRyaWVzWzRdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGNsa19id19wYXJhbXMgewoxNDQ3NDogIHVuc2lnbmVkIGludCB2cmFtX3R5cGU7 CjE0NDc0OiAgdW5zaWduZWQgaW50IG51bV9jaGFubmVsczsKMTQ0NzQ6ICBzdHJ1Y3QgY2xrX2xp bWl0X3RhYmxlIGNsa190YWJsZTsKMTQ0NzQ6ICBzdHJ1Y3Qgd21fdGFibGUgd21fdGFibGU7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbGtfc3RhdGVzIHsKMTQ0NzQ6 ICB1aW50MzJfdCBkcHJlZmNsa19raHo7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg Y2xrX21ncl9mdW5jcyB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqdXBkYXRlX2Nsb2Nrcykoc3RydWN0IGNsa19t Z3IgKmNsa19tZ3IsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCjE0NDc0OiAg ICBib29sIHNhZmVfdG9fbG93ZXIpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqZ2V0X2RwX3JlZl9j bGtfZnJlcXVlbmN5KShzdHJ1Y3QgY2xrX21nciAqY2xrX21ncik7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqaW5pdF9jbG9ja3MpKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyKTsKMTQ0NzQ6IAoxNDQ3 NDogIHZvaWQgKCplbmFibGVfcG1lX3dhKSAoc3RydWN0IGNsa19tZ3IgKmNsa19tZ3IpOwoxNDQ3 NDogIHZvaWQgKCpnZXRfY2xvY2spKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyLAoxNDQ3NDogICAg c3RydWN0IGRjX3N0YXRlICpjb250ZXh0LAoxNDQ3NDogICAgZW51bSBkY19jbG9ja190eXBlIGNs b2NrX3R5cGUsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY2xvY2tfY29uZmlnICpjbG9ja19jZmcpOwox NDQ3NDogCjE0NDc0OiAgYm9vbCAoKmFyZV9jbG9ja19zdGF0ZXNfZXF1YWwpIChzdHJ1Y3QgZGNf Y2xvY2tzICphLAoxNDQ3NDogICAgc3RydWN0IGRjX2Nsb2NrcyAqYik7CjE0NDc0OiAgdm9pZCAo Km5vdGlmeV93bV9yYW5nZXMpKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyKTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbGtfbWdyIHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAq Y3R4OwoxNDQ3NDogIHN0cnVjdCBjbGtfbWdyX2Z1bmNzICpmdW5jczsKMTQ0NzQ6ICBzdHJ1Y3Qg ZGNfY2xvY2tzIGNsa3M7CjE0NDc0OiAgYm9vbCBwc3JfYWxsb3dfYWN0aXZlX2NhY2hlOwoxNDQ3 NDogIGludCBkcHJlZmNsa19raHo7CjE0NDc0OiAgaW50IGRlbnRpc3RfdmNvX2ZyZXFfa2h6Owox NDQ3NDogIHN0cnVjdCBjbGtfc3RhdGVfcmVnaXN0ZXJzX2FuZF9ieXBhc3MgYm9vdF9zbmFwc2hv dDsKMTQ0NzQ6ICBzdHJ1Y3QgY2xrX2J3X3BhcmFtcyAqYndfcGFyYW1zOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNjZzsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNs a19tZ3IgKmRjX2Nsa19tZ3JfY3JlYXRlKHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHN0cnVjdCBw cF9zbXVfZnVuY3MgKnBwX3NtdSwgc3RydWN0IGRjY2cgKmRjY2cpOwoxNDQ3NDogCjE0NDc0OiB2 b2lkIGRjX2Rlc3Ryb3lfY2xrX21ncihzdHJ1Y3QgY2xrX21nciAqY2xrX21ncik7CjE0NDc0OiAK MTQ0NzQ6IHZvaWQgY2xrX21ncl9leGl0X29wdGltaXplZF9wd3Jfc3RhdGUoY29uc3Qgc3RydWN0 IGRjICpkYywgc3RydWN0IGNsa19tZ3IgKmNsa19tZ3IpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGNs a19tZ3Jfb3B0aW1pemVfcHdyX3N0YXRlKGNvbnN0IHN0cnVjdCBkYyAqZGMsIHN0cnVjdCBjbGtf bWdyICpjbGtfbWdyKTsKMTQ0NzQ6ICMgMzAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9pbmMvaHcvY2xrX21ncl9pbnRlcm5hbC5oIiAyCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvcmVzb3VyY2UuaCIgMQoxNDQ3NDog IyAyOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9yZXNv dXJjZS5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMQoxNDQ3NDogIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jb3JlX3R5cGVzLmgiCjE0NDc0OiAjIDEgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvZGNlX2NhbGNzLmgi IDEKMTQ0NzQ6ICMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9pbmMvZGNlX2NhbGNzLmgiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9pbmMvYndfZml4ZWQuaCIgMQoxNDQ3NDogIyAzMiAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9id19maXhlZC5oIgoxNDQ3NDog c3RydWN0IGJ3X2ZpeGVkIHsKMTQ0NzQ6ICBpbnQ2NF90IHZhbHVlOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IGJ3X2ZpeGVkIGJ3X21pbjIoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsCjE0NDc0 OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzIpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIChhcmcxLnZhbHVlIDw9IGFyZzIudmFsdWUpID8gYXJnMSA6IGFyZzI7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHN0cnVjdCBid19maXhlZCBid19tYXgyKGNvbnN0IHN0cnVjdCBid19m aXhlZCBhcmcxLAoxNDQ3NDogICAgICAgICAgIGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiAoYXJnMi52YWx1ZSA8PSBhcmcxLnZhbHVlKSA/IGFyZzEg OiBhcmcyOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgYndfZml4ZWQgYndfbWluMyhz dHJ1Y3QgYndfZml4ZWQgdjEsCjE0NDc0OiAgICAgICAgICAgc3RydWN0IGJ3X2ZpeGVkIHYyLAox NDQ3NDogICAgICAgICAgIHN0cnVjdCBid19maXhlZCB2MykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gYndfbWluMihid19taW4yKHYxLCB2MiksIHYzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IGJ3X2ZpeGVkIGJ3X21heDMoc3RydWN0IGJ3X2ZpeGVkIHYxLAoxNDQ3NDogICAgICAg ICAgIHN0cnVjdCBid19maXhlZCB2MiwKMTQ0NzQ6ICAgICAgICAgICBzdHJ1Y3QgYndfZml4ZWQg djMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJ3X21heDIoYndfbWF4Mih2MSwgdjIpLCB2Myk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBid19maXhlZCBid19pbnRfdG9fZml4ZWRf bm9uY29uc3QoaW50NjRfdCB2YWx1ZSk7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgYndfZml4ZWQgYndfaW50X3Rv X2ZpeGVkKGludDY0X3QgdmFsdWUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9jb25z dGFudF9wKHZhbHVlKSkgewoxNDQ3NDogICBzdHJ1Y3QgYndfZml4ZWQgcmVzOwoxNDQ3NDogICBk byB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzczKHZvaWQpIF9fYXR0cmlidXRl X18oKF9fZXJyb3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDogIiAidmFsdWUgPiBCV19GSVhFRF9N QVhfSTMyIHx8IHZhbHVlIDwgQldfRklYRURfTUlOX0kzMiIpKSk7IGlmICghKCEodmFsdWUgPiAo aW50NjRfdCkoKDFVTEwgPDwgKDYzIC0gMjQpKSAtIDEpIHx8IHZhbHVlIDwgKGludDY0X3QpKC0o MUxMIDw8ICg2MyAtIDI0KSkpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzczKCk7IH0gd2hpbGUg KDApOwoxNDQ3NDogICByZXMudmFsdWUgPSB2YWx1ZSA8PCAyNDsKMTQ0NzQ6ICAgcmV0dXJuIHJl czsKMTQ0NzQ6ICB9IGVsc2UKMTQ0NzQ6ICAgcmV0dXJuIGJ3X2ludF90b19maXhlZF9ub25jb25z dCh2YWx1ZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludDMyX3QgYndfZml4ZWRfdG9faW50 KHN0cnVjdCBid19maXhlZCB2YWx1ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCh2YWx1ZS52 YWx1ZSkgPj4gMjQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYndfZml4ZWQgYndf ZnJjX3RvX2ZpeGVkKGludDY0X3QgbnVtLCBpbnQ2NF90IGRlbnVtKTsKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IGJ3X2ZpeGVkIGZpeGVkMzFfMzJfdG9fYndfZml4ZWQoaW50NjRfdCByYXcpCjE0NDc0 OiB7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHJlc3VsdCA9IHsgMCB9OwoxNDQ3NDogCjE0NDc0 OiAgaWYgKHJhdyA8IDApIHsKMTQ0NzQ6ICAgcmF3ID0gLXJhdzsKMTQ0NzQ6ICAgcmVzdWx0LnZh bHVlID0gLShyYXcgPj4gKDMyIC0gMjQpKTsKMTQ0NzQ6ICB9IGVsc2UgewoxNDQ3NDogICByZXN1 bHQudmFsdWUgPSByYXcgPj4gKDMyIC0gMjQpOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogIHJl dHVybiByZXN1bHQ7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBid19maXhlZCBid19h ZGQoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsCjE0NDc0OiAgICAgICAgICBjb25zdCBzdHJ1 Y3QgYndfZml4ZWQgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcmVzOwox NDQ3NDogCjE0NDc0OiAgcmVzLnZhbHVlID0gYXJnMS52YWx1ZSArIGFyZzIudmFsdWU7CjE0NDc0 OiAKMTQ0NzQ6ICByZXR1cm4gcmVzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgYndf Zml4ZWQgYndfc3ViKGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBjb25zdCBzdHJ1Y3QgYndf Zml4ZWQgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcmVzOwoxNDQ3NDog CjE0NDc0OiAgcmVzLnZhbHVlID0gYXJnMS52YWx1ZSAtIGFyZzIudmFsdWU7CjE0NDc0OiAKMTQ0 NzQ6ICByZXR1cm4gcmVzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYndfZml4ZWQg YndfbXVsKGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQg YXJnMik7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBzdHJ1Y3QgYndfZml4ZWQgYndfZGl2KGNvbnN0IHN0cnVjdCBid19maXhl ZCBhcmcxLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gYndfZnJjX3RvX2ZpeGVkKGFyZzEudmFsdWUsIGFyZzIudmFsdWUpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzdHJ1Y3QgYndfZml4ZWQgYndfbW9kKGNvbnN0IHN0cnVjdCBid19maXhlZCBh cmcxLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3Qg YndfZml4ZWQgcmVzOwoxNDQ3NDogIGRpdjY0X3U2NF9yZW0oYXJnMS52YWx1ZSwgYXJnMi52YWx1 ZSwgKHVpbnQ2NF90ICopJnJlcy52YWx1ZSk7CjE0NDc0OiAgcmV0dXJuIHJlczsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJ3X2ZpeGVkIGJ3X2Zsb29yMihjb25zdCBzdHJ1Y3QgYndf Zml4ZWQgYXJnLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgc2lnbmlmaWNhbmNlKTsKMTQ0NzQ6IHN0 cnVjdCBid19maXhlZCBid19jZWlsMihjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnLCBjb25zdCBz dHJ1Y3QgYndfZml4ZWQgc2lnbmlmaWNhbmNlKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBid19lcXUo Y29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsIGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBhcmcxLnZhbHVlID09IGFyZzIudmFsdWU7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgYndfbmVxKGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBj b25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJnMS52 YWx1ZSAhPSBhcmcyLnZhbHVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGJ3X2xlcShj b25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMSwgY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzIpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGFyZzEudmFsdWUgPD0gYXJnMi52YWx1ZTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCBid19tZXEoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsIGNv bnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhcmcxLnZh bHVlID49IGFyZzIudmFsdWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYndfbHRuKGNv bnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJnMS52YWx1ZSA8IGFyZzIudmFsdWU7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgYndfbXRuKGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBjb25z dCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJnMS52YWx1 ZSA+IGFyZzIudmFsdWU7CjE0NDc0OiB9CjE0NDc0OiAjIDM0ICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2RjZV9jYWxjcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBwaXBlX2N0eDsKMTQ0NzQ6IHN0cnVjdCBkYzsKMTQ0NzQ6IHN0cnVjdCBkY19zdGF0 ZTsKMTQ0NzQ6IHN0cnVjdCBkY2VfYndfb3V0cHV0OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGJ3X2Nh bGNzX3ZlcnNpb24gewoxNDQ3NDogIEJXX0NBTENTX1ZFUlNJT05fSU5WQUxJRCwKMTQ0NzQ6ICBC V19DQUxDU19WRVJTSU9OX0NBUlJJWk8sCjE0NDc0OiAgQldfQ0FMQ1NfVkVSU0lPTl9QT0xBUklT MTAsCjE0NDc0OiAgQldfQ0FMQ1NfVkVSU0lPTl9QT0xBUklTMTEsCjE0NDc0OiAgQldfQ0FMQ1Nf VkVSU0lPTl9QT0xBUklTMTIsCjE0NDc0OiAgQldfQ0FMQ1NfVkVSU0lPTl9WRUdBTSwKMTQ0NzQ6 ICBCV19DQUxDU19WRVJTSU9OX1NUT05FWSwKMTQ0NzQ6ICBCV19DQUxDU19WRVJTSU9OX1ZFR0Ex MAoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9pbmMvZGNlX2NhbGNzLmgiCjE0NDc0OiBlbnVtIGJ3X2RlZmluZXMgewoxNDQ3 NDogCjE0NDc0OiAgYndfZGVmX25vID0gMCwKMTQ0NzQ6ICBid19kZWZfbm9uZSA9IDAsCjE0NDc0 OiAgYndfZGVmX3llcyA9IDEsCjE0NDc0OiAgYndfZGVmX29rID0gMSwKMTQ0NzQ6ICBid19kZWZf aGlnaCA9IDIsCjE0NDc0OiAgYndfZGVmX21pZCA9IDEsCjE0NDc0OiAgYndfZGVmX2xvdyA9IDAs CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGJ3X2RlZnNfc3RhcnQgPSAyNTUsCjE0NDc0OiAgYndf ZGVmX3VuZGVybGF5NDIyLAoxNDQ3NDogIGJ3X2RlZl91bmRlcmxheTQyMF9sdW1hLAoxNDQ3NDog IGJ3X2RlZl91bmRlcmxheTQyMF9jaHJvbWEsCjE0NDc0OiAgYndfZGVmX3VuZGVybGF5NDQ0LAox NDQ3NDogIGJ3X2RlZl9ncmFwaGljcywKMTQ0NzQ6ICBid19kZWZfZGlzcGxheV93cml0ZV9iYWNr NDIwX2x1bWEsCjE0NDc0OiAgYndfZGVmX2Rpc3BsYXlfd3JpdGVfYmFjazQyMF9jaHJvbWEsCjE0 NDc0OiAgYndfZGVmX3BvcnRyYWl0LAoxNDQ3NDogIGJ3X2RlZl9oc3JfbXRuXzQsCjE0NDc0OiAg YndfZGVmX2hzcl9tdG5faF90YXBzLAoxNDQ3NDogIGJ3X2RlZl9jZWlsaW5nX19oX3RhcHNfZGl2 XzRfX19tZXFfaHNyLAoxNDQ3NDogIGJ3X2RlZl9pbnZhbGlkX2xpbmVhcl9vcl9zdGVyZW9fbW9k ZSwKMTQ0NzQ6ICBid19kZWZfaW52YWxpZF9yb3RhdGlvbl9vcl9icHBfb3Jfc3RlcmVvLAoxNDQ3 NDogIGJ3X2RlZl92c3JfbXRuX3ZfdGFwcywKMTQ0NzQ6ICBid19kZWZfdnNyX210bl80LAoxNDQ3 NDogIGJ3X2RlZl9hdXRvLAoxNDQ3NDogIGJ3X2RlZl9tYW51YWwsCjE0NDc0OiAgYndfZGVmX2V4 Y2VlZGVkX2FsbG93ZWRfbWF4aW11bV9zY2xrLAoxNDQ3NDogIGJ3X2RlZl9leGNlZWRlZF9hbGxv d2VkX3BhZ2VfY2xvc2Vfb3BlbiwKMTQ0NzQ6ICBid19kZWZfZXhjZWVkZWRfYWxsb3dlZF9vdXRz dGFuZGluZ19wdGVfcmVxX3F1ZXVlX3NpemUsCjE0NDc0OiAgYndfZGVmX2V4Y2VlZGVkX2FsbG93 ZWRfbWF4aW11bV9idywKMTQ0NzQ6ICBid19kZWZfbGFuZHNjYXBlLAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBid19kZWZfYW55X2xpbmVzLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBid19kZWZf dW5kZXJsYXlfb25seSwKMTQ0NzQ6ICBid19kZWZfYmxlbmRlZCwKMTQ0NzQ6ICBid19kZWZfYmxl bmQsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGJ3X2RlZl9tb25vLAoxNDQ3NDogIGJ3X2RlZl9z aWRlX2J5X3NpZGUsCjE0NDc0OiAgYndfZGVmX3RvcF9ib3R0b20sCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIGJ3X2RlZl80MjAsCjE0NDc0OiAgYndfZGVmXzQyMiwKMTQ0NzQ6ICBid19kZWZfNDQ0 LAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBid19kZWZfbGluZWFyLAoxNDQ3NDogIGJ3X2RlZl90 aWxlZCwKMTQ0NzQ6ICBid19kZWZfYXJyYXlfbGluZWFyX2dlbmVyYWwsCjE0NDc0OiAgYndfZGVm X2FycmF5X2xpbmVhcl9hbGlnbmVkLAoxNDQ3NDogIGJ3X2RlZl9yb3RhdGVkX21pY3JvX3RpbGlu ZywKMTQ0NzQ6ICBid19kZWZfZGlzcGxheV9taWNyb190aWxpbmcsCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIGJ3X2RlZl9nZGRyNSwKMTQ0NzQ6ICBid19kZWZfaGJtLAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBid19kZWZfaGlnaF9ub19uYnBfc3RhdGVfY2hhbmdlLAoxNDQ3NDogIGJ3X2RlZl8w XzcyLAoxNDQ3NDogIGJ3X2RlZl8wXzgsCjE0NDc0OiAgYndfZGVmXzBfOSwKMTQ0NzQ6IAoxNDQ3 NDogIGJ3X2RlZl9ub3RvayA9IC0xLAoxNDQ3NDogIGJ3X2RlZl9uYSA9IC0xCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYndfY2FsY3NfZGNlaXAgewoxNDQ3NDogIGVudW0gYndfY2Fs Y3NfdmVyc2lvbiB2ZXJzaW9uOwoxNDQ3NDogIHVpbnQzMl90IHBlcmNlbnRfb2ZfaWRlYWxfcG9y dF9id19yZWNlaXZlZF9hZnRlcl91cmdlbnRfbGF0ZW5jeTsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhf YXZlcmFnZV9wZXJjZW50X29mX2lkZWFsX3BvcnRfYndfZGlzcGxheV9jYW5fdXNlX2luX25vcm1h bF9zeXN0ZW1fb3BlcmF0aW9uOwoxNDQ3NDogIHVpbnQzMl90IG1heF9hdmVyYWdlX3BlcmNlbnRf b2ZfaWRlYWxfZHJhbWJ3X2Rpc3BsYXlfY2FuX3VzZV9pbl9ub3JtYWxfc3lzdGVtX29wZXJhdGlv bjsKMTQ0NzQ6ICBib29sIGxhcmdlX2N1cnNvcjsKMTQ0NzQ6ICB1aW50MzJfdCBjdXJzb3JfbWF4 X291dHN0YW5kaW5nX2dyb3VwX251bTsKMTQ0NzQ6ICBib29sIGRtaWZfcGlwZV9lbl9mYmNfY2h1 bmtfdHJhY2tlcjsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgZG1pZl9yZXF1ZXN0X2J1ZmZlcl9z aXplOwoxNDQ3NDogIHVpbnQzMl90IGxpbmVzX2ludGVybGVhdmVkX2ludG9fbGI7CjE0NDc0OiAg dWludDMyX3QgbG93X3Bvd2VyX3RpbGluZ19tb2RlOwoxNDQ3NDogIHVpbnQzMl90IGNodW5rX3dp ZHRoOwoxNDQ3NDogIHVpbnQzMl90IG51bWJlcl9vZl9ncmFwaGljc19waXBlczsKMTQ0NzQ6ICB1 aW50MzJfdCBudW1iZXJfb2ZfdW5kZXJsYXlfcGlwZXM7CjE0NDc0OiAgYm9vbCBkaXNwbGF5X3dy aXRlX2JhY2tfc3VwcG9ydGVkOwoxNDQ3NDogIGJvb2wgYXJnYl9jb21wcmVzc2lvbl9zdXBwb3J0 OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB1bmRlcmxheV92c2NhbGVyX2VmZmljaWVuY3k2X2Jp dF9wZXJfY29tcG9uZW50OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB1bmRlcmxheV92c2NhbGVy X2VmZmljaWVuY3k4X2JpdF9wZXJfY29tcG9uZW50OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB1 bmRlcmxheV92c2NhbGVyX2VmZmljaWVuY3kxMF9iaXRfcGVyX2NvbXBvbmVudDsKMTQ0NzQ6ICBz dHJ1Y3QgYndfZml4ZWQgdW5kZXJsYXlfdnNjYWxlcl9lZmZpY2llbmN5MTJfYml0X3Blcl9jb21w b25lbnQ7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGdyYXBoaWNzX3ZzY2FsZXJfZWZmaWNpZW5j eTZfYml0X3Blcl9jb21wb25lbnQ7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGdyYXBoaWNzX3Zz Y2FsZXJfZWZmaWNpZW5jeThfYml0X3Blcl9jb21wb25lbnQ7CjE0NDc0OiAgc3RydWN0IGJ3X2Zp eGVkIGdyYXBoaWNzX3ZzY2FsZXJfZWZmaWNpZW5jeTEwX2JpdF9wZXJfY29tcG9uZW50OwoxNDQ3 NDogIHN0cnVjdCBid19maXhlZCBncmFwaGljc192c2NhbGVyX2VmZmljaWVuY3kxMl9iaXRfcGVy X2NvbXBvbmVudDsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgYWxwaGFfdnNjYWxlcl9lZmZpY2ll bmN5OwoxNDQ3NDogIHVpbnQzMl90IG1heF9kbWlmX2J1ZmZlcl9hbGxvY2F0ZWQ7CjE0NDc0OiAg dWludDMyX3QgZ3JhcGhpY3NfZG1pZl9zaXplOwoxNDQ3NDogIHVpbnQzMl90IHVuZGVybGF5X2x1 bWFfZG1pZl9zaXplOwoxNDQ3NDogIHVpbnQzMl90IHVuZGVybGF5X2Nocm9tYV9kbWlmX3NpemU7 CjE0NDc0OiAgYm9vbCBwcmVfZG93bnNjYWxlcl9lbmFibGVkOwoxNDQ3NDogIGJvb2wgdW5kZXJs YXlfZG93bnNjYWxlX3ByZWZldGNoX2VuYWJsZWQ7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGxi X3dyaXRlX3BpeGVsc19wZXJfZGlzcGNsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbGJfc2l6 ZV9wZXJfY29tcG9uZW50NDQ0OwoxNDQ3NDogIGJvb2wgZ3JhcGhpY3NfbGJfbm9kb3duc2NhbGlu Z19tdWx0aV9saW5lX3ByZWZldGNoaW5nOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzdHV0dGVy X2FuZF9kcmFtX2Nsb2NrX3N0YXRlX2NoYW5nZV9nYXRlZF9iZWZvcmVfY3Vyc29yOwoxNDQ3NDog IHN0cnVjdCBid19maXhlZCB1bmRlcmxheTQyMF9sdW1hX2xiX3NpemVfcGVyX2NvbXBvbmVudDsK MTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgdW5kZXJsYXk0MjBfY2hyb21hX2xiX3NpemVfcGVyX2Nv bXBvbmVudDsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgdW5kZXJsYXk0MjJfbGJfc2l6ZV9wZXJf Y29tcG9uZW50OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBjdXJzb3JfY2h1bmtfd2lkdGg7CjE0 NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGN1cnNvcl9kY3BfYnVmZmVyX2xpbmVzOwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCB1bmRlcmxheV9tYXhpbXVtX3dpZHRoX2VmZmljaWVudF9mb3JfdGlsaW5n OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB1bmRlcmxheV9tYXhpbXVtX2hlaWdodF9lZmZpY2ll bnRfZm9yX3RpbGluZzsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcGVha19wdGVfcmVxdWVzdF90 b19ldmljdGlvbl9yYXRpb19saW1pdGluZ19tdWx0aXBsZV9kaXNwbGF5c19vcl9zaW5nbGVfcm90 YXRlZF9kaXNwbGF5OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBwZWFrX3B0ZV9yZXF1ZXN0X3Rv X2V2aWN0aW9uX3JhdGlvX2xpbWl0aW5nX3NpbmdsZV9kaXNwbGF5X25vX3JvdGF0aW9uOwoxNDQ3 NDogIHN0cnVjdCBid19maXhlZCBtaW5pbXVtX291dHN0YW5kaW5nX3B0ZV9yZXF1ZXN0X2xpbWl0 OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBtYXhpbXVtX3RvdGFsX291dHN0YW5kaW5nX3B0ZV9y ZXF1ZXN0c19hbGxvd2VkX2J5X3NhdzsKMTQ0NzQ6ICBib29sIGxpbWl0X2V4Y2Vzc2l2ZV9vdXRz dGFuZGluZ19kbWlmX3JlcXVlc3RzOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBsaW5lYXJfbW9k ZV9saW5lX3JlcXVlc3RfYWx0ZXJuYXRpb25fc2xpY2U7CjE0NDc0OiAgdWludDMyX3Qgc2NhdHRl cl9nYXRoZXJfbGluZXNfb2ZfcHRlX3ByZWZldGNoaW5nX2luX2xpbmVhcl9tb2RlOwoxNDQ3NDog IHVpbnQzMl90IGRpc3BsYXlfd3JpdGVfYmFjazQyMF9sdW1hX21jaWZ3cl9idWZmZXJfc2l6ZTsK MTQ0NzQ6ICB1aW50MzJfdCBkaXNwbGF5X3dyaXRlX2JhY2s0MjBfY2hyb21hX21jaWZ3cl9idWZm ZXJfc2l6ZTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcmVxdWVzdF9lZmZpY2llbmN5OwoxNDQ3 NDogIHN0cnVjdCBid19maXhlZCBkaXNwY2xrX3Blcl9yZXF1ZXN0OwoxNDQ3NDogIHN0cnVjdCBi d19maXhlZCBkaXNwY2xrX3JhbXBpbmdfZmFjdG9yOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBk aXNwbGF5X3BpcGVfdGhyb3VnaHB1dF9mYWN0b3I7CjE0NDc0OiAgdWludDMyX3Qgc2NhdHRlcl9n YXRoZXJfcHRlX3JlcXVlc3Rfcm93c19pbl90aWxpbmdfbW9kZTsKMTQ0NzQ6ICBzdHJ1Y3QgYndf Zml4ZWQgbWNpZndyX2FsbF9zdXJmYWNlc19idXJzdF90aW1lOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGJ3X2NhbGNzX3ZiaW9zIHsKMTQ0NzQ6ICBlbnVtIGJ3X2RlZmluZXMgbWVt b3J5X3R5cGU7CjE0NDc0OiAgdWludDMyX3QgZHJhbV9jaGFubmVsX3dpZHRoX2luX2JpdHM7CjE0 NDc0OiAgdWludDMyX3QgbnVtYmVyX29mX2RyYW1fY2hhbm5lbHM7CjE0NDc0OiAgdWludDMyX3Qg bnVtYmVyX29mX2RyYW1fYmFua3M7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGxvd195Y2xrOwox NDQ3NDogIHN0cnVjdCBid19maXhlZCBtaWRfeWNsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg aGlnaF95Y2xrOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBsb3dfc2NsazsKMTQ0NzQ6ICBzdHJ1 Y3QgYndfZml4ZWQgbWlkMV9zY2xrOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBtaWQyX3NjbGs7 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIG1pZDNfc2NsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4 ZWQgbWlkNF9zY2xrOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBtaWQ1X3NjbGs7CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIG1pZDZfc2NsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgaGlnaF9z Y2xrOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBsb3dfdm9sdGFnZV9tYXhfZGlzcGNsazsKMTQ0 NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbWlkX3ZvbHRhZ2VfbWF4X2Rpc3BjbGs7CjE0NDc0OiAgc3Ry dWN0IGJ3X2ZpeGVkIGhpZ2hfdm9sdGFnZV9tYXhfZGlzcGNsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndf Zml4ZWQgbG93X3ZvbHRhZ2VfbWF4X3BoeWNsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbWlk X3ZvbHRhZ2VfbWF4X3BoeWNsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgaGlnaF92b2x0YWdl X21heF9waHljbGs7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRhdGFfcmV0dXJuX2J1c193aWR0 aDsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgdHJjOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBk bWlmbWNfdXJnZW50X2xhdGVuY3k7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfc2Vs Zl9yZWZyZXNoX2V4aXRfbGF0ZW5jeTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRlcl9z ZWxmX3JlZnJlc2hfZW50cnlfbGF0ZW5jeTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbmJwX3N0 YXRlX2NoYW5nZV9sYXRlbmN5OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBtY2lmd3JtY191cmdl bnRfbGF0ZW5jeTsKMTQ0NzQ6ICBib29sIHNjYXR0ZXJfZ2F0aGVyX2VuYWJsZTsKMTQ0NzQ6ICBz dHJ1Y3QgYndfZml4ZWQgZG93bl9zcHJlYWRfcGVyY2VudGFnZTsKMTQ0NzQ6ICB1aW50MzJfdCBj dXJzb3Jfd2lkdGg7CjE0NDc0OiAgdWludDMyX3QgYXZlcmFnZV9jb21wcmVzc2lvbl9yYXRlOwox NDQ3NDogIHVpbnQzMl90IG51bWJlcl9vZl9yZXF1ZXN0X3Nsb3RzX2dtY19yZXNlcnZlc19mb3Jf ZG1pZl9wZXJfY2hhbm5lbDsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgYmxhY2tvdXRfZHVyYXRp b247CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIG1heGltdW1fYmxhY2tvdXRfcmVjb3ZlcnlfdGlt ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBid19jYWxjc19kYXRhIHsKMTQ0NzQ6IAoxNDQ3NDog IGJvb2wgZGlzcGxheV9zeW5jaHJvbml6YXRpb25fZW5hYmxlZDsKMTQ0NzQ6ICB1aW50MzJfdCBu dW1iZXJfb2ZfZGlzcGxheXM7CjE0NDc0OiAgZW51bSBid19kZWZpbmVzIHVuZGVybGF5X3N1cmZh Y2VfdHlwZTsKMTQ0NzQ6ICBlbnVtIGJ3X2RlZmluZXMgcGFubmluZ19hbmRfYmV6ZWxfYWRqdXN0 bWVudDsKMTQ0NzQ6ICBlbnVtIGJ3X2RlZmluZXMgZ3JhcGhpY3NfdGlsaW5nX21vZGU7CjE0NDc0 OiAgdWludDMyX3QgZ3JhcGhpY3NfbGJfYnBjOwoxNDQ3NDogIHVpbnQzMl90IHVuZGVybGF5X2xi X2JwYzsKMTQ0NzQ6ICBlbnVtIGJ3X2RlZmluZXMgdW5kZXJsYXlfdGlsaW5nX21vZGU7CjE0NDc0 OiAgZW51bSBid19kZWZpbmVzIGQwX3VuZGVybGF5X21vZGU7CjE0NDc0OiAgYm9vbCBkMV9kaXNw bGF5X3dyaXRlX2JhY2tfZHdiX2VuYWJsZTsKMTQ0NzQ6ICBlbnVtIGJ3X2RlZmluZXMgZDFfdW5k ZXJsYXlfbW9kZTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgaW5jcmVhc2Vfdm9sdGFnZV90b19zdXBw b3J0X21jbGtfc3dpdGNoOwoxNDQ3NDogIGJvb2wgY3B1cF9zdGF0ZV9jaGFuZ2VfZW5hYmxlOwox NDQ3NDogIGJvb2wgY3B1Y19zdGF0ZV9jaGFuZ2VfZW5hYmxlOwoxNDQ3NDogIGJvb2wgbmJwX3N0 YXRlX2NoYW5nZV9lbmFibGU7CjE0NDc0OiAgYm9vbCBzdHV0dGVyX21vZGVfZW5hYmxlOwoxNDQ3 NDogIHVpbnQzMl90IHlfY2xrX2xldmVsOwoxNDQ3NDogIHVpbnQzMl90IHNjbGtfbGV2ZWw7CjE0 NDc0OiAgdWludDMyX3QgbnVtYmVyX29mX3VuZGVybGF5X3N1cmZhY2VzOwoxNDQ3NDogIHVpbnQz Ml90IG51bWJlcl9vZl9kcmFtX3dyY2hhbm5lbHM7CjE0NDc0OiAgdWludDMyX3QgY2h1bmtfcmVx dWVzdF9kZWxheTsKMTQ0NzQ6ICB1aW50MzJfdCBudW1iZXJfb2ZfZHJhbV9jaGFubmVsczsKMTQ0 NzQ6ICBlbnVtIGJ3X2RlZmluZXMgdW5kZXJsYXlfbWljcm9fdGlsZV9tb2RlOwoxNDQ3NDogIGVu dW0gYndfZGVmaW5lcyBncmFwaGljc19taWNyb190aWxlX21vZGU7CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIG1heF9waHljbGs7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRyYW1fZWZmaWNpZW5j eTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3JjX3dpZHRoX2FmdGVyX3N1cmZhY2VfdHlwZTsK MTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3JjX2hlaWdodF9hZnRlcl9zdXJmYWNlX3R5cGU7CjE0 NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGhzcl9hZnRlcl9zdXJmYWNlX3R5cGU7CjE0NDc0OiAgc3Ry dWN0IGJ3X2ZpeGVkIHZzcl9hZnRlcl9zdXJmYWNlX3R5cGU7CjE0NDc0OiAgc3RydWN0IGJ3X2Zp eGVkIHNyY193aWR0aF9hZnRlcl9yb3RhdGlvbjsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3Jj X2hlaWdodF9hZnRlcl9yb3RhdGlvbjsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgaHNyX2FmdGVy X3JvdGF0aW9uOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB2c3JfYWZ0ZXJfcm90YXRpb247CjE0 NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHNvdXJjZV9oZWlnaHRfcGl4ZWxzOwoxNDQ3NDogIHN0cnVj dCBid19maXhlZCBoc3JfYWZ0ZXJfc3RlcmVvOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB2c3Jf YWZ0ZXJfc3RlcmVvOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzb3VyY2Vfd2lkdGhfaW5fbGI7 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGxiX2xpbmVfcGl0Y2g7CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIHVuZGVybGF5X21heGltdW1fc291cmNlX2VmZmljaWVudF9mb3JfdGlsaW5nOwoxNDQ3 NDogIHN0cnVjdCBid19maXhlZCBudW1fbGluZXNfYXRfZnJhbWVfc3RhcnQ7CjE0NDc0OiAgc3Ry dWN0IGJ3X2ZpeGVkIG1pbl9kbWlmX3NpemVfaW5fdGltZTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4 ZWQgbWluX21jaWZ3cl9zaXplX2luX3RpbWU7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRvdGFs X3JlcXVlc3RzX2Zvcl9kbWlmX3NpemU7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHBlYWtfcHRl X3JlcXVlc3RfdG9fZXZpY3Rpb25fcmF0aW9fbGltaXRpbmc7CjE0NDc0OiAgc3RydWN0IGJ3X2Zp eGVkIHVzZWZ1bF9wdGVfcGVyX3B0ZV9yZXF1ZXN0OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBz Y2F0dGVyX2dhdGhlcl9wdGVfcmVxdWVzdF9yb3dzOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBz Y2F0dGVyX2dhdGhlcl9yb3dfaGVpZ2h0OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzY2F0dGVy X2dhdGhlcl9wdGVfcmVxdWVzdHNfaW5fdmJsYW5rOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBp bmVmZmljaWVudF9saW5lYXJfcGl0Y2hfaW5fYnl0ZXM7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IGN1cnNvcl90b3RhbF9kYXRhOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBjdXJzb3JfdG90YWxf cmVxdWVzdF9ncm91cHM7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHNjYXR0ZXJfZ2F0aGVyX3Rv dGFsX3B0ZV9yZXF1ZXN0czsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc2NhdHRlcl9nYXRoZXJf dG90YWxfcHRlX3JlcXVlc3RfZ3JvdXBzOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB0aWxlX3dp ZHRoX2luX3BpeGVsczsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgZG1pZl90b3RhbF9udW1iZXJf b2ZfZGF0YV9yZXF1ZXN0X3BhZ2VfY2xvc2Vfb3BlbjsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg bWNpZndyX3RvdGFsX251bWJlcl9vZl9kYXRhX3JlcXVlc3RfcGFnZV9jbG9zZV9vcGVuOwoxNDQ3 NDogIHN0cnVjdCBid19maXhlZCBieXRlc19wZXJfcGFnZV9jbG9zZV9vcGVuOwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCBtY2lmd3JfdG90YWxfcGFnZV9jbG9zZV9vcGVuX3RpbWU7CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIHRvdGFsX3JlcXVlc3RzX2Zvcl9hZGp1c3RlZF9kbWlmX3NpemU7CjE0 NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2RtaWZtY191cmdlbnRfdHJpcHM7CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2RtaWZtY191cmdlbnRfbGF0ZW5jeTsKMTQ0NzQ6ICBzdHJ1 Y3QgYndfZml4ZWQgdG90YWxfZGlzcGxheV9yZWFkc19yZXF1aXJlZF9kYXRhOwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCB0b3RhbF9kaXNwbGF5X3JlYWRzX3JlcXVpcmVkX2RyYW1fYWNjZXNzX2Rh dGE7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2Rpc3BsYXlfd3JpdGVzX3JlcXVpcmVk X2RhdGE7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2Rpc3BsYXlfd3JpdGVzX3JlcXVp cmVkX2RyYW1fYWNjZXNzX2RhdGE7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRpc3BsYXlfcmVh ZHNfcmVxdWlyZWRfZGF0YTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgZGlzcGxheV9yZWFkc19y ZXF1aXJlZF9kcmFtX2FjY2Vzc19kYXRhOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBkbWlmX3Rv dGFsX3BhZ2VfY2xvc2Vfb3Blbl90aW1lOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBtaW5fY3Vy c29yX21lbW9yeV9pbnRlcmZhY2VfYnVmZmVyX3NpemVfaW5fdGltZTsKMTQ0NzQ6ICBzdHJ1Y3Qg YndfZml4ZWQgbWluX3JlYWRfYnVmZmVyX3NpemVfaW5fdGltZTsKMTQ0NzQ6ICBzdHJ1Y3QgYndf Zml4ZWQgZGlzcGxheV9yZWFkc190aW1lX2Zvcl9kYXRhX3RyYW5zZmVyOwoxNDQ3NDogIHN0cnVj dCBid19maXhlZCBkaXNwbGF5X3dyaXRlc190aW1lX2Zvcl9kYXRhX3RyYW5zZmVyOwoxNDQ3NDog IHN0cnVjdCBid19maXhlZCBkbWlmX3JlcXVpcmVkX2RyYW1fYmFuZHdpZHRoOwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCBtY2lmd3JfcmVxdWlyZWRfZHJhbV9iYW5kd2lkdGg7CjE0NDc0OiAgc3Ry dWN0IGJ3X2ZpeGVkIHJlcXVpcmVkX2RtaWZtY191cmdlbnRfbGF0ZW5jeV9mb3JfcGFnZV9jbG9z ZV9vcGVuOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCByZXF1aXJlZF9tY2lmbWN3cl91cmdlbnRf bGF0ZW5jeTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcmVxdWlyZWRfZHJhbV9iYW5kd2lkdGhf Z2J5dGVfcGVyX3NlY29uZDsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgZHJhbV9iYW5kd2lkdGg7 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRtaWZfcmVxdWlyZWRfc2NsazsKMTQ0NzQ6ICBzdHJ1 Y3QgYndfZml4ZWQgbWNpZndyX3JlcXVpcmVkX3NjbGs7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IHJlcXVpcmVkX3NjbGs7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRvd25zcHJlYWRfZmFjdG9y OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB2X3NjYWxlcl9lZmZpY2llbmN5OwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCBzY2FsZXJfbGltaXRzX2ZhY3RvcjsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4 ZWQgZGlzcGxheV9waXBlX3BpeGVsX3Rocm91Z2hwdXQ7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IHRvdGFsX2Rpc3BjbGtfcmVxdWlyZWRfd2l0aF9yYW1waW5nOwoxNDQ3NDogIHN0cnVjdCBid19m aXhlZCB0b3RhbF9kaXNwY2xrX3JlcXVpcmVkX3dpdGhvdXRfcmFtcGluZzsKMTQ0NzQ6ICBzdHJ1 Y3QgYndfZml4ZWQgdG90YWxfcmVhZF9yZXF1ZXN0X2JhbmR3aWR0aDsKMTQ0NzQ6ICBzdHJ1Y3Qg YndfZml4ZWQgdG90YWxfd3JpdGVfcmVxdWVzdF9iYW5kd2lkdGg7CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIGRpc3BjbGtfcmVxdWlyZWRfZm9yX3RvdGFsX3JlYWRfcmVxdWVzdF9iYW5kd2lkdGg7 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2Rpc3BjbGtfcmVxdWlyZWRfd2l0aF9yYW1w aW5nX3dpdGhfcmVxdWVzdF9iYW5kd2lkdGg7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRvdGFs X2Rpc3BjbGtfcmVxdWlyZWRfd2l0aG91dF9yYW1waW5nX3dpdGhfcmVxdWVzdF9iYW5kd2lkdGg7 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRpc3BjbGs7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IGJsYWNrb3V0X3JlY292ZXJ5X3RpbWU7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIG1pbl9waXhl bHNfcGVyX2RhdGFfZmlmb19lbnRyeTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc2Nsa19kZWVw X3NsZWVwOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBjaHVua19yZXF1ZXN0X3RpbWU7CjE0NDc0 OiAgc3RydWN0IGJ3X2ZpeGVkIGN1cnNvcl9yZXF1ZXN0X3RpbWU7CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIGxpbmVfc291cmNlX3BpeGVsc190cmFuc2Zlcl90aW1lOwoxNDQ3NDogIHN0cnVjdCBi d19maXhlZCBkbWlmZHJhbV9hY2Nlc3NfZWZmaWNpZW5jeTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4 ZWQgbWNpZndyZHJhbV9hY2Nlc3NfZWZmaWNpZW5jeTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg dG90YWxfYXZlcmFnZV9iYW5kd2lkdGhfbm9fY29tcHJlc3Npb247CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIHRvdGFsX2F2ZXJhZ2VfYmFuZHdpZHRoOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB0 b3RhbF9zdHV0dGVyX2N5Y2xlX2R1cmF0aW9uOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzdHV0 dGVyX2J1cnN0X3RpbWU7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRpbWVfaW5fc2VsZl9yZWZy ZXNoOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzdHV0dGVyX2VmZmljaWVuY3k7CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIHdvcnN0X251bWJlcl9vZl90cmlwc190b19tZW1vcnk7CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIGltbWVkaWF0ZV9mbGlwX3RpbWU7CjE0NDc0OiAgc3RydWN0IGJ3X2Zp eGVkIGxhdGVuY3lfZm9yX25vbl9kbWlmX2NsaWVudHM7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IGxhdGVuY3lfZm9yX25vbl9tY2lmd3JfY2xpZW50czsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg ZG1pZm1jX3VyZ2VudF9sYXRlbmN5X3N1cHBvcnRlZF9pbl9oaWdoX3NjbGtfYW5kX3ljbGs7CjE0 NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIG5icF9zdGF0ZV9kcmFtX3NwZWVkX2NoYW5nZV9tYXJnaW47 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRpc3BsYXlfcmVhZHNfdGltZV9mb3JfZGF0YV90cmFu c2Zlcl9hbmRfdXJnZW50X2xhdGVuY3k7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRyYW1fc3Bl ZWRfY2hhbmdlX21hcmdpbjsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbWluX3ZibGFua19kcmFt X3NwZWVkX2NoYW5nZV9tYXJnaW47CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIG1pbl9zdHV0dGVy X3JlZnJlc2hfZHVyYXRpb247CjE0NDc0OiAgdWludDMyX3QgdG90YWxfc3R1dHRlcl9kbWlmX2J1 ZmZlcl9zaXplOwoxNDQ3NDogIHVpbnQzMl90IHRvdGFsX2J5dGVzX3JlcXVlc3RlZDsKMTQ0NzQ6 ICB1aW50MzJfdCBtaW5fc3R1dHRlcl9kbWlmX2J1ZmZlcl9zaXplOwoxNDQ3NDogIHVpbnQzMl90 IG51bV9zdHV0dGVyX2J1cnN0czsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgdl9ibGFua19uYnBf c3RhdGVfZHJhbV9zcGVlZF9jaGFuZ2VfbGF0ZW5jeV9zdXBwb3J0ZWQ7CjE0NDc0OiAgc3RydWN0 IGJ3X2ZpeGVkIG5icF9zdGF0ZV9kcmFtX3NwZWVkX2NoYW5nZV9sYXRlbmN5X3N1cHBvcnRlZDsK MTQ0NzQ6ICBib29sIGZiY19lblsxMl07CjE0NDc0OiAgYm9vbCBscHRfZW5bMTJdOwoxNDQ3NDog IGJvb2wgZGlzcGxheXNfbWF0Y2hfZmxhZ1sxMl07CjE0NDc0OiAgYm9vbCB1c2VfYWxwaGFbMTJd OwoxNDQ3NDogIGJvb2wgb3J0aG9nb25hbF9yb3RhdGlvblsxMl07CjE0NDc0OiAgYm9vbCBlbmFi bGVbMTJdOwoxNDQ3NDogIGJvb2wgYWNjZXNzX29uZV9jaGFubmVsX29ubHlbMTJdOwoxNDQ3NDog IGJvb2wgc2NhdHRlcl9nYXRoZXJfZW5hYmxlX2Zvcl9waXBlWzEyXTsKMTQ0NzQ6ICBib29sIGlu dGVybGFjZV9tb2RlWzEyXTsKMTQ0NzQ6ICBib29sIGRpc3BsYXlfcHN0YXRlX2NoYW5nZV9lbmFi bGVbMTJdOwoxNDQ3NDogIGJvb2wgbGluZV9idWZmZXJfcHJlZmV0Y2hbMTJdOwoxNDQ3NDogIHVp bnQzMl90IGJ5dGVzX3Blcl9waXhlbFsxMl07CjE0NDc0OiAgdWludDMyX3QgbWF4X2NodW5rc19u b25fZmJjX21vZGVbMTJdOwoxNDQ3NDogIHVpbnQzMl90IGxiX2JwY1sxMl07CjE0NDc0OiAgdWlu dDMyX3Qgb3V0cHV0X2JwcGhkbWlbMTJdOwoxNDQ3NDogIHVpbnQzMl90IG91dHB1dF9icHBkcDRf bGFuZV9oYnJbMTJdOwoxNDQ3NDogIHVpbnQzMl90IG91dHB1dF9icHBkcDRfbGFuZV9oYnIyWzEy XTsKMTQ0NzQ6ICB1aW50MzJfdCBvdXRwdXRfYnBwZHA0X2xhbmVfaGJyM1sxMl07CjE0NDc0OiAg ZW51bSBid19kZWZpbmVzIHN0ZXJlb19tb2RlWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg ZG1pZl9idWZmZXJfdHJhbnNmZXJfdGltZVsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRp c3BsYXlzX3dpdGhfc2FtZV9tb2RlWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRl cl9kbWlmX2J1ZmZlcl9zaXplWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRlcl9y ZWZyZXNoX2R1cmF0aW9uWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRlcl9leGl0 X3dhdGVybWFya1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfZW50cnlfd2F0 ZXJtYXJrWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgaF90b3RhbFsxMl07CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIHZfdG90YWxbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBwaXhl bF9yYXRlWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3JjX3dpZHRoWzEyXTsKMTQ0NzQ6 ICBzdHJ1Y3QgYndfZml4ZWQgcGl0Y2hfaW5fcGl4ZWxzWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndf Zml4ZWQgcGl0Y2hfaW5fcGl4ZWxzX2FmdGVyX3N1cmZhY2VfdHlwZVsxMl07CjE0NDc0OiAgc3Ry dWN0IGJ3X2ZpeGVkIHNyY19oZWlnaHRbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzY2Fs ZV9yYXRpb1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGhfdGFwc1sxMl07CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIHZfdGFwc1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGhfc2Nh bGVfcmF0aW9bMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB2X3NjYWxlX3JhdGlvWzEyXTsK MTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcm90YXRpb25fYW5nbGVbMTJdOwoxNDQ3NDogIHN0cnVj dCBid19maXhlZCBjb21wcmVzc2lvbl9yYXRlWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg aHNyWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgdnNyWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3Qg YndfZml4ZWQgc291cmNlX3dpZHRoX3JvdW5kZWRfdXBfdG9fY2h1bmtzWzEyXTsKMTQ0NzQ6ICBz dHJ1Y3QgYndfZml4ZWQgc291cmNlX3dpZHRoX3BpeGVsc1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIHNvdXJjZV9oZWlnaHRfcm91bmRlZF91cF90b19jaHVua3NbMTJdOwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCBkaXNwbGF5X2JhbmR3aWR0aFsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2Zp eGVkIHJlcXVlc3RfYmFuZHdpZHRoWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgYnl0ZXNf cGVyX3JlcXVlc3RbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB1c2VmdWxfYnl0ZXNfcGVy X3JlcXVlc3RbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBsaW5lc19pbnRlcmxlYXZlZF9p bl9tZW1fYWNjZXNzWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbGF0ZW5jeV9oaWRpbmdf bGluZXNbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBsYl9wYXJ0aXRpb25zWzEyXTsKMTQ0 NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbGJfcGFydGl0aW9uc19tYXhbMTJdOwoxNDQ3NDogIHN0cnVj dCBid19maXhlZCBkaXNwY2xrX3JlcXVpcmVkX3dpdGhfcmFtcGluZ1sxMl07CjE0NDc0OiAgc3Ry dWN0IGJ3X2ZpeGVkIGRpc3BjbGtfcmVxdWlyZWRfd2l0aG91dF9yYW1waW5nWzEyXTsKMTQ0NzQ6 ICBzdHJ1Y3QgYndfZml4ZWQgZGF0YV9idWZmZXJfc2l6ZVsxMl07CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIG91dHN0YW5kaW5nX2NodW5rX3JlcXVlc3RfbGltaXRbMTJdOwoxNDQ3NDogIHN0cnVj dCBid19maXhlZCB1cmdlbnRfd2F0ZXJtYXJrWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg bmJwX3N0YXRlX2NoYW5nZV93YXRlcm1hcmtbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB2 X2ZpbHRlcl9pbml0WzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRlcl9jeWNsZV9k dXJhdGlvblsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGF2ZXJhZ2VfYmFuZHdpZHRoWzEy XTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgYXZlcmFnZV9iYW5kd2lkdGhfbm9fY29tcHJlc3Np b25bMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzY2F0dGVyX2dhdGhlcl9wdGVfcmVxdWVz dF9saW1pdFsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGxiX3NpemVfcGVyX2NvbXBvbmVu dFsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIG1lbW9yeV9jaHVua19zaXplX2luX2J5dGVz WzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcGlwZV9jaHVua19zaXplX2luX2J5dGVzWzEy XTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbnVtYmVyX29mX3RyaXBzX3RvX21lbW9yeV9mb3Jf Z2V0dGluZ19hcHRlX3Jvd1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGFkanVzdGVkX2Rh dGFfYnVmZmVyX3NpemVbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBhZGp1c3RlZF9kYXRh X2J1ZmZlcl9zaXplX2luX21lbW9yeVsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHBpeGVs c19wZXJfZGF0YV9maWZvX2VudHJ5WzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc2NhdHRl cl9nYXRoZXJfcHRlX3JlcXVlc3RzX2luX3Jvd1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IHB0ZV9yZXF1ZXN0X3Blcl9jaHVua1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHNjYXR0 ZXJfZ2F0aGVyX3BhZ2Vfd2lkdGhbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzY2F0dGVy X2dhdGhlcl9wYWdlX2hlaWdodFsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGxiX2xpbmVz X2luX3Blcl9saW5lX291dF9pbl9iZWdpbm5pbmdfb2ZfZnJhbWVbMTJdOwoxNDQ3NDogIHN0cnVj dCBid19maXhlZCBsYl9saW5lc19pbl9wZXJfbGluZV9vdXRfaW5fbWlkZGxlX29mX2ZyYW1lWzEy XTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgY3Vyc29yX3dpZHRoX3BpeGVsc1sxMl07CjE0NDc0 OiAgc3RydWN0IGJ3X2ZpeGVkIG1pbmltdW1fbGF0ZW5jeV9oaWRpbmdbMTJdOwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCBtYXhpbXVtX2xhdGVuY3lfaGlkaW5nWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3Qg YndfZml4ZWQgbWluaW11bV9sYXRlbmN5X2hpZGluZ193aXRoX2N1cnNvclsxMl07CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIG1heGltdW1fbGF0ZW5jeV9oaWRpbmdfd2l0aF9jdXJzb3JbMTJdOwox NDQ3NDogIHN0cnVjdCBid19maXhlZCBzcmNfcGl4ZWxzX2Zvcl9maXJzdF9vdXRwdXRfcGl4ZWxb MTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzcmNfcGl4ZWxzX2Zvcl9sYXN0X291dHB1dF9w aXhlbFsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHNyY19kYXRhX2Zvcl9maXJzdF9vdXRw dXRfcGl4ZWxbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzcmNfZGF0YV9mb3JfbGFzdF9v dXRwdXRfcGl4ZWxbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBhY3RpdmVfdGltZVsxMl07 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGhvcml6b250YWxfYmxhbmtfYW5kX2NodW5rX2dyYW51 bGFyaXR5X2ZhY3RvclsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGN1cnNvcl9sYXRlbmN5 X2hpZGluZ1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHZfYmxhbmtfZHJhbV9zcGVlZF9j aGFuZ2VfbWFyZ2luWzEyXTsKMTQ0NzQ6ICB1aW50MzJfdCBudW1fZGlzcGxheXNfd2l0aF9tYXJn aW5bM11bOF07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRtaWZfYnVyc3RfdGltZVszXVs4XTsK MTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbWNpZndyX2J1cnN0X3RpbWVbM11bOF07CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIGxpbmVfc291cmNlX3RyYW5zZmVyX3RpbWVbMTJdWzNdWzhdOwoxNDQ3 NDogIHN0cnVjdCBid19maXhlZCBkcmFtX3NwZWVkX2NoYW5nZV9saW5lX3NvdXJjZV90cmFuc2Zl cl90aW1lWzEyXVszXVs4XTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbWluX2RyYW1fc3BlZWRf Y2hhbmdlX21hcmdpblszXVs4XTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgZGlzcGNsa19yZXF1 aXJlZF9mb3JfZHJhbV9zcGVlZF9jaGFuZ2VbM11bOF07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IGRpc3BjbGtfcmVxdWlyZWRfZm9yX2RyYW1fc3BlZWRfY2hhbmdlX3BpcGVbM11bOF07CjE0NDc0 OiAgc3RydWN0IGJ3X2ZpeGVkIGJsYWNrb3V0X2R1cmF0aW9uX21hcmdpblszXVs4XTsKMTQ0NzQ6 ICBzdHJ1Y3QgYndfZml4ZWQgZGlzcGNsa19yZXF1aXJlZF9mb3JfYmxhY2tvdXRfZHVyYXRpb25b M11bOF07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRpc3BjbGtfcmVxdWlyZWRfZm9yX2JsYWNr b3V0X3JlY292ZXJ5WzNdWzhdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBkbWlmX3JlcXVpcmVk X3NjbGtfZm9yX3VyZ2VudF9sYXRlbmN5WzZdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBid19jYWxjc19pbml0KAoxNDQ3NDogIHN0cnVjdCBi d19jYWxjc19kY2VpcCAqYndfZGNlaXAsCjE0NDc0OiAgc3RydWN0IGJ3X2NhbGNzX3ZiaW9zICpi d192YmlvcywKMTQ0NzQ6ICBzdHJ1Y3QgaHdfYXNpY19pZCBhc2ljX2lkKTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBi d19jYWxjcygKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogIGNvbnN0IHN0 cnVjdCBid19jYWxjc19kY2VpcCAqZGNlaXAsCjE0NDc0OiAgY29uc3Qgc3RydWN0IGJ3X2NhbGNz X3ZiaW9zICp2YmlvcywKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgcGlwZV9jdHggKnBpcGUsCjE0NDc0 OiAgaW50IHBpcGVfY291bnQsCjE0NDc0OiAgc3RydWN0IGRjZV9id19vdXRwdXQgKmNhbGNzX291 dHB1dCk7CjE0NDc0OiAjIDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2Rjbl9jYWxjcy5oIiAxCjE0NDc0OiAjIDM0ICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2Rjbl9jYWxjcy5o IgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMv aW5jLy4uL2RtbC9kaXNwbGF5X21vZGVfbGliLmgiIDEKMTQ0NzQ6ICMgMzUgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvZGNuX2NhbGNzLmgiIDIKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGM7CjE0NDc0OiBzdHJ1Y3QgZGNfc3RhdGU7CjE0NDc0 OiAjIDUxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2Rj bl9jYWxjcy5oIgoxNDQ3NDogZW51bSBkY25fYndfZGVmcyB7CjE0NDc0OiAgZGNuX2J3X3ZfbWlu MHA2NSwKMTQ0NzQ6ICBkY25fYndfdl9taWQwcDcyLAoxNDQ3NDogIGRjbl9id192X25vbTBwOCwK MTQ0NzQ6ICBkY25fYndfdl9tYXgwcDksCjE0NDc0OiAgZGNuX2J3X3ZfbWF4MHA5MSwKMTQ0NzQ6 ICBkY25fYndfbm9fc3VwcG9ydCA9IDUsCjE0NDc0OiAgZGNuX2J3X3llcywKMTQ0NzQ6ICBkY25f YndfaG9yLAoxNDQ3NDogIGRjbl9id192ZXJ0LAoxNDQ3NDogIGRjbl9id19vdmVycmlkZSwKMTQ0 NzQ6ICBkY25fYndfcmdiX3N1Yl82NCwKMTQ0NzQ6ICBkY25fYndfcmdiX3N1Yl8zMiwKMTQ0NzQ6 ICBkY25fYndfcmdiX3N1Yl8xNiwKMTQ0NzQ6ICBkY25fYndfbm8sCjE0NDc0OiAgZGNuX2J3X3N3 X2xpbmVhciwKMTQ0NzQ6ICBkY25fYndfc3dfNF9rYl9kLAoxNDQ3NDogIGRjbl9id19zd180X2ti X2RfeCwKMTQ0NzQ6ICBkY25fYndfc3dfNjRfa2JfZCwKMTQ0NzQ6ICBkY25fYndfc3dfNjRfa2Jf ZF90LAoxNDQ3NDogIGRjbl9id19zd182NF9rYl9kX3gsCjE0NDc0OiAgZGNuX2J3X3N3X3Zhcl9k LAoxNDQ3NDogIGRjbl9id19zd192YXJfZF94LAoxNDQ3NDogIGRjbl9id195dXY0MjBfc3ViXzgs CjE0NDc0OiAgZGNuX2J3X3N3XzRfa2JfcywKMTQ0NzQ6ICBkY25fYndfc3dfNF9rYl9zX3gsCjE0 NDc0OiAgZGNuX2J3X3N3XzY0X2tiX3MsCjE0NDc0OiAgZGNuX2J3X3N3XzY0X2tiX3NfdCwKMTQ0 NzQ6ICBkY25fYndfc3dfNjRfa2Jfc194LAoxNDQ3NDogIGRjbl9id193cml0ZWJhY2ssCjE0NDc0 OiAgZGNuX2J3XzQ0NCwKMTQ0NzQ6ICBkY25fYndfZHAsCjE0NDc0OiAgZGNuX2J3XzQyMCwKMTQ0 NzQ6ICBkY25fYndfaGRtaSwKMTQ0NzQ6ICBkY25fYndfc3dfdmFyX3MsCjE0NDc0OiAgZGNuX2J3 X3N3X3Zhcl9zX3gsCjE0NDc0OiAgZGNuX2J3X3l1djQyMF9zdWJfMTAsCjE0NDc0OiAgZGNuX2J3 X3N1cHBvcnRlZF9pbl92X2FjdGl2ZSwKMTQ0NzQ6ICBkY25fYndfc3VwcG9ydGVkX2luX3ZfYmxh bmssCjE0NDc0OiAgZGNuX2J3X25vdF9zdXBwb3J0ZWQsCjE0NDc0OiAgZGNuX2J3X25hLAoxNDQ3 NDogIGRjbl9id19lbmNvZGVyXzhicGMsCjE0NDc0OiAgZGNuX2J3X2VuY29kZXJfMTBicGMsCjE0 NDc0OiAgZGNuX2J3X2VuY29kZXJfMTJicGMsCjE0NDc0OiAgZGNuX2J3X2VuY29kZXJfMTZicGMs CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkY25fYndfaW50ZXJuYWxfdmFycyB7CjE0NDc0OiAgZmxvYXQgdm9sdGFnZVs1ICsg MV07CjE0NDc0OiAgZmxvYXQgbWF4X2Rpc3BjbGtbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG1heF9k cHBjbGtbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGRjZmNsa19wZXJfc3RhdGVbNSArIDFdOwoxNDQ3 NDogIGZsb2F0IHBoeWNsa19wZXJfc3RhdGVbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGZhYnJpY19h bmRfZHJhbV9iYW5kd2lkdGhfcGVyX3N0YXRlWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBzcl9leGl0 X3RpbWU7CjE0NDc0OiAgZmxvYXQgc3JfZW50ZXJfcGx1c19leGl0X3RpbWU7CjE0NDc0OiAgZmxv YXQgZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5jeTsKMTQ0NzQ6ICBmbG9hdCB1cmdlbnRfbGF0ZW5j eTsKMTQ0NzQ6ICBmbG9hdCB3cml0ZV9iYWNrX2xhdGVuY3k7CjE0NDc0OiAgZmxvYXQgcGVyY2Vu dF9vZl9pZGVhbF9kcmFtYndfcmVjZWl2ZWRfYWZ0ZXJfdXJnX2xhdGVuY3k7CjE0NDc0OiAgZmxv YXQgZGNmY2xrdl9tYXgwcDk7CjE0NDc0OiAgZmxvYXQgZGNmY2xrdl9ub20wcDg7CjE0NDc0OiAg ZmxvYXQgZGNmY2xrdl9taWQwcDcyOwoxNDQ3NDogIGZsb2F0IGRjZmNsa3ZfbWluMHA2NTsKMTQ0 NzQ6ICBmbG9hdCBtYXhfZGlzcGNsa192bWF4MHA5OwoxNDQ3NDogIGZsb2F0IG1heF9kcHBjbGtf dm1heDBwOTsKMTQ0NzQ6ICBmbG9hdCBtYXhfZGlzcGNsa192bm9tMHA4OwoxNDQ3NDogIGZsb2F0 IG1heF9kcHBjbGtfdm5vbTBwODsKMTQ0NzQ6ICBmbG9hdCBtYXhfZGlzcGNsa192bWlkMHA3MjsK MTQ0NzQ6ICBmbG9hdCBtYXhfZHBwY2xrX3ZtaWQwcDcyOwoxNDQ3NDogIGZsb2F0IG1heF9kaXNw Y2xrX3ZtaW4wcDY1OwoxNDQ3NDogIGZsb2F0IG1heF9kcHBjbGtfdm1pbjBwNjU7CjE0NDc0OiAg ZmxvYXQgc29jY2xrOwoxNDQ3NDogIGZsb2F0IGZhYnJpY19hbmRfZHJhbV9iYW5kd2lkdGhfdm1h eDBwOTsKMTQ0NzQ6ICBmbG9hdCBmYWJyaWNfYW5kX2RyYW1fYmFuZHdpZHRoX3Zub20wcDg7CjE0 NDc0OiAgZmxvYXQgZmFicmljX2FuZF9kcmFtX2JhbmR3aWR0aF92bWlkMHA3MjsKMTQ0NzQ6ICBm bG9hdCBmYWJyaWNfYW5kX2RyYW1fYmFuZHdpZHRoX3ZtaW4wcDY1OwoxNDQ3NDogIGZsb2F0IHJv dW5kX3RyaXBfcGluZ19sYXRlbmN5X2N5Y2xlczsKMTQ0NzQ6ICBmbG9hdCB1cmdlbnRfb3V0X29m X29yZGVyX3JldHVybl9wZXJfY2hhbm5lbDsKMTQ0NzQ6ICBmbG9hdCBudW1iZXJfb2ZfY2hhbm5l bHM7CjE0NDc0OiAgZmxvYXQgdm1tX3BhZ2Vfc2l6ZTsKMTQ0NzQ6ICBmbG9hdCByZXR1cm5fYnVz X3dpZHRoOwoxNDQ3NDogIGZsb2F0IHJvYl9idWZmZXJfc2l6ZV9pbl9rYnl0ZTsKMTQ0NzQ6ICBm bG9hdCBkZXRfYnVmZmVyX3NpemVfaW5fa2J5dGU7CjE0NDc0OiAgZmxvYXQgZHBwX291dHB1dF9i dWZmZXJfcGl4ZWxzOwoxNDQ3NDogIGZsb2F0IG9wcF9vdXRwdXRfYnVmZmVyX2xpbmVzOwoxNDQ3 NDogIGZsb2F0IHBpeGVsX2NodW5rX3NpemVfaW5fa2J5dGU7CjE0NDc0OiAgZmxvYXQgcHRlX2No dW5rX3NpemU7CjE0NDc0OiAgZmxvYXQgbWV0YV9jaHVua19zaXplOwoxNDQ3NDogIGZsb2F0IHdy aXRlYmFja19jaHVua19zaXplOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgb2RtX2NhcGFiaWxp dHk7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBkc2NfY2FwYWJpbGl0eTsKMTQ0NzQ6ICBmbG9h dCBsaW5lX2J1ZmZlcl9zaXplOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgaXNfbGluZV9idWZm ZXJfYnBwX2ZpeGVkOwoxNDQ3NDogIGZsb2F0IGxpbmVfYnVmZmVyX2ZpeGVkX2JwcDsKMTQ0NzQ6 ICBmbG9hdCBtYXhfbGluZV9idWZmZXJfbGluZXM7CjE0NDc0OiAgZmxvYXQgd3JpdGViYWNrX2x1 bWFfYnVmZmVyX3NpemU7CjE0NDc0OiAgZmxvYXQgd3JpdGViYWNrX2Nocm9tYV9idWZmZXJfc2l6 ZTsKMTQ0NzQ6ICBmbG9hdCBtYXhfbnVtX2RwcDsKMTQ0NzQ6ICBmbG9hdCBtYXhfbnVtX3dyaXRl YmFjazsKMTQ0NzQ6ICBmbG9hdCBtYXhfZGNodWJfdG9wc2NsX3Rocm91Z2hwdXQ7CjE0NDc0OiAg ZmxvYXQgbWF4X3BzY2xfdG9sYl90aHJvdWdocHV0OwoxNDQ3NDogIGZsb2F0IG1heF9sYl90b3Zz Y2xfdGhyb3VnaHB1dDsKMTQ0NzQ6ICBmbG9hdCBtYXhfdnNjbF90b2hzY2xfdGhyb3VnaHB1dDsK MTQ0NzQ6ICBmbG9hdCBtYXhfaHNjbF9yYXRpbzsKMTQ0NzQ6ICBmbG9hdCBtYXhfdnNjbF9yYXRp bzsKMTQ0NzQ6ICBmbG9hdCBtYXhfaHNjbF90YXBzOwoxNDQ3NDogIGZsb2F0IG1heF92c2NsX3Rh cHM7CjE0NDc0OiAgZmxvYXQgdW5kZXJfc2Nhbl9mYWN0b3I7CjE0NDc0OiAgZmxvYXQgcGh5Y2xr dl9tYXgwcDk7CjE0NDc0OiAgZmxvYXQgcGh5Y2xrdl9ub20wcDg7CjE0NDc0OiAgZmxvYXQgcGh5 Y2xrdl9taWQwcDcyOwoxNDQ3NDogIGZsb2F0IHBoeWNsa3ZfbWluMHA2NTsKMTQ0NzQ6ICBmbG9h dCBwdGVfYnVmZmVyX3NpemVfaW5fcmVxdWVzdHM7CjE0NDc0OiAgZmxvYXQgZGlzcGNsa19yYW1w aW5nX21hcmdpbjsKMTQ0NzQ6ICBmbG9hdCBkb3duc3ByZWFkaW5nOwoxNDQ3NDogIGZsb2F0IG1h eF9pbnRlcl9kY25fdGlsZV9yZXBlYXRlcnM7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBjYW5f dnN0YXJ0dXBfbGluZXNfZXhjZWVkX3ZzeW5jX3BsdXNfYmFja19wb3JjaF9saW5lc19taW51c19v bmU7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBidWdfZm9yY2luZ19sdW1hX2FuZF9jaHJvbWFf cmVxdWVzdF90b19zYW1lX3NpemVfZml4ZWQ7CjE0NDc0OiAgaW50IG1vZGU7CjE0NDc0OiAgZmxv YXQgdmlld3BvcnRfd2lkdGhbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGh0b3RhbFs1ICsgMV07CjE0 NDc0OiAgZmxvYXQgdnRvdGFsWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB2X3N5bmNfcGx1c19iYWNr X3BvcmNoWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB2YWN0aXZlWzUgKyAxXTsKMTQ0NzQ6ICBmbG9h dCBwaXhlbF9jbG9ja1s1ICsgMV07CjE0NDc0OiAgZmxvYXQgdmlld3BvcnRfaGVpZ2h0WzUgKyAx XTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIGRjY19lbmFibGVbNSArIDFdOwoxNDQ3NDogIGZs b2F0IGRjY19yYXRlWzUgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIHNvdXJjZV9zY2Fu WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBsYl9iaXRfcGVyX3BpeGVsWzUgKyAxXTsKMTQ0NzQ6ICBl bnVtIGRjbl9id19kZWZzIHNvdXJjZV9waXhlbF9mb3JtYXRbNSArIDFdOwoxNDQ3NDogIGVudW0g ZGNuX2J3X2RlZnMgc291cmNlX3N1cmZhY2VfbW9kZVs1ICsgMV07CjE0NDc0OiAgZW51bSBkY25f YndfZGVmcyBvdXRwdXRfZm9ybWF0WzUgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIG91 dHB1dF9kZWVwX2NvbG9yWzUgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIG91dHB1dFs1 ICsgMV07CjE0NDc0OiAgZmxvYXQgc2NhbGVyX3JlY19vdXRfd2lkdGhbNSArIDFdOwoxNDQ3NDog IGZsb2F0IHNjYWxlcl9yZWNvdXRfaGVpZ2h0WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB1bmRlcnNj YW5fb3V0cHV0WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBpbnRlcmxhY2Vfb3V0cHV0WzUgKyAxXTsK MTQ0NzQ6ICBmbG9hdCBvdmVycmlkZV9odGFfcHNbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG92ZXJy aWRlX3Z0YV9wc1s1ICsgMV07CjE0NDc0OiAgZmxvYXQgb3ZlcnJpZGVfaHRhX3BzY2hyb21hWzUg KyAxXTsKMTQ0NzQ6ICBmbG9hdCBvdmVycmlkZV92dGFfcHNjaHJvbWFbNSArIDFdOwoxNDQ3NDog IGZsb2F0IHVyZ2VudF9sYXRlbmN5X3N1cHBvcnRfdXNbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGhf cmF0aW9bNSArIDFdOwoxNDQ3NDogIGZsb2F0IHZfcmF0aW9bNSArIDFdOwoxNDQ3NDogIGZsb2F0 IGh0YXBzWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB2dGFwc1s1ICsgMV07CjE0NDc0OiAgZmxvYXQg aHRhX3BzY2hyb21hWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB2dGFfcHNjaHJvbWFbNSArIDFdOwox NDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgcHRlX2VuYWJsZTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19k ZWZzIHN5bmNocm9uaXplZF92Ymxhbms7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyB0YV9wc2Nh bGN1bGF0aW9uOwoxNDQ3NDogIGludCB2b2x0YWdlX292ZXJyaWRlX2xldmVsOwoxNDQ3NDogIGlu dCBudW1iZXJfb2ZfYWN0aXZlX3BsYW5lczsKMTQ0NzQ6ICBpbnQgdm9sdGFnZV9sZXZlbDsKMTQ0 NzQ6ICBlbnVtIGRjbl9id19kZWZzIGltbWVkaWF0ZV9mbGlwX3N1cHBvcnRlZDsKMTQ0NzQ6ICBm bG9hdCBkY2ZjbGs7CjE0NDc0OiAgZmxvYXQgbWF4X3BoeWNsazsKMTQ0NzQ6ICBmbG9hdCBmYWJy aWNfYW5kX2RyYW1fYmFuZHdpZHRoOwoxNDQ3NDogIGZsb2F0IGRwcF9wZXJfcGxhbmVfcGVyX3Jh dGlvWzEgKyAxXVs1ICsgMV07CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBkaXNwY2xrX2RwcGNs a19zdXBwb3J0X3Blcl9yYXRpb1sxICsgMV07CjE0NDc0OiAgZmxvYXQgcmVxdWlyZWRfZGlzcGNs a19wZXJfcmF0aW9bMSArIDFdOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgZXJyb3JfbWVzc2Fn ZVsxICsgMV07CjE0NDc0OiAgaW50IGRpc3BjbGtfZHBwY2xrX3JhdGlvOwoxNDQ3NDogIGZsb2F0 IGRwcF9wZXJfcGxhbmVbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGRldF9idWZmZXJfc2l6ZV95WzUg KyAxXTsKMTQ0NzQ6ICBmbG9hdCBkZXRfYnVmZmVyX3NpemVfY1s1ICsgMV07CjE0NDc0OiAgZmxv YXQgc3dhdGhfaGVpZ2h0X3lbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHN3YXRoX2hlaWdodF9jWzUg KyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIGZpbmFsX2Vycm9yX21lc3NhZ2U7CjE0NDc0 OiAgZmxvYXQgZnJlcXVlbmN5OwoxNDQ3NDogIGZsb2F0IGhlYWRlcl9saW5lOwoxNDQ3NDogIGZs b2F0IGhlYWRlcjsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIHZvbHRhZ2Vfb3ZlcnJpZGU7CjE0 NDc0OiAgZW51bSBkY25fYndfZGVmcyBhbGxvd19kaWZmZXJlbnRfaHJhdGlvX3ZyYXRpbzsKMTQ0 NzQ6ICBmbG9hdCBhY2NlcHRhYmxlX3F1YWxpdHlfaHRhX3BzOwoxNDQ3NDogIGZsb2F0IGFjY2Vw dGFibGVfcXVhbGl0eV92dGFfcHM7CjE0NDc0OiAgZmxvYXQgbm9fb2ZfZHBwWzUgKyAxXVsxICsg MV1bNSArIDFdOwoxNDQ3NDogIGZsb2F0IHN3YXRoX3dpZHRoX3lwZXJfc3RhdGVbNSArIDFdWzEg KyAxXVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgc3dhdGhfaGVpZ2h0X3lwZXJfc3RhdGVbNSArIDFd WzEgKyAxXVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgc3dhdGhfaGVpZ2h0X2NwZXJfc3RhdGVbNSAr IDFdWzEgKyAxXVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgdXJnZW50X2xhdGVuY3lfc3VwcG9ydF91 c19wZXJfc3RhdGVbNSArIDFdWzEgKyAxXVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgdl9yYXRpb19w cmVfeXdpdGhfaW1tZWRpYXRlX2ZsaXBbNSArIDFdWzEgKyAxXVs1ICsgMV07CjE0NDc0OiAgZmxv YXQgdl9yYXRpb19wcmVfY3dpdGhfaW1tZWRpYXRlX2ZsaXBbNSArIDFdWzEgKyAxXVs1ICsgMV07 CjE0NDc0OiAgZmxvYXQgcmVxdWlyZWRfcHJlZmV0Y2hfcGl4ZWxfZGF0YV9id193aXRoX2ltbWVk aWF0ZV9mbGlwWzUgKyAxXVsxICsgMV1bNSArIDFdOwoxNDQ3NDogIGZsb2F0IHZfcmF0aW9fcHJl X3l3aXRob3V0X2ltbWVkaWF0ZV9mbGlwWzUgKyAxXVsxICsgMV1bNSArIDFdOwoxNDQ3NDogIGZs b2F0IHZfcmF0aW9fcHJlX2N3aXRob3V0X2ltbWVkaWF0ZV9mbGlwWzUgKyAxXVsxICsgMV1bNSAr IDFdOwoxNDQ3NDogIGZsb2F0IHJlcXVpcmVkX3ByZWZldGNoX3BpeGVsX2RhdGFfYndfd2l0aG91 dF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdWzUgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9i d19kZWZzIHByZWZldGNoX3N1cHBvcnRlZF93aXRoX2ltbWVkaWF0ZV9mbGlwWzUgKyAxXVsxICsg MV07CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBwcmVmZXRjaF9zdXBwb3J0ZWRfd2l0aG91dF9p bW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgdl9y YXRpb19pbl9wcmVmZXRjaF9zdXBwb3J0ZWRfd2l0aF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSAr IDFdOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgdl9yYXRpb19pbl9wcmVmZXRjaF9zdXBwb3J0 ZWRfd2l0aG91dF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdOwoxNDQ3NDogIGZsb2F0IHJl cXVpcmVkX2Rpc3BjbGtbNSArIDFdWzEgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIGRp c3BjbGtfZHBwY2xrX3N1cHBvcnRbNSArIDFdWzEgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19k ZWZzIHRvdGFsX2F2YWlsYWJsZV9waXBlc19zdXBwb3J0WzUgKyAxXVsxICsgMV07CjE0NDc0OiAg ZmxvYXQgdG90YWxfbnVtYmVyX29mX2FjdGl2ZV9kcHBbNSArIDFdWzEgKyAxXTsKMTQ0NzQ6ICBm bG9hdCB0b3RhbF9udW1iZXJfb2ZfZGNjX2FjdGl2ZV9kcHBbNSArIDFdWzEgKyAxXTsKMTQ0NzQ6 ICBlbnVtIGRjbl9id19kZWZzIHVyZ2VudF9sYXRlbmN5X3N1cHBvcnRbNSArIDFdWzEgKyAxXTsK MTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIG1vZGVfc3VwcG9ydF93aXRoX2ltbWVkaWF0ZV9mbGlw WzUgKyAxXVsxICsgMV07CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBtb2RlX3N1cHBvcnRfd2l0 aG91dF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdOwoxNDQ3NDogIGZsb2F0IHJldHVybl9i d19wZXJfc3RhdGVbNSArIDFdOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgZGlvX3N1cHBvcnRb NSArIDFdOwoxNDQ3NDogIGZsb2F0IHVyZ2VudF9yb3VuZF90cmlwX2FuZF9vdXRfb2Zfb3JkZXJf bGF0ZW5jeV9wZXJfc3RhdGVbNSArIDFdOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgcm9iX3N1 cHBvcnRbNSArIDFdOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgYmFuZHdpZHRoX3N1cHBvcnRb NSArIDFdOwoxNDQ3NDogIGZsb2F0IHByZWZldGNoX2J3WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBt ZXRhX3B0ZV9ieXRlc19wZXJfZnJhbWVbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG1ldGFfcm93X2J5 dGVzWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBkcHRlX2J5dGVzX3Blcl9yb3dbNSArIDFdOwoxNDQ3 NDogIGZsb2F0IHByZWZldGNoX2xpbmVzX3lbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHByZWZldGNo X2xpbmVzX2NbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG1heF9udW1fc3dfeVs1ICsgMV07CjE0NDc0 OiAgZmxvYXQgbWF4X251bV9zd19jWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBsaW5lX3RpbWVzX2Zv cl9wcmVmZXRjaFs1ICsgMV07CjE0NDc0OiAgZmxvYXQgbGluZXNfZm9yX21ldGFfcHRlX3dpdGhf aW1tZWRpYXRlX2ZsaXBbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGxpbmVzX2Zvcl9tZXRhX3B0ZV93 aXRob3V0X2ltbWVkaWF0ZV9mbGlwWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBsaW5lc19mb3JfbWV0 YV9hbmRfZHB0ZV9yb3dfd2l0aF9pbW1lZGlhdGVfZmxpcFs1ICsgMV07CjE0NDc0OiAgZmxvYXQg bGluZXNfZm9yX21ldGFfYW5kX2RwdGVfcm93X3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXBbNSArIDFd OwoxNDQ3NDogIGZsb2F0IG1pbl9kcHBjbGtfdXNpbmdfc2luZ2xlX2RwcFs1ICsgMV07CjE0NDc0 OiAgZmxvYXQgc3dhdGhfd2lkdGhfeXNpbmdsZV9kcHBbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGJ5 dGVfcGVyX3BpeGVsX2luX2RldHlbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGJ5dGVfcGVyX3BpeGVs X2luX2RldGNbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG51bWJlcl9vZl9kcHBfcmVxdWlyZWRfZm9y X2RldF9hbmRfbGJfc2l6ZVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgcmVxdWlyZWRfcGh5Y2xrWzUg KyAxXTsKMTQ0NzQ6ICBmbG9hdCByZWFkMjU2X2Jsb2NrX2hlaWdodF95WzUgKyAxXTsKMTQ0NzQ6 ICBmbG9hdCByZWFkMjU2X2Jsb2NrX3dpZHRoX3lbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHJlYWQy NTZfYmxvY2tfaGVpZ2h0X2NbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHJlYWQyNTZfYmxvY2tfd2lk dGhfY1s1ICsgMV07CjE0NDc0OiAgZmxvYXQgbWF4X3N3YXRoX2hlaWdodF95WzUgKyAxXTsKMTQ0 NzQ6ICBmbG9hdCBtYXhfc3dhdGhfaGVpZ2h0X2NbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG1pbl9z d2F0aF9oZWlnaHRfeVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgbWluX3N3YXRoX2hlaWdodF9jWzUg KyAxXTsKMTQ0NzQ6ICBmbG9hdCByZWFkX2JhbmR3aWR0aFs1ICsgMV07CjE0NDc0OiAgZmxvYXQg d3JpdGVfYmFuZHdpZHRoWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBwc2NsX2ZhY3Rvcls1ICsgMV07 CjE0NDc0OiAgZmxvYXQgcHNjbF9mYWN0b3JfY2hyb21hWzUgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRj bl9id19kZWZzIHNjYWxlX3JhdGlvX3N1cHBvcnQ7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBz b3VyY2VfZm9ybWF0X3BpeGVsX2FuZF9zY2FuX3N1cHBvcnQ7CjE0NDc0OiAgZmxvYXQgdG90YWxf cmVhZF9iYW5kd2lkdGhfY29uc3VtZWRfZ2J5dGVfcGVyX3NlY29uZDsKMTQ0NzQ6ICBmbG9hdCB0 b3RhbF93cml0ZV9iYW5kd2lkdGhfY29uc3VtZWRfZ2J5dGVfcGVyX3NlY29uZDsKMTQ0NzQ6ICBm bG9hdCB0b3RhbF9iYW5kd2lkdGhfY29uc3VtZWRfZ2J5dGVfcGVyX3NlY29uZDsKMTQ0NzQ6ICBl bnVtIGRjbl9id19kZWZzIGRjY19lbmFibGVkX2luX2FueV9wbGFuZTsKMTQ0NzQ6ICBmbG9hdCBy ZXR1cm5fYndfdG9kY25fcGVyX3N0YXRlOwoxNDQ3NDogIGZsb2F0IGNyaXRpY2FsX3BvaW50Owox NDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgd3JpdGViYWNrX2xhdGVuY3lfc3VwcG9ydDsKMTQ0NzQ6 ICBmbG9hdCByZXF1aXJlZF9vdXRwdXRfYnc7CjE0NDc0OiAgZmxvYXQgdG90YWxfbnVtYmVyX29m X2FjdGl2ZV93cml0ZWJhY2s7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyB0b3RhbF9hdmFpbGFi bGVfd3JpdGViYWNrX3N1cHBvcnQ7CjE0NDc0OiAgZmxvYXQgbWF4aW11bV9zd2F0aF93aWR0aDsK MTQ0NzQ6ICBmbG9hdCBudW1iZXJfb2ZfZHBwX3JlcXVpcmVkX2Zvcl9kZXRfc2l6ZTsKMTQ0NzQ6 ICBmbG9hdCBudW1iZXJfb2ZfZHBwX3JlcXVpcmVkX2Zvcl9sYl9zaXplOwoxNDQ3NDogIGZsb2F0 IG1pbl9kaXNwY2xrX3VzaW5nX3NpbmdsZV9kcHA7CjE0NDc0OiAgZmxvYXQgbWluX2Rpc3BjbGtf dXNpbmdfZHVhbF9kcHA7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyB2aWV3cG9ydF9zaXplX3N1 cHBvcnQ7CjE0NDc0OiAgZmxvYXQgc3dhdGhfd2lkdGhfZ3JhbnVsYXJpdHlfeTsKMTQ0NzQ6ICBm bG9hdCByb3VuZGVkX3VwX21heF9zd2F0aF9zaXplX2J5dGVzX3k7CjE0NDc0OiAgZmxvYXQgc3dh dGhfd2lkdGhfZ3JhbnVsYXJpdHlfYzsKMTQ0NzQ6ICBmbG9hdCByb3VuZGVkX3VwX21heF9zd2F0 aF9zaXplX2J5dGVzX2M7CjE0NDc0OiAgZmxvYXQgbGluZXNfaW5fZGV0X2x1bWE7CjE0NDc0OiAg ZmxvYXQgbGluZXNfaW5fZGV0X2Nocm9tYTsKMTQ0NzQ6ICBmbG9hdCBlZmZlY3RpdmVfbGJfbGF0 ZW5jeV9oaWRpbmdfc291cmNlX2xpbmVzX2x1bWE7CjE0NDc0OiAgZmxvYXQgZWZmZWN0aXZlX2xi X2xhdGVuY3lfaGlkaW5nX3NvdXJjZV9saW5lc19jaHJvbWE7CjE0NDc0OiAgZmxvYXQgZWZmZWN0 aXZlX2RldGxiX2xpbmVzX2x1bWE7CjE0NDc0OiAgZmxvYXQgZWZmZWN0aXZlX2RldGxiX2xpbmVz X2Nocm9tYTsKMTQ0NzQ6ICBmbG9hdCBwcm9qZWN0ZWRfZGNmY2xrX2RlZXBfc2xlZXA7CjE0NDc0 OiAgZmxvYXQgbWV0YV9yZXFfaGVpZ2h0X3k7CjE0NDc0OiAgZmxvYXQgbWV0YV9yZXFfd2lkdGhf eTsKMTQ0NzQ6ICBmbG9hdCBtZXRhX3N1cmZhY2Vfd2lkdGhfeTsKMTQ0NzQ6ICBmbG9hdCBtZXRh X3N1cmZhY2VfaGVpZ2h0X3k7CjE0NDc0OiAgZmxvYXQgbWV0YV9wdGVfYnl0ZXNfcGVyX2ZyYW1l X3k7CjE0NDc0OiAgZmxvYXQgbWV0YV9yb3dfYnl0ZXNfeTsKMTQ0NzQ6ICBmbG9hdCBtYWNyb190 aWxlX2Jsb2NrX3NpemVfYnl0ZXNfeTsKMTQ0NzQ6ICBmbG9hdCBtYWNyb190aWxlX2Jsb2NrX2hl aWdodF95OwoxNDQ3NDogIGZsb2F0IGRhdGFfcHRlX3JlcV9oZWlnaHRfeTsKMTQ0NzQ6ICBmbG9h dCBkYXRhX3B0ZV9yZXFfd2lkdGhfeTsKMTQ0NzQ6ICBmbG9hdCBkcHRlX2J5dGVzX3Blcl9yb3df eTsKMTQ0NzQ6ICBmbG9hdCBtZXRhX3JlcV9oZWlnaHRfYzsKMTQ0NzQ6ICBmbG9hdCBtZXRhX3Jl cV93aWR0aF9jOwoxNDQ3NDogIGZsb2F0IG1ldGFfc3VyZmFjZV93aWR0aF9jOwoxNDQ3NDogIGZs b2F0IG1ldGFfc3VyZmFjZV9oZWlnaHRfYzsKMTQ0NzQ6ICBmbG9hdCBtZXRhX3B0ZV9ieXRlc19w ZXJfZnJhbWVfYzsKMTQ0NzQ6ICBmbG9hdCBtZXRhX3Jvd19ieXRlc19jOwoxNDQ3NDogIGZsb2F0 IG1hY3JvX3RpbGVfYmxvY2tfc2l6ZV9ieXRlc19jOwoxNDQ3NDogIGZsb2F0IG1hY3JvX3RpbGVf YmxvY2tfaGVpZ2h0X2M7CjE0NDc0OiAgZmxvYXQgbWFjcm9fdGlsZV9ibG9ja193aWR0aF9jOwox NDQ3NDogIGZsb2F0IGRhdGFfcHRlX3JlcV9oZWlnaHRfYzsKMTQ0NzQ6ICBmbG9hdCBkYXRhX3B0 ZV9yZXFfd2lkdGhfYzsKMTQ0NzQ6ICBmbG9hdCBkcHRlX2J5dGVzX3Blcl9yb3dfYzsKMTQ0NzQ6 ICBmbG9hdCB2X2luaXRfeTsKMTQ0NzQ6ICBmbG9hdCBtYXhfcGFydGlhbF9zd195OwoxNDQ3NDog IGZsb2F0IHZfaW5pdF9jOwoxNDQ3NDogIGZsb2F0IG1heF9wYXJ0aWFsX3N3X2M7CjE0NDc0OiAg ZmxvYXQgZHN0X3hfYWZ0ZXJfc2NhbGVyOwoxNDQ3NDogIGZsb2F0IGRzdF95X2FmdGVyX3NjYWxl cjsKMTQ0NzQ6ICBmbG9hdCB0aW1lX2NhbGM7CjE0NDc0OiAgZmxvYXQgdl91cGRhdGVfb2Zmc2V0 WzUgKyAxXVsyXTsKMTQ0NzQ6ICBmbG9hdCB0b3RhbF9yZXBlYXRlcl9kZWxheTsKMTQ0NzQ6ICBm bG9hdCB2X3VwZGF0ZV93aWR0aFs1ICsgMV1bMl07CjE0NDc0OiAgZmxvYXQgdl9yZWFkeV9vZmZz ZXRbNSArIDFdWzJdOwoxNDQ3NDogIGZsb2F0IHRpbWVfc2V0dXA7CjE0NDc0OiAgZmxvYXQgZXh0 cmFfbGF0ZW5jeTsKMTQ0NzQ6ICBmbG9hdCBtYXhpbXVtX3ZzdGFydHVwOwoxNDQ3NDogIGZsb2F0 IGJ3X2F2YWlsYWJsZV9mb3JfaW1tZWRpYXRlX2ZsaXA7CjE0NDc0OiAgZmxvYXQgdG90YWxfaW1t ZWRpYXRlX2ZsaXBfYnl0ZXNbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHRpbWVfZm9yX21ldGFfcHRl X3dpdGhfaW1tZWRpYXRlX2ZsaXA7CjE0NDc0OiAgZmxvYXQgdGltZV9mb3JfbWV0YV9wdGVfd2l0 aG91dF9pbW1lZGlhdGVfZmxpcDsKMTQ0NzQ6ICBmbG9hdCB0aW1lX2Zvcl9tZXRhX2FuZF9kcHRl X3Jvd193aXRoX2ltbWVkaWF0ZV9mbGlwOwoxNDQ3NDogIGZsb2F0IHRpbWVfZm9yX21ldGFfYW5k X2RwdGVfcm93X3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXA7CjE0NDc0OiAgZmxvYXQgbGluZV90aW1l c190b19yZXF1ZXN0X3ByZWZldGNoX3BpeGVsX2RhdGFfd2l0aF9pbW1lZGlhdGVfZmxpcDsKMTQ0 NzQ6ICBmbG9hdCBsaW5lX3RpbWVzX3RvX3JlcXVlc3RfcHJlZmV0Y2hfcGl4ZWxfZGF0YV93aXRo b3V0X2ltbWVkaWF0ZV9mbGlwOwoxNDQ3NDogIGZsb2F0IG1heGltdW1fcmVhZF9iYW5kd2lkdGhf d2l0aF9wcmVmZXRjaF93aXRoX2ltbWVkaWF0ZV9mbGlwOwoxNDQ3NDogIGZsb2F0IG1heGltdW1f cmVhZF9iYW5kd2lkdGhfd2l0aF9wcmVmZXRjaF93aXRob3V0X2ltbWVkaWF0ZV9mbGlwOwoxNDQ3 NDogIGZsb2F0IHZvbHRhZ2VfbGV2ZWxfd2l0aF9pbW1lZGlhdGVfZmxpcDsKMTQ0NzQ6ICBmbG9h dCB2b2x0YWdlX2xldmVsX3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXA7CjE0NDc0OiAgZmxvYXQgdG90 YWxfbnVtYmVyX29mX2FjdGl2ZV9kcHBfcGVyX3JhdGlvWzEgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBi eXRlX3Blcl9waXhfZGV0eTsKMTQ0NzQ6ICBmbG9hdCBieXRlX3Blcl9waXhfZGV0YzsKMTQ0NzQ6 ICBmbG9hdCByZWFkMjU2X2J5dGVzX2Jsb2NrX2hlaWdodF95OwoxNDQ3NDogIGZsb2F0IHJlYWQy NTZfYnl0ZXNfYmxvY2tfd2lkdGhfeTsKMTQ0NzQ6ICBmbG9hdCByZWFkMjU2X2J5dGVzX2Jsb2Nr X2hlaWdodF9jOwoxNDQ3NDogIGZsb2F0IHJlYWQyNTZfYnl0ZXNfYmxvY2tfd2lkdGhfYzsKMTQ0 NzQ6ICBmbG9hdCBtYXhpbXVtX3N3YXRoX2hlaWdodF95OwoxNDQ3NDogIGZsb2F0IG1heGltdW1f c3dhdGhfaGVpZ2h0X2M7CjE0NDc0OiAgZmxvYXQgbWluaW11bV9zd2F0aF9oZWlnaHRfeTsKMTQ0 NzQ6ICBmbG9hdCBtaW5pbXVtX3N3YXRoX2hlaWdodF9jOwoxNDQ3NDogIGZsb2F0IHN3YXRoX3dp ZHRoOwoxNDQ3NDogIGZsb2F0IHByZWZldGNoX2JhbmR3aWR0aFs1ICsgMV07CjE0NDc0OiAgZmxv YXQgdl9pbml0X3ByZV9maWxsX3lbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHZfaW5pdF9wcmVfZmls bF9jWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBtYXhfbnVtX3N3YXRoX3lbNSArIDFdOwoxNDQ3NDog IGZsb2F0IG1heF9udW1fc3dhdGhfY1s1ICsgMV07CjE0NDc0OiAgZmxvYXQgcHJlZmlsbF95WzUg KyAxXTsKMTQ0NzQ6ICBmbG9hdCBwcmVmaWxsX2NbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHZfc3Rh cnR1cFs1ICsgMV07CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBhbGxvd19kcmFtX2Nsb2NrX2No YW5nZV9kdXJpbmdfdmJsYW5rWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBhbGxvd19kcmFtX3NlbGZf cmVmcmVzaF9kdXJpbmdfdmJsYW5rWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB2X3JhdGlvX3ByZWZl dGNoX3lbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHZfcmF0aW9fcHJlZmV0Y2hfY1s1ICsgMV07CjE0 NDc0OiAgZmxvYXQgZGVzdGluYXRpb25fbGluZXNfZm9yX3ByZWZldGNoWzUgKyAxXTsKMTQ0NzQ6 ICBmbG9hdCBkZXN0aW5hdGlvbl9saW5lc190b19yZXF1ZXN0X3ZtX2ludl9ibGFua1s1ICsgMV07 CjE0NDc0OiAgZmxvYXQgZGVzdGluYXRpb25fbGluZXNfdG9fcmVxdWVzdF9yb3dfaW5fdmJsYW5r WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBtaW5fdHR1dl9ibGFua1s1ICsgMV07CjE0NDc0OiAgZmxv YXQgYnl0ZV9wZXJfcGl4ZWxfZGV0eVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgYnl0ZV9wZXJfcGl4 ZWxfZGV0Y1s1ICsgMV07CjE0NDc0OiAgZmxvYXQgc3dhdGhfd2lkdGhfeVs1ICsgMV07CjE0NDc0 OiAgZmxvYXQgbGluZXNfaW5fZGV0eVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgbGluZXNfaW5fZGV0 eV9yb3VuZGVkX2Rvd25fdG9fc3dhdGhbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGxpbmVzX2luX2Rl dGNbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGxpbmVzX2luX2RldGNfcm91bmRlZF9kb3duX3RvX3N3 YXRoWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBmdWxsX2RldF9idWZmZXJpbmdfdGltZV95WzUgKyAx XTsKMTQ0NzQ6ICBmbG9hdCBmdWxsX2RldF9idWZmZXJpbmdfdGltZV9jWzUgKyAxXTsKMTQ0NzQ6 ICBmbG9hdCBhY3RpdmVfZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5jeV9tYXJnaW5bNSArIDFdOwox NDQ3NDogIGZsb2F0IHZfYmxhbmtfZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5jeV9tYXJnaW5bNSAr IDFdOwoxNDQ3NDogIGZsb2F0IGRjZmNsa19kZWVwX3NsZWVwX3Blcl9wbGFuZVs1ICsgMV07CjE0 NDc0OiAgZmxvYXQgcmVhZF9iYW5kd2lkdGhfcGxhbmVfbHVtYVs1ICsgMV07CjE0NDc0OiAgZmxv YXQgcmVhZF9iYW5kd2lkdGhfcGxhbmVfY2hyb21hWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBkaXNw bGF5X3BpcGVfbGluZV9kZWxpdmVyeV90aW1lX2x1bWFbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGRp c3BsYXlfcGlwZV9saW5lX2RlbGl2ZXJ5X3RpbWVfY2hyb21hWzUgKyAxXTsKMTQ0NzQ6ICBmbG9h dCBkaXNwbGF5X3BpcGVfbGluZV9kZWxpdmVyeV90aW1lX2x1bWFfcHJlZmV0Y2hbNSArIDFdOwox NDQ3NDogIGZsb2F0IGRpc3BsYXlfcGlwZV9saW5lX2RlbGl2ZXJ5X3RpbWVfY2hyb21hX3ByZWZl dGNoWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBwaXhlbF9wdGVfYnl0ZXNfcGVyX3Jvd1s1ICsgMV07 CjE0NDc0OiAgZmxvYXQgbWV0YV9wdGVfYnl0ZXNfZnJhbWVbNSArIDFdOwoxNDQ3NDogIGZsb2F0 IG1ldGFfcm93X2J5dGVbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHByZWZldGNoX3NvdXJjZV9saW5l c195WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBwcmVmZXRjaF9zb3VyY2VfbGluZXNfY1s1ICsgMV07 CjE0NDc0OiAgZmxvYXQgcHNjbF90aHJvdWdocHV0WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBwc2Ns X3Rocm91Z2hwdXRfY2hyb21hWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBvdXRwdXRfYnBwaGRtaVs1 ICsgMV07CjE0NDc0OiAgZmxvYXQgb3V0cHV0X2JwcGRwNF9sYW5lX2hicls1ICsgMV07CjE0NDc0 OiAgZmxvYXQgb3V0cHV0X2JwcGRwNF9sYW5lX2hicjJbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG91 dHB1dF9icHBkcDRfbGFuZV9oYnIzWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBtYXhfdnN0YXJ0dXBf bGluZXNbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGRpc3BjbGtfd2l0aF9yYW1waW5nOwoxNDQ3NDog IGZsb2F0IGRpc3BjbGtfd2l0aG91dF9yYW1waW5nOwoxNDQ3NDogIGZsb2F0IGRwcGNsa191c2lu Z19zaW5nbGVfZHBwX2x1bWE7CjE0NDc0OiAgZmxvYXQgZHBwY2xrX3VzaW5nX3NpbmdsZV9kcHA7 CjE0NDc0OiAgZmxvYXQgZHBwY2xrX3VzaW5nX3NpbmdsZV9kcHBfY2hyb21hOwoxNDQ3NDogIGVu dW0gZGNuX2J3X2RlZnMgb2RtX2NhcGFibGU7CjE0NDc0OiAgZmxvYXQgZGlzcGNsazsKMTQ0NzQ6 ICBmbG9hdCBkcHBjbGs7CjE0NDc0OiAgZmxvYXQgcmV0dXJuX2JhbmR3aWR0aF90b19kY247CjE0 NDc0OiAgZW51bSBkY25fYndfZGVmcyBkY2NfZW5hYmxlZF9hbnlfcGxhbmU7CjE0NDc0OiAgZmxv YXQgcmV0dXJuX2J3OwoxNDQ3NDogIGZsb2F0IGNyaXRpY2FsX2NvbXByZXNzaW9uOwoxNDQ3NDog IGZsb2F0IHRvdGFsX2RhdGFfcmVhZF9iYW5kd2lkdGg7CjE0NDc0OiAgZmxvYXQgdG90YWxfYWN0 aXZlX2RwcDsKMTQ0NzQ6ICBmbG9hdCB0b3RhbF9kY2NfYWN0aXZlX2RwcDsKMTQ0NzQ6ICBmbG9h dCB1cmdlbnRfcm91bmRfdHJpcF9hbmRfb3V0X29mX29yZGVyX2xhdGVuY3k7CjE0NDc0OiAgZmxv YXQgbGFzdF9waXhlbF9vZl9saW5lX2V4dHJhX3dhdGVybWFyazsKMTQ0NzQ6ICBmbG9hdCBkYXRh X2ZhYnJpY19saW5lX2RlbGl2ZXJ5X3RpbWVfbHVtYTsKMTQ0NzQ6ICBmbG9hdCBkYXRhX2ZhYnJp Y19saW5lX2RlbGl2ZXJ5X3RpbWVfY2hyb21hOwoxNDQ3NDogIGZsb2F0IHVyZ2VudF9leHRyYV9s YXRlbmN5OwoxNDQ3NDogIGZsb2F0IHVyZ2VudF93YXRlcm1hcms7CjE0NDc0OiAgZmxvYXQgcHRl bWV0YV91cmdlbnRfd2F0ZXJtYXJrOwoxNDQ3NDogIGZsb2F0IGRyYW1fY2xvY2tfY2hhbmdlX3dh dGVybWFyazsKMTQ0NzQ6ICBmbG9hdCB0b3RhbF9hY3RpdmVfd3JpdGViYWNrOwoxNDQ3NDogIGZs b2F0IHdyaXRlYmFja19kcmFtX2Nsb2NrX2NoYW5nZV93YXRlcm1hcms7CjE0NDc0OiAgZmxvYXQg bWluX2Z1bGxfZGV0X2J1ZmZlcmluZ190aW1lOwoxNDQ3NDogIGZsb2F0IGZyYW1lX3RpbWVfZm9y X21pbl9mdWxsX2RldF9idWZmZXJpbmdfdGltZTsKMTQ0NzQ6ICBmbG9hdCBhdmVyYWdlX3JlYWRf YmFuZHdpZHRoX2dieXRlX3Blcl9zZWNvbmQ7CjE0NDc0OiAgZmxvYXQgcGFydF9vZl9idXJzdF90 aGF0X2ZpdHNfaW5fcm9iOwoxNDQ3NDogIGZsb2F0IHN0dXR0ZXJfYnVyc3RfdGltZTsKMTQ0NzQ6 ICBmbG9hdCBzdHV0dGVyX2VmZmljaWVuY3lfbm90X2luY2x1ZGluZ192Ymxhbms7CjE0NDc0OiAg ZmxvYXQgc21hbGxlc3RfdmJsYW5rOwoxNDQ3NDogIGZsb2F0IHZfYmxhbmtfdGltZTsKMTQ0NzQ6 ICBmbG9hdCBzdHV0dGVyX2VmZmljaWVuY3k7CjE0NDc0OiAgZmxvYXQgZGNmX2Nsa19kZWVwX3Ns ZWVwOwoxNDQ3NDogIGZsb2F0IHN0dXR0ZXJfZXhpdF93YXRlcm1hcms7CjE0NDc0OiAgZmxvYXQg c3R1dHRlcl9lbnRlcl9wbHVzX2V4aXRfd2F0ZXJtYXJrOwoxNDQ3NDogIGZsb2F0IGVmZmVjdGl2 ZV9kZXRfcGx1c19sYl9saW5lc19sdW1hOwoxNDQ3NDogIGZsb2F0IHVyZ2VudF9sYXRlbmN5X3N1 cHBvcnRfdXNfbHVtYTsKMTQ0NzQ6ICBmbG9hdCBlZmZlY3RpdmVfZGV0X3BsdXNfbGJfbGluZXNf Y2hyb21hOwoxNDQ3NDogIGZsb2F0IHVyZ2VudF9sYXRlbmN5X3N1cHBvcnRfdXNfY2hyb21hOwox NDQ3NDogIGZsb2F0IG1pbl91cmdlbnRfbGF0ZW5jeV9zdXBwb3J0X3VzOwoxNDQ3NDogIGZsb2F0 IG5vbl91cmdlbnRfbGF0ZW5jeV90b2xlcmFuY2U7CjE0NDc0OiAgZmxvYXQgYmxvY2tfaGVpZ2h0 MjU2X2J5dGVzX3k7CjE0NDc0OiAgZmxvYXQgYmxvY2tfaGVpZ2h0MjU2X2J5dGVzX2M7CjE0NDc0 OiAgZmxvYXQgbWV0YV9yZXF1ZXN0X3dpZHRoX3k7CjE0NDc0OiAgZmxvYXQgbWV0YV9zdXJmX3dp ZHRoX3k7CjE0NDc0OiAgZmxvYXQgbWV0YV9zdXJmX2hlaWdodF95OwoxNDQ3NDogIGZsb2F0IG1l dGFfcHRlX2J5dGVzX2ZyYW1lX3k7CjE0NDc0OiAgZmxvYXQgbWV0YV9yb3dfYnl0ZV95OwoxNDQ3 NDogIGZsb2F0IG1hY3JvX3RpbGVfc2l6ZV9ieXRlX3k7CjE0NDc0OiAgZmxvYXQgbWFjcm9fdGls ZV9oZWlnaHRfeTsKMTQ0NzQ6ICBmbG9hdCBwaXhlbF9wdGVfcmVxX2hlaWdodF95OwoxNDQ3NDog IGZsb2F0IHBpeGVsX3B0ZV9yZXFfd2lkdGhfeTsKMTQ0NzQ6ICBmbG9hdCBwaXhlbF9wdGVfYnl0 ZXNfcGVyX3Jvd195OwoxNDQ3NDogIGZsb2F0IG1ldGFfcmVxdWVzdF93aWR0aF9jOwoxNDQ3NDog IGZsb2F0IG1ldGFfc3VyZl93aWR0aF9jOwoxNDQ3NDogIGZsb2F0IG1ldGFfc3VyZl9oZWlnaHRf YzsKMTQ0NzQ6ICBmbG9hdCBtZXRhX3B0ZV9ieXRlc19mcmFtZV9jOwoxNDQ3NDogIGZsb2F0IG1l dGFfcm93X2J5dGVfYzsKMTQ0NzQ6ICBmbG9hdCBtYWNyb190aWxlX3NpemVfYnl0ZXNfYzsKMTQ0 NzQ6ICBmbG9hdCBtYWNyb190aWxlX2hlaWdodF9jOwoxNDQ3NDogIGZsb2F0IHBpeGVsX3B0ZV9y ZXFfaGVpZ2h0X2M7CjE0NDc0OiAgZmxvYXQgcGl4ZWxfcHRlX3JlcV93aWR0aF9jOwoxNDQ3NDog IGZsb2F0IHBpeGVsX3B0ZV9ieXRlc19wZXJfcm93X2M7CjE0NDc0OiAgZmxvYXQgbWF4X3BhcnRp YWxfc3dhdGhfeTsKMTQ0NzQ6ICBmbG9hdCBtYXhfcGFydGlhbF9zd2F0aF9jOwoxNDQ3NDogIGZs b2F0IHRfY2FsYzsKMTQ0NzQ6ICBmbG9hdCBuZXh0X3ByZWZldGNoX21vZGU7CjE0NDc0OiAgZmxv YXQgdl9zdGFydHVwX2xpbmVzOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgcGxhbmVzX3dpdGhf cm9vbV90b19pbmNyZWFzZV92c3RhcnR1cF9wcmVmZXRjaF9id19sZXNzX3RoYW5fYWN0aXZlX2J3 OwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgcGxhbmVzX3dpdGhfcm9vbV90b19pbmNyZWFzZV92 c3RhcnR1cF92cmF0aW9fcHJlZmV0Y2hfbW9yZV90aGFuNDsKMTQ0NzQ6ICBlbnVtIGRjbl9id19k ZWZzIHBsYW5lc193aXRoX3Jvb21fdG9faW5jcmVhc2VfdnN0YXJ0dXBfZGVzdGluYXRpb25fbGlu ZV90aW1lc19mb3JfcHJlZmV0Y2hfbGVzc190aGFuMjsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZz IHZfcmF0aW9fcHJlZmV0Y2hfbW9yZV90aGFuNDsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIGRl c3RpbmF0aW9uX2xpbmVfdGltZXNfZm9yX3ByZWZldGNoX2xlc3NfdGhhbjI7CjE0NDc0OiAgZmxv YXQgcHJlZmV0Y2hfbW9kZTsKMTQ0NzQ6ICBmbG9hdCBkc3R4X2FmdGVyX3NjYWxlcjsKMTQ0NzQ6 ICBmbG9hdCBkc3R5X2FmdGVyX3NjYWxlcjsKMTQ0NzQ6ICBmbG9hdCB2X3VwZGF0ZV9vZmZzZXRf cGl4WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB0b3RhbF9yZXBlYXRlcl9kZWxheV90aW1lOwoxNDQ3 NDogIGZsb2F0IHZfdXBkYXRlX3dpZHRoX3BpeFs1ICsgMV07CjE0NDc0OiAgZmxvYXQgdl9yZWFk eV9vZmZzZXRfcGl4WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB0X3NldHVwOwoxNDQ3NDogIGZsb2F0 IHRfd2FpdDsKMTQ0NzQ6ICBmbG9hdCBiYW5kd2lkdGhfYXZhaWxhYmxlX2Zvcl9pbW1lZGlhdGVf ZmxpcDsKMTQ0NzQ6ICBmbG9hdCB0b3RfaW1tZWRpYXRlX2ZsaXBfYnl0ZXM7CjE0NDc0OiAgZmxv YXQgbWF4X3JkX2JhbmR3aWR0aDsKMTQ0NzQ6ICBmbG9hdCB0aW1lX2Zvcl9mZXRjaGluZ19tZXRh X3B0ZTsKMTQ0NzQ6ICBmbG9hdCB0aW1lX2Zvcl9mZXRjaGluZ19yb3dfaW5fdmJsYW5rOwoxNDQ3 NDogIGZsb2F0IGxpbmVzX3RvX3JlcXVlc3RfcHJlZmV0Y2hfcGl4ZWxfZGF0YTsKMTQ0NzQ6ICBm bG9hdCByZXF1aXJlZF9wcmVmZXRjaF9waXhfZGF0YV9idzsKMTQ0NzQ6ICBlbnVtIGRjbl9id19k ZWZzIHByZWZldGNoX21vZGVfc3VwcG9ydGVkOwoxNDQ3NDogIGZsb2F0IGFjdGl2ZV9kcF9wczsK MTQ0NzQ6ICBmbG9hdCBsYl9sYXRlbmN5X2hpZGluZ19zb3VyY2VfbGluZXNfeTsKMTQ0NzQ6ICBm bG9hdCBsYl9sYXRlbmN5X2hpZGluZ19zb3VyY2VfbGluZXNfYzsKMTQ0NzQ6ICBmbG9hdCBlZmZl Y3RpdmVfbGJfbGF0ZW5jeV9oaWRpbmdfeTsKMTQ0NzQ6ICBmbG9hdCBlZmZlY3RpdmVfbGJfbGF0 ZW5jeV9oaWRpbmdfYzsKMTQ0NzQ6ICBmbG9hdCBkcHBfb3V0cHV0X2J1ZmZlcl9saW5lc195Owox NDQ3NDogIGZsb2F0IGRwcF9vdXRwdXRfYnVmZmVyX2xpbmVzX2M7CjE0NDc0OiAgZmxvYXQgZHBw b3BwX2J1ZmZlcmluZ195OwoxNDQ3NDogIGZsb2F0IG1heF9kZXRfYnVmZmVyaW5nX3RpbWVfeTsK MTQ0NzQ6ICBmbG9hdCBhY3RpdmVfZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5jeV9tYXJnaW5feTsK MTQ0NzQ6ICBmbG9hdCBkcHBvcHBfYnVmZmVyaW5nX2M7CjE0NDc0OiAgZmxvYXQgbWF4X2RldF9i dWZmZXJpbmdfdGltZV9jOwoxNDQ3NDogIGZsb2F0IGFjdGl2ZV9kcmFtX2Nsb2NrX2NoYW5nZV9s YXRlbmN5X21hcmdpbl9jOwoxNDQ3NDogIGZsb2F0IHdyaXRlYmFja19kcmFtX2Nsb2NrX2NoYW5n ZV9sYXRlbmN5X21hcmdpbjsKMTQ0NzQ6ICBmbG9hdCBtaW5fYWN0aXZlX2RyYW1fY2xvY2tfY2hh bmdlX21hcmdpbjsKMTQ0NzQ6ICBmbG9hdCB2X2JsYW5rX29mX21pbl9hY3RpdmVfZHJhbV9jbG9j a19jaGFuZ2VfbWFyZ2luOwoxNDQ3NDogIGZsb2F0IHNlY29uZF9taW5fYWN0aXZlX2RyYW1fY2xv Y2tfY2hhbmdlX21hcmdpbjsKMTQ0NzQ6ICBmbG9hdCBtaW5fdmJsYW5rX2RyYW1fY2xvY2tfY2hh bmdlX21hcmdpbjsKMTQ0NzQ6ICBmbG9hdCBkcmFtX2Nsb2NrX2NoYW5nZV9tYXJnaW47CjE0NDc0 OiAgZmxvYXQgZHJhbV9jbG9ja19jaGFuZ2Vfc3VwcG9ydDsKMTQ0NzQ6ICBmbG9hdCB3cl9iYW5k d2lkdGg7CjE0NDc0OiAgZmxvYXQgbWF4X3VzZWRfYnc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZGNuX3NvY19ib3VuZGluZ19ib3ggewoxNDQ3NDogIGZsb2F0IHNyX2V4aXRfdGlt ZTsKMTQ0NzQ6ICBmbG9hdCBzcl9lbnRlcl9wbHVzX2V4aXRfdGltZTsKMTQ0NzQ6ICBmbG9hdCB1 cmdlbnRfbGF0ZW5jeTsKMTQ0NzQ6ICBmbG9hdCB3cml0ZV9iYWNrX2xhdGVuY3k7CjE0NDc0OiAg ZmxvYXQgcGVyY2VudF9vZl9pZGVhbF9kcmFtYndfcmVjZWl2ZWRfYWZ0ZXJfdXJnX2xhdGVuY3k7 CjE0NDc0OiAgaW50IG1heF9yZXF1ZXN0X3NpemU7CjE0NDc0OiAgZmxvYXQgZGNmY2xrdl9tYXgw cDk7CjE0NDc0OiAgZmxvYXQgZGNmY2xrdl9ub20wcDg7CjE0NDc0OiAgZmxvYXQgZGNmY2xrdl9t aWQwcDcyOwoxNDQ3NDogIGZsb2F0IGRjZmNsa3ZfbWluMHA2NTsKMTQ0NzQ6ICBmbG9hdCBtYXhf ZGlzcGNsa192bWF4MHA5OwoxNDQ3NDogIGZsb2F0IG1heF9kaXNwY2xrX3ZtaWQwcDcyOwoxNDQ3 NDogIGZsb2F0IG1heF9kaXNwY2xrX3Zub20wcDg7CjE0NDc0OiAgZmxvYXQgbWF4X2Rpc3BjbGtf dm1pbjBwNjU7CjE0NDc0OiAgZmxvYXQgbWF4X2RwcGNsa192bWF4MHA5OwoxNDQ3NDogIGZsb2F0 IG1heF9kcHBjbGtfdm5vbTBwODsKMTQ0NzQ6ICBmbG9hdCBtYXhfZHBwY2xrX3ZtaWQwcDcyOwox NDQ3NDogIGZsb2F0IG1heF9kcHBjbGtfdm1pbjBwNjU7CjE0NDc0OiAgZmxvYXQgc29jY2xrOwox NDQ3NDogIGZsb2F0IGZhYnJpY19hbmRfZHJhbV9iYW5kd2lkdGhfdm1heDBwOTsKMTQ0NzQ6ICBm bG9hdCBmYWJyaWNfYW5kX2RyYW1fYmFuZHdpZHRoX3Zub20wcDg7CjE0NDc0OiAgZmxvYXQgZmFi cmljX2FuZF9kcmFtX2JhbmR3aWR0aF92bWlkMHA3MjsKMTQ0NzQ6ICBmbG9hdCBmYWJyaWNfYW5k X2RyYW1fYmFuZHdpZHRoX3ZtaW4wcDY1OwoxNDQ3NDogIGZsb2F0IHBoeWNsa3ZfbWF4MHA5Owox NDQ3NDogIGZsb2F0IHBoeWNsa3Zfbm9tMHA4OwoxNDQ3NDogIGZsb2F0IHBoeWNsa3ZfbWlkMHA3 MjsKMTQ0NzQ6ICBmbG9hdCBwaHljbGt2X21pbjBwNjU7CjE0NDc0OiAgZmxvYXQgZG93bnNwcmVh ZGluZzsKMTQ0NzQ6ICBpbnQgcm91bmRfdHJpcF9waW5nX2xhdGVuY3lfY3ljbGVzOwoxNDQ3NDog IGludCB1cmdlbnRfb3V0X29mX29yZGVyX3JldHVybl9wZXJfY2hhbm5lbDsKMTQ0NzQ6ICBpbnQg bnVtYmVyX29mX2NoYW5uZWxzOwoxNDQ3NDogIGludCB2bW1fcGFnZV9zaXplOwoxNDQ3NDogIGZs b2F0IGRyYW1fY2xvY2tfY2hhbmdlX2xhdGVuY3k7CjE0NDc0OiAgaW50IHJldHVybl9idXNfd2lk dGg7CjE0NDc0OiAgZmxvYXQgcGVyY2VudF9kaXNwX2J3X2xpbWl0OwoxNDQ3NDogfTsKMTQ0NzQ6 IGV4dGVybiBjb25zdCBzdHJ1Y3QgZGNuX3NvY19ib3VuZGluZ19ib3ggZGNuMTBfc29jX2RlZmF1 bHRzOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNuX2lwX3BhcmFtcyB7CjE0NDc0OiAgZmxvYXQg cm9iX2J1ZmZlcl9zaXplX2luX2tieXRlOwoxNDQ3NDogIGZsb2F0IGRldF9idWZmZXJfc2l6ZV9p bl9rYnl0ZTsKMTQ0NzQ6ICBmbG9hdCBkcHBfb3V0cHV0X2J1ZmZlcl9waXhlbHM7CjE0NDc0OiAg ZmxvYXQgb3BwX291dHB1dF9idWZmZXJfbGluZXM7CjE0NDc0OiAgZmxvYXQgcGl4ZWxfY2h1bmtf c2l6ZV9pbl9rYnl0ZTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIHB0ZV9lbmFibGU7CjE0NDc0 OiAgaW50IHB0ZV9jaHVua19zaXplOwoxNDQ3NDogIGludCBtZXRhX2NodW5rX3NpemU7CjE0NDc0 OiAgaW50IHdyaXRlYmFja19jaHVua19zaXplOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgb2Rt X2NhcGFiaWxpdHk7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBkc2NfY2FwYWJpbGl0eTsKMTQ0 NzQ6ICBpbnQgbGluZV9idWZmZXJfc2l6ZTsKMTQ0NzQ6ICBpbnQgbWF4X2xpbmVfYnVmZmVyX2xp bmVzOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgaXNfbGluZV9idWZmZXJfYnBwX2ZpeGVkOwox NDQ3NDogIGludCBsaW5lX2J1ZmZlcl9maXhlZF9icHA7CjE0NDc0OiAgaW50IHdyaXRlYmFja19s dW1hX2J1ZmZlcl9zaXplOwoxNDQ3NDogIGludCB3cml0ZWJhY2tfY2hyb21hX2J1ZmZlcl9zaXpl OwoxNDQ3NDogIGludCBtYXhfbnVtX2RwcDsKMTQ0NzQ6ICBpbnQgbWF4X251bV93cml0ZWJhY2s7 CjE0NDc0OiAgaW50IG1heF9kY2h1Yl90b3BzY2xfdGhyb3VnaHB1dDsKMTQ0NzQ6ICBpbnQgbWF4 X3BzY2xfdG9sYl90aHJvdWdocHV0OwoxNDQ3NDogIGludCBtYXhfbGJfdG92c2NsX3Rocm91Z2hw dXQ7CjE0NDc0OiAgaW50IG1heF92c2NsX3RvaHNjbF90aHJvdWdocHV0OwoxNDQ3NDogIGZsb2F0 IG1heF9oc2NsX3JhdGlvOwoxNDQ3NDogIGZsb2F0IG1heF92c2NsX3JhdGlvOwoxNDQ3NDogIGlu dCBtYXhfaHNjbF90YXBzOwoxNDQ3NDogIGludCBtYXhfdnNjbF90YXBzOwoxNDQ3NDogIGludCBw dGVfYnVmZmVyX3NpemVfaW5fcmVxdWVzdHM7CjE0NDc0OiAgZmxvYXQgZGlzcGNsa19yYW1waW5n X21hcmdpbjsKMTQ0NzQ6ICBmbG9hdCB1bmRlcl9zY2FuX2ZhY3RvcjsKMTQ0NzQ6ICBpbnQgbWF4 X2ludGVyX2Rjbl90aWxlX3JlcGVhdGVyczsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIGNhbl92 c3RhcnR1cF9saW5lc19leGNlZWRfdnN5bmNfcGx1c19iYWNrX3BvcmNoX2xpbmVzX21pbnVzX29u ZTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIGJ1Z19mb3JjaW5nX2x1bWFfYW5kX2Nocm9tYV9y ZXF1ZXN0X3RvX3NhbWVfc2l6ZV9maXhlZDsKMTQ0NzQ6ICBpbnQgZGNmY2xrX2NzdGF0ZV9sYXRl bmN5OwoxNDQ3NDogfTsKMTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgZGNuX2lwX3BhcmFtcyBk Y24xMF9pcF9kZWZhdWx0czsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY25fdmFsaWRhdGVfYmFuZHdp ZHRoKAoxNDQ3NDogICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNv bnRleHQsCjE0NDc0OiAgIGJvb2wgZmFzdF92YWxpZGF0ZSk7CjE0NDc0OiAKMTQ0NzQ6IHVuc2ln bmVkIGludCBkY25fZmluZF9kY2ZjbGtfc3VpdHNfYWxsKAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBk YyAqZGMsCjE0NDc0OiAgc3RydWN0IGRjX2Nsb2NrcyAqY2xvY2tzKTsKMTQ0NzQ6IAoxNDQ3NDog dm9pZCBkY25fYndfdXBkYXRlX2Zyb21fcHBsaWIoc3RydWN0IGRjICpkYyk7CjE0NDc0OiB2b2lk IGRjbl9id19ub3RpZnlfcHBsaWJfb2Zfd21fcmFuZ2VzKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDog dm9pZCBkY25fYndfc3luY19jYWxjc19hbmRfZG1sKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogCjE0 NDc0OiBlbnVtIHNvdXJjZV9tYWNyb190aWxlX3NpemUgc3dpenpsZV9tb2RlX3RvX21hY3JvX3Rp bGVfc2l6ZShlbnVtIHN3aXp6bGVfbW9kZV92YWx1ZXMgc3dfbW9kZSk7CjE0NDc0OiAjIDMyICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMu aCIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv aW5jbHVkZS9kZGNfc2VydmljZV90eXBlcy5oIiAxCjE0NDc0OiAjIDM3ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9kZGNfc2VydmljZV90eXBlcy5oIgox NDQ3NDogZW51bSBkZGNfcmVzdWx0IHsKMTQ0NzQ6ICBERENfUkVTVUxUX1VOS05PV04gPSAwLAox NDQ3NDogIEREQ19SRVNVTFRfU1VDRVNTRlVMTCwKMTQ0NzQ6ICBERENfUkVTVUxUX0ZBSUxFRF9D SEFOTkVMX0JVU1ksCjE0NDc0OiAgRERDX1JFU1VMVF9GQUlMRURfVElNRU9VVCwKMTQ0NzQ6ICBE RENfUkVTVUxUX0ZBSUxFRF9QUk9UT0NPTF9FUlJPUiwKMTQ0NzQ6ICBERENfUkVTVUxUX0ZBSUxF RF9OQUNLLAoxNDQ3NDogIEREQ19SRVNVTFRfRkFJTEVEX0lOQ09NUExFVEUsCjE0NDc0OiAgRERD X1JFU1VMVF9GQUlMRURfT1BFUkFUSU9OLAoxNDQ3NDogIEREQ19SRVNVTFRfRkFJTEVEX0lOVkFM SURfT1BFUkFUSU9OLAoxNDQ3NDogIEREQ19SRVNVTFRfRkFJTEVEX0JVRkZFUl9PVkVSRkxPVywK MTQ0NzQ6ICBERENfUkVTVUxUX0ZBSUxFRF9IUERfRElTQ09OCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBlbnVtIGRkY19zZXJ2aWNlX3R5cGUgewoxNDQ3NDogIEREQ19TRVJWSUNFX1RZUEVfQ09O TkVDVE9SLAoxNDQ3NDogIEREQ19TRVJWSUNFX1RZUEVfRElTUExBWV9QT1JUX01TVCwKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkaXNwbGF5 X3NpbmtfY2FwYWJpbGl0eSB7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRpc3BsYXlfZG9uZ2xlX3R5 cGUgZG9uZ2xlX3R5cGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIHVpbnQzMl90IGRvd25zdHJtX3NpbmtfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIGJvb2wgZG93bnN0cm1fc2lua19jb3VudF92YWxpZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgdWludDMyX3QgYWRkaXRpb25hbF9hdWRpb19kZWxheTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQz Ml90IGF1ZGlvX2xhdGVuY3k7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCB2aWRlb19sYXRlbmN5 X2ludGVybGFjZTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHZpZGVvX2xhdGVuY3lfcHJvZ3Jl c3NpdmU7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfaGRtaV9waXhlbF9jbG9jazsKMTQ0 NzQ6IAoxNDQ3NDogIGVudW0gZGNfY29sb3JfZGVwdGggbWF4X2hkbWlfZGVlcF9jb2xvcjsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBzc19zdXBw b3J0ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBkcF9saW5rX2xhbmVfY291bnQ7CjE0NDc0 OiAgdWludDMyX3QgZHBfbGlua19yYXRlOwoxNDQ3NDogIHVpbnQzMl90IGRwX2xpbmtfc3BlYWQ7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBpc19kcF9oZG1pX3MzZF9jb252 ZXJ0ZXI7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgaXNfZWRwX3NpbmtfY2FwX3ZhbGlk OwoxNDQ3NDogCjE0NDc0OiAgZW51bSBkZGNfdHJhbnNhY3Rpb25fdHlwZSB0cmFuc2FjdGlvbl90 eXBlOwoxNDQ3NDogIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGF2X3N5bmNfZGF0YSB7CjE0NDc0OiAgdWludDhfdCBhdl9ncmFudWxhcml0 eTsKMTQ0NzQ6ICB1aW50OF90IGF1ZF9kZWNfbGF0MTsKMTQ0NzQ6ICB1aW50OF90IGF1ZF9kZWNf bGF0MjsKMTQ0NzQ6ICB1aW50OF90IGF1ZF9wcF9sYXQxOwoxNDQ3NDogIHVpbnQ4X3QgYXVkX3Bw X2xhdDI7CjE0NDc0OiAgdWludDhfdCB2aWRfaW50ZXJfbGF0OwoxNDQ3NDogIHVpbnQ4X3Qgdmlk X3Byb2dfbGF0OwoxNDQ3NDogIHVpbnQ4X3QgYXVkX2RlbF9pbnMxOwoxNDQ3NDogIHVpbnQ4X3Qg YXVkX2RlbF9pbnMyOwoxNDQ3NDogIHVpbnQ4X3QgYXVkX2RlbF9pbnMzOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgY29uc3QgdWludDhfdCBEUF9WR0FfTFZEU19DT05W RVJURVJfSURfMltdID0gInNpdmFyVCI7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBjb25zdCB1aW50 OF90IERQX1ZHQV9MVkRTX0NPTlZFUlRFUl9JRF8zW10gPSAiZG5vbWxBIjsKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGNvbnN0IHVpbnQ4X3QgRFBfRFZJX0NPTlZFUlRFUl9JRF80W10gPSAibTJEVklh IjsKMTQ0NzQ6ICMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9pbmMvY29yZV90eXBlcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tZW1faW5wdXQuaCIgMQoxNDQ3NDog IyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9t ZW1faW5wdXQuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RtbC9kaXNwbGF5X21vZGVfc3RydWN0cy5oIiAxCjE0NDc0OiAjIDMyICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L21lbV9pbnB1dC5o IiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY2h1Yl9pbml0X2RhdGE7CjE0NDc0OiBzdHJ1Y3Qg Y3N0YXRlX3BzdGF0ZV93YXRlcm1hcmtzX3N0IHsKMTQ0NzQ6ICB1aW50MzJfdCBjc3RhdGVfZXhp dF9uczsKMTQ0NzQ6ICB1aW50MzJfdCBjc3RhdGVfZW50ZXJfcGx1c19leGl0X25zOwoxNDQ3NDog IHVpbnQzMl90IHBzdGF0ZV9jaGFuZ2VfbnM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgZGNuX3dhdGVybWFya3MgewoxNDQ3NDogIHVpbnQzMl90IHB0ZV9tZXRhX3VyZ2VudF9uczsK MTQ0NzQ6ICB1aW50MzJfdCB1cmdlbnRfbnM7CjE0NDc0OiAgdWludDMyX3QgZnJhY191cmdfYndf bm9tOwoxNDQ3NDogIHVpbnQzMl90IGZyYWNfdXJnX2J3X2ZsaXA7CjE0NDc0OiAgaW50MzJfdCB1 cmdlbnRfbGF0ZW5jeV9uczsKMTQ0NzQ6ICBzdHJ1Y3QgY3N0YXRlX3BzdGF0ZV93YXRlcm1hcmtz X3N0IGNzdGF0ZV9wc3RhdGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNuX3dh dGVybWFya19zZXQgewoxNDQ3NDogIHN0cnVjdCBkY25fd2F0ZXJtYXJrcyBhOwoxNDQ3NDogIHN0 cnVjdCBkY25fd2F0ZXJtYXJrcyBiOwoxNDQ3NDogIHN0cnVjdCBkY25fd2F0ZXJtYXJrcyBjOwox NDQ3NDogIHN0cnVjdCBkY25fd2F0ZXJtYXJrcyBkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGRjZV93YXRlcm1hcmtzIHsKMTQ0NzQ6ICBpbnQgYV9tYXJrOwoxNDQ3NDogIGludCBi X21hcms7CjE0NDc0OiAgaW50IGNfbWFyazsKMTQ0NzQ6ICBpbnQgZF9tYXJrOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHN0dXR0ZXJfbW9kZXMgewoxNDQ3NDogIGJvb2wgZW5oYW5j ZWQ7CjE0NDc0OiAgYm9vbCBxdWFkX2RtaWZfYnVmZmVyOwoxNDQ3NDogIGJvb2wgd2F0ZXJtYXJr X25iX3BzdGF0ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtZW1faW5wdXQgewox NDQ3NDogIGNvbnN0IHN0cnVjdCBtZW1faW5wdXRfZnVuY3MgKmZ1bmNzOwoxNDQ3NDogIHN0cnVj dCBkY19jb250ZXh0ICpjdHg7CjE0NDc0OiAgc3RydWN0IGRjX3BsYW5lX2FkZHJlc3MgcmVxdWVz dF9hZGRyZXNzOwoxNDQ3NDogIHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzIGN1cnJlbnRfYWRkcmVz czsKMTQ0NzQ6ICBpbnQgaW5zdDsKMTQ0NzQ6ICBzdHJ1Y3Qgc3R1dHRlcl9tb2RlcyBzdHV0dGVy X21vZGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgdm1fc3lzdGVtX2FwZXJ0dXJl X3BhcmFtIHsKMTQ0NzQ6ICB1bmlvbiBsYXJnZV9pbnRlZ2VyIHN5c19kZWZhdWx0OwoxNDQ3NDog IHVuaW9uIGxhcmdlX2ludGVnZXIgc3lzX2xvdzsKMTQ0NzQ6ICB1bmlvbiBsYXJnZV9pbnRlZ2Vy IHN5c19oaWdoOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHZtX2NvbnRleHQwX3Bh cmFtIHsKMTQ0NzQ6ICB1bmlvbiBsYXJnZV9pbnRlZ2VyIHB0ZV9iYXNlOwoxNDQ3NDogIHVuaW9u IGxhcmdlX2ludGVnZXIgcHRlX3N0YXJ0OwoxNDQ3NDogIHVuaW9uIGxhcmdlX2ludGVnZXIgcHRl X2VuZDsKMTQ0NzQ6ICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGZhdWx0X2RlZmF1bHQ7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbWVtX2lucHV0X2Z1bmNzIHsKMTQ0NzQ6ICB2b2lkICgq bWVtX2lucHV0X3NldHVwKSgKMTQ0NzQ6ICAgIHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1dCwK MTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RsZ19yZWdzX3N0ICpkbGdfcmVncywK MTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9yZWdzX3N0ICp0dHVfcmVncywK MTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3JxX3JlZ3Nfc3QgKnJxX3JlZ3MsCjE0 NDc0OiAgICBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9waXBlX2Rlc3RfcGFyYW1zX3N0ICpwaXBl X2Rlc3QpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRjY19jb250cm9sKShzdHJ1Y3QgbWVtX2lu cHV0ICptZW1faW5wdXQsIGJvb2wgZW5hYmxlLAoxNDQ3NDogICAgYm9vbCBpbmRlcGVuZGVudF82 NGJfYmxrcyk7CjE0NDc0OiAgdm9pZCAoKm1lbV9wcm9ncmFtX3ZpZXdwb3J0KSgKMTQ0NzQ6ICAg IHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1dCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCByZWN0 ICp2aWV3cG9ydCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCByZWN0ICp2aWV3cG9ydF9jKTsKMTQ0 NzQ6IAoxNDQ3NDogIHZvaWQgKCptZW1faW5wdXRfcHJvZ3JhbV9kaXNwbGF5X21hcmtzKSgKMTQ0 NzQ6ICAgc3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAoxNDQ3NDogICBzdHJ1Y3QgZGNlX3dh dGVybWFya3MgbmJwLAoxNDQ3NDogICBzdHJ1Y3QgZGNlX3dhdGVybWFya3Mgc3R1dHRlciwKMTQ0 NzQ6ICAgc3RydWN0IGRjZV93YXRlcm1hcmtzIHN0dXR0ZXJfZW50ZXIsCjE0NDc0OiAgIHN0cnVj dCBkY2Vfd2F0ZXJtYXJrcyB1cmdlbnQsCjE0NDc0OiAgIHVpbnQzMl90IHRvdGFsX2Rlc3RfbGlu ZV90aW1lX25zKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCptZW1faW5wdXRfcHJvZ3JhbV9jaHJv bWFfZGlzcGxheV9tYXJrcykoCjE0NDc0OiAgICBzdHJ1Y3QgbWVtX2lucHV0ICptZW1faW5wdXQs CjE0NDc0OiAgICBzdHJ1Y3QgZGNlX3dhdGVybWFya3MgbmJwLAoxNDQ3NDogICAgc3RydWN0IGRj ZV93YXRlcm1hcmtzIHN0dXR0ZXIsCjE0NDc0OiAgICBzdHJ1Y3QgZGNlX3dhdGVybWFya3MgdXJn ZW50LAoxNDQ3NDogICAgdWludDMyX3QgdG90YWxfZGVzdF9saW5lX3RpbWVfbnMpOwoxNDQ3NDog CjE0NDc0OiAgdm9pZCAoKmFsbG9jYXRlX21lbV9pbnB1dCkoCjE0NDc0OiAgIHN0cnVjdCBtZW1f aW5wdXQgKm1lbV9pbnB1dCwKMTQ0NzQ6ICAgdWludDMyX3QgaF90b3RhbCwKMTQ0NzQ6ICAgdWlu dDMyX3Qgdl90b3RhbCwKMTQ0NzQ6ICAgdWludDMyX3QgcGl4X2Nsa19raHosCjE0NDc0OiAgIHVp bnQzMl90IHRvdGFsX3N0cmVhbXNfbnVtKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpmcmVlX21l bV9pbnB1dCkoCjE0NDc0OiAgIHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1dCwKMTQ0NzQ6ICAg dWludDMyX3QgcGF0aHNfbnVtKTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCptZW1faW5wdXRfcHJv Z3JhbV9zdXJmYWNlX2ZsaXBfYW5kX2FkZHIpKAoxNDQ3NDogICBzdHJ1Y3QgbWVtX2lucHV0ICpt ZW1faW5wdXQsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzICphZGRyZXNz LAoxNDQ3NDogICBib29sIGZsaXBfaW1tZWRpYXRlKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpt ZW1faW5wdXRfcHJvZ3JhbV9wdGVfdm0pKAoxNDQ3NDogICBzdHJ1Y3QgbWVtX2lucHV0ICptZW1f aW5wdXQsCjE0NDc0OiAgIGVudW0gc3VyZmFjZV9waXhlbF9mb3JtYXQgZm9ybWF0LAoxNDQ3NDog ICB1bmlvbiBkY190aWxpbmdfaW5mbyAqdGlsaW5nX2luZm8sCjE0NDc0OiAgIGVudW0gZGNfcm90 YXRpb25fYW5nbGUgcm90YXRpb24pOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKm1lbV9pbnB1dF9z ZXRfdm1fc3lzdGVtX2FwZXJ0dXJlX3NldHRpbmdzKSgKMTQ0NzQ6ICAgIHN0cnVjdCBtZW1faW5w dXQgKm1lbV9pbnB1dCwKMTQ0NzQ6ICAgIHN0cnVjdCB2bV9zeXN0ZW1fYXBlcnR1cmVfcGFyYW0g KmFwdCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqbWVtX2lucHV0X3NldF92bV9jb250ZXh0MF9z ZXR0aW5ncykoCjE0NDc0OiAgICBzdHJ1Y3QgbWVtX2lucHV0ICptZW1faW5wdXQsCjE0NDc0OiAg ICBjb25zdCBzdHJ1Y3Qgdm1fY29udGV4dDBfcGFyYW0gKnZtMCk7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqbWVtX2lucHV0X3Byb2dyYW1fc3VyZmFjZV9jb25maWcpKAoxNDQ3NDogICBzdHJ1Y3Qg bWVtX2lucHV0ICptZW1faW5wdXQsCjE0NDc0OiAgIGVudW0gc3VyZmFjZV9waXhlbF9mb3JtYXQg Zm9ybWF0LAoxNDQ3NDogICB1bmlvbiBkY190aWxpbmdfaW5mbyAqdGlsaW5nX2luZm8sCjE0NDc0 OiAgIHN0cnVjdCBwbGFuZV9zaXplICpwbGFuZV9zaXplLAoxNDQ3NDogICBlbnVtIGRjX3JvdGF0 aW9uX2FuZ2xlIHJvdGF0aW9uLAoxNDQ3NDogICBzdHJ1Y3QgZGNfcGxhbmVfZGNjX3BhcmFtICpk Y2MsCjE0NDc0OiAgIGJvb2wgaG9yaXpvbnRhbF9taXJyb3IpOwoxNDQ3NDogCjE0NDc0OiAgYm9v bCAoKm1lbV9pbnB1dF9pc19mbGlwX3BlbmRpbmcpKHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1 dCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqbWVtX2lucHV0X3VwZGF0ZV9kY2h1Yikoc3RydWN0 IG1lbV9pbnB1dCAqbWVtX2lucHV0LAoxNDQ3NDogICAgIHN0cnVjdCBkY2h1Yl9pbml0X2RhdGEg KmRoX2RhdGEpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9ibGFuaykoc3RydWN0IG1lbV9p bnB1dCAqbWksIGJvb2wgYmxhbmspOwoxNDQ3NDogIHZvaWQgKCpzZXRfaHVicF9ibGFua19lbiko c3RydWN0IG1lbV9pbnB1dCAqbWksIGJvb2wgYmxhbmspOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAo KnNldF9jdXJzb3JfYXR0cmlidXRlcykoCjE0NDc0OiAgICBzdHJ1Y3QgbWVtX2lucHV0ICptZW1f aW5wdXQsCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3QgZGNfY3Vyc29yX2F0dHJpYnV0ZXMgKmF0dHIp OwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9jdXJzb3JfcG9zaXRpb24pKAoxNDQ3NDogICAg c3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IGRjX2N1 cnNvcl9wb3NpdGlvbiAqcG9zLAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IGRjX2N1cnNvcl9taV9w YXJhbSAqcGFyYW0pOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogIyAzNSAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jb3JlX3R5cGVzLmgiIDIKMTQ0NzQ6 ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9o dWJwLmgiIDEKMTQ0NzQ6ICMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvaHcvaHVicC5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L21lbV9pbnB1dC5oIiAxCjE0NDc0OiAjIDMwICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2h1YnAuaCIg MgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGN1cnNvcl9waXRj aCB7CjE0NDc0OiAgQ1VSU09SX1BJVENIXzY0X1BJWEVMUyA9IDAsCjE0NDc0OiAgQ1VSU09SX1BJ VENIXzEyOF9QSVhFTFMsCjE0NDc0OiAgQ1VSU09SX1BJVENIXzI1Nl9QSVhFTFMKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gY3Vyc29yX2xpbmVzX3Blcl9jaHVuayB7CjE0NDc0OiAgQ1VS U09SX0xJTkVfUEVSX0NIVU5LXzEgPSAwLAoxNDQ3NDogIENVUlNPUl9MSU5FX1BFUl9DSFVOS18y ID0gMSwKMTQ0NzQ6ICBDVVJTT1JfTElORV9QRVJfQ0hVTktfNCwKMTQ0NzQ6ICBDVVJTT1JfTElO RV9QRVJfQ0hVTktfOCwKMTQ0NzQ6ICBDVVJTT1JfTElORV9QRVJfQ0hVTktfMTYKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gaHVicF9pbmRfYmxvY2tfc2l6ZSB7CjE0NDc0OiAgaHVicF9p bmRfYmxvY2tfdW5jb25zdHJhaW5lZCA9IDAsCjE0NDc0OiAgaHVicF9pbmRfYmxvY2tfNjRiLAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGh1YnAgewoxNDQ3NDogIGNvbnN0IHN0cnVj dCBodWJwX2Z1bmNzICpmdW5jczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3 NDogIHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzIHJlcXVlc3RfYWRkcmVzczsKMTQ0NzQ6ICBpbnQg aW5zdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50IG9wcF9pZDsKMTQ0NzQ6ICBpbnQgbXBj Y19pZDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY3Vyc29yX2F0dHJpYnV0ZXMgY3Vyc19hdHRyOwoxNDQ3 NDogIGJvb2wgcG93ZXJfZ2F0ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3Vy ZmFjZV9mbGlwX3JlZ2lzdGVycyB7CjE0NDc0OiAgdWludDMyX3QgRENTVVJGX1NVUkZBQ0VfQ09O VFJPTDsKMTQ0NzQ6ICB1aW50MzJfdCBEQ1NVUkZfUFJJTUFSWV9NRVRBX1NVUkZBQ0VfQUREUkVT U19ISUdIOwoxNDQ3NDogIHVpbnQzMl90IERDU1VSRl9QUklNQVJZX01FVEFfU1VSRkFDRV9BRERS RVNTOwoxNDQ3NDogIHVpbnQzMl90IERDU1VSRl9QUklNQVJZX1NVUkZBQ0VfQUREUkVTU19ISUdI OwoxNDQ3NDogIHVpbnQzMl90IERDU1VSRl9QUklNQVJZX1NVUkZBQ0VfQUREUkVTUzsKMTQ0NzQ6 ICB1aW50MzJfdCBEQ1NVUkZfUFJJTUFSWV9NRVRBX1NVUkZBQ0VfQUREUkVTU19ISUdIX0M7CjE0 NDc0OiAgdWludDMyX3QgRENTVVJGX1BSSU1BUllfTUVUQV9TVVJGQUNFX0FERFJFU1NfQzsKMTQ0 NzQ6ICB1aW50MzJfdCBEQ1NVUkZfUFJJTUFSWV9TVVJGQUNFX0FERFJFU1NfSElHSF9DOwoxNDQ3 NDogIHVpbnQzMl90IERDU1VSRl9QUklNQVJZX1NVUkZBQ0VfQUREUkVTU19DOwoxNDQ3NDogIHVp bnQzMl90IERDU1VSRl9TRUNPTkRBUllfTUVUQV9TVVJGQUNFX0FERFJFU1NfSElHSDsKMTQ0NzQ6 ICB1aW50MzJfdCBEQ1NVUkZfU0VDT05EQVJZX01FVEFfU1VSRkFDRV9BRERSRVNTOwoxNDQ3NDog IHVpbnQzMl90IERDU1VSRl9TRUNPTkRBUllfU1VSRkFDRV9BRERSRVNTX0hJR0g7CjE0NDc0OiAg dWludDMyX3QgRENTVVJGX1NFQ09OREFSWV9TVVJGQUNFX0FERFJFU1M7CjE0NDc0OiAgYm9vbCB0 bXpfc3VyZmFjZTsKMTQ0NzQ6ICBib29sIGltbWVkaWF0ZTsKMTQ0NzQ6ICB1aW50OF90IHZtaWQ7 CjE0NDc0OiAgYm9vbCBncnBoX3N0ZXJlbzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBodWJwX2Z1bmNzIHsKMTQ0NzQ6ICB2b2lkICgqaHVicF9zZXR1cCkoCjE0NDc0OiAgICBzdHJ1 Y3QgaHVicCAqaHVicCwKMTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RsZ19yZWdz X3N0ICpkbGdfcmVncywKMTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9yZWdz X3N0ICp0dHVfcmVncywKMTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3JxX3JlZ3Nf c3QgKnJxX3JlZ3MsCjE0NDc0OiAgICBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9waXBlX2Rlc3Rf cGFyYW1zX3N0ICpwaXBlX2Rlc3QpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmh1YnBfc2V0dXBf aW50ZXJkZXBlbmRlbnQpKAoxNDQ3NDogICAgc3RydWN0IGh1YnAgKmh1YnAsCjE0NDc0OiAgICBz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kbGdfcmVnc19zdCAqZGxnX3JlZ3MsCjE0NDc0OiAgICBz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV90dHVfcmVnc19zdCAqdHR1X3JlZ3MpOwoxNDQ3NDogCjE0 NDc0OiAgdm9pZCAoKmRjY19jb250cm9sKShzdHJ1Y3QgaHVicCAqaHVicCwgYm9vbCBlbmFibGUs CjE0NDc0OiAgICBlbnVtIGh1YnBfaW5kX2Jsb2NrX3NpemUgYmxrX3NpemUpOwoxNDQ3NDogCjE0 NDc0OiAgdm9pZCAoKm1lbV9wcm9ncmFtX3ZpZXdwb3J0KSgKMTQ0NzQ6ICAgIHN0cnVjdCBodWJw ICpodWJwLAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IHJlY3QgKnZpZXdwb3J0LAoxNDQ3NDogICAg Y29uc3Qgc3RydWN0IHJlY3QgKnZpZXdwb3J0X2MpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmFw cGx5X1BMQVRfNTQxODZfd2EpKHN0cnVjdCBodWJwICpodWJwLAoxNDQ3NDogICAgY29uc3Qgc3Ry dWN0IGRjX3BsYW5lX2FkZHJlc3MgKmFkZHJlc3MpOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCAoKmh1 YnBfcHJvZ3JhbV9zdXJmYWNlX2ZsaXBfYW5kX2FkZHIpKAoxNDQ3NDogICBzdHJ1Y3QgaHVicCAq aHVicCwKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX3BsYW5lX2FkZHJlc3MgKmFkZHJlc3MsCjE0 NDc0OiAgIGJvb2wgZmxpcF9pbW1lZGlhdGUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmh1YnBf cHJvZ3JhbV9wdGVfdm0pKAoxNDQ3NDogICBzdHJ1Y3QgaHVicCAqaHVicCwKMTQ0NzQ6ICAgZW51 bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQsCjE0NDc0OiAgIHVuaW9uIGRjX3RpbGluZ19p bmZvICp0aWxpbmdfaW5mbywKMTQ0NzQ6ICAgZW51bSBkY19yb3RhdGlvbl9hbmdsZSByb3RhdGlv bik7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaHVicF9zZXRfdm1fc3lzdGVtX2FwZXJ0dXJlX3Nl dHRpbmdzKSgKMTQ0NzQ6ICAgIHN0cnVjdCBodWJwICpodWJwLAoxNDQ3NDogICAgc3RydWN0IHZt X3N5c3RlbV9hcGVydHVyZV9wYXJhbSAqYXB0KTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpodWJw X3NldF92bV9jb250ZXh0MF9zZXR0aW5ncykoCjE0NDc0OiAgICBzdHJ1Y3QgaHVicCAqaHVicCwK MTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCB2bV9jb250ZXh0MF9wYXJhbSAqdm0wKTsKMTQ0NzQ6IAox NDQ3NDogIHZvaWQgKCpodWJwX3Byb2dyYW1fc3VyZmFjZV9jb25maWcpKAoxNDQ3NDogICBzdHJ1 Y3QgaHVicCAqaHVicCwKMTQ0NzQ6ICAgZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQs CjE0NDc0OiAgIHVuaW9uIGRjX3RpbGluZ19pbmZvICp0aWxpbmdfaW5mbywKMTQ0NzQ6ICAgc3Ry dWN0IHBsYW5lX3NpemUgKnBsYW5lX3NpemUsCjE0NDc0OiAgIGVudW0gZGNfcm90YXRpb25fYW5n bGUgcm90YXRpb24sCjE0NDc0OiAgIHN0cnVjdCBkY19wbGFuZV9kY2NfcGFyYW0gKmRjYywKMTQ0 NzQ6ICAgYm9vbCBob3Jpem9udGFsX21pcnJvciwKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IGNvbXBh X2xldmVsKTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCpodWJwX2lzX2ZsaXBfcGVuZGluZykoc3Ry dWN0IGh1YnAgKmh1YnApOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9ibGFuaykoc3RydWN0 IGh1YnAgKmh1YnAsIGJvb2wgYmxhbmspOwoxNDQ3NDogIHZvaWQgKCpzZXRfaHVicF9ibGFua19l bikoc3RydWN0IGh1YnAgKmh1YnAsIGJvb2wgYmxhbmspOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAo KnNldF9jdXJzb3JfYXR0cmlidXRlcykoCjE0NDc0OiAgICBzdHJ1Y3QgaHVicCAqaHVicCwKMTQ0 NzQ6ICAgIGNvbnN0IHN0cnVjdCBkY19jdXJzb3JfYXR0cmlidXRlcyAqYXR0cik7CjE0NDc0OiAK MTQ0NzQ6ICB2b2lkICgqc2V0X2N1cnNvcl9wb3NpdGlvbikoCjE0NDc0OiAgICBzdHJ1Y3QgaHVi cCAqaHVicCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBkY19jdXJzb3JfcG9zaXRpb24gKnBvcywK MTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBkY19jdXJzb3JfbWlfcGFyYW0gKnBhcmFtKTsKMTQ0NzQ6 IAoxNDQ3NDogIHZvaWQgKCpodWJwX2Rpc2Nvbm5lY3QpKHN0cnVjdCBodWJwICpodWJwKTsKMTQ0 NzQ6IAoxNDQ3NDogIHZvaWQgKCpodWJwX2Nsa19jbnRsKShzdHJ1Y3QgaHVicCAqaHVicCwgYm9v bCBlbmFibGUpOwoxNDQ3NDogIHZvaWQgKCpodWJwX3Z0Z19zZWwpKHN0cnVjdCBodWJwICpodWJw LCB1aW50MzJfdCBvdGdfaW5zdCk7CjE0NDc0OiAgdm9pZCAoKmh1YnBfcmVhZF9zdGF0ZSkoc3Ry dWN0IGh1YnAgKmh1YnApOwoxNDQ3NDogIHZvaWQgKCpodWJwX2NsZWFyX3VuZGVyZmxvdykoc3Ry dWN0IGh1YnAgKmh1YnApOwoxNDQ3NDogIHZvaWQgKCpodWJwX2Rpc2FibGVfY29udHJvbCkoc3Ry dWN0IGh1YnAgKmh1YnAsIGJvb2wgZGlzYWJsZV9odWJwKTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg KCpodWJwX2dldF91bmRlcmZsb3dfc3RhdHVzKShzdHJ1Y3QgaHVicCAqaHVicCk7CjE0NDc0OiAg dm9pZCAoKmh1YnBfaW5pdCkoc3RydWN0IGh1YnAgKmh1YnApOwoxNDQ3NDogCjE0NDc0OiAgdm9p ZCAoKmRtZGF0YV9zZXRfYXR0cmlidXRlcykoCjE0NDc0OiAgICBzdHJ1Y3QgaHVicCAqaHVicCwK MTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBkY19kbWRhdGFfYXR0cmlidXRlcyAqYXR0cik7CjE0NDc0 OiAKMTQ0NzQ6ICB2b2lkICgqZG1kYXRhX2xvYWQpKAoxNDQ3NDogICAgc3RydWN0IGh1YnAgKmh1 YnAsCjE0NDc0OiAgICB1aW50MzJfdCBkbWRhdGFfc3dfc2l6ZSwKMTQ0NzQ6ICAgIGNvbnN0IHVp bnQzMl90ICpkbWRhdGFfc3dfZGF0YSk7CjE0NDc0OiAgYm9vbCAoKmRtZGF0YV9zdGF0dXNfZG9u ZSkoc3RydWN0IGh1YnAgKmh1YnApOwoxNDQ3NDogIHZvaWQgKCpodWJwX2VuYWJsZV90cmlwbGVC dWZmZXIpKAoxNDQ3NDogICBzdHJ1Y3QgaHVicCAqaHVicCwKMTQ0NzQ6ICAgYm9vbCBlbmFibGUp OwoxNDQ3NDogCjE0NDc0OiAgYm9vbCAoKmh1YnBfaXNfdHJpcGxlYnVmZmVyX2VuYWJsZWQpKAox NDQ3NDogICBzdHJ1Y3QgaHVicCAqaHVicCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaHVicF9z ZXRfZmxpcF9jb250cm9sX3N1cmZhY2VfZ3NsKSgKMTQ0NzQ6ICAgc3RydWN0IGh1YnAgKmh1YnAs CjE0NDc0OiAgIGJvb2wgZW5hYmxlKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCp2YWxpZGF0ZV9k bWxfb3V0cHV0KSgKMTQ0NzQ6ICAgIHN0cnVjdCBodWJwICpodWJwLAoxNDQ3NDogICAgc3RydWN0 IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3JxX3Jl Z3Nfc3QgKmRtbF9ycV9yZWdzLAoxNDQ3NDogICAgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGxn X3JlZ3Nfc3QgKmRtbF9kbGdfYXR0ciwKMTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5 X3R0dV9yZWdzX3N0ICpkbWxfdHR1X2F0dHIpOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogIyAz NiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jb3JlX3R5 cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L21wYy5oIiAxCjE0NDc0OiAjIDM4ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9p bmMvaHcvZHdiLmgiIDEKMTQ0NzQ6ICMgMzUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9pbmMvaHcvZHdiLmgiCjE0NDc0OiBzdHJ1Y3QgbWNpZl93YjsKMTQ0NzQ6 IAoxNDQ3NDogZW51bSBkY2VfdmVyc2lvbjsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkd2Jfc3dfdmVy c2lvbiB7CjE0NDc0OiAgZHdiX3Zlcl8xXzAgPSAxLAoxNDQ3NDogIGR3Yl92ZXJfMl8wID0gMiwK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZHdiX3NvdXJjZSB7CjE0NDc0OiAgZHdiX3Ny Y19zY2wgPSAwLAoxNDQ3NDogIGR3Yl9zcmNfYmxuZCwKMTQ0NzQ6ICBkd2Jfc3JjX2ZtdCwKMTQ0 NzQ6ICBkd2Jfc3JjX290ZzAgPSAweDEwMCwKMTQ0NzQ6ICBkd2Jfc3JjX290ZzEsCjE0NDc0OiAg ZHdiX3NyY19vdGcyLAoxNDQ3NDogIGR3Yl9zcmNfb3RnMywKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZW51bSBkd2JfcGlwZSB7CjE0NDc0OiAgZHdiX3BpcGUwID0gMCwKMTQ0NzQ6 IAoxNDQ3NDogIGR3Yl9waXBlMSwKMTQ0NzQ6IAoxNDQ3NDogIGR3Yl9waXBlX21heF9udW0sCjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGR3Yl9mcmFtZV9jYXB0dXJlX2VuYWJsZSB7CjE0 NDc0OiAgRFdCX0ZSQU1FX0NBUFRVUkVfRElTQUJMRSA9IDAsCjE0NDc0OiAgRFdCX0ZSQU1FX0NB UFRVUkVfRU5BQkxFID0gMSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gd2JzY2xfY29l Zl9maWx0ZXJfdHlwZV9zZWwgewoxNDQ3NDogIFdCU0NMX0NPRUZfTFVNQV9WRVJUX0ZJTFRFUiA9 IDAsCjE0NDc0OiAgV0JTQ0xfQ09FRl9DSFJPTUFfVkVSVF9GSUxURVIgPSAxLAoxNDQ3NDogIFdC U0NMX0NPRUZfTFVNQV9IT1JaX0ZJTFRFUiA9IDIsCjE0NDc0OiAgV0JTQ0xfQ09FRl9DSFJPTUFf SE9SWl9GSUxURVIgPSAzCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBk d2Jfd2FybXVwX3BhcmFtcyB7CjE0NDc0OiAgYm9vbCB3YXJtdXBfZW47CjE0NDc0OiAgYm9vbCB3 YXJtdXBfbW9kZTsKMTQ0NzQ6ICBib29sIHdhcm11cF9kZXB0aDsKMTQ0NzQ6ICBpbnQgd2FybXVw X2RhdGE7CjE0NDc0OiAgaW50IHdhcm11cF93aWR0aDsKMTQ0NzQ6ICBpbnQgd2FybXVwX2hlaWdo dDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkd2JfY2FwcyB7CjE0NDc0OiAgZW51 bSBkY2VfdmVyc2lvbiBod192ZXJzaW9uOwoxNDQ3NDogIGVudW0gZHdiX3N3X3ZlcnNpb24gc3df dmVyc2lvbjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWRbNl07CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGFkYXB0ZXJfaWQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IG51bV9waXBlczsKMTQ0NzQ6 ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgc3VwcG9ydF9kd2IgOjE7CjE0NDc0OiAg IHVuc2lnbmVkIGludCBzdXBwb3J0X29nYW0gOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBzdXBw b3J0X3dic2NsIDoxOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgc3VwcG9ydF9vY3NjIDoxOwoxNDQ3 NDogICB1bnNpZ25lZCBpbnQgc3VwcG9ydF9zdGVyZW8gOjE7CjE0NDc0OiAgfSBjYXBzOwoxNDQ3 NDogIHVuc2lnbmVkIGludCByZXNlcnZlZDJbOV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgZHdiYyB7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGR3YmNfZnVuY3MgKmZ1bmNzOwoxNDQ3 NDogIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7CjE0NDc0OiAgaW50IGluc3Q7CjE0NDc0OiAgc3Ry dWN0IG1jaWZfd2IgKm1jaWY7CjE0NDc0OiAgYm9vbCBzdGF0dXM7CjE0NDc0OiAgaW50IGlucHV0 U3JjU2VsZWN0OwoxNDQ3NDogIGJvb2wgZHdiX291dHB1dF9ibGFjazsKMTQ0NzQ6ICBlbnVtIGRj X3RyYW5zZmVyX2Z1bmNfcHJlZGVmaW5lZCB0ZjsKMTQ0NzQ6ICBlbnVtIGRjX2NvbG9yX3NwYWNl IG91dHB1dF9jb2xvcl9zcGFjZTsKMTQ0NzQ6ICBib29sIGR3Yl9pc19lZmNfdHJhbnNpdGlvbjsK MTQ0NzQ6ICBib29sIGR3Yl9pc19kcmM7CjE0NDc0OiAgaW50IHdiX3NyY19wbGFuZV9pbnN0Owox NDQ3NDogIGJvb2wgdXBkYXRlX3ByaXZhY3ltYXNrOwoxNDQ3NDogIHVpbnQzMl90IG1hc2tfaWQ7 CjE0NDc0OiAgICAgICAgIGludCBvdGdfaW5zdDsKMTQ0NzQ6ICAgICAgICAgYm9vbCBtdmNfY2Zn OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGR3YmNfZnVuY3MgewoxNDQ3NDogIGJv b2wgKCpnZXRfY2FwcykoCjE0NDc0OiAgIHN0cnVjdCBkd2JjICpkd2JjLAoxNDQ3NDogICBzdHJ1 Y3QgZHdiX2NhcHMgKmNhcHMpOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCAoKmVuYWJsZSkoCjE0NDc0 OiAgIHN0cnVjdCBkd2JjICpkd2JjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfZHdiX3BhcmFtcyAqcGFy YW1zKTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCpkaXNhYmxlKShzdHJ1Y3QgZHdiYyAqZHdiYyk7 CjE0NDc0OiAKMTQ0NzQ6ICBib29sICgqdXBkYXRlKSgKMTQ0NzQ6ICAgc3RydWN0IGR3YmMgKmR3 YmMsCjE0NDc0OiAgIHN0cnVjdCBkY19kd2JfcGFyYW1zICpwYXJhbXMpOwoxNDQ3NDogCjE0NDc0 OiAgYm9vbCAoKmlzX2VuYWJsZWQpKAoxNDQ3NDogICBzdHJ1Y3QgZHdiYyAqZHdiYyk7CjE0NDc0 OiAKMTQ0NzQ6ICB2b2lkICgqc2V0X3N0ZXJlbykoCjE0NDc0OiAgIHN0cnVjdCBkd2JjICpkd2Jj LAoxNDQ3NDogICBzdHJ1Y3QgZHdiX3N0ZXJlb19wYXJhbXMgKnN0ZXJlb19wYXJhbXMpOwoxNDQ3 NDogCjE0NDc0OiAgdm9pZCAoKnNldF9uZXdfY29udGVudCkoCjE0NDc0OiAgIHN0cnVjdCBkd2Jj ICpkd2JjLAoxNDQ3NDogICBib29sIGlzX25ld19jb250ZW50KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgdm9pZCAoKnNldF93YXJtdXApKAoxNDQ3NDogICBzdHJ1Y3QgZHdiYyAqZHdiYywKMTQ0 NzQ6ICAgc3RydWN0IGR3Yl93YXJtdXBfcGFyYW1zICp3YXJtdXBfcGFyYW1zKTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgYm9vbCAoKmdldF9kd2Jfc3RhdHVzKSgKMTQ0NzQ6ICAgc3RydWN0IGR3 YmMgKmR3YmMpOwoxNDQ3NDogIHZvaWQgKCpkd2Jfc2V0X3NjYWxlcikoCjE0NDc0OiAgIHN0cnVj dCBkd2JjICpkd2JjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfZHdiX3BhcmFtcyAqcGFyYW1zKTsKMTQ0 NzQ6IH07CjE0NDc0OiAjIDQwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L21jaWZfd2IuaCIgMQoxNDQ3NDogIyAzMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tY2lmX3di LmgiCjE0NDc0OiBlbnVtIG1taHViYnViX3diaWZfbW9kZSB7CjE0NDc0OiAgUEFDS0VEXzQ0NCA9 IDAsCjE0NDc0OiAgUEFDS0VEXzQ0NF9GUDE2ID0gMSwKMTQ0NzQ6ICBQTEFOQVJfNDIwXzhCUEMg PSAyLAoxNDQ3NDogIFBMQU5BUl80MjBfMTBCUEMgPSAzCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgbWNpZl9hcmJfcGFyYW1zIHsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCB0 aW1lX3Blcl9waXhlbDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY2xpX3dhdGVybWFya1s0XTsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgcHN0YXRlX3dhdGVybWFya1s0XTsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgYXJiaXRyYXRpb25fc2xpY2U7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNsaWNlX2xpbmVzOwox NDQ3NDogIHVuc2lnbmVkIGludCBtYXhfc2NhbGVkX3RpbWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgbWNpZl9pcnFfcGFyYW1zIHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3dfaW50 X2VuOwoxNDQ3NDogIHVuc2lnbmVkIGludCBzd19zbGljZV9pbnRfZW47CjE0NDc0OiAgdW5zaWdu ZWQgaW50IHN3X292ZXJydW5faW50X2VuOwoxNDQ3NDogIHVuc2lnbmVkIGludCB2Y2VfaW50X2Vu OwoxNDQ3NDogIHVuc2lnbmVkIGludCB2Y2Vfc2xpY2VfaW50X2VuOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtY2lmX3diX2ZyYW1lX2R1bXBfaW5mbyB7 CjE0NDc0OiAgdW5zaWduZWQgaW50IHNpemU7CjE0NDc0OiAgdW5zaWduZWQgaW50IHdpZHRoOwox NDQ3NDogIHVuc2lnbmVkIGludCBoZWlnaHQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IGx1bWFfcGl0 Y2g7CjE0NDc0OiAgdW5zaWduZWQgaW50IGNocm9tYV9waXRjaDsKMTQ0NzQ6ICBlbnVtIGR3Yl9z Y2FsZXJfbW9kZSBmb3JtYXQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbWNpZl93 YiB7CjE0NDc0OiAgY29uc3Qgc3RydWN0IG1jaWZfd2JfZnVuY3MgKmZ1bmNzOwoxNDQ3NDogIHN0 cnVjdCBkY19jb250ZXh0ICpjdHg7CjE0NDc0OiAgaW50IGluc3Q7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgbWNpZl93Yl9mdW5jcyB7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZW5h YmxlX21jaWYpKHN0cnVjdCBtY2lmX3diICptY2lmX3diKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQg KCpkaXNhYmxlX21jaWYpKHN0cnVjdCBtY2lmX3diICptY2lmX3diKTsKMTQ0NzQ6IAoxNDQ3NDog IHZvaWQgKCpjb25maWdfbWNpZl9idWYpKAoxNDQ3NDogICBzdHJ1Y3QgbWNpZl93YiAqbWNpZl93 YiwKMTQ0NzQ6ICAgc3RydWN0IG1jaWZfYnVmX3BhcmFtcyAqcGFyYW1zLAoxNDQ3NDogICB1bnNp Z25lZCBpbnQgZGVzdF9oZWlnaHQpOwoxNDQ3NDogCjE0NDc0OiAgIHZvaWQgKCpjb25maWdfbWNp Zl9hcmIpKAoxNDQ3NDogICBzdHJ1Y3QgbWNpZl93YiAqbWNpZl93YiwKMTQ0NzQ6ICAgc3RydWN0 IG1jaWZfYXJiX3BhcmFtcyAqcGFyYW1zKTsKMTQ0NzQ6IAoxNDQ3NDogICB2b2lkICgqY29uZmln X21jaWZfaXJxKSgKMTQ0NzQ6ICAgc3RydWN0IG1jaWZfd2IgKm1jaWZfd2IsCjE0NDc0OiAgIHN0 cnVjdCBtY2lmX2lycV9wYXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZHVt cF9mcmFtZSkoCjE0NDc0OiAgIHN0cnVjdCBtY2lmX3diICptY2lmX3diLAoxNDQ3NDogICBzdHJ1 Y3QgbWNpZl9idWZfcGFyYW1zICptY2lmX3BhcmFtcywKMTQ0NzQ6ICAgZW51bSBkd2Jfc2NhbGVy X21vZGUgb3V0X2Zvcm1hdCwKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IGRlc3Rfd2lkdGgsCjE0NDc0 OiAgIHVuc2lnbmVkIGludCBkZXN0X2hlaWdodCwKMTQ0NzQ6ICAgc3RydWN0IG1jaWZfd2JfZnJh bWVfZHVtcF9pbmZvICpkdW1wX2luZm8sCjE0NDc0OiAgIHVuc2lnbmVkIGNoYXIgKmx1bWFfYnVm ZmVyLAoxNDQ3NDogICB1bnNpZ25lZCBjaGFyICpjaHJvbWFfYnVmZmVyLAoxNDQ3NDogICB1bnNp Z25lZCBjaGFyICpkZXN0X2x1bWFfYnVmZmVyLAoxNDQ3NDogICB1bnNpZ25lZCBjaGFyICpkZXN0 X2Nocm9tYV9idWZmZXIpOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNDEgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIGVuYWJsZV9zdXJmYWNlX2ZsaXBfcmVwb3J0aW5nKHN0 cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCjE0NDc0OiAgIHVpbnQzMl90IGNvbnRy b2xsZXJfaWQpOwoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2lkLmgiIDEKMTQ0NzQ6ICMgNDggIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5o IiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9pbmMvaHcvbGlua19lbmNvZGVyLmgiIDEKMTQ0NzQ6ICMgNDkgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCjE0NDc0OiAjIDEg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvc3RyZWFt X2VuY29kZXIuaCIgMQoxNDQ3NDogIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2luYy9ody9zdHJlYW1fZW5jb2Rlci5oIgoxNDQ3NDogIyAxICIuL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9hdWRpb190eXBlcy5oIiAx CjE0NDc0OiAjIDM2ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5j bHVkZS9hdWRpb190eXBlcy5oIgoxNDQ3NDogc3RydWN0IGF1ZGlvX2NydGNfaW5mbyB7CjE0NDc0 OiAgdWludDMyX3QgaF90b3RhbDsKMTQ0NzQ6ICB1aW50MzJfdCBoX2FjdGl2ZTsKMTQ0NzQ6ICB1 aW50MzJfdCB2X2FjdGl2ZTsKMTQ0NzQ6ICB1aW50MzJfdCBwaXhlbF9yZXBldGl0aW9uOwoxNDQ3 NDogIHVpbnQzMl90IHJlcXVlc3RlZF9waXhlbF9jbG9ja18xMDBIejsKMTQ0NzQ6ICB1aW50MzJf dCBjYWxjdWxhdGVkX3BpeGVsX2Nsb2NrXzEwMEh6OwoxNDQ3NDogIHVpbnQzMl90IHJlZnJlc2hf cmF0ZTsKMTQ0NzQ6ICBlbnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2RlcHRoOwoxNDQ3NDogIGJv b2wgaW50ZXJsYWNlZDsKMTQ0NzQ6IH07CjE0NDc0OiBzdHJ1Y3QgYXphbGlhX2Nsb2NrX2luZm8g ewoxNDQ3NDogIHVpbnQzMl90IHBpeGVsX2Nsb2NrX2luXzEwa2h6OwoxNDQ3NDogIHVpbnQzMl90 IGF1ZGlvX2R0b19waGFzZTsKMTQ0NzQ6ICB1aW50MzJfdCBhdWRpb19kdG9fbW9kdWxlOwoxNDQ3 NDogIHVpbnQzMl90IGF1ZGlvX2R0b193YWxsX2Nsb2NrX3JhdGlvOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogZW51bSBhdWRpb19kdG9fc291cmNlIHsKMTQ0NzQ6ICBEVE9fU09VUkNFX1VOS05P V04gPSAwLAoxNDQ3NDogIERUT19TT1VSQ0VfSUQwLAoxNDQ3NDogIERUT19TT1VSQ0VfSUQxLAox NDQ3NDogIERUT19TT1VSQ0VfSUQyLAoxNDQ3NDogIERUT19TT1VSQ0VfSUQzLAoxNDQ3NDogIERU T19TT1VSQ0VfSUQ0LAoxNDQ3NDogIERUT19TT1VSQ0VfSUQ1CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF1ZGlvX3BsbF9pbmZvIHsKMTQ0NzQ6ICB1aW50 MzJfdCBkcF9kdG9fc291cmNlX2Nsb2NrX2luX2toejsKMTQ0NzQ6ICB1aW50MzJfdCBmZWVkX2Jh Y2tfZGl2aWRlcjsKMTQ0NzQ6ICBlbnVtIGF1ZGlvX2R0b19zb3VyY2UgZHRvX3NvdXJjZTsKMTQ0 NzQ6ICBib29sIHNzX2VuYWJsZWQ7CjE0NDc0OiAgdWludDMyX3Qgc3NfcGVyY2VudGFnZTsKMTQ0 NzQ6ICB1aW50MzJfdCBzc19wZXJjZW50YWdlX2RpdmlkZXI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgYXVkaW9fY2hhbm5lbF9hc3NvY2lhdGVfaW5mbyB7CjE0NDc0OiAgdW5pb24g ewoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgdWludDMyX3QgQUxMX0NIQU5ORUxfRkw6NDsK MTQ0NzQ6ICAgIHVpbnQzMl90IEFMTF9DSEFOTkVMX0ZSOjQ7CjE0NDc0OiAgICB1aW50MzJfdCBB TExfQ0hBTk5FTF9GQzo0OwoxNDQ3NDogICAgdWludDMyX3QgQUxMX0NIQU5ORUxfU3ViOjQ7CjE0 NDc0OiAgICB1aW50MzJfdCBBTExfQ0hBTk5FTF9TTDo0OwoxNDQ3NDogICAgdWludDMyX3QgQUxM X0NIQU5ORUxfU1I6NDsKMTQ0NzQ6ICAgIHVpbnQzMl90IEFMTF9DSEFOTkVMX0JMOjQ7CjE0NDc0 OiAgICB1aW50MzJfdCBBTExfQ0hBTk5FTF9CUjo0OwoxNDQ3NDogICB9IGJpdHM7CjE0NDc0OiAg IHVpbnQzMl90IHUzMmFsbDsKMTQ0NzQ6ICB9OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGF1ZGlvX291dHB1dCB7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGVuZ2luZV9pZCBlbmdpbmVf aWQ7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHNpZ25hbF90eXBlIHNpZ25hbDsKMTQ0NzQ6IAoxNDQ3 NDogIHN0cnVjdCBhdWRpb19jcnRjX2luZm8gY3J0Y19pbmZvOwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IGF1ZGlvX3BsbF9pbmZvIHBsbF9pbmZvOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51 bSBhdWRpb19wYXlsb2FkIHsKMTQ0NzQ6ICBDSEFOTkVMX1NQTElUX01BUFBJTkdDSEFORyA9IDB4 OSwKMTQ0NzQ6IH07CjE0NDc0OiAjIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvaW5jL2h3L3N0cmVhbV9lbmNvZGVyLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZGNfYmlvczsKMTQ0NzQ6IHN0cnVjdCBkY19jb250ZXh0OwoxNDQ3NDogc3Ry dWN0IGRjX2NydGNfdGltaW5nOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRwX3BpeGVsX2VuY29kaW5n X3R5cGUgewoxNDQ3NDogIERQX1BJWEVMX0VOQ09ESU5HX1RZUEVfUkdCNDQ0ID0gMHgwMDAwMDAw MCwKMTQ0NzQ6ICBEUF9QSVhFTF9FTkNPRElOR19UWVBFX1lDQkNSNDIyID0gMHgwMDAwMDAwMSwK MTQ0NzQ6ICBEUF9QSVhFTF9FTkNPRElOR19UWVBFX1lDQkNSNDQ0ID0gMHgwMDAwMDAwMiwKMTQ0 NzQ6ICBEUF9QSVhFTF9FTkNPRElOR19UWVBFX1JHQl9XSURFX0dBTVVUID0gMHgwMDAwMDAwMywK MTQ0NzQ6ICBEUF9QSVhFTF9FTkNPRElOR19UWVBFX1lfT05MWSA9IDB4MDAwMDAwMDQsCjE0NDc0 OiAgRFBfUElYRUxfRU5DT0RJTkdfVFlQRV9ZQ0JDUjQyMCA9IDB4MDAwMDAwMDUKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZHBfY29tcG9uZW50X2RlcHRoIHsKMTQ0NzQ6ICBEUF9DT01Q T05FTlRfUElYRUxfREVQVEhfNkJQQyA9IDB4MDAwMDAwMDAsCjE0NDc0OiAgRFBfQ09NUE9ORU5U X1BJWEVMX0RFUFRIXzhCUEMgPSAweDAwMDAwMDAxLAoxNDQ3NDogIERQX0NPTVBPTkVOVF9QSVhF TF9ERVBUSF8xMEJQQyA9IDB4MDAwMDAwMDIsCjE0NDc0OiAgRFBfQ09NUE9ORU5UX1BJWEVMX0RF UFRIXzEyQlBDID0gMHgwMDAwMDAwMywKMTQ0NzQ6ICBEUF9DT01QT05FTlRfUElYRUxfREVQVEhf MTZCUEMgPSAweDAwMDAwMDA0CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXVkaW9f Y2xvY2tfaW5mbyB7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBwaXhlbF9jbG9ja19pbl8xMGto ejsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IG5fMzJraHo7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50 MzJfdCBjdHNfMzJraHo7CjE0NDc0OiAgdWludDMyX3Qgbl80NGtoejsKMTQ0NzQ6ICB1aW50MzJf dCBjdHNfNDRraHo7CjE0NDc0OiAgdWludDMyX3Qgbl80OGtoejsKMTQ0NzQ6ICB1aW50MzJfdCBj dHNfNDhraHo7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGR5bmFtaWNfbWV0YWRhdGFf bW9kZSB7CjE0NDc0OiAgZG1kYXRhX2RwLAoxNDQ3NDogIGRtZGF0YV9oZG1pLAoxNDQ3NDogIGRt ZGF0YV9kb2xieV92aXNpb24KMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBlbmNvZGVy X2luZm9fZnJhbWUgewoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2luZm9fcGFja2V0IGF2aTsK MTQ0NzQ6ICBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgZ2FtdXQ7CjE0NDc0OiAgc3RydWN0IGRjX2lu Zm9fcGFja2V0IHZlbmRvcjsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgaGZ2c2lmOwox NDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2luZm9fcGFja2V0IHNwZDsKMTQ0NzQ6IAoxNDQ3NDog IHN0cnVjdCBkY19pbmZvX3BhY2tldCB2c2M7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGNfaW5m b19wYWNrZXQgaGRyc21kOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGVuY29kZXJf dW5ibGFua19wYXJhbSB7CjE0NDc0OiAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgbGlua19zZXR0 aW5nczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgdGltaW5nOwoxNDQ3NDogIGludCBv cHBfY250OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGVuY29kZXJfc2V0X2RwX3Bo eV9wYXR0ZXJuX3BhcmFtIHsKMTQ0NzQ6ICBlbnVtIGRwX3Rlc3RfcGF0dGVybiBkcF9waHlfcGF0 dGVybjsKMTQ0NzQ6ICBjb25zdCB1aW50OF90ICpjdXN0b21fcGF0dGVybjsKMTQ0NzQ6ICB1aW50 MzJfdCBjdXN0b21fcGF0dGVybl9zaXplOwoxNDQ3NDogIGVudW0gZHBfcGFuZWxfbW9kZSBkcF9w YW5lbF9tb2RlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHN0cmVhbV9lbmNvZGVy IHsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXJfZnVuY3MgKmZ1bmNzOwoxNDQ3 NDogIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7CjE0NDc0OiAgc3RydWN0IGRjX2Jpb3MgKmJwOwox NDQ3NDogIGVudW0gZW5naW5lX2lkIGlkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGVuY19zdGF0ZSB7CjE0NDc0OiAgdWludDMyX3QgZHNjX21vZGU7CjE0NDc0OiAgdWludDMyX3Qg ZHNjX3NsaWNlX3dpZHRoOwoxNDQ3NDogIHVpbnQzMl90IHNlY19nc3BfcHBzX2xpbmVfbnVtOwox NDQ3NDogIHVpbnQzMl90IHZiaWQ2X2xpbmVfcmVmZXJlbmNlOwoxNDQ3NDogIHVpbnQzMl90IHZi aWQ2X2xpbmVfbnVtOwoxNDQ3NDogIHVpbnQzMl90IHNlY19nc3BfcHBzX2VuYWJsZTsKMTQ0NzQ6 ICB1aW50MzJfdCBzZWNfc3RyZWFtX2VuYWJsZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBzdHJlYW1fZW5jb2Rlcl9mdW5jcyB7CjE0NDc0OiAgdm9pZCAoKmRwX3NldF9zdHJlYW1f YXR0cmlidXRlKSgKMTQ0NzQ6ICAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMsCjE0NDc0OiAg IHN0cnVjdCBkY19jcnRjX3RpbWluZyAqY3J0Y190aW1pbmcsCjE0NDc0OiAgIGVudW0gZGNfY29s b3Jfc3BhY2Ugb3V0cHV0X2NvbG9yX3NwYWNlLAoxNDQ3NDogICBib29sIHVzZV92c2Nfc2RwX2Zv cl9jb2xvcmltZXRyeSwKMTQ0NzQ6ICAgdWludDMyX3QgZW5hYmxlX3NkcF9zcGxpdHRpbmcpOwox NDQ3NDogCjE0NDc0OiAgdm9pZCAoKmhkbWlfc2V0X3N0cmVhbV9hdHRyaWJ1dGUpKAoxNDQ3NDog ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgc3RydWN0IGRjX2NydGNfdGlt aW5nICpjcnRjX3RpbWluZywKMTQ0NzQ6ICAgaW50IGFjdHVhbF9waXhfY2xrX2toeiwKMTQ0NzQ6 ICAgYm9vbCBlbmFibGVfYXVkaW8pOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmR2aV9zZXRfc3Ry ZWFtX2F0dHJpYnV0ZSkoCjE0NDc0OiAgIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLAoxNDQ3 NDogICBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKmNydGNfdGltaW5nLAoxNDQ3NDogICBib29sIGlz X2R1YWxfbGluayk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqbHZkc19zZXRfc3RyZWFtX2F0dHJp YnV0ZSkoCjE0NDc0OiAgIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLAoxNDQ3NDogICBzdHJ1 Y3QgZGNfY3J0Y190aW1pbmcgKmNydGNfdGltaW5nKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpz ZXRfbXN0X2JhbmR3aWR0aCkoCjE0NDc0OiAgIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLAox NDQ3NDogICBzdHJ1Y3QgZml4ZWQzMV8zMiBhdmdfdGltZV9zbG90c19wZXJfbXRwKTsKMTQ0NzQ6 IAoxNDQ3NDogIHZvaWQgKCp1cGRhdGVfaGRtaV9pbmZvX3BhY2tldHMpKAoxNDQ3NDogICBzdHJ1 Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGVuY29kZXJfaW5m b19mcmFtZSAqaW5mb19mcmFtZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc3RvcF9oZG1pX2lu Zm9fcGFja2V0cykoCjE0NDc0OiAgIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jKTsKMTQ0NzQ6 IAoxNDQ3NDogIHZvaWQgKCp1cGRhdGVfZHBfaW5mb19wYWNrZXRzKSgKMTQ0NzQ6ICAgc3RydWN0 IHN0cmVhbV9lbmNvZGVyICplbmMsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBlbmNvZGVyX2luZm9f ZnJhbWUgKmluZm9fZnJhbWUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNlbmRfaW1tZWRpYXRl X3NkcF9tZXNzYWdlKSgKMTQ0NzQ6ICAgICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0 NzQ6ICAgICBjb25zdCB1aW50OF90ICpjdXN0b21fc2RwX21lc3NhZ2UsCjE0NDc0OiAgICAgdW5z aWduZWQgaW50IHNkcF9tZXNzYWdlX3NpemUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnN0b3Bf ZHBfaW5mb19wYWNrZXRzKSgKMTQ0NzQ6ICAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMpOwox NDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwX2JsYW5rKSgKMTQ0NzQ6ICAgc3RydWN0IHN0cmVhbV9l bmNvZGVyICplbmMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwX3VuYmxhbmspKAoxNDQ3NDog ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGVuY29k ZXJfdW5ibGFua19wYXJhbSAqcGFyYW0pOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmF1ZGlvX211 dGVfY29udHJvbCkoCjE0NDc0OiAgIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLCBib29sIG11 dGUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwX2F1ZGlvX3NldHVwKSgKMTQ0NzQ6ICAgc3Ry dWN0IHN0cmVhbV9lbmNvZGVyICplbmMsCjE0NDc0OiAgIHVuc2lnbmVkIGludCBhel9pbnN0LAox NDQ3NDogICBzdHJ1Y3QgYXVkaW9faW5mbyAqaW5mbyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgq ZHBfYXVkaW9fZW5hYmxlKSAoCjE0NDc0OiAgICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYyk7 CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZHBfYXVkaW9fZGlzYWJsZSkgKAoxNDQ3NDogICAgc3Ry dWN0IHN0cmVhbV9lbmNvZGVyICplbmMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmhkbWlfYXVk aW9fc2V0dXApKAoxNDQ3NDogICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAg dW5zaWduZWQgaW50IGF6X2luc3QsCjE0NDc0OiAgIHN0cnVjdCBhdWRpb19pbmZvICppbmZvLAox NDQ3NDogICBzdHJ1Y3QgYXVkaW9fY3J0Y19pbmZvICphdWRpb19jcnRjX2luZm8pOwoxNDQ3NDog CjE0NDc0OiAgdm9pZCAoKmhkbWlfYXVkaW9fZGlzYWJsZSkgKAoxNDQ3NDogICAgc3RydWN0IHN0 cmVhbV9lbmNvZGVyICplbmMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldHVwX3N0ZXJlb19z eW5jKSAoCjE0NDc0OiAgICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgIGlu dCB0Z19pbnN0LAoxNDQ3NDogICAgYm9vbCBlbmFibGUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAo KnNldF9hdm11dGUpKAoxNDQ3NDogICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywgYm9vbCBl bmFibGUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRpZ19jb25uZWN0X3RvX290ZykoCjE0NDc0 OiAgIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLAoxNDQ3NDogICBpbnQgdGdfaW5zdCk7CjE0 NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaGRtaV9yZXNldF9zdHJlYW1fYXR0cmlidXRlKSgKMTQ0NzQ6 ICAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMpOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQg aW50ICgqZGlnX3NvdXJjZV9vdGcpKAoxNDQ3NDogICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVu Yyk7CjE0NDc0OiAKMTQ0NzQ6ICBib29sICgqZHBfZ2V0X3BpeGVsX2Zvcm1hdCkoCjE0NDc0OiAg IHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLAoxNDQ3NDogICBlbnVtIGRjX3BpeGVsX2VuY29k aW5nICplbmNvZGluZywKMTQ0NzQ6ICAgZW51bSBkY19jb2xvcl9kZXB0aCAqZGVwdGgpOwoxNDQ3 NDogCjE0NDc0OiAgdm9pZCAoKmVuY19yZWFkX3N0YXRlKShzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIg KmVuYywgc3RydWN0IGVuY19zdGF0ZSAqcyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZHBfc2V0 X2RzY19jb25maWcpKAoxNDQ3NDogICAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMsCjE0NDc0 OiAgICBlbnVtIG9wdGNfZHNjX21vZGUgZHNjX21vZGUsCjE0NDc0OiAgICB1aW50MzJfdCBkc2Nf Ynl0ZXNfcGVyX3BpeGVsLAoxNDQ3NDogICAgdWludDMyX3QgZHNjX3NsaWNlX3dpZHRoKTsKMTQ0 NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcF9zZXRfZHNjX3Bwc19pbmZvX3BhY2tldCkoc3RydWN0IHN0 cmVhbV9lbmNvZGVyICplbmMsCjE0NDc0OiAgICAgYm9vbCBlbmFibGUsCjE0NDc0OiAgICAgdWlu dDhfdCAqZHNjX3BhY2tlZF9wcHMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9keW5hbWlj X21ldGFkYXRhKShzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgIGJvb2wgZW5h YmxlLAoxNDQ3NDogICAgdWludDMyX3QgaHVicF9yZXF1ZXN0b3JfaWQsCjE0NDc0OiAgICBlbnVt IGR5bmFtaWNfbWV0YWRhdGFfbW9kZSBkbWRhdGFfbW9kZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lk ICgqZHBfc2V0X29kbV9jb21iaW5lKSgKMTQ0NzQ6ICAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICpl bmMsCjE0NDc0OiAgIGJvb2wgb2RtX2NvbWJpbmUpOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTAgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5o IiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2luYy9ody9hdWRpby5oIiAxCjE0NDc0OiAjIDMxICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2F1ZGlvLmgiCjE0NDc0OiBzdHJ1Y3Qg YXVkaW87CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdWRpb19mdW5jcyB7CjE0NDc0OiAKMTQ0NzQ6 ICBib29sICgqZW5kcG9pbnRfdmFsaWQpKHN0cnVjdCBhdWRpbyAqYXVkaW8pOwoxNDQ3NDogCjE0 NDc0OiAgdm9pZCAoKmh3X2luaXQpKHN0cnVjdCBhdWRpbyAqYXVkaW8pOwoxNDQ3NDogCjE0NDc0 OiAgdm9pZCAoKmF6X2VuYWJsZSkoc3RydWN0IGF1ZGlvICphdWRpbyk7CjE0NDc0OiAKMTQ0NzQ6 ICB2b2lkICgqYXpfZGlzYWJsZSkoc3RydWN0IGF1ZGlvICphdWRpbyk7CjE0NDc0OiAKMTQ0NzQ6 ICB2b2lkICgqYXpfY29uZmlndXJlKShzdHJ1Y3QgYXVkaW8gKmF1ZGlvLAoxNDQ3NDogICBlbnVt IHNpZ25hbF90eXBlIHNpZ25hbCwKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGF1ZGlvX2NydGNfaW5m byAqY3J0Y19pbmZvLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgYXVkaW9faW5mbyAqYXVkaW9faW5m byk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqd2FsbF9kdG9fc2V0dXApKHN0cnVjdCBhdWRpbyAq YXVkaW8sCjE0NDc0OiAgIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsLAoxNDQ3NDogICBjb25zdCBz dHJ1Y3QgYXVkaW9fY3J0Y19pbmZvICpjcnRjX2luZm8sCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBh dWRpb19wbGxfaW5mbyAqcGxsX2luZm8pOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRlc3Ryb3kp KHN0cnVjdCBhdWRpbyAqKmF1ZGlvKTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBh dWRpbyB7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGF1ZGlvX2Z1bmNzICpmdW5jczsKMTQ0NzQ6ICBz dHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIHVuc2lnbmVkIGludCBpbnN0OwoxNDQ3NDog IGJvb2wgZW5hYmxlZDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDUyICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgoxNDQ3NDogIyAxICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fcHBfc211LmgiIDEK MTQ0NzQ6ICMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9k bV9wcF9zbXUuaCIKMTQ0NzQ6IHR5cGVkZWYgYm9vbCBCT09MRUFOOwoxNDQ3NDogCjE0NDc0OiBl bnVtIHBwX3NtdV92ZXIgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIFBQX1NNVV9VTlNVUFBPUlRFRCwKMTQ0NzQ6ICBQUF9TTVVfVkVSX1JW LAoxNDQ3NDogIFBQX1NNVV9WRVJfTlYsCjE0NDc0OiAgUFBfU01VX1ZFUl9STiwKMTQ0NzQ6IAox NDQ3NDogIFBQX1NNVV9WRVJfTUFYCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHBf c211IHsKMTQ0NzQ6ICBlbnVtIHBwX3NtdV92ZXIgdmVyOwoxNDQ3NDogIGNvbnN0IHZvaWQgKnBw OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IGNvbnN0IHZvaWQgKmRtOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBwcF9zbXVfc3Rh dHVzIHsKMTQ0NzQ6ICBQUF9TTVVfUkVTVUxUX1VOREVGSU5FRCA9IDAsCjE0NDc0OiAgUFBfU01V X1JFU1VMVF9PSyA9IDEsCjE0NDc0OiAgUFBfU01VX1JFU1VMVF9GQUlMLAoxNDQ3NDogIFBQX1NN VV9SRVNVTFRfVU5TVVBQT1JURUQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGVudW0gd21fdHlwZSB7CjE0NDc0OiAgV01fVFlQRV9QU1RBVEVfQ0hHID0g MCwKMTQ0NzQ6ICBXTV9UWVBFX1JFVFJBSU5JTkcgPSAxLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgcHBfc211X3dtX3NldF9yYW5nZSB7CjE0NDc0OiAgdWludDE2X3Qg bWluX2ZpbGxfY2xrX21oejsKMTQ0NzQ6ICB1aW50MTZfdCBtYXhfZmlsbF9jbGtfbWh6OwoxNDQ3 NDogIHVpbnQxNl90IG1pbl9kcmFpbl9jbGtfbWh6OwoxNDQ3NDogIHVpbnQxNl90IG1heF9kcmFp bl9jbGtfbWh6OwoxNDQ3NDogCjE0NDc0OiAgdWludDhfdCB3bV9pbnN0OwoxNDQ3NDogIHVpbnQ4 X3Qgd21fdHlwZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgcHBfc211X3dtX3JhbmdlX3NldHMgewoxNDQ3NDogIHVuc2lnbmVkIGludCBudW1fcmVhZGVy X3dtX3NldHM7CjE0NDc0OiAgc3RydWN0IHBwX3NtdV93bV9zZXRfcmFuZ2UgcmVhZGVyX3dtX3Nl dHNbNF07CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbnVtX3dyaXRlcl93bV9zZXRzOwox NDQ3NDogIHN0cnVjdCBwcF9zbXVfd21fc2V0X3JhbmdlIHdyaXRlcl93bV9zZXRzWzRdOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBwX3NtdV9mdW5jc19ydiB7CjE0NDc0OiAgc3Ry dWN0IHBwX3NtdSBwcF9zbXU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIHZvaWQgKCpzZXRfZGlzcGxheV9jb3VudCkoc3RydWN0IHBwX3NtdSAqcHAsIGlu dCBjb3VudCk7CjE0NDc0OiAjIDExNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RtX3BwX3NtdS5oIgoxNDQ3NDogIHZvaWQgKCpzZXRfd21fcmFuZ2VzKShzdHJ1 Y3QgcHBfc211ICpwcCwKMTQ0NzQ6ICAgIHN0cnVjdCBwcF9zbXVfd21fcmFuZ2Vfc2V0cyAqcmFu Z2VzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpzZXRf aGFyZF9taW5fZGNmY2xrX2J5X2ZyZXEpKHN0cnVjdCBwcF9zbXUgKnBwLCBpbnQgbWh6KTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9t aW5fZGVlcF9zbGVlcF9kY2ZjbGspKHN0cnVjdCBwcF9zbXUgKnBwLCBpbnQgbWh6KTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpzZXRfaGFyZF9taW5fZmNs a19ieV9mcmVxKShzdHJ1Y3QgcHBfc211ICpwcCwgaW50IG1oeik7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2V0X2hhcmRfbWluX3NvY2Nsa19ieV9mcmVx KShzdHJ1Y3QgcHBfc211ICpwcCwgaW50IG1oeik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZv aWQgKCpzZXRfcG1lX3dhX2VuYWJsZSkoc3RydWN0IHBwX3NtdSAqcHApOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBwcF9zbXVfbnZfY2xvY2tf aWQgewoxNDQ3NDogIFBQX1NNVV9OVl9ESVNQQ0xLLAoxNDQ3NDogIFBQX1NNVV9OVl9QSFlDTEss CjE0NDc0OiAgUFBfU01VX05WX1BJWEVMQ0xLCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHBfc211X252X2Nsb2NrX3RhYmxlIHsKMTQ0NzQ6 IAoxNDQ3NDogIHVuc2lnbmVkIGludCBkaXNwbGF5Q2xvY2tJbktoejsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgZHBwQ2xvY2tJbktoejsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcGh5Q2xvY2tJbktoejsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcGl4ZWxDbG9ja0luS2h6OwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBkc2NDbG9ja0luS2h6OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZmFi cmljQ2xvY2tJbktoejsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc29jQ2xvY2tJbktoejsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgZGNmQ2xvY2tJbktoejsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdUNsb2Nr SW5LaHo7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHBfc211X2Z1bmNzX252IHsK MTQ0NzQ6ICBzdHJ1Y3QgcHBfc211IHBwX3NtdTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIGVudW0gcHBfc211X3N0YXR1cyAoKnNldF9kaXNwbGF5X2NvdW50KShzdHJ1 Y3QgcHBfc211ICpwcCwgaW50IGNvdW50KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIGVudW0gcHBfc211X3N0YXR1cyAoKnNldF9oYXJkX21pbl9kY2ZjbGtfYnlfZnJl cSkoc3RydWN0IHBwX3NtdSAqcHAsIGludCBNaHopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfbWluX2RlZXBf c2xlZXBfZGNmY2xrKShzdHJ1Y3QgcHBfc211ICpwcCwgaW50IE1oeik7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfaGFyZF9t aW5fdWNsa19ieV9mcmVxKShzdHJ1Y3QgcHBfc211ICpwcCwgaW50IE1oeik7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfaGFy ZF9taW5fc29jY2xrX2J5X2ZyZXEpKHN0cnVjdCBwcF9zbXUgKnBwLCBpbnQgTWh6KTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgZW51bSBwcF9zbXVfc3RhdHVzICgqc2V0X3BtZV93YV9lbmFibGUp KHN0cnVjdCBwcF9zbXUgKnBwKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIGVudW0gcHBfc211X3N0YXR1cyAoKnNldF92b2x0YWdlX2J5X2ZyZXEpKHN0cnVjdCBwcF9z bXUgKnBwLAoxNDQ3NDogICAgZW51bSBwcF9zbXVfbnZfY2xvY2tfaWQgY2xvY2tfaWQsIGludCBN aHopOwoxNDQ3NDogIyAyMTkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9kbV9wcF9zbXUuaCIKMTQ0NzQ6ICBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfd21fcmFu Z2VzKShzdHJ1Y3QgcHBfc211ICpwcCwKMTQ0NzQ6ICAgIHN0cnVjdCBwcF9zbXVfd21fcmFuZ2Vf c2V0cyAqcmFuZ2VzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGVu dW0gcHBfc211X3N0YXR1cyAoKmdldF9tYXhpbXVtX3N1c3RhaW5hYmxlX2Nsb2Nrcykoc3RydWN0 IHBwX3NtdSAqcHAsCjE0NDc0OiAgICBzdHJ1Y3QgcHBfc211X252X2Nsb2NrX3RhYmxlICptYXhf Y2xvY2tzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHBwX3NtdV9zdGF0 dXMgKCpnZXRfdWNsa19kcG1fc3RhdGVzKShzdHJ1Y3QgcHBfc211ICpwcCwKMTQ0NzQ6ICAgIHVu c2lnbmVkIGludCAqY2xvY2tfdmFsdWVzX2luX2toeiwgdW5zaWduZWQgaW50ICpudW1fc3RhdGVz KTsKMTQ0NzQ6ICMgMjQyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvZG1fcHBfc211LmgiCjE0NDc0OiAgZW51bSBwcF9zbXVfc3RhdHVzICgqc2V0X3BzdGF0ZV9o YW5kc2hha2Vfc3VwcG9ydCkoc3RydWN0IHBwX3NtdSAqcHAsCjE0NDc0OiAgICBCT09MRUFOIHBz dGF0ZV9oYW5kc2hha2Vfc3VwcG9ydGVkKTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHBtX2Nsb2NrIHsKMTQ0 NzQ6ICAgdWludDMyX3QgRnJlcTsKMTQ0NzQ6ICAgdWludDMyX3QgVm9sOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcG1fY2xvY2tzIHsKMTQ0NzQ6ICBz dHJ1Y3QgZHBtX2Nsb2NrIERjZkNsb2Nrc1s4XTsKMTQ0NzQ6ICBzdHJ1Y3QgZHBtX2Nsb2NrIFNv Y0Nsb2Nrc1s4XTsKMTQ0NzQ6ICBzdHJ1Y3QgZHBtX2Nsb2NrIEZDbG9ja3NbNF07CjE0NDc0OiAg c3RydWN0IGRwbV9jbG9jayBNZW1DbG9ja3NbNF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBwcF9zbXVfZnVuY3Nfcm4gewoxNDQ3NDogIHN0cnVjdCBwcF9zbXUgcHBf c211OwoxNDQ3NDogIyAyNzcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9kbV9wcF9zbXUuaCIKMTQ0NzQ6ICBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfd21fcmFu Z2VzKShzdHJ1Y3QgcHBfc211ICpwcCwKMTQ0NzQ6ICAgIHN0cnVjdCBwcF9zbXVfd21fcmFuZ2Vf c2V0cyAqcmFuZ2VzKTsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gcHBfc211X3N0YXR1cyAoKmdldF9k cG1fY2xvY2tfdGFibGUpIChzdHJ1Y3QgcHBfc211ICpwcCwKMTQ0NzQ6ICAgIHN0cnVjdCBkcG1f Y2xvY2tzICpjbG9ja190YWJsZSk7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHBf c211X2Z1bmNzIHsKMTQ0NzQ6ICBzdHJ1Y3QgcHBfc211IGN0eDsKMTQ0NzQ6ICB1bmlvbiB7CjE0 NDc0OiAgIHN0cnVjdCBwcF9zbXVfZnVuY3NfcnYgcnZfZnVuY3M7CjE0NDc0OiAgIHN0cnVjdCBw cF9zbXVfZnVuY3NfbnYgbnZfZnVuY3M7CjE0NDc0OiAgIHN0cnVjdCBwcF9zbXVfZnVuY3Nfcm4g cm5fZnVuY3M7CjE0NDc0OiAKMTQ0NzQ6ICB9OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTMgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAy CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGxp bmtfaW5pdF9kYXRhIHsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGMgKmRjOwoxNDQ3NDogIHN0cnVj dCBkY19jb250ZXh0ICpjdHg7CjE0NDc0OiAgdWludDMyX3QgY29ubmVjdG9yX2luZGV4OwoxNDQ3 NDogIHVpbnQzMl90IGxpbmtfaW5kZXg7CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkY19saW5rICpsaW5rX2NyZWF0ZShjb25zdCBzdHJ1Y3QgbGlua19pbml0X2RhdGEg KmluaXRfcGFyYW1zKTsKMTQ0NzQ6IHZvaWQgbGlua19kZXN0cm95KHN0cnVjdCBkY19saW5rICoq bGluayk7CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfc3RhdHVzIGRjX2xpbmtfdmFsaWRhdGVfbW9k ZV90aW1pbmcoCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwK MTQ0NzQ6ICAgc3RydWN0IGRjX2xpbmsgKmxpbmssCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19j cnRjX3RpbWluZyAqdGltaW5nKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBjb3JlX2xpbmtfcmVzdW1l KHN0cnVjdCBkY19saW5rICpsaW5rKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBjb3JlX2xpbmtfZW5h YmxlX3N0cmVhbSgKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0YXRlICpzdGF0ZSwKMTQ0NzQ6ICAgc3Ry dWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgY29yZV9saW5rX2Rp c2FibGVfc3RyZWFtKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogCjE0NDc0OiB2 b2lkIGNvcmVfbGlua19zZXRfYXZtdXRlKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgsIGJvb2wg ZW5hYmxlKTsKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L3RyYW5zZm9ybS5oIiAxCjE0NDc0OiAjIDg1ICIuL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgox NDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5j L2h3L2RwcC5oIiAxCjE0NDc0OiAjIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvaW5jL2h3L2RwcC5oIgoxNDQ3NDogc3RydWN0IGRwcCB7CjE0NDc0OiAgY29u c3Qgc3RydWN0IGRwcF9mdW5jcyAqZnVuY3M7CjE0NDc0OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0 eDsKMTQ0NzQ6ICBpbnQgaW5zdDsKMTQ0NzQ6ICBzdHJ1Y3QgZHBwX2NhcHMgKmNhcHM7CjE0NDc0 OiAgc3RydWN0IHB3bF9wYXJhbXMgcmVnYW1tYV9wYXJhbXM7CjE0NDc0OiAgc3RydWN0IHB3bF9w YXJhbXMgZGVnYW1tYV9wYXJhbXM7CjE0NDc0OiAgc3RydWN0IGRwcF9jdXJzb3JfYXR0cmlidXRl cyBjdXJfYXR0cjsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBwd2xfcGFyYW1zIHNoYXBlcl9wYXJh bXM7CjE0NDc0OiAgYm9vbCBjbV9ieXBhc3NfbW9kZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkcHBfaW5wdXRfY3NjX21hdHJpeCB7CjE0NDc0OiAgZW51bSBkY19jb2xvcl9zcGFj ZSBjb2xvcl9zcGFjZTsKMTQ0NzQ6ICB1aW50MTZfdCByZWd2YWxbMTJdOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBkcHBfaW5wdXRfY3NjX21hdHJpeCBkcHBf aW5wdXRfY3NjX21hdHJpeFtdID0gewoxNDQ3NDogIHtDT0xPUl9TUEFDRV9TUkdCLAoxNDQ3NDog ICB7MHgyMDAwLCAwLCAwLCAwLCAwLCAweDIwMDAsIDAsIDAsIDAsIDAsIDB4MjAwMCwgMH0gfSwK MTQ0NzQ6ICB7Q09MT1JfU1BBQ0VfU1JHQl9MSU1JVEVELAoxNDQ3NDogICB7MHgyMDAwLCAwLCAw LCAwLCAwLCAweDIwMDAsIDAsIDAsIDAsIDAsIDB4MjAwMCwgMH0gfSwKMTQ0NzQ6ICB7Q09MT1Jf U1BBQ0VfWUNCQ1I2MDEsCjE0NDc0OiAgIHsweDJjZGQsIDB4MjAwMCwgMCwgMHhlOTkxLCAweGU5 MjYsIDB4MjAwMCwgMHhmNGZkLCAweDEwZWYsCjE0NDc0OiAgICAgICAwLCAweDIwMDAsIDB4Mzhi NCwgMHhlM2E2fSB9LAoxNDQ3NDogIHtDT0xPUl9TUEFDRV9ZQ0JDUjYwMV9MSU1JVEVELAoxNDQ3 NDogICB7MHgzMzUzLCAweDI1NjgsIDAsIDB4ZTQwMCwgMHhlNWRjLCAweDI1NjgsIDB4ZjM2Nywg MHgxMTA4LAoxNDQ3NDogICAgICAgMCwgMHgyNTY4LCAweDQwZGUsIDB4ZGQzYX0gfSwKMTQ0NzQ6 ICB7Q09MT1JfU1BBQ0VfWUNCQ1I3MDksCjE0NDc0OiAgIHsweDMyNjUsIDB4MjAwMCwgMCwgMHhl NmNlLCAweGYxMDUsIDB4MjAwMCwgMHhmYTAxLCAweGE3ZCwgMCwKMTQ0NzQ6ICAgICAgIDB4MjAw MCwgMHgzYjYxLCAweGUyNGZ9IH0sCjE0NDc0OiAKMTQ0NzQ6ICB7Q09MT1JfU1BBQ0VfWUNCQ1I3 MDlfTElNSVRFRCwKMTQ0NzQ6ICAgezB4MzlhNiwgMHgyNTY4LCAwLCAweGUwZDYsIDB4ZWVkZCwg MHgyNTY4LCAweGY5MjUsIDB4OWE4LCAwLAoxNDQ3NDogICAgICAgMHgyNTY4LCAweDQzZWUsIDB4 ZGJiMn0gfQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRwcF9ncnBoX2NzY19hZGp1 c3RtZW50IHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiB0ZW1wZXJhdHVyZV9tYXRyaXhbMTJd OwoxNDQ3NDogIGVudW0gZ3JhcGhpY3NfZ2FtdXRfYWRqdXN0X3R5cGUgZ2FtdXRfYWRqdXN0X3R5 cGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY252X2NvbG9yX2tleWVyX3BhcmFt cyB7CjE0NDc0OiAgaW50IGNvbG9yX2tleWVyX2VuOwoxNDQ3NDogIGludCBjb2xvcl9rZXllcl9t b2RlOwoxNDQ3NDogIGludCBjb2xvcl9rZXllcl9hbHBoYV9sb3c7CjE0NDc0OiAgaW50IGNvbG9y X2tleWVyX2FscGhhX2hpZ2g7CjE0NDc0OiAgaW50IGNvbG9yX2tleWVyX3JlZF9sb3c7CjE0NDc0 OiAgaW50IGNvbG9yX2tleWVyX3JlZF9oaWdoOwoxNDQ3NDogIGludCBjb2xvcl9rZXllcl9ncmVl bl9sb3c7CjE0NDc0OiAgaW50IGNvbG9yX2tleWVyX2dyZWVuX2hpZ2g7CjE0NDc0OiAgaW50IGNv bG9yX2tleWVyX2JsdWVfbG93OwoxNDQ3NDogIGludCBjb2xvcl9rZXllcl9ibHVlX2hpZ2g7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY252X2FscGhhXzJiaXRfbHV0IHsKMTQ0NzQ6ICBpbnQgbHV0 MDsKMTQ0NzQ6ICBpbnQgbHV0MTsKMTQ0NzQ6ICBpbnQgbHV0MjsKMTQ0NzQ6ICBpbnQgbHV0MzsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY25fZHBwX3N0YXRlIHsKMTQ0NzQ6ICB1 aW50MzJfdCBpc19lbmFibGVkOwoxNDQ3NDogIHVpbnQzMl90IGlnYW1fbHV0X21vZGU7CjE0NDc0 OiAgdWludDMyX3QgaWdhbV9pbnB1dF9mb3JtYXQ7CjE0NDc0OiAgdWludDMyX3QgZGdhbV9sdXRf bW9kZTsKMTQ0NzQ6ICB1aW50MzJfdCByZ2FtX2x1dF9tb2RlOwoxNDQ3NDogIHVpbnQzMl90IGdh bXV0X3JlbWFwX21vZGU7CjE0NDc0OiAgdWludDMyX3QgZ2FtdXRfcmVtYXBfYzExX2MxMjsKMTQ0 NzQ6ICB1aW50MzJfdCBnYW11dF9yZW1hcF9jMTNfYzE0OwoxNDQ3NDogIHVpbnQzMl90IGdhbXV0 X3JlbWFwX2MyMV9jMjI7CjE0NDc0OiAgdWludDMyX3QgZ2FtdXRfcmVtYXBfYzIzX2MyNDsKMTQ0 NzQ6ICB1aW50MzJfdCBnYW11dF9yZW1hcF9jMzFfYzMyOwoxNDQ3NDogIHVpbnQzMl90IGdhbXV0 X3JlbWFwX2MzM19jMzQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgQ01fYmlhc19w YXJhbXMgewoxNDQ3NDogIHVpbnQzMl90IGNtX2JpYXNfY3JfcjsKMTQ0NzQ6ICB1aW50MzJfdCBj bV9iaWFzX3lfZzsKMTQ0NzQ6ICB1aW50MzJfdCBjbV9iaWFzX2NiX2I7CjE0NDc0OiAgdWludDMy X3QgY21fYmlhc19mb3JtYXQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHBwX2Z1 bmNzIHsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfcHJvZ3JhbV9jbV9kZWFscGhhKShzdHJ1 Y3QgZHBwICpkcHBfYmFzZSwKMTQ0NzQ6ICAgdWludDMyX3QgZW5hYmxlLCB1aW50MzJfdCBhZGRp dGl2ZV9ibGVuZGluZyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZHBwX3Byb2dyYW1fY21fYmlh cykoCjE0NDc0OiAgIHN0cnVjdCBkcHAgKmRwcF9iYXNlLAoxNDQ3NDogICBzdHJ1Y3QgQ01fYmlh c19wYXJhbXMgKmJpYXNfcGFyYW1zKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfcmVhZF9z dGF0ZSkoc3RydWN0IGRwcCAqZHBwLCBzdHJ1Y3QgZGNuX2RwcF9zdGF0ZSAqcyk7CjE0NDc0OiAK MTQ0NzQ6ICB2b2lkICgqZHBwX3Jlc2V0KShzdHJ1Y3QgZHBwICpkcHApOwoxNDQ3NDogCjE0NDc0 OiAgdm9pZCAoKmRwcF9zZXRfc2NhbGVyKShzdHJ1Y3QgZHBwICpkcHAsCjE0NDc0OiAgICBjb25z dCBzdHJ1Y3Qgc2NhbGVyX2RhdGEgKnNjbF9kYXRhKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpk cHBfc2V0X3BpeGVsX3N0b3JhZ2VfZGVwdGgpKAoxNDQ3NDogICAgc3RydWN0IGRwcCAqZHBwLAox NDQ3NDogICAgZW51bSBsYl9waXhlbF9kZXB0aCBkZXB0aCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVj dCBiaXRfZGVwdGhfcmVkdWN0aW9uX3BhcmFtcyAqYml0X2RlcHRoX3BhcmFtcyk7CjE0NDc0OiAK MTQ0NzQ6ICBib29sICgqZHBwX2dldF9vcHRpbWFsX251bWJlcl9vZl90YXBzKSgKMTQ0NzQ6ICAg IHN0cnVjdCBkcHAgKmRwcCwKMTQ0NzQ6ICAgIHN0cnVjdCBzY2FsZXJfZGF0YSAqc2NsX2RhdGEs CjE0NDc0OiAgICBjb25zdCBzdHJ1Y3Qgc2NhbGluZ190YXBzICppbl90YXBzKTsKMTQ0NzQ6IAox NDQ3NDogIHZvaWQgKCpkcHBfc2V0X2dhbXV0X3JlbWFwKSgKMTQ0NzQ6ICAgIHN0cnVjdCBkcHAg KmRwcCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBkcHBfZ3JwaF9jc2NfYWRqdXN0bWVudCAqYWRq dXN0KTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfc2V0X2NzY19kZWZhdWx0KSgKMTQ0NzQ6 ICAgc3RydWN0IGRwcCAqZHBwLAoxNDQ3NDogICBlbnVtIGRjX2NvbG9yX3NwYWNlIGNvbG9yc3Bh Y2UpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwcF9zZXRfY3NjX2FkanVzdG1lbnQpKAoxNDQ3 NDogICBzdHJ1Y3QgZHBwICpkcHAsCjE0NDc0OiAgIGNvbnN0IHVpbnQxNl90ICpyZWd2YWwpOwox NDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwcF9wb3dlcl9vbl9yZWdhbW1hX2x1dCkoCjE0NDc0OiAg IHN0cnVjdCBkcHAgKmRwcCwKMTQ0NzQ6ICAgYm9vbCBwb3dlcl9vbik7CjE0NDc0OiAKMTQ0NzQ6 ICB2b2lkICgqZHBwX3Byb2dyYW1fcmVnYW1tYV9sdXQpKAoxNDQ3NDogICAgc3RydWN0IGRwcCAq ZHBwLAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IHB3bF9yZXN1bHRfZGF0YSAqcmdiLAoxNDQ3NDog ICAgdWludDMyX3QgbnVtKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfY29uZmlndXJlX3Jl Z2FtbWFfbHV0KSgKMTQ0NzQ6ICAgIHN0cnVjdCBkcHAgKmRwcCwKMTQ0NzQ6ICAgIGJvb2wgaXNf cmFtX2EpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwcF9wcm9ncmFtX3JlZ2FtbWFfbHV0Yl9z ZXR0aW5ncykoCjE0NDc0OiAgICBzdHJ1Y3QgZHBwICpkcHAsCjE0NDc0OiAgICBjb25zdCBzdHJ1 Y3QgcHdsX3BhcmFtcyAqcGFyYW1zKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfcHJvZ3Jh bV9yZWdhbW1hX2x1dGFfc2V0dGluZ3MpKAoxNDQ3NDogICAgc3RydWN0IGRwcCAqZHBwLAoxNDQ3 NDogICAgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqZHBwX3Byb2dyYW1fcmVnYW1tYV9wd2wpKAoxNDQ3NDogICBzdHJ1Y3QgZHBwICpkcHAs CjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBwd2xfcGFyYW1zICpwYXJhbXMsCjE0NDc0OiAgIGVudW0g b3BwX3JlZ2FtbWEgbW9kZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZHBwX3Byb2dyYW1fYmlh c19hbmRfc2NhbGUpKAoxNDQ3NDogICAgc3RydWN0IGRwcCAqZHBwLAoxNDQ3NDogICAgc3RydWN0 IGRjX2JpYXNfYW5kX3NjYWxlICpwYXJhbXMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwcF9z ZXRfZGVnYW1tYSkoCjE0NDc0OiAgICBzdHJ1Y3QgZHBwICpkcHBfYmFzZSwKMTQ0NzQ6ICAgIGVu dW0gaXBwX2RlZ2FtbWFfbW9kZSBtb2RlKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfcHJv Z3JhbV9pbnB1dF9sdXQpKAoxNDQ3NDogICAgc3RydWN0IGRwcCAqZHBwX2Jhc2UsCjE0NDc0OiAg ICBjb25zdCBzdHJ1Y3QgZGNfZ2FtbWEgKmdhbW1hKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpk cHBfcHJvZ3JhbV9kZWdhbW1hX3B3bCkoc3RydWN0IGRwcCAqZHBwX2Jhc2UsCjE0NDc0OiAgICAg ICAgICAgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqZHBwX3NldHVwKSgKMTQ0NzQ6ICAgIHN0cnVjdCBkcHAgKmRwcF9iYXNlLAoxNDQ3NDog ICAgZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQsCjE0NDc0OiAgICBlbnVtIGV4cGFu c2lvbl9tb2RlIG1vZGUsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY3NjX3RyYW5zZm9ybSBpbnB1dF9j c2NfY29sb3JfbWF0cml4LAoxNDQ3NDogICAgZW51bSBkY19jb2xvcl9zcGFjZSBpbnB1dF9jb2xv cl9zcGFjZSwKMTQ0NzQ6ICAgIHN0cnVjdCBjbnZfYWxwaGFfMmJpdF9sdXQgKmFscGhhXzJiaXRf bHV0KTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfZnVsbF9ieXBhc3MpKHN0cnVjdCBkcHAg KmRwcF9iYXNlKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpzZXRfY3Vyc29yX2F0dHJpYnV0ZXMp KAoxNDQ3NDogICAgc3RydWN0IGRwcCAqZHBwX2Jhc2UsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY3Vy c29yX2F0dHJpYnV0ZXMgKmN1cnNvcl9hdHRyaWJ1dGVzKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQg KCpzZXRfY3Vyc29yX3Bvc2l0aW9uKSgKMTQ0NzQ6ICAgIHN0cnVjdCBkcHAgKmRwcF9iYXNlLAox NDQ3NDogICAgY29uc3Qgc3RydWN0IGRjX2N1cnNvcl9wb3NpdGlvbiAqcG9zLAoxNDQ3NDogICAg Y29uc3Qgc3RydWN0IGRjX2N1cnNvcl9taV9wYXJhbSAqcGFyYW0sCjE0NDc0OiAgICB1aW50MzJf dCB3aWR0aCwKMTQ0NzQ6ICAgIHVpbnQzMl90IGhlaWdodAoxNDQ3NDogICAgKTsKMTQ0NzQ6IAox NDQ3NDogIHZvaWQgKCpkcHBfc2V0X2hkcl9tdWx0aXBsaWVyKSgKMTQ0NzQ6ICAgIHN0cnVjdCBk cHAgKmRwcF9iYXNlLAoxNDQ3NDogICAgdWludDMyX3QgbXVsdGlwbGllcik7CjE0NDc0OiAKMTQ0 NzQ6ICB2b2lkICgqc2V0X29wdGlvbmFsX2N1cnNvcl9hdHRyaWJ1dGVzKSgKMTQ0NzQ6ICAgIHN0 cnVjdCBkcHAgKmRwcF9iYXNlLAoxNDQ3NDogICAgc3RydWN0IGRwcF9jdXJzb3JfYXR0cmlidXRl cyAqYXR0cik7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZHBwX2RwcGNsa19jb250cm9sKSgKMTQ0 NzQ6ICAgIHN0cnVjdCBkcHAgKmRwcF9iYXNlLAoxNDQ3NDogICAgYm9vbCBkcHBjbGtfZGl2LAox NDQ3NDogICAgYm9vbCBlbmFibGUpOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCAoKmRwcF9wcm9ncmFt X2JsbmRfbHV0KSgKMTQ0NzQ6ICAgIHN0cnVjdCBkcHAgKmRwcCwKMTQ0NzQ6ICAgIGNvbnN0IHN0 cnVjdCBwd2xfcGFyYW1zICpwYXJhbXMpOwoxNDQ3NDogIGJvb2wgKCpkcHBfcHJvZ3JhbV9zaGFw ZXJfbHV0KSgKMTQ0NzQ6ICAgIHN0cnVjdCBkcHAgKmRwcCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVj dCBwd2xfcGFyYW1zICpwYXJhbXMpOwoxNDQ3NDogIGJvb2wgKCpkcHBfcHJvZ3JhbV8zZGx1dCko CjE0NDc0OiAgICBzdHJ1Y3QgZHBwICpkcHAsCjE0NDc0OiAgICBzdHJ1Y3QgdGV0cmFoZWRyYWxf cGFyYW1zICpwYXJhbXMpOwoxNDQ3NDogIHZvaWQgKCpkcHBfY252X3NldF9hbHBoYV9rZXllciko CjE0NDc0OiAgICBzdHJ1Y3QgZHBwICpkcHBfYmFzZSwKMTQ0NzQ6ICAgIHN0cnVjdCBjbnZfY29s b3Jfa2V5ZXJfcGFyYW1zICpjb2xvcl9rZXllcik7CjE0NDc0OiB9OwoxNDQ3NDogIyA4NiAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jb3JlX3R5cGVzLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJlc291cmNlX3Bvb2w7CjE0NDc0OiBzdHJ1Y3QgZGNf c3RhdGU7CjE0NDc0OiBzdHJ1Y3QgcmVzb3VyY2VfY29udGV4dDsKMTQ0NzQ6IHN0cnVjdCBjbGtf YndfcGFyYW1zOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcmVzb3VyY2VfZnVuY3MgewoxNDQ3NDog IHZvaWQgKCpkZXN0cm95KShzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqKnBvb2wpOwoxNDQ3NDogIHZv aWQgKCpsaW5rX2luaXQpKHN0cnVjdCBkY19saW5rICpsaW5rKTsKMTQ0NzQ6ICBzdHJ1Y3QgbGlu a19lbmNvZGVyICooKmxpbmtfZW5jX2NyZWF0ZSkoCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3QgZW5j b2Rlcl9pbml0X2RhdGEgKmluaXQpOwoxNDQ3NDogIGJvb2wgKCp2YWxpZGF0ZV9iYW5kd2lkdGgp KAoxNDQ3NDogICAgICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICAgICBzdHJ1Y3QgZGNfc3RhdGUg KmNvbnRleHQsCjE0NDc0OiAgICAgIGJvb2wgZmFzdF92YWxpZGF0ZSk7CjE0NDc0OiAKMTQ0NzQ6 ICBpbnQgKCpwb3B1bGF0ZV9kbWxfcGlwZXMpKAoxNDQ3NDogICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3 NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCjE0NDc0OiAgIGRpc3BsYXlfZTJlX3BpcGVf cGFyYW1zX3N0ICpwaXBlcyk7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRjX3N0YXR1cyAoKnZhbGlk YXRlX2dsb2JhbCkoCjE0NDc0OiAgIHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgIHN0cnVjdCBkY19z dGF0ZSAqY29udGV4dCk7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgcGlwZV9jdHggKigqYWNxdWly ZV9pZGxlX3BpcGVfZm9yX2xheWVyKSgKMTQ0NzQ6ICAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4 dCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sLAoxNDQ3NDogICAg c3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gZGNf c3RhdHVzICgqdmFsaWRhdGVfcGxhbmUpKGNvbnN0IHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUsIHN0cnVjdCBkY19jYXBzICpjYXBzKTsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gZGNf c3RhdHVzICgqYWRkX3N0cmVhbV90b19jdHgpKAoxNDQ3NDogICAgc3RydWN0IGRjICpkYywKMTQ0 NzQ6ICAgIHN0cnVjdCBkY19zdGF0ZSAqbmV3X2N0eCwKMTQ0NzQ6ICAgIHN0cnVjdCBkY19zdHJl YW1fc3RhdGUgKmRjX3N0cmVhbSk7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRjX3N0YXR1cyAoKnJl bW92ZV9zdHJlYW1fZnJvbV9jdHgpKAoxNDQ3NDogICAgIHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAg ICAgc3RydWN0IGRjX3N0YXRlICpuZXdfY3R4LAoxNDQ3NDogICAgIHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAgZW51bSBkY19zdGF0dXMgKCpnZXRfZGVmYXVsdF9zd2l6 emxlX21vZGUpKAoxNDQ3NDogICAgc3RydWN0IGRjX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7 CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKigqZmluZF9maXJzdF9mcmVl X21hdGNoX3N0cmVhbV9lbmNfZm9yX2xpbmspKAoxNDQ3NDogICAgc3RydWN0IHJlc291cmNlX2Nv bnRleHQgKnJlc19jdHgsCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqcG9v bCwKMTQ0NzQ6ICAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAgdm9p ZCAoKnBvcHVsYXRlX2RtbF93cml0ZWJhY2tfZnJvbV9jb250ZXh0KSgKMTQ0NzQ6ICAgIHN0cnVj dCBkYyAqZGMsCjE0NDc0OiAgICBzdHJ1Y3QgcmVzb3VyY2VfY29udGV4dCAqcmVzX2N0eCwKMTQ0 NzQ6ICAgIGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcyk7CjE0NDc0OiAKMTQ0NzQ6 ICB2b2lkICgqc2V0X21jaWZfYXJiX3BhcmFtcykoCjE0NDc0OiAgICBzdHJ1Y3QgZGMgKmRjLAox NDQ3NDogICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0LAoxNDQ3NDogICAgZGlzcGxheV9lMmVf cGlwZV9wYXJhbXNfc3QgKnBpcGVzLAoxNDQ3NDogICAgaW50IHBpcGVfY250KTsKMTQ0NzQ6ICB2 b2lkICgqdXBkYXRlX2J3X2JvdW5kaW5nX2JveCkoCjE0NDc0OiAgICBzdHJ1Y3QgZGMgKmRjLAox NDQ3NDogICAgc3RydWN0IGNsa19id19wYXJhbXMgKmJ3X3BhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdWRpb19zdXBwb3J0ewoxNDQ3NDogIGJvb2wgZHBf YXVkaW87CjE0NDc0OiAgYm9vbCBoZG1pX2F1ZGlvX29uX2RvbmdsZTsKMTQ0NzQ6ICBib29sIGhk bWlfYXVkaW9fbmF0aXZlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCByZXNvdXJjZV9wb29sIHsKMTQ0NzQ6ICBzdHJ1Y3QgbWVtX2lucHV0ICptaXNbNl07 CjE0NDc0OiAgc3RydWN0IGh1YnAgKmh1YnBzWzZdOwoxNDQ3NDogIHN0cnVjdCBpbnB1dF9waXhl bF9wcm9jZXNzb3IgKmlwcHNbNl07CjE0NDc0OiAgc3RydWN0IHRyYW5zZm9ybSAqdHJhbnNmb3Jt c1s2XTsKMTQ0NzQ6ICBzdHJ1Y3QgZHBwICpkcHBzWzZdOwoxNDQ3NDogIHN0cnVjdCBvdXRwdXRf cGl4ZWxfcHJvY2Vzc29yICpvcHBzWzZdOwoxNDQ3NDogIHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9y ICp0aW1pbmdfZ2VuZXJhdG9yc1s2XTsKMTQ0NzQ6ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKnN0 cmVhbV9lbmNbNiAqIDJdOwoxNDQ3NDogIHN0cnVjdCBodWJidWIgKmh1YmJ1YjsKMTQ0NzQ6ICBz dHJ1Y3QgbXBjICptcGM7CjE0NDc0OiAgc3RydWN0IHBwX3NtdV9mdW5jcyAqcHBfc211OwoxNDQ3 NDogIHN0cnVjdCBkY2VfYXV4ICplbmdpbmVzWzZdOwoxNDQ3NDogIHN0cnVjdCBkY2VfaTJjX2h3 ICpod19pMmNzWzZdOwoxNDQ3NDogIHN0cnVjdCBkY2VfaTJjX3N3ICpzd19pMmNzWzZdOwoxNDQ3 NDogIGJvb2wgaTJjX2h3X2J1ZmZlcl9pbl91c2U7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZHdi YyAqZHdiY1sxXTsKMTQ0NzQ6ICBzdHJ1Y3QgbWNpZl93YiAqbWNpZl93YlsxXTsKMTQ0NzQ6ICBz dHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgZ3NsXzA6MTsKMTQ0NzQ6ICAgdW5zaWduZWQg aW50IGdzbF8xOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBnc2xfMjoxOwoxNDQ3NDogIH0gZ3Ns X2dyb3VwczsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkaXNwbGF5X3N0cmVhbV9jb21wcmVzc29y ICpkc2NzWzZdOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IHBpcGVfY291bnQ7CjE0NDc0 OiAgdW5zaWduZWQgaW50IHVuZGVybGF5X3BpcGVfaW5kZXg7CjE0NDc0OiAgdW5zaWduZWQgaW50 IHN0cmVhbV9lbmNfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNp Z25lZCBpbnQgeHRhbGluX2Nsb2NrX2luS2h6OwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgZGNjZ19y ZWZfY2xvY2tfaW5LaHo7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBkY2h1Yl9yZWZfY2xvY2tfaW5L aHo7CjE0NDc0OiAgfSByZWZfY2xvY2tzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB0aW1pbmdfZ2Vu ZXJhdG9yX2NvdW50OwoxNDQ3NDogIHVuc2lnbmVkIGludCBtcGNjX2NvdW50OwoxNDQ3NDogCjE0 NDc0OiAgdW5zaWduZWQgaW50IHdyaXRlYmFja19waXBlX2NvdW50OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBjbG9ja19zb3VyY2UgKmRwX2Nsb2NrX3NvdXJjZTsKMTQ0 NzQ6IAoxNDQ3NDogIHN0cnVjdCBjbG9ja19zb3VyY2UgKmNsb2NrX3NvdXJjZXNbN107CjE0NDc0 OiAgdW5zaWduZWQgaW50IGNsa19zcmNfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgYXVk aW8gKmF1ZGlvc1s3XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgYXVkaW9fY291bnQ7CjE0NDc0OiAg c3RydWN0IGF1ZGlvX3N1cHBvcnQgYXVkaW9fc3VwcG9ydDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVj dCBkY2NnICpkY2NnOwoxNDQ3NDogIHN0cnVjdCBpcnFfc2VydmljZSAqaXJxczsKMTQ0NzQ6IAox NDQ3NDogIHN0cnVjdCBhYm0gKmFibTsKMTQ0NzQ6ICBzdHJ1Y3QgZG1jdSAqZG1jdTsKMTQ0NzQ6 ICBzdHJ1Y3QgZG11Yl9wc3IgKnBzcjsKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0IHN0cnVjdCByZXNv dXJjZV9mdW5jcyAqZnVuY3M7CjE0NDc0OiAgY29uc3Qgc3RydWN0IHJlc291cmNlX2NhcHMgKnJl c19jYXA7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGRjX3NlcnZpY2UgKm9lbV9kZXZpY2U7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNuX2ZlX2JhbmR3aWR0aCB7CjE0NDc0OiAg aW50IGRwcGNsa19raHo7CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBz dHJlYW1fcmVzb3VyY2UgewoxNDQ3NDogIHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpv cHA7CjE0NDc0OiAgc3RydWN0IGRpc3BsYXlfc3RyZWFtX2NvbXByZXNzb3IgKmRzYzsKMTQ0NzQ6 ICBzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGc7CjE0NDc0OiAgc3RydWN0IHN0cmVhbV9lbmNv ZGVyICpzdHJlYW1fZW5jOwoxNDQ3NDogIHN0cnVjdCBhdWRpbyAqYXVkaW87CjE0NDc0OiAKMTQ0 NzQ6ICBzdHJ1Y3QgcGl4ZWxfY2xrX3BhcmFtcyBwaXhfY2xrX3BhcmFtczsKMTQ0NzQ6ICBzdHJ1 Y3QgZW5jb2Rlcl9pbmZvX2ZyYW1lIGVuY29kZXJfaW5mb19mcmFtZTsKMTQ0NzQ6IAoxNDQ3NDog IHN0cnVjdCBhYm0gKmFibTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90 IGdzbF9ncm91cDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwbGFuZV9yZXNvdXJj ZSB7CjE0NDc0OiAgc3RydWN0IHNjYWxlcl9kYXRhIHNjbF9kYXRhOwoxNDQ3NDogIHN0cnVjdCBo dWJwICpodWJwOwoxNDQ3NDogIHN0cnVjdCBtZW1faW5wdXQgKm1pOwoxNDQ3NDogIHN0cnVjdCBp bnB1dF9waXhlbF9wcm9jZXNzb3IgKmlwcDsKMTQ0NzQ6ICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm07 CjE0NDc0OiAgc3RydWN0IGRwcCAqZHBwOwoxNDQ3NDogIHVpbnQ4X3QgbXBjY19pbnN0OwoxNDQ3 NDogCjE0NDc0OiAgc3RydWN0IGRjbl9mZV9iYW5kd2lkdGggYnc7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiB1bmlvbiBwaXBlX3VwZGF0ZV9mbGFncyB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6 ICAgdWludDMyX3QgZW5hYmxlIDogMTsKMTQ0NzQ6ICAgdWludDMyX3QgZGlzYWJsZSA6IDE7CjE0 NDc0OiAgIHVpbnQzMl90IG9kbSA6IDE7CjE0NDc0OiAgIHVpbnQzMl90IGdsb2JhbF9zeW5jIDog MTsKMTQ0NzQ6ICAgdWludDMyX3Qgb3BwX2NoYW5nZWQgOiAxOwoxNDQ3NDogICB1aW50MzJfdCB0 Z19jaGFuZ2VkIDogMTsKMTQ0NzQ6ICAgdWludDMyX3QgbXBjYyA6IDE7CjE0NDc0OiAgIHVpbnQz Ml90IGRwcGNsayA6IDE7CjE0NDc0OiAgIHVpbnQzMl90IGh1YnBfaW50ZXJkZXBlbmRlbnQgOiAx OwoxNDQ3NDogICB1aW50MzJfdCBodWJwX3JxX2RsZ190dHUgOiAxOwoxNDQ3NDogICB1aW50MzJf dCBnYW11dF9yZW1hcCA6IDE7CjE0NDc0OiAgIHVpbnQzMl90IHNjYWxlciA6IDE7CjE0NDc0OiAg IHVpbnQzMl90IHZpZXdwb3J0IDogMTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDMyX3Qg cmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBpcGVfY3R4IHsKMTQ0NzQ6ICBz dHJ1Y3QgZGNfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwoxNDQ3NDogIHN0cnVjdCBkY19zdHJl YW1fc3RhdGUgKnN0cmVhbTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBwbGFuZV9yZXNvdXJjZSBw bGFuZV9yZXM7CjE0NDc0OiAgc3RydWN0IHN0cmVhbV9yZXNvdXJjZSBzdHJlYW1fcmVzOwoxNDQ3 NDogCjE0NDc0OiAgc3RydWN0IGNsb2NrX3NvdXJjZSAqY2xvY2tfc291cmNlOwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IHBsbF9zZXR0aW5ncyBwbGxfc2V0dGluZ3M7CjE0NDc0OiAKMTQ0NzQ6ICB1 aW50OF90IHBpcGVfaWR4OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHBpcGVfY3R4ICp0b3BfcGlw ZTsKMTQ0NzQ6ICBzdHJ1Y3QgcGlwZV9jdHggKmJvdHRvbV9waXBlOwoxNDQ3NDogIHN0cnVjdCBw aXBlX2N0eCAqbmV4dF9vZG1fcGlwZTsKMTQ0NzQ6ICBzdHJ1Y3QgcGlwZV9jdHggKnByZXZfb2Rt X3BpcGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2Rs Z19yZWdzX3N0IGRsZ19yZWdzOwoxNDQ3NDogIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9y ZWdzX3N0IHR0dV9yZWdzOwoxNDQ3NDogIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3JxX3JlZ3Nf c3QgcnFfcmVnczsKMTQ0NzQ6ICBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9waXBlX2Rlc3RfcGFy YW1zX3N0IHBpcGVfZGxnX3BhcmFtOwoxNDQ3NDogCjE0NDc0OiAgdW5pb24gcGlwZV91cGRhdGVf ZmxhZ3MgdXBkYXRlX2ZsYWdzOwoxNDQ3NDogIHN0cnVjdCBkd2JjICpkd2JjOwoxNDQ3NDogIHN0 cnVjdCBtY2lmX3diICptY2lmX3diOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJl c291cmNlX2NvbnRleHQgewoxNDQ3NDogIHN0cnVjdCBwaXBlX2N0eCBwaXBlX2N0eFs2XTsKMTQ0 NzQ6ICBib29sIGlzX3N0cmVhbV9lbmNfYWNxdWlyZWRbNiAqIDJdOwoxNDQ3NDogIGJvb2wgaXNf YXVkaW9fYWNxdWlyZWRbNl07CjE0NDc0OiAgdWludDhfdCBjbG9ja19zb3VyY2VfcmVmX2NvdW50 WzddOwoxNDQ3NDogIHVpbnQ4X3QgZHBfY2xvY2tfc291cmNlX3JlZl9jb3VudDsKMTQ0NzQ6ICBi b29sIGlzX2RzY19hY3F1aXJlZFs2XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBk Y2VfYndfb3V0cHV0IHsKMTQ0NzQ6ICBib29sIGNwdWNfc3RhdGVfY2hhbmdlX2VuYWJsZTsKMTQ0 NzQ6ICBib29sIGNwdXBfc3RhdGVfY2hhbmdlX2VuYWJsZTsKMTQ0NzQ6ICBib29sIHN0dXR0ZXJf bW9kZV9lbmFibGU7CjE0NDc0OiAgYm9vbCBuYnBfc3RhdGVfY2hhbmdlX2VuYWJsZTsKMTQ0NzQ6 ICBib29sIGFsbF9kaXNwbGF5c19pbl9zeW5jOwoxNDQ3NDogIHN0cnVjdCBkY2Vfd2F0ZXJtYXJr cyB1cmdlbnRfd21fbnNbNl07CjE0NDc0OiAgc3RydWN0IGRjZV93YXRlcm1hcmtzIHN0dXR0ZXJf ZXhpdF93bV9uc1s2XTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNlX3dhdGVybWFya3Mgc3R1dHRlcl9lbnRy eV93bV9uc1s2XTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNlX3dhdGVybWFya3MgbmJwX3N0YXRlX2NoYW5n ZV93bV9uc1s2XTsKMTQ0NzQ6ICBpbnQgc2Nsa19raHo7CjE0NDc0OiAgaW50IHNjbGtfZGVlcF9z bGVlcF9raHo7CjE0NDc0OiAgaW50IHljbGtfa2h6OwoxNDQ3NDogIGludCBkaXNwY2xrX2toejsK MTQ0NzQ6ICBpbnQgYmxhY2tvdXRfcmVjb3ZlcnlfdGltZV91czsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBkY25fYndfd3JpdGViYWNrIHsKMTQ0NzQ6ICBzdHJ1Y3QgbWNpZl9hcmJf cGFyYW1zIG1jaWZfd2JfYXJiWzFdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRj bl9id19vdXRwdXQgewoxNDQ3NDogIHN0cnVjdCBkY19jbG9ja3MgY2xrOwoxNDQ3NDogIHN0cnVj dCBkY25fd2F0ZXJtYXJrX3NldCB3YXRlcm1hcmtzOwoxNDQ3NDogIHN0cnVjdCBkY25fYndfd3Jp dGViYWNrIGJ3X3dyaXRlYmFjazsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGJ3X291 dHB1dCB7CjE0NDc0OiAgc3RydWN0IGRjbl9id19vdXRwdXQgZGNuOwoxNDQ3NDogIHN0cnVjdCBk Y2VfYndfb3V0cHV0IGRjZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBid19jb250 ZXh0IHsKMTQ0NzQ6ICB1bmlvbiBid19vdXRwdXQgYnc7CjE0NDc0OiAgc3RydWN0IGRpc3BsYXlf bW9kZV9saWIgZG1sOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzYxICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIKMTQ0NzQ6IHN0cnVjdCBk Y19zdGF0ZSB7CjE0NDc0OiAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtc1s2XTsKMTQ0 NzQ6ICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXR1cyBzdHJlYW1fc3RhdHVzWzZdOwoxNDQ3NDogIHVp bnQ4X3Qgc3RyZWFtX2NvdW50OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHJlc291cmNlX2NvbnRl eHQgcmVzX2N0eDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBid19jb250ZXh0IGJ3X2N0eDsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRtX3BwX2Rpc3BsYXlfY29uZmlndXJhdGlvbiBw cF9kaXNwbGF5X2NmZzsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY25fYndfaW50ZXJuYWxfdmFy cyBkY25fYndfdmFyczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGNsa19tZ3IgKmNs a19tZ3I7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qga3JlZiByZWZjb3VudDsKMTQ0NzQ6IH07CjE0 NDc0OiAjIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5j L3Jlc291cmNlLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9kYWxfYXNpY19pZC5oIiAxCjE0NDc0OiAjIDE2OCAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZGFsX2FzaWNf aWQuaCIKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIE5WX05BVkkxMF9QX0EwID0gMSwKMTQ0NzQ6ICBO Vl9OQVZJMTJfUF9BMCA9IDEwLAoxNDQ3NDogIE5WX05BVkkxNF9NX0EwID0gMjAsCjE0NDc0OiAg TlZfVU5LTk9XTiA9IDB4RkYKMTQ0NzQ6IH07CjE0NDc0OiAjIDMxICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL3Jlc291cmNlLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNlX3ZlcnNp b24gcmVzb3VyY2VfcGFyc2VfYXNpY19pZCgKMTQ0NzQ6ICAgc3RydWN0IGh3X2FzaWNfaWQgYXNp Y19pZCk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCByZXNvdXJjZV9jYXBzIHsKMTQ0NzQ6ICBpbnQg bnVtX3RpbWluZ19nZW5lcmF0b3I7CjE0NDc0OiAgaW50IG51bV9vcHA7CjE0NDc0OiAgaW50IG51 bV92aWRlb19wbGFuZTsKMTQ0NzQ6ICBpbnQgbnVtX2F1ZGlvOwoxNDQ3NDogIGludCBudW1fc3Ry ZWFtX2VuY29kZXI7CjE0NDc0OiAgaW50IG51bV9wbGw7CjE0NDc0OiAgaW50IG51bV9kd2I7CjE0 NDc0OiAgaW50IG51bV9kZGM7CjE0NDc0OiAgaW50IG51bV92bWlkOwoxNDQ3NDogIGludCBudW1f ZHNjOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJlc291cmNlX3N0cmFwcyB7CjE0 NDc0OiAgdWludDMyX3QgaGRtaV9kaXNhYmxlOwoxNDQ3NDogIHVpbnQzMl90IGRjX3BpbnN0cmFw c19hdWRpbzsKMTQ0NzQ6ICB1aW50MzJfdCBhdWRpb19zdHJlYW1fbnVtYmVyOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJlc291cmNlX2NyZWF0ZV9mdW5jcyB7CjE0NDc0OiAgdm9p ZCAoKnJlYWRfZGNlX3N0cmFwcykoCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LCBz dHJ1Y3QgcmVzb3VyY2Vfc3RyYXBzICpzdHJhcHMpOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGF1 ZGlvICooKmNyZWF0ZV9hdWRpbykoCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LCB1 bnNpZ25lZCBpbnQgaW5zdCk7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIg KigqY3JlYXRlX3N0cmVhbV9lbmNvZGVyKSgKMTQ0NzQ6ICAgIGVudW0gZW5naW5lX2lkIGVuZ19p ZCwgc3RydWN0IGRjX2NvbnRleHQgKmN0eCk7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGNlX2h3 c2VxICooKmNyZWF0ZV9od3NlcSkoCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgcmVzb3VyY2VfY29uc3RydWN0KAoxNDQ3NDog IHVuc2lnbmVkIGludCBudW1fdmlydHVhbF9saW5rcywKMTQ0NzQ6ICBzdHJ1Y3QgZGMgKmRjLAox NDQ3NDogIHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sLAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBy ZXNvdXJjZV9jcmVhdGVfZnVuY3MgKmNyZWF0ZV9mdW5jcyk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCByZXNvdXJjZV9wb29sICpkY19jcmVhdGVfcmVzb3VyY2VfcG9vbChzdHJ1Y3QgZGMgKmRjLAox NDQ3NDogICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZGNfaW5pdF9kYXRhICppbml0X2RhdGEsCjE0 NDc0OiAgICAgICAgICAgIGVudW0gZGNlX3ZlcnNpb24gZGNfdmVyc2lvbik7CjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgZGNfZGVzdHJveV9yZXNvdXJjZV9wb29sKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDog CjE0NDc0OiBlbnVtIGRjX3N0YXR1cyByZXNvdXJjZV9tYXBfcG9vbF9yZXNvdXJjZXMoCjE0NDc0 OiAgIGNvbnN0IHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4 dCwKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKMTQ0NzQ6IAoxNDQ3 NDogYm9vbCByZXNvdXJjZV9idWlsZF9zY2FsaW5nX3BhcmFtcyhzdHJ1Y3QgcGlwZV9jdHggKnBp cGVfY3R4KTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19zdGF0dXMgcmVzb3VyY2VfYnVpbGRfc2Nh bGluZ19wYXJhbXNfZm9yX2NvbnRleHQoCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkYyAqZGMsCjE0 NDc0OiAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgcmVz b3VyY2VfYnVpbGRfaW5mb19mcmFtZShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4KTsKMTQ0NzQ6 IAoxNDQ3NDogdm9pZCByZXNvdXJjZV91bnJlZmVyZW5jZV9jbG9ja19zb3VyY2UoCjE0NDc0OiAg IHN0cnVjdCByZXNvdXJjZV9jb250ZXh0ICpyZXNfY3R4LAoxNDQ3NDogICBjb25zdCBzdHJ1Y3Qg cmVzb3VyY2VfcG9vbCAqcG9vbCwKMTQ0NzQ6ICAgc3RydWN0IGNsb2NrX3NvdXJjZSAqY2xvY2tf c291cmNlKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCByZXNvdXJjZV9yZWZlcmVuY2VfY2xvY2tfc291 cmNlKAoxNDQ3NDogICBzdHJ1Y3QgcmVzb3VyY2VfY29udGV4dCAqcmVzX2N0eCwKMTQ0NzQ6ICAg Y29uc3Qgc3RydWN0IHJlc291cmNlX3Bvb2wgKnBvb2wsCjE0NDc0OiAgIHN0cnVjdCBjbG9ja19z b3VyY2UgKmNsb2NrX3NvdXJjZSk7CjE0NDc0OiAKMTQ0NzQ6IGludCByZXNvdXJjZV9nZXRfY2xv Y2tfc291cmNlX3JlZmVyZW5jZSgKMTQ0NzQ6ICAgc3RydWN0IHJlc291cmNlX2NvbnRleHQgKnJl c19jdHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sLAoxNDQ3NDog ICBzdHJ1Y3QgY2xvY2tfc291cmNlICpjbG9ja19zb3VyY2UpOwoxNDQ3NDogCjE0NDc0OiBib29s IHJlc291cmNlX2FyZV9zdHJlYW1zX3RpbWluZ19zeW5jaHJvbml6YWJsZSgKMTQ0NzQ6ICAgc3Ry dWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtMSwKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0cmVhbV9z dGF0ZSAqc3RyZWFtMik7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbG9ja19zb3VyY2UgKnJlc291 cmNlX2ZpbmRfdXNlZF9jbGtfc3JjX2Zvcl9zaGFyaW5nKAoxNDQ3NDogICBzdHJ1Y3QgcmVzb3Vy Y2VfY29udGV4dCAqcmVzX2N0eCwKMTQ0NzQ6ICAgc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbG9ja19zb3VyY2UgKmRjX3Jlc291cmNlX2ZpbmRfZmly c3RfZnJlZV9wbGwoCjE0NDc0OiAgIHN0cnVjdCByZXNvdXJjZV9jb250ZXh0ICpyZXNfY3R4LAox NDQ3NDogICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqcG9vbCk7CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBwaXBlX2N0eCAqcmVzb3VyY2VfZ2V0X2hlYWRfcGlwZV9mb3Jfc3RyZWFtKAoxNDQ3 NDogICBzdHJ1Y3QgcmVzb3VyY2VfY29udGV4dCAqcmVzX2N0eCwKMTQ0NzQ6ICAgc3RydWN0IGRj X3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCByZXNvdXJjZV9hdHRh Y2hfc3VyZmFjZXNfdG9fY29udGV4dCgKMTQ0NzQ6ICAgc3RydWN0IGRjX3BsYW5lX3N0YXRlICpj b25zdCAqcGxhbmVfc3RhdGUsCjE0NDc0OiAgIGludCBzdXJmYWNlX2NvdW50LAoxNDQ3NDogICBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpkY19zdHJlYW0sCjE0NDc0OiAgIHN0cnVjdCBkY19zdGF0 ZSAqY29udGV4dCwKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IHJlc291cmNlX3Bvb2wgKnBvb2wpOwox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGlwZV9jdHggKmZpbmRfaWRsZV9zZWNvbmRhcnlfcGlwZSgK MTQ0NzQ6ICAgc3RydWN0IHJlc291cmNlX2NvbnRleHQgKnJlc19jdHgsCjE0NDc0OiAgIGNvbnN0 IHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgcGlwZV9j dHggKnByaW1hcnlfcGlwZSk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgcmVzb3VyY2VfaXNfc3RyZWFt X3VuY2hhbmdlZCgKMTQ0NzQ6ICBzdHJ1Y3QgZGNfc3RhdGUgKm9sZF9jb250ZXh0LCBzdHJ1Y3Qg ZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwoxNDQ3NDogCjE0NDc0OiBib29sIHJlc291cmNlX3Zh bGlkYXRlX2F0dGFjaF9zdXJmYWNlcygKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX3ZhbGlkYXRp b25fc2V0IHNldFtdLAoxNDQ3NDogICBpbnQgc2V0X2NvdW50LAoxNDQ3NDogICBjb25zdCBzdHJ1 Y3QgZGNfc3RhdGUgKm9sZF9jb250ZXh0LAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRl eHQsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sKTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCByZXNvdXJjZV92YWxpZGF0ZV9jdHhfdXBkYXRlX3BvaW50ZXJfYWZ0ZXJfY29w eSgKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX3N0YXRlICpzcmNfY3R4LAoxNDQ3NDogICBzdHJ1 Y3QgZGNfc3RhdGUgKmRzdF9jdHgpOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX3N0YXR1cyByZXNv dXJjZV9tYXBfY2xvY2tfcmVzb3VyY2VzKAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgZGMgKmRjLAox NDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCjE0NDc0OiAgIHN0cnVjdCBkY19zdHJl YW1fc3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfc3RhdHVzIHJlc291cmNl X21hcF9waHlfY2xvY2tfcmVzb3VyY2VzKAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgZGMgKmRjLAox NDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCjE0NDc0OiAgIHN0cnVjdCBkY19zdHJl YW1fc3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgcGlwZV9uZWVkX3JlcHJvZ3Jh bSgKMTQ0NzQ6ICAgc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eF9vbGQsCjE0NDc0OiAgIHN0cnVj dCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIHJlc291cmNlX2J1aWxk X2JpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zKHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVh bSwKMTQ0NzQ6ICAgc3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zICpmbXRfYml0X2Rl cHRoKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCB1cGRhdGVfYXVkaW9fdXNhZ2UoCjE0NDc0OiAgIHN0 cnVjdCByZXNvdXJjZV9jb250ZXh0ICpyZXNfY3R4LAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgcmVz b3VyY2VfcG9vbCAqcG9vbCwKMTQ0NzQ6ICAgc3RydWN0IGF1ZGlvICphdWRpbywKMTQ0NzQ6ICAg Ym9vbCBhY3F1aXJlZCk7CjE0NDc0OiAKMTQ0NzQ6IHVuc2lnbmVkIGludCByZXNvdXJjZV9waXhl bF9mb3JtYXRfdG9fYnBwKGVudW0gc3VyZmFjZV9waXhlbF9mb3JtYXQgZm9ybWF0KTsKMTQ0NzQ6 IAoxNDQ3NDogdm9pZCBnZXRfYXVkaW9fY2hlY2soc3RydWN0IGF1ZGlvX2luZm8gKmF1ZF9tb2Rl cywKMTQ0NzQ6ICBzdHJ1Y3QgYXVkaW9fY2hlY2sgKmF1ZF9jaGspOwoxNDQ3NDogIyAzNyAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9jbGtfbWdyX2lu dGVybmFsLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGVudGlzdF9i YXNlX2RpdmlkZXJfaWQgewoxNDQ3NDogIERFTlRJU1RfQkFTRV9ESURfMSA9IDB4MDgsCjE0NDc0 OiAgREVOVElTVF9CQVNFX0RJRF8yID0gMHg0MCwKMTQ0NzQ6ICBERU5USVNUX0JBU0VfRElEXzMg PSAweDYwLAoxNDQ3NDogIERFTlRJU1RfQkFTRV9ESURfNCA9IDB4N2UsCjE0NDc0OiAgREVOVElT VF9NQVhfRElEID0gMHg3ZgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRl bnRpc3RfZGl2aWRlcl9yYW5nZSB7CjE0NDc0OiAgREVOVElTVF9ESVZJREVSX1JBTkdFXzFfU1RB UlQgPSA4LAoxNDQ3NDogIERFTlRJU1RfRElWSURFUl9SQU5HRV8xX1NURVAgPSAxLAoxNDQ3NDog IERFTlRJU1RfRElWSURFUl9SQU5HRV8yX1NUQVJUID0gNjQsCjE0NDc0OiAgREVOVElTVF9ESVZJ REVSX1JBTkdFXzJfU1RFUCA9IDIsCjE0NDc0OiAgREVOVElTVF9ESVZJREVSX1JBTkdFXzNfU1RB UlQgPSAxMjgsCjE0NDc0OiAgREVOVElTVF9ESVZJREVSX1JBTkdFXzNfU1RFUCA9IDQsCjE0NDc0 OiAgREVOVElTVF9ESVZJREVSX1JBTkdFXzRfU1RBUlQgPSAyNDgsCjE0NDc0OiAgREVOVElTVF9E SVZJREVSX1JBTkdFXzRfU1RFUCA9IDI2NCwKMTQ0NzQ6ICBERU5USVNUX0RJVklERVJfUkFOR0Vf U0NBTEVfRkFDVE9SID0gNAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTUxICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3JfaW50ZXJuYWwuaCIKMTQ0 NzQ6IHN0cnVjdCBjbGtfbWdyX3NoaWZ0IHsKMTQ0NzQ6ICB1aW50OF90IERQUkVGQ0xLX1NSQ19T RUw7IHVpbnQ4X3QgREVOVElTVF9EUFJFRkNMS19XRElWSURFUjsgdWludDhfdCBERU5USVNUX0RJ U1BDTEtfV0RJVklERVI7IHVpbnQ4X3QgREVOVElTVF9ESVNQQ0xLX0NIR19ET05FOwoxNDQ3NDog IHVpbnQ4X3QgREVOVElTVF9EUFBDTEtfV0RJVklERVI7IHVpbnQ4X3QgREVOVElTVF9EUFBDTEtf Q0hHX0RPTkU7IHVpbnQ4X3QgRmJNdWx0X2ludDsgdWludDhfdCBGYk11bHRfZnJhYzsKMTQ0NzQ6 ICB1aW50MzJfdCBDT05URU5UOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsa19t Z3JfbWFzayB7CjE0NDc0OiAgdWludDMyX3QgRFBSRUZDTEtfU1JDX1NFTDsgdWludDMyX3QgREVO VElTVF9EUFJFRkNMS19XRElWSURFUjsgdWludDMyX3QgREVOVElTVF9ESVNQQ0xLX1dESVZJREVS OyB1aW50MzJfdCBERU5USVNUX0RJU1BDTEtfQ0hHX0RPTkU7CjE0NDc0OiAgdWludDMyX3QgREVO VElTVF9EUFBDTEtfV0RJVklERVI7IHVpbnQzMl90IERFTlRJU1RfRFBQQ0xLX0NIR19ET05FOyB1 aW50MzJfdCBGYk11bHRfaW50OyB1aW50MzJfdCBGYk11bHRfZnJhYzsKMTQ0NzQ6ICB1aW50MzJf dCBDT05URU5UOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsa19tZ3JfcmVnaXN0 ZXJzIHsKMTQ0NzQ6ICB1aW50MzJfdCBEUFJFRkNMS19DTlRMOwoxNDQ3NDogIHVpbnQzMl90IERF TlRJU1RfRElTUENMS19DTlRMOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgQ0xLM19DTEsyX0RG U19DTlRMOwoxNDQ3NDogIHVpbnQzMl90IENMSzNfQ0xLX1BMTF9SRVE7CjE0NDc0OiAKMTQ0NzQ6 ICB1aW50MzJfdCBNUDFfU01OX0MyUE1TR182NzsKMTQ0NzQ6ICB1aW50MzJfdCBNUDFfU01OX0My UE1TR184MzsKMTQ0NzQ6ICB1aW50MzJfdCBNUDFfU01OX0MyUE1TR185MTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gY2xvY2tfdHlwZSB7CjE0NDc0OiAgY2xvY2tfdHlwZV9kaXNwY2xr ID0gMSwKMTQ0NzQ6ICBjbG9ja190eXBlX2RjZmNsaywKMTQ0NzQ6ICBjbG9ja190eXBlX3NvY2Ns aywKMTQ0NzQ6ICBjbG9ja190eXBlX3BpeGVsY2xrLAoxNDQ3NDogIGNsb2NrX3R5cGVfcGh5Y2xr LAoxNDQ3NDogIGNsb2NrX3R5cGVfZHBwY2xrLAoxNDQ3NDogIGNsb2NrX3R5cGVfZmNsaywKMTQ0 NzQ6ICBjbG9ja190eXBlX2RjZmRzY2xrLAoxNDQ3NDogIGNsb2NrX3R5cGVfZHNjY2xrLAoxNDQ3 NDogIGNsb2NrX3R5cGVfdWNsaywKMTQ0NzQ6ICBjbG9ja190eXBlX2RyYW1jbGssCjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzdGF0ZV9kZXBlbmRlbnRfY2xvY2tzIHsK MTQ0NzQ6ICBpbnQgZGlzcGxheV9jbGtfa2h6OwoxNDQ3NDogIGludCBwaXhlbF9jbGtfa2h6Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgewoxNDQ3NDog IHN0cnVjdCBjbGtfbWdyIGJhc2U7CjE0NDc0OiAgaW50IHNtdV92ZXI7CjE0NDc0OiAgc3RydWN0 IHBwX3NtdV9mdW5jcyAqcHBfc211OwoxNDQ3NDogIHN0cnVjdCBjbGtfbWdyX2ludGVybmFsX2Z1 bmNzICpmdW5jczsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY2NnICpkY2NnOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgY29u c3Qgc3RydWN0IGNsa19tZ3JfcmVnaXN0ZXJzICpyZWdzOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBj bGtfbWdyX3NoaWZ0ICpjbGtfbWdyX3NoaWZ0OwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBjbGtfbWdy X21hc2sgKmNsa19tZ3JfbWFzazsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBzdGF0ZV9kZXBlbmRl bnRfY2xvY2tzIG1heF9jbGtzX2J5X3N0YXRlW0RNX1BQX0NMT0NLU19NQVhfU1RBVEVTXTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBib29sIGRmc19ieXBhc3NfZW5hYmxlZDsKMTQ0 NzQ6IAoxNDQ3NDogIGJvb2wgZGZzX2J5cGFzc19hY3RpdmU7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50 MzJfdCBkZnNfcmVmX2ZyZXFfa2h6OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgaW50IGRmc19ieXBhc3NfZGlzcF9jbGs7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBzc19vbl9kcHJlZmNsazsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IGJvb2wgeGdtaV9lbmFibGVkOwoxNDQ3NDogIyAyNTIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvY2xrX21ncl9pbnRlcm5hbC5oIgoxNDQ3NDogIGlu dCBkcHJlZmNsa19zc19wZXJjZW50YWdlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCBkcHJlZmNsa19zc19kaXZpZGVyOwoxNDQ3NDog CjE0NDc0OiAgZW51bSBkbV9wcF9jbG9ja3Nfc3RhdGUgbWF4X2Nsa3Nfc3RhdGU7CjE0NDc0OiAg ZW51bSBkbV9wcF9jbG9ja3Nfc3RhdGUgY3VyX21pbl9jbGtzX3N0YXRlOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGNsa19tZ3JfaW50ZXJuYWxfZnVuY3MgewoxNDQ3NDogIGludCAo KnNldF9kaXNwY2xrKShzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciwgaW50IHJlcXVl c3RlZF9kaXNwY2xrX2toeik7CjE0NDc0OiAgaW50ICgqc2V0X2RwcmVmY2xrKShzdHJ1Y3QgY2xr X21ncl9pbnRlcm5hbCAqY2xrX21ncik7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNzggIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvY2xrX21ncl9pbnRlcm5h bC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBzaG91bGRfc2V0X2Nsb2NrKGJvb2wgc2FmZV90b19sb3dlciwgaW50 IGNhbGNfY2xrLCBpbnQgY3VyX2NsaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKChzYWZlX3Rv X2xvd2VyICYmIGNhbGNfY2xrIDwgY3VyX2NsaykgfHwgY2FsY19jbGsgPiBjdXJfY2xrKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBzaG91bGRfdXBkYXRlX3BzdGF0ZV9zdXBwb3J0KGJv b2wgc2FmZV90b19sb3dlciwgYm9vbCBjYWxjX3N1cHBvcnQsIGJvb2wgY3VyX3N1cHBvcnQpCjE0 NDc0OiB7CjE0NDc0OiAgaWYgKGN1cl9zdXBwb3J0ICE9IGNhbGNfc3VwcG9ydCkgewoxNDQ3NDog ICBpZiAoY2FsY19zdXBwb3J0ID09IHRydWUgJiYgc2FmZV90b19sb3dlcikKMTQ0NzQ6ICAgIHJl dHVybiB0cnVlOwoxNDQ3NDogICBlbHNlIGlmIChjYWxjX3N1cHBvcnQgPT0gZmFsc2UgJiYgIXNh ZmVfdG9fbG93ZXIpCjE0NDc0OiAgICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0 NzQ6ICByZXR1cm4gZmFsc2U7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGludCBjbGtfbWdyX2hl bHBlcl9nZXRfYWN0aXZlX2Rpc3BsYXlfY250KAoxNDQ3NDogICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3 NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogIyAyOCAiZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIg MgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjAvZGNuMjBfY2xrX21nci5oIiAxCjE0NDc0OiAj IDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9k Y24yMC9kY24yMF9jbGtfbWdyLmgiCjE0NDc0OiB2b2lkIGRjbjJfdXBkYXRlX2Nsb2NrcyhzdHJ1 Y3QgY2xrX21nciAqZGNjZywKMTQ0NzQ6ICAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCwKMTQ0 NzQ6ICAgIGJvb2wgc2FmZV90b19sb3dlcik7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNuMl91cGRh dGVfY2xvY2tzX2ZwZ2Eoc3RydWN0IGNsa19tZ3IgKmNsa19tZ3IsCjE0NDc0OiAgICBzdHJ1Y3Qg ZGNfc3RhdGUgKmNvbnRleHQsCjE0NDc0OiAgICBib29sIHNhZmVfdG9fbG93ZXIpOwoxNDQ3NDog dm9pZCBkY24yMF91cGRhdGVfY2xvY2tzX3VwZGF0ZV9kcHBfZHRvKHN0cnVjdCBjbGtfbWdyX2lu dGVybmFsICpjbGtfbWdyLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsIGJvb2wg c2FmZV90b19sb3dlcik7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNuMl9pbml0X2Nsb2NrcyhzdHJ1 Y3QgY2xrX21nciAqY2xrX21ncik7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNuMjBfY2xrX21ncl9j b25zdHJ1Y3Qoc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgc3RydWN0IGNsa19tZ3Jf aW50ZXJuYWwgKmNsa19tZ3IsCjE0NDc0OiAgIHN0cnVjdCBwcF9zbXVfZnVuY3MgKnBwX3NtdSwK MTQ0NzQ6ICAgc3RydWN0IGRjY2cgKmRjY2cpOwoxNDQ3NDogCjE0NDc0OiB1aW50MzJfdCBkZW50 aXN0X2dldF9kaWRfZnJvbV9kaXZpZGVyKGludCBkaXZpZGVyKTsKMTQ0NzQ6IAoxNDQ3NDogdm9p ZCBkY24yX2dldF9jbG9jayhzdHJ1Y3QgY2xrX21nciAqY2xrX21nciwKMTQ0NzQ6ICAgc3RydWN0 IGRjX3N0YXRlICpjb250ZXh0LAoxNDQ3NDogICAgZW51bSBkY19jbG9ja190eXBlIGNsb2NrX3R5 cGUsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY2xvY2tfY29uZmlnICpjbG9ja19jZmcpOwoxNDQ3NDog CjE0NDc0OiB2b2lkIGRjbjIwX3VwZGF0ZV9jbG9ja3NfdXBkYXRlX2RlbnRpc3Qoc3RydWN0IGNs a19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGRjbjJfcmVhZF9j bG9ja3NfZnJvbV9od19kZW50aXN0KHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jhc2UpOwoxNDQ3 NDogIyAzMSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdy L2RjbjIxL3JuX2Nsa19tZ3IuYyIgMgoxNDQ3NDogIyAxICJkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21nci5oIiAxCjE0NDc0OiAj IDI5ICJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNu MjEvcm5fY2xrX21nci5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3IuaCIgMQoxNDQ3NDogIyAzMCAiZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3Iu aCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBybl9jbGtfcmVnaXN0ZXJzIHsKMTQ0 NzQ6ICB1aW50MzJfdCBDTEsxX0NMSzBfQ1VSUkVOVF9DTlQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiB2b2lkIHJuX2Nsa19tZ3JfY29uc3RydWN0KHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0 NDc0OiAgIHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyLAoxNDQ3NDogICBzdHJ1Y3Qg cHBfc211X2Z1bmNzICpwcF9zbXUsCjE0NDc0OiAgIHN0cnVjdCBkY2NnICpkY2NnKTsKMTQ0NzQ6 ICMgMzIgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9k Y24yMS9ybl9jbGtfbWdyLmMiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjZTEwMC9kY2VfY2xr X21nci5oIiAxCjE0NDc0OiAjIDMzICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvY2xrX21nci9kY2UxMDAvZGNlX2Nsa19tZ3IuaCIKMTQ0NzQ6IGludCBkY2VfYWRq dXN0X2RwX3JlZl9mcmVxX2Zvcl9zcyhzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21ncl9k Y2UsIGludCBkcF9yZWZfY2xrX2toeik7CjE0NDc0OiBpbnQgZGNlX2dldF9kcF9yZWZfZnJlcV9r aHooc3RydWN0IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSk7CjE0NDc0OiBlbnVtIGRtX3BwX2Nsb2Nr c19zdGF0ZSBkY2VfZ2V0X3JlcXVpcmVkX2Nsb2Nrc19zdGF0ZSgKMTQ0NzQ6ICBzdHJ1Y3QgY2xr X21nciAqY2xrX21ncl9iYXNlLAoxNDQ3NDogIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0 NDc0OiAKMTQ0NzQ6IHVpbnQzMl90IGRjZV9nZXRfbWF4X3BpeGVsX2Nsb2NrX2Zvcl9hbGxfcGF0 aHMoc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lk IGRjZV9jbGtfbWdyX2NvbnN0cnVjdCgKMTQ0NzQ6ICAgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwK MTQ0NzQ6ICAgc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3JfZGNlKTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCBkY2VfY2xvY2tfcmVhZF9zc19pbmZvKHN0cnVjdCBjbGtfbWdyX2ludGVybmFs ICpkY2NnX2RjZSk7CjE0NDc0OiAKMTQ0NzQ6IGludCBkY2UxMl9nZXRfZHBfcmVmX2ZyZXFfa2h6 KHN0cnVjdCBjbGtfbWdyICpkY2NnKTsKMTQ0NzQ6IAoxNDQ3NDogaW50IGRjZV9zZXRfY2xvY2so CjE0NDc0OiAgc3RydWN0IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSwKMTQ0NzQ6ICBpbnQgcmVxdWVz dGVkX2Nsa19raHopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNlX2Nsa19tZ3JfZGVz dHJveShzdHJ1Y3QgY2xrX21nciAqKmNsa19tZ3IpOwoxNDQ3NDogCjE0NDc0OiBpbnQgZGVudGlz dF9nZXRfZGl2aWRlcl9mcm9tX2RpZChpbnQgZGlkKTsKMTQ0NzQ6ICMgMzUgImRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmMi IDIKMTQ0NzQ6ICMgMSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9j bGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3JfdmJpb3Nfc211LmgiIDEKMTQ0NzQ6ICMgMjkgImRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtf bWdyX3ZiaW9zX3NtdS5oIgoxNDQ3NDogaW50IHJuX3ZiaW9zX3NtdV9nZXRfc211X3ZlcnNpb24o c3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpOwoxNDQ3NDogaW50IHJuX3ZiaW9zX3Nt dV9zZXRfZGlzcGNsayhzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciwgaW50IHJlcXVl c3RlZF9kaXNwY2xrX2toeik7CjE0NDc0OiBpbnQgcm5fdmJpb3Nfc211X3NldF9kcHJlZmNsayhz dHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21ncik7CjE0NDc0OiBpbnQgcm5fdmJpb3Nfc211 X3NldF9oYXJkX21pbl9kY2ZjbGsoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IsIGlu dCByZXF1ZXN0ZWRfZGNmY2xrX2toeik7CjE0NDc0OiBpbnQgcm5fdmJpb3Nfc211X3NldF9taW5f ZGVlcF9zbGVlcF9kY2ZjbGsoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IsIGludCBy ZXF1ZXN0ZWRfbWluX2RzX2RjZmNsa19raHopOwoxNDQ3NDogdm9pZCBybl92Ymlvc19zbXVfc2V0 X3BoeWNsayhzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciwgaW50IHJlcXVlc3RlZF9w aHljbGtfa2h6KTsKMTQ0NzQ6IGludCBybl92Ymlvc19zbXVfc2V0X2RwcGNsayhzdHJ1Y3QgY2xr X21ncl9pbnRlcm5hbCAqY2xrX21nciwgaW50IHJlcXVlc3RlZF9kcHBfa2h6KTsKMTQ0NzQ6IHZv aWQgcm5fdmJpb3Nfc211X3NldF9kY25fbG93X3Bvd2VyX3N0YXRlKHN0cnVjdCBjbGtfbWdyX2lu dGVybmFsICpjbGtfbWdyLCBpbnQgZGlzcGxheV9jb3VudCk7CjE0NDc0OiB2b2lkIHJuX3ZiaW9z X3NtdV9lbmFibGVfNDhtaHpfdG1kcF9yZWZjbGtfcHdyZHduKHN0cnVjdCBjbGtfbWdyX2ludGVy bmFsICpjbGtfbWdyLCBib29sIGVuYWJsZSk7CjE0NDc0OiB2b2lkIHJuX3ZiaW9zX3NtdV9lbmFi bGVfcG1lX3dhKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyKTsKMTQ0NzQ6ICMgMzYg ImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9y bl9jbGtfbWdyLmMiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2luYy9yZWdfaGVscGVyLmgiIDEKMTQ0NzQ6ICMgMzkxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL3JlZ19oZWxwZXIuaCIKMTQ0NzQ6 IHVpbnQzMl90IGdlbmVyaWNfcmVnX2dldChjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LCB1 aW50MzJfdCBhZGRyLAoxNDQ3NDogICB1aW50OF90IHNoaWZ0LCB1aW50MzJfdCBtYXNrLCB1aW50 MzJfdCAqZmllbGRfdmFsdWUpOwoxNDQ3NDogCjE0NDc0OiB1aW50MzJfdCBnZW5lcmljX3JlZ19n ZXQyKGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVpbnQzMl90IGFkZHIsCjE0NDc0OiAg IHVpbnQ4X3Qgc2hpZnQxLCB1aW50MzJfdCBtYXNrMSwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMSwK MTQ0NzQ6ICAgdWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJfdCAqZmllbGRf dmFsdWUyKTsKMTQ0NzQ6IAoxNDQ3NDogdWludDMyX3QgZ2VuZXJpY19yZWdfZ2V0Myhjb25zdCBz dHJ1Y3QgZGNfY29udGV4dCAqY3R4LCB1aW50MzJfdCBhZGRyLAoxNDQ3NDogICB1aW50OF90IHNo aWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTEsCjE0NDc0OiAgIHVp bnQ4X3Qgc2hpZnQyLCB1aW50MzJfdCBtYXNrMiwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMiwKMTQ0 NzQ6ICAgdWludDhfdCBzaGlmdDMsIHVpbnQzMl90IG1hc2szLCB1aW50MzJfdCAqZmllbGRfdmFs dWUzKTsKMTQ0NzQ6IAoxNDQ3NDogdWludDMyX3QgZ2VuZXJpY19yZWdfZ2V0NChjb25zdCBzdHJ1 Y3QgZGNfY29udGV4dCAqY3R4LCB1aW50MzJfdCBhZGRyLAoxNDQ3NDogICB1aW50OF90IHNoaWZ0 MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTEsCjE0NDc0OiAgIHVpbnQ4 X3Qgc2hpZnQyLCB1aW50MzJfdCBtYXNrMiwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMiwKMTQ0NzQ6 ICAgdWludDhfdCBzaGlmdDMsIHVpbnQzMl90IG1hc2szLCB1aW50MzJfdCAqZmllbGRfdmFsdWUz LAoxNDQ3NDogICB1aW50OF90IHNoaWZ0NCwgdWludDMyX3QgbWFzazQsIHVpbnQzMl90ICpmaWVs ZF92YWx1ZTQpOwoxNDQ3NDogCjE0NDc0OiB1aW50MzJfdCBnZW5lcmljX3JlZ19nZXQ1KGNvbnN0 IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVpbnQzMl90IGFkZHIsCjE0NDc0OiAgIHVpbnQ4X3Qg c2hpZnQxLCB1aW50MzJfdCBtYXNrMSwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMSwKMTQ0NzQ6ICAg dWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJfdCAqZmllbGRfdmFsdWUyLAox NDQ3NDogICB1aW50OF90IHNoaWZ0MywgdWludDMyX3QgbWFzazMsIHVpbnQzMl90ICpmaWVsZF92 YWx1ZTMsCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQ0LCB1aW50MzJfdCBtYXNrNCwgdWludDMyX3Qg KmZpZWxkX3ZhbHVlNCwKMTQ0NzQ6ICAgdWludDhfdCBzaGlmdDUsIHVpbnQzMl90IG1hc2s1LCB1 aW50MzJfdCAqZmllbGRfdmFsdWU1KTsKMTQ0NzQ6IAoxNDQ3NDogdWludDMyX3QgZ2VuZXJpY19y ZWdfZ2V0Nihjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LCB1aW50MzJfdCBhZGRyLAoxNDQ3 NDogICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90ICpmaWVsZF92YWx1 ZTEsCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQyLCB1aW50MzJfdCBtYXNrMiwgdWludDMyX3QgKmZp ZWxkX3ZhbHVlMiwKMTQ0NzQ6ICAgdWludDhfdCBzaGlmdDMsIHVpbnQzMl90IG1hc2szLCB1aW50 MzJfdCAqZmllbGRfdmFsdWUzLAoxNDQ3NDogICB1aW50OF90IHNoaWZ0NCwgdWludDMyX3QgbWFz azQsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTQsCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQ1LCB1aW50 MzJfdCBtYXNrNSwgdWludDMyX3QgKmZpZWxkX3ZhbHVlNSwKMTQ0NzQ6ICAgdWludDhfdCBzaGlm dDYsIHVpbnQzMl90IG1hc2s2LCB1aW50MzJfdCAqZmllbGRfdmFsdWU2KTsKMTQ0NzQ6IAoxNDQ3 NDogdWludDMyX3QgZ2VuZXJpY19yZWdfZ2V0Nyhjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4 LCB1aW50MzJfdCBhZGRyLAoxNDQ3NDogICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEs IHVpbnQzMl90ICpmaWVsZF92YWx1ZTEsCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQyLCB1aW50MzJf dCBtYXNrMiwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMiwKMTQ0NzQ6ICAgdWludDhfdCBzaGlmdDMs IHVpbnQzMl90IG1hc2szLCB1aW50MzJfdCAqZmllbGRfdmFsdWUzLAoxNDQ3NDogICB1aW50OF90 IHNoaWZ0NCwgdWludDMyX3QgbWFzazQsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTQsCjE0NDc0OiAg IHVpbnQ4X3Qgc2hpZnQ1LCB1aW50MzJfdCBtYXNrNSwgdWludDMyX3QgKmZpZWxkX3ZhbHVlNSwK MTQ0NzQ6ICAgdWludDhfdCBzaGlmdDYsIHVpbnQzMl90IG1hc2s2LCB1aW50MzJfdCAqZmllbGRf dmFsdWU2LAoxNDQ3NDogICB1aW50OF90IHNoaWZ0NywgdWludDMyX3QgbWFzazcsIHVpbnQzMl90 ICpmaWVsZF92YWx1ZTcpOwoxNDQ3NDogCjE0NDc0OiB1aW50MzJfdCBnZW5lcmljX3JlZ19nZXQ4 KGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVpbnQzMl90IGFkZHIsCjE0NDc0OiAgIHVp bnQ4X3Qgc2hpZnQxLCB1aW50MzJfdCBtYXNrMSwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMSwKMTQ0 NzQ6ICAgdWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJfdCAqZmllbGRfdmFs dWUyLAoxNDQ3NDogICB1aW50OF90IHNoaWZ0MywgdWludDMyX3QgbWFzazMsIHVpbnQzMl90ICpm aWVsZF92YWx1ZTMsCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQ0LCB1aW50MzJfdCBtYXNrNCwgdWlu dDMyX3QgKmZpZWxkX3ZhbHVlNCwKMTQ0NzQ6ICAgdWludDhfdCBzaGlmdDUsIHVpbnQzMl90IG1h c2s1LCB1aW50MzJfdCAqZmllbGRfdmFsdWU1LAoxNDQ3NDogICB1aW50OF90IHNoaWZ0NiwgdWlu dDMyX3QgbWFzazYsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTYsCjE0NDc0OiAgIHVpbnQ4X3Qgc2hp ZnQ3LCB1aW50MzJfdCBtYXNrNywgdWludDMyX3QgKmZpZWxkX3ZhbHVlNywKMTQ0NzQ6ICAgdWlu dDhfdCBzaGlmdDgsIHVpbnQzMl90IG1hc2s4LCB1aW50MzJfdCAqZmllbGRfdmFsdWU4KTsKMTQ0 NzQ6ICMgNDgxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5j L3JlZ19oZWxwZXIuaCIKMTQ0NzQ6IHZvaWQgZ2VuZXJpY193cml0ZV9pbmRpcmVjdF9yZWcoY29u c3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgdWludDMyX3QgYWRkcl9pbmRleCwg dWludDMyX3QgYWRkcl9kYXRhLAoxNDQ3NDogICB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGF0 YSk7CjE0NDc0OiAKMTQ0NzQ6IHVpbnQzMl90IGdlbmVyaWNfcmVhZF9pbmRpcmVjdF9yZWcoY29u c3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgdWludDMyX3QgYWRkcl9pbmRleCwg dWludDMyX3QgYWRkcl9kYXRhLAoxNDQ3NDogICB1aW50MzJfdCBpbmRleCk7CjE0NDc0OiAKMTQ0 NzQ6IHVpbnQzMl90IGdlbmVyaWNfaW5kaXJlY3RfcmVnX2dldChjb25zdCBzdHJ1Y3QgZGNfY29u dGV4dCAqY3R4LAoxNDQ3NDogICB1aW50MzJfdCBhZGRyX2luZGV4LCB1aW50MzJfdCBhZGRyX2Rh dGEsCjE0NDc0OiAgIHVpbnQzMl90IGluZGV4LCBpbnQgbiwKMTQ0NzQ6ICAgdWludDhfdCBzaGlm dDEsIHVpbnQzMl90IG1hc2sxLCB1aW50MzJfdCAqZmllbGRfdmFsdWUxLAoxNDQ3NDogICAuLi4p OwoxNDQ3NDogCjE0NDc0OiB1aW50MzJfdCBnZW5lcmljX2luZGlyZWN0X3JlZ191cGRhdGVfZXgo Y29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgdWludDMyX3QgYWRkcl9pbmRl eCwgdWludDMyX3QgYWRkcl9kYXRhLAoxNDQ3NDogICB1aW50MzJfdCBpbmRleCwgdWludDMyX3Qg cmVnX3ZhbCwgaW50IG4sCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQxLCB1aW50MzJfdCBtYXNrMSwg dWludDMyX3QgZmllbGRfdmFsdWUxLAoxNDQ3NDogICAuLi4pOwoxNDQ3NDogIyAzNyAiZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19t Z3IuYyIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMQoxNDQ3NDogIyAzOCAiZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIgMgoxNDQ3 NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1faGVs cGVycy5oIiAxCjE0NDc0OiAjIDM0ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvZG1faGVscGVycy5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMQoxNDQ3NDogIyAzNSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX2hlbHBlcnMuaCIgMgoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZHBfbXN0X3N0cmVhbV9hbGxvY2F0aW9uX3RhYmxlOwoxNDQ3NDogCjE0NDc0OiBl bnVtIGRjX2VkaWRfc3RhdHVzIGRtX2hlbHBlcnNfcGFyc2VfZWRpZF9jYXBzKAoxNDQ3NDogIHN0 cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2VkaWQgKmVkaWQs CjE0NDc0OiAgc3RydWN0IGRjX2VkaWRfY2FwcyAqZWRpZF9jYXBzKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIGRtX2hlbHBlcnNfZHBfdXBkYXRl X2JyYW5jaF9pbmZvKAoxNDQ3NDogICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogICBj b25zdCBzdHJ1Y3QgZGNfbGluayAqbGluayk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGJvb2wgZG1faGVscGVyc19kcF9tc3Rfd3JpdGVfcGF5bG9hZF9hbGxvY2F0aW9u X3RhYmxlKAoxNDQ3NDogICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogICBjb25zdCBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0OiAgIHN0cnVjdCBkcF9tc3Rfc3Ry ZWFtX2FsbG9jYXRpb25fdGFibGUgKnByb3Bvc2VkX3RhYmxlLAoxNDQ3NDogICBib29sIGVuYWJs ZSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZG1faGVscGVy c19kcF9tc3RfcG9sbF9wZW5kaW5nX2Rvd25fcmVwbHkoCjE0NDc0OiAgc3RydWN0IGRjX2NvbnRl eHQgKmN0eCwKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluayk7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZG1faGVscGVyc19kcF9tc3RfY2xlYXJf cGF5bG9hZF9hbGxvY2F0aW9uX3RhYmxlKAoxNDQ3NDogIHN0cnVjdCBkY19jb250ZXh0ICpjdHgs CjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2xpbmsgKmxpbmspOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGFjdF9yZXR1cm5fc3RhdHVzIGRtX2hlbHBlcnNfZHBf bXN0X3BvbGxfZm9yX2FsbG9jYXRpb25fY2hhbmdlX3RyaWdnZXIoCjE0NDc0OiAgIHN0cnVjdCBk Y19jb250ZXh0ICpjdHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0 cmVhbSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBib29sIGRtX2hlbHBlcnNfZHBf bXN0X3NlbmRfcGF5bG9hZF9hbGxvY2F0aW9uKAoxNDQ3NDogICBzdHJ1Y3QgZGNfY29udGV4dCAq Y3R4LAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0 OiAgIGJvb2wgZW5hYmxlKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkbV9oZWxwZXJzX2RwX21zdF9z dGFydF90b3BfbWdyKAoxNDQ3NDogICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogICBj b25zdCBzdHJ1Y3QgZGNfbGluayAqbGluaywKMTQ0NzQ6ICAgYm9vbCBib290KTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCBkbV9oZWxwZXJzX2RwX21zdF9zdG9wX3RvcF9tZ3IoCjE0NDc0OiAgIHN0cnVj dCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19saW5rICpsaW5rKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZG1faGVscGVyc19kcF9yZWFkX2Rw Y2QoCjE0NDc0OiAgIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVj dCBkY19saW5rICpsaW5rLAoxNDQ3NDogICB1aW50MzJfdCBhZGRyZXNzLAoxNDQ3NDogICB1aW50 OF90ICpkYXRhLAoxNDQ3NDogICB1aW50MzJfdCBzaXplKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkbV9oZWxwZXJzX2RwX3dyaXRlX2RwY2QoCjE0NDc0OiAg IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19saW5rICps aW5rLAoxNDQ3NDogICB1aW50MzJfdCBhZGRyZXNzLAoxNDQ3NDogICBjb25zdCB1aW50OF90ICpk YXRhLAoxNDQ3NDogICB1aW50MzJfdCBzaXplKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkbV9oZWxw ZXJzX3N1Ym1pdF9pMmMoCjE0NDc0OiAgIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAg IGNvbnN0IHN0cnVjdCBkY19saW5rICpsaW5rLAoxNDQ3NDogICBzdHJ1Y3QgaTJjX2NvbW1hbmQg KmNtZCk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZG1faGVscGVyc19kcF93cml0ZV9kc2NfZW5hYmxl KAoxNDQ3NDogICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogICBjb25zdCBzdHJ1Y3Qg ZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0OiAgIGJvb2wgZW5hYmxlCjE0NDc0OiApOwox NDQ3NDogYm9vbCBkbV9oZWxwZXJzX2lzX2RwX3NpbmtfcHJlc2VudCgKMTQ0NzQ6ICAgc3RydWN0 IGRjX2xpbmsgKmxpbmspOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2VkaWRfc3RhdHVzIGRtX2hl bHBlcnNfcmVhZF9sb2NhbF9lZGlkKAoxNDQ3NDogICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAox NDQ3NDogICBzdHJ1Y3QgZGNfbGluayAqbGluaywKMTQ0NzQ6ICAgc3RydWN0IGRjX3NpbmsgKnNp bmspOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGRtX3NldF9kY25fY2xvY2tzKAoxNDQ3NDogICBzdHJ1 Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogICBzdHJ1Y3QgZGNfY2xvY2tzICpjbGtzKTsKMTQ0 NzQ6ICMgMzkgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21n ci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlLmgiIDEKMTQ0NzQ6ICMgMzgg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIK MTQ0NzQ6IGVudW0gYXRvbV9iaW9zX2hlYWRlcl92ZXJzaW9uX2RlZnsKMTQ0NzQ6ICAgQVRPTV9N QUpPUl9WRVJTSU9OID0weDAwMDMsCjE0NDc0OiAgIEFUT01fTUlOT1JfVkVSU0lPTiA9MHgwMDAz LAoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v aW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKMTQ0NzQ6IGVudW0gYXRvbV9jcnRjX2RlZnsKMTQ0NzQ6 ICAgQVRPTV9DUlRDMSA9MCwKMTQ0NzQ6ICAgQVRPTV9DUlRDMiA9MSwKMTQ0NzQ6ICAgQVRPTV9D UlRDMyA9MiwKMTQ0NzQ6ICAgQVRPTV9DUlRDNCA9MywKMTQ0NzQ6ICAgQVRPTV9DUlRDNSA9NCwK MTQ0NzQ6ICAgQVRPTV9DUlRDNiA9NSwKMTQ0NzQ6ICAgQVRPTV9DUlRDX0lOVkFMSUQgPTB4ZmYs CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fcHBsbF9kZWZ7CjE0NDc0OiAgIEFU T01fUFBMTDAgPTIsCjE0NDc0OiAgIEFUT01fR0NLX0RGUyA9OCwKMTQ0NzQ6ICAgQVRPTV9GQ0hf Q0xLID05LAoxNDQ3NDogICBBVE9NX0RQX0RUTyA9MTEsCjE0NDc0OiAgIEFUT01fQ09NQk9QSFlf UExMMCA9MjAsCjE0NDc0OiAgIEFUT01fQ09NQk9QSFlfUExMMSA9MjEsCjE0NDc0OiAgIEFUT01f Q09NQk9QSFlfUExMMiA9MjIsCjE0NDc0OiAgIEFUT01fQ09NQk9QSFlfUExMMyA9MjMsCjE0NDc0 OiAgIEFUT01fQ09NQk9QSFlfUExMNCA9MjQsCjE0NDc0OiAgIEFUT01fQ09NQk9QSFlfUExMNSA9 MjUsCjE0NDc0OiAgIEFUT01fUFBMTF9JTlZBTElEID0weGZmLAoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fZGlnX2RlZnsKMTQ0NzQ6ICAgQVNJQ19JTlRfRElHMV9F TkNPREVSX0lEID0weDAzLAoxNDQ3NDogICBBU0lDX0lOVF9ESUcyX0VOQ09ERVJfSUQgPTB4MDks CjE0NDc0OiAgIEFTSUNfSU5UX0RJRzNfRU5DT0RFUl9JRCA9MHgwYSwKMTQ0NzQ6ICAgQVNJQ19J TlRfRElHNF9FTkNPREVSX0lEID0weDBiLAoxNDQ3NDogICBBU0lDX0lOVF9ESUc1X0VOQ09ERVJf SUQgPTB4MGMsCjE0NDc0OiAgIEFTSUNfSU5UX0RJRzZfRU5DT0RFUl9JRCA9MHgwZCwKMTQ0NzQ6 ICAgQVNJQ19JTlRfRElHN19FTkNPREVSX0lEID0weDBlLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBlbnVtIGF0b21fZW5jb2RlX21vZGVfZGVmCjE0NDc0OiB7CjE0NDc0OiAgIEFU T01fRU5DT0RFUl9NT0RFX0RQID0wLAoxNDQ3NDogICBBVE9NX0VOQ09ERVJfTU9ERV9EUF9TU1Qg PTAsCjE0NDc0OiAgIEFUT01fRU5DT0RFUl9NT0RFX0xWRFMgPTEsCjE0NDc0OiAgIEFUT01fRU5D T0RFUl9NT0RFX0RWSSA9MiwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX01PREVfSERNSSA9MywKMTQ0 NzQ6ICAgQVRPTV9FTkNPREVSX01PREVfRFBfQVVESU8gPTUsCjE0NDc0OiAgIEFUT01fRU5DT0RF Ul9NT0RFX0RQX01TVCA9NSwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX01PREVfQ1JUID0xNSwKMTQ0 NzQ6ICAgQVRPTV9FTkNPREVSX01PREVfRFZPID0xNiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGVudW0gYXRvbV9lbmNvZGVyX3JlZmNsa19zcmNfZGVmewoxNDQ3NDogICBFTkNPREVSX1JFRkNM S19TUkNfUDFQTEwgPTAsCjE0NDc0OiAgIEVOQ09ERVJfUkVGQ0xLX1NSQ19QMlBMTCA9MSwKMTQ0 NzQ6ICAgRU5DT0RFUl9SRUZDTEtfU1JDX1AzUExMID0yLAoxNDQ3NDogICBFTkNPREVSX1JFRkNM S19TUkNfRVhUQ0xLID0zLAoxNDQ3NDogICBFTkNPREVSX1JFRkNMS19TUkNfSU5WQUxJRCA9MHhm ZiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9zY2FsZXJfZGVmewoxNDQ3NDog ICBBVE9NX1NDQUxFUl9ESVNBQkxFID0wLAoxNDQ3NDogICBBVE9NX1NDQUxFUl9DRU5URVIgPTEs CjE0NDc0OiAgIEFUT01fU0NBTEVSX0VYUEFOU0lPTiA9MiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IGVudW0gYXRvbV9vcGVyYXRpb25fZGVmewoxNDQ3NDogICBBVE9NX0RJU0FCTEUgPSAwLAox NDQ3NDogICBBVE9NX0VOQUJMRSA9IDEsCjE0NDc0OiAgIEFUT01fSU5JVCA9IDcsCjE0NDc0OiAg IEFUT01fR0VUX1NUQVRVUyA9IDgsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21f ZW1iZWRkZWRfZGlzcGxheV9vcF9kZWZ7CjE0NDc0OiAgIEFUT01fTENEX0JMX09GRiA9IDIsCjE0 NDc0OiAgIEFUT01fTENEX0JMX09NID0gMywKMTQ0NzQ6ICAgQVRPTV9MQ0RfQkxfQlJJR0hUTkVT U19DT05UUk9MID0gNCwKMTQ0NzQ6ICAgQVRPTV9MQ0RfU0VMRlRFU1RfU1RBUlQgPSA1LAoxNDQ3 NDogICBBVE9NX0xDRF9TRUxGVEVTVF9TVE9QID0gNiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGVudW0gYXRvbV9zcHJlYWRfc3BlY3RydW1fbW9kZXsKMTQ0NzQ6ICAgQVRPTV9TU19DRU5URVJf T1JfRE9XTl9NT0RFX01BU0sgPSAweDAxLAoxNDQ3NDogICBBVE9NX1NTX0RPV05fU1BSRUFEX01P REUgPSAweDAwLAoxNDQ3NDogICBBVE9NX1NTX0NFTlRSRV9TUFJFQURfTU9ERSA9IDB4MDEsCjE0 NDc0OiAgIEFUT01fSU5UX09SX0VYVF9TU19NQVNLID0gMHgwMiwKMTQ0NzQ6ICAgQVRPTV9JTlRF Uk5BTF9TU19NQVNLID0gMHgwMCwKMTQ0NzQ6ICAgQVRPTV9FWFRFUk5BTF9TU19NQVNLID0gMHgw MiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3BhbmVsX2JpdF9w ZXJfY29sb3J7CjE0NDc0OiAgIFBBTkVMX0JQQ19VTkRFRklORSA9MHgwMCwKMTQ0NzQ6ICAgUEFO RUxfNkJJVF9QRVJfQ09MT1IgPTB4MDEsCjE0NDc0OiAgIFBBTkVMXzhCSVRfUEVSX0NPTE9SID0w eDAyLAoxNDQ3NDogICBQQU5FTF8xMEJJVF9QRVJfQ09MT1IgPTB4MDMsCjE0NDc0OiAgIFBBTkVM XzEyQklUX1BFUl9DT0xPUiA9MHgwNCwKMTQ0NzQ6ICAgUEFORUxfMTZCSVRfUEVSX0NPTE9SID0w eDA1LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fdm9sdGFnZV90 eXBlCjE0NDc0OiB7CjE0NDc0OiAgIFZPTFRBR0VfVFlQRV9WRERDID0gMSwKMTQ0NzQ6ICAgVk9M VEFHRV9UWVBFX01WRERDID0gMiwKMTQ0NzQ6ICAgVk9MVEFHRV9UWVBFX01WRERRID0gMywKMTQ0 NzQ6ICAgVk9MVEFHRV9UWVBFX1ZERENJID0gNCwKMTQ0NzQ6ICAgVk9MVEFHRV9UWVBFX1ZEREdG WCA9IDUsCjE0NDc0OiAgIFZPTFRBR0VfVFlQRV9QQ0MgPSA2LAoxNDQ3NDogICBWT0xUQUdFX1RZ UEVfTVZQUCA9IDcsCjE0NDc0OiAgIFZPTFRBR0VfVFlQRV9MRUREUE0gPSA4LAoxNDQ3NDogICBW T0xUQUdFX1RZUEVfUENDX01WREQgPSA5LAoxNDQ3NDogICBWT0xUQUdFX1RZUEVfUENJRV9WRERD ID0gMTAsCjE0NDc0OiAgIFZPTFRBR0VfVFlQRV9QQ0lFX1ZERFIgPSAxMSwKMTQ0NzQ6ICAgVk9M VEFHRV9UWVBFX0dFTkVSSUNfSTJDXzEgPSAweDExLAoxNDQ3NDogICBWT0xUQUdFX1RZUEVfR0VO RVJJQ19JMkNfMiA9IDB4MTIsCjE0NDc0OiAgIFZPTFRBR0VfVFlQRV9HRU5FUklDX0kyQ18zID0g MHgxMywKMTQ0NzQ6ICAgVk9MVEFHRV9UWVBFX0dFTkVSSUNfSTJDXzQgPSAweDE0LAoxNDQ3NDog ICBWT0xUQUdFX1RZUEVfR0VORVJJQ19JMkNfNSA9IDB4MTUsCjE0NDc0OiAgIFZPTFRBR0VfVFlQ RV9HRU5FUklDX0kyQ182ID0gMHgxNiwKMTQ0NzQ6ICAgVk9MVEFHRV9UWVBFX0dFTkVSSUNfSTJD XzcgPSAweDE3LAoxNDQ3NDogICBWT0xUQUdFX1RZUEVfR0VORVJJQ19JMkNfOCA9IDB4MTgsCjE0 NDc0OiAgIFZPTFRBR0VfVFlQRV9HRU5FUklDX0kyQ185ID0gMHgxOSwKMTQ0NzQ6ICAgVk9MVEFH RV9UWVBFX0dFTkVSSUNfSTJDXzEwID0gMHgxQSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVu dW0gYXRvbV9kZ3B1X3ZyYW1fdHlwZSB7CjE0NDc0OiAgIEFUT01fREdQVV9WUkFNX1RZUEVfR0RE UjUgPSAweDUwLAoxNDQ3NDogICBBVE9NX0RHUFVfVlJBTV9UWVBFX0hCTTIgPSAweDYwLAoxNDQ3 NDogICBBVE9NX0RHUFVfVlJBTV9UWVBFX0dERFI2ID0gMHg3MCwKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IGVudW0gYXRvbV9kcF92c19wcmVlbXBoX2RlZnsKMTQ0NzQ6ICAgRFBfVlNfTEVWRUww X1BSRUVNUEhfTEVWRUwwID0gMHgwMCwKMTQ0NzQ6ICAgRFBfVlNfTEVWRUwxX1BSRUVNUEhfTEVW RUwwID0gMHgwMSwKMTQ0NzQ6ICAgRFBfVlNfTEVWRUwyX1BSRUVNUEhfTEVWRUwwID0gMHgwMiwK MTQ0NzQ6ICAgRFBfVlNfTEVWRUwzX1BSRUVNUEhfTEVWRUwwID0gMHgwMywKMTQ0NzQ6ICAgRFBf VlNfTEVWRUwwX1BSRUVNUEhfTEVWRUwxID0gMHgwOCwKMTQ0NzQ6ICAgRFBfVlNfTEVWRUwxX1BS RUVNUEhfTEVWRUwxID0gMHgwOSwKMTQ0NzQ6ICAgRFBfVlNfTEVWRUwyX1BSRUVNUEhfTEVWRUwx ID0gMHgwYSwKMTQ0NzQ6ICAgRFBfVlNfTEVWRUwwX1BSRUVNUEhfTEVWRUwyID0gMHgxMCwKMTQ0 NzQ6ICAgRFBfVlNfTEVWRUwxX1BSRUVNUEhfTEVWRUwyID0gMHgxMSwKMTQ0NzQ6ICAgRFBfVlNf TEVWRUwwX1BSRUVNUEhfTEVWRUwzID0gMHgxOCwKMTQ0NzQ6IH07CjE0NDc0OiAjIDIwOCAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgoxNDQ3 NDogI3ByYWdtYSBwYWNrKDEpCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbWJpb3NfaW1hZ2Vfb2Zm c2V0ewoxNDQ3NDogT0ZGU0VUX1RPX0FUT01fUk9NX0hFQURFUl9QT0lOVEVSID0weDAwMDAwMDQ4 LAoxNDQ3NDogT0ZGU0VUX1RPX0FUT01fUk9NX0lNQUdFX1NJWkUgPTB4MDAwMDAwMDIsCjE0NDc0 OiBPRkZTRVRfVE9fQVRPTUJJT1NfQVNJQ19CVVNfTUVNX1RZUEUgPTB4OTQsCjE0NDc0OiBNQVhT SVpFX09GX0FUT01CSU9TX0FTSUNfQlVTX01FTV9UWVBFID0yMCwKMTQ0NzQ6IE9GRlNFVF9UT19H RVRfQVRPTUJJT1NfTlVNQkVSX09GX1NUUklOR1MgPTB4MmYsCjE0NDc0OiBPRkZTRVRfVE9fR0VU X0FUT01CSU9TX1NUUklOR19TVEFSVCA9MHg2ZSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9t X2NvbW1vbl90YWJsZV9oZWFkZXIKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDE2X3Qgc3RydWN0dXJl c2l6ZTsKMTQ0NzQ6ICAgdWludDhfdCBmb3JtYXRfcmV2aXNpb247CjE0NDc0OiAgIHVpbnQ4X3Qg Y29udGVudF9yZXZpc2lvbjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX3JvbV9oZWFkZXJfdjJfMgoxNDQ3NDogewoxNDQ3NDogICBz dHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWlu dDhfdCBhdG9tX2Jpb3Nfc3RyaW5nWzRdOwoxNDQ3NDogICB1aW50MTZfdCBiaW9zX3NlZ21lbnRf YWRkcmVzczsKMTQ0NzQ6ICAgdWludDE2X3QgcHJvdGVjdGVkbW9kZW9mZnNldDsKMTQ0NzQ6ICAg dWludDE2X3QgY29uZmlnZmlsZW5hbWVvZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IGNyY19ibG9j a19vZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IHZiaW9zX2Jvb3R1cG1lc3NhZ2VvZmZzZXQ7CjE0 NDc0OiAgIHVpbnQxNl90IGludDEwX29mZnNldDsKMTQ0NzQ6ICAgdWludDE2X3QgcGNpYnVzZGV2 aW5pdGNvZGU7CjE0NDc0OiAgIHVpbnQxNl90IGlvYmFzZWFkZHJlc3M7CjE0NDc0OiAgIHVpbnQx Nl90IHN1YnN5c3RlbV92ZW5kb3JfaWQ7CjE0NDc0OiAgIHVpbnQxNl90IHN1YnN5c3RlbV9pZDsK MTQ0NzQ6ICAgdWludDE2X3QgcGNpX2luZm9fb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCBtYXN0 ZXJod2Z1bmN0aW9uX29mZnNldDsKMTQ0NzQ6ICAgdWludDE2X3QgbWFzdGVyZGF0YXRhYmxlX29m ZnNldDsKMTQ0NzQ6ICAgdWludDE2X3QgcmVzZXJ2ZWQ7CjE0NDc0OiAgIHVpbnQzMl90IHBzcGRp cnRhYmxlb2Zmc2V0OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjY0ICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlLmgiCjE0NDc0OiBzdHJ1Y3QgYXRvbV9t YXN0ZXJfbGlzdF9vZl9jb21tYW5kX2Z1bmN0aW9uc192Ml8xewoxNDQ3NDogICB1aW50MTZfdCBh c2ljX2luaXQ7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjE7CjE0NDc0OiAgIHVpbnQx Nl90IGNtZF9mdW5jdGlvbjI7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjM7CjE0NDc0 OiAgIHVpbnQxNl90IGRpZ3hlbmNvZGVyY29udHJvbDsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1 bmN0aW9uNTsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNjsKMTQ0NzQ6ICAgdWludDE2 X3QgY21kX2Z1bmN0aW9uNzsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uODsKMTQ0NzQ6 ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uOTsKMTQ0NzQ6ICAgdWludDE2X3Qgc2V0ZW5naW5lY2xv Y2s7CjE0NDc0OiAgIHVpbnQxNl90IHNldG1lbW9yeWNsb2NrOwoxNDQ3NDogICB1aW50MTZfdCBz ZXRwaXhlbGNsb2NrOwoxNDQ3NDogICB1aW50MTZfdCBlbmFibGVkaXNwcG93ZXJnYXRpbmc7CjE0 NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjE0OwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVu Y3Rpb24xNTsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uMTY7CjE0NDc0OiAgIHVpbnQx Nl90IGNtZF9mdW5jdGlvbjE3OwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb24xODsKMTQ0 NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uMTk7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5j dGlvbjIwOwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yMTsKMTQ0NzQ6ICAgdWludDE2 X3QgY21kX2Z1bmN0aW9uMjI7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjIzOwoxNDQ3 NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yNDsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0 aW9uMjU7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjI2OwoxNDQ3NDogICB1aW50MTZf dCBjbWRfZnVuY3Rpb24yNzsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uMjg7CjE0NDc0 OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjI5OwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rp b24zMDsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uMzE7CjE0NDc0OiAgIHVpbnQxNl90 IGNtZF9mdW5jdGlvbjMyOwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb24zMzsKMTQ0NzQ6 ICAgdWludDE2X3QgYmxhbmtjcnRjOwoxNDQ3NDogICB1aW50MTZfdCBlbmFibGVjcnRjOwoxNDQ3 NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb24zNjsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0 aW9uMzc7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjM4OwoxNDQ3NDogICB1aW50MTZf dCBjbWRfZnVuY3Rpb24zOTsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNDA7CjE0NDc0 OiAgIHVpbnQxNl90IGdldHNtdWNsb2NraW5mbzsKMTQ0NzQ6ICAgdWludDE2X3Qgc2VsZWN0Y3J0 Y19zb3VyY2U7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjQzOwoxNDQ3NDogICB1aW50 MTZfdCBjbWRfZnVuY3Rpb240NDsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNDU7CjE0 NDc0OiAgIHVpbnQxNl90IHNldGRjZWNsb2NrOwoxNDQ3NDogICB1aW50MTZfdCBnZXRtZW1vcnlj bG9jazsKMTQ0NzQ6ICAgdWludDE2X3QgZ2V0ZW5naW5lY2xvY2s7CjE0NDc0OiAgIHVpbnQxNl90 IHNldGNydGNfdXNpbmdkdGR0aW1pbmc7CjE0NDc0OiAgIHVpbnQxNl90IGV4dGVybmFsZW5jb2Rl cmNvbnRyb2w7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjUxOwoxNDQ3NDogICB1aW50 MTZfdCBjbWRfZnVuY3Rpb241MjsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNTM7CjE0 NDc0OiAgIHVpbnQxNl90IHByb2Nlc3NpMmNjaGFubmVsdHJhbnNhY3Rpb247CjE0NDc0OiAgIHVp bnQxNl90IGNtZF9mdW5jdGlvbjU1OwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb241NjsK MTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNTc7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9m dW5jdGlvbjU4OwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb241OTsKMTQ0NzQ6ICAgdWlu dDE2X3QgY29tcHV0ZWdwdWNsb2NrcGFyYW07CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlv bjYxOwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb242MjsKMTQ0NzQ6ICAgdWludDE2X3Qg ZHluYW1pY21lbW9yeXNldHRpbmdzOwoxNDQ3NDogICB1aW50MTZfdCBtZW1vcnl0cmFpbmluZzsK MTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNjU7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9m dW5jdGlvbjY2OwoxNDQ3NDogICB1aW50MTZfdCBzZXR2b2x0YWdlOwoxNDQ3NDogICB1aW50MTZf dCBjbWRfZnVuY3Rpb242ODsKMTQ0NzQ6ICAgdWludDE2X3QgcmVhZGVmdXNldmFsdWU7CjE0NDc0 OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjcwOwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rp b243MTsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNzI7CjE0NDc0OiAgIHVpbnQxNl90 IGNtZF9mdW5jdGlvbjczOwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb243NDsKMTQ0NzQ6 ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNzU7CjE0NDc0OiAgIHVpbnQxNl90IGRpZzF0cmFuc21p dHRlcmNvbnRyb2w7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjc3OwoxNDQ3NDogICB1 aW50MTZfdCBwcm9jZXNzYXV4Y2hhbm5lbHRyYW5zYWN0aW9uOwoxNDQ3NDogICB1aW50MTZfdCBj bWRfZnVuY3Rpb243OTsKMTQ0NzQ6ICAgdWludDE2X3QgZ2V0dm9sdGFnZWluZm87CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9tYXN0ZXJfY29tbWFuZF9mdW5jdGlvbl92Ml8x CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVf aGVhZGVyOwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9tYXN0ZXJfbGlzdF9vZl9jb21tYW5kX2Z1bmN0 aW9uc192Ml8xIGxpc3RvZmNtZGZ1bmN0aW9uczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2Z1bmN0aW9uX2F0dHJpYnV0ZQoxNDQ3 NDogewoxNDQ3NDogICB1aW50MTZfdCB3c19pbl9ieXRlczo4OwoxNDQ3NDogICB1aW50MTZfdCBw c19pbl9ieXRlczo3OwoxNDQ3NDogICB1aW50MTZfdCB1cGRhdGVkX2J5X3V0aWw6MTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX3JvbV9od19mdW5jdGlvbl9oZWFkZXIKMTQ0NzQ6IHsKMTQ0 NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciBmdW5jX2hlYWRlcjsKMTQ0NzQ6 ICAgc3RydWN0IGF0b21fZnVuY3Rpb25fYXR0cmlidXRlIGZ1bmNfYXR0cmliOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGF0b21fbWFzdGVyX2xpc3Rfb2ZfZGF0YV90YWJsZXNfdjJfMXsKMTQ0NzQ6 ICAgdWludDE2X3QgdXRpbGl0eXBpcGVsaW5lOwoxNDQ3NDogICB1aW50MTZfdCBtdWx0aW1lZGlh X2luZm87CjE0NDc0OiAgIHVpbnQxNl90IHNtY19kcG1faW5mbzsKMTQ0NzQ6ICAgdWludDE2X3Qg c3dfZGF0YXRhYmxlMzsKMTQ0NzQ6ICAgdWludDE2X3QgZmlybXdhcmVpbmZvOwoxNDQ3NDogICB1 aW50MTZfdCBzd19kYXRhdGFibGU1OwoxNDQ3NDogICB1aW50MTZfdCBsY2RfaW5mbzsKMTQ0NzQ6 ICAgdWludDE2X3Qgc3dfZGF0YXRhYmxlNzsKMTQ0NzQ6ICAgdWludDE2X3Qgc211X2luZm87CjE0 NDc0OiAgIHVpbnQxNl90IHN3X2RhdGF0YWJsZTk7CjE0NDc0OiAgIHVpbnQxNl90IHN3X2RhdGF0 YWJsZTEwOwoxNDQ3NDogICB1aW50MTZfdCB2cmFtX3VzYWdlYnlmaXJtd2FyZTsKMTQ0NzQ6ICAg dWludDE2X3QgZ3Bpb19waW5fbHV0OwoxNDQ3NDogICB1aW50MTZfdCBzd19kYXRhdGFibGUxMzsK MTQ0NzQ6ICAgdWludDE2X3QgZ2Z4X2luZm87CjE0NDc0OiAgIHVpbnQxNl90IHBvd2VycGxheWlu Zm87CjE0NDc0OiAgIHVpbnQxNl90IHN3X2RhdGF0YWJsZTE2OwoxNDQ3NDogICB1aW50MTZfdCBz d19kYXRhdGFibGUxNzsKMTQ0NzQ6ICAgdWludDE2X3Qgc3dfZGF0YXRhYmxlMTg7CjE0NDc0OiAg IHVpbnQxNl90IHN3X2RhdGF0YWJsZTE5OwoxNDQ3NDogICB1aW50MTZfdCBzd19kYXRhdGFibGUy MDsKMTQ0NzQ6ICAgdWludDE2X3Qgc3dfZGF0YXRhYmxlMjE7CjE0NDc0OiAgIHVpbnQxNl90IGRp c3BsYXlvYmplY3RpbmZvOwoxNDQ3NDogICB1aW50MTZfdCBpbmRpcmVjdGlvYWNjZXNzOwoxNDQ3 NDogICB1aW50MTZfdCB1bWNfaW5mbzsKMTQ0NzQ6ICAgdWludDE2X3Qgc3dfZGF0YXRhYmxlMjU7 CjE0NDc0OiAgIHVpbnQxNl90IHN3X2RhdGF0YWJsZTI2OwoxNDQ3NDogICB1aW50MTZfdCBkY2Vf aW5mbzsKMTQ0NzQ6ICAgdWludDE2X3QgdnJhbV9pbmZvOwoxNDQ3NDogICB1aW50MTZfdCBzd19k YXRhdGFibGUyOTsKMTQ0NzQ6ICAgdWludDE2X3QgaW50ZWdyYXRlZHN5c3RlbWluZm87CjE0NDc0 OiAgIHVpbnQxNl90IGFzaWNfcHJvZmlsaW5nX2luZm87CjE0NDc0OiAgIHVpbnQxNl90IHZvbHRh Z2VvYmplY3RfaW5mbzsKMTQ0NzQ6ICAgdWludDE2X3Qgc3dfZGF0YXRhYmxlMzM7CjE0NDc0OiAg IHVpbnQxNl90IHN3X2RhdGF0YWJsZTM0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgYXRvbV9tYXN0ZXJfZGF0YV90YWJsZV92Ml8xCjE0NDc0OiB7CjE0NDc0OiAgIHN0 cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwoxNDQ3NDogICBzdHJ1 Y3QgYXRvbV9tYXN0ZXJfbGlzdF9vZl9kYXRhX3RhYmxlc192Ml8xIGxpc3RPZmRhdGF0YWJsZXM7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2R0ZF9mb3JtYXQK MTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDE2X3QgcGl4Y2xrOwoxNDQ3NDogICB1aW50MTZfdCBoX2Fj dGl2ZTsKMTQ0NzQ6ICAgdWludDE2X3QgaF9ibGFua2luZ190aW1lOwoxNDQ3NDogICB1aW50MTZf dCB2X2FjdGl2ZTsKMTQ0NzQ6ICAgdWludDE2X3Qgdl9ibGFua2luZ190aW1lOwoxNDQ3NDogICB1 aW50MTZfdCBoX3N5bmNfb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCBoX3N5bmNfd2lkdGg7CjE0 NDc0OiAgIHVpbnQxNl90IHZfc3luY19vZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IHZfc3luY3dp ZHRoOwoxNDQ3NDogICB1aW50MTZfdCByZXNlcnZlZDsKMTQ0NzQ6ICAgdWludDE2X3QgcmVzZXJ2 ZWQwOwoxNDQ3NDogICB1aW50OF90IGhfYm9yZGVyOwoxNDQ3NDogICB1aW50OF90IHZfYm9yZGVy OwoxNDQ3NDogICB1aW50MTZfdCBtaXNjaW5mbzsKMTQ0NzQ6ICAgdWludDhfdCBhdG9tX21vZGVf aWQ7CjE0NDc0OiAgIHVpbnQ4X3QgcmVmcmVzaHJhdGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGVudW0gYXRvbV9kdGRfZm9ybWF0X21vZGVtaXNjaW5mb3sKMTQ0NzQ6ICAgQVRP TV9IU1lOQ19QT0xBUklUWSA9IDB4MDAwMiwKMTQ0NzQ6ICAgQVRPTV9WU1lOQ19QT0xBUklUWSA9 IDB4MDAwNCwKMTQ0NzQ6ICAgQVRPTV9IX1JFUExJQ0FUSU9OQlkyID0gMHgwMDEwLAoxNDQ3NDog ICBBVE9NX1ZfUkVQTElDQVRJT05CWTIgPSAweDAwMjAsCjE0NDc0OiAgIEFUT01fSU5URVJMQUNF ID0gMHgwMDgwLAoxNDQ3NDogICBBVE9NX0NPTVBPU0lURVNZTkMgPSAweDAwNDAsCjE0NDc0OiB9 OwoxNDQ3NDogIyA0NzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9h dG9tZmlybXdhcmUuaCIKMTQ0NzQ6IHN0cnVjdCBhdG9tX2Zpcm13YXJlX2luZm9fdjNfMQoxNDQ3 NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRl cjsKMTQ0NzQ6ICAgdWludDMyX3QgZmlybXdhcmVfcmV2aXNpb247CjE0NDc0OiAgIHVpbnQzMl90 IGJvb3R1cF9zY2xrX2luMTBraHo7CjE0NDc0OiAgIHVpbnQzMl90IGJvb3R1cF9tY2xrX2luMTBr aHo7CjE0NDc0OiAgIHVpbnQzMl90IGZpcm13YXJlX2NhcGFiaWxpdHk7CjE0NDc0OiAgIHVpbnQz Ml90IG1haW5fY2FsbF9wYXJzZXJfZW50cnk7CjE0NDc0OiAgIHVpbnQzMl90IGJpb3Nfc2NyYXRj aF9yZWdfc3RhcnRhZGRyOwoxNDQ3NDogICB1aW50MTZfdCBib290dXBfdmRkY19tdjsKMTQ0NzQ6 ICAgdWludDE2X3QgYm9vdHVwX3ZkZGNpX212OwoxNDQ3NDogICB1aW50MTZfdCBib290dXBfbXZk ZGNfbXY7CjE0NDc0OiAgIHVpbnQxNl90IGJvb3R1cF92ZGRnZnhfbXY7CjE0NDc0OiAgIHVpbnQ4 X3QgbWVtX21vZHVsZV9pZDsKMTQ0NzQ6ICAgdWludDhfdCBjb29saW5nc29sdXRpb25faWQ7CjE0 NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQxWzJdOwoxNDQ3NDogICB1aW50MzJfdCBtY19iYXNlYWRk cl9oaWdoOwoxNDQ3NDogICB1aW50MzJfdCBtY19iYXNlYWRkcl9sb3c7CjE0NDc0OiAgIHVpbnQz Ml90IHJlc2VydmVkMls2XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBh dG9tYmlvc19maXJtd2FyZV9jYXBhYmlsaXR5CjE0NDc0OiB7CjE0NDc0OiAgQVRPTV9GSVJNV0FS RV9DQVBfRklSTVdBUkVfUE9TVEVEID0gMHgwMDAwMDAwMSwKMTQ0NzQ6ICBBVE9NX0ZJUk1XQVJF X0NBUF9HUFVfVklSVFVBTElaQVRJT04gPSAweDAwMDAwMDAyLAoxNDQ3NDogIEFUT01fRklSTVdB UkVfQ0FQX1dNSV9TVVBQT1JUID0gMHgwMDAwMDA0MCwKMTQ0NzQ6ICBBVE9NX0ZJUk1XQVJFX0NB UF9IV0VNVV9FTkFCTEUgPSAweDAwMDAwMDgwLAoxNDQ3NDogIEFUT01fRklSTVdBUkVfQ0FQX0hX RU1VX1VNQ19DRkcgPSAweDAwMDAwMTAwLAoxNDQ3NDogIEFUT01fRklSTVdBUkVfQ0FQX1NSQU1f RUNDID0gMHgwMDAwMDIwMCwKMTQ0NzQ6ICBBVE9NX0ZJUk1XQVJFX0NBUF9FTkFCTEVfMlNUQUdF X0JJU1RfVFJBSU5JTkcgPSAweDAwMDAwNDAwLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51 bSBhdG9tX2Nvb2xpbmdfc29sdXRpb25faWR7CjE0NDc0OiAgIEFJUl9DT09MSU5HID0gMHgwMCwK MTQ0NzQ6ICAgTElRVUlEX0NPT0xJTkcgPSAweDAxCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgYXRvbV9maXJtd2FyZV9pbmZvX3YzXzIgewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21t b25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDMyX3QgZmlybXdhcmVf cmV2aXNpb247CjE0NDc0OiAgIHVpbnQzMl90IGJvb3R1cF9zY2xrX2luMTBraHo7CjE0NDc0OiAg IHVpbnQzMl90IGJvb3R1cF9tY2xrX2luMTBraHo7CjE0NDc0OiAgIHVpbnQzMl90IGZpcm13YXJl X2NhcGFiaWxpdHk7CjE0NDc0OiAgIHVpbnQzMl90IG1haW5fY2FsbF9wYXJzZXJfZW50cnk7CjE0 NDc0OiAgIHVpbnQzMl90IGJpb3Nfc2NyYXRjaF9yZWdfc3RhcnRhZGRyOwoxNDQ3NDogICB1aW50 MTZfdCBib290dXBfdmRkY19tdjsKMTQ0NzQ6ICAgdWludDE2X3QgYm9vdHVwX3ZkZGNpX212Owox NDQ3NDogICB1aW50MTZfdCBib290dXBfbXZkZGNfbXY7CjE0NDc0OiAgIHVpbnQxNl90IGJvb3R1 cF92ZGRnZnhfbXY7CjE0NDc0OiAgIHVpbnQ4X3QgbWVtX21vZHVsZV9pZDsKMTQ0NzQ6ICAgdWlu dDhfdCBjb29saW5nc29sdXRpb25faWQ7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQxWzJdOwox NDQ3NDogICB1aW50MzJfdCBtY19iYXNlYWRkcl9oaWdoOwoxNDQ3NDogICB1aW50MzJfdCBtY19i YXNlYWRkcl9sb3c7CjE0NDc0OiAgIHVpbnQ4X3QgYm9hcmRfaTJjX2ZlYXR1cmVfaWQ7CjE0NDc0 OiAgIHVpbnQ4X3QgYm9hcmRfaTJjX2ZlYXR1cmVfZ3Bpb19pZDsKMTQ0NzQ6ICAgdWludDhfdCBi b2FyZF9pMmNfZmVhdHVyZV9zbGF2ZV9hZGRyOwoxNDQ3NDogICB1aW50OF90IHJlc2VydmVkMzsK MTQ0NzQ6ICAgdWludDE2X3QgYm9vdHVwX212ZGRxX212OwoxNDQ3NDogICB1aW50MTZfdCBib290 dXBfbXZwcF9tdjsKMTQ0NzQ6ICAgdWludDMyX3QgemZic3RhcnRhZGRyaW4xNm1iOwoxNDQ3NDog ICB1aW50MzJfdCByZXNlcnZlZDJbM107CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg YXRvbV9maXJtd2FyZV9pbmZvX3YzXzMKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY29t bW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CjE0NDc0OiAgIHVpbnQzMl90IGZpcm13YXJl X3JldmlzaW9uOwoxNDQ3NDogICB1aW50MzJfdCBib290dXBfc2Nsa19pbjEwa2h6OwoxNDQ3NDog ICB1aW50MzJfdCBib290dXBfbWNsa19pbjEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBmaXJtd2Fy ZV9jYXBhYmlsaXR5OwoxNDQ3NDogICB1aW50MzJfdCBtYWluX2NhbGxfcGFyc2VyX2VudHJ5Owox NDQ3NDogICB1aW50MzJfdCBiaW9zX3NjcmF0Y2hfcmVnX3N0YXJ0YWRkcjsKMTQ0NzQ6ICAgdWlu dDE2X3QgYm9vdHVwX3ZkZGNfbXY7CjE0NDc0OiAgIHVpbnQxNl90IGJvb3R1cF92ZGRjaV9tdjsK MTQ0NzQ6ICAgdWludDE2X3QgYm9vdHVwX212ZGRjX212OwoxNDQ3NDogICB1aW50MTZfdCBib290 dXBfdmRkZ2Z4X212OwoxNDQ3NDogICB1aW50OF90IG1lbV9tb2R1bGVfaWQ7CjE0NDc0OiAgIHVp bnQ4X3QgY29vbGluZ3NvbHV0aW9uX2lkOwoxNDQ3NDogICB1aW50OF90IHJlc2VydmVkMVsyXTsK MTQ0NzQ6ICAgdWludDMyX3QgbWNfYmFzZWFkZHJfaGlnaDsKMTQ0NzQ6ICAgdWludDMyX3QgbWNf YmFzZWFkZHJfbG93OwoxNDQ3NDogICB1aW50OF90IGJvYXJkX2kyY19mZWF0dXJlX2lkOwoxNDQ3 NDogICB1aW50OF90IGJvYXJkX2kyY19mZWF0dXJlX2dwaW9faWQ7CjE0NDc0OiAgIHVpbnQ4X3Qg Ym9hcmRfaTJjX2ZlYXR1cmVfc2xhdmVfYWRkcjsKMTQ0NzQ6ICAgdWludDhfdCByZXNlcnZlZDM7 CjE0NDc0OiAgIHVpbnQxNl90IGJvb3R1cF9tdmRkcV9tdjsKMTQ0NzQ6ICAgdWludDE2X3QgYm9v dHVwX212cHBfbXY7CjE0NDc0OiAgIHVpbnQzMl90IHpmYnN0YXJ0YWRkcmluMTZtYjsKMTQ0NzQ6 ICAgdWludDMyX3QgcHBsaWJfcHB0YWJsZV9pZDsKMTQ0NzQ6ICAgdWludDMyX3QgcmVzZXJ2ZWQy WzJdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGxjZF9pbmZvX3YyXzEKMTQ0NzQ6IHsKMTQ0NzQ6 ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CjE0NDc0OiAg IHN0cnVjdCBhdG9tX2R0ZF9mb3JtYXQgbGNkX3RpbWluZzsKMTQ0NzQ6ICAgdWludDE2X3QgYmFj a2xpZ2h0X3B3bTsKMTQ0NzQ6ICAgdWludDE2X3Qgc3BlY2lhbF9oYW5kbGVfY2FwOwoxNDQ3NDog ICB1aW50MTZfdCBwYW5lbF9taXNjOwoxNDQ3NDogICB1aW50MTZfdCBsdmRzX21heF9zbGlua19w Y2xrOwoxNDQ3NDogICB1aW50MTZfdCBsdmRzX3NzX3BlcmNlbnRhZ2U7CjE0NDc0OiAgIHVpbnQx Nl90IGx2ZHNfc3NfcmF0ZV8xMGh6OwoxNDQ3NDogICB1aW50OF90IHB3cl9vbl9kaWdvbl90b19k ZTsKMTQ0NzQ6ICAgdWludDhfdCBwd3Jfb25fZGVfdG9fdmFyeV9ibDsKMTQ0NzQ6ICAgdWludDhf dCBwd3JfZG93bl92YXJ5X2Jsb2ZmX3RvX2RlOwoxNDQ3NDogICB1aW50OF90IHB3cl9kb3duX2Rl X3RvX2RpZ29mZjsKMTQ0NzQ6ICAgdWludDhfdCBwd3Jfb2ZmX2RlbGF5OwoxNDQ3NDogICB1aW50 OF90IHB3cl9vbl92YXJ5X2JsX3RvX2Jsb247CjE0NDc0OiAgIHVpbnQ4X3QgcHdyX2Rvd25fYmxv ZmZfdG9fdmFyeV9ibG9mZjsKMTQ0NzQ6ICAgdWludDhfdCBwYW5lbF9icGM7CjE0NDc0OiAgIHVp bnQ4X3QgZHBjZF9lZHBfY29uZmlnX2NhcDsKMTQ0NzQ6ICAgdWludDhfdCBkcGNkX21heF9saW5r X3JhdGU7CjE0NDc0OiAgIHVpbnQ4X3QgZHBjZF9tYXhfbGFuZV9jb3VudDsKMTQ0NzQ6ICAgdWlu dDhfdCBkcGNkX21heF9kb3duc3ByZWFkOwoxNDQ3NDogICB1aW50OF90IG1pbl9hbGxvd2VkX2Js X2xldmVsOwoxNDQ3NDogICB1aW50OF90IG1heF9hbGxvd2VkX2JsX2xldmVsOwoxNDQ3NDogICB1 aW50OF90IGJvb3R1cF9ibF9sZXZlbDsKMTQ0NzQ6ICAgdWludDhfdCBkcGx2ZHNyeGlkOwoxNDQ3 NDogICB1aW50MzJfdCByZXNlcnZlZDFbOF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGVudW0gYXRvbV9sY2RfaW5mb19wYW5lbF9taXNjewoxNDQ3NDogICBBVE9NX1BBTkVMX01J U0NfRlBESSA9MHgwMDAyLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0 b21fbGNkX2luZm9fZHB0b2x2ZHNfcnhfaWQKMTQ0NzQ6IHsKMTQ0NzQ6ICAgZURQX1RPX0xWRFNf UlhfRElTQUJMRSA9IDB4MDAsCjE0NDc0OiAgIGVEUF9UT19MVkRTX0NPTU1PTl9JRCA9IDB4MDEs CjE0NDc0OiAgIGVEUF9UT19MVkRTX1JFQUxURUtfSUQgPSAweDAyLAoxNDQ3NDogfTsKMTQ0NzQ6 ICMgNjIwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13 YXJlLmgiCjE0NDc0OiBzdHJ1Y3QgYXRvbV9ncGlvX3Bpbl9hc3NpZ25tZW50CjE0NDc0OiB7CjE0 NDc0OiAgIHVpbnQzMl90IGRhdGFfYV9yZWdfaW5kZXg7CjE0NDc0OiAgIHVpbnQ4X3QgZ3Bpb19i aXRzaGlmdDsKMTQ0NzQ6ICAgdWludDhfdCBncGlvX21hc2tfYml0c2hpZnQ7CjE0NDc0OiAgIHVp bnQ4X3QgZ3Bpb19pZDsKMTQ0NzQ6ICAgdWludDhfdCByZXNlcnZlZDsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX2dwaW9fcGluX2Fzc2lnbm1lbnRfZ3Bpb19pZCB7 CjE0NDc0OiAgIEkyQ19IV19MQU5FX01VWCA9MHgwZiwKMTQ0NzQ6ICAgSTJDX0hXX0VOR0lORV9J RF9NQVNLID0weDcwLAoxNDQ3NDogICBJMkNfSFdfQ0FQID0weDgwLAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogICBQQ0lFX1ZERENfQ09OVFJPTF9HUElPX1BJTklEID0gNTYsCjE0NDc0 OiAKMTQ0NzQ6ICAgUFBfQUNfRENfU1dJVENIX0dQSU9fUElOSUQgPSA2MCwKMTQ0NzQ6IAoxNDQ3 NDogICBWRERDX1ZSSE9UX0dQSU9fUElOSUQgPSA2MSwKMTQ0NzQ6IAoxNDQ3NDogICBWRERDX1BD Q19HUElPX1BJTklEID0gNjIsCjE0NDc0OiAKMTQ0NzQ6ICAgRUZVU0VfQ1VUX0VOQUJMRV9HUElP X1BJTklEID0gNjMsCjE0NDc0OiAKMTQ0NzQ6ICAgRFJBTV9TRUxGX1JFRlJFU0hfR1BJT19QSU5J RCA9IDY0LAoxNDQ3NDogCjE0NDc0OiAgIFRIRVJNQUxfSU5UX09VVFBVVF9HUElPX1BJTklEID02 NSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fZ3Bpb19waW5f bHV0X3YyXzEKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRl ciB0YWJsZV9oZWFkZXI7CjE0NDc0OiAKMTQ0NzQ6ICAgc3RydWN0IGF0b21fZ3Bpb19waW5fYXNz aWdubWVudCBncGlvX3Bpbls4XTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDY2NyAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgoxNDQ3NDogc3RydWN0 IHZyYW1fdXNhZ2VieWZpcm13YXJlX3YyXzEKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21f Y29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CjE0NDc0OiAgIHVpbnQzMl90IHN0YXJ0 X2FkZHJlc3NfaW5fa2I7CjE0NDc0OiAgIHVpbnQxNl90IHVzZWRfYnlfZmlybXdhcmVfaW5fa2I7 CjE0NDc0OiAgIHVpbnQxNl90IHVzZWRfYnlfZHJpdmVyX2luX2tiOwoxNDQ3NDogfTsKMTQ0NzQ6 ICMgNjgyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13 YXJlLmgiCjE0NDc0OiBlbnVtIGF0b21fb2JqZWN0X3JlY29yZF90eXBlX2lkCjE0NDc0OiB7CjE0 NDc0OiAgIEFUT01fSTJDX1JFQ09SRF9UWVBFID0xLAoxNDQ3NDogICBBVE9NX0hQRF9JTlRfUkVD T1JEX1RZUEUgPTIsCjE0NDc0OiAgIEFUT01fT0JKRUNUX0dQSU9fQ05UTF9SRUNPUkRfVFlQRSA9 OSwKMTQ0NzQ6ICAgQVRPTV9DT05ORUNUT1JfSFBEUElOX0xVVF9SRUNPUkRfVFlQRSA9MTYsCjE0 NDc0OiAgIEFUT01fQ09OTkVDVE9SX0FVWEREQ19MVVRfUkVDT1JEX1RZUEUgPTE3LAoxNDQ3NDog ICBBVE9NX0VOQ09ERVJfQ0FQX1JFQ09SRF9UWVBFPTIwLAoxNDQ3NDogICBBVE9NX0JSQUNLRVRf TEFZT1VUX1JFQ09SRF9UWVBFPTIxLAoxNDQ3NDogICBBVE9NX0NPTk5FQ1RPUl9GT1JDRURfVE1E U19DQVBfUkVDT1JEX1RZUEU9MjIsCjE0NDc0OiAgIEFUT01fUkVDT1JEX0VORF9UWVBFID0weEZG LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fY29tbW9uX3JlY29yZF9oZWFk ZXIKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDhfdCByZWNvcmRfdHlwZTsKMTQ0NzQ6ICAgdWludDhf dCByZWNvcmRfc2l6ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2kyY19y ZWNvcmQKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3JlY29yZF9oZWFkZXIg cmVjb3JkX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCBpMmNfaWQ7CjE0NDc0OiAgIHVpbnQ4X3Qg aTJjX3NsYXZlX2FkZHI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9ocGRf aW50X3JlY29yZAoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fcmVjb3JkX2hl YWRlciByZWNvcmRfaGVhZGVyOwoxNDQ3NDogICB1aW50OF90IHBpbl9pZDsKMTQ0NzQ6ICAgdWlu dDhfdCBwbHVnaW5fcGluX3N0YXRlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl bnVtIGF0b21fZW5jb2Rlcl9jYXBzX2RlZgoxNDQ3NDogewoxNDQ3NDogICBBVE9NX0VOQ09ERVJf Q0FQX1JFQ09SRF9IQlIyID0weDAxLAoxNDQ3NDogICBBVE9NX0VOQ09ERVJfQ0FQX1JFQ09SRF9N U1RfRU4gPTB4MDEsCjE0NDc0OiAgIEFUT01fRU5DT0RFUl9DQVBfUkVDT1JEX0hCUjJfRU4gPTB4 MDIsCjE0NDc0OiAgIEFUT01fRU5DT0RFUl9DQVBfUkVDT1JEX0hETUk2R2Jwc19FTiA9MHgwNCwK MTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NBUF9SRUNPUkRfSEJSM19FTiA9MHgwOCwKMTQ0NzQ6ICAg QVRPTV9FTkNPREVSX0NBUF9SRUNPUkRfVVNCX0NfVFlQRSA9MHgxMDAsCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9lbmNvZGVyX2NhcHNfcmVjb3JkCjE0NDc0OiB7CjE0NDc0 OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7CjE0NDc0 OiAgIHVpbnQzMl90IGVuY29kZXJjYXBzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBh dG9tX2Nvbm5lY3Rvcl9jYXBzX2RlZgoxNDQ3NDogewoxNDQ3NDogICBBVE9NX0NPTk5FQ1RPUl9D QVBfSU5URVJOQUxfRElTUExBWSA9IDB4MDEsCjE0NDc0OiAgIEFUT01fQ09OTkVDVE9SX0NBUF9J TlRFUk5BTF9ESVNQTEFZX0JMID0gMHgwMiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBhdG9tX2Rpc3BfY29ubmVjdG9yX2NhcHNfcmVjb3JkCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVj dCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7CjE0NDc0OiAgIHVpbnQz Ml90IGNvbm5lY3RjYXBzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg YXRvbV9ncGlvX3Bpbl9jb250cm9sX3BhaXIKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDhfdCBncGlv X2lkOwoxNDQ3NDogICB1aW50OF90IGdwaW9fcGluc3RhdGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgYXRvbV9vYmplY3RfZ3Bpb19jbnRsX3JlY29yZAoxNDQ3NDogewoxNDQ3NDog ICBzdHJ1Y3QgYXRvbV9jb21tb25fcmVjb3JkX2hlYWRlciByZWNvcmRfaGVhZGVyOwoxNDQ3NDog ICB1aW50OF90IGZsYWc7CjE0NDc0OiAgIHVpbnQ4X3QgbnVtYmVyX29mX3BpbnM7CjE0NDc0OiAg IHN0cnVjdCBhdG9tX2dwaW9fcGluX2NvbnRyb2xfcGFpciBncGlvWzFdOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fZ3Bpb19waW5fY29udHJvbF9waW5zdGF0ZV9k ZWYKMTQ0NzQ6IHsKMTQ0NzQ6ICAgR1BJT19QSU5fVFlQRV9JTlBVVCA9IDB4MDAsCjE0NDc0OiAg IEdQSU9fUElOX1RZUEVfT1VUUFVUID0gMHgxMCwKMTQ0NzQ6ICAgR1BJT19QSU5fVFlQRV9IV19D T05UUk9MID0gMHgyMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIEdQSU9fUElOX09VVFBVVF9T VEFURV9NQVNLID0gMHgwMSwKMTQ0NzQ6ICAgR1BJT19QSU5fT1VUUFVUX1NUQVRFX1NISUZUID0g MCwKMTQ0NzQ6ICAgR1BJT19QSU5fU1RBVEVfQUNUSVZFX0xPVyA9IDB4MCwKMTQ0NzQ6ICAgR1BJ T19QSU5fU1RBVEVfQUNUSVZFX0hJR0ggPSAweDEsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX2dsc3luY19yZWNvcmRfZ3Bpb19pbmRleF9kZWYKMTQ0 NzQ6IHsKMTQ0NzQ6ICAgQVRPTV9HUElPX0lOREVYX0dMU1lOQ19SRUZDTEsgPSAwLAoxNDQ3NDog ICBBVE9NX0dQSU9fSU5ERVhfR0xTWU5DX0hTWU5DID0gMSwKMTQ0NzQ6ICAgQVRPTV9HUElPX0lO REVYX0dMU1lOQ19WU1lOQyA9IDIsCjE0NDc0OiAgIEFUT01fR1BJT19JTkRFWF9HTFNZTkNfU1dB UF9SRVEgPSAzLAoxNDQ3NDogICBBVE9NX0dQSU9fSU5ERVhfR0xTWU5DX1NXQVBfR05UID0gNCwK MTQ0NzQ6ICAgQVRPTV9HUElPX0lOREVYX0dMU1lOQ19JTlRFUlJVUFQgPSA1LAoxNDQ3NDogICBB VE9NX0dQSU9fSU5ERVhfR0xTWU5DX1ZfUkVTRVQgPSA2LAoxNDQ3NDogICBBVE9NX0dQSU9fSU5E RVhfR0xTWU5DX1NXQVBfQ05UTCA9IDcsCjE0NDc0OiAgIEFUT01fR1BJT19JTkRFWF9HTFNZTkNf U1dBUF9TRUwgPSA4LAoxNDQ3NDogICBBVE9NX0dQSU9fSU5ERVhfR0xTWU5DX01BWCA9IDksCjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2Nvbm5lY3Rvcl9ocGRw aW5fbHV0X3JlY29yZAoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fcmVjb3Jk X2hlYWRlciByZWNvcmRfaGVhZGVyOwoxNDQ3NDogICB1aW50OF90IGhwZF9waW5fbWFwWzhdOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fY29ubmVjdG9yX2F1eGRkY19sdXRf cmVjb3JkCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVy IHJlY29yZF9oZWFkZXI7CjE0NDc0OiAgIHVpbnQ4X3QgYXV4X2RkY19tYXBbOF07CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9jb25uZWN0b3JfZm9yY2VkX3RtZHNfY2FwX3Jl Y29yZAoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fcmVjb3JkX2hlYWRlciBy ZWNvcmRfaGVhZGVyOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgbWF4dG1kc2Nsa3JhdGVfaW4y XzVtaHo7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgYXRvbV9jb25uZWN0b3JfbGF5b3V0X2luZm8KMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWlu dDE2X3QgY29ubmVjdG9yb2JqaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgY29ubmVjdG9yX3R5cGU7CjE0 NDc0OiAgIHVpbnQ4X3QgcG9zaXRpb247CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGVudW0gYXRvbV9jb25uZWN0b3JfbGF5b3V0X2luZm9fY29ubmVjdG9yX3R5cGVfZGVmCjE0NDc0 OiB7CjE0NDc0OiAgIENPTk5FQ1RPUl9UWVBFX0RWSV9EID0gMSwKMTQ0NzQ6IAoxNDQ3NDogICBD T05ORUNUT1JfVFlQRV9IRE1JID0gNCwKMTQ0NzQ6ICAgQ09OTkVDVE9SX1RZUEVfRElTUExBWV9Q T1JUID0gNSwKMTQ0NzQ6ICAgQ09OTkVDVE9SX1RZUEVfTUlOSV9ESVNQTEFZX1BPUlQgPSA2LAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fYnJhY2tldF9sYXlvdXRfcmVjb3Jk CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29y ZF9oZWFkZXI7CjE0NDc0OiAgIHVpbnQ4X3QgYnJhY2tldGxlbjsKMTQ0NzQ6ICAgdWludDhfdCBi cmFja2V0d2lkdGg7CjE0NDc0OiAgIHVpbnQ4X3QgY29ubl9udW07CjE0NDc0OiAgIHVpbnQ4X3Qg cmVzZXJ2ZWQ7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2Nvbm5lY3Rvcl9sYXlvdXRfaW5mbyBjb25u X2luZm9bMV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fZGlzcGxheV9kZXZp Y2VfdGFnX2RlZnsKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0xDRDFfU1VQUE9SVCA9IDB4MDAwMiwK MTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDFfU1VQUE9SVCA9IDB4MDAwOCwKMTQ0NzQ6ICAgQVRP TV9ESVNQTEFZX0RGUDJfU1VQUE9SVCA9IDB4MDA4MCwKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RG UDNfU1VQUE9SVCA9IDB4MDIwMCwKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDRfU1VQUE9SVCA9 IDB4MDQwMCwKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDVfU1VQUE9SVCA9IDB4MDgwMCwKMTQ0 NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDZfU1VQUE9SVCA9IDB4MDA0MCwKMTQ0NzQ6ICAgQVRPTV9E SVNQTEFZX0RGUHhfU1VQUE9SVCA9IDB4MGVjOCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBhdG9tX2Rpc3BsYXlfb2JqZWN0X3BhdGhfdjIKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDE2 X3QgZGlzcGxheV9vYmppZDsKMTQ0NzQ6ICAgdWludDE2X3QgZGlzcF9yZWNvcmRvZmZzZXQ7CjE0 NDc0OiAgIHVpbnQxNl90IGVuY29kZXJvYmppZDsKMTQ0NzQ6ICAgdWludDE2X3QgZXh0ZW5jb2Rl cm9iamlkOwoxNDQ3NDogICB1aW50MTZfdCBlbmNvZGVyX3JlY29yZG9mZnNldDsKMTQ0NzQ6ICAg dWludDE2X3QgZXh0ZW5jb2Rlcl9yZWNvcmRvZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IGRldmlj ZV90YWc7CjE0NDc0OiAgIHVpbnQ4X3QgcHJpb3JpdHlfaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgcmVz ZXJ2ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGlzcGxheV9vYmplY3RfaW5m b190YWJsZV92MV80CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9o ZWFkZXIgdGFibGVfaGVhZGVyOwoxNDQ3NDogICB1aW50MTZfdCBzdXBwb3J0ZWRkZXZpY2VzOwox NDQ3NDogICB1aW50OF90IG51bWJlcl9vZl9wYXRoOwoxNDQ3NDogICB1aW50OF90IHJlc2VydmVk OwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9kaXNwbGF5X29iamVjdF9wYXRoX3YyIGRpc3BsYXlfcGF0 aFs4XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2Rpc3BsYXlfY29udHJvbGxlcl9pbmZv X3Y0XzEKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0 YWJsZV9oZWFkZXI7CjE0NDc0OiAgIHVpbnQzMl90IGRpc3BsYXlfY2FwczsKMTQ0NzQ6ICAgdWlu dDMyX3QgYm9vdHVwX2Rpc3BjbGtfMTBraHo7CjE0NDc0OiAgIHVpbnQxNl90IGRjZV9yZWZjbGtf MTBraHo7CjE0NDc0OiAgIHVpbnQxNl90IGkyY19lbmdpbmVfcmVmY2xrXzEwa2h6OwoxNDQ3NDog ICB1aW50MTZfdCBkdmlfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2X3QgZHZpX3NzX3Jh dGVfMTBoejsKMTQ0NzQ6ICAgdWludDE2X3QgaGRtaV9zc19wZXJjZW50YWdlOwoxNDQ3NDogICB1 aW50MTZfdCBoZG1pX3NzX3JhdGVfMTBoejsKMTQ0NzQ6ICAgdWludDE2X3QgZHBfc3NfcGVyY2Vu dGFnZTsKMTQ0NzQ6ICAgdWludDE2X3QgZHBfc3NfcmF0ZV8xMGh6OwoxNDQ3NDogICB1aW50OF90 IGR2aV9zc19tb2RlOwoxNDQ3NDogICB1aW50OF90IGhkbWlfc3NfbW9kZTsKMTQ0NzQ6ICAgdWlu dDhfdCBkcF9zc19tb2RlOwoxNDQ3NDogICB1aW50OF90IHNzX3Jlc2VydmVkOwoxNDQ3NDogICB1 aW50OF90IGhhcmRjb2RlX21vZGVfbnVtOwoxNDQ3NDogICB1aW50OF90IHJlc2VydmVkMVszXTsK MTQ0NzQ6ICAgdWludDE2X3QgZHBwaHlfcmVmY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MTZfdCBy ZXNlcnZlZDI7CjE0NDc0OiAgIHVpbnQ4X3QgZGNlaXBfbWluX3ZlcjsKMTQ0NzQ6ICAgdWludDhf dCBkY2VpcF9tYXhfdmVyOwoxNDQ3NDogICB1aW50OF90IG1heF9kaXNwX3BpcGVfbnVtOwoxNDQ3 NDogICB1aW50OF90IG1heF92Ymlvc19hY3RpdmVfZGlzcF9waXBlX251bTsKMTQ0NzQ6ICAgdWlu dDhfdCBtYXhfcHBsbF9udW07CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X2Rpc3BfcGh5X251bTsKMTQ0 NzQ6ICAgdWludDhfdCBtYXhfYXV4X3BhaXJzOwoxNDQ3NDogICB1aW50OF90IHJlbW90ZWRpc3Bs YXljb25maWc7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQzWzhdOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9kaXNwbGF5X2NvbnRyb2xsZXJfaW5mb192NF8y CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVf aGVhZGVyOwoxNDQ3NDogICB1aW50MzJfdCBkaXNwbGF5X2NhcHM7CjE0NDc0OiAgIHVpbnQzMl90 IGJvb3R1cF9kaXNwY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MTZfdCBkY2VfcmVmY2xrXzEwa2h6 OwoxNDQ3NDogICB1aW50MTZfdCBpMmNfZW5naW5lX3JlZmNsa18xMGtoejsKMTQ0NzQ6ICAgdWlu dDE2X3QgZHZpX3NzX3BlcmNlbnRhZ2U7CjE0NDc0OiAgIHVpbnQxNl90IGR2aV9zc19yYXRlXzEw aHo7CjE0NDc0OiAgIHVpbnQxNl90IGhkbWlfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2 X3QgaGRtaV9zc19yYXRlXzEwaHo7CjE0NDc0OiAgIHVpbnQxNl90IGRwX3NzX3BlcmNlbnRhZ2U7 CjE0NDc0OiAgIHVpbnQxNl90IGRwX3NzX3JhdGVfMTBoejsKMTQ0NzQ6ICAgdWludDhfdCBkdmlf c3NfbW9kZTsKMTQ0NzQ6ICAgdWludDhfdCBoZG1pX3NzX21vZGU7CjE0NDc0OiAgIHVpbnQ4X3Qg ZHBfc3NfbW9kZTsKMTQ0NzQ6ICAgdWludDhfdCBzc19yZXNlcnZlZDsKMTQ0NzQ6ICAgdWludDhf dCBkZnBfaGFyZGNvZGVfbW9kZV9udW07CjE0NDc0OiAgIHVpbnQ4X3QgZGZwX2hhcmRjb2RlX3Jl ZnJlc2hyYXRlOwoxNDQ3NDogICB1aW50OF90IHZnYV9oYXJkY29kZV9tb2RlX251bTsKMTQ0NzQ6 ICAgdWludDhfdCB2Z2FfaGFyZGNvZGVfcmVmcmVzaHJhdGU7CjE0NDc0OiAgIHVpbnQxNl90IGRw cGh5X3JlZmNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDE2X3QgcmVzZXJ2ZWQyOwoxNDQ3NDogICB1 aW50OF90IGRjbmlwX21pbl92ZXI7CjE0NDc0OiAgIHVpbnQ4X3QgZGNuaXBfbWF4X3ZlcjsKMTQ0 NzQ6ICAgdWludDhfdCBtYXhfZGlzcF9waXBlX251bTsKMTQ0NzQ6ICAgdWludDhfdCBtYXhfdmJp b3NfYWN0aXZlX2Rpc3BfcGlwZV9udW07CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X3BwbGxfbnVtOwox NDQ3NDogICB1aW50OF90IG1heF9kaXNwX3BoeV9udW07CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X2F1 eF9wYWlyczsKMTQ0NzQ6ICAgdWludDhfdCByZW1vdGVkaXNwbGF5Y29uZmlnOwoxNDQ3NDogICB1 aW50OF90IHJlc2VydmVkM1s4XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51 bSBkY2VfaW5mb19jYXBzX2RlZgoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgIERDRV9JTkZPX0NB UFNfRk9SQ0VfRElTUERFVl9DT05ORUNURUQgPTB4MDIsCjE0NDc0OiAKMTQ0NzQ6ICAgRENFX0lO Rk9fQ0FQU19ESVNBQkxFX0RGUF9EUF9IQlIyID0weDA0LAoxNDQ3NDogCjE0NDc0OiAgIERDRV9J TkZPX0NBUFNfRU5BQkxFX0lOVEVSTEFDX1RJTUlORyA9MHgwOCwKMTQ0NzQ6IAoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBhdG9tX2V4dF9kaXNwbGF5X3BhdGgKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDE2X3QgZGV2 aWNlX3RhZzsKMTQ0NzQ6ICAgdWludDE2X3QgZGV2aWNlX2FjcGlfZW51bTsKMTQ0NzQ6ICAgdWlu dDE2X3QgY29ubmVjdG9yb2JqaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgYXV4ZGRjbHV0X2luZGV4Owox NDQ3NDogICB1aW50OF90IGhwZGx1dF9pbmRleDsKMTQ0NzQ6ICAgdWludDE2X3QgZXh0X2VuY29k ZXJfb2JqaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgY2hhbm5lbG1hcHBpbmc7CjE0NDc0OiAgIHVpbnQ4 X3QgY2hwbmludmVydDsKMTQ0NzQ6ICAgdWludDE2X3QgY2FwczsKMTQ0NzQ6ICAgdWludDE2X3Qg cmVzZXJ2ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZXh0X2Rpc3Bs YXlfcGF0aF9jYXBfZGVmCjE0NDc0OiB7CjE0NDc0OiAgIEVYVF9ESVNQTEFZX1BBVEhfQ0FQU19f SEJSMl9ESVNBQkxFID0weDAwMDEsCjE0NDc0OiAgIEVYVF9ESVNQTEFZX1BBVEhfQ0FQU19fRFBf RklYRURfVlNfRU4gPTB4MDAwMiwKMTQ0NzQ6ICAgRVhUX0RJU1BMQVlfUEFUSF9DQVBTX19FWFRf Q0hJUF9NQVNLID0weDAwN0MsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9l eHRlcm5hbF9kaXNwbGF5X2Nvbm5lY3Rpb25faW5mbwoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3Qg YXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCBn dWlkWzE2XTsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fZXh0X2Rpc3BsYXlfcGF0aCBwYXRoWzddOwox NDQ3NDogICB1aW50OF90IGNoZWNrc3VtOwoxNDQ3NDogICB1aW50OF90IHN0ZXJlb3BpbmlkOwox NDQ3NDogICB1aW50OF90IHJlbW90ZWRpc3BsYXljb25maWc7CjE0NDc0OiAgIHVpbnQ4X3QgZWRw dG9sdmRzcnhpZDsKMTQ0NzQ6ICAgdWludDhfdCBmaXhkcHZvbHRhZ2Vzd2luZzsKMTQ0NzQ6ICAg dWludDhfdCByZXNlcnZlZFszXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2NhbWVyYV9k cGh5X3RpbWluZ19wYXJhbQoxNDQ3NDogewoxNDQ3NDogICB1aW50OF90IHByb2ZpbGVfaWQ7CjE0 NDc0OiAgIHVpbnQzMl90IHBhcmFtOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0 b21fY2FtZXJhX2RwaHlfZWxlY19wYXJhbQoxNDQ3NDogewoxNDQ3NDogICB1aW50MTZfdCBwYXJh bVszXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2NhbWVyYV9tb2R1bGVf aW5mbwoxNDQ3NDogewoxNDQ3NDogICB1aW50OF90IG1vZHVsZV9pZDsKMTQ0NzQ6ICAgdWludDhf dCBtb2R1bGVfbmFtZVs4XTsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY2FtZXJhX2RwaHlfdGltaW5n X3BhcmFtIHRpbWluZ3BhcmFtWzZdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0 b21fY2FtZXJhX2ZsYXNobGlnaHRfaW5mbwoxNDQ3NDogewoxNDQ3NDogICB1aW50OF90IGZsYXNo bGlnaHRfaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgbmFtZVs4XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBhdG9tX2NhbWVyYV9kYXRhCjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQzMl90IHZl cnNpb25Db2RlOwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jYW1lcmFfbW9kdWxlX2luZm8gY2FtZXJh SW5mb1szXTsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY2FtZXJhX2ZsYXNobGlnaHRfaW5mbyBmbGFz aEluZm87CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NhbWVyYV9kcGh5X2VsZWNfcGFyYW0gZHBoeV9w YXJhbTsKMTQ0NzQ6ICAgdWludDMyX3QgY3JjX3ZhbDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGF0b21fMTRubV9kcHBoeV9kdmloZG1pX3R1bmluZ3NldAoxNDQ3NDog ewoxNDQ3NDogICB1aW50MzJfdCBtYXhfc3ltY2xrX2luMTBraHo7CjE0NDc0OiAgIHVpbnQ4X3Qg ZW5jb2Rlcl9tb2RlOwoxNDQ3NDogICB1aW50OF90IHBoeV9zZWw7CjE0NDc0OiAgIHVpbnQxNl90 IG1hcmdpbmRlZW1waDsKMTQ0NzQ6ICAgdWludDhfdCBkZWVtcGhfNmRiXzQ7CjE0NDc0OiAgIHVp bnQ4X3QgYm9vc3RhZGo7CjE0NDc0OiAgIHVpbnQ4X3QgdHhfZHJpdmVyX2ZpZnR5X29obXM7CjE0 NDc0OiAgIHVpbnQ4X3QgZGVlbXBoX3NlbDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBhdG9tXzE0bm1fZHBwaHlfZHBfc2V0dGluZ3sKMTQ0NzQ6ICAgdWludDhfdCBkcF92c19wZW1w aF9sZXZlbDsKMTQ0NzQ6ICAgdWludDE2X3QgbWFyZ2luZGVlbXBoOwoxNDQ3NDogICB1aW50OF90 IGRlZW1waF82ZGJfNDsKMTQ0NzQ6ICAgdWludDhfdCBib29zdGFkajsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlfZHBfdHVuaW5nc2V0ewoxNDQ3NDogICB1 aW50OF90IHBoeV9zZWw7CjE0NDc0OiAgIHVpbnQ4X3QgdmVyc2lvbjsKMTQ0NzQ6ICAgdWludDE2 X3QgdGFibGVfc2l6ZTsKMTQ0NzQ6ICAgdWludDE2X3QgcmVzZXJ2ZWQ7CjE0NDc0OiAgIHN0cnVj dCBhdG9tXzE0bm1fZHBwaHlfZHBfc2V0dGluZyBkcHR1bmluZ1sxMF07CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV8xNG5tX2RpZ190cmFuc21pdHRlcl9pbmZvX2hlYWRlcl92 NF8wewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRl cjsKMTQ0NzQ6ICAgdWludDE2X3QgcGNpZV9waHlfdG1kc19oZG1pX21hY3JvX3NldHRpbmdzX29m ZnNldDsKMTQ0NzQ6ICAgdWludDE2X3QgdW5pcGh5X3ZzX2VtcGhfbG9va3VwX3RhYmxlX29mZnNl dDsKMTQ0NzQ6ICAgdWludDE2X3QgdW5pcGh5X3hiYXJfc2V0dGluZ3NfdGFibGVfb2Zmc2V0Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fMTRubV9jb21icGh5X3RtZHNfdnNf c2V0CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQ4X3Qgc3ltX2NsazsKMTQ0NzQ6ICAgdWludDhfdCBk aWdfbW9kZTsKMTQ0NzQ6ICAgdWludDhfdCBwaHlfc2VsOwoxNDQ3NDogICB1aW50MTZfdCBjb21t b25fbWFyX2RlZW1waF9ub21fX21hcmdpbl9kZWVtcGhfdmFsOwoxNDQ3NDogICB1aW50OF90IGNv bW1vbl9zZWxkZWVtcGg2MF9fZGVlbXBoXzZkYl80X3ZhbDsKMTQ0NzQ6ICAgdWludDhfdCBjbWRf YnVzX2dsb2JhbF9mb3JfdHhfbGFuZTBfX2Jvb3N0YWRqX3ZhbCA7CjE0NDc0OiAgIHVpbnQ4X3Qg Y29tbW9uX3pjYWxjb2RlX2N0cmxfX3R4X2RyaXZlcl9maWZ0eV9vaG1zX3ZhbDsKMTQ0NzQ6ICAg dWludDhfdCBtYXJnaW5fZGVlbXBoX2xhbmUwX19kZWVtcGhfc2VsX3ZhbDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2kyY19yZWdfaW5mbyB7CjE0NDc0OiAgIHVpbnQ4X3Qg dWNJMmNSZWdJbmRleDsKMTQ0NzQ6ICAgdWludDhfdCB1Y0kyY1JlZ1ZhbDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2hkbWlfcmV0aW1lcl9yZWRyaXZlcl9zZXQgewoxNDQ3 NDogICB1aW50OF90IEhkbWlTbHZBZGRyOwoxNDQ3NDogICB1aW50OF90IEhkbWlSZWdOdW07CjE0 NDc0OiAgIHVpbnQ4X3QgSGRtaTZHUmVnTnVtOwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9pMmNfcmVn X2luZm8gSGRtaVJlZ1NldHRpbmdbOV07CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2kyY19yZWdfaW5m byBIZG1pNkdoelJlZ1NldHRpbmdbM107CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg YXRvbV9pbnRlZ3JhdGVkX3N5c3RlbV9pbmZvX3YxXzExCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVj dCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwoxNDQ3NDogICB1aW50MzJf dCB2Ymlvc19taXNjOwoxNDQ3NDogICB1aW50MzJfdCBncHVjYXBpbmZvOwoxNDQ3NDogICB1aW50 MzJfdCBzeXN0ZW1fY29uZmlnOwoxNDQ3NDogICB1aW50MzJfdCBjcHVjYXBpbmZvOwoxNDQ3NDog ICB1aW50MTZfdCBncHVjbGtfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2X3QgZ3B1Y2xr X3NzX3R5cGU7CjE0NDc0OiAgIHVpbnQxNl90IGx2ZHNfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAg dWludDE2X3QgbHZkc19zc19yYXRlXzEwaHo7CjE0NDc0OiAgIHVpbnQxNl90IGhkbWlfc3NfcGVy Y2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2X3QgaGRtaV9zc19yYXRlXzEwaHo7CjE0NDc0OiAgIHVp bnQxNl90IGR2aV9zc19wZXJjZW50YWdlOwoxNDQ3NDogICB1aW50MTZfdCBkdmlfc3NfcmF0ZV8x MGh6OwoxNDQ3NDogICB1aW50MTZfdCBkcHBoeV9vdmVycmlkZTsKMTQ0NzQ6ICAgdWludDE2X3Qg bHZkc19taXNjOwoxNDQ3NDogICB1aW50MTZfdCBiYWNrbGlnaHRfcHdtX2h6OwoxNDQ3NDogICB1 aW50OF90IG1lbW9yeXR5cGU7CjE0NDc0OiAgIHVpbnQ4X3QgdW1hY2hhbm5lbG51bWJlcjsKMTQ0 NzQ6ICAgdWludDhfdCBwd3Jfb25fZGlnb25fdG9fZGU7CjE0NDc0OiAgIHVpbnQ4X3QgcHdyX29u X2RlX3RvX3ZhcnlfYmw7CjE0NDc0OiAgIHVpbnQ4X3QgcHdyX2Rvd25fdmFyeV9ibG9mZl90b19k ZTsKMTQ0NzQ6ICAgdWludDhfdCBwd3JfZG93bl9kZV90b19kaWdvZmY7CjE0NDc0OiAgIHVpbnQ4 X3QgcHdyX29mZl9kZWxheTsKMTQ0NzQ6ICAgdWludDhfdCBwd3Jfb25fdmFyeV9ibF90b19ibG9u OwoxNDQ3NDogICB1aW50OF90IHB3cl9kb3duX2Jsb2ZmX3RvX3ZhcnlfYmxvZmY7CjE0NDc0OiAg IHVpbnQ4X3QgbWluX2FsbG93ZWRfYmxfbGV2ZWw7CjE0NDc0OiAgIHVpbnQ4X3QgaHRjX2h5c3Rf bGltaXQ7CjE0NDc0OiAgIHVpbnQ4X3QgaHRjX3RtcF9saW1pdDsKMTQ0NzQ6ICAgdWludDhfdCBy ZXNlcnZlZDE7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQyOwoxNDQ3NDogICBzdHJ1Y3QgYXRv bV9leHRlcm5hbF9kaXNwbGF5X2Nvbm5lY3Rpb25faW5mbyBleHRkaXNwY29ubmluZm87CjE0NDc0 OiAgIHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlfZHZpaGRtaV90dW5pbmdzZXQgZHZpX3R1bmluZ3Nl dDsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fMTRubV9kcHBoeV9kdmloZG1pX3R1bmluZ3NldCBoZG1p X3R1bmluZ3NldDsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fMTRubV9kcHBoeV9kdmloZG1pX3R1bmlu Z3NldCBoZG1pNmdfdHVuaW5nc2V0OwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV8xNG5tX2RwcGh5X2Rw X3R1bmluZ3NldCBkcF90dW5pbmdzZXQ7CjE0NDc0OiAgIHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlf ZHBfdHVuaW5nc2V0IGRwX2hicjNfdHVuaW5nc2V0OwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jYW1l cmFfZGF0YSBjYW1lcmFfaW5mbzsKMTQ0NzQ6ICAgc3RydWN0IGF0b21faGRtaV9yZXRpbWVyX3Jl ZHJpdmVyX3NldCBkcDBfcmV0aW1lcl9zZXQ7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2hkbWlfcmV0 aW1lcl9yZWRyaXZlcl9zZXQgZHAxX3JldGltZXJfc2V0OwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9o ZG1pX3JldGltZXJfcmVkcml2ZXJfc2V0IGRwMl9yZXRpbWVyX3NldDsKMTQ0NzQ6ICAgc3RydWN0 IGF0b21faGRtaV9yZXRpbWVyX3JlZHJpdmVyX3NldCBkcDNfcmV0aW1lcl9zZXQ7CjE0NDc0OiAg IHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlfZHBfdHVuaW5nc2V0IGRwX2hicl90dW5pbmdzZXQ7CjE0 NDc0OiAgIHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlfZHBfdHVuaW5nc2V0IGRwX2hicjJfdHVuaW5n c2V0OwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV8xNG5tX2RwcGh5X2RwX3R1bmluZ3NldCBlZHBfdHVu aW5nc2V0OwoxNDQ3NDogICB1aW50MzJfdCByZXNlcnZlZFs2Nl07CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3N5c3RlbV92Ymlvc21pc2NfZGVmewox NDQ3NDogICBJTlRFR1JBVEVEX1NZU1RFTV9JTkZPX19HRVRfRURJRF9DQUxMQkFDS19GVU5DX1NV UFBPUlQgPSAweDAxLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVu dW0gYXRvbV9zeXN0ZW1fZ3B1Y2FwaW5mX2RlZnsKMTQ0NzQ6ICAgU1lTX0lORk9fR1BVQ0FQU19f RU5BQkVMX0RGU19CWVBBU1MgPSAweDEwLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBlbnVtIGF0b21fc3lzaW5mb19kcHBoeV9vdmVycmlkZV9kZWZ7CjE0NDc0OiAgIEFUT01fRU5B QkxFX0RWSV9UVU5JTkdTRVQgPSAweDAxLAoxNDQ3NDogICBBVE9NX0VOQUJMRV9IRE1JX1RVTklO R1NFVCA9IDB4MDIsCjE0NDc0OiAgIEFUT01fRU5BQkxFX0hETUk2R19UVU5JTkdTRVQgPSAweDA0 LAoxNDQ3NDogICBBVE9NX0VOQUJMRV9EUF9UVU5JTkdTRVQgPSAweDA4LAoxNDQ3NDogICBBVE9N X0VOQUJMRV9EUF9IQlIzX1RVTklOR1NFVCA9IDB4MTAsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGVudW0gYXRvbV9zeXNfaW5mb19sdmRzX21pc2NfZGVmCjE0NDc0OiB7CjE0NDc0 OiAgIFNZU19JTkZPX0xWRFNfTUlTQ184ODhfRlBESV9NT0RFID0weDAxLAoxNDQ3NDogICBTWVNf SU5GT19MVkRTX01JU0NfODg4X0JQQ19NT0RFID0weDA0LAoxNDQ3NDogICBTWVNfSU5GT19MVkRT X01JU0NfT1ZFUlJJREVfRU4gPTB4MDgsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZW51bSBhdG9tX2RtaV90MTdfbWVtX3R5cGVfZGVmewoxNDQ3NDogICBPdGhlck1l bVR5cGUgPSAweDAxLAoxNDQ3NDogICBVbmtub3duTWVtVHlwZSwKMTQ0NzQ6ICAgRHJhbU1lbVR5 cGUsCjE0NDc0OiAgIEVkcmFtTWVtVHlwZSwKMTQ0NzQ6ICAgVnJhbU1lbVR5cGUsCjE0NDc0OiAg IFNyYW1NZW1UeXBlLAoxNDQ3NDogICBSYW1NZW1UeXBlLAoxNDQ3NDogICBSb21NZW1UeXBlLAox NDQ3NDogICBGbGFzaE1lbVR5cGUsCjE0NDc0OiAgIEVlcHJvbU1lbVR5cGUsCjE0NDc0OiAgIEZl cHJvbU1lbVR5cGUsCjE0NDc0OiAgIEVwcm9tTWVtVHlwZSwKMTQ0NzQ6ICAgQ2RyYW1NZW1UeXBl LAoxNDQ3NDogICBUaHJlZURyYW1NZW1UeXBlLAoxNDQ3NDogICBTZHJhbU1lbVR5cGUsCjE0NDc0 OiAgIFNncmFtTWVtVHlwZSwKMTQ0NzQ6ICAgUmRyYW1NZW1UeXBlLAoxNDQ3NDogICBEZHJNZW1U eXBlLAoxNDQ3NDogICBEZHIyTWVtVHlwZSwKMTQ0NzQ6ICAgRGRyMkZiZGltbU1lbVR5cGUsCjE0 NDc0OiAgIERkcjNNZW1UeXBlID0gMHgxOCwKMTQ0NzQ6ICAgRmJkMk1lbVR5cGUsCjE0NDc0OiAg IERkcjRNZW1UeXBlLAoxNDQ3NDogICBMcERkck1lbVR5cGUsCjE0NDc0OiAgIExwRGRyMk1lbVR5 cGUsCjE0NDc0OiAgIExwRGRyM01lbVR5cGUsCjE0NDc0OiAgIExwRGRyNE1lbVR5cGUsCjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fZnVzaW9uX3N5 c3RlbV9pbmZvX3Y0CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2ludGVncmF0ZWRfc3lz dGVtX2luZm9fdjFfMTEgc3lzaW5mbzsKMTQ0NzQ6ICAgdWludDMyX3QgcG93ZXJwbGF5aW5mb1sy NTZdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTIxOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgoxNDQ3NDogc3RydWN0IGF0b21fZ2Z4X2luZm9f djJfMgoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRh YmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCBnZnhpcF9taW5fdmVyOwoxNDQ3NDogICB1aW50 OF90IGdmeGlwX21heF92ZXI7CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X3NoYWRlcl9lbmdpbmVzOwox NDQ3NDogICB1aW50OF90IG1heF90aWxlX3BpcGVzOwoxNDQ3NDogICB1aW50OF90IG1heF9jdV9w ZXJfc2g7CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X3NoX3Blcl9zZTsKMTQ0NzQ6ICAgdWludDhfdCBt YXhfYmFja2VuZHNfcGVyX3NlOwoxNDQ3NDogICB1aW50OF90IG1heF90ZXh0dXJlX2NoYW5uZWxf Y2FjaGVzOwoxNDQ3NDogICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9zcmNfYWRkcjsKMTQ0NzQ6 ICAgdWludDMyX3QgcmVnYWRkcl9jcF9kbWFfc3JjX2FkZHJfaGk7CjE0NDc0OiAgIHVpbnQzMl90 IHJlZ2FkZHJfY3BfZG1hX2RzdF9hZGRyOwoxNDQ3NDogICB1aW50MzJfdCByZWdhZGRyX2NwX2Rt YV9kc3RfYWRkcl9oaTsKMTQ0NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9kbWFfY29tbWFuZDsK MTQ0NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9zdGF0dXM7CjE0NDc0OiAgIHVpbnQzMl90IHJl Z2FkZHJfcmxjX2dwdV9jbG9ja18zMjsKMTQ0NzQ6ICAgdWludDMyX3QgcmxjX2dwdV90aW1lcl9y ZWZjbGs7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9nZnhfaW5mb192Ml8z IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7 CjE0NDc0OiAgIHVpbnQ4X3QgZ2Z4aXBfbWluX3ZlcjsKMTQ0NzQ6ICAgdWludDhfdCBnZnhpcF9t YXhfdmVyOwoxNDQ3NDogICB1aW50OF90IG1heF9zaGFkZXJfZW5naW5lczsKMTQ0NzQ6ICAgdWlu dDhfdCBtYXhfdGlsZV9waXBlczsKMTQ0NzQ6ICAgdWludDhfdCBtYXhfY3VfcGVyX3NoOwoxNDQ3 NDogICB1aW50OF90IG1heF9zaF9wZXJfc2U7CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X2JhY2tlbmRz X3Blcl9zZTsKMTQ0NzQ6ICAgdWludDhfdCBtYXhfdGV4dHVyZV9jaGFubmVsX2NhY2hlczsKMTQ0 NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9kbWFfc3JjX2FkZHI7CjE0NDc0OiAgIHVpbnQzMl90 IHJlZ2FkZHJfY3BfZG1hX3NyY19hZGRyX2hpOwoxNDQ3NDogICB1aW50MzJfdCByZWdhZGRyX2Nw X2RtYV9kc3RfYWRkcjsKMTQ0NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9kbWFfZHN0X2FkZHJf aGk7CjE0NDc0OiAgIHVpbnQzMl90IHJlZ2FkZHJfY3BfZG1hX2NvbW1hbmQ7CjE0NDc0OiAgIHVp bnQzMl90IHJlZ2FkZHJfY3Bfc3RhdHVzOwoxNDQ3NDogICB1aW50MzJfdCByZWdhZGRyX3JsY19n cHVfY2xvY2tfMzI7CjE0NDc0OiAgIHVpbnQzMl90IHJsY19ncHVfdGltZXJfcmVmY2xrOwoxNDQ3 NDogICB1aW50OF90IGFjdGl2ZV9jdV9wZXJfc2g7CjE0NDc0OiAgIHVpbnQ4X3QgYWN0aXZlX3Ji X3Blcl9zZTsKMTQ0NzQ6ICAgdWludDE2X3QgZ2Nnb2xkZW5vZmZzZXQ7CjE0NDc0OiAgIHVpbnQz Ml90IHJtMjFfc3JhbV92bWluX3ZhbHVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGF0b21fZ2Z4X2luZm9fdjJfNAoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25f dGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCBnZnhpcF9taW5fdmVy OwoxNDQ3NDogICB1aW50OF90IGdmeGlwX21heF92ZXI7CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X3No YWRlcl9lbmdpbmVzOwoxNDQ3NDogICB1aW50OF90IHJlc2VydmVkOwoxNDQ3NDogICB1aW50OF90 IG1heF9jdV9wZXJfc2g7CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X3NoX3Blcl9zZTsKMTQ0NzQ6ICAg dWludDhfdCBtYXhfYmFja2VuZHNfcGVyX3NlOwoxNDQ3NDogICB1aW50OF90IG1heF90ZXh0dXJl X2NoYW5uZWxfY2FjaGVzOwoxNDQ3NDogICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9zcmNfYWRk cjsKMTQ0NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9kbWFfc3JjX2FkZHJfaGk7CjE0NDc0OiAg IHVpbnQzMl90IHJlZ2FkZHJfY3BfZG1hX2RzdF9hZGRyOwoxNDQ3NDogICB1aW50MzJfdCByZWdh ZGRyX2NwX2RtYV9kc3RfYWRkcl9oaTsKMTQ0NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9kbWFf Y29tbWFuZDsKMTQ0NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9zdGF0dXM7CjE0NDc0OiAgIHVp bnQzMl90IHJlZ2FkZHJfcmxjX2dwdV9jbG9ja18zMjsKMTQ0NzQ6ICAgdWludDMyX3QgcmxjX2dw dV90aW1lcl9yZWZjbGs7CjE0NDc0OiAgIHVpbnQ4X3QgYWN0aXZlX2N1X3Blcl9zaDsKMTQ0NzQ6 ICAgdWludDhfdCBhY3RpdmVfcmJfcGVyX3NlOwoxNDQ3NDogICB1aW50MTZfdCBnY2dvbGRlbm9m ZnNldDsKMTQ0NzQ6ICAgdWludDE2X3QgZ2NfbnVtX2dwcnM7CjE0NDc0OiAgIHVpbnQxNl90IGdj X2dzcHJpbV9idWZmX2RlcHRoOwoxNDQ3NDogICB1aW50MTZfdCBnY19wYXJhbWV0ZXJfY2FjaGVf ZGVwdGg7CjE0NDc0OiAgIHVpbnQxNl90IGdjX3dhdmVfc2l6ZTsKMTQ0NzQ6ICAgdWludDE2X3Qg Z2NfbWF4X3dhdmVzX3Blcl9zaW1kOwoxNDQ3NDogICB1aW50MTZfdCBnY19sZHNfc2l6ZTsKMTQ0 NzQ6ICAgdWludDhfdCBnY19udW1fbWF4X2dzX3RoZHM7CjE0NDc0OiAgIHVpbnQ4X3QgZ2NfZ3Nf dGFibGVfZGVwdGg7CjE0NDc0OiAgIHVpbnQ4X3QgZ2NfZG91YmxlX29mZmNoaXBfbGRzX2J1ZmZl cjsKMTQ0NzQ6ICAgdWludDhfdCBnY19tYXhfc2NyYXRjaF9zbG90c19wZXJfY3U7CjE0NDc0OiAg IHVpbnQzMl90IHNyYW1fcm1fZnVzZXNfdmFsOwoxNDQ3NDogICB1aW50MzJfdCBzcmFtX2N1c3Rv bV9ybV9mdXNlc192YWw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fc211X2luZm9fdjNfMQoxNDQ3NDog ewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsK MTQ0NzQ6ICAgdWludDhfdCBzbXVpcF9taW5fdmVyOwoxNDQ3NDogICB1aW50OF90IHNtdWlwX21h eF92ZXI7CjE0NDc0OiAgIHVpbnQ4X3Qgc211X3JzZDE7CjE0NDc0OiAgIHVpbnQ4X3QgZ3B1Y2xr X3NzX21vZGU7CjE0NDc0OiAgIHVpbnQxNl90IHNjbGtfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAg dWludDE2X3Qgc2Nsa19zc19yYXRlXzEwaHo7CjE0NDc0OiAgIHVpbnQxNl90IGdwdWNsa19zc19w ZXJjZW50YWdlOwoxNDQ3NDogICB1aW50MTZfdCBncHVjbGtfc3NfcmF0ZV8xMGh6OwoxNDQ3NDog ICB1aW50MzJfdCBjb3JlX3JlZmNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDhfdCBhY19kY19ncGlv X2JpdDsKMTQ0NzQ6ICAgdWludDhfdCBhY19kY19wb2xhcml0eTsKMTQ0NzQ6ICAgdWludDhfdCB2 cjBob3RfZ3Bpb19iaXQ7CjE0NDc0OiAgIHVpbnQ4X3QgdnIwaG90X3BvbGFyaXR5OwoxNDQ3NDog ICB1aW50OF90IHZyMWhvdF9ncGlvX2JpdDsKMTQ0NzQ6ICAgdWludDhfdCB2cjFob3RfcG9sYXJp dHk7CjE0NDc0OiAgIHVpbnQ4X3QgZndfY3RmX2dwaW9fYml0OwoxNDQ3NDogICB1aW50OF90IGZ3 X2N0Zl9wb2xhcml0eTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX3NtdV9p bmZvX3YzXzIgewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxl X2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCBzbXVpcF9taW5fdmVyOwoxNDQ3NDogICB1aW50OF90 IHNtdWlwX21heF92ZXI7CjE0NDc0OiAgIHVpbnQ4X3Qgc211X3JzZDE7CjE0NDc0OiAgIHVpbnQ4 X3QgZ3B1Y2xrX3NzX21vZGU7CjE0NDc0OiAgIHVpbnQxNl90IHNjbGtfc3NfcGVyY2VudGFnZTsK MTQ0NzQ6ICAgdWludDE2X3Qgc2Nsa19zc19yYXRlXzEwaHo7CjE0NDc0OiAgIHVpbnQxNl90IGdw dWNsa19zc19wZXJjZW50YWdlOwoxNDQ3NDogICB1aW50MTZfdCBncHVjbGtfc3NfcmF0ZV8xMGh6 OwoxNDQ3NDogICB1aW50MzJfdCBjb3JlX3JlZmNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDhfdCBh Y19kY19ncGlvX2JpdDsKMTQ0NzQ6ICAgdWludDhfdCBhY19kY19wb2xhcml0eTsKMTQ0NzQ6ICAg dWludDhfdCB2cjBob3RfZ3Bpb19iaXQ7CjE0NDc0OiAgIHVpbnQ4X3QgdnIwaG90X3BvbGFyaXR5 OwoxNDQ3NDogICB1aW50OF90IHZyMWhvdF9ncGlvX2JpdDsKMTQ0NzQ6ICAgdWludDhfdCB2cjFo b3RfcG9sYXJpdHk7CjE0NDc0OiAgIHVpbnQ4X3QgZndfY3RmX2dwaW9fYml0OwoxNDQ3NDogICB1 aW50OF90IGZ3X2N0Zl9wb2xhcml0eTsKMTQ0NzQ6ICAgdWludDhfdCBwY2NfZ3Bpb19iaXQ7CjE0 NDc0OiAgIHVpbnQ4X3QgcGNjX2dwaW9fcG9sYXJpdHk7CjE0NDc0OiAgIHVpbnQxNl90IHNtdWdv bGRlbm9mZnNldDsKMTQ0NzQ6ICAgdWludDMyX3QgZ3B1cGxsX3Zjb19mcmVxXzEwa2h6OwoxNDQ3 NDogICB1aW50MzJfdCBib290dXBfc21uY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBib290 dXBfc29jY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBib290dXBfbXAwY2xrXzEwa2h6Owox NDQ3NDogICB1aW50MzJfdCBib290dXBfbXAxY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBi b290dXBfbGNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDMyX3QgYm9vdHVwX2RjZWZjbGtfMTBraHo7 CjE0NDc0OiAgIHVpbnQzMl90IGN0Zl90aHJlc2hvbGRfb3ZlcnJpZGVfdmFsdWU7CjE0NDc0OiAg IHVpbnQzMl90IHJlc2VydmVkWzVdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0 b21fc211X2luZm9fdjNfMyB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFk ZXIgdGFibGVfaGVhZGVyOwoxNDQ3NDogICB1aW50OF90IHNtdWlwX21pbl92ZXI7CjE0NDc0OiAg IHVpbnQ4X3Qgc211aXBfbWF4X3ZlcjsKMTQ0NzQ6ICAgdWludDhfdCB3YWZsY2xrX3NzX21vZGU7 CjE0NDc0OiAgIHVpbnQ4X3QgZ3B1Y2xrX3NzX21vZGU7CjE0NDc0OiAgIHVpbnQxNl90IHNjbGtf c3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2X3Qgc2Nsa19zc19yYXRlXzEwaHo7CjE0NDc0 OiAgIHVpbnQxNl90IGdwdWNsa19zc19wZXJjZW50YWdlOwoxNDQ3NDogICB1aW50MTZfdCBncHVj bGtfc3NfcmF0ZV8xMGh6OwoxNDQ3NDogICB1aW50MzJfdCBjb3JlX3JlZmNsa18xMGtoejsKMTQ0 NzQ6ICAgdWludDhfdCBhY19kY19ncGlvX2JpdDsKMTQ0NzQ6ICAgdWludDhfdCBhY19kY19wb2xh cml0eTsKMTQ0NzQ6ICAgdWludDhfdCB2cjBob3RfZ3Bpb19iaXQ7CjE0NDc0OiAgIHVpbnQ4X3Qg dnIwaG90X3BvbGFyaXR5OwoxNDQ3NDogICB1aW50OF90IHZyMWhvdF9ncGlvX2JpdDsKMTQ0NzQ6 ICAgdWludDhfdCB2cjFob3RfcG9sYXJpdHk7CjE0NDc0OiAgIHVpbnQ4X3QgZndfY3RmX2dwaW9f Yml0OwoxNDQ3NDogICB1aW50OF90IGZ3X2N0Zl9wb2xhcml0eTsKMTQ0NzQ6ICAgdWludDhfdCBw Y2NfZ3Bpb19iaXQ7CjE0NDc0OiAgIHVpbnQ4X3QgcGNjX2dwaW9fcG9sYXJpdHk7CjE0NDc0OiAg IHVpbnQxNl90IHNtdWdvbGRlbm9mZnNldDsKMTQ0NzQ6ICAgdWludDMyX3QgZ3B1cGxsX3Zjb19m cmVxXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBib290dXBfc21uY2xrXzEwa2h6OwoxNDQ3NDog ICB1aW50MzJfdCBib290dXBfc29jY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBib290dXBf bXAwY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBib290dXBfbXAxY2xrXzEwa2h6OwoxNDQ3 NDogICB1aW50MzJfdCBib290dXBfbGNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDMyX3QgYm9vdHVw X2RjZWZjbGtfMTBraHo7CjE0NDc0OiAgIHVpbnQzMl90IGN0Zl90aHJlc2hvbGRfb3ZlcnJpZGVf dmFsdWU7CjE0NDc0OiAgIHVpbnQzMl90IHN5c3BsbDNfMF92Y29fZnJlcV8xMGtoejsKMTQ0NzQ6 ICAgdWludDMyX3Qgc3lzcGxsM18xX3Zjb19mcmVxXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBi b290dXBfZmNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDMyX3QgYm9vdHVwX3dhZmxjbGtfMTBraHo7 CjE0NDc0OiAgIHVpbnQzMl90IHNtdV9pbmZvX2NhcHM7CjE0NDc0OiAgIHVpbnQxNl90IHdhZmxj bGtfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2X3Qgc211aW5pdG9mZnNldDsKMTQ0NzQ6 ICAgdWludDMyX3QgcmVzZXJ2ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fc21jX2RwbV9pbmZvX3Y0 XzEKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJs ZV9oZWFkZXI7CjE0NDc0OiAgIHVpbnQ4X3QgbGlxdWlkMV9pMmNfYWRkcmVzczsKMTQ0NzQ6ICAg dWludDhfdCBsaXF1aWQyX2kyY19hZGRyZXNzOwoxNDQ3NDogICB1aW50OF90IHZyX2kyY19hZGRy ZXNzOwoxNDQ3NDogICB1aW50OF90IHBseF9pMmNfYWRkcmVzczsKMTQ0NzQ6IAoxNDQ3NDogICB1 aW50OF90IGxpcXVpZF9pMmNfbGluZXNjbDsKMTQ0NzQ6ICAgdWludDhfdCBsaXF1aWRfaTJjX2xp bmVzZGE7CjE0NDc0OiAgIHVpbnQ4X3QgdnJfaTJjX2xpbmVzY2w7CjE0NDc0OiAgIHVpbnQ4X3Qg dnJfaTJjX2xpbmVzZGE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBwbHhfaTJjX2xpbmVzY2w7 CjE0NDc0OiAgIHVpbnQ4X3QgcGx4X2kyY19saW5lc2RhOwoxNDQ3NDogICB1aW50OF90IHZyc2Vu c29ycHJlc2VudDsKMTQ0NzQ6ICAgdWludDhfdCBsaXF1aWRzZW5zb3JwcmVzZW50OwoxNDQ3NDog CjE0NDc0OiAgIHVpbnQxNl90IG1heHZvbHRhZ2VzdGVwZ2Z4OwoxNDQ3NDogICB1aW50MTZfdCBt YXh2b2x0YWdlc3RlcHNvYzsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IHZkZGdmeHZybWFwcGlu ZzsKMTQ0NzQ6ICAgdWludDhfdCB2ZGRzb2N2cm1hcHBpbmc7CjE0NDc0OiAgIHVpbnQ4X3QgdmRk bWVtMHZybWFwcGluZzsKMTQ0NzQ6ICAgdWludDhfdCB2ZGRtZW0xdnJtYXBwaW5nOwoxNDQ3NDog CjE0NDc0OiAgIHVpbnQ4X3QgZ2Z4dWx2cGhhc2VzaGVkZGluZ21hc2s7CjE0NDc0OiAgIHVpbnQ4 X3Qgc29jdWx2cGhhc2VzaGVkZGluZ21hc2s7CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZzhfdlsy XTsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MTZfdCBnZnhtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50 OF90IGdmeG9mZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeWdmeDsKMTQ0 NzQ6IAoxNDQ3NDogICB1aW50MTZfdCBzb2NtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50OF90IHNv Y29mZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeXNvYzsKMTQ0NzQ6IAox NDQ3NDogICB1aW50MTZfdCBtZW0wbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW0wb2Zm c2V0OwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5bWVtMDsKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50MTZfdCBtZW0xbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW0xb2Zmc2V0 OwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5bWVtMTsKMTQ0NzQ6IAoxNDQ3NDog ICB1aW50OF90IGFjZGNncGlvOwoxNDQ3NDogICB1aW50OF90IGFjZGNwb2xhcml0eTsKMTQ0NzQ6 ICAgdWludDhfdCB2cjBob3RncGlvOwoxNDQ3NDogICB1aW50OF90IHZyMGhvdHBvbGFyaXR5Owox NDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgdnIxaG90Z3BpbzsKMTQ0NzQ6ICAgdWludDhfdCB2cjFo b3Rwb2xhcml0eTsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nMTsKMTQ0NzQ6ICAgdWludDhfdCBw YWRkaW5nMjsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IGxlZHBpbjA7CjE0NDc0OiAgIHVpbnQ4 X3QgbGVkcGluMTsKMTQ0NzQ6ICAgdWludDhfdCBsZWRwaW4yOwoxNDQ3NDogICB1aW50OF90IHBh ZGRpbmc4XzQ7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90IHBsbGdmeGNsa3NwcmVhZGVuYWJsZWQ7 CjE0NDc0OiAgdWludDhfdCBwbGxnZnhjbGtzcHJlYWRwZXJjZW50OwoxNDQ3NDogIHVpbnQxNl90 IHBsbGdmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCB1Y2xrc3ByZWFk ZW5hYmxlZDsKMTQ0NzQ6ICAgdWludDhfdCB1Y2xrc3ByZWFkcGVyY2VudDsKMTQ0NzQ6ICAgdWlu dDE2X3QgdWNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBzb2NjbGtzcHJl YWRlbmFibGVkOwoxNDQ3NDogICB1aW50OF90IHNvY2Nsa3NwcmVhZHBlcmNlbnQ7CjE0NDc0OiAg IHVpbnQxNl90IHNvY2Nsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90IGFjZ2dm eGNsa3NwcmVhZGVuYWJsZWQ7CjE0NDc0OiAgdWludDhfdCBhY2dnZnhjbGtzcHJlYWRwZXJjZW50 OwoxNDQ3NDogIHVpbnQxNl90IGFjZ2dmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICB1 aW50OF90IFZyMl9JMkNfYWRkcmVzczsKMTQ0NzQ6ICB1aW50OF90IHBhZGRpbmdfdnIyWzNdOwox NDQ3NDogCjE0NDc0OiAgdWludDMyX3QgYm9hcmRyZXNlcnZlZFs5XTsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg YXRvbV9zbWNfZHBtX2luZm9fdjRfMwoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21t b25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCBsaXF1aWQxX2ky Y19hZGRyZXNzOwoxNDQ3NDogICB1aW50OF90IGxpcXVpZDJfaTJjX2FkZHJlc3M7CjE0NDc0OiAg IHVpbnQ4X3QgdnJfaTJjX2FkZHJlc3M7CjE0NDc0OiAgIHVpbnQ4X3QgcGx4X2kyY19hZGRyZXNz OwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgbGlxdWlkX2kyY19saW5lc2NsOwoxNDQ3NDogICB1 aW50OF90IGxpcXVpZF9pMmNfbGluZXNkYTsKMTQ0NzQ6ICAgdWludDhfdCB2cl9pMmNfbGluZXNj bDsKMTQ0NzQ6ICAgdWludDhfdCB2cl9pMmNfbGluZXNkYTsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50 OF90IHBseF9pMmNfbGluZXNjbDsKMTQ0NzQ6ICAgdWludDhfdCBwbHhfaTJjX2xpbmVzZGE7CjE0 NDc0OiAgIHVpbnQ4X3QgdnJzZW5zb3JwcmVzZW50OwoxNDQ3NDogICB1aW50OF90IGxpcXVpZHNl bnNvcnByZXNlbnQ7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDE2X3QgbWF4dm9sdGFnZXN0ZXBnZng7 CjE0NDc0OiAgIHVpbnQxNl90IG1heHZvbHRhZ2VzdGVwc29jOwoxNDQ3NDogCjE0NDc0OiAgIHVp bnQ4X3QgdmRkZ2Z4dnJtYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IHZkZHNvY3ZybWFwcGluZzsK MTQ0NzQ6ICAgdWludDhfdCB2ZGRtZW0wdnJtYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IHZkZG1l bTF2cm1hcHBpbmc7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBnZnh1bHZwaGFzZXNoZWRkaW5n bWFzazsKMTQ0NzQ6ICAgdWludDhfdCBzb2N1bHZwaGFzZXNoZWRkaW5nbWFzazsKMTQ0NzQ6ICAg dWludDhfdCBleHRlcm5hbHNlbnNvcnByZXNlbnQ7CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZzhf djsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MTZfdCBnZnhtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50 OF90IGdmeG9mZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeWdmeDsKMTQ0 NzQ6IAoxNDQ3NDogICB1aW50MTZfdCBzb2NtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50OF90IHNv Y29mZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeXNvYzsKMTQ0NzQ6IAox NDQ3NDogICB1aW50MTZfdCBtZW0wbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW0wb2Zm c2V0OwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5bWVtMDsKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50MTZfdCBtZW0xbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW0xb2Zmc2V0 OwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5bWVtMTsKMTQ0NzQ6IAoxNDQ3NDog ICB1aW50OF90IGFjZGNncGlvOwoxNDQ3NDogICB1aW50OF90IGFjZGNwb2xhcml0eTsKMTQ0NzQ6 ICAgdWludDhfdCB2cjBob3RncGlvOwoxNDQ3NDogICB1aW50OF90IHZyMGhvdHBvbGFyaXR5Owox NDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgdnIxaG90Z3BpbzsKMTQ0NzQ6ICAgdWludDhfdCB2cjFo b3Rwb2xhcml0eTsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nMTsKMTQ0NzQ6ICAgdWludDhfdCBw YWRkaW5nMjsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IGxlZHBpbjA7CjE0NDc0OiAgIHVpbnQ4 X3QgbGVkcGluMTsKMTQ0NzQ6ICAgdWludDhfdCBsZWRwaW4yOwoxNDQ3NDogICB1aW50OF90IHBh ZGRpbmc4XzQ7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBwbGxnZnhjbGtzcHJlYWRlbmFibGVk OwoxNDQ3NDogICB1aW50OF90IHBsbGdmeGNsa3NwcmVhZHBlcmNlbnQ7CjE0NDc0OiAgIHVpbnQx Nl90IHBsbGdmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCB1Y2xrc3By ZWFkZW5hYmxlZDsKMTQ0NzQ6ICAgdWludDhfdCB1Y2xrc3ByZWFkcGVyY2VudDsKMTQ0NzQ6ICAg dWludDE2X3QgdWNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBmY2xrc3By ZWFkZW5hYmxlZDsKMTQ0NzQ6ICAgdWludDhfdCBmY2xrc3ByZWFkcGVyY2VudDsKMTQ0NzQ6ICAg dWludDE2X3QgZmNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBmbGxnZnhj bGtzcHJlYWRlbmFibGVkOwoxNDQ3NDogICB1aW50OF90IGZsbGdmeGNsa3NwcmVhZHBlcmNlbnQ7 CjE0NDc0OiAgIHVpbnQxNl90IGZsbGdmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICAg dWludDMyX3QgYm9hcmRyZXNlcnZlZFsxMF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3Qgc211ZHBtX2kyY2NvbnRyb2xsZXJjb25maWdfdCB7CjE0NDc0OiAgIHVpbnQzMl90IGVuYWJs ZWQ7CjE0NDc0OiAgIHVpbnQzMl90IHNsYXZlYWRkcmVzczsKMTQ0NzQ6ICAgdWludDMyX3QgY29u dHJvbGxlcnBvcnQ7CjE0NDc0OiAgIHVpbnQzMl90IGNvbnRyb2xsZXJuYW1lOwoxNDQ3NDogICB1 aW50MzJfdCB0aGVybWFsdGhyb3R0bGVyOwoxNDQ3NDogICB1aW50MzJfdCBpMmNwcm90b2NvbDsK MTQ0NzQ6ICAgdWludDMyX3QgaTJjc3BlZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgYXRvbV9zbWNfZHBtX2luZm9fdjRfNAoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9j b21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDMyX3QgaTJjX3Bh ZGRpbmdbM107CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDE2X3QgbWF4dm9sdGFnZXN0ZXBnZng7CjE0 NDc0OiAgIHVpbnQxNl90IG1heHZvbHRhZ2VzdGVwc29jOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4 X3QgdmRkZ2Z4dnJtYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IHZkZHNvY3ZybWFwcGluZzsKMTQ0 NzQ6ICAgdWludDhfdCB2ZGRtZW0wdnJtYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IHZkZG1lbTF2 cm1hcHBpbmc7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBnZnh1bHZwaGFzZXNoZWRkaW5nbWFz azsKMTQ0NzQ6ICAgdWludDhfdCBzb2N1bHZwaGFzZXNoZWRkaW5nbWFzazsKMTQ0NzQ6ICAgdWlu dDhfdCBleHRlcm5hbHNlbnNvcnByZXNlbnQ7CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZzhfdjsK MTQ0NzQ6IAoxNDQ3NDogICB1aW50MTZfdCBnZnhtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50OF90 IGdmeG9mZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeWdmeDsKMTQ0NzQ6 IAoxNDQ3NDogICB1aW50MTZfdCBzb2NtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50OF90IHNvY29m ZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeXNvYzsKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50MTZfdCBtZW0wbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW0wb2Zmc2V0 OwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5bWVtMDsKMTQ0NzQ6IAoxNDQ3NDog ICB1aW50MTZfdCBtZW0xbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW0xb2Zmc2V0Owox NDQ3NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5bWVtMTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgIHVpbnQ4X3QgYWNkY2dwaW87CjE0NDc0OiAgIHVpbnQ4X3QgYWNkY3BvbGFyaXR5Owox NDQ3NDogICB1aW50OF90IHZyMGhvdGdwaW87CjE0NDc0OiAgIHVpbnQ4X3QgdnIwaG90cG9sYXJp dHk7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCB2cjFob3RncGlvOwoxNDQ3NDogICB1aW50OF90 IHZyMWhvdHBvbGFyaXR5OwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmcxOwoxNDQ3NDogICB1aW50 OF90IHBhZGRpbmcyOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBsZWRwaW4wOwox NDQ3NDogICB1aW50OF90IGxlZHBpbjE7CjE0NDc0OiAgIHVpbnQ4X3QgbGVkcGluMjsKMTQ0NzQ6 ICAgdWludDhfdCBwYWRkaW5nOF80OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBw bGxnZnhjbGtzcHJlYWRlbmFibGVkOwoxNDQ3NDogICB1aW50OF90IHBsbGdmeGNsa3NwcmVhZHBl cmNlbnQ7CjE0NDc0OiAgIHVpbnQxNl90IHBsbGdmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogICB1aW50OF90IHVjbGtzcHJlYWRlbmFibGVkOwoxNDQ3NDogICB1aW50OF90 IHVjbGtzcHJlYWRwZXJjZW50OwoxNDQ3NDogICB1aW50MTZfdCB1Y2xrc3ByZWFkZnJlcTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgZmNsa3NwcmVhZGVuYWJsZWQ7CjE0NDc0OiAg IHVpbnQ4X3QgZmNsa3NwcmVhZHBlcmNlbnQ7CjE0NDc0OiAgIHVpbnQxNl90IGZjbGtzcHJlYWRm cmVxOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBmbGxnZnhjbGtzcHJlYWRlbmFi bGVkOwoxNDQ3NDogICB1aW50OF90IGZsbGdmeGNsa3NwcmVhZHBlcmNlbnQ7CjE0NDc0OiAgIHVp bnQxNl90IGZsbGdmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1 Y3Qgc211ZHBtX2kyY2NvbnRyb2xsZXJjb25maWdfdCBpMmNjb250cm9sbGVyc1s3XTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90IGJvYXJkcmVzZXJ2ZWRbMTBdOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSBzbXVkcG1fdjRfNV9pMmNjb250cm9sbGVybmFtZV9lewoxNDQ3 NDogICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX05BTUVfVlJfR0ZYID0gMCwKMTQ0NzQ6ICAg ICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9OQU1FX1ZSX1NPQywKMTQ0NzQ6ICAgICBTTUNfVjRf NV9JMkNfQ09OVFJPTExFUl9OQU1FX1ZSX1ZERENJLAoxNDQ3NDogICAgIFNNQ19WNF81X0kyQ19D T05UUk9MTEVSX05BTUVfVlJfTVZERCwKMTQ0NzQ6ICAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExF Ul9OQU1FX0xJUVVJRDAsCjE0NDc0OiAgICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9M SVFVSUQxLAoxNDQ3NDogICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX05BTUVfUExYLAoxNDQ3 NDogICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX05BTUVfU1BBUkUsCjE0NDc0OiAgICAgU01D X1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9DT1VOVCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGVudW0gc211ZHBtX3Y0XzVfaTJjY29udHJvbGxlcnRocm90dGxlcl9lewoxNDQ3NDogICAgIFNN Q19WNF81X0kyQ19DT05UUk9MTEVSX1RIUk9UVExFUl9UWVBFX05PTkUgPSAwLAoxNDQ3NDogICAg IFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX1RIUk9UVExFUl9WUl9HRlgsCjE0NDc0OiAgICAgU01D X1Y0XzVfSTJDX0NPTlRST0xMRVJfVEhST1RUTEVSX1ZSX1NPQywKMTQ0NzQ6ICAgICBTTUNfVjRf NV9JMkNfQ09OVFJPTExFUl9USFJPVFRMRVJfVlJfVkREQ0ksCjE0NDc0OiAgICAgU01DX1Y0XzVf STJDX0NPTlRST0xMRVJfVEhST1RUTEVSX1ZSX01WREQsCjE0NDc0OiAgICAgU01DX1Y0XzVfSTJD X0NPTlRST0xMRVJfVEhST1RUTEVSX0xJUVVJRDAsCjE0NDc0OiAgICAgU01DX1Y0XzVfSTJDX0NP TlRST0xMRVJfVEhST1RUTEVSX0xJUVVJRDEsCjE0NDc0OiAgICAgU01DX1Y0XzVfSTJDX0NPTlRS T0xMRVJfVEhST1RUTEVSX1BMWCwKMTQ0NzQ6ICAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9U SFJPVFRMRVJfQ09VTlQsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHNtdWRwbV92NF81 X2kyY2NvbnRyb2xsZXJwcm90b2NvbF9lewoxNDQ3NDogICAgIFNNQ19WNF81X0kyQ19DT05UUk9M TEVSX1BST1RPQ09MX1ZSXzAsCjE0NDc0OiAgICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfUFJP VE9DT0xfVlJfMSwKMTQ0NzQ6ICAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9QUk9UT0NPTF9U TVBfMCwKMTQ0NzQ6ICAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9QUk9UT0NPTF9UTVBfMSwK MTQ0NzQ6ICAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9QUk9UT0NPTF9TUEFSRV8wLAoxNDQ3 NDogICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX1BST1RPQ09MX1NQQVJFXzEsCjE0NDc0OiAg ICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfUFJPVE9DT0xfQ09VTlQsCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3Qgc211ZHBtX2kyY19jb250cm9sbGVyX2NvbmZpZ192MgoxNDQ3NDog ewoxNDQ3NDogICAgIHVpbnQ4X3QgRW5hYmxlZDsKMTQ0NzQ6ICAgICB1aW50OF90IFNwZWVkOwox NDQ3NDogICAgIHVpbnQ4X3QgUGFkZGluZ1syXTsKMTQ0NzQ6ICAgICB1aW50MzJfdCBTbGF2ZUFk ZHJlc3M7CjE0NDc0OiAgICAgdWludDhfdCBDb250cm9sbGVyUG9ydDsKMTQ0NzQ6ICAgICB1aW50 OF90IENvbnRyb2xsZXJOYW1lOwoxNDQ3NDogICAgIHVpbnQ4X3QgVGhlcm1hbFRocm90dGVyOwox NDQ3NDogICAgIHVpbnQ4X3QgSTJjUHJvdG9jb2w7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgYXRvbV9zbWNfZHBtX2luZm9fdjRfNQoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRv bV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgIHN0cnVjdCBzbXVkcG1faTJjX2NvbnRyb2xsZXJfY29uZmlnX3YyIEkyY0NvbnRyb2xsZXJz WzhdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDE2X3QgTWF4Vm9sdGFnZVN0ZXBHZng7 CjE0NDc0OiAgIHVpbnQxNl90IE1heFZvbHRhZ2VTdGVwU29jOwoxNDQ3NDogCjE0NDc0OiAgIHVp bnQ4X3QgVmRkR2Z4VnJNYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IFZkZFNvY1ZyTWFwcGluZzsK MTQ0NzQ6ICAgdWludDhfdCBWZGRNZW0wVnJNYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IFZkZE1l bTFWck1hcHBpbmc7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBHZnhVbHZQaGFzZVNoZWRkaW5n TWFzazsKMTQ0NzQ6ICAgdWludDhfdCBTb2NVbHZQaGFzZVNoZWRkaW5nTWFzazsKMTQ0NzQ6ICAg dWludDhfdCBFeHRlcm5hbFNlbnNvclByZXNlbnQ7CjE0NDc0OiAgIHVpbnQ4X3QgUGFkZGluZzhf VjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQxNl90IEdmeE1heEN1cnJlbnQ7CjE0NDc0 OiAgIHVpbnQ4X3QgR2Z4T2Zmc2V0OwoxNDQ3NDogICB1aW50OF90IFBhZGRpbmdfVGVsZW1ldHJ5 R2Z4OwoxNDQ3NDogICB1aW50MTZfdCBTb2NNYXhDdXJyZW50OwoxNDQ3NDogICB1aW50OF90IFNv Y09mZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBQYWRkaW5nX1RlbGVtZXRyeVNvYzsKMTQ0NzQ6IAox NDQ3NDogICB1aW50MTZfdCBNZW0wTWF4Q3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBNZW0wT2Zm c2V0OwoxNDQ3NDogICB1aW50OF90IFBhZGRpbmdfVGVsZW1ldHJ5TWVtMDsKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50MTZfdCBNZW0xTWF4Q3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBNZW0xT2Zmc2V0 OwoxNDQ3NDogICB1aW50OF90IFBhZGRpbmdfVGVsZW1ldHJ5TWVtMTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgIHVpbnQ4X3QgQWNEY0dwaW87CjE0NDc0OiAgIHVpbnQ4X3QgQWNEY1BvbGFyaXR5 OwoxNDQ3NDogICB1aW50OF90IFZSMEhvdEdwaW87CjE0NDc0OiAgIHVpbnQ4X3QgVlIwSG90UG9s YXJpdHk7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBWUjFIb3RHcGlvOwoxNDQ3NDogICB1aW50 OF90IFZSMUhvdFBvbGFyaXR5OwoxNDQ3NDogICB1aW50OF90IEd0aHJHcGlvOwoxNDQ3NDogICB1 aW50OF90IEd0aHJQb2xhcml0eTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgTGVk UGluMDsKMTQ0NzQ6ICAgdWludDhfdCBMZWRQaW4xOwoxNDQ3NDogICB1aW50OF90IExlZFBpbjI7 CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZzhfNDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVp bnQ4X3QgUGxsR2Z4Y2xrU3ByZWFkRW5hYmxlZDsKMTQ0NzQ6ICAgdWludDhfdCBQbGxHZnhjbGtT cHJlYWRQZXJjZW50OwoxNDQ3NDogICB1aW50MTZfdCBQbGxHZnhjbGtTcHJlYWRGcmVxOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBEZmxsR2Z4Y2xrU3ByZWFkRW5hYmxlZDsKMTQ0 NzQ6ICAgdWludDhfdCBEZmxsR2Z4Y2xrU3ByZWFkUGVyY2VudDsKMTQ0NzQ6ICAgdWludDE2X3Qg RGZsbEdmeGNsa1NwcmVhZEZyZXE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IFVj bGtTcHJlYWRFbmFibGVkOwoxNDQ3NDogICB1aW50OF90IFVjbGtTcHJlYWRQZXJjZW50OwoxNDQ3 NDogICB1aW50MTZfdCBVY2xrU3ByZWFkRnJlcTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVp bnQ4X3QgU29jbGtTcHJlYWRFbmFibGVkOwoxNDQ3NDogICB1aW50OF90IFNvY2Nsa1NwcmVhZFBl cmNlbnQ7CjE0NDc0OiAgIHVpbnQxNl90IFNvY2Nsa1NwcmVhZEZyZXE7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogICB1aW50MTZfdCBUb3RhbEJvYXJkUG93ZXI7CjE0NDc0OiAgIHVpbnQxNl90IEJv YXJkUGFkZGluZzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90IE12ZGRSYXRpbzsK MTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCBCb2FyZFJlc2VydmVkWzldOwoxNDQ3NDogCjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9zbWNfZHBtX2luZm9fdjRfNgoxNDQ3NDog ewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsK MTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCBpMmNfcGFkZGluZ1szXTsKMTQ0NzQ6IAoxNDQ3NDog ICB1aW50MTZfdCBtYXh2b2x0YWdlc3RlcGdmeDsKMTQ0NzQ6ICAgdWludDE2X3QgbWF4dm9sdGFn ZXN0ZXBzb2M7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCB2ZGRnZnh2cm1hcHBpbmc7CjE0NDc0 OiAgIHVpbnQ4X3QgdmRkc29jdnJtYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IHZkZG1lbXZybWFw cGluZzsKMTQ0NzQ6ICAgdWludDhfdCBib2FyZHZybWFwcGluZzsKMTQ0NzQ6IAoxNDQ3NDogICB1 aW50OF90IGdmeHVsdnBoYXNlc2hlZGRpbmdtYXNrOwoxNDQ3NDogICB1aW50OF90IGV4dGVybmFs c2Vuc29ycHJlc2VudDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nOF92WzJdOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICAgdWludDE2X3QgZ2Z4bWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBn ZnhvZmZzZXQ7CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0cnlnZng7CjE0NDc0OiAK MTQ0NzQ6ICAgdWludDE2X3Qgc29jbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBzb2NvZmZz ZXQ7CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0cnlzb2M7CjE0NDc0OiAKMTQ0NzQ6 ICAgdWludDE2X3QgbWVtbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW1vZmZzZXQ7CjE0 NDc0OiAgIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0cnltZW07CjE0NDc0OiAKMTQ0NzQ6ICAgdWlu dDE2X3QgYm9hcmRtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50OF90IGJvYXJkb2Zmc2V0OwoxNDQ3 NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5Ym9hcmRpbnB1dDsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgIHVpbnQ4X3QgdnIwaG90Z3BpbzsKMTQ0NzQ6ICAgdWludDhfdCB2cjBob3Rwb2xh cml0eTsKMTQ0NzQ6ICAgdWludDhfdCB2cjFob3RncGlvOwoxNDQ3NDogICB1aW50OF90IHZyMWhv dHBvbGFyaXR5OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBwbGxnZnhjbGtzcHJl YWRlbmFibGVkOwoxNDQ3NDogICB1aW50OF90IHBsbGdmeGNsa3NwcmVhZHBlcmNlbnQ7CjE0NDc0 OiAgIHVpbnQxNl90IHBsbGdmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ICB1aW50OF90IHVjbGtzcHJlYWRlbmFibGVkOwoxNDQ3NDogICB1aW50OF90IHVjbGtzcHJlYWRw ZXJjZW50OwoxNDQ3NDogICB1aW50MTZfdCB1Y2xrc3ByZWFkZnJlcTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgIHVpbnQ4X3QgZmNsa3NwcmVhZGVuYWJsZWQ7CjE0NDc0OiAgIHVpbnQ4X3QgZmNs a3NwcmVhZHBlcmNlbnQ7CjE0NDc0OiAgIHVpbnQxNl90IGZjbGtzcHJlYWRmcmVxOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IGZsbGdmeGNsa3NwcmVhZGVuYWJsZWQ7 CjE0NDc0OiAgIHVpbnQ4X3QgZmxsZ2Z4Y2xrc3ByZWFkcGVyY2VudDsKMTQ0NzQ6ICAgdWludDE2 X3QgZmxsZ2Z4Y2xrc3ByZWFkZnJlcTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHN0cnVjdCBz bXVkcG1faTJjX2NvbnRyb2xsZXJfY29uZmlnX3YyIGkyY2NvbnRyb2xsZXJzWzhdOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgbWVtb3J5Y2hhbm5lbGVuYWJsZWQ7CjE0NDc0OiAK MTQ0NzQ6ICAgdWludDhfdCBkcmFtYml0d2lkdGg7CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZ21l bVszXTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQxNl90IHRvdGFsYm9hcmRwb3dlcjsK MTQ0NzQ6ICAgdWludDE2X3QgYm9hcmRwYWRkaW5nOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAg dWludDhfdCB4Z21pbGlua3NwZWVkWzRdOwoxNDQ3NDogICB1aW50OF90IHhnbWlsaW5rd2lkdGhb NF07CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDE2X3QgeGdtaWZjbGtmcmVxWzRdOwoxNDQ3NDogICB1 aW50MTZfdCB4Z21pc29jdm9sdGFnZVs0XTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQz Ml90IGJvYXJkcmVzZXJ2ZWRbMTBdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2FzaWNfcHJvZmlsaW5n X2luZm9fdjRfMQoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVh ZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDMyX3QgbWF4dmRkYzsKMTQ0NzQ6ICAgdWlu dDMyX3QgbWludmRkYzsKMTQ0NzQ6ICAgdWludDMyX3QgYXZmc19tZWFubnNpZ21hX2Fjb250YW50 MDsKMTQ0NzQ6ICAgdWludDMyX3QgYXZmc19tZWFubnNpZ21hX2Fjb250YW50MTsKMTQ0NzQ6ICAg dWludDMyX3QgYXZmc19tZWFubnNpZ21hX2Fjb250YW50MjsKMTQ0NzQ6ICAgdWludDE2X3QgYXZm c19tZWFubnNpZ21hX2RjX3RvbF9zaWdtYTsKMTQ0NzQ6ICAgdWludDE2X3QgYXZmc19tZWFubnNp Z21hX3BsYXRmb3JtX21lYW47CjE0NDc0OiAgIHVpbnQxNl90IGF2ZnNfbWVhbm5zaWdtYV9wbGF0 Zm9ybV9zaWdtYTsKMTQ0NzQ6ICAgdWludDMyX3QgZ2JfdmRyb29wX3RhYmxlX2Nrc29mZl9hMDsK MTQ0NzQ6ICAgdWludDMyX3QgZ2JfdmRyb29wX3RhYmxlX2Nrc29mZl9hMTsKMTQ0NzQ6ICAgdWlu dDMyX3QgZ2JfdmRyb29wX3RhYmxlX2Nrc29mZl9hMjsKMTQ0NzQ6ICAgdWludDMyX3QgZ2JfdmRy b29wX3RhYmxlX2Nrc29uX2EwOwoxNDQ3NDogICB1aW50MzJfdCBnYl92ZHJvb3BfdGFibGVfY2tz b25fYTE7CjE0NDc0OiAgIHVpbnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3Nvbl9hMjsKMTQ0NzQ6 ICAgdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVfY2tzb2ZmX20xOwoxNDQ3NDogICB1aW50MzJf dCBhdmZzZ2JfZnVzZV90YWJsZV9ja3NvZmZfbTI7CjE0NDc0OiAgIHVpbnQzMl90IGF2ZnNnYl9m dXNlX3RhYmxlX2Nrc29mZl9iOwoxNDQ3NDogICB1aW50MzJfdCBhdmZzZ2JfZnVzZV90YWJsZV9j a3Nvbl9tMTsKMTQ0NzQ6ICAgdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVfY2tzb25fbTI7CjE0 NDc0OiAgIHVpbnQzMl90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29uX2I7CjE0NDc0OiAgIHVpbnQx Nl90IG1heF92b2x0YWdlXzBfMjVtdjsKMTQ0NzQ6ICAgdWludDhfdCBlbmFibGVfZ2JfdmRyb29w X3RhYmxlX2Nrc29mZjsKMTQ0NzQ6ICAgdWludDhfdCBlbmFibGVfZ2JfdmRyb29wX3RhYmxlX2Nr c29uOwoxNDQ3NDogICB1aW50OF90IGVuYWJsZV9nYl9mdXNlX3RhYmxlX2Nrc29mZjsKMTQ0NzQ6 ICAgdWludDhfdCBlbmFibGVfZ2JfZnVzZV90YWJsZV9ja3NvbjsKMTQ0NzQ6ICAgdWludDE2X3Qg cHNtX2FnZV9jb21mYWN0b3I7CjE0NDc0OiAgIHVpbnQ4X3QgZW5hYmxlX2FwcGx5X2F2ZnNfY2tz b2ZmX3ZvbHRhZ2U7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQ7CjE0NDc0OiAgIHVpbnQzMl90 IGRpc3BjbGsyZ2Z4Y2xrX2E7CjE0NDc0OiAgIHVpbnQzMl90IGRpc3BjbGsyZ2Z4Y2xrX2I7CjE0 NDc0OiAgIHVpbnQzMl90IGRpc3BjbGsyZ2Z4Y2xrX2M7CjE0NDc0OiAgIHVpbnQzMl90IHBpeGNs azJnZnhjbGtfYTsKMTQ0NzQ6ICAgdWludDMyX3QgcGl4Y2xrMmdmeGNsa19iOwoxNDQ3NDogICB1 aW50MzJfdCBwaXhjbGsyZ2Z4Y2xrX2M7CjE0NDc0OiAgIHVpbnQzMl90IGRjZWZjbGsyZ2Z4Y2xr X2E7CjE0NDc0OiAgIHVpbnQzMl90IGRjZWZjbGsyZ2Z4Y2xrX2I7CjE0NDc0OiAgIHVpbnQzMl90 IGRjZWZjbGsyZ2Z4Y2xrX2M7CjE0NDc0OiAgIHVpbnQzMl90IHBoeWNsazJnZnhjbGtfYTsKMTQ0 NzQ6ICAgdWludDMyX3QgcGh5Y2xrMmdmeGNsa19iOwoxNDQ3NDogICB1aW50MzJfdCBwaHljbGsy Z2Z4Y2xrX2M7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9hc2ljX3Byb2Zp bGluZ19pbmZvX3Y0XzIgewoxNDQ3NDogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIg dGFibGVfaGVhZGVyOwoxNDQ3NDogIHVpbnQzMl90IG1heHZkZGM7CjE0NDc0OiAgdWludDMyX3Qg bWludmRkYzsKMTQ0NzQ6ICB1aW50MzJfdCBhdmZzX21lYW5uc2lnbWFfYWNvbnRhbnQwOwoxNDQ3 NDogIHVpbnQzMl90IGF2ZnNfbWVhbm5zaWdtYV9hY29udGFudDE7CjE0NDc0OiAgdWludDMyX3Qg YXZmc19tZWFubnNpZ21hX2Fjb250YW50MjsKMTQ0NzQ6ICB1aW50MTZfdCBhdmZzX21lYW5uc2ln bWFfZGNfdG9sX3NpZ21hOwoxNDQ3NDogIHVpbnQxNl90IGF2ZnNfbWVhbm5zaWdtYV9wbGF0Zm9y bV9tZWFuOwoxNDQ3NDogIHVpbnQxNl90IGF2ZnNfbWVhbm5zaWdtYV9wbGF0Zm9ybV9zaWdtYTsK MTQ0NzQ6ICB1aW50MzJfdCBnYl92ZHJvb3BfdGFibGVfY2tzb2ZmX2EwOwoxNDQ3NDogIHVpbnQz Ml90IGdiX3Zkcm9vcF90YWJsZV9ja3NvZmZfYTE7CjE0NDc0OiAgdWludDMyX3QgZ2JfdmRyb29w X3RhYmxlX2Nrc29mZl9hMjsKMTQ0NzQ6ICB1aW50MzJfdCBnYl92ZHJvb3BfdGFibGVfY2tzb25f YTA7CjE0NDc0OiAgdWludDMyX3QgZ2JfdmRyb29wX3RhYmxlX2Nrc29uX2ExOwoxNDQ3NDogIHVp bnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3Nvbl9hMjsKMTQ0NzQ6ICB1aW50MzJfdCBhdmZzZ2Jf ZnVzZV90YWJsZV9ja3NvZmZfbTE7CjE0NDc0OiAgdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVf Y2tzb2ZmX20yOwoxNDQ3NDogIHVpbnQzMl90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29mZl9iOwox NDQ3NDogIHVpbnQzMl90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29uX20xOwoxNDQ3NDogIHVpbnQz Ml90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29uX20yOwoxNDQ3NDogIHVpbnQzMl90IGF2ZnNnYl9m dXNlX3RhYmxlX2Nrc29uX2I7CjE0NDc0OiAgdWludDE2X3QgbWF4X3ZvbHRhZ2VfMF8yNW12Owox NDQ3NDogIHVpbnQ4X3QgZW5hYmxlX2diX3Zkcm9vcF90YWJsZV9ja3NvZmY7CjE0NDc0OiAgdWlu dDhfdCBlbmFibGVfZ2JfdmRyb29wX3RhYmxlX2Nrc29uOwoxNDQ3NDogIHVpbnQ4X3QgZW5hYmxl X2diX2Z1c2VfdGFibGVfY2tzb2ZmOwoxNDQ3NDogIHVpbnQ4X3QgZW5hYmxlX2diX2Z1c2VfdGFi bGVfY2tzb247CjE0NDc0OiAgdWludDE2X3QgcHNtX2FnZV9jb21mYWN0b3I7CjE0NDc0OiAgdWlu dDhfdCBlbmFibGVfYXBwbHlfYXZmc19ja3NvZmZfdm9sdGFnZTsKMTQ0NzQ6ICB1aW50OF90IHJl c2VydmVkOwoxNDQ3NDogIHVpbnQzMl90IGRpc3BjbGsyZ2Z4Y2xrX2E7CjE0NDc0OiAgdWludDMy X3QgZGlzcGNsazJnZnhjbGtfYjsKMTQ0NzQ6ICB1aW50MzJfdCBkaXNwY2xrMmdmeGNsa19jOwox NDQ3NDogIHVpbnQzMl90IHBpeGNsazJnZnhjbGtfYTsKMTQ0NzQ6ICB1aW50MzJfdCBwaXhjbGsy Z2Z4Y2xrX2I7CjE0NDc0OiAgdWludDMyX3QgcGl4Y2xrMmdmeGNsa19jOwoxNDQ3NDogIHVpbnQz Ml90IGRjZWZjbGsyZ2Z4Y2xrX2E7CjE0NDc0OiAgdWludDMyX3QgZGNlZmNsazJnZnhjbGtfYjsK MTQ0NzQ6ICB1aW50MzJfdCBkY2VmY2xrMmdmeGNsa19jOwoxNDQ3NDogIHVpbnQzMl90IHBoeWNs azJnZnhjbGtfYTsKMTQ0NzQ6ICB1aW50MzJfdCBwaHljbGsyZ2Z4Y2xrX2I7CjE0NDc0OiAgdWlu dDMyX3QgcGh5Y2xrMmdmeGNsa19jOwoxNDQ3NDogIHVpbnQzMl90IGFjZ19nYl92ZHJvb3BfdGFi bGVfYTA7CjE0NDc0OiAgdWludDMyX3QgYWNnX2diX3Zkcm9vcF90YWJsZV9hMTsKMTQ0NzQ6ICB1 aW50MzJfdCBhY2dfZ2JfdmRyb29wX3RhYmxlX2EyOwoxNDQ3NDogIHVpbnQzMl90IGFjZ19hdmZz Z2JfZnVzZV90YWJsZV9tMTsKMTQ0NzQ6ICB1aW50MzJfdCBhY2dfYXZmc2diX2Z1c2VfdGFibGVf bTI7CjE0NDc0OiAgdWludDMyX3QgYWNnX2F2ZnNnYl9mdXNlX3RhYmxlX2I7CjE0NDc0OiAgdWlu dDhfdCBlbmFibGVfYWNnX2diX3Zkcm9vcF90YWJsZTsKMTQ0NzQ6ICB1aW50OF90IGVuYWJsZV9h Y2dfZ2JfZnVzZV90YWJsZTsKMTQ0NzQ6ICB1aW50MzJfdCBhY2dfZGlzcGNsazJnZnhjbGtfYTsK MTQ0NzQ6ICB1aW50MzJfdCBhY2dfZGlzcGNsazJnZnhjbGtfYjsKMTQ0NzQ6ICB1aW50MzJfdCBh Y2dfZGlzcGNsazJnZnhjbGtfYzsKMTQ0NzQ6ICB1aW50MzJfdCBhY2dfcGl4Y2xrMmdmeGNsa19h OwoxNDQ3NDogIHVpbnQzMl90IGFjZ19waXhjbGsyZ2Z4Y2xrX2I7CjE0NDc0OiAgdWludDMyX3Qg YWNnX3BpeGNsazJnZnhjbGtfYzsKMTQ0NzQ6ICB1aW50MzJfdCBhY2dfZGNlZmNsazJnZnhjbGtf YTsKMTQ0NzQ6ICB1aW50MzJfdCBhY2dfZGNlZmNsazJnZnhjbGtfYjsKMTQ0NzQ6ICB1aW50MzJf dCBhY2dfZGNlZmNsazJnZnhjbGtfYzsKMTQ0NzQ6ICB1aW50MzJfdCBhY2dfcGh5Y2xrMmdmeGNs a19hOwoxNDQ3NDogIHVpbnQzMl90IGFjZ19waHljbGsyZ2Z4Y2xrX2I7CjE0NDc0OiAgdWludDMy X3QgYWNnX3BoeWNsazJnZnhjbGtfYzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9tdWx0aW1lZGlhX2lu Zm9fdjJfMQoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVy IHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCB1dmRpcF9taW5fdmVyOwoxNDQ3NDogICB1 aW50OF90IHV2ZGlwX21heF92ZXI7CjE0NDc0OiAgIHVpbnQ4X3QgdmNlaXBfbWluX3ZlcjsKMTQ0 NzQ6ICAgdWludDhfdCB2Y2VpcF9tYXhfdmVyOwoxNDQ3NDogICB1aW50MTZfdCB1dmRfZW5jX21h eF9pbnB1dF93aWR0aF9waXhlbHM7CjE0NDc0OiAgIHVpbnQxNl90IHV2ZF9lbmNfbWF4X2lucHV0 X2hlaWdodF9waXhlbHM7CjE0NDc0OiAgIHVpbnQxNl90IHZjZV9lbmNfbWF4X2lucHV0X3dpZHRo X3BpeGVsczsKMTQ0NzQ6ICAgdWludDE2X3QgdmNlX2VuY19tYXhfaW5wdXRfaGVpZ2h0X3BpeGVs czsKMTQ0NzQ6ICAgdWludDMyX3QgdXZkX2VuY19tYXhfYmFuZHdpZHRoOwoxNDQ3NDogICB1aW50 MzJfdCB2Y2VfZW5jX21heF9iYW5kd2lkdGg7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV91 bWNfaW5mb192M18xCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9o ZWFkZXIgdGFibGVfaGVhZGVyOwoxNDQ3NDogICB1aW50MzJfdCB1Y29kZV92ZXJzaW9uOwoxNDQ3 NDogICB1aW50MzJfdCB1Y29kZV9yb21fc3RhcnRhZGRyOwoxNDQ3NDogICB1aW50MzJfdCB1Y29k ZV9sZW5ndGg7CjE0NDc0OiAgIHVpbnQxNl90IHVtY19yZWdfaW5pdF9vZmZzZXQ7CjE0NDc0OiAg IHVpbnQxNl90IGN1c3RvbWVyX3Vjb2RlX25hbWVfb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCBt Y2xrX3NzX3BlcmNlbnRhZ2U7CjE0NDc0OiAgIHVpbnQxNl90IG1jbGtfc3NfcmF0ZV8xMGh6Owox NDQ3NDogICB1aW50OF90IHVtY2lwX21pbl92ZXI7CjE0NDc0OiAgIHVpbnQ4X3QgdW1jaXBfbWF4 X3ZlcjsKMTQ0NzQ6ICAgdWludDhfdCB2cmFtX3R5cGU7CjE0NDc0OiAgIHVpbnQ4X3QgdW1jX2Nv bmZpZzsKMTQ0NzQ6ICAgdWludDMyX3QgbWVtX3JlZmNsa18xMGtoejsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3VtY19jb25maWdfZGVmIHsKMTQ0NzQ6ICAgVU1D X0NPTkZJR19fRU5BQkxFXzFLQl9JTlRFUkxFQVZFX01PREUgPSAweDAwMDAwMDAxLAoxNDQ3NDog ICBVTUNfQ09ORklHX19ERUZBVUxUX01FTV9FQ0NfRU5BQkxFID0gMHgwMDAwMDAwMiwKMTQ0NzQ6 ICAgVU1DX0NPTkZJR19fRU5BQkxFX0hCTV9MQU5FX1JFUEFJUiA9IDB4MDAwMDAwMDQsCjE0NDc0 OiAgIFVNQ19DT05GSUdfX0VOQUJMRV9CQU5LX0hBUlZFU1RJTkcgPSAweDAwMDAwMDA4LAoxNDQ3 NDogICBVTUNfQ09ORklHX19FTkFCTEVfUEhZX1JFSU5JVCA9IDB4MDAwMDAwMTAsCjE0NDc0OiAg IFVNQ19DT05GSUdfX0RJU0FCTEVfVUNPREVfQ0hLU1RBVFVTID0gMHgwMDAwMDAyMCwKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX3VtY19pbmZvX3YzXzIKMTQ0NzQ6IHsKMTQ0 NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CjE0NDc0 OiAgIHVpbnQzMl90IHVjb2RlX3ZlcnNpb247CjE0NDc0OiAgIHVpbnQzMl90IHVjb2RlX3JvbV9z dGFydGFkZHI7CjE0NDc0OiAgIHVpbnQzMl90IHVjb2RlX2xlbmd0aDsKMTQ0NzQ6ICAgdWludDE2 X3QgdW1jX3JlZ19pbml0X29mZnNldDsKMTQ0NzQ6ICAgdWludDE2X3QgY3VzdG9tZXJfdWNvZGVf bmFtZV9vZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IG1jbGtfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6 ICAgdWludDE2X3QgbWNsa19zc19yYXRlXzEwaHo7CjE0NDc0OiAgIHVpbnQ4X3QgdW1jaXBfbWlu X3ZlcjsKMTQ0NzQ6ICAgdWludDhfdCB1bWNpcF9tYXhfdmVyOwoxNDQ3NDogICB1aW50OF90IHZy YW1fdHlwZTsKMTQ0NzQ6ICAgdWludDhfdCB1bWNfY29uZmlnOwoxNDQ3NDogICB1aW50MzJfdCBt ZW1fcmVmY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBwc3RhdGVfdWNsa18xMGtoels0XTsK MTQ0NzQ6ICAgdWludDE2X3QgdW1jZ29sZGVub2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCBkZW5z aXR5Z29sZGVub2Zmc2V0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fdW1j X2luZm9fdjNfMwoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVh ZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDMyX3QgdWNvZGVfcmVzZXJ2ZWQ7CjE0NDc0 OiAgIHVpbnQzMl90IHVjb2RlX3JvbV9zdGFydGFkZHI7CjE0NDc0OiAgIHVpbnQzMl90IHVjb2Rl X2xlbmd0aDsKMTQ0NzQ6ICAgdWludDE2X3QgdW1jX3JlZ19pbml0X29mZnNldDsKMTQ0NzQ6ICAg dWludDE2X3QgY3VzdG9tZXJfdWNvZGVfbmFtZV9vZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IG1j bGtfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2X3QgbWNsa19zc19yYXRlXzEwaHo7CjE0 NDc0OiAgIHVpbnQ4X3QgdW1jaXBfbWluX3ZlcjsKMTQ0NzQ6ICAgdWludDhfdCB1bWNpcF9tYXhf dmVyOwoxNDQ3NDogICB1aW50OF90IHZyYW1fdHlwZTsKMTQ0NzQ6ICAgdWludDhfdCB1bWNfY29u ZmlnOwoxNDQ3NDogICB1aW50MzJfdCBtZW1fcmVmY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJf dCBwc3RhdGVfdWNsa18xMGtoels0XTsKMTQ0NzQ6ICAgdWludDE2X3QgdW1jZ29sZGVub2Zmc2V0 OwoxNDQ3NDogICB1aW50MTZfdCBkZW5zaXR5Z29sZGVub2Zmc2V0OwoxNDQ3NDogICB1aW50MzJf dCByZXNlcnZlZFs0XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV92cmFtX21vZHVsZV92OSB7CjE0NDc0 OiAKMTQ0NzQ6ICAgdWludDMyX3QgbWVtb3J5X3NpemU7CjE0NDc0OiAgIHVpbnQzMl90IGNoYW5u ZWxfZW5hYmxlOwoxNDQ3NDogICB1aW50MzJfdCBtYXhfbWVtX2NsazsKMTQ0NzQ6ICAgdWludDE2 X3QgcmVzZXJ2ZWRbM107CjE0NDc0OiAgIHVpbnQxNl90IG1lbV92b2x0YWdlOwoxNDQ3NDogICB1 aW50MTZfdCB2cmFtX21vZHVsZV9zaXplOwoxNDQ3NDogICB1aW50OF90IGV4dF9tZW1vcnlfaWQ7 CjE0NDc0OiAgIHVpbnQ4X3QgbWVtb3J5X3R5cGU7CjE0NDc0OiAgIHVpbnQ4X3QgY2hhbm5lbF9u dW07CjE0NDc0OiAgIHVpbnQ4X3QgY2hhbm5lbF93aWR0aDsKMTQ0NzQ6ICAgdWludDhfdCBkZW5z aXR5OwoxNDQ3NDogICB1aW50OF90IHR1bm5pbmdzZXRfaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgdmVu ZGVyX3Jldl9pZDsKMTQ0NzQ6ICAgdWludDhfdCByZWZyZXNocmF0ZTsKMTQ0NzQ6ICAgdWludDhf dCBoYm1fdmVuX3Jldl9pZDsKMTQ0NzQ6ICAgdWludDhfdCB2cmFtX3JzZDI7CjE0NDc0OiAgIGNo YXIgZHJhbV9wbnN0cmluZ1syMF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRv bV92cmFtX2luZm9faGVhZGVyX3YyXzMgewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFi bGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDE2X3QgbWVtX2FkanVzdF90Ymxv ZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IG1lbV9jbGtfcGF0Y2hfdGJsb2Zmc2V0OwoxNDQ3NDog ICB1aW50MTZfdCBtY19hZGp1c3RfcGVydGlsZV90YmxvZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90 IG1jX3BoeWluaXRfdGJsb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCBkcmFtX2RhdGFfcmVtYXBf dGJsb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCB0bXJzX3NlcV9vZmZzZXQ7CjE0NDc0OiAgIHVp bnQxNl90IHBvc3RfdWNvZGVfaW5pdF9vZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IHZyYW1fcnNk MjsKMTQ0NzQ6ICAgdWludDhfdCB2cmFtX21vZHVsZV9udW07CjE0NDc0OiAgIHVpbnQ4X3QgdW1j aXBfbWluX3ZlcjsKMTQ0NzQ6ICAgdWludDhfdCB1bWNpcF9tYXhfdmVyOwoxNDQ3NDogICB1aW50 OF90IG1jX3BoeV90aWxlX251bTsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fdnJhbV9tb2R1bGVfdjkg dnJhbV9tb2R1bGVbMTZdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fdW1j X3JlZ2lzdGVyX2FkZHJfaW5mb3sKMTQ0NzQ6ICAgdWludDMyX3QgdW1jX3JlZ2lzdGVyX2FkZHI6 MjQ7CjE0NDc0OiAgIHVpbnQzMl90IHVtY19yZWdfdHlwZV9pbmQ6MTsKMTQ0NzQ6ICAgdWludDMy X3QgdW1jX3JlZ19yc3ZkOjc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0g YXRvbV91bWNfcmVnaXN0ZXJfYWRkcl9pbmZvX2ZsYWd7CjE0NDc0OiAgIGIzQVRPTV9VTUNfUkVH X0FERF9JTkZPX0lORElSRUNUX0FDQ0VTUyA9MHgwMSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHVuaW9uIGF0b21fdW1jX3JlZ2lzdGVyX2FkZHJfaW5mb19hY2Nlc3MKMTQ0NzQ6IHsKMTQ0NzQ6 ICAgc3RydWN0IGF0b21fdW1jX3JlZ2lzdGVyX2FkZHJfaW5mbyB1bWNfcmVnX2FkZHI7CjE0NDc0 OiAgIHVpbnQzMl90IHUzMnVtY19yZWdfYWRkcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBhdG9tX3VtY19yZWdfc2V0dGluZ19pZF9jb25maWd7CjE0NDc0OiAgIHVpbnQzMl90IG1l bWNsb2NrcmFuZ2U6MjQ7CjE0NDc0OiAgIHVpbnQzMl90IG1lbV9ibGtfaWQ6ODsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGF0b21fdW1jX3JlZ19zZXR0aW5nX2lkX2NvbmZpZ19hY2Nl c3MKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fdW1jX3JlZ19zZXR0aW5nX2lkX2NvbmZp ZyB1bWNfaWRfYWNjZXNzOwoxNDQ3NDogICB1aW50MzJfdCB1MzJ1bWNfaWRfYWNjZXNzOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fdW1jX3JlZ19zZXR0aW5nX2RhdGFfYmxv Y2t7CjE0NDc0OiAgIHVuaW9uIGF0b21fdW1jX3JlZ19zZXR0aW5nX2lkX2NvbmZpZ19hY2Nlc3Mg YmxvY2tfaWQ7CjE0NDc0OiAgIHVpbnQzMl90IHUzMnVtY19yZWdfZGF0YVsxXTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX3VtY19pbml0X3JlZ19ibG9ja3sKMTQ0NzQ6ICAg dWludDE2X3QgdW1jX3JlZ19udW07CjE0NDc0OiAgIHVpbnQxNl90IHJlc2VydmVkOwoxNDQ3NDog ICB1bmlvbiBhdG9tX3VtY19yZWdpc3Rlcl9hZGRyX2luZm9fYWNjZXNzIHVtY19yZWdfbGlzdFsx XTsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fdW1jX3JlZ19zZXR0aW5nX2RhdGFfYmxvY2sgdW1jX3Jl Z19zZXR0aW5nX2xpc3RbMV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV92 cmFtX21vZHVsZV92MTAgewoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90IG1lbW9yeV9zaXplOwox NDQ3NDogICB1aW50MzJfdCBjaGFubmVsX2VuYWJsZTsKMTQ0NzQ6ICAgdWludDMyX3QgbWF4X21l bV9jbGs7CjE0NDc0OiAgIHVpbnQxNl90IHJlc2VydmVkWzNdOwoxNDQ3NDogICB1aW50MTZfdCBt ZW1fdm9sdGFnZTsKMTQ0NzQ6ICAgdWludDE2X3QgdnJhbV9tb2R1bGVfc2l6ZTsKMTQ0NzQ6ICAg dWludDhfdCBleHRfbWVtb3J5X2lkOwoxNDQ3NDogICB1aW50OF90IG1lbW9yeV90eXBlOwoxNDQ3 NDogICB1aW50OF90IGNoYW5uZWxfbnVtOwoxNDQ3NDogICB1aW50OF90IGNoYW5uZWxfd2lkdGg7 CjE0NDc0OiAgIHVpbnQ4X3QgZGVuc2l0eTsKMTQ0NzQ6ICAgdWludDhfdCB0dW5uaW5nc2V0X2lk OwoxNDQ3NDogICB1aW50OF90IHZlbmRlcl9yZXZfaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgcmVmcmVz aHJhdGU7CjE0NDc0OiAgIHVpbnQ4X3QgdnJhbV9mbGFnczsKMTQ0NzQ6ICAgdWludDhfdCB2cmFt X3JzZDI7CjE0NDc0OiAgIHVpbnQxNl90IGdkZHI2X21yMTA7CjE0NDc0OiAgIHVpbnQxNl90IGdk ZHI2X21yMTsKMTQ0NzQ6ICAgdWludDE2X3QgZ2RkcjZfbXIyOwoxNDQ3NDogICB1aW50MTZfdCBn ZGRyNl9tcjc7CjE0NDc0OiAgIGNoYXIgZHJhbV9wbnN0cmluZ1syMF07CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV92cmFtX2luZm9faGVhZGVyX3YyXzQgewoxNDQ3NDogICBz dHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWlu dDE2X3QgbWVtX2FkanVzdF90YmxvZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IG1lbV9jbGtfcGF0 Y2hfdGJsb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCBtY19hZGp1c3RfcGVydGlsZV90YmxvZmZz ZXQ7CjE0NDc0OiAgIHVpbnQxNl90IG1jX3BoeWluaXRfdGJsb2Zmc2V0OwoxNDQ3NDogICB1aW50 MTZfdCBkcmFtX2RhdGFfcmVtYXBfdGJsb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCByZXNlcnZl ZDsKMTQ0NzQ6ICAgdWludDE2X3QgcG9zdF91Y29kZV9pbml0X29mZnNldDsKMTQ0NzQ6ICAgdWlu dDE2X3QgdnJhbV9yc2QyOwoxNDQ3NDogICB1aW50OF90IHZyYW1fbW9kdWxlX251bTsKMTQ0NzQ6 ICAgdWludDhfdCB1bWNpcF9taW5fdmVyOwoxNDQ3NDogICB1aW50OF90IHVtY2lwX21heF92ZXI7 CjE0NDc0OiAgIHVpbnQ4X3QgbWNfcGh5X3RpbGVfbnVtOwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV92 cmFtX21vZHVsZV92MTAgdnJhbV9tb2R1bGVbMTZdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2kyY19k YXRhX2VudHJ5CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQxNl90IGkyY19yZWdfaW5kZXg7CjE0NDc0 OiAgIHVpbnQxNl90IGkyY19yZWdfZGF0YTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hlYWRlcl92NHsKMTQ0NzQ6ICAgdWludDhfdCB2b2x0YWdl X3R5cGU7CjE0NDc0OiAgIHVpbnQ4X3Qgdm9sdGFnZV9tb2RlOwoxNDQ3NDogICB1aW50MTZfdCBv YmplY3Rfc2l6ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3Zv bHRhZ2Vfb2JqZWN0X21vZGUKMTQ0NzQ6IHsKMTQ0NzQ6ICAgIFZPTFRBR0VfT0JKX0dQSU9fTFVU ID0gMCwKMTQ0NzQ6ICAgIFZPTFRBR0VfT0JKX1ZSX0kyQ19JTklUX1NFUSA9IDMsCjE0NDc0OiAg ICBWT0xUQUdFX09CSl9QSEFTRV9MVVQgPSA0LAoxNDQ3NDogICAgVk9MVEFHRV9PQkpfU1ZJRDIg PSA3LAoxNDQ3NDogICAgVk9MVEFHRV9PQkpfRVZWID0gOCwKMTQ0NzQ6ICAgIFZPTFRBR0VfT0JK X01FUkdFRF9QT1dFUiA9IDksCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9p MmNfdm9sdGFnZV9vYmplY3RfdjQKMTQ0NzQ6IHsKMTQ0NzQ6ICAgIHN0cnVjdCBhdG9tX3ZvbHRh Z2Vfb2JqZWN0X2hlYWRlcl92NCBoZWFkZXI7CjE0NDc0OiAgICB1aW50OF90IHJlZ3VsYXRvcl9p ZDsKMTQ0NzQ6ICAgIHVpbnQ4X3QgaTJjX2lkOwoxNDQ3NDogICAgdWludDhfdCBpMmNfc2xhdmVf YWRkcjsKMTQ0NzQ6ICAgIHVpbnQ4X3QgaTJjX2NvbnRyb2xfb2Zmc2V0OwoxNDQ3NDogICAgdWlu dDhfdCBpMmNfZmxhZzsKMTQ0NzQ6ICAgIHVpbnQ4X3QgaTJjX3NwZWVkOwoxNDQ3NDogICAgdWlu dDhfdCByZXNlcnZlZFsyXTsKMTQ0NzQ6ICAgIHN0cnVjdCBhdG9tX2kyY19kYXRhX2VudHJ5IGky Y2RhdGFsdXRbMV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9p MmNfdm9sdGFnZV9jb250cm9sX2ZsYWcKMTQ0NzQ6IHsKMTQ0NzQ6ICAgIFZPTFRBR0VfREFUQV9P TkVfQllURSA9IDAsCjE0NDc0OiAgICBWT0xUQUdFX0RBVEFfVFdPX0JZVEUgPSAxLAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV92b2x0YWdlX2dwaW9fbWFwX2x1 dAoxNDQ3NDogewoxNDQ3NDogICB1aW50MzJfdCB2b2x0YWdlX2dwaW9fcmVnX3ZhbDsKMTQ0NzQ6 ICAgdWludDE2X3Qgdm9sdGFnZV9sZXZlbF9tdjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBhdG9tX2dwaW9fdm9sdGFnZV9vYmplY3RfdjQKMTQ0NzQ6IHsKMTQ0NzQ6ICAgIHN0cnVj dCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hlYWRlcl92NCBoZWFkZXI7CjE0NDc0OiAgICB1aW50OF90 IGdwaW9fY29udHJvbF9pZDsKMTQ0NzQ6ICAgIHVpbnQ4X3QgZ3Bpb19lbnRyeV9udW07CjE0NDc0 OiAgICB1aW50OF90IHBoYXNlX2RlbGF5X3VzOwoxNDQ3NDogICAgdWludDhfdCByZXNlcnZlZDsK MTQ0NzQ6ICAgIHVpbnQzMl90IGdwaW9fbWFza192YWw7CjE0NDc0OiAgICBzdHJ1Y3QgYXRvbV92 b2x0YWdlX2dwaW9fbWFwX2x1dCB2b2x0YWdlX2dwaW9fbHV0WzFdOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGF0b21fc3ZpZDJfdm9sdGFnZV9vYmplY3RfdjQKMTQ0NzQ6IHsKMTQ0 NzQ6ICAgIHN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hlYWRlcl92NCBoZWFkZXI7CjE0NDc0 OiAgICB1aW50OF90IGxvYWRsaW5lX3BzaTE7CjE0NDc0OiAgICB1aW50OF90IHBzaTBfbF92aWRf dGhyZXNkOwoxNDQ3NDogICAgdWludDhfdCBwc2kwX2VuYWJsZTsKMTQ0NzQ6ICAgIHVpbnQ4X3Qg bWF4dnN0ZXA7CjE0NDc0OiAgICB1aW50OF90IHRlbGVtZXRyeV9vZmZzZXQ7CjE0NDc0OiAgICB1 aW50OF90IHRlbGVtZXRyeV9nYWluOwoxNDQ3NDogICAgdWludDE2X3QgcmVzZXJ2ZWQxOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fbWVyZ2VkX3ZvbHRhZ2Vfb2JqZWN0X3Y0 CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hlYWRlcl92NCBo ZWFkZXI7CjE0NDc0OiAgIHVpbnQ4X3QgbWVyZ2VkX3Bvd2VycmFpbF90eXBlOwoxNDQ3NDogICB1 aW50OF90IHJlc2VydmVkWzNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gYXRvbV92 b2x0YWdlX29iamVjdF92NHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fZ3Bpb192b2x0YWdlX29iamVj dF92NCBncGlvX3ZvbHRhZ2Vfb2JqOwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9pMmNfdm9sdGFnZV9v YmplY3RfdjQgaTJjX3ZvbHRhZ2Vfb2JqOwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9zdmlkMl92b2x0 YWdlX29iamVjdF92NCBzdmlkMl92b2x0YWdlX29iajsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fbWVy Z2VkX3ZvbHRhZ2Vfb2JqZWN0X3Y0IG1lcmdlZF92b2x0YWdlX29iajsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0c19pbmZvX3Y0XzEKMTQ0NzQ6IHsK MTQ0NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CjE0 NDc0OiAgIHVuaW9uIGF0b21fdm9sdGFnZV9vYmplY3RfdjQgdm9sdGFnZV9vYmplY3RbMV07CjE0 NDc0OiB9OwoxNDQ3NDogIyAyMzIzICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2lu Y2x1ZGUvYXRvbWZpcm13YXJlLmgiCjE0NDc0OiBzdHJ1Y3QgYXNpY19pbml0X2VuZ2luZV9wYXJh bWV0ZXJzCjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQzMl90IHNjbGtmcmVxaW4xMGtoejoyNDsKMTQ0 NzQ6ICAgdWludDMyX3QgZW5naW5lZmxhZzo4OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGFzaWNfaW5pdF9tZW1fcGFyYW1ldGVycwoxNDQ3NDogewoxNDQ3NDogICB1aW50MzJfdCBt Y2xrZnJlcWluMTBraHo6MjQ7CjE0NDc0OiAgIHVpbnQzMl90IG1lbWZsYWc6ODsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhc2ljX2luaXRfcGFyYW1ldGVyc192Ml8xCjE0NDc0OiB7 CjE0NDc0OiAgIHN0cnVjdCBhc2ljX2luaXRfZW5naW5lX3BhcmFtZXRlcnMgZW5naW5lcGFyYW07 CjE0NDc0OiAgIHN0cnVjdCBhc2ljX2luaXRfbWVtX3BhcmFtZXRlcnMgbWVtcGFyYW07CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXNpY19pbml0X3BzX2FsbG9jYXRpb25fdjJfMQox NDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXNpY19pbml0X3BhcmFtZXRlcnNfdjJfMSBwYXJhbTsK MTQ0NzQ6ICAgdWludDMyX3QgcmVzZXJ2ZWRbMTZdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBlbnVtIGF0b21fYXNpY19pbml0X2VuZ2luZV9mbGFnCjE0NDc0OiB7CjE0NDc0OiAg IGIzTk9STUFMX0VOR0lORV9JTklUID0gMCwKMTQ0NzQ6ICAgYjNTUklPVl9TS0lQX0FTSUNfSU5J VCA9IDB4MDIsCjE0NDc0OiAgIGIzU1JJT1ZfTE9BRF9VQ09ERSA9IDB4NDAsCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fYXNpY19pbml0X21lbV9mbGFnCjE0NDc0OiB7CjE0NDc0 OiAgIGIzTk9STUFMX01FTV9JTklUID0gMCwKMTQ0NzQ6ICAgYjNEUkFNX1NFTEZfUkVGUkVTSF9F WElUID0weDIwLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNldF9lbmdpbmVfY2xvY2tfcGFyYW1l dGVyc192Ml8xCjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQzMl90IHNjbGtmcmVxaW4xMGtoejoyNDsK MTQ0NzQ6ICAgdWludDMyX3Qgc2Nsa2ZsYWc6ODsKMTQ0NzQ6ICAgdWludDMyX3QgcmVzZXJ2ZWRb MTBdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNldF9lbmdpbmVfY2xvY2tfcHNf YWxsb2NhdGlvbl92Ml8xCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBzZXRfZW5naW5lX2Nsb2Nr X3BhcmFtZXRlcnNfdjJfMSBjbG9ja2luZm87CjE0NDc0OiAgIHVpbnQzMl90IHJlc2VydmVkWzEw XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3NldF9lbmdpbmVf bWVtX2Nsb2NrX2ZsYWcKMTQ0NzQ6IHsKMTQ0NzQ6ICAgYjNOT1JNQUxfQ0hBTkdFX0NMT0NLID0g MCwKMTQ0NzQ6ICAgYjNGSVJTVF9USU1FX0NIQU5HRV9DTE9DSyA9IDB4MDgsCjE0NDc0OiAgIGIz U1RPUkVfRFBNX1RSQUlOR0lORyA9IDB4NDAsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGdldF9lbmdpbmVfY2xv Y2tfcGFyYW1ldGVyCjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQzMl90IHNjbGtfMTBraHo7CjE0NDc0 OiAgIHVpbnQzMl90IHJlc2VydmVkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzZXRfbWVtb3J5X2Nsb2NrX3Bh cmFtZXRlcnNfdjJfMQoxNDQ3NDogewoxNDQ3NDogICB1aW50MzJfdCBtY2xrZnJlcWluMTBraHo6 MjQ7CjE0NDc0OiAgIHVpbnQzMl90IG1jbGtmbGFnOjg7CjE0NDc0OiAgIHVpbnQzMl90IHJlc2Vy dmVkWzEwXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzZXRfbWVtb3J5X2Nsb2Nr X3BzX2FsbG9jYXRpb25fdjJfMQoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3Qgc2V0X21lbW9yeV9j bG9ja19wYXJhbWV0ZXJzX3YyXzEgY2xvY2tpbmZvOwoxNDQ3NDogICB1aW50MzJfdCByZXNlcnZl ZFsxMF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZ2V0X21lbW9yeV9jbG9ja19wYXJhbWV0ZXIK MTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDMyX3QgbWNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDMyX3Qg cmVzZXJ2ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNDM3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlLmgiCjE0NDc0OiBzdHJ1Y3Qgc2V0X3ZvbHRh Z2VfcGFyYW1ldGVyc192MV80CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQ4X3Qgdm9sdGFnZXR5cGU7 CjE0NDc0OiAgIHVpbnQ4X3QgY29tbWFuZDsKMTQ0NzQ6ICAgdWludDE2X3QgdmxldmVsX212Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fc2V0X3ZvbHRhZ2VfY29t bWFuZHsKMTQ0NzQ6ICAgQVRPTV9TRVRfVk9MVEFHRSA9IDAsCjE0NDc0OiAgIEFUT01fSU5JVF9W T0xUQUdFX1JFR1VMQVRPUiA9IDMsCjE0NDc0OiAgIEFUT01fU0VUX1ZPTFRBR0VfUEhBU0UgPSA0 LAoxNDQ3NDogICBBVE9NX0dFVF9MRUFLQUdFX0lEID0gOCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBzZXRfdm9sdGFnZV9wc19hbGxvY2F0aW9uX3YxXzQKMTQ0NzQ6IHsKMTQ0NzQ6 ICAgc3RydWN0IHNldF92b2x0YWdlX3BhcmFtZXRlcnNfdjFfNCBzZXR2b2x0YWdlcGFyYW07CjE0 NDc0OiAgIHVpbnQzMl90IHJlc2VydmVkWzEwXTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDI0NjYgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKMTQ0 NzQ6IGVudW0gYXRvbV9ncHVfY2xvY2tfdHlwZQoxNDQ3NDogewoxNDQ3NDogICBDT01QVVRFX0dQ VUNMS19JTlBVVF9GTEFHX0RFRkFVTFRfR1BVQ0xLID0weDAwLAoxNDQ3NDogICBDT01QVVRFX0dQ VUNMS19JTlBVVF9GTEFHX0dGWENMSyA9MHgwMSwKMTQ0NzQ6ICAgQ09NUFVURV9HUFVDTEtfSU5Q VVRfRkxBR19VQ0xLID0weDAyLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNvbXB1 dGVfZ3B1X2Nsb2NrX2lucHV0X3BhcmFtZXRlcl92MV84CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQz Ml90IGdwdWNsb2NrXzEwa2h6OjI0OwoxNDQ3NDogICB1aW50MzJfdCBncHVfY2xvY2tfdHlwZTo4 OwoxNDQ3NDogICB1aW50MzJfdCByZXNlcnZlZFs1XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGNvbXB1dGVfZ3B1X2Nsb2NrX291dHB1dF9wYXJhbWV0ZXJfdjFfOAox NDQ3NDogewoxNDQ3NDogICB1aW50MzJfdCBncHVjbG9ja18xMGtoejoyNDsKMTQ0NzQ6ICAgdWlu dDMyX3QgZGZzX2RpZDo4OwoxNDQ3NDogICB1aW50MzJfdCBwbGxfZmJfbXVsdDsKMTQ0NzQ6ICAg dWludDMyX3QgcGxsX3NzX2Zic211bHQ7CjE0NDc0OiAgIHVpbnQxNl90IHBsbF9zc19zbGV3X2Zy YWM7CjE0NDc0OiAgIHVpbnQ4X3QgcGxsX3NzX2VuYWJsZTsKMTQ0NzQ6ICAgdWludDhfdCByZXNl cnZlZDsKMTQ0NzQ6ICAgdWludDMyX3QgcmVzZXJ2ZWQxWzJdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMg MjUwMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2Fy ZS5oIgoxNDQ3NDogc3RydWN0IHJlYWRfZWZ1c2VfaW5wdXRfcGFyYW1ldGVyc192M18xCjE0NDc0 OiB7CjE0NDc0OiAgIHVpbnQxNl90IGVmdXNlX3N0YXJ0X2luZGV4OwoxNDQ3NDogICB1aW50OF90 IHJlc2VydmVkOwoxNDQ3NDogICB1aW50OF90IGJpdHNsZW47CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHVuaW9uIHJlYWRfZWZ1c2VfdmFsdWVfcGFyYW1ldGVyc192M18xCjE0NDc0 OiB7CjE0NDc0OiAgIHN0cnVjdCByZWFkX2VmdXNlX2lucHV0X3BhcmFtZXRlcnNfdjNfMSBlZnVz ZV9pbmZvOwoxNDQ3NDogICB1aW50MzJfdCBlZnVzZXZhbHVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGF0b21fZ2V0X3NtdV9jbG9ja19pbmZvX3BhcmFtZXRlcnNfdjNfMQoxNDQ3NDogewoxNDQ3 NDogICB1aW50OF90IHN5c3BsbF9pZDsKMTQ0NzQ6ICAgdWludDhfdCBjbGtfaWQ7CjE0NDc0OiAg IHVpbnQ4X3QgY29tbWFuZDsKMTQ0NzQ6ICAgdWludDhfdCBkZnNkaWQ7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBlbnVtIGF0b21fZ2V0X3NtdV9jbG9ja19pbmZvX2NvbW1hbmQKMTQ0NzQ6IHsK MTQ0NzQ6ICAgR0VUX1NNVV9DTE9DS19JTkZPX1YzXzFfR0VUX0NMT0NLX0ZSRVEgPSAwLAoxNDQ3 NDogICBHRVRfU01VX0NMT0NLX0lORk9fVjNfMV9HRVRfUExMVkNPX0ZSRVEgPSAxLAoxNDQ3NDog ICBHRVRfU01VX0NMT0NLX0lORk9fVjNfMV9HRVRfUExMUkVGQ0xLX0ZSRVEgPSAyLAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3NtdTlfc3lzcGxsMF9jbG9ja19pZAoxNDQ3NDog ewoxNDQ3NDogICBTTVU5X1NZU1BMTDBfU01OQ0xLX0lEID0gMCwKMTQ0NzQ6ICAgU01VOV9TWVNQ TEwwX1NPQ0NMS19JRCA9IDEsCjE0NDc0OiAgIFNNVTlfU1lTUExMMF9NUDBDTEtfSUQgPSAyLAox NDQ3NDogICBTTVU5X1NZU1BMTDBfTVAxQ0xLX0lEID0gMywKMTQ0NzQ6ICAgU01VOV9TWVNQTEww X0xDTEtfSUQgPSA0LAoxNDQ3NDogICBTTVU5X1NZU1BMTDBfRENMS19JRCA9IDUsCjE0NDc0OiAg IFNNVTlfU1lTUExMMF9WQ0xLX0lEID0gNiwKMTQ0NzQ6ICAgU01VOV9TWVNQTEwwX0VDTEtfSUQg PSA3LAoxNDQ3NDogICBTTVU5X1NZU1BMTDBfRENFRkNMS19JRCA9IDgsCjE0NDc0OiAgIFNNVTlf U1lTUExMMF9EUFJFRkNMS19JRCA9IDEwLAoxNDQ3NDogICBTTVU5X1NZU1BMTDBfRElTUENMS19J RCA9IDExLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3NtdTExX3N5c3BsbF9p ZCB7CjE0NDc0OiAgIFNNVTExX1NZU1BMTDBfSUQgPSAwLAoxNDQ3NDogICBTTVUxMV9TWVNQTEwx XzBfSUQgPSAxLAoxNDQ3NDogICBTTVUxMV9TWVNQTEwxXzFfSUQgPSAyLAoxNDQ3NDogICBTTVUx MV9TWVNQTEwxXzJfSUQgPSAzLAoxNDQ3NDogICBTTVUxMV9TWVNQTEwyX0lEID0gNCwKMTQ0NzQ6 ICAgU01VMTFfU1lTUExMM18wX0lEID0gNSwKMTQ0NzQ6ICAgU01VMTFfU1lTUExMM18xX0lEID0g NiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9zbXUxMV9zeXNwbGwwX2Nsb2Nr X2lkIHsKMTQ0NzQ6ICAgU01VMTFfU1lTUExMMF9FQ0xLX0lEID0gMCwKMTQ0NzQ6ICAgU01VMTFf U1lTUExMMF9TT0NDTEtfSUQgPSAxLAoxNDQ3NDogICBTTVUxMV9TWVNQTEwwX01QMENMS19JRCA9 IDIsCjE0NDc0OiAgIFNNVTExX1NZU1BMTDBfRENMS19JRCA9IDMsCjE0NDc0OiAgIFNNVTExX1NZ U1BMTDBfVkNMS19JRCA9IDQsCjE0NDc0OiAgIFNNVTExX1NZU1BMTDBfRENFRkNMS19JRCA9IDUs CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fc211MTFfc3lzcGxsMV8wX2Nsb2Nr X2lkIHsKMTQ0NzQ6ICAgU01VMTFfU1lTUExMMV8wX1VDTEtBX0lEID0gMCwKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9zbXUxMV9zeXNwbGwxXzFfY2xvY2tfaWQgewoxNDQ3NDog ICBTTVUxMV9TWVNQTEwxXzBfVUNMS0JfSUQgPSAwLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBhdG9tX3NtdTExX3N5c3BsbDFfMl9jbG9ja19pZCB7CjE0NDc0OiAgIFNNVTExX1NZU1BM TDFfMF9GQ0xLX0lEID0gMCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9zbXUx MV9zeXNwbGwyX2Nsb2NrX2lkIHsKMTQ0NzQ6ICAgU01VMTFfU1lTUExMMl9HRlhDTEtfSUQgPSAw LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3NtdTExX3N5c3BsbDNfMF9jbG9j a19pZCB7CjE0NDc0OiAgIFNNVTExX1NZU1BMTDNfMF9XQUZDTEtfSUQgPSAwLAoxNDQ3NDogICBT TVUxMV9TWVNQTEwzXzBfRElTUENMS19JRCA9IDEsCjE0NDc0OiAgIFNNVTExX1NZU1BMTDNfMF9E UFJFRkNMS19JRCA9IDIsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fc211MTFf c3lzcGxsM18xX2Nsb2NrX2lkIHsKMTQ0NzQ6ICAgU01VMTFfU1lTUExMM18xX01QMUNMS19JRCA9 IDAsCjE0NDc0OiAgIFNNVTExX1NZU1BMTDNfMV9TTU5DTEtfSUQgPSAxLAoxNDQ3NDogICBTTVUx MV9TWVNQTEwzXzFfTENMS19JRCA9IDIsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg YXRvbV9nZXRfc211X2Nsb2NrX2luZm9fb3V0cHV0X3BhcmFtZXRlcnNfdjNfMQoxNDQ3NDogewox NDQ3NDogICB1bmlvbiB7CjE0NDc0OiAgICAgdWludDMyX3Qgc211X2Nsb2NrX2ZyZXFfaHo7CjE0 NDc0OiAgICAgdWludDMyX3Qgc3lzcGxsdmNvZnJlcV8xMGtoejsKMTQ0NzQ6ICAgICB1aW50MzJf dCBzeXNzcGxscmVmY2xrXzEwa2h6OwoxNDQ3NDogICB9YXRvbV9zbXVfb3V0cHV0Y2xrZnJlcTsK MTQ0NzQ6IH07CjE0NDc0OiAjIDI2MTUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v aW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKMTQ0NzQ6IGVudW0gYXRvbV9keW5hbWljX21lbW9yeV9z ZXR0aW5nX2NvbW1hbmQKMTQ0NzQ6IHsKMTQ0NzQ6ICAgQ09NUFVURV9NRU1PUllfUExMX1BBUkFN ID0gMSwKMTQ0NzQ6ICAgQ09NUFVURV9FTkdJTkVfUExMX1BBUkFNID0gMiwKMTQ0NzQ6ICAgQURK VVNUX01DX1NFVFRJTkdfUEFSQU0gPSAzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZHluYW1pY19tY2xrX3NldHRpbmdzX3BhcmFtZXRlcnNfdjJfMQoxNDQ3NDogewox NDQ3NDogICB1aW50MzJfdCBtY2xrXzEwa2h6OjI0OwoxNDQ3NDogICB1aW50MzJfdCBjb21tYW5k Ojg7CjE0NDc0OiAgIHVpbnQzMl90IHJlc2VydmVkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgZHluYW1pY19zY2xrX3NldHRpbmdzX3BhcmFtZXRlcnNfdjJfMQoxNDQ3 NDogewoxNDQ3NDogICB1aW50MzJfdCBzY2xrXzEwa2h6OjI0OwoxNDQ3NDogICB1aW50MzJfdCBj b21tYW5kOjg7CjE0NDc0OiAgIHVpbnQzMl90IG1jbGtfMTBraHo7CjE0NDc0OiAgIHVpbnQzMl90 IHJlc2VydmVkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZHluYW1pY19tZW1vcnlf c2V0dGluZ3NfcGFyYW1ldGVyc192Ml8xCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBkeW5hbWlj X21jbGtfc2V0dGluZ3NfcGFyYW1ldGVyc192Ml8xIG1jbGtfc2V0dGluZzsKMTQ0NzQ6ICAgc3Ry dWN0IGR5bmFtaWNfc2Nsa19zZXR0aW5nc19wYXJhbWV0ZXJzX3YyXzEgc2Nsa19zZXR0aW5nOwox NDQ3NDogfTsKMTQ0NzQ6ICMgMjY1MyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9p bmNsdWRlL2F0b21maXJtd2FyZS5oIgoxNDQ3NDogZW51bSBhdG9tX3VtYzZfMF91Y29kZV9mdW5j dGlvbl9jYWxsX2VudW1faWQKMTQ0NzQ6IHsKMTQ0NzQ6ICAgVU1DNjBfVUNPREVfRlVOQ19JRF9S RUlOSVQgPSAwLAoxNDQ3NDogICBVTUM2MF9VQ09ERV9GVU5DX0lEX0VOVEVSX1NFTEZSRUZSRVNI ID0gMSwKMTQ0NzQ6ICAgVU1DNjBfVUNPREVfRlVOQ19JRF9FWElUX1NFTEZSRUZSRVNIID0gMiwK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1lbW9yeV90cmFpbmluZ19w YXJhbWV0ZXJzX3YyXzEKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDhfdCB1Y29kZV9mdW5jX2lkOwox NDQ3NDogICB1aW50OF90IHVjb2RlX3Jlc2VydmVkWzNdOwoxNDQ3NDogICB1aW50MzJfdCByZXNl cnZlZFs1XTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDI2NzUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKMTQ0NzQ6IHN0cnVjdCBzZXRfcGl4ZWxf Y2xvY2tfcGFyYW1ldGVyX3YxXzcKMTQ0NzQ6IHsKMTQ0NzQ6ICAgICB1aW50MzJfdCBwaXhjbGtf MTAwaHo7CjE0NDc0OiAKMTQ0NzQ6ICAgICB1aW50OF90IHBsbF9pZDsKMTQ0NzQ6ICAgICB1aW50 OF90IGVuY29kZXJvYmppZDsKMTQ0NzQ6IAoxNDQ3NDogICAgIHVpbnQ4X3QgZW5jb2Rlcl9tb2Rl OwoxNDQ3NDogICAgIHVpbnQ4X3QgbWlzY2luZm87CjE0NDc0OiAgICAgdWludDhfdCBjcnRjX2lk OwoxNDQ3NDogICAgIHVpbnQ4X3QgZGVlcF9jb2xvcl9yYXRpbzsKMTQ0NzQ6ICAgICB1aW50OF90 IHJlc2VydmVkMVsyXTsKMTQ0NzQ6ICAgICB1aW50MzJfdCByZXNlcnZlZDI7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9zZXRfcGl4ZWxfY2xvY2tfdjFfN19taXNj X2luZm8KMTQ0NzQ6IHsKMTQ0NzQ6ICAgUElYRUxfQ0xPQ0tfVjdfTUlTQ19GT1JDRV9QUk9HX1BQ TEwgPSAweDAxLAoxNDQ3NDogICBQSVhFTF9DTE9DS19WN19NSVNDX1BST0dfUEhZUExMID0gMHgw MiwKMTQ0NzQ6ICAgUElYRUxfQ0xPQ0tfVjdfTUlTQ19ZVVY0MjBfTU9ERSA9IDB4MDQsCjE0NDc0 OiAgIFBJWEVMX0NMT0NLX1Y3X01JU0NfRFZJX0RVQUxMSU5LX0VOID0gMHgwOCwKMTQ0NzQ6ICAg UElYRUxfQ0xPQ0tfVjdfTUlTQ19SRUZfRElWX1NSQyA9IDB4MzAsCjE0NDc0OiAgIFBJWEVMX0NM T0NLX1Y3X01JU0NfUkVGX0RJVl9TUkNfWFRBTElOID0gMHgwMCwKMTQ0NzQ6ICAgUElYRUxfQ0xP Q0tfVjdfTUlTQ19SRUZfRElWX1NSQ19QQ0lFID0gMHgxMCwKMTQ0NzQ6ICAgUElYRUxfQ0xPQ0tf VjdfTUlTQ19SRUZfRElWX1NSQ19HRU5MSyA9IDB4MjAsCjE0NDc0OiAgIFBJWEVMX0NMT0NLX1Y3 X01JU0NfUkVGX0RJVl9TUkNfUkVGUEFEID0gMHgzMCwKMTQ0NzQ6ICAgUElYRUxfQ0xPQ0tfVjdf TUlTQ19BVE9NSUNfVVBEQVRFID0gMHg0MCwKMTQ0NzQ6ICAgUElYRUxfQ0xPQ0tfVjdfTUlTQ19G T1JDRV9TU19ESVMgPSAweDgwLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVt IGF0b21fc2V0X3BpeGVsX2Nsb2NrX3YxXzdfZGVlcGNvbG9yX3JhdGlvCjE0NDc0OiB7CjE0NDc0 OiAgIFBJWEVMX0NMT0NLX1Y3X0RFRVBDT0xPUl9SQVRJT19ESVMgPSAweDAwLAoxNDQ3NDogICBQ SVhFTF9DTE9DS19WN19ERUVQQ09MT1JfUkFUSU9fNV80ID0gMHgwMSwKMTQ0NzQ6ICAgUElYRUxf Q0xPQ0tfVjdfREVFUENPTE9SX1JBVElPXzNfMiA9IDB4MDIsCjE0NDc0OiAgIFBJWEVMX0NMT0NL X1Y3X0RFRVBDT0xPUl9SQVRJT18yXzEgPSAweDAzLAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjcyMiAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgox NDQ3NDogc3RydWN0IHNldF9kY2VfY2xvY2tfcGFyYW1ldGVyc192Ml8xCjE0NDc0OiB7CjE0NDc0 OiAgIHVpbnQzMl90IGRjZWNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDhfdCBkY2VjbGt0eXBlOwox NDQ3NDogICB1aW50OF90IGRjZWNsa3NyYzsKMTQ0NzQ6ICAgdWludDhfdCBkY2VjbGtmbGFnOwox NDQ3NDogICB1aW50OF90IGNydGNfaWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGVudW0gYXRvbV9zZXRfZGNlX2Nsb2NrX2Nsb2NrX3R5cGUKMTQ0NzQ6IHsKMTQ0NzQ6ICAgRENF X0NMT0NLX1RZUEVfRElTUENMSyA9IDAsCjE0NDc0OiAgIERDRV9DTE9DS19UWVBFX0RQUkVGQ0xL ID0gMSwKMTQ0NzQ6ICAgRENFX0NMT0NLX1RZUEVfUElYRUxDTEsgPSAyLAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fc2V0X2RjZV9jbG9ja19kcHJlZmNsa19mbGFn CjE0NDc0OiB7CjE0NDc0OiAgIERDRV9DTE9DS19GTEFHX1BMTF9SRUZDTEtfU1JDX01BU0sgPSAw eDAzLAoxNDQ3NDogICBEQ0VfQ0xPQ0tfRkxBR19QTExfUkVGQ0xLX1NSQ19HRU5FUklDQSA9IDB4 MDAsCjE0NDc0OiAgIERDRV9DTE9DS19GTEFHX1BMTF9SRUZDTEtfU1JDX0dFTkxLID0gMHgwMSwK MTQ0NzQ6ICAgRENFX0NMT0NLX0ZMQUdfUExMX1JFRkNMS19TUkNfUENJRSA9IDB4MDIsCjE0NDc0 OiAgIERDRV9DTE9DS19GTEFHX1BMTF9SRUZDTEtfU1JDX1hUQUxJTiA9IDB4MDMsCjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9zZXRfZGNlX2Nsb2NrX3BpeGNsa19m bGFnCjE0NDc0OiB7CjE0NDc0OiAgIERDRV9DTE9DS19GTEFHX1BDTEtfREVFUENPTE9SX1JBVElP X01BU0sgPSAweDAzLAoxNDQ3NDogICBEQ0VfQ0xPQ0tfRkxBR19QQ0xLX0RFRVBDT0xPUl9SQVRJ T19ESVMgPSAweDAwLAoxNDQ3NDogICBEQ0VfQ0xPQ0tfRkxBR19QQ0xLX0RFRVBDT0xPUl9SQVRJ T181XzQgPSAweDAxLAoxNDQ3NDogICBEQ0VfQ0xPQ0tfRkxBR19QQ0xLX0RFRVBDT0xPUl9SQVRJ T18zXzIgPSAweDAyLAoxNDQ3NDogICBEQ0VfQ0xPQ0tfRkxBR19QQ0xLX0RFRVBDT0xPUl9SQVRJ T18yXzEgPSAweDAzLAoxNDQ3NDogICBEQ0VfQ0xPQ0tfRkxBR19QSVhDTEtfWVVWNDIwX01PREUg PSAweDA0LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNldF9kY2VfY2xvY2tfcHNf YWxsb2NhdGlvbl92Ml8xCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBzZXRfZGNlX2Nsb2NrX3Bh cmFtZXRlcnNfdjJfMSBwYXJhbTsKMTQ0NzQ6ICAgdWludDMyX3QgdWxSZXNlcnZlZFsyXTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGJsYW5rX2NydGNfcGFyYW1ldGVycwoxNDQ3NDogewoxNDQ3NDogICB1aW50OF90IGNydGNf aWQ7CjE0NDc0OiAgIHVpbnQ4X3QgYmxhbmtpbmc7CjE0NDc0OiAgIHVpbnQxNl90IHJlc2VydmVk OwoxNDQ3NDogICB1aW50MzJfdCByZXNlcnZlZDE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBl bnVtIGF0b21fYmxhbmtfY3J0Y19jb21tYW5kCjE0NDc0OiB7CjE0NDc0OiAgIEFUT01fQkxBTktJ TkcgPSAxLAoxNDQ3NDogICBBVE9NX0JMQU5LSU5HX09GRiA9IDAsCjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZW5hYmxlX2NydGNfcGFyYW1l dGVycwoxNDQ3NDogewoxNDQ3NDogICB1aW50OF90IGNydGNfaWQ7CjE0NDc0OiAgIHVpbnQ4X3Qg ZW5hYmxlOwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmdbMl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBlbmFibGVfZGlzcF9w b3dlcl9nYXRpbmdfcGFyYW1ldGVyc192Ml8xCjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQ4X3QgZGlz cF9waXBlX2lkOwoxNDQ3NDogICB1aW50OF90IGVuYWJsZTsKMTQ0NzQ6ICAgdWludDhfdCBwYWRk aW5nWzJdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGVuYWJsZV9kaXNwX3Bvd2Vy X2dhdGluZ19wc19hbGxvY2F0aW9uCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBlbmFibGVfZGlz cF9wb3dlcl9nYXRpbmdfcGFyYW1ldGVyc192Ml8xIHBhcmFtOwoxNDQ3NDogICB1aW50MzJfdCB1 bFJlc2VydmVkWzRdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IHNldF9jcnRjX3VzaW5nX2R0ZF90aW1pbmdfcGFyYW1ldGVycwoxNDQ3NDog ewoxNDQ3NDogICB1aW50MTZfdCBoX3NpemU7CjE0NDc0OiAgIHVpbnQxNl90IGhfYmxhbmtpbmdf dGltZTsKMTQ0NzQ6ICAgdWludDE2X3Qgdl9zaXplOwoxNDQ3NDogICB1aW50MTZfdCB2X2JsYW5r aW5nX3RpbWU7CjE0NDc0OiAgIHVpbnQxNl90IGhfc3luY29mZnNldDsKMTQ0NzQ6ICAgdWludDE2 X3QgaF9zeW5jd2lkdGg7CjE0NDc0OiAgIHVpbnQxNl90IHZfc3luY29mZnNldDsKMTQ0NzQ6ICAg dWludDE2X3Qgdl9zeW5jd2lkdGg7CjE0NDc0OiAgIHVpbnQxNl90IG1vZGVtaXNjaW5mbzsKMTQ0 NzQ6ICAgdWludDhfdCBoX2JvcmRlcjsKMTQ0NzQ6ICAgdWludDhfdCB2X2JvcmRlcjsKMTQ0NzQ6 ICAgdWludDhfdCBjcnRjX2lkOwoxNDQ3NDogICB1aW50OF90IGVuY29kZXJfbW9kZTsKMTQ0NzQ6 ICAgdWludDhfdCBwYWRkaW5nWzJdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHJvY2Vzc19pMmNfY2hhbm5lbF90cmFuc2Fj dGlvbl9wYXJhbWV0ZXJzCjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQ4X3QgaTJjc3BlZWRfa2h6Owox NDQ3NDogICB1bmlvbiB7CjE0NDc0OiAgICAgdWludDhfdCByZWdpbmRleDsKMTQ0NzQ6ICAgICB1 aW50OF90IHN0YXR1czsKMTQ0NzQ6ICAgfSByZWdpbmRfc3RhdHVzOwoxNDQ3NDogICB1aW50MTZf dCBpMmNfZGF0YV9vdXQ7CjE0NDc0OiAgIHVpbnQ4X3QgZmxhZzsKMTQ0NzQ6ICAgdWludDhfdCB0 cmFuc19ieXRlczsKMTQ0NzQ6ICAgdWludDhfdCBzbGF2ZV9hZGRyOwoxNDQ3NDogICB1aW50OF90 IGkyY19pZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3Byb2Nl c3NfaTJjX2ZsYWcKMTQ0NzQ6IHsKMTQ0NzQ6ICAgSFdfSTJDX1dSSVRFID0gMSwKMTQ0NzQ6ICAg SFdfSTJDX1JFQUQgPSAwLAoxNDQ3NDogICBJMkNfMkJZVEVfQUREUiA9IDB4MDIsCjE0NDc0OiAg IEhXX0kyQ19TTUJVU19CWVRFX1dSID0gMHgwNCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogZW51bSBhdG9tX3Byb2Nlc3NfaTJjX3N0YXR1cwoxNDQ3NDogewoxNDQ3NDogICBIV19B U1NJU1RFRF9JMkNfU1RBVFVTX0ZBSUxVUkUgPTIsCjE0NDc0OiAgIEhXX0FTU0lTVEVEX0kyQ19T VEFUVVNfU1VDQ0VTUyA9MSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHJvY2Vzc19hdXhfY2hhbm5lbF90cmFu c2FjdGlvbl9wYXJhbWV0ZXJzX3YxXzIKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDE2X3QgYXV4X3Jl cXVlc3Q7CjE0NDc0OiAgIHVpbnQxNl90IGRhdGFvdXQ7CjE0NDc0OiAgIHVpbnQ4X3QgY2hhbm5l bGlkOwoxNDQ3NDogICB1bmlvbiB7CjE0NDc0OiAgICAgdWludDhfdCByZXBseV9zdGF0dXM7CjE0 NDc0OiAgICAgdWludDhfdCBhdXhfZGVsYXk7CjE0NDc0OiAgIH0gYXV4X3N0YXR1c19kZWxheTsK MTQ0NzQ6ICAgdWludDhfdCBkYXRhb3V0X2xlbjsKMTQ0NzQ6ICAgdWludDhfdCBocGRfaWQ7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IHNlbGVjdF9jcnRjX3NvdXJjZV9wYXJhbWV0ZXJzX3YyXzMKMTQ0NzQ6IHsK MTQ0NzQ6ICAgdWludDhfdCBjcnRjX2lkOwoxNDQ3NDogICB1aW50OF90IGVuY29kZXJfaWQ7CjE0 NDc0OiAgIHVpbnQ4X3QgZW5jb2RlX21vZGU7CjE0NDc0OiAgIHVpbnQ4X3QgZHN0X2JwYzsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9kaWdfZW5jb2Rlcl9jb250cm9sX2FjdGlvbgoxNDQ3NDog ewoxNDQ3NDogICBBVE9NX0VOQ09ERVJfQ01EX0RJU0FCTEVfRElHID0gMCwKMTQ0NzQ6ICAgQVRP TV9FTkNPREVSX0NNRF9FTkFCTEVfRElHID0gMSwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NNRF9E UF9MSU5LX1RSQUlOSU5HX1NUQVJUID0gMHgwOCwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NNRF9E UF9MSU5LX1RSQUlOSU5HX1BBVFRFUk4xID0gMHgwOSwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NN RF9EUF9MSU5LX1RSQUlOSU5HX1BBVFRFUk4yID0gMHgwYSwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVS X0NNRF9EUF9MSU5LX1RSQUlOSU5HX1BBVFRFUk4zID0gMHgxMywKMTQ0NzQ6ICAgQVRPTV9FTkNP REVSX0NNRF9EUF9MSU5LX1RSQUlOSU5HX0NPTVBMRVRFID0gMHgwYiwKMTQ0NzQ6ICAgQVRPTV9F TkNPREVSX0NNRF9EUF9WSURFT19PRkYgPSAweDBjLAoxNDQ3NDogICBBVE9NX0VOQ09ERVJfQ01E X0RQX1ZJREVPX09OID0gMHgwZCwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NNRF9TRVRVUF9QQU5F TF9NT0RFID0gMHgxMCwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NNRF9EUF9MSU5LX1RSQUlOSU5H X1BBVFRFUk40ID0gMHgxNCwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NNRF9TVFJFQU1fU0VUVVAg PSAweDBGLAoxNDQ3NDogICBBVE9NX0VOQ09ERVJfQ01EX0xJTktfU0VUVVAgPSAweDExLAoxNDQ3 NDogICBBVE9NX0VOQ09ERVJfQ01EX0VOQ09ERVJfQkxBTksgPSAweDEyLAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fZGlnX2VuY29kZXJfY29udHJvbF9wYW5lbG1v ZGUKMTQ0NzQ6IHsKMTQ0NzQ6ICAgRFBfUEFORUxfTU9ERV9ESVNBQkxFID0gMHgwMCwKMTQ0NzQ6 ICAgRFBfUEFORUxfTU9ERV9FTkFCTEVfZURQX01PREUgPSAweDAxLAoxNDQ3NDogICBEUF9QQU5F TF9NT0RFX0VOQUJMRV9MVkxJTktfTU9ERSA9IDB4MTEsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGVudW0gYXRvbV9kaWdfZW5jb2Rlcl9jb250cm9sX3Y1X2RpZ2lkCjE0NDc0OiB7 CjE0NDc0OiAgIEFUT01fRU5DT0RFUl9DT05GSUdfVjVfRElHMF9FTkNPREVSID0gMHgwMCwKMTQ0 NzQ6ICAgQVRPTV9FTkNPREVSX0NPTkZJR19WNV9ESUcxX0VOQ09ERVIgPSAweDAxLAoxNDQ3NDog ICBBVE9NX0VOQ09ERVJfQ09ORklHX1Y1X0RJRzJfRU5DT0RFUiA9IDB4MDIsCjE0NDc0OiAgIEFU T01fRU5DT0RFUl9DT05GSUdfVjVfRElHM19FTkNPREVSID0gMHgwMywKMTQ0NzQ6ICAgQVRPTV9F TkNPREVSX0NPTkZJR19WNV9ESUc0X0VOQ09ERVIgPSAweDA0LAoxNDQ3NDogICBBVE9NX0VOQ09E RVJfQ09ORklHX1Y1X0RJRzVfRU5DT0RFUiA9IDB4MDUsCjE0NDc0OiAgIEFUT01fRU5DT0RFUl9D T05GSUdfVjVfRElHNl9FTkNPREVSID0gMHgwNiwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NPTkZJ R19WNV9ESUc3X0VOQ09ERVIgPSAweDA3LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGRpZ19lbmNvZGVyX3N0cmVhbV9zZXR1cF9wYXJhbWV0ZXJzX3YxXzUKMTQ0NzQ6IHsKMTQ0NzQ6 ICAgdWludDhfdCBkaWdpZDsKMTQ0NzQ6ICAgdWludDhfdCBhY3Rpb247CjE0NDc0OiAgIHVpbnQ4 X3QgZGlnbW9kZTsKMTQ0NzQ6ICAgdWludDhfdCBsYW5lbnVtOwoxNDQ3NDogICB1aW50MzJfdCBw Y2xrXzEwa2h6OwoxNDQ3NDogICB1aW50OF90IGJpdHBlcmNvbG9yOwoxNDQ3NDogICB1aW50OF90 IGRwbGlua3JhdGVfMjcwbWh6OwoxNDQ3NDogICB1aW50OF90IHJlc2VydmVkWzJdOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRpZ19lbmNvZGVyX2xpbmtfc2V0dXBfcGFyYW1ldGVy c192MV81CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQ4X3QgZGlnaWQ7CjE0NDc0OiAgIHVpbnQ4X3Qg YWN0aW9uOwoxNDQ3NDogICB1aW50OF90IGRpZ21vZGU7CjE0NDc0OiAgIHVpbnQ4X3QgbGFuZW51 bTsKMTQ0NzQ6ICAgdWludDhfdCBzeW1jbGtfMTBraHo7CjE0NDc0OiAgIHVpbnQ4X3QgaHBkX3Nl bDsKMTQ0NzQ6ICAgdWludDhfdCBkaWdmZV9zZWw7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWRb Ml07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHBfcGFuZWxfbW9kZV9zZXRfcGFy YW1ldGVyc192MV81CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQ4X3QgZGlnaWQ7CjE0NDc0OiAgIHVp bnQ4X3QgYWN0aW9uOwoxNDQ3NDogICB1aW50OF90IHBhbmVsbW9kZTsKMTQ0NzQ6ICAgdWludDhf dCByZXNlcnZlZDE7CjE0NDc0OiAgIHVpbnQzMl90IHJlc2VydmVkMlsyXTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkaWdfZW5jb2Rlcl9nZW5lcmljX2NtZF9wYXJhbWV0ZXJzX3Yx XzUKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDhfdCBkaWdpZDsKMTQ0NzQ6ICAgdWludDhfdCBhY3Rp b247CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQxWzJdOwoxNDQ3NDogICB1aW50MzJfdCByZXNl cnZlZDJbMl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkaWdfZW5jb2Rlcl9jb250 cm9sX3BhcmFtZXRlcnNfdjFfNQoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgZGlnX2VuY29kZXJf Z2VuZXJpY19jbWRfcGFyYW1ldGVyc192MV81IGNtZF9wYXJhbTsKMTQ0NzQ6ICAgc3RydWN0IGRp Z19lbmNvZGVyX3N0cmVhbV9zZXR1cF9wYXJhbWV0ZXJzX3YxXzUgc3RyZWFtX3BhcmFtOwoxNDQ3 NDogICBzdHJ1Y3QgZGlnX2VuY29kZXJfbGlua19zZXR1cF9wYXJhbWV0ZXJzX3YxXzUgbGlua19w YXJhbTsKMTQ0NzQ6ICAgc3RydWN0IGRwX3BhbmVsX21vZGVfc2V0X3BhcmFtZXRlcnNfdjFfNSBk cHBhbmVsX3BhcmFtOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkaWdfdHJhbnNtaXR0ZXJfY29udHJvbF9wYXJh bWV0ZXJzX3YxXzYKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDhfdCBwaHlpZDsKMTQ0NzQ6ICAgdWlu dDhfdCBhY3Rpb247CjE0NDc0OiAgIHVuaW9uIHsKMTQ0NzQ6ICAgICB1aW50OF90IGRpZ21vZGU7 CjE0NDc0OiAgICAgdWludDhfdCBkcGxhbmVzZXQ7CjE0NDc0OiAgIH0gbW9kZV9sYW5lc2V0Owox NDQ3NDogICB1aW50OF90IGxhbmVudW07CjE0NDc0OiAgIHVpbnQzMl90IHN5bWNsa18xMGtoejsK MTQ0NzQ6ICAgdWludDhfdCBocGRzZWw7CjE0NDc0OiAgIHVpbnQ4X3QgZGlnZmVfc2VsOwoxNDQ3 NDogICB1aW50OF90IGNvbm5vYmpfaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQ7CjE0NDc0 OiAgIHVpbnQzMl90IHJlc2VydmVkMTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBk aWdfdHJhbnNtaXR0ZXJfY29udHJvbF9wc19hbGxvY2F0aW9uX3YxXzYKMTQ0NzQ6IHsKMTQ0NzQ6 ICAgc3RydWN0IGRpZ190cmFuc21pdHRlcl9jb250cm9sX3BhcmFtZXRlcnNfdjFfNiBwYXJhbTsK MTQ0NzQ6ICAgdWludDMyX3QgcmVzZXJ2ZWRbNF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IGVudW0gYXRvbV9kaWdfdHJhbnNtaXR0ZXJfY29udHJvbF9hY3Rpb24KMTQ0NzQ6IHsK MTQ0NzQ6ICAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fRElTQUJMRSA9IDAsCjE0NDc0OiAgIEFU T01fVFJBTlNNSVRURVJfQUNUSU9OX0VOQUJMRSA9IDEsCjE0NDc0OiAgIEFUT01fVFJBTlNNSVRU RVJfQUNUSU9OX0xDRF9CTE9GRiA9IDIsCjE0NDc0OiAgIEFUT01fVFJBTlNNSVRURVJfQUNUSU9O X0xDRF9CTE9OID0gMywKMTQ0NzQ6ICAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fQkxfQlJJR0hU TkVTU19DT05UUk9MID0gNCwKMTQ0NzQ6ICAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fTENEX1NF TEZURVNUX1NUQVJUID0gNSwKMTQ0NzQ6ICAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fTENEX1NF TEZURVNUX1NUT1AgPSA2LAoxNDQ3NDogICBBVE9NX1RSQU5TTUlUVEVSX0FDVElPTl9JTklUID0g NywKMTQ0NzQ6ICAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fRElTQUJMRV9PVVRQVVQgPSA4LAox NDQ3NDogICBBVE9NX1RSQU5TTUlUVEVSX0FDVElPTl9FTkFCTEVfT1VUUFVUID0gOSwKMTQ0NzQ6 ICAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fU0VUVVAgPSAxMCwKMTQ0NzQ6ICAgQVRPTV9UUkFO U01JVFRFUl9BQ1RJT05fU0VUVVBfVlNFTVBIID0gMTEsCjE0NDc0OiAgIEFUT01fVFJBTlNNSVRU RVJfQUNUSU9OX1BPV0VSX09OID0gMTIsCjE0NDc0OiAgIEFUT01fVFJBTlNNSVRURVJfQUNUSU9O X1BPV0VSX09GRiA9IDEzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0 b21fZGlnX3RyYW5zbWl0dGVyX2NvbnRyb2xfZGlnZmVfc2VsCjE0NDc0OiB7CjE0NDc0OiAgIEFU T01fVFJBTk1TSVRURVJfVjZfX0RJR0FfU0VMID0gMHgwMSwKMTQ0NzQ6ICAgQVRPTV9UUkFOTVNJ VFRFUl9WNl9fRElHQl9TRUwgPSAweDAyLAoxNDQ3NDogICBBVE9NX1RSQU5NU0lUVEVSX1Y2X19E SUdDX1NFTCA9IDB4MDQsCjE0NDc0OiAgIEFUT01fVFJBTk1TSVRURVJfVjZfX0RJR0RfU0VMID0g MHgwOCwKMTQ0NzQ6ICAgQVRPTV9UUkFOTVNJVFRFUl9WNl9fRElHRV9TRUwgPSAweDEwLAoxNDQ3 NDogICBBVE9NX1RSQU5NU0lUVEVSX1Y2X19ESUdGX1NFTCA9IDB4MjAsCjE0NDc0OiAgIEFUT01f VFJBTk1TSVRURVJfVjZfX0RJR0dfU0VMID0gMHg0MCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fZGlnX3RyYW5zbWl0dGVyX2NvbnRyb2xfaHBkX3Nl bAoxNDQ3NDogewoxNDQ3NDogICBBVE9NX1RSQU5TTUlUVEVSX1Y2X05PX0hQRF9TRUwgPSAweDAw LAoxNDQ3NDogICBBVE9NX1RSQU5TTUlUVEVSX1Y2X0hQRDFfU0VMID0gMHgwMSwKMTQ0NzQ6ICAg QVRPTV9UUkFOU01JVFRFUl9WNl9IUEQyX1NFTCA9IDB4MDIsCjE0NDc0OiAgIEFUT01fVFJBTlNN SVRURVJfVjZfSFBEM19TRUwgPSAweDAzLAoxNDQ3NDogICBBVE9NX1RSQU5TTUlUVEVSX1Y2X0hQ RDRfU0VMID0gMHgwNCwKMTQ0NzQ6ICAgQVRPTV9UUkFOU01JVFRFUl9WNl9IUEQ1X1NFTCA9IDB4 MDUsCjE0NDc0OiAgIEFUT01fVFJBTlNNSVRURVJfVjZfSFBENl9TRUwgPSAweDA2LAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fZGlnX3RyYW5zbWl0dGVyX2NvbnRy b2xfZHBsYW5lc2V0CjE0NDc0OiB7CjE0NDc0OiAgIERQX0xBTkVfU0VUX18wREJfMF80ViA9IDB4 MDAsCjE0NDc0OiAgIERQX0xBTkVfU0VUX18wREJfMF82ViA9IDB4MDEsCjE0NDc0OiAgIERQX0xB TkVfU0VUX18wREJfMF84ViA9IDB4MDIsCjE0NDc0OiAgIERQX0xBTkVfU0VUX18wREJfMV8yViA9 IDB4MDMsCjE0NDc0OiAgIERQX0xBTkVfU0VUX18zXzVEQl8wXzRWID0gMHgwOCwKMTQ0NzQ6ICAg RFBfTEFORV9TRVRfXzNfNURCXzBfNlYgPSAweDA5LAoxNDQ3NDogICBEUF9MQU5FX1NFVF9fM181 REJfMF84ViA9IDB4MGEsCjE0NDc0OiAgIERQX0xBTkVfU0VUX182REJfMF80ViA9IDB4MTAsCjE0 NDc0OiAgIERQX0xBTkVfU0VUX182REJfMF82ViA9IDB4MTEsCjE0NDc0OiAgIERQX0xBTkVfU0VU X185XzVEQl8wXzRWID0gMHgxOCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBleHRlcm5hbF9lbmNv ZGVyX2NvbnRyb2xfcGFyYW1ldGVyc192Ml80CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQxNl90IHBp eGVsY2xvY2tfMTBraHo7CjE0NDc0OiAgIHVpbnQ4X3QgY29uZmlnOwoxNDQ3NDogICB1aW50OF90 IGFjdGlvbjsKMTQ0NzQ6ICAgdWludDhfdCBlbmNvZGVybW9kZTsKMTQ0NzQ6ICAgdWludDhfdCBs YW5lbnVtOwoxNDQ3NDogICB1aW50OF90IGJpdHBlcmNvbG9yOwoxNDQ3NDogICB1aW50OF90IGhw ZF9pZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGV4dGVy bmFsX2VuY29kZXJfY29udHJvbF9hY3Rpb25fZGVmCjE0NDc0OiB7CjE0NDc0OiAgIEVYVEVSTkFM X0VOQ09ERVJfQUNUSU9OX1YzX0RJU0FCTEVfT1VUUFVUID0gMHgwMCwKMTQ0NzQ6ICAgRVhURVJO QUxfRU5DT0RFUl9BQ1RJT05fVjNfRU5BQkxFX09VVFBVVCA9IDB4MDEsCjE0NDc0OiAgIEVYVEVS TkFMX0VOQ09ERVJfQUNUSU9OX1YzX0VOQ09ERVJfSU5JVCA9IDB4MDcsCjE0NDc0OiAgIEVYVEVS TkFMX0VOQ09ERVJfQUNUSU9OX1YzX0VOQ09ERVJfU0VUVVAgPSAweDBmLAoxNDQ3NDogICBFWFRF Uk5BTF9FTkNPREVSX0FDVElPTl9WM19FTkNPREVSX0JMQU5LSU5HX09GRiA9IDB4MTAsCjE0NDc0 OiAgIEVYVEVSTkFMX0VOQ09ERVJfQUNUSU9OX1YzX0VOQ09ERVJfQkxBTktJTkcgPSAweDExLAox NDQ3NDogICBFWFRFUk5BTF9FTkNPREVSX0FDVElPTl9WM19EQUNMT0FEX0RFVEVDVElPTiA9IDB4 MTIsCjE0NDc0OiAgIEVYVEVSTkFMX0VOQ09ERVJfQUNUSU9OX1YzX0REQ19TRVRVUCA9IDB4MTQs CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZXh0ZXJuYWxfZW5jb2Rlcl9j b250cm9sX3YyXzRfY29uZmlnX2RlZgoxNDQ3NDogewoxNDQ3NDogICBFWFRFUk5BTF9FTkNPREVS X0NPTkZJR19WM19EUExJTktSQVRFX01BU0sgPSAweDAzLAoxNDQ3NDogICBFWFRFUk5BTF9FTkNP REVSX0NPTkZJR19WM19EUExJTktSQVRFXzFfNjJHSFogPSAweDAwLAoxNDQ3NDogICBFWFRFUk5B TF9FTkNPREVSX0NPTkZJR19WM19EUExJTktSQVRFXzJfNzBHSFogPSAweDAxLAoxNDQ3NDogICBF WFRFUk5BTF9FTkNPREVSX0NPTkZJR19WM19EUExJTktSQVRFXzVfNDBHSFogPSAweDAyLAoxNDQ3 NDogICBFWFRFUk5BTF9FTkNPREVSX0NPTkZJR19WM19EUExJTktSQVRFXzNfMjRHSFogPSAweDAz LAoxNDQ3NDogICBFWFRFUk5BTF9FTkNPREVSX0NPTkZJR19WM19FTkNPREVSX1NFTF9NQUtTID0g MHg3MCwKMTQ0NzQ6ICAgRVhURVJOQUxfRU5DT0RFUl9DT05GSUdfVjNfRU5DT0RFUjEgPSAweDAw LAoxNDQ3NDogICBFWFRFUk5BTF9FTkNPREVSX0NPTkZJR19WM19FTkNPREVSMiA9IDB4MTAsCjE0 NDc0OiAgIEVYVEVSTkFMX0VOQ09ERVJfQ09ORklHX1YzX0VOQ09ERVIzID0gMHgyMCwKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBleHRlcm5hbF9lbmNvZGVyX2NvbnRyb2xfcHNfYWxs b2NhdGlvbl92Ml80CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBleHRlcm5hbF9lbmNvZGVyX2Nv bnRyb2xfcGFyYW1ldGVyc192Ml80IHNFeHRFbmNvZGVyOwoxNDQ3NDogICB1aW50MzJfdCByZXNl cnZlZFsyXTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDMxMzcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKMTQ0NzQ6IHN0cnVjdCBhbWRfYWNwaV9k ZXNjcmlwdGlvbl9oZWFkZXJ7CjE0NDc0OiAgIHVpbnQzMl90IHNpZ25hdHVyZTsKMTQ0NzQ6ICAg dWludDMyX3QgdGFibGVMZW5ndGg7CjE0NDc0OiAgIHVpbnQ4X3QgcmV2aXNpb247CjE0NDc0OiAg IHVpbnQ4X3QgY2hlY2tzdW07CjE0NDc0OiAgIHVpbnQ4X3Qgb2VtSWRbNl07CjE0NDc0OiAgIHVp bnQ4X3Qgb2VtVGFibGVJZFs4XTsKMTQ0NzQ6ICAgdWludDMyX3Qgb2VtUmV2aXNpb247CjE0NDc0 OiAgIHVpbnQzMl90IGNyZWF0b3JJZDsKMTQ0NzQ6ICAgdWludDMyX3QgY3JlYXRvclJldmlzaW9u OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHVlZmlfYWNwaV92ZmN0ewoxNDQ3NDog ICBzdHJ1Y3QgYW1kX2FjcGlfZGVzY3JpcHRpb25faGVhZGVyIHNoZWFkZXI7CjE0NDc0OiAgIHVp bnQ4X3QgdGFibGVVVUlEWzE2XTsKMTQ0NzQ6ICAgdWludDMyX3QgdmJpb3NpbWFnZW9mZnNldDsK MTQ0NzQ6ICAgdWludDMyX3QgbGliMUltYWdlb2Zmc2V0OwoxNDQ3NDogICB1aW50MzJfdCByZXNl cnZlZFs0XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB2ZmN0X2ltYWdlX2hlYWRl cnsKMTQ0NzQ6ICAgdWludDMyX3QgcGNpYnVzOwoxNDQ3NDogICB1aW50MzJfdCBwY2lkZXZpY2U7 CjE0NDc0OiAgIHVpbnQzMl90IHBjaWZ1bmN0aW9uOwoxNDQ3NDogICB1aW50MTZfdCB2ZW5kb3Jp ZDsKMTQ0NzQ6ICAgdWludDE2X3QgZGV2aWNlaWQ7CjE0NDc0OiAgIHVpbnQxNl90IHNzdmlkOwox NDQ3NDogICB1aW50MTZfdCBzc2lkOwoxNDQ3NDogICB1aW50MzJfdCByZXZpc2lvbjsKMTQ0NzQ6 ICAgdWludDMyX3QgaW1hZ2VsZW5ndGg7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBnb3BfdmJpb3NfY29udGVudCB7CjE0NDc0OiAgIHN0cnVjdCB2ZmN0X2ltYWdlX2hl YWRlciB2Ymlvc2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCB2Ymlvc2NvbnRlbnRbMV07CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZ29wX2xpYjFfY29udGVudCB7CjE0NDc0OiAgIHN0 cnVjdCB2ZmN0X2ltYWdlX2hlYWRlciBsaWIxaGVhZGVyOwoxNDQ3NDogICB1aW50OF90IGxpYjFj b250ZW50WzFdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzE5MCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgoxNDQ3NDogZW51bSBzY3JhdGNoX3Jl Z2lzdGVyX2RlZnsKMTQ0NzQ6ICAgQVRPTV9ERVZJQ0VfQ09OTkVDVF9JTkZPX0RFRiA9IDAsCjE0 NDc0OiAgIEFUT01fQkxfQlJJX0xFVkVMX0lORk9fREVGID0gMiwKMTQ0NzQ6ICAgQVRPTV9BQ1RJ VkVfSU5GT19ERUYgPSAzLAoxNDQ3NDogICBBVE9NX0xDRF9JTkZPX0RFRiA9IDQsCjE0NDc0OiAg IEFUT01fREVWSUNFX1JFUV9JTkZPX0RFRiA9IDUsCjE0NDc0OiAgIEFUT01fQUNDX0NIQU5HRV9J TkZPX0RFRiA9IDYsCjE0NDc0OiAgIEFUT01fUFJFX09TX01PREVfSU5GT19ERUYgPSA3LAoxNDQ3 NDogICBBVE9NX1BSRV9PU19BU1NFUlRJT05fREVGID0gOCwKMTQ0NzQ6ICAgQVRPTV9JTlRFUk5B TF9USU1FUl9JTkZPX0RFRiA9IDEwLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBzY3Jh dGNoX2RldmljZV9jb25uZWN0X2luZm9fYml0X2RlZnsKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0xD RDFfQ09OTkVDVCA9MHgwMDAyLAoxNDQ3NDogICBBVE9NX0RJU1BMQVlfREZQMV9DT05ORUNUID0w eDAwMDgsCjE0NDc0OiAgIEFUT01fRElTUExBWV9ERlAyX0NPTk5FQ1QgPTB4MDA4MCwKMTQ0NzQ6 ICAgQVRPTV9ESVNQTEFZX0RGUDNfQ09OTkVDVCA9MHgwMjAwLAoxNDQ3NDogICBBVE9NX0RJU1BM QVlfREZQNF9DT05ORUNUID0weDA0MDAsCjE0NDc0OiAgIEFUT01fRElTUExBWV9ERlA1X0NPTk5F Q1QgPTB4MDgwMCwKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDZfQ09OTkVDVCA9MHgwMDQwLAox NDQ3NDogICBBVE9NX0RJU1BMQVlfREZQeF9DT05ORUNUID0weDBlYzgsCjE0NDc0OiAgIEFUT01f Q09OTkVDVF9JTkZPX0RFVklDRV9NQVNLID0weDBmZmYsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBlbnVtIHNjcmF0Y2hfYmxfYnJpX2xldmVsX2luZm9fYml0X2RlZnsKMTQ0NzQ6ICAgQVRPTV9D VVJSRU5UX0JMX0xFVkVMX1NISUZUID0weDgsCjE0NDc0OiAKMTQ0NzQ6ICAgQVRPTV9DVVJSRU5U X0JMX0xFVkVMX01BU0sgPTB4MDAwMGZmMDAsCjE0NDc0OiAgIEFUT01fREVWSUNFX0RQTVNfU1RB VEUgPTB4MDAwMTAwMDAsCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gc2Ny YXRjaF9hY3RpdmVfaW5mb19iaXRzX2RlZnsKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0xDRDFfQUNU SVZFID0weDAwMDIsCjE0NDc0OiAgIEFUT01fRElTUExBWV9ERlAxX0FDVElWRSA9MHgwMDA4LAox NDQ3NDogICBBVE9NX0RJU1BMQVlfREZQMl9BQ1RJVkUgPTB4MDA4MCwKMTQ0NzQ6ICAgQVRPTV9E SVNQTEFZX0RGUDNfQUNUSVZFID0weDAyMDAsCjE0NDc0OiAgIEFUT01fRElTUExBWV9ERlA0X0FD VElWRSA9MHgwNDAwLAoxNDQ3NDogICBBVE9NX0RJU1BMQVlfREZQNV9BQ1RJVkUgPTB4MDgwMCwK MTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDZfQUNUSVZFID0weDAwNDAsCjE0NDc0OiAgIEFUT01f QUNUSVZFX0lORk9fREVWSUNFX01BU0sgPTB4MGZmZiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGVudW0gc2NyYXRjaF9kZXZpY2VfcmVxX2luZm9fYml0c19kZWZ7CjE0NDc0OiAgIEFUT01fRElT UExBWV9MQ0QxX1JFUSA9MHgwMDAyLAoxNDQ3NDogICBBVE9NX0RJU1BMQVlfREZQMV9SRVEgPTB4 MDAwOCwKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDJfUkVRID0weDAwODAsCjE0NDc0OiAgIEFU T01fRElTUExBWV9ERlAzX1JFUSA9MHgwMjAwLAoxNDQ3NDogICBBVE9NX0RJU1BMQVlfREZQNF9S RVEgPTB4MDQwMCwKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDVfUkVRID0weDA4MDAsCjE0NDc0 OiAgIEFUT01fRElTUExBWV9ERlA2X1JFUSA9MHgwMDQwLAoxNDQ3NDogICBBVE9NX1JFUV9JTkZP X0RFVklDRV9NQVNLID0weDBmZmYsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHNjcmF0 Y2hfYWNjX2NoYW5nZV9pbmZvX2JpdHNoaWZ0X2RlZnsKMTQ0NzQ6ICAgQVRPTV9BQ0NfQ0hBTkdF X0FDQ19NT0RFX1NISUZUID00LAoxNDQ3NDogICBBVE9NX0FDQ19DSEFOR0VfTElEX1NUQVRVU19T SElGVCA9NiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gc2NyYXRjaF9hY2NfY2hhbmdl X2luZm9fYml0c19kZWZ7CjE0NDc0OiAgIEFUT01fQUNDX0NIQU5HRV9BQ0NfTU9ERSA9MHgwMDAw MDAxMCwKMTQ0NzQ6ICAgQVRPTV9BQ0NfQ0hBTkdFX0xJRF9TVEFUVVMgPTB4MDAwMDAwNDAsCjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHNjcmF0Y2hfcHJlX29zX21vZGVfaW5mb19iaXRz X2RlZnsKMTQ0NzQ6ICAgQVRPTV9QUkVfT1NfTU9ERV9NQVNLID0weDAwMDAwMDAzLAoxNDQ3NDog ICBBVE9NX1BSRV9PU19NT0RFX1ZHQSA9MHgwMDAwMDAwMCwKMTQ0NzQ6ICAgQVRPTV9QUkVfT1Nf TU9ERV9WRVNBID0weDAwMDAwMDAxLAoxNDQ3NDogICBBVE9NX1BSRV9PU19NT0RFX0dPUCA9MHgw MDAwMDAwMiwKMTQ0NzQ6ICAgQVRPTV9QUkVfT1NfTU9ERV9QSVhFTF9ERVBUSCA9MHgwMDAwMDAw QywKMTQ0NzQ6ICAgQVRPTV9QUkVfT1NfTU9ERV9QSVhFTF9GT1JNQVRfTUFTSz0weDAwMDAwMEYw LAoxNDQ3NDogICBBVE9NX1BSRV9PU19NT0RFXzhCSVRfUEFMX0VOID0weDAwMDAwMTAwLAoxNDQ3 NDogICBBVE9NX0FTSUNfSU5JVF9DT01QTEVURSA9MHgwMDAwMDIwMCwKMTQ0NzQ6IAoxNDQ3NDog ICBBVE9NX1BSRV9PU19NT0RFX05VTUJFUl9NQVNLID0weEZGRkYwMDAwLAoxNDQ3NDogCjE0NDc0 OiB9OwoxNDQ3NDogIyAzMjc2ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1 ZGUvYXRvbWZpcm13YXJlLmgiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmVpZC5oIiAxCjE0NDc0OiAjIDMxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlaWQuaCIKMTQ0NzQ6IGVu dW0gYXRvbV9tYXN0ZXJfZGF0YV90YWJsZV9pZAoxNDQ3NDogewoxNDQ3NDogICAgIFZCSU9TX0RB VEFfVEJMX0lEX19VVElMSVRZX1BJUEVMSU5FLAoxNDQ3NDogICAgIFZCSU9TX0RBVEFfVEJMX0lE X19NVUxUSU1FRElBX0lORiwKMTQ0NzQ6ICAgICBWQklPU19EQVRBX1RCTF9JRF9fRklSTVdBUkVf SU5GLAoxNDQ3NDogICAgIFZCSU9TX0RBVEFfVEJMX0lEX19MQ0RfSU5GLAoxNDQ3NDogICAgIFZC SU9TX0RBVEFfVEJMX0lEX19TTVVfSU5GLAoxNDQ3NDogICAgIFZCSU9TX0RBVEFfVEJMX0lEX19W UkFNX1VTQUdFX0JZX0ZJUk1XQVJFLAoxNDQ3NDogICAgIFZCSU9TX0RBVEFfVEJMX0lEX19HUElP X1BJTl9MVVQsCjE0NDc0OiAgICAgVkJJT1NfREFUQV9UQkxfSURfX0dGWF9JTkYsCjE0NDc0OiAg ICAgVkJJT1NfREFUQV9UQkxfSURfX1BPV0VSX1BMQVlfSU5GLAoxNDQ3NDogICAgIFZCSU9TX0RB VEFfVEJMX0lEX19ESVNQTEFZX09CSkVDVF9JTkYsCjE0NDc0OiAgICAgVkJJT1NfREFUQV9UQkxf SURfX0lORElSRUNUX0lPX0FDQ0VTUywKMTQ0NzQ6ICAgICBWQklPU19EQVRBX1RCTF9JRF9fVU1D X0lORiwKMTQ0NzQ6ICAgICBWQklPU19EQVRBX1RCTF9JRF9fRENFX0lORiwKMTQ0NzQ6ICAgICBW QklPU19EQVRBX1RCTF9JRF9fVlJBTV9JTkYsCjE0NDc0OiAgICAgVkJJT1NfREFUQV9UQkxfSURf X0lOVEVHUkFURURfU1lTX0lORiwKMTQ0NzQ6ICAgICBWQklPU19EQVRBX1RCTF9JRF9fQVNJQ19Q Uk9GSUxJTkdfSU5GLAoxNDQ3NDogICAgIFZCSU9TX0RBVEFfVEJMX0lEX19WT0xUQUdFX09CSl9J TkYsCjE0NDc0OiAKMTQ0NzQ6ICAgICBWQklPU19EQVRBX1RCTF9JRF9fVU5ERUZJTkVELAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX21hc3Rlcl9jb21tYW5kX3RhYmxlX2lkCjE0 NDc0OiB7CjE0NDc0OiAgICAgVkJJT1NfQ01EX1RCTF9JRF9fQVNJQ19JTklULAoxNDQ3NDogICAg IFZCSU9TX0NNRF9UQkxfSURfX0RJR1hfRU5DT0RFUl9DT05UUk9MLAoxNDQ3NDogICAgIFZCSU9T X0NNRF9UQkxfSURfX1NFVF9FTkdJTkVfQ0xPQ0ssCjE0NDc0OiAgICAgVkJJT1NfQ01EX1RCTF9J RF9fU0VUX01FTU9SWV9DTE9DSywKMTQ0NzQ6ICAgICBWQklPU19DTURfVEJMX0lEX19TRVRfUElY RUxfQ0xPQ0ssCjE0NDc0OiAgICAgVkJJT1NfQ01EX1RCTF9JRF9fRU5BQkxFX0RJU1BfUE9XRVJf R0FUSU5HLAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX0JMQU5LX0NSVEMsCjE0NDc0OiAg ICAgVkJJT1NfQ01EX1RCTF9JRF9fRU5BQkxFX0NSVEMsCjE0NDc0OiAgICAgVkJJT1NfQ01EX1RC TF9JRF9fR0VUX1NNVV9DTE9DS19JTkZPLAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX1NF TEVDVF9DUlRDX1NPVVJDRSwKMTQ0NzQ6ICAgICBWQklPU19DTURfVEJMX0lEX19TRVRfRENFX0NM T0NLLAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX0dFVF9NRU1PUllfQ0xPQ0ssCjE0NDc0 OiAgICAgVkJJT1NfQ01EX1RCTF9JRF9fR0VUX0VOR0lORV9DTE9DSywKMTQ0NzQ6ICAgICBWQklP U19DTURfVEJMX0lEX19TRVRfQ1JUQ19VU0lOR19EVERfVElNSU5HLAoxNDQ3NDogICAgIFZCSU9T X0NNRF9UQkxfSURfX0VYVEVOQUxfRU5DT0RFUl9DT05UUk9MLAoxNDQ3NDogICAgIFZCSU9TX0NN RF9UQkxfSURfX1BST0NFU1NfSTJDX0NIQU5ORUxfVFJBTlNBQ1RJT04sCjE0NDc0OiAgICAgVkJJ T1NfQ01EX1RCTF9JRF9fQ09NUFVURV9HUFVfQ0xPQ0tfUEFSQU0sCjE0NDc0OiAgICAgVkJJT1Nf Q01EX1RCTF9JRF9fRFlOQU1JQ19NRU1PUllfU0VUVElOR1MsCjE0NDc0OiAgICAgVkJJT1NfQ01E X1RCTF9JRF9fTUVNT1JZX1RSQUlOSU5HLAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX1NF VF9WT0xUQUdFLAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX0RJRzFfVFJBTlNNSVRURVJf Q09OVFJPTCwKMTQ0NzQ6ICAgICBWQklPU19DTURfVEJMX0lEX19QUk9DRVNTX0FVWF9DSEFOTkVM X1RSQU5TQUNUSU9OLAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX0dFVF9WT0xUQUdFX0lO RiwKMTQ0NzQ6IAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX1VOREVGSU5FRCwKMTQ0NzQ6 IH07CjE0NDc0OiAjIDMyNzcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVk ZS9hdG9tZmlybXdhcmUuaCIgMgoxNDQ3NDogI3ByYWdtYSBwYWNrKCkKMTQ0NzQ6ICMgNDEgImRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9j bGtfbWdyLmMiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9p bmNsdWRlL2FzaWNfcmVnL2Nsay9jbGtfMTBfMF8yX29mZnNldC5oIiAxCjE0NDc0OiAjIDQyICJk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5f Y2xrX21nci5jIiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v aW5jbHVkZS9hc2ljX3JlZy9jbGsvY2xrXzEwXzBfMl9zaF9tYXNrLmgiIDEKMTQ0NzQ6ICMgNDMg ImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9y bl9jbGtfbWdyLmMiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9pbmNsdWRlL3Jlbm9pcl9pcF9vZmZzZXQuaCIgMQoxNDQ3NDogIyAyOCAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL3Jlbm9pcl9pcF9vZmZzZXQuaCIKMTQ0NzQ6IHN0 cnVjdCBJUF9CQVNFX0lOU1RBTkNFCjE0NDc0OiB7CjE0NDc0OiAgICAgdW5zaWduZWQgaW50IHNl Z21lbnRbNV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgSVBfQkFTRQoxNDQ3NDog ewoxNDQ3NDogICAgIHN0cnVjdCBJUF9CQVNFX0lOU1RBTkNFIGluc3RhbmNlWzddOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgQUNQ X0JBU0UgPXsgeyB7IHsgMHgwMjQwMzgwMCwgMHgwMDQ4MDAwMCwgMCwgMCwgMCB9IH0sCjE0NDc0 OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAs IDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg eyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0g fSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0gfSB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIEFU SFVCX0JBU0UgPXsgeyB7IHsgMHgwMDAwMEMyMCwgMHgwMjQwOEMwMCwgMCwgMCwgMCB9IH0sCjE0 NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAs IDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAw IH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsg MCwgMCwgMCwgMCwgMCB9IH0gfSB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNF IENMS19CQVNFID17IHsgeyB7IDB4MDAwMTZDMDAsIDB4MDAwMTZFMDAsIDB4MDAwMTcwMDAsIDB4 MDAwMTdFMDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAox NDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAw LCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBj b25zdCBzdHJ1Y3QgSVBfQkFTRSBEQkdVX0lPMF9CQVNFID17IHsgeyB7IDB4MDAwMDAxRTAsIDB4 MDI0MEI0MDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAw LCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0 YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBERl9CQVNFID17IHsgeyB7IDB4MDAwMDcwMDAsIDB4 MDI0MEI4MDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAw LCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0 YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBESU9fQkFTRSA9eyB7IHsgeyAweDAyNDA0MDAwLCAw LCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0OiBzdGF0aWMgY29u c3Qgc3RydWN0IElQX0JBU0UgRE1VX0JBU0UgPXsgeyB7IHsgMHgwMDAwMDAxMiwgMHgwMDAwMDBD MCwgMHgwMDAwMzRDMCwgMHgwMDAwOTAwMCwgMHgwMjQwM0MwMCB9IH0sCjE0NDc0OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAox NDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAw LCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwg MCB9IH0gfSB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIERQQ1NfQkFTRSA9 eyB7IHsgeyAweDAwMDAwMDEyLCAweDAwMDAwMEMwLCAweDAwMDAzNEMwLCAweDAwMDA5MDAwLCAw eDAyNDAzQzAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0OiBzdGF0aWMgY29u c3Qgc3RydWN0IElQX0JBU0UgRlVTRV9CQVNFID17IHsgeyB7IDB4MDAwMTc0MDAsIDB4MDI0MDE0 MDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAox NDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAw LCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBj b25zdCBzdHJ1Y3QgSVBfQkFTRSBHQ19CQVNFID17IHsgeyB7IDB4MDAwMDIwMDAsIDB4MDAwMEEw MDAsIDB4MDI0MDJDMDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0 OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAs IDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg eyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6 IHN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBIREFfQkFTRSA9eyB7IHsgeyAweDAyNDA0ODAw LCAweDAwNEMwMDAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3 NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAw LCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0 OiBzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgSERQX0JBU0UgPXsgeyB7IHsgMHgwMDAwMEYy MCwgMHgwMjQwQTQwMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwoxNDQ3 NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIElPSEMwX0JBU0UgPXsgeyB7IHsgMHgwMDAx MDAwMCwgMHgwMjQwNjAwMCwgMHgwNEVDMDAwMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3 NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAw LCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9 IH0gfSB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIElTUF9CQVNFID17IHsg eyB7IDB4MDAwMTgwMDAsIDB4MDI0MEIwMDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBMMklNVTBfQkFTRSA9 eyB7IHsgeyAweDAwMDA3REMwLCAweDAyNDA3MDAwLCAweDAwOTAwMDAwLCAweDA0RkMwMDAwLCAw eDA1NUMwMDAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0OiBzdGF0aWMgY29u c3Qgc3RydWN0IElQX0JBU0UgTU1IVUJfQkFTRSA9eyB7IHsgeyAweDAwMDFBMDAwLCAweDAyNDA4 ODAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwK MTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwg MCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0OiBzdGF0aWMg Y29uc3Qgc3RydWN0IElQX0JBU0UgTVAwX0JBU0UgPXsgeyB7IHsgMHgwMDAxNjAwMCwgMHgwMjQz RkMwMCwgMHgwMERDMDAwMCwgMHgwMEUwMDAwMCwgMHgwMEU0MDAwMCB9IH0sCjE0NDc0OiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9 LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAw LCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0gfSB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIE1QMV9CQVNF ID17IHsgeyB7IDB4MDAwMTYwMDAsIDB4MDI0MDA0MDAsIDB4MDBFODAwMDAsIDB4MDBFQzAwMDAs IDB4MDBGMDAwMDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAox NDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAw LCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBj b25zdCBzdHJ1Y3QgSVBfQkFTRSBOQklGMF9CQVNFID17IHsgeyB7IDB4MDAwMDAwMDAsIDB4MDAw MDAwMTQsIDB4MDAwMDBEMjAsIDB4MDAwMTA0MDAsIDB4MDI0MUIwMDAgfSB9LAoxNDQ3NDogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0g fSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0 NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAs IDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBEQ05fQkFT RSA9eyB7IHsgeyAweDAwMDAwMDEyLCAweDAwMDAwMEMwLCAweDAwMDAzNEMwLCAwLCAwIH0gfSwK MTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwg MCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9Owox NDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIE9TU1NZU19CQVNFID17IHsgeyB7IDB4 MDAwMDEwQTAsIDB4MDI0MEEwMDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9 IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAs IDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0g fTsKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBQQ0lFMF9CQVNFID17IHsgeyB7 IDB4MDI0MTE4MDAsIDB4MDQ0NDAwMDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwg MCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7 IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9 IH0gfTsKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBTRE1BMF9CQVNFID17IHsg eyB7IDB4MDAwMDEyNjAsIDB4MDI0MEE4MDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBTTVVJT19CQVNFID17 IHsgeyB7IDB4MDAwMTY4MDAsIDB4MDAwMTZBMDAsIDB4MDI0MDEwMDAsIDB4MDA0NDAwMDAsIDAg fSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAw LCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwK MTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwg MCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3Qg SVBfQkFTRSBUSE1fQkFTRSA9eyB7IHsgeyAweDAwMDE2NjAwLCAweDAyNDAwQzAwLCAwLCAwLCAw IH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsg MCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0s CjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAs IDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0OiBzdGF0aWMgY29uc3Qgc3RydWN0 IElQX0JBU0UgVU1DX0JBU0UgPXsgeyB7IHsgMHgwMDAxNDAwMCwgMHgwMjQyNTgwMCwgMCwgMCwg MCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7 IDB4MDAwNTQwMDAsIDB4MDI0MjVDMDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwg MCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7 IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwoxNDQ3NDog c3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIFVTQjBfQkFTRSA9eyB7IHsgeyAweDAyNDJBODAw LCAweDA1QjAwMDAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3 NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAw LCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0 OiBzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgVVZEMF9CQVNFID17IHsgeyB7IDB4MDAwMDc4 MDAsIDB4MDAwMDdFMDAsIDB4MDI0MDMwMDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwg MCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7 IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9 IH0gfTsKMTQ0NzQ6ICMgNDQgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKMTQ0NzQ6ICMgNTcgImRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmMi CjE0NDc0OiBpbnQgcm5fZ2V0X2FjdGl2ZV9kaXNwbGF5X2NudF93YSgKMTQ0NzQ6ICAgc3RydWN0 IGRjICpkYywKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KQoxNDQ3NDogewoxNDQ3 NDogIGludCBpLCBkaXNwbGF5X2NvdW50OwoxNDQ3NDogIGJvb2wgdG1kc19wcmVzZW50ID0gZmFs c2U7CjE0NDc0OiAKMTQ0NzQ6ICBkaXNwbGF5X2NvdW50ID0gMDsKMTQ0NzQ6ICBmb3IgKGkgPSAw OyBpIDwgY29udGV4dC0+c3RyZWFtX2NvdW50OyBpKyspIHsKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0 IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtID0gY29udGV4dC0+c3RyZWFtc1tpXTsKMTQ0NzQ6IAox NDQ3NDogICBpZiAoc3RyZWFtLT5zaWduYWwgPT0gU0lHTkFMX1RZUEVfSERNSV9UWVBFX0EgfHwK MTQ0NzQ6ICAgICBzdHJlYW0tPnNpZ25hbCA9PSBTSUdOQUxfVFlQRV9EVklfU0lOR0xFX0xJTksg fHwKMTQ0NzQ6ICAgICBzdHJlYW0tPnNpZ25hbCA9PSBTSUdOQUxfVFlQRV9EVklfRFVBTF9MSU5L KQoxNDQ3NDogICAgdG1kc19wcmVzZW50ID0gdHJ1ZTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6 ICBmb3IgKGkgPSAwOyBpIDwgZGMtPmxpbmtfY291bnQ7IGkrKykgewoxNDQ3NDogICBjb25zdCBz dHJ1Y3QgZGNfbGluayAqbGluayA9IGRjLT5saW5rc1tpXTsKMTQ0NzQ6ICMgODQgImRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdy LmMiCjE0NDc0OiAgIGlmIChsaW5rLT5jb25uZWN0b3Jfc2lnbmFsID09IFNJR05BTF9UWVBFX1ZJ UlRVQUwgfHwKMTQ0NzQ6ICAgICBsaW5rLT5saW5rX2VuYy0+ZnVuY3MtPmlzX2RpZ19lbmFibGVk KGxpbmstPmxpbmtfZW5jKSkKMTQ0NzQ6ICAgIGRpc3BsYXlfY291bnQrKzsKMTQ0NzQ6ICB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGlmIChkaXNwbGF5X2NvdW50ID09IDAgJiYgdG1kc19wcmVz ZW50KQoxNDQ3NDogICBkaXNwbGF5X2NvdW50ID0gMTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBk aXNwbGF5X2NvdW50OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB2b2lkIHJuX3VwZGF0ZV9jbG9j a3Moc3RydWN0IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSwKMTQ0NzQ6ICAgIHN0cnVjdCBkY19zdGF0 ZSAqY29udGV4dCwKMTQ0NzQ6ICAgIGJvb2wgc2FmZV90b19sb3dlcikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciA9ICh7IHZvaWQgKl9fbXB0ciA9ICh2 b2lkICopKGNsa19tZ3JfYmFzZSk7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3Nl cnRfMTAwKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygicG9pbnRlciB0eXBlIG1pc21h dGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISghX19idWlsdGluX3R5cGVzX2NvbXBh dGlibGVfcCh0eXBlb2YoKihjbGtfbWdyX2Jhc2UpKSwgdHlwZW9mKCgoc3RydWN0IGNsa19tZ3Jf aW50ZXJuYWwgKikwKS0+YmFzZSkpICYmICFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5 cGVvZigqKGNsa19tZ3JfYmFzZSkpLCB0eXBlb2Yodm9pZCkpKSkpIF9fY29tcGlsZXRpbWVfYXNz ZXJ0XzEwMCgpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqKShfX21w dHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwsIGJhc2UpKSk7 IH0pOwoxNDQ3NDogIHN0cnVjdCBkY19jbG9ja3MgKm5ld19jbG9ja3MgPSAmY29udGV4dC0+Yndf Y3R4LmJ3LmRjbi5jbGs7CjE0NDc0OiAgc3RydWN0IGRjICpkYyA9IGNsa19tZ3JfYmFzZS0+Y3R4 LT5kYzsKMTQ0NzQ6ICBpbnQgZGlzcGxheV9jb3VudDsKMTQ0NzQ6ICBib29sIHVwZGF0ZV9kcHBj bGsgPSBmYWxzZTsKMTQ0NzQ6ICBib29sIHVwZGF0ZV9kaXNwY2xrID0gZmFsc2U7CjE0NDc0OiAg Ym9vbCBkcHBfY2xvY2tfbG93ZXJlZCA9IGZhbHNlOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRt Y3UgKmRtY3UgPSBjbGtfbWdyX2Jhc2UtPmN0eC0+ZGMtPnJlc19wb29sLT5kbWN1OwoxNDQ3NDog CjE0NDc0OiAgaWYgKGRjLT53b3JrX2Fyb3VuZHMuc2tpcF9jbG9ja191cGRhdGUpCjE0NDc0OiAg IHJldHVybjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg aWYgKHNhZmVfdG9fbG93ZXIpIHsKMTQ0NzQ6IAoxNDQ3NDogICBpZiAoY2xrX21ncl9iYXNlLT5j bGtzLnB3cl9zdGF0ZSAhPSBEQ05fUFdSX1NUQVRFX0xPV19QT1dFUikgewoxNDQ3NDogCjE0NDc0 OiAgICBkaXNwbGF5X2NvdW50ID0gcm5fZ2V0X2FjdGl2ZV9kaXNwbGF5X2NudF93YShkYywgY29u dGV4dCk7CjE0NDc0OiAKMTQ0NzQ6ICAgIGlmIChkaXNwbGF5X2NvdW50ID09IDApIHsKMTQ0NzQ6 ICAgICBybl92Ymlvc19zbXVfc2V0X2Rjbl9sb3dfcG93ZXJfc3RhdGUoY2xrX21nciwgRENOX1BX Ul9TVEFURV9MT1dfUE9XRVIpOwoxNDQ3NDogCjE0NDc0OiAgICAgY2xrX21ncl9iYXNlLT5jbGtz LnB3cl9zdGF0ZSA9IERDTl9QV1JfU1RBVEVfTE9XX1BPV0VSOwoxNDQ3NDogICAgfQoxNDQ3NDog ICB9CjE0NDc0OiAgfSBlbHNlIHsKMTQ0NzQ6IAoxNDQ3NDogICBpZiAoY2xrX21ncl9iYXNlLT5j bGtzLnB3cl9zdGF0ZSAhPSBEQ05fUFdSX1NUQVRFX01JU1NJT05fTU9ERSkgewoxNDQ3NDogICAg cm5fdmJpb3Nfc211X3NldF9kY25fbG93X3Bvd2VyX3N0YXRlKGNsa19tZ3IsIERDTl9QV1JfU1RB VEVfTUlTU0lPTl9NT0RFKTsKMTQ0NzQ6IAoxNDQ3NDogICAgY2xrX21ncl9iYXNlLT5jbGtzLnB3 cl9zdGF0ZSA9IERDTl9QV1JfU1RBVEVfTUlTU0lPTl9NT0RFOwoxNDQ3NDogICB9CjE0NDc0OiAg fQoxNDQ3NDogCjE0NDc0OiAgaWYgKHNob3VsZF9zZXRfY2xvY2soc2FmZV90b19sb3dlciwgbmV3 X2Nsb2Nrcy0+cGh5Y2xrX2toeiwgY2xrX21ncl9iYXNlLT5jbGtzLnBoeWNsa19raHopKSB7CjE0 NDc0OiAgIGNsa19tZ3JfYmFzZS0+Y2xrcy5waHljbGtfa2h6ID0gbmV3X2Nsb2Nrcy0+cGh5Y2xr X2toejsKMTQ0NzQ6ICAgcm5fdmJpb3Nfc211X3NldF9waHljbGsoY2xrX21nciwgY2xrX21ncl9i YXNlLT5jbGtzLnBoeWNsa19raHopOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogIGlmIChzaG91 bGRfc2V0X2Nsb2NrKHNhZmVfdG9fbG93ZXIsIG5ld19jbG9ja3MtPmRjZmNsa19raHosIGNsa19t Z3JfYmFzZS0+Y2xrcy5kY2ZjbGtfa2h6KSkgewoxNDQ3NDogICBjbGtfbWdyX2Jhc2UtPmNsa3Mu ZGNmY2xrX2toeiA9IG5ld19jbG9ja3MtPmRjZmNsa19raHo7CjE0NDc0OiAgIHJuX3ZiaW9zX3Nt dV9zZXRfaGFyZF9taW5fZGNmY2xrKGNsa19tZ3IsIGNsa19tZ3JfYmFzZS0+Y2xrcy5kY2ZjbGtf a2h6KTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoc2hvdWxkX3NldF9jbG9jayhzYWZl X3RvX2xvd2VyLAoxNDQ3NDogICAgbmV3X2Nsb2Nrcy0+ZGNmY2xrX2RlZXBfc2xlZXBfa2h6LCBj bGtfbWdyX2Jhc2UtPmNsa3MuZGNmY2xrX2RlZXBfc2xlZXBfa2h6KSkgewoxNDQ3NDogICBjbGtf bWdyX2Jhc2UtPmNsa3MuZGNmY2xrX2RlZXBfc2xlZXBfa2h6ID0gbmV3X2Nsb2Nrcy0+ZGNmY2xr X2RlZXBfc2xlZXBfa2h6OwoxNDQ3NDogICBybl92Ymlvc19zbXVfc2V0X21pbl9kZWVwX3NsZWVw X2RjZmNsayhjbGtfbWdyLCBjbGtfbWdyX2Jhc2UtPmNsa3MuZGNmY2xrX2RlZXBfc2xlZXBfa2h6 KTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGlmICghKChkYy0+Y3R4LT5kY2Vf ZW52aXJvbm1lbnQgPT0gRENFX0VOVl9GUEdBX01BWElNVVMpIHx8IChkYy0+Y3R4LT5kY2VfZW52 aXJvbm1lbnQgPT0gRENFX0VOVl9ESUFHKSkpIHsKMTQ0NzQ6ICAgaWYgKG5ld19jbG9ja3MtPmRw cGNsa19raHogPCAxMDAwMDApCjE0NDc0OiAgICBuZXdfY2xvY2tzLT5kcHBjbGtfa2h6ID0gMTAw MDAwOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogIGlmIChzaG91bGRfc2V0X2Nsb2NrKHNhZmVf dG9fbG93ZXIsIG5ld19jbG9ja3MtPmRwcGNsa19raHosIGNsa19tZ3ItPmJhc2UuY2xrcy5kcHBj bGtfa2h6KSkgewoxNDQ3NDogICBpZiAoY2xrX21nci0+YmFzZS5jbGtzLmRwcGNsa19raHogPiBu ZXdfY2xvY2tzLT5kcHBjbGtfa2h6KQoxNDQ3NDogICAgZHBwX2Nsb2NrX2xvd2VyZWQgPSB0cnVl OwoxNDQ3NDogICBjbGtfbWdyX2Jhc2UtPmNsa3MuZHBwY2xrX2toeiA9IG5ld19jbG9ja3MtPmRw cGNsa19raHo7CjE0NDc0OiAgIHVwZGF0ZV9kcHBjbGsgPSB0cnVlOwoxNDQ3NDogIH0KMTQ0NzQ6 IAoxNDQ3NDogIGlmIChzaG91bGRfc2V0X2Nsb2NrKHNhZmVfdG9fbG93ZXIsIG5ld19jbG9ja3Mt PmRpc3BjbGtfa2h6LCBjbGtfbWdyX2Jhc2UtPmNsa3MuZGlzcGNsa19raHopKSB7CjE0NDc0OiAg IGNsa19tZ3JfYmFzZS0+Y2xrcy5kaXNwY2xrX2toeiA9IG5ld19jbG9ja3MtPmRpc3BjbGtfa2h6 OwoxNDQ3NDogICBybl92Ymlvc19zbXVfc2V0X2Rpc3BjbGsoY2xrX21nciwgY2xrX21ncl9iYXNl LT5jbGtzLmRpc3BjbGtfa2h6KTsKMTQ0NzQ6IAoxNDQ3NDogICB1cGRhdGVfZGlzcGNsayA9IHRy dWU7CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0OiAgaWYgKGRwcF9jbG9ja19sb3dlcmVkKSB7CjE0 NDc0OiAKMTQ0NzQ6ICAgZGNuMjBfdXBkYXRlX2Nsb2Nrc191cGRhdGVfZHBwX2R0byhjbGtfbWdy LCBjb250ZXh0LCBzYWZlX3RvX2xvd2VyKTsKMTQ0NzQ6ICAgcm5fdmJpb3Nfc211X3NldF9kcHBj bGsoY2xrX21nciwgY2xrX21ncl9iYXNlLT5jbGtzLmRwcGNsa19raHopOwoxNDQ3NDogIH0gZWxz ZSB7CjE0NDc0OiAKMTQ0NzQ6ICAgaWYgKHVwZGF0ZV9kcHBjbGsgfHwgdXBkYXRlX2Rpc3BjbGsp CjE0NDc0OiAgICBybl92Ymlvc19zbXVfc2V0X2RwcGNsayhjbGtfbWdyLCBjbGtfbWdyX2Jhc2Ut PmNsa3MuZHBwY2xrX2toeik7CjE0NDc0OiAKMTQ0NzQ6ICAgaWYgKG5ld19jbG9ja3MtPmRwcGNs a19raHogPj0gZGMtPmN1cnJlbnRfc3RhdGUtPmJ3X2N0eC5idy5kY24uY2xrLmRwcGNsa19raHop CjE0NDc0OiAgICBkY24yMF91cGRhdGVfY2xvY2tzX3VwZGF0ZV9kcHBfZHRvKGNsa19tZ3IsIGNv bnRleHQsIHNhZmVfdG9fbG93ZXIpOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogIGlmICh1cGRh dGVfZGlzcGNsayAmJgoxNDQ3NDogICAgZG1jdSAmJiBkbWN1LT5mdW5jcy0+aXNfZG1jdV9pbml0 aWFsaXplZChkbWN1KSkgewoxNDQ3NDogCjE0NDc0OiAgIGRtY3UtPmZ1bmNzLT5zZXRfcHNyX3dh aXRfbG9vcChkbWN1LAoxNDQ3NDogICAgY2xrX21ncl9iYXNlLT5jbGtzLmRpc3BjbGtfa2h6IC8g MTAwMCAvIDcpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW50IGdldF92Y29fZnJlcXVlbmN5X2Zyb21fcmVnKHN0cnVjdCBjbGtfbWdyX2ludGVybmFs ICpjbGtfbWdyKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgcGxs X3JlcTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZmJtdWx0X2ZyYWNfdmFsID0gMDsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgZmJtdWx0X2ludF92YWwgPSAwOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgZ2VuZXJpY19yZWdfZ2V0KGNs a19tZ3ItPmJhc2UuY3R4LCAoQ0xLX0JBU0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDAw ZiksIDB4MTAsIDB4RkZGRjAwMDBMLCAmZmJtdWx0X2ZyYWNfdmFsKTsKMTQ0NzQ6ICBnZW5lcmlj X3JlZ19nZXQoY2xrX21nci0+YmFzZS5jdHgsIChDTEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50 WzFdICsgMHgwMDBmKSwgMHgwLCAweDAwMDAwMUZGTCwgJmZibXVsdF9pbnRfdmFsKTsKMTQ0NzQ6 IAoxNDQ3NDogIHBsbF9yZXEgPSBkY19maXhwdF9mcm9tX2ludChmYm11bHRfaW50X3ZhbCk7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHBsbF9yZXEudmFs dWUgfD0gZmJtdWx0X2ZyYWNfdmFsIDw8IDE2OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBwbGxf cmVxID0gZGNfZml4cHRfbXVsX2ludChwbGxfcmVxLCBjbGtfbWdyLT5kZnNfcmVmX2ZyZXFfa2h6 KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGRjX2ZpeHB0X2Zsb29yKHBsbF9yZXEp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgdm9pZCBybl9kdW1wX2Nsa19yZWdpc3Rl cnNfaW50ZXJuYWwoc3RydWN0IHJuX2Nsa19pbnRlcm5hbCAqaW50ZXJuYWwsIHN0cnVjdCBjbGtf bWdyICpjbGtfbWdyX2Jhc2UpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGNsa19tZ3JfaW50ZXJu YWwgKmNsa19tZ3IgPSAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAqKShjbGtfbWdyX2Jhc2UpOyBk byB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzIyOSh2b2lkKSBfX2F0dHJpYnV0 ZV9fKChfX2Vycm9yX18oInBvaW50ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb250YWluZXJfb2YoKSIp KSk7IGlmICghKCEoIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCooY2xrX21n cl9iYXNlKSksIHR5cGVvZigoKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICopMCktPmJhc2UpKSAm JiAhX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKihjbGtfbWdyX2Jhc2UpKSwg dHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF8yMjkoKTsgfSB3aGlsZSAoMCk7 ICgoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKikoX19tcHRyIC0gX19idWlsdGluX29mZnNldG9m KHN0cnVjdCBjbGtfbWdyX2ludGVybmFsLCBiYXNlKSkpOyB9KTsKMTQ0NzQ6IAoxNDQ3NDogIGlu dGVybmFsLT5DTEsxX0NMSzNfQ1VSUkVOVF9DTlQgPSBkbV9yZWFkX3JlZ19mdW5jKGNsa19tZ3It PmJhc2UuY3R4LCAoQ0xLX0JBU0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDA4ZCksIF9f ZnVuY19fKTsKMTQ0NzQ6ICBpbnRlcm5hbC0+Q0xLMV9DTEszX0JZUEFTU19DTlRMID0gZG1fcmVh ZF9yZWdfZnVuYyhjbGtfbWdyLT5iYXNlLmN0eCwgKENMS19CQVNFLmluc3RhbmNlWzBdLnNlZ21l bnRbMV0gKyAweDAwNjcpLCBfX2Z1bmNfXyk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnRlcm5hbC0+Q0xL MV9DTEszX0RTX0NOVEwgPSBkbV9yZWFkX3JlZ19mdW5jKGNsa19tZ3ItPmJhc2UuY3R4LCAoQ0xL X0JBU0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDA2MCksIF9fZnVuY19fKTsKMTQ0NzQ6 ICBpbnRlcm5hbC0+Q0xLMV9DTEszX0FMTE9XX0RTID0gZG1fcmVhZF9yZWdfZnVuYyhjbGtfbWdy LT5iYXNlLmN0eCwgKENMS19CQVNFLmluc3RhbmNlWzBdLnNlZ21lbnRbMV0gKyAweDAwNjEpLCBf X2Z1bmNfXyk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnRlcm5hbC0+Q0xLMV9DTEsxX0NVUlJFTlRfQ05U ID0gZG1fcmVhZF9yZWdfZnVuYyhjbGtfbWdyLT5iYXNlLmN0eCwgKENMS19CQVNFLmluc3RhbmNl WzBdLnNlZ21lbnRbMV0gKyAweDAwOGIpLCBfX2Z1bmNfXyk7CjE0NDc0OiAgaW50ZXJuYWwtPkNM SzFfQ0xLMV9CWVBBU1NfQ05UTCA9IGRtX3JlYWRfcmVnX2Z1bmMoY2xrX21nci0+YmFzZS5jdHgs IChDTEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50WzFdICsgMHgwMDUzKSwgX19mdW5jX18pOwox NDQ3NDogCjE0NDc0OiAgaW50ZXJuYWwtPkNMSzFfQ0xLMl9DVVJSRU5UX0NOVCA9IGRtX3JlYWRf cmVnX2Z1bmMoY2xrX21nci0+YmFzZS5jdHgsIChDTEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50 WzFdICsgMHgwMDhjKSwgX19mdW5jX18pOwoxNDQ3NDogIGludGVybmFsLT5DTEsxX0NMSzJfQllQ QVNTX0NOVEwgPSBkbV9yZWFkX3JlZ19mdW5jKGNsa19tZ3ItPmJhc2UuY3R4LCAoQ0xLX0JBU0Uu aW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDA1ZCksIF9fZnVuY19fKTsKMTQ0NzQ6IAoxNDQ3 NDogIGludGVybmFsLT5DTEsxX0NMSzBfQ1VSUkVOVF9DTlQgPSBkbV9yZWFkX3JlZ19mdW5jKGNs a19tZ3ItPmJhc2UuY3R4LCAoQ0xLX0JBU0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDA4 YSksIF9fZnVuY19fKTsKMTQ0NzQ6ICBpbnRlcm5hbC0+Q0xLMV9DTEswX0JZUEFTU19DTlRMID0g ZG1fcmVhZF9yZWdfZnVuYyhjbGtfbWdyLT5iYXNlLmN0eCwgKENMS19CQVNFLmluc3RhbmNlWzBd LnNlZ21lbnRbMV0gKyAweDAwNDkpLCBfX2Z1bmNfXyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIHZvaWQgcm5fZHVtcF9jbGtfcmVnaXN0ZXJzKHN0cnVjdCBjbGtfc3Rh dGVfcmVnaXN0ZXJzX2FuZF9ieXBhc3MgKnJlZ3NfYW5kX2J5cGFzcywKMTQ0NzQ6ICAgc3RydWN0 IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSwgc3RydWN0IGNsa19sb2dfaW5mbyAqbG9nX2luZm8pCjE0 NDc0OiB7CjE0NDc0OiAgc3RydWN0IHJuX2Nsa19pbnRlcm5hbCBpbnRlcm5hbCA9IHswfTsKMTQ0 NzQ6ICBjaGFyICpieXBhc3NfY2xrc1s1XSA9IHsiMHgwIERGUyIsICIweDEgUkVGQ0xLIiwgIjB4 MiBFUlJPUiIsICIweDMgNDAwIEZDSCIsICIweDQgNjAwIEZDSCJ9OwoxNDQ3NDogIHVuc2lnbmVk IGludCBjaGFyc19wcmludGVkID0gMDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVtYWluaW5nX2J1 ZmZlciA9IGxvZ19pbmZvLT5idWZTaXplOwoxNDQ3NDogCjE0NDc0OiAgcm5fZHVtcF9jbGtfcmVn aXN0ZXJzX2ludGVybmFsKCZpbnRlcm5hbCwgY2xrX21ncl9iYXNlKTsKMTQ0NzQ6IAoxNDQ3NDog IHJlZ3NfYW5kX2J5cGFzcy0+ZGNmY2xrID0gaW50ZXJuYWwuQ0xLMV9DTEszX0NVUlJFTlRfQ05U IC8gMTA7CjE0NDc0OiAgcmVnc19hbmRfYnlwYXNzLT5kY2ZfZGVlcF9zbGVlcF9kaXZpZGVyID0g aW50ZXJuYWwuQ0xLMV9DTEszX0RTX0NOVEwgLyAxMDsKMTQ0NzQ6ICByZWdzX2FuZF9ieXBhc3Mt PmRjZl9kZWVwX3NsZWVwX2FsbG93ID0gaW50ZXJuYWwuQ0xLMV9DTEszX0FMTE9XX0RTOwoxNDQ3 NDogIHJlZ3NfYW5kX2J5cGFzcy0+ZHByZWZjbGsgPSBpbnRlcm5hbC5DTEsxX0NMSzJfQ1VSUkVO VF9DTlQgLyAxMDsKMTQ0NzQ6ICByZWdzX2FuZF9ieXBhc3MtPmRpc3BjbGsgPSBpbnRlcm5hbC5D TEsxX0NMSzBfQ1VSUkVOVF9DTlQgLyAxMDsKMTQ0NzQ6ICByZWdzX2FuZF9ieXBhc3MtPmRwcGNs ayA9IGludGVybmFsLkNMSzFfQ0xLMV9DVVJSRU5UX0NOVCAvIDEwOwoxNDQ3NDogCjE0NDc0OiAg cmVnc19hbmRfYnlwYXNzLT5kcHBjbGtfYnlwYXNzID0gaW50ZXJuYWwuQ0xLMV9DTEsxX0JZUEFT U19DTlRMICYgMHgwMDA3OwoxNDQ3NDogIGlmIChyZWdzX2FuZF9ieXBhc3MtPmRwcGNsa19ieXBh c3MgPCAwIHx8IHJlZ3NfYW5kX2J5cGFzcy0+ZHBwY2xrX2J5cGFzcyA+IDQpCjE0NDc0OiAgIHJl Z3NfYW5kX2J5cGFzcy0+ZHBwY2xrX2J5cGFzcyA9IDA7CjE0NDc0OiAgcmVnc19hbmRfYnlwYXNz LT5kY2ZjbGtfYnlwYXNzID0gaW50ZXJuYWwuQ0xLMV9DTEszX0JZUEFTU19DTlRMICYgMHgwMDA3 OwoxNDQ3NDogIGlmIChyZWdzX2FuZF9ieXBhc3MtPmRjZmNsa19ieXBhc3MgPCAwIHx8IHJlZ3Nf YW5kX2J5cGFzcy0+ZGNmY2xrX2J5cGFzcyA+IDQpCjE0NDc0OiAgIHJlZ3NfYW5kX2J5cGFzcy0+ ZGNmY2xrX2J5cGFzcyA9IDA7CjE0NDc0OiAgcmVnc19hbmRfYnlwYXNzLT5kaXNwY2xrX2J5cGFz cyA9IGludGVybmFsLkNMSzFfQ0xLMF9CWVBBU1NfQ05UTCAmIDB4MDAwNzsKMTQ0NzQ6ICBpZiAo cmVnc19hbmRfYnlwYXNzLT5kaXNwY2xrX2J5cGFzcyA8IDAgfHwgcmVnc19hbmRfYnlwYXNzLT5k aXNwY2xrX2J5cGFzcyA+IDQpCjE0NDc0OiAgIHJlZ3NfYW5kX2J5cGFzcy0+ZGlzcGNsa19ieXBh c3MgPSAwOwoxNDQ3NDogIHJlZ3NfYW5kX2J5cGFzcy0+ZHByZWZjbGtfYnlwYXNzID0gaW50ZXJu YWwuQ0xLMV9DTEsyX0JZUEFTU19DTlRMICYgMHgwMDA3OwoxNDQ3NDogIGlmIChyZWdzX2FuZF9i eXBhc3MtPmRwcmVmY2xrX2J5cGFzcyA8IDAgfHwgcmVnc19hbmRfYnlwYXNzLT5kcHJlZmNsa19i eXBhc3MgPiA0KQoxNDQ3NDogICByZWdzX2FuZF9ieXBhc3MtPmRwcmVmY2xrX2J5cGFzcyA9IDA7 CjE0NDc0OiAKMTQ0NzQ6ICBpZiAobG9nX2luZm8tPmVuYWJsZWQpIHsKMTQ0NzQ6ICAgY2hhcnNf cHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVmZmVy LCAiY2xrX3R5cGUsY2xrX3ZhbHVlLGRlZXBzbGVlcF9jbnRsLGRlZXBzbGVlcF9hbGxvdyxieXBh c3NcbiIpOwoxNDQ3NDogICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CjE0NDc0 OiAgICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6 ICAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6IAoxNDQ3NDogICBjaGFy c19wcmludGVkID0gc25wcmludGZfY291bnQobG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZm ZXIsICJkY2ZjbGssJWQsJWQsJWQsJXNcbiIsCjE0NDc0OiAgICByZWdzX2FuZF9ieXBhc3MtPmRj ZmNsaywKMTQ0NzQ6ICAgIHJlZ3NfYW5kX2J5cGFzcy0+ZGNmX2RlZXBfc2xlZXBfZGl2aWRlciwK MTQ0NzQ6ICAgIHJlZ3NfYW5kX2J5cGFzcy0+ZGNmX2RlZXBfc2xlZXBfYWxsb3csCjE0NDc0OiAg ICBieXBhc3NfY2xrc1soaW50KSByZWdzX2FuZF9ieXBhc3MtPmRjZmNsa19ieXBhc3NdKTsKMTQ0 NzQ6ICAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwoxNDQ3NDogICAqbG9nX2lu Zm8tPnN1bV9jaGFyc19wcmludGVkICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAgIGxvZ19pbmZv LT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICAgY2hhcnNfcHJpbnRlZCA9 IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVmZmVyLCAiZHByZWZj bGssJWQsTi9BLE4vQSwlc1xuIiwKMTQ0NzQ6ICAgIHJlZ3NfYW5kX2J5cGFzcy0+ZHByZWZjbGss CjE0NDc0OiAgICBieXBhc3NfY2xrc1soaW50KSByZWdzX2FuZF9ieXBhc3MtPmRwcmVmY2xrX2J5 cGFzc10pOwoxNDQ3NDogICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CjE0NDc0 OiAgICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6 ICAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6IAoxNDQ3NDogICBjaGFy c19wcmludGVkID0gc25wcmludGZfY291bnQobG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZm ZXIsICJkaXNwY2xrLCVkLE4vQSxOL0EsJXNcbiIsCjE0NDc0OiAgICByZWdzX2FuZF9ieXBhc3Mt PmRpc3BjbGssCjE0NDc0OiAgICBieXBhc3NfY2xrc1soaW50KSByZWdzX2FuZF9ieXBhc3MtPmRp c3BjbGtfYnlwYXNzXSk7CjE0NDc0OiAgIHJlbWFpbmluZ19idWZmZXIgLT0gY2hhcnNfcHJpbnRl ZDsKMTQ0NzQ6ICAgKmxvZ19pbmZvLT5zdW1fY2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVk OwoxNDQ3NDogICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFyc19wcmludGVkOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICAgY2hhcnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVm LCByZW1haW5pbmdfYnVmZmVyLCAiU1BMSVRcbiIpOwoxNDQ3NDogICByZW1haW5pbmdfYnVmZmVy IC09IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAgICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQg Kz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6ICAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRl ZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3Vu dChsb2dfaW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1ZmZlciwgInJlZ19uYW1lLHZhbHVlLGNsa190 eXBlXG4iKTsKMTQ0NzQ6ICAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwoxNDQ3 NDogICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmludGVkICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0 OiAgIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICAgY2hh cnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVm ZmVyLCAiQ0xLMV9DTEszX0NVUlJFTlRfQ05ULCVkLGRjZmNsa1xuIiwKMTQ0NzQ6ICAgICBpbnRl cm5hbC5DTEsxX0NMSzNfQ1VSUkVOVF9DTlQpOwoxNDQ3NDogICByZW1haW5pbmdfYnVmZmVyIC09 IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAgICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0g Y2hhcnNfcHJpbnRlZDsKMTQ0NzQ6ICAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsK MTQ0NzQ6IAoxNDQ3NDogICBjaGFyc19wcmludGVkID0gc25wcmludGZfY291bnQobG9nX2luZm8t PnBCdWYsIHJlbWFpbmluZ19idWZmZXIsICJDTEsxX0NMSzNfRFNfQ05UTCwlZCxkY2ZfZGVlcF9z bGVlcF9kaXZpZGVyXG4iLAoxNDQ3NDogICAgICBpbnRlcm5hbC5DTEsxX0NMSzNfRFNfQ05UTCk7 CjE0NDc0OiAgIHJlbWFpbmluZ19idWZmZXIgLT0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6ICAgKmxv Z19pbmZvLT5zdW1fY2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwoxNDQ3NDogICBsb2df aW5mby0+cEJ1ZiArPSBjaGFyc19wcmludGVkOwoxNDQ3NDogCjE0NDc0OiAgIGNoYXJzX3ByaW50 ZWQgPSBzbnByaW50Zl9jb3VudChsb2dfaW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1ZmZlciwgIkNM SzFfQ0xLM19BTExPV19EUywlZCxkY2ZfZGVlcF9zbGVlcF9hbGxvd1xuIiwKMTQ0NzQ6ICAgICAg aW50ZXJuYWwuQ0xLMV9DTEszX0FMTE9XX0RTKTsKMTQ0NzQ6ICAgcmVtYWluaW5nX2J1ZmZlciAt PSBjaGFyc19wcmludGVkOwoxNDQ3NDogICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmludGVkICs9 IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAgIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7 CjE0NDc0OiAKMTQ0NzQ6ICAgY2hhcnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZv LT5wQnVmLCByZW1haW5pbmdfYnVmZmVyLCAiQ0xLMV9DTEsyX0NVUlJFTlRfQ05ULCVkLGRwcmVm Y2xrXG4iLAoxNDQ3NDogICAgICBpbnRlcm5hbC5DTEsxX0NMSzJfQ1VSUkVOVF9DTlQpOwoxNDQ3 NDogICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAgICpsb2dfaW5m by0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6ICAgbG9nX2luZm8t PnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6IAoxNDQ3NDogICBjaGFyc19wcmludGVkID0g c25wcmludGZfY291bnQobG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZmZXIsICJDTEsxX0NM SzBfQ1VSUkVOVF9DTlQsJWQsZGlzcGNsa1xuIiwKMTQ0NzQ6ICAgICAgaW50ZXJuYWwuQ0xLMV9D TEswX0NVUlJFTlRfQ05UKTsKMTQ0NzQ6ICAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmlu dGVkOwoxNDQ3NDogICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmludGVkICs9IGNoYXJzX3ByaW50 ZWQ7CjE0NDc0OiAgIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAKMTQ0 NzQ6ICAgY2hhcnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1h aW5pbmdfYnVmZmVyLCAiQ0xLMV9DTEsxX0NVUlJFTlRfQ05ULCVkLGRwcGNsa1xuIiwKMTQ0NzQ6 ICAgICAgaW50ZXJuYWwuQ0xLMV9DTEsxX0NVUlJFTlRfQ05UKTsKMTQ0NzQ6ICAgcmVtYWluaW5n X2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwoxNDQ3NDogICAqbG9nX2luZm8tPnN1bV9jaGFyc19w cmludGVkICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAgIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJz X3ByaW50ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICAgY2hhcnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50 KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVmZmVyLCAiQ0xLMV9DTEszX0JZUEFTU19DTlRM LCVkLGRjZmNsa19ieXBhc3NcbiIsCjE0NDc0OiAgICAgIGludGVybmFsLkNMSzFfQ0xLM19CWVBB U1NfQ05UTCk7CjE0NDc0OiAgIHJlbWFpbmluZ19idWZmZXIgLT0gY2hhcnNfcHJpbnRlZDsKMTQ0 NzQ6ICAgKmxvZ19pbmZvLT5zdW1fY2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwoxNDQ3 NDogICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFyc19wcmludGVkOwoxNDQ3NDogCjE0NDc0OiAgIGNo YXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3VudChsb2dfaW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1 ZmZlciwgIkNMSzFfQ0xLMl9CWVBBU1NfQ05UTCwlZCxkcHJlZmNsa19ieXBhc3NcbiIsCjE0NDc0 OiAgICAgIGludGVybmFsLkNMSzFfQ0xLMl9CWVBBU1NfQ05UTCk7CjE0NDc0OiAgIHJlbWFpbmlu Z19idWZmZXIgLT0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6ICAgKmxvZ19pbmZvLT5zdW1fY2hhcnNf cHJpbnRlZCArPSBjaGFyc19wcmludGVkOwoxNDQ3NDogICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFy c19wcmludGVkOwoxNDQ3NDogCjE0NDc0OiAgIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3Vu dChsb2dfaW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1ZmZlciwgIkNMSzFfQ0xLMF9CWVBBU1NfQ05U TCwlZCxkaXNwY2xrX2J5cGFzc1xuIiwKMTQ0NzQ6ICAgICAgaW50ZXJuYWwuQ0xLMV9DTEswX0JZ UEFTU19DTlRMKTsKMTQ0NzQ6ICAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwox NDQ3NDogICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmludGVkICs9IGNoYXJzX3ByaW50ZWQ7CjE0 NDc0OiAgIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICAg Y2hhcnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdf YnVmZmVyLCAiQ0xLMV9DTEsxX0JZUEFTU19DTlRMLCVkLGRwcGNsa19ieXBhc3NcbiIsCjE0NDc0 OiAgICAgIGludGVybmFsLkNMSzFfQ0xLMV9CWVBBU1NfQ05UTCk7CjE0NDc0OiAgIHJlbWFpbmlu Z19idWZmZXIgLT0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6ICAgKmxvZ19pbmZvLT5zdW1fY2hhcnNf cHJpbnRlZCArPSBjaGFyc19wcmludGVkOwoxNDQ3NDogICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFy c19wcmludGVkOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lk IHJuX2dldF9jbGtfc3RhdGVzKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jhc2UsIHN0cnVjdCBj bGtfc3RhdGVzICpzKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBjbGtfc3RhdGVfcmVnaXN0ZXJz X2FuZF9ieXBhc3Mgc2IgPSB7IDAgfTsKMTQ0NzQ6ICBzdHJ1Y3QgY2xrX2xvZ19pbmZvIGxvZ19p bmZvID0geyAwIH07CjE0NDc0OiAKMTQ0NzQ6ICBybl9kdW1wX2Nsa19yZWdpc3RlcnMoJnNiLCBj bGtfbWdyX2Jhc2UsICZsb2dfaW5mbyk7CjE0NDc0OiAKMTQ0NzQ6ICBzLT5kcHJlZmNsa19raHog PSBzYi5kcHJlZmNsayAqIDEwMDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgcm5fZW5h YmxlX3BtZV93YShzdHJ1Y3QgY2xrX21nciAqY2xrX21ncl9iYXNlKQoxNDQ3NDogewoxNDQ3NDog IHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyID0gKHsgdm9pZCAqX19tcHRyID0gKHZv aWQgKikoY2xrX21ncl9iYXNlKTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2Vy dF8zOTQodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0 Y2ggaW4gY29udGFpbmVyX29mKCkiKSkpOyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0 aWJsZV9wKHR5cGVvZigqKGNsa19tZ3JfYmFzZSkpLCB0eXBlb2YoKChzdHJ1Y3QgY2xrX21ncl9p bnRlcm5hbCAqKTApLT5iYXNlKSkgJiYgIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlw ZW9mKCooY2xrX21ncl9iYXNlKSksIHR5cGVvZih2b2lkKSkpKSkgX19jb21waWxldGltZV9hc3Nl cnRfMzk0KCk7IH0gd2hpbGUgKDApOyAoKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICopKF9fbXB0 ciAtIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCwgYmFzZSkpKTsg fSk7CjE0NDc0OiAKMTQ0NzQ6ICBybl92Ymlvc19zbXVfZW5hYmxlX3BtZV93YShjbGtfbWdyKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdm9pZCBybl9pbml0X2Nsb2NrcyhzdHJ1Y3QgY2xrX21n ciAqY2xrX21ncikKMTQ0NzQ6IHsKMTQ0NzQ6ICBtZW1zZXQoJihjbGtfbWdyLT5jbGtzKSwgMCwg c2l6ZW9mKHN0cnVjdCBkY19jbG9ja3MpKTsKMTQ0NzQ6IAoxNDQ3NDogIGNsa19tZ3ItPmNsa3Mu cF9zdGF0ZV9jaGFuZ2Vfc3VwcG9ydCA9IHRydWU7CjE0NDc0OiAgY2xrX21nci0+Y2xrcy5wcmV2 X3Bfc3RhdGVfY2hhbmdlX3N1cHBvcnQgPSB0cnVlOwoxNDQ3NDogIGNsa19tZ3ItPmNsa3MucHdy X3N0YXRlID0gRENOX1BXUl9TVEFURV9VTktOT1dOOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB2 b2lkIGJ1aWxkX3dhdGVybWFya19yYW5nZXMoc3RydWN0IGNsa19id19wYXJhbXMgKmJ3X3BhcmFt cywgc3RydWN0IHBwX3NtdV93bV9yYW5nZV9zZXRzICpyYW5nZXMpCjE0NDc0OiB7CjE0NDc0OiAg aW50IGksIG51bV92YWxpZF9zZXRzOwoxNDQ3NDogCjE0NDc0OiAgbnVtX3ZhbGlkX3NldHMgPSAw OwoxNDQ3NDogCjE0NDc0OiAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewoxNDQ3NDogCjE0NDc0 OiAgIGlmICghYndfcGFyYW1zLT53bV90YWJsZS5lbnRyaWVzW2ldLnZhbGlkKQoxNDQ3NDogICAg Y29udGludWU7CjE0NDc0OiAKMTQ0NzQ6ICAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tudW1fdmFs aWRfc2V0c10ud21faW5zdCA9IGJ3X3BhcmFtcy0+d21fdGFibGUuZW50cmllc1tpXS53bV9pbnN0 OwoxNDQ3NDogICByYW5nZXMtPnJlYWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRzXS53bV90eXBl ID0gYndfcGFyYW1zLT53bV90YWJsZS5lbnRyaWVzW2ldLndtX3R5cGU7CjE0NDc0OiAKMTQ0NzQ6 ICAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tudW1fdmFsaWRfc2V0c10ubWluX2ZpbGxfY2xrX21o eiA9IDB4MDsKMTQ0NzQ6ICAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tudW1fdmFsaWRfc2V0c10u bWF4X2ZpbGxfY2xrX21oeiA9IDB4RkZGRjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIGlmIChy YW5nZXMtPnJlYWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRzXS53bV90eXBlID09IFdNX1RZUEVf UFNUQVRFX0NIRykgewoxNDQ3NDogICAgaWYgKGkgPT0gMCkKMTQ0NzQ6ICAgICByYW5nZXMtPnJl YWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRzXS5taW5fZHJhaW5fY2xrX21oeiA9IDA7CjE0NDc0 OiAgICBlbHNlIHsKMTQ0NzQ6IAoxNDQ3NDogICAgIHJhbmdlcy0+cmVhZGVyX3dtX3NldHNbbnVt X3ZhbGlkX3NldHNdLm1pbl9kcmFpbl9jbGtfbWh6ID0gYndfcGFyYW1zLT5jbGtfdGFibGUuZW50 cmllc1tpIC0gMV0uZGNmY2xrX21oeiArIDE7CjE0NDc0OiAgICB9CjE0NDc0OiAgICByYW5nZXMt PnJlYWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRzXS5tYXhfZHJhaW5fY2xrX21oeiA9IGJ3X3Bh cmFtcy0+Y2xrX3RhYmxlLmVudHJpZXNbaV0uZGNmY2xrX21oejsKMTQ0NzQ6IAoxNDQ3NDogICB9 IGVsc2UgewoxNDQ3NDogCjE0NDc0OiAgICByYW5nZXMtPnJlYWRlcl93bV9zZXRzW251bV92YWxp ZF9zZXRzXS5taW5fZmlsbF9jbGtfbWh6ID0gMHgwOwoxNDQ3NDogICAgcmFuZ2VzLT5yZWFkZXJf d21fc2V0c1tudW1fdmFsaWRfc2V0c10ubWF4X2ZpbGxfY2xrX21oeiA9IDB4RkZGRjsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgICByYW5nZXMtPnJlYWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRz IC0gMV0ubWF4X2ZpbGxfY2xrX21oeiA9IDB4RkZGRjsKMTQ0NzQ6ICAgfQoxNDQ3NDogICBudW1f dmFsaWRfc2V0cysrOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogICh7IGludCBfX3JldF93YXJu X29uID0gISEoIShudW1fdmFsaWRfc2V0cyAhPSAwKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEh KF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpc dCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3 XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2Fk ZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4i ICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQj IGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDog ImkiICgiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2Rj bjIxL3JuX2Nsa19tZ3IuYyIpLCAiaSIgKDQ0NiksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkp KSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2 b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIg Ii5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoNDgpKTsgfSk7 IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7 CjE0NDc0OiAgcmFuZ2VzLT5udW1fcmVhZGVyX3dtX3NldHMgPSBudW1fdmFsaWRfc2V0czsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1swXS5taW5fZHJhaW5f Y2xrX21oeiA9IDB4MDsKMTQ0NzQ6ICByYW5nZXMtPnJlYWRlcl93bV9zZXRzWzBdLm1pbl9maWxs X2Nsa19taHogPSAweDA7CjE0NDc0OiAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tyYW5nZXMtPm51 bV9yZWFkZXJfd21fc2V0cyAtIDFdLm1heF9kcmFpbl9jbGtfbWh6ID0gMHhGRkZGOwoxNDQ3NDog IHJhbmdlcy0+cmVhZGVyX3dtX3NldHNbcmFuZ2VzLT5udW1fcmVhZGVyX3dtX3NldHMgLSAxXS5t YXhfZmlsbF9jbGtfbWh6ID0gMHhGRkZGOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByYW5nZXMt Pm51bV93cml0ZXJfd21fc2V0cyA9IDE7CjE0NDc0OiAgcmFuZ2VzLT53cml0ZXJfd21fc2V0c1sw XS53bV9pbnN0ID0gMDsKMTQ0NzQ6ICByYW5nZXMtPndyaXRlcl93bV9zZXRzWzBdLm1pbl9maWxs X2Nsa19taHogPSAweDA7CjE0NDc0OiAgcmFuZ2VzLT53cml0ZXJfd21fc2V0c1swXS5tYXhfZmls bF9jbGtfbWh6ID0gMHhGRkZGOwoxNDQ3NDogIHJhbmdlcy0+d3JpdGVyX3dtX3NldHNbMF0ubWlu X2RyYWluX2Nsa19taHogPSAweDA7CjE0NDc0OiAgcmFuZ2VzLT53cml0ZXJfd21fc2V0c1swXS5t YXhfZHJhaW5fY2xrX21oeiA9IDB4RkZGRjsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgdm9pZCBybl9ub3RpZnlfd21fcmFuZ2VzKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdy X2Jhc2UpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGRjX2RlYnVnX29wdGlvbnMgKmRlYnVnID0g JmNsa19tZ3JfYmFzZS0+Y3R4LT5kYy0+ZGVidWc7CjE0NDc0OiAgc3RydWN0IHBwX3NtdV93bV9y YW5nZV9zZXRzIHJhbmdlcyA9IHswfTsKMTQ0NzQ6ICBzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAq Y2xrX21nciA9ICh7IHZvaWQgKl9fbXB0ciA9ICh2b2lkICopKGNsa19tZ3JfYmFzZSk7IGRvIHsg ZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfNDY5KHZvaWQpIF9fYXR0cmlidXRlX18o KF9fZXJyb3JfXygicG9pbnRlciB0eXBlIG1pc21hdGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsg aWYgKCEoISghX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKihjbGtfbWdyX2Jh c2UpKSwgdHlwZW9mKCgoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKikwKS0+YmFzZSkpICYmICFf X2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKGNsa19tZ3JfYmFzZSkpLCB0eXBl b2Yodm9pZCkpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzQ2OSgpOyB9IHdoaWxlICgwKTsgKChz dHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqKShfX21wdHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3Ry dWN0IGNsa19tZ3JfaW50ZXJuYWwsIGJhc2UpKSk7IH0pOwoxNDQ3NDogIHN0cnVjdCBwcF9zbXVf ZnVuY3MgKnBwX3NtdSA9IGNsa19tZ3ItPnBwX3NtdTsKMTQ0NzQ6IAoxNDQ3NDogIGlmICghZGVi dWctPmRpc2FibGVfcHBsaWJfd21fcmFuZ2UpIHsKMTQ0NzQ6ICAgYnVpbGRfd2F0ZXJtYXJrX3Jh bmdlcyhjbGtfbWdyX2Jhc2UtPmJ3X3BhcmFtcywgJnJhbmdlcyk7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogICBpZiAocHBfc211ICYmIHBwX3NtdS0+cm5fZnVuY3Muc2V0X3dtX3JhbmdlcykKMTQ0 NzQ6ICAgIHBwX3NtdS0+cm5fZnVuY3Muc2V0X3dtX3JhbmdlcygmcHBfc211LT5ybl9mdW5jcy5w cF9zbXUsICZyYW5nZXMpOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgYm9vbCBybl9hcmVfY2xvY2tfc3RhdGVzX2VxdWFsKHN0cnVjdCBkY19jbG9ja3Mg KmEsCjE0NDc0OiAgIHN0cnVjdCBkY19jbG9ja3MgKmIpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGEt PmRpc3BjbGtfa2h6ICE9IGItPmRpc3BjbGtfa2h6KQoxNDQ3NDogICByZXR1cm4gZmFsc2U7CjE0 NDc0OiAgZWxzZSBpZiAoYS0+ZHBwY2xrX2toeiAhPSBiLT5kcHBjbGtfa2h6KQoxNDQ3NDogICBy ZXR1cm4gZmFsc2U7CjE0NDc0OiAgZWxzZSBpZiAoYS0+ZGNmY2xrX2toeiAhPSBiLT5kY2ZjbGtf a2h6KQoxNDQ3NDogICByZXR1cm4gZmFsc2U7CjE0NDc0OiAgZWxzZSBpZiAoYS0+ZGNmY2xrX2Rl ZXBfc2xlZXBfa2h6ICE9IGItPmRjZmNsa19kZWVwX3NsZWVwX2toeikKMTQ0NzQ6ICAgcmV0dXJu IGZhbHNlOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIHN0cnVjdCBjbGtfbWdyX2Z1bmNzIGRjbjIxX2Z1bmNzID0gewox NDQ3NDogIC5nZXRfZHBfcmVmX2Nsa19mcmVxdWVuY3kgPSBkY2UxMl9nZXRfZHBfcmVmX2ZyZXFf a2h6LAoxNDQ3NDogIC51cGRhdGVfY2xvY2tzID0gcm5fdXBkYXRlX2Nsb2NrcywKMTQ0NzQ6ICAu aW5pdF9jbG9ja3MgPSBybl9pbml0X2Nsb2NrcywKMTQ0NzQ6ICAuZW5hYmxlX3BtZV93YSA9IHJu X2VuYWJsZV9wbWVfd2EsCjE0NDc0OiAgLmFyZV9jbG9ja19zdGF0ZXNfZXF1YWwgPSBybl9hcmVf Y2xvY2tfc3RhdGVzX2VxdWFsLAoxNDQ3NDogIC5ub3RpZnlfd21fcmFuZ2VzID0gcm5fbm90aWZ5 X3dtX3JhbmdlcwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsa19id19wYXJhbXMg cm5fYndfcGFyYW1zID0gewoxNDQ3NDogIC52cmFtX3R5cGUgPSBEZHI0TWVtVHlwZSwKMTQ0NzQ6 ICAubnVtX2NoYW5uZWxzID0gMSwKMTQ0NzQ6ICAuY2xrX3RhYmxlID0gewoxNDQ3NDogICAuZW50 cmllcyA9IHsKMTQ0NzQ6ICAgIHsKMTQ0NzQ6ICAgICAudm9sdGFnZSA9IDAsCjE0NDc0OiAgICAg LmRjZmNsa19taHogPSA0MDAsCjE0NDc0OiAgICAgLmZjbGtfbWh6ID0gNDAwLAoxNDQ3NDogICAg IC5tZW1jbGtfbWh6ID0gODAwLAoxNDQ3NDogICAgIC5zb2NjbGtfbWh6ID0gMCwKMTQ0NzQ6ICAg IH0sCjE0NDc0OiAgICB7CjE0NDc0OiAgICAgLnZvbHRhZ2UgPSAwLAoxNDQ3NDogICAgIC5kY2Zj bGtfbWh6ID0gNDgzLAoxNDQ3NDogICAgIC5mY2xrX21oeiA9IDgwMCwKMTQ0NzQ6ICAgICAubWVt Y2xrX21oeiA9IDE2MDAsCjE0NDc0OiAgICAgLnNvY2Nsa19taHogPSAwLAoxNDQ3NDogICAgfSwK MTQ0NzQ6ICAgIHsKMTQ0NzQ6ICAgICAudm9sdGFnZSA9IDAsCjE0NDc0OiAgICAgLmRjZmNsa19t aHogPSA2MDIsCjE0NDc0OiAgICAgLmZjbGtfbWh6ID0gMTA2NywKMTQ0NzQ6ICAgICAubWVtY2xr X21oeiA9IDEwNjcsCjE0NDc0OiAgICAgLnNvY2Nsa19taHogPSAwLAoxNDQ3NDogICAgfSwKMTQ0 NzQ6ICAgIHsKMTQ0NzQ6ICAgICAudm9sdGFnZSA9IDAsCjE0NDc0OiAgICAgLmRjZmNsa19taHog PSA3MzgsCjE0NDc0OiAgICAgLmZjbGtfbWh6ID0gMTMzMywKMTQ0NzQ6ICAgICAubWVtY2xrX21o eiA9IDE2MDAsCjE0NDc0OiAgICAgLnNvY2Nsa19taHogPSAwLAoxNDQ3NDogICAgfSwKMTQ0NzQ6 ICAgfSwKMTQ0NzQ6IAoxNDQ3NDogICAubnVtX2VudHJpZXMgPSA0LAoxNDQ3NDogIH0sCjE0NDc0 OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB3bV90YWJsZSBkZHI0X3dtX3RhYmxl ID0gewoxNDQ3NDogIC5lbnRyaWVzID0gewoxNDQ3NDogICB7CjE0NDc0OiAgICAud21faW5zdCA9 IDAsCjE0NDc0OiAgICAud21fdHlwZSA9IFdNX1RZUEVfUFNUQVRFX0NIRywKMTQ0NzQ6ICAgIC5w c3RhdGVfbGF0ZW5jeV91cyA9IDExLjcyLAoxNDQ3NDogICAgLnNyX2V4aXRfdGltZV91cyA9IDYu MDksCjE0NDc0OiAgICAuc3JfZW50ZXJfcGx1c19leGl0X3RpbWVfdXMgPSA3LjE0LAoxNDQ3NDog ICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAgfSwKMTQ0NzQ6ICAgewoxNDQ3NDogICAgLndtX2lu c3QgPSAxLAoxNDQ3NDogICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9DSEcsCjE0NDc0OiAg ICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS43MiwKMTQ0NzQ6ICAgIC5zcl9leGl0X3RpbWVfdXMg PSAxMC4xMiwKMTQ0NzQ6ICAgIC5zcl9lbnRlcl9wbHVzX2V4aXRfdGltZV91cyA9IDExLjQ4LAox NDQ3NDogICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAgfSwKMTQ0NzQ6ICAgewoxNDQ3NDogICAg LndtX2luc3QgPSAyLAoxNDQ3NDogICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9DSEcsCjE0 NDc0OiAgICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS43MiwKMTQ0NzQ6ICAgIC5zcl9leGl0X3Rp bWVfdXMgPSAxMC4xMiwKMTQ0NzQ6ICAgIC5zcl9lbnRlcl9wbHVzX2V4aXRfdGltZV91cyA9IDEx LjQ4LAoxNDQ3NDogICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAgfSwKMTQ0NzQ6ICAgewoxNDQ3 NDogICAgLndtX2luc3QgPSAzLAoxNDQ3NDogICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9D SEcsCjE0NDc0OiAgICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS43MiwKMTQ0NzQ6ICAgIC5zcl9l eGl0X3RpbWVfdXMgPSAxMC4xMiwKMTQ0NzQ6ICAgIC5zcl9lbnRlcl9wbHVzX2V4aXRfdGltZV91 cyA9IDExLjQ4LAoxNDQ3NDogICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAgfSwKMTQ0NzQ6ICB9 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgd21fdGFibGUgbHBkZHI0X3dtX3RhYmxl ID0gewoxNDQ3NDogIC5lbnRyaWVzID0gewoxNDQ3NDogICB7CjE0NDc0OiAgICAud21faW5zdCA9 IDAsCjE0NDc0OiAgICAud21fdHlwZSA9IFdNX1RZUEVfUFNUQVRFX0NIRywKMTQ0NzQ6ICAgIC5w c3RhdGVfbGF0ZW5jeV91cyA9IDExLjY1MzMzLAoxNDQ3NDogICAgLnNyX2V4aXRfdGltZV91cyA9 IDUuMzIsCjE0NDc0OiAgICAuc3JfZW50ZXJfcGx1c19leGl0X3RpbWVfdXMgPSA2LjM4LAoxNDQ3 NDogICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAgfSwKMTQ0NzQ6ICAgewoxNDQ3NDogICAgLndt X2luc3QgPSAxLAoxNDQ3NDogICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9DSEcsCjE0NDc0 OiAgICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS42NTMzMywKMTQ0NzQ6ICAgIC5zcl9leGl0X3Rp bWVfdXMgPSA5LjgyLAoxNDQ3NDogICAgLnNyX2VudGVyX3BsdXNfZXhpdF90aW1lX3VzID0gMTEu MTk2LAoxNDQ3NDogICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAgfSwKMTQ0NzQ6ICAgewoxNDQ3 NDogICAgLndtX2luc3QgPSAyLAoxNDQ3NDogICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9D SEcsCjE0NDc0OiAgICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS42NTMzMywKMTQ0NzQ6ICAgIC5z cl9leGl0X3RpbWVfdXMgPSA5Ljg5LAoxNDQ3NDogICAgLnNyX2VudGVyX3BsdXNfZXhpdF90aW1l X3VzID0gMTEuMjQsCjE0NDc0OiAgICAudmFsaWQgPSB0cnVlLAoxNDQ3NDogICB9LAoxNDQ3NDog ICB7CjE0NDc0OiAgICAud21faW5zdCA9IDMsCjE0NDc0OiAgICAud21fdHlwZSA9IFdNX1RZUEVf UFNUQVRFX0NIRywKMTQ0NzQ6ICAgIC5wc3RhdGVfbGF0ZW5jeV91cyA9IDExLjY1MzMzLAoxNDQ3 NDogICAgLnNyX2V4aXRfdGltZV91cyA9IDkuNzQ4LAoxNDQ3NDogICAgLnNyX2VudGVyX3BsdXNf ZXhpdF90aW1lX3VzID0gMTEuMTAyLAoxNDQ3NDogICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAg fSwKMTQ0NzQ6ICB9CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyB1bnNp Z25lZCBpbnQgZmluZF9kY2ZjbGtfZm9yX3ZvbHRhZ2Uoc3RydWN0IGRwbV9jbG9ja3MgKmNsb2Nr X3RhYmxlLCB1bnNpZ25lZCBpbnQgdm9sdGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgaTsKMTQ0 NzQ6IAoxNDQ3NDogIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKMTQ0NzQ6ICAgaWYgKGNsb2Nr X3RhYmxlLT5EY2ZDbG9ja3NbaV0uVm9sID09IHZvbHRhZ2UpCjE0NDc0OiAgICByZXR1cm4gY2xv Y2tfdGFibGUtPkRjZkNsb2Nrc1tpXS5GcmVxOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogICh7 IGludCBfX3JldF93YXJuX29uID0gISEoISgwKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9f cmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIg Ii5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJc biIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJc biIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJc dC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1 Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImki ICgiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIx L3JuX2Nsa19tZ3IuYyIpLCAiaSIgKDYzMSksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwg ImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xh dGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5s b25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoNDkpKTsgfSk7IH0g d2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CjE0 NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyB2b2lkIHJuX2Ns a19tZ3JfaGVscGVyX3BvcHVsYXRlX2J3X3BhcmFtcyhzdHJ1Y3QgY2xrX2J3X3BhcmFtcyAqYndf cGFyYW1zLCBzdHJ1Y3QgZHBtX2Nsb2NrcyAqY2xvY2tfdGFibGUsIHN0cnVjdCBpbnRlZ3JhdGVk X2luZm8gKmJpb3NfaW5mbykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgaSwgaiA9IDA7CjE0NDc0OiAK MTQ0NzQ6ICBqID0gLTE7CjE0NDc0OiAKMTQ0NzQ6ICAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEh KCEoNCA8PSA4KSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkg ZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIi ICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAi ICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAi JWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBi dWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIg Ilx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIpLCAi aSIgKDY0MSksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0 IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIu cHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIg Ii5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoNTApKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0 aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgZm9yIChpID0gNCAtIDE7IGkgPj0gMDsgaS0tKSB7CjE0NDc0OiAgIGlmIChj bG9ja190YWJsZS0+RkNsb2Nrc1tpXS5GcmVxICE9IDApIHsKMTQ0NzQ6ICAgIGogPSBpOwoxNDQ3 NDogICAgYnJlYWs7CjE0NDc0OiAgIH0KMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoaiA9 PSAtMSkgewoxNDQ3NDogCjE0NDc0OiAgICh7IGludCBfX3JldF93YXJuX29uID0gISEoISgwKSk7 IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFz bSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNo c2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJi IiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIi ICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6Omxp bmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYisl YzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIpLCAiaSIgKDY1NCksICJp IiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkp KTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24g LmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9u XG5cdCIgOiA6ICJpIiAoNTEpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEh KF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CjE0NDc0OiAgIHJldHVybjsKMTQ0NzQ6ICB9CjE0NDc0 OiAKMTQ0NzQ6ICBid19wYXJhbXMtPmNsa190YWJsZS5udW1fZW50cmllcyA9IGogKyAxOwoxNDQ3 NDogCjE0NDc0OiAgZm9yIChpID0gMDsgaSA8IGJ3X3BhcmFtcy0+Y2xrX3RhYmxlLm51bV9lbnRy aWVzOyBpKyssIGotLSkgewoxNDQ3NDogICBid19wYXJhbXMtPmNsa190YWJsZS5lbnRyaWVzW2ld LmZjbGtfbWh6ID0gY2xvY2tfdGFibGUtPkZDbG9ja3Nbal0uRnJlcTsKMTQ0NzQ6ICAgYndfcGFy YW1zLT5jbGtfdGFibGUuZW50cmllc1tpXS5tZW1jbGtfbWh6ID0gY2xvY2tfdGFibGUtPk1lbUNs b2Nrc1tqXS5GcmVxOwoxNDQ3NDogICBid19wYXJhbXMtPmNsa190YWJsZS5lbnRyaWVzW2ldLnZv bHRhZ2UgPSBjbG9ja190YWJsZS0+RkNsb2Nrc1tqXS5Wb2w7CjE0NDc0OiAgIGJ3X3BhcmFtcy0+ Y2xrX3RhYmxlLmVudHJpZXNbaV0uZGNmY2xrX21oeiA9IGZpbmRfZGNmY2xrX2Zvcl92b2x0YWdl KGNsb2NrX3RhYmxlLCBjbG9ja190YWJsZS0+RkNsb2Nrc1tqXS5Wb2wpOwoxNDQ3NDogIH0KMTQ0 NzQ6IAoxNDQ3NDogIGJ3X3BhcmFtcy0+dnJhbV90eXBlID0gYmlvc19pbmZvLT5tZW1vcnlfdHlw ZTsKMTQ0NzQ6ICBid19wYXJhbXMtPm51bV9jaGFubmVscyA9IGJpb3NfaW5mby0+bWFfY2hhbm5l bF9udW1iZXI7CjE0NDc0OiAKMTQ0NzQ6ICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CjE0NDc0 OiAgIGJ3X3BhcmFtcy0+d21fdGFibGUuZW50cmllc1tpXS53bV9pbnN0ID0gaTsKMTQ0NzQ6IAox NDQ3NDogICBpZiAoaSA+PSBid19wYXJhbXMtPmNsa190YWJsZS5udW1fZW50cmllcykgewoxNDQ3 NDogICAgYndfcGFyYW1zLT53bV90YWJsZS5lbnRyaWVzW2ldLnZhbGlkID0gZmFsc2U7CjE0NDc0 OiAgICBjb250aW51ZTsKMTQ0NzQ6ICAgfQoxNDQ3NDogCjE0NDc0OiAgIGJ3X3BhcmFtcy0+d21f dGFibGUuZW50cmllc1tpXS53bV90eXBlID0gV01fVFlQRV9QU1RBVEVfQ0hHOwoxNDQ3NDogICBi d19wYXJhbXMtPndtX3RhYmxlLmVudHJpZXNbaV0udmFsaWQgPSB0cnVlOwoxNDQ3NDogIH0KMTQ0 NzQ6IAoxNDQ3NDogIGlmIChid19wYXJhbXMtPnZyYW1fdHlwZSA9PSBMcERkcjRNZW1UeXBlKSB7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIGJ3X3BhcmFtcy0+d21fdGFibGUuZW50 cmllc1szXS5wc3RhdGVfbGF0ZW5jeV91cyA9IDQuOTc3OwoxNDQ3NDogICBid19wYXJhbXMtPndt X3RhYmxlLmVudHJpZXNbM10ud21faW5zdCA9IDM7CjE0NDc0OiAgIGJ3X3BhcmFtcy0+d21fdGFi bGUuZW50cmllc1szXS53bV90eXBlID0gV01fVFlQRV9SRVRSQUlOSU5HOwoxNDQ3NDogICBid19w YXJhbXMtPndtX3RhYmxlLmVudHJpZXNbM10udmFsaWQgPSB0cnVlOwoxNDQ3NDogIH0KMTQ0NzQ6 IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB2b2lkIHJuX2Nsa19tZ3JfY29uc3RydWN0KAoxNDQ3 NDogICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogICBzdHJ1Y3QgY2xrX21ncl9pbnRl cm5hbCAqY2xrX21nciwKMTQ0NzQ6ICAgc3RydWN0IHBwX3NtdV9mdW5jcyAqcHBfc211LAoxNDQ3 NDogICBzdHJ1Y3QgZGNjZyAqZGNjZykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfZGVidWdf b3B0aW9ucyAqZGVidWcgPSAmY3R4LT5kYy0+ZGVidWc7CjE0NDc0OiAgc3RydWN0IGRwbV9jbG9j a3MgY2xvY2tfdGFibGUgPSB7IDAgfTsKMTQ0NzQ6IAoxNDQ3NDogIGNsa19tZ3ItPmJhc2UuY3R4 ID0gY3R4OwoxNDQ3NDogIGNsa19tZ3ItPmJhc2UuZnVuY3MgPSAmZGNuMjFfZnVuY3M7CjE0NDc0 OiAKMTQ0NzQ6ICBjbGtfbWdyLT5wcF9zbXUgPSBwcF9zbXU7CjE0NDc0OiAKMTQ0NzQ6ICBjbGtf bWdyLT5kY2NnID0gZGNjZzsKMTQ0NzQ6ICBjbGtfbWdyLT5kZnNfYnlwYXNzX2Rpc3BfY2xrID0g MDsKMTQ0NzQ6IAoxNDQ3NDogIGNsa19tZ3ItPmRwcmVmY2xrX3NzX3BlcmNlbnRhZ2UgPSAwOwox NDQ3NDogIGNsa19tZ3ItPmRwcmVmY2xrX3NzX2RpdmlkZXIgPSAxMDAwOwoxNDQ3NDogIGNsa19t Z3ItPnNzX29uX2RwcmVmY2xrID0gZmFsc2U7CjE0NDc0OiAgY2xrX21nci0+ZGZzX3JlZl9mcmVx X2toeiA9IDQ4MDAwOwoxNDQ3NDogCjE0NDc0OiAgY2xrX21nci0+c211X3ZlciA9IHJuX3ZiaW9z X3NtdV9nZXRfc211X3ZlcnNpb24oY2xrX21ncik7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoKGN0eC0+ ZGNlX2Vudmlyb25tZW50ID09IERDRV9FTlZfRlBHQV9NQVhJTVVTKSkgewoxNDQ3NDogICBkY24y MV9mdW5jcy51cGRhdGVfY2xvY2tzID0gZGNuMl91cGRhdGVfY2xvY2tzX2ZwZ2E7CjE0NDc0OiAg IGNsa19tZ3ItPmJhc2UuZGVudGlzdF92Y29fZnJlcV9raHogPSAzNjAwMDAwOwoxNDQ3NDogIH0g ZWxzZSB7CjE0NDc0OiAgIHN0cnVjdCBjbGtfbG9nX2luZm8gbG9nX2luZm8gPSB7MH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogICBjbGtfbWdyLT5iYXNlLmRlbnRpc3RfdmNvX2ZyZXFfa2h6ID0g Z2V0X3Zjb19mcmVxdWVuY3lfZnJvbV9yZWcoY2xrX21ncik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogICBpZiAoY2xrX21nci0+YmFzZS5kZW50aXN0X3Zjb19mcmVxX2toeiA9PSAwKQoxNDQ3NDog ICAgY2xrX21nci0+YmFzZS5kZW50aXN0X3Zjb19mcmVxX2toeiA9IDM2MDAwMDA7CjE0NDc0OiAK MTQ0NzQ6ICAgaWYgKGN0eC0+ZGNfYmlvcy0+aW50ZWdyYXRlZF9pbmZvLT5tZW1vcnlfdHlwZSA9 PSBMcERkcjRNZW1UeXBlKSB7CjE0NDc0OiAgICBybl9id19wYXJhbXMud21fdGFibGUgPSBscGRk cjRfd21fdGFibGU7CjE0NDc0OiAgIH0gZWxzZSB7CjE0NDc0OiAgICBybl9id19wYXJhbXMud21f dGFibGUgPSBkZHI0X3dtX3RhYmxlOwoxNDQ3NDogICB9CjE0NDc0OiAKMTQ0NzQ6ICAgcm5fZHVt cF9jbGtfcmVnaXN0ZXJzKCZjbGtfbWdyLT5iYXNlLmJvb3Rfc25hcHNob3QsICZjbGtfbWdyLT5i YXNlLCAmbG9nX2luZm8pOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogIGNsa19tZ3ItPmJhc2Uu ZHByZWZjbGtfa2h6ID0gNjAwMDAwOwoxNDQ3NDogIGRjZV9jbG9ja19yZWFkX3NzX2luZm8oY2xr X21ncik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGNsa19tZ3ItPmJhc2UuYndfcGFyYW1zID0g JnJuX2J3X3BhcmFtczsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChwcF9zbXUgJiYgcHBfc211LT5ybl9m dW5jcy5nZXRfZHBtX2Nsb2NrX3RhYmxlKSB7CjE0NDc0OiAgIHBwX3NtdS0+cm5fZnVuY3MuZ2V0 X2RwbV9jbG9ja190YWJsZSgmcHBfc211LT5ybl9mdW5jcy5wcF9zbXUsICZjbG9ja190YWJsZSk7 CjE0NDc0OiAgIGlmIChjdHgtPmRjX2Jpb3MgJiYgY3R4LT5kY19iaW9zLT5pbnRlZ3JhdGVkX2lu Zm8pIHsKMTQ0NzQ6ICAgIHJuX2Nsa19tZ3JfaGVscGVyX3BvcHVsYXRlX2J3X3BhcmFtcyAoY2xr X21nci0+YmFzZS5id19wYXJhbXMsICZjbG9ja190YWJsZSwgY3R4LT5kY19iaW9zLT5pbnRlZ3Jh dGVkX2luZm8pOwoxNDQ3NDogICB9CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0OiAgaWYgKCEoY3R4 LT5kY2VfZW52aXJvbm1lbnQgPT0gRENFX0VOVl9GUEdBX01BWElNVVMpICYmIGNsa19tZ3ItPnNt dV92ZXIgPj0gMHgwMDM3MTUwMCkgewoxNDQ3NDogCjE0NDc0OiAgIHJuX3ZiaW9zX3NtdV9lbmFi bGVfNDhtaHpfdG1kcF9yZWZjbGtfcHdyZHduKGNsa19tZ3IsICFkZWJ1Zy0+ZGlzYWJsZV80OG1o el9wd3Jkd24pOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KPT09IEVORCBHQ0MgRFVNUCA9PT0KbWFrZVs4 XTogKioqIFtzY3JpcHRzL01ha2VmaWxlLmJ1aWxkOjI2ODogZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3Iub10gRXJyb3IgMQpt YWtlWzddOiAqKiogW3NjcmlwdHMvTWFrZWZpbGUuYnVpbGQ6NTA1OiBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdV0gRXJyb3IgMgptYWtlWzZdOiAqKiogW3NjcmlwdHMvTWFrZWZpbGUuYnVpbGQ6 NTA1OiBkcml2ZXJzL2dwdS9kcm1dIEVycm9yIDIKbWFrZVs1XTogKioqIFtzY3JpcHRzL01ha2Vm aWxlLmJ1aWxkOjUwNTogZHJpdmVycy9ncHVdIEVycm9yIDIKbWFrZVs0XTogKioqIFtNYWtlZmls ZToxNjgzOiBkcml2ZXJzXSBFcnJvciAyCm1ha2VbM106ICoqKiBbZGViaWFuL3J1bGVzOjY6IGJ1 aWxkXSBFcnJvciAyChtbMW1kcGtnLWJ1aWxkcGFja2FnZTogG1swbRtbMTszMW1lcnJvchtbMG06 IGRlYmlhbi9ydWxlcyBidWlsZCBzdWJwcm9jZXNzIHJldHVybmVkIGV4aXQgc3RhdHVzIDIKbWFr ZVsyXTogKioqIFtzY3JpcHRzL01ha2VmaWxlLnBhY2thZ2U6ODM6IGJpbmRlYi1wa2ddIEVycm9y IDIKbWFrZVsxXTogKioqIFtNYWtlZmlsZToxNDE3OiBiaW5kZWItcGtnXSBFcnJvciAyCm1ha2U6 ICoqKiBbTWFrZWZpbGU6MzI3OiBfX2J1aWxkX29uZV9ieV9vbmVdIEVycm9yIDIK --===============2530410277144048522== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="20200324ccFpC1kD.out" Ly8gVGFyZ2V0OiB4ODZfNjQtbGludXgtZ251Ci8vIENvbmZpZ3VyZWQgd2l0aDogLi4vc3JjL2Nv bmZpZ3VyZSAtdiAtLXdpdGgtcGtndmVyc2lvbj0nRGViaWFuIDEwLTIwMjAwMzIxLTEnIC0td2l0 aC1idWd1cmw9ZmlsZTovLy91c3Ivc2hhcmUvZG9jL2djYy0xMC9SRUFETUUuQnVncyAtLWVuYWJs ZS1sYW5ndWFnZXM9YyxjKyssZ28sYnJpZyxkLGZvcnRyYW4sb2JqYyxvYmotYysrLG0yIC0tcHJl Zml4PS91c3IgLS13aXRoLWdjYy1tYWpvci12ZXJzaW9uLW9ubHkgLS1wcm9ncmFtLXN1ZmZpeD0t MTAgLS1wcm9ncmFtLXByZWZpeD14ODZfNjQtbGludXgtZ251LSAtLWVuYWJsZS1zaGFyZWQgLS1l bmFibGUtbGlua2VyLWJ1aWxkLWlkIC0tbGliZXhlY2Rpcj0vdXNyL2xpYiAtLXdpdGhvdXQtaW5j bHVkZWQtZ2V0dGV4dCAtLWVuYWJsZS10aHJlYWRzPXBvc2l4IC0tbGliZGlyPS91c3IvbGliIC0t ZW5hYmxlLW5scyAtLWVuYWJsZS1jbG9jYWxlPWdudSAtLWVuYWJsZS1saWJzdGRjeHgtZGVidWcg LS1lbmFibGUtbGlic3RkY3h4LXRpbWU9eWVzIC0td2l0aC1kZWZhdWx0LWxpYnN0ZGN4eC1hYmk9 bmV3IC0tZW5hYmxlLWdudS11bmlxdWUtb2JqZWN0IC0tZGlzYWJsZS12dGFibGUtdmVyaWZ5IC0t ZW5hYmxlLXBsdWdpbiAtLWVuYWJsZS1kZWZhdWx0LXBpZSAtLXdpdGgtc3lzdGVtLXpsaWIgLS13 aXRoLXRhcmdldC1zeXN0ZW0temxpYj1hdXRvIC0tZW5hYmxlLW9iamMtZ2M9YXV0byAtLWVuYWJs ZS1tdWx0aWFyY2ggLS1kaXNhYmxlLXdlcnJvciAtLXdpdGgtYXJjaC0zMj1pNjg2IC0td2l0aC1h Ymk9bTY0IC0td2l0aC1tdWx0aWxpYi1saXN0PW0zMixtNjQsbXgzMiAtLWVuYWJsZS1tdWx0aWxp YiAtLXdpdGgtdHVuZT1nZW5lcmljIC0tZW5hYmxlLW9mZmxvYWQtdGFyZ2V0cz1udnB0eC1ub25l LGFtZGdjbi1hbWRoc2EsaHNhIC0td2l0aG91dC1jdWRhLWRyaXZlciAtLWVuYWJsZS1jaGVja2lu Zz1yZWxlYXNlIC0tYnVpbGQ9eDg2XzY0LWxpbnV4LWdudSAtLWhvc3Q9eDg2XzY0LWxpbnV4LWdu dSAtLXRhcmdldD14ODZfNjQtbGludXgtZ251Ci8vIFRocmVhZCBtb2RlbDogcG9zaXgKLy8gU3Vw cG9ydGVkIExUTyBjb21wcmVzc2lvbiBhbGdvcml0aG1zOiB6bGliIHpzdGQKLy8gZ2NjIHZlcnNp b24gMTAuMC4xIDIwMjAwMzIxIChleHBlcmltZW50YWwpIFttYXN0ZXIgcmV2aXNpb24gMTU3MTFl ODM3YjI6YWI2NTg2Y2IwMjQ6NDk3NDk4Yzg3OGQ0ODc1NDMxOGU0ODY0MjhlMmFhMzA4NTQwMjBi OV0gKERlYmlhbiAxMC0yMDIwMDMyMS0xKSAKLy8gCi8vIGR1cmluZyBSVEwgcGFzczogY29tYmlu ZQovLyBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNu MjEvcm5fY2xrX21nci5jOiBJbiBmdW5jdGlvbiDigJhybl91cGRhdGVfY2xvY2tz4oCZOgovLyBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5f Y2xrX21nci5jOjE5MzoxOiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogaW4gaXg4Nl9jY19tb2Rl LCBhdCBjb25maWcvaTM4Ni9pMzg2LmM6MTUyODUKLy8gICAxOTMgfCB9Ci8vICAgICAgIHwgXgov LyAweDVkMDZhMiBpeDg2X2NjX21vZGUocnR4X2NvZGUsIHJ0eF9kZWYqLCBydHhfZGVmKikKLy8g CS4uLy4uL3NyYy9nY2MvY29uZmlnL2kzODYvaTM4Ni5jOjE1Mjg1Ci8vIDB4MTI3OGRlMiBzaW1w bGlmeV9zZXQKLy8gCS4uLy4uL3NyYy9nY2MvY29tYmluZS5jOjY5MzgKLy8gMHgxMjdjNDZhIHN1 YnN0Ci8vIAkuLi8uLi9zcmMvZ2NjL2NvbWJpbmUuYzo1NzE5Ci8vIDB4MTI3YzVmYyBzdWJzdAov LyAJLi4vLi4vc3JjL2djYy9jb21iaW5lLmM6NTU4MQovLyAweDEyN2U3YzkgdHJ5X2NvbWJpbmUK Ly8gCS4uLy4uL3NyYy9nY2MvY29tYmluZS5jOjM0NzkKLy8gMHgxMjg0NzcyIGNvbWJpbmVfaW5z dHJ1Y3Rpb25zCi8vIAkuLi8uLi9zcmMvZ2NjL2NvbWJpbmUuYzoxNDY5Ci8vIDB4MTI4NDc3MiBy ZXN0X29mX2hhbmRsZV9jb21iaW5lCi8vIAkuLi8uLi9zcmMvZ2NjL2NvbWJpbmUuYzoxNTA1OQov LyAweDEyODQ3NzIgZXhlY3V0ZQovLyAJLi4vLi4vc3JjL2djYy9jb21iaW5lLmM6MTUxMDQKLy8g UGxlYXNlIHN1Ym1pdCBhIGZ1bGwgYnVnIHJlcG9ydCwKLy8gd2l0aCBwcmVwcm9jZXNzZWQgc291 cmNlIGlmIGFwcHJvcHJpYXRlLgovLyBQbGVhc2UgaW5jbHVkZSB0aGUgY29tcGxldGUgYmFja3Ry YWNlIHdpdGggYW55IGJ1ZyByZXBvcnQuCi8vIFNlZSA8ZmlsZTovLy91c3Ivc2hhcmUvZG9jL2dj Yy0xMC9SRUFETUUuQnVncz4gZm9yIGluc3RydWN0aW9ucy4KCi8vIC91c3IvbGliL2djYy94ODZf NjQtbGludXgtZ251LzEwL2NjMSAtcXVpZXQgLW5vc3RkaW5jIC1JIC4vYXJjaC94ODYvaW5jbHVk ZSAtSSAuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkIC1JIC4vaW5jbHVkZSAtSSAuL2FyY2gv eDg2L2luY2x1ZGUvdWFwaSAtSSAuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkgLUkg Li9pbmNsdWRlL3VhcGkgLUkgLi9pbmNsdWRlL2dlbmVyYXRlZC91YXBpIC1JIC4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vcG93ZXJwbGF5L2luYy8gLUkgLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9pbmNsdWRlL2FzaWNfcmVnIC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vaW5jbHVkZSAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL3Bvd2Vy cGxheS9zbXVtZ3IgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9wb3dlcnBsYXkv aHdtZ3IgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy8g LUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9odyAtSSAu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nciAtSSAuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvbW9kdWxlcy9pbmMgLUkgLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L21vZHVsZXMvZnJlZXN5bmMgLUkgLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L21vZHVsZXMvY29sb3IgLUkgLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L21vZHVsZXMvaW5mb19wYWNrZXQg LUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L21vZHVsZXMvcG93ZXIg LUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RtdWIvaW5jIC1JIC4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYyAtSSAuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXNpY19yZWcgLUkgLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9pbmNsdWRlIC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v YW1kZ3B1IC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vcG93ZXJwbGF5L2luYyAt SSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2FjcC9pbmNsdWRlIC1JIC4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheSAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZSAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2FtZGdwdV9kbSAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2FtZGtmZCAtaW11 bHRpYXJjaCB4ODZfNjQtbGludXgtZ251IC1EIF9fS0VSTkVMX18gLUQgQ09ORklHX0FTX0NGST0x IC1EIENPTkZJR19BU19DRklfU0lHTkFMX0ZSQU1FPTEgLUQgQ09ORklHX0FTX0NGSV9TRUNUSU9O Uz0xIC1EIENPTkZJR19BU19TU1NFMz0xIC1EIENPTkZJR19BU19BVlg9MSAtRCBDT05GSUdfQVNf QVZYMj0xIC1EIENPTkZJR19BU19BVlg1MTI9MSAtRCBDT05GSUdfQVNfU0hBMV9OST0xIC1EIENP TkZJR19BU19TSEEyNTZfTkk9MSAtRCBDT05GSUdfQVNfQURYPTEgLUQgQ0NfVVNJTkdfRkVOVFJZ IC1EIEJVSUxEX0ZFQVRVUkVfVElNSU5HX1NZTkM9MCAtRCBNT0RVTEUgLUQgS0JVSUxEX0JBU0VO QU1FPSJybl9jbGtfbWdyIiAtRCBLQlVJTERfTU9ETkFNRT0iYW1kZ3B1IiAtaXN5c3RlbSAvdXNy L2xpYi9nY2MveDg2XzY0LWxpbnV4LWdudS8xMC9pbmNsdWRlIC1pbmNsdWRlIC4vaW5jbHVkZS9s aW51eC9rY29uZmlnLmggLWluY2x1ZGUgLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgg LU1EIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24y MS8ucm5fY2xrX21nci5vLmQgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyAtcXVpZXQgLWR1bXBiYXNlIHJuX2Nsa19tZ3Iu YyAtbW5vLXNzZSAtbW5vLW1teCAtbW5vLXNzZTIgLW1uby0zZG5vdyAtbW5vLWF2eCAtbTY0IC1t bm8tODAzODcgLW1uby1mcC1yZXQtaW4tMzg3IC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMg LW1za2lwLXJheC1zZXR1cCAtbWFyY2g9azggLW1uby1yZWQtem9uZSAtbWNtb2RlbD1rZXJuZWwg LW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVy IC1tcmVjb3JkLW1jb3VudCAtbWZlbnRyeSAtYXV4YmFzZS1zdHJpcCBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21nci5vIC1PMiAt V2FsbCAtV3VuZGVmIC1XZXJyb3I9c3RyaWN0LXByb3RvdHlwZXMgLVduby10cmlncmFwaHMgLVdl cnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtV2Vycm9yPWltcGxpY2l0LWludCAt V25vLWZvcm1hdC1zZWN1cml0eSAtV25vLXNpZ24tY29tcGFyZSAtV25vLWZyYW1lLWFkZHJlc3Mg LVdmb3JtYXQtdHJ1bmNhdGlvbj0wIC1XZm9ybWF0LW92ZXJmbG93PTAgLVduby1hZGRyZXNzLW9m LXBhY2tlZC1tZW1iZXIgLVdmcmFtZS1sYXJnZXItdGhhbj0yMDQ4IC1Xbm8tdW51c2VkLWJ1dC1z ZXQtdmFyaWFibGUgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaD0zIC1XdW51c2VkLWNvbnN0LXZhcmlh YmxlPTAgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgLVd2bGEgLVduby1wb2ludGVyLXNp Z24gLVduby1zdHJpbmdvcC10cnVuY2F0aW9uIC1XZXJyb3I9ZGF0ZS10aW1lIC1XZXJyb3I9aW5j b21wYXRpYmxlLXBvaW50ZXItdHlwZXMgLVdlcnJvcj1kZXNpZ25hdGVkLWluaXQgLVduby1wYWNr ZWQtbm90LWFsaWduZWQgLXN0ZD1nbnU5MCAtcCAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNv bW1vbiAtZnNob3J0LXdjaGFyIC1mbm8tUElFIC1mYWxpZ24tanVtcHM9MSAtZmFsaWduLWxvb3Bz PTEgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtZm5vLWp1bXAtdGFibGVzIC1mbm8t ZGVsZXRlLW51bGwtcG9pbnRlci1jaGVja3MgLWZzdGFjay1wcm90ZWN0b3IgLWZuby12YXItdHJh Y2tpbmctYXNzaWdubWVudHMgLWZuby1zdHJpY3Qtb3ZlcmZsb3cgLWZuby1tZXJnZS1hbGwtY29u c3RhbnRzIC1mbWVyZ2UtY29uc3RhbnRzIC1mc3RhY2stY2hlY2s9bm8gLWZjb25zZXJ2ZS1zdGFj ayAtZm1hY3JvLXByZWZpeC1tYXA9Li89IC1mY2YtcHJvdGVjdGlvbj1ub25lIC1vIC0gLWZyYW5k b20tc2VlZD0wIC1mZHVtcC1ub2FkZHIKCiMgMSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIKIyAxICI8YnVpbHQtaW4+ IgojIDEgIjxjb21tYW5kLWxpbmU+IgojIDEgIi4vLi9pbmNsdWRlL2xpbnV4L2tjb25maWcuaCIg MQoKCgoKIyAxICIuL2luY2x1ZGUvZ2VuZXJhdGVkL2F1dG9jb25mLmgiIDEKIyA2ICIuLy4vaW5j bHVkZS9saW51eC9rY29uZmlnLmgiIDIKIyAxICI8Y29tbWFuZC1saW5lPiIgMgojIDEgIi4vLi9p bmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgiIDEKIyA1OSAiLi8uL2luY2x1ZGUvbGludXgv Y29tcGlsZXJfdHlwZXMuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvY29tcGlsZXJfYXR0cmlidXRl cy5oIiAxCiMgNjAgIi4vLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgiIDIKIyA2OCAi Li8uL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaCIKIyAxICIuL2luY2x1ZGUvbGludXgv Y29tcGlsZXItZ2NjLmgiIDEKIyA2OSAiLi8uL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMu aCIgMgojIDg1ICIuLy4vaW5jbHVkZS9saW51eC9jb21waWxlcl90eXBlcy5oIgpzdHJ1Y3QgZnRy YWNlX2JyYW5jaF9kYXRhIHsKIGNvbnN0IGNoYXIgKmZ1bmM7CiBjb25zdCBjaGFyICpmaWxlOwog dW5zaWduZWQgbGluZTsKIHVuaW9uIHsKICBzdHJ1Y3QgewogICB1bnNpZ25lZCBsb25nIGNvcnJl Y3Q7CiAgIHVuc2lnbmVkIGxvbmcgaW5jb3JyZWN0OwogIH07CiAgc3RydWN0IHsKICAgdW5zaWdu ZWQgbG9uZyBtaXNzOwogICB1bnNpZ25lZCBsb25nIGhpdDsKICB9OwogIHVuc2lnbmVkIGxvbmcg bWlzc19oaXRbMl07CiB9Owp9OwoKc3RydWN0IGZ0cmFjZV9saWtlbHlfZGF0YSB7CiBzdHJ1Y3Qg ZnRyYWNlX2JyYW5jaF9kYXRhIGRhdGE7CiB1bnNpZ25lZCBsb25nIGNvbnN0YW50Owp9OwojIDEg Ijxjb21tYW5kLWxpbmU+IiAyCiMgMSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIKIyAyNiAiZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIKIyAx ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2RjY2cu aCIgMQojIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5j L2h3L2RjY2cuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvZGNfdHlwZXMuaCIgMQojIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvZGNfdHlwZXMuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvb3NfdHlwZXMuaCIgMQojIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvZGMvb3NfdHlwZXMuaCIKIyAxICIuL2luY2x1ZGUvbGludXgva2dkYi5o IiAxCiMgMTYgIi4vaW5jbHVkZS9saW51eC9rZ2RiLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2xp bmthZ2UuaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaCIgMQoj IDYgIi4vaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvc3Ry aW5naWZ5LmgiIDEKIyA3ICIuL2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAyCiMgMSAiLi9pbmNs dWRlL2xpbnV4L2V4cG9ydC5oIiAxCiMgMTYgIi4vaW5jbHVkZS9saW51eC9leHBvcnQuaCIKZXh0 ZXJuIHN0cnVjdCBtb2R1bGUgX190aGlzX21vZHVsZTsKIyA0MyAiLi9pbmNsdWRlL2xpbnV4L2V4 cG9ydC5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9jb21waWxlci5oIiAxCiMgMTgwICIuL2luY2x1 ZGUvbGludXgvY29tcGlsZXIuaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC90eXBlcy5oIiAx CgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vdHlwZXMuaCIg MQojIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3R5cGVzLmgiIDEKCgoKCgoKIyAxICIu L2luY2x1ZGUvYXNtLWdlbmVyaWMvaW50LWxsNjQuaCIgMQojIDExICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvaW50LWxsNjQuaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9pbnQtbGw2 NC5oIiAxCiMgMTIgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2ludC1sbDY0LmgiCiMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2JpdHNwZXJsb25nLmgiIDEKIyAxMSAiLi9hcmNo L3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2JpdHNwZXJsb25nLmgiCiMgMSAiLi9pbmNsdWRlL2FzbS1n ZW5lcmljL2JpdHNwZXJsb25nLmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVy aWMvYml0c3BlcmxvbmcuaCIgMQojIDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRzcGVybG9u Zy5oIiAyCiMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9iaXRzcGVybG9uZy5oIiAy CiMgMTMgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2ludC1sbDY0LmgiIDIKCgoKCgoKCnR5 cGVkZWYgX19zaWduZWRfXyBjaGFyIF9fczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3U4OwoK dHlwZWRlZiBfX3NpZ25lZF9fIHNob3J0IF9fczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9f dTE2OwoKdHlwZWRlZiBfX3NpZ25lZF9fIGludCBfX3MzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg X191MzI7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIF9fc2lnbmVkX18gbG9uZyBsb25nIF9fczY0 OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwojIDEyICIu L2luY2x1ZGUvYXNtLWdlbmVyaWMvaW50LWxsNjQuaCIgMgoKCgoKdHlwZWRlZiBfX3M4IHM4Owp0 eXBlZGVmIF9fdTggdTg7CnR5cGVkZWYgX19zMTYgczE2Owp0eXBlZGVmIF9fdTE2IHUxNjsKdHlw ZWRlZiBfX3MzMiBzMzI7CnR5cGVkZWYgX191MzIgdTMyOwp0eXBlZGVmIF9fczY0IHM2NDsKdHlw ZWRlZiBfX3U2NCB1NjQ7CiMgOCAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdHlwZXMuaCIg MgojIDIgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vdHlwZXMuaCIgMgoj IDYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3R5cGVzLmgiIDIKIyAxNCAiLi9pbmNsdWRlL3VhcGkv bGludXgvdHlwZXMuaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9wb3NpeF90eXBlcy5oIiAx CgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUv dWFwaS9saW51eC9zdGRkZWYuaCIgMQojIDYgIi4vaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMgoK CgoKZW51bSB7CiBmYWxzZSA9IDAsCiB0cnVlID0gMQp9OwojIDYgIi4vaW5jbHVkZS91YXBpL2xp bnV4L3Bvc2l4X3R5cGVzLmgiIDIKIyAyNSAiLi9pbmNsdWRlL3VhcGkvbGludXgvcG9zaXhfdHlw ZXMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogdW5zaWduZWQgbG9uZyBmZHNfYml0c1sxMDI0IC8gKDgg KiBzaXplb2YobG9uZykpXTsKfSBfX2tlcm5lbF9mZF9zZXQ7CgoKdHlwZWRlZiB2b2lkICgqX19r ZXJuZWxfc2lnaGFuZGxlcl90KShpbnQpOwoKCnR5cGVkZWYgaW50IF9fa2VybmVsX2tleV90Owp0 eXBlZGVmIGludCBfX2tlcm5lbF9tcWRfdDsKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w b3NpeF90eXBlcy5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9wb3Np eF90eXBlc182NC5oIiAxCiMgMTEgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9wb3NpeF90 eXBlc182NC5oIgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX29sZF91aWRfdDsKdHlw ZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9vbGRfZ2lkX3Q7CgoKdHlwZWRlZiB1bnNpZ25l ZCBsb25nIF9fa2VybmVsX29sZF9kZXZfdDsKCgojIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5l cmljL3Bvc2l4X3R5cGVzLmgiIDEKIyAxNSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvcG9z aXhfdHlwZXMuaCIKdHlwZWRlZiBsb25nIF9fa2VybmVsX2xvbmdfdDsKdHlwZWRlZiB1bnNpZ25l ZCBsb25nIF9fa2VybmVsX3Vsb25nX3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfdWxvbmdfdCBfX2tl cm5lbF9pbm9fdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfbW9kZV90OwoKCgp0 eXBlZGVmIGludCBfX2tlcm5lbF9waWRfdDsKCgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfaXBjX3Bp ZF90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF91aWRfdDsKdHlwZWRlZiB1bnNp Z25lZCBpbnQgX19rZXJuZWxfZ2lkX3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfbG9uZ190IF9fa2Vy bmVsX3N1c2Vjb25kc190OwoKCgp0eXBlZGVmIGludCBfX2tlcm5lbF9kYWRkcl90OwoKCgp0eXBl ZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF91aWQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBf X2tlcm5lbF9naWQzMl90OwojIDcyICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9wb3NpeF90 eXBlcy5oIgp0eXBlZGVmIF9fa2VybmVsX3Vsb25nX3QgX19rZXJuZWxfc2l6ZV90Owp0eXBlZGVm IF9fa2VybmVsX2xvbmdfdCBfX2tlcm5lbF9zc2l6ZV90Owp0eXBlZGVmIF9fa2VybmVsX2xvbmdf dCBfX2tlcm5lbF9wdHJkaWZmX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiBpbnQgdmFsWzJdOwp9 IF9fa2VybmVsX2ZzaWRfdDsKCgoKCgp0eXBlZGVmIF9fa2VybmVsX2xvbmdfdCBfX2tlcm5lbF9v ZmZfdDsKdHlwZWRlZiBsb25nIGxvbmcgX19rZXJuZWxfbG9mZl90Owp0eXBlZGVmIF9fa2VybmVs X2xvbmdfdCBfX2tlcm5lbF9vbGRfdGltZV90OwoKCgp0eXBlZGVmIGxvbmcgbG9uZyBfX2tlcm5l bF90aW1lNjRfdDsKdHlwZWRlZiBfX2tlcm5lbF9sb25nX3QgX19rZXJuZWxfY2xvY2tfdDsKdHlw ZWRlZiBpbnQgX19rZXJuZWxfdGltZXJfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxfY2xvY2tpZF90 Owp0eXBlZGVmIGNoYXIgKiBfX2tlcm5lbF9jYWRkcl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0 IF9fa2VybmVsX3VpZDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZ2lkMTZf dDsKIyAxOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3Bvc2l4X3R5cGVzXzY0LmgiIDIK IyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiIDIKIyAzNyAiLi9pbmNs dWRlL3VhcGkvbGludXgvcG9zaXhfdHlwZXMuaCIgMgojIDE1ICIuL2luY2x1ZGUvdWFwaS9saW51 eC90eXBlcy5oIiAyCiMgMjkgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYg X191MTYgX19sZTE2Owp0eXBlZGVmIF9fdTE2IF9fYmUxNjsKdHlwZWRlZiBfX3UzMiBfX2xlMzI7 CnR5cGVkZWYgX191MzIgX19iZTMyOwp0eXBlZGVmIF9fdTY0IF9fbGU2NDsKdHlwZWRlZiBfX3U2 NCBfX2JlNjQ7Cgp0eXBlZGVmIF9fdTE2IF9fc3VtMTY7CnR5cGVkZWYgX191MzIgX193c3VtOwoj IDUyICIuL2luY2x1ZGUvdWFwaS9saW51eC90eXBlcy5oIgp0eXBlZGVmIHVuc2lnbmVkIF9fcG9s bF90OwojIDE4MSAiLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgiIDIKIyAxOTYgIi4vaW5jbHVk ZS9saW51eC9jb21waWxlci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9fbm9f aW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KQp2b2lkIF9fcmVhZF9vbmNlX3NpemUoY29uc3Qgdm9sYXRpbGUgdm9pZCAqcCwgdm9pZCAqcmVz LCBpbnQgc2l6ZSkKewogKHsgc3dpdGNoIChzaXplKSB7IGNhc2UgMTogKihfX3U4ICopcmVzID0g Kih2b2xhdGlsZSBfX3U4ICopcDsgYnJlYWs7IGNhc2UgMjogKihfX3UxNiAqKXJlcyA9ICoodm9s YXRpbGUgX191MTYgKilwOyBicmVhazsgY2FzZSA0OiAqKF9fdTMyICopcmVzID0gKih2b2xhdGls ZSBfX3UzMiAqKXA7IGJyZWFrOyBjYXNlIDg6ICooX191NjQgKilyZXMgPSAqKHZvbGF0aWxlIF9f dTY0ICopcDsgYnJlYWs7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVt b3J5Iik7IF9fYnVpbHRpbl9tZW1jcHkoKHZvaWQgKilyZXMsIChjb25zdCB2b2lkICopcCwgc2l6 ZSk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gfSk7Cn0KIyAyMTQg Ii4vaW5jbHVkZS9saW51eC9jb21waWxlci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKQp2b2lkIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjayhjb25zdCB2b2xhdGlsZSB2 b2lkICpwLCB2b2lkICpyZXMsIGludCBzaXplKQp7CiAoeyBzd2l0Y2ggKHNpemUpIHsgY2FzZSAx OiAqKF9fdTggKilyZXMgPSAqKHZvbGF0aWxlIF9fdTggKilwOyBicmVhazsgY2FzZSAyOiAqKF9f dTE2ICopcmVzID0gKih2b2xhdGlsZSBfX3UxNiAqKXA7IGJyZWFrOyBjYXNlIDQ6ICooX191MzIg KilyZXMgPSAqKHZvbGF0aWxlIF9fdTMyICopcDsgYnJlYWs7IGNhc2UgODogKihfX3U2NCAqKXJl cyA9ICoodm9sYXRpbGUgX191NjQgKilwOyBicmVhazsgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0 aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgX19idWlsdGluX21lbWNweSgodm9pZCAqKXJlcywgKGNv bnN0IHZvaWQgKilwLCBzaXplKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnki KTsgfSB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChfX25vX2luc3RydW1l bnRfZnVuY3Rpb25fXykpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBf X3dyaXRlX29uY2Vfc2l6ZSh2b2xhdGlsZSB2b2lkICpwLCB2b2lkICpyZXMsIGludCBzaXplKQp7 CiBzd2l0Y2ggKHNpemUpIHsKIGNhc2UgMTogKih2b2xhdGlsZSBfX3U4ICopcCA9ICooX191OCAq KXJlczsgYnJlYWs7CiBjYXNlIDI6ICoodm9sYXRpbGUgX191MTYgKilwID0gKihfX3UxNiAqKXJl czsgYnJlYWs7CiBjYXNlIDQ6ICoodm9sYXRpbGUgX191MzIgKilwID0gKihfX3UzMiAqKXJlczsg YnJlYWs7CiBjYXNlIDg6ICoodm9sYXRpbGUgX191NjQgKilwID0gKihfX3U2NCAqKXJlczsgYnJl YWs7CiBkZWZhdWx0OgogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiAg X19idWlsdGluX21lbWNweSgodm9pZCAqKXAsIChjb25zdCB2b2lkICopcmVzLCBzaXplKTsKICBf X2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogfQp9CiMgMjU2ICIuL2luY2x1 ZGUvbGludXgvY29tcGlsZXIuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2JhcnJpZXIu aCIgMQoKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmgiIDEKCgoK CgoKIyAxICIuL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEzICIuL2luY2x1ZGUvbGludXgv dHlwZXMuaCIKdHlwZWRlZiB1MzIgX19rZXJuZWxfZGV2X3Q7Cgp0eXBlZGVmIF9fa2VybmVsX2Zk X3NldCBmZF9zZXQ7CnR5cGVkZWYgX19rZXJuZWxfZGV2X3QgZGV2X3Q7CnR5cGVkZWYgX19rZXJu ZWxfaW5vX3QgaW5vX3Q7CnR5cGVkZWYgX19rZXJuZWxfbW9kZV90IG1vZGVfdDsKdHlwZWRlZiB1 bnNpZ25lZCBzaG9ydCB1bW9kZV90Owp0eXBlZGVmIHUzMiBubGlua190Owp0eXBlZGVmIF9fa2Vy bmVsX29mZl90IG9mZl90Owp0eXBlZGVmIF9fa2VybmVsX3BpZF90IHBpZF90Owp0eXBlZGVmIF9f a2VybmVsX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2tlcm5lbF9rZXlfdCBrZXlfdDsKdHlw ZWRlZiBfX2tlcm5lbF9zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKdHlwZWRlZiBfX2tlcm5lbF90 aW1lcl90IHRpbWVyX3Q7CnR5cGVkZWYgX19rZXJuZWxfY2xvY2tpZF90IGNsb2NraWRfdDsKdHlw ZWRlZiBfX2tlcm5lbF9tcWRfdCBtcWRfdDsKCnR5cGVkZWYgX0Jvb2wgYm9vbDsKCnR5cGVkZWYg X19rZXJuZWxfdWlkMzJfdCB1aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9naWQzMl90IGdpZF90Owp0 eXBlZGVmIF9fa2VybmVsX3VpZDE2X3QgdWlkMTZfdDsKdHlwZWRlZiBfX2tlcm5lbF9naWQxNl90 IGdpZDE2X3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludHB0cl90OwojIDQ2ICIuL2luY2x1 ZGUvbGludXgvdHlwZXMuaCIKdHlwZWRlZiBfX2tlcm5lbF9sb2ZmX3QgbG9mZl90OwojIDU1ICIu L2luY2x1ZGUvbGludXgvdHlwZXMuaCIKdHlwZWRlZiBfX2tlcm5lbF9zaXplX3Qgc2l6ZV90OwoK CgoKdHlwZWRlZiBfX2tlcm5lbF9zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVs X3B0cmRpZmZfdCBwdHJkaWZmX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVsX2Nsb2NrX3QgY2xvY2tf dDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIHVuc2ln bmVkIGNoYXIgdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYg dW5zaWduZWQgaW50IHVfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwoKCnR5cGVk ZWYgdW5zaWduZWQgY2hhciB1bmNoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0Owp0 eXBlZGVmIHVuc2lnbmVkIGludCB1aW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWxvbmc7CgoK Cgp0eXBlZGVmIHU4IHVfaW50OF90Owp0eXBlZGVmIHM4IGludDhfdDsKdHlwZWRlZiB1MTYgdV9p bnQxNl90Owp0eXBlZGVmIHMxNiBpbnQxNl90Owp0eXBlZGVmIHUzMiB1X2ludDMyX3Q7CnR5cGVk ZWYgczMyIGludDMyX3Q7CgoKCnR5cGVkZWYgdTggdWludDhfdDsKdHlwZWRlZiB1MTYgdWludDE2 X3Q7CnR5cGVkZWYgdTMyIHVpbnQzMl90OwoKCnR5cGVkZWYgdTY0IHVpbnQ2NF90Owp0eXBlZGVm IHU2NCB1X2ludDY0X3Q7CnR5cGVkZWYgczY0IGludDY0X3Q7CiMgMTI1ICIuL2luY2x1ZGUvbGlu dXgvdHlwZXMuaCIKdHlwZWRlZiB1NjQgc2VjdG9yX3Q7CnR5cGVkZWYgdTY0IGJsa2NudF90Owoj IDE0MyAiLi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYgdTY0IGRtYV9hZGRyX3Q7CgoK Cgp0eXBlZGVmIHVuc2lnbmVkIGludCBnZnBfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2xhYl9m bGFnc190Owp0eXBlZGVmIHVuc2lnbmVkIGludCBmbW9kZV90OwoKCnR5cGVkZWYgdTY0IHBoeXNf YWRkcl90OwoKCgoKdHlwZWRlZiBwaHlzX2FkZHJfdCByZXNvdXJjZV9zaXplX3Q7CgoKCgoKdHlw ZWRlZiB1bnNpZ25lZCBsb25nIGlycV9od19udW1iZXJfdDsKCnR5cGVkZWYgc3RydWN0IHsKIGlu dCBjb3VudGVyOwp9IGF0b21pY190OwoKCnR5cGVkZWYgc3RydWN0IHsKIHM2NCBjb3VudGVyOwp9 IGF0b21pYzY0X3Q7CgoKc3RydWN0IGxpc3RfaGVhZCB7CiBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0 LCAqcHJldjsKfTsKCnN0cnVjdCBobGlzdF9oZWFkIHsKIHN0cnVjdCBobGlzdF9ub2RlICpmaXJz dDsKfTsKCnN0cnVjdCBobGlzdF9ub2RlIHsKIHN0cnVjdCBobGlzdF9ub2RlICpuZXh0LCAqKnBw cmV2Owp9OwoKc3RydWN0IHVzdGF0IHsKIF9fa2VybmVsX2RhZGRyX3QgZl90ZnJlZTsKIF9fa2Vy bmVsX2lub190IGZfdGlub2RlOwogY2hhciBmX2ZuYW1lWzZdOwogY2hhciBmX2ZwYWNrWzZdOwp9 OwojIDIxNCAiLi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnN0cnVjdCBjYWxsYmFja19oZWFkIHsK IHN0cnVjdCBjYWxsYmFja19oZWFkICpuZXh0Owogdm9pZCAoKmZ1bmMpKHN0cnVjdCBjYWxsYmFj a19oZWFkICpoZWFkKTsKfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKHNpemVvZih2b2lkICopKSkp OwoKCnR5cGVkZWYgdm9pZCAoKnJjdV9jYWxsYmFja190KShzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAq aGVhZCk7CnR5cGVkZWYgdm9pZCAoKmNhbGxfcmN1X2Z1bmNfdCkoc3RydWN0IGNhbGxiYWNrX2hl YWQgKmhlYWQsIHJjdV9jYWxsYmFja190IGZ1bmMpOwoKdHlwZWRlZiB2b2lkICgqc3dhcF9mdW5j X3QpKHZvaWQgKmEsIHZvaWQgKmIsIGludCBzaXplKTsKCnR5cGVkZWYgaW50ICgqY21wX3JfZnVu Y190KShjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBjb25zdCB2b2lkICpwcml2KTsKdHlw ZWRlZiBpbnQgKCpjbXBfZnVuY190KShjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKTsKIyA4 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmgiIDIKCgojIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vYXNtLmgiIDEKIyAxODIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXNt LmgiCnJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgY3VycmVudF9zdGFja19wb2ludGVyIGFzbSgicnNw Iik7CiMgMTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYWx0ZXJuYXRpdmUuaCIgMgojIDU4ICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmgiCnN0cnVjdCBhbHRfaW5zdHIgewog czMyIGluc3RyX29mZnNldDsKIHMzMiByZXBsX29mZnNldDsKIHUxNiBjcHVpZDsKIHU4IGluc3Ry bGVuOwogdTggcmVwbGFjZW1lbnRsZW47CiB1OCBwYWRsZW47Cn0gX19hdHRyaWJ1dGVfXygoX19w YWNrZWRfXykpOwoKCgoKCmV4dGVybiBpbnQgYWx0ZXJuYXRpdmVzX3BhdGNoZWQ7CgpleHRlcm4g dm9pZCBhbHRlcm5hdGl2ZV9pbnN0cnVjdGlvbnModm9pZCk7CmV4dGVybiB2b2lkIGFwcGx5X2Fs dGVybmF0aXZlcyhzdHJ1Y3QgYWx0X2luc3RyICpzdGFydCwgc3RydWN0IGFsdF9pbnN0ciAqZW5k KTsKCnN0cnVjdCBtb2R1bGU7CgoKZXh0ZXJuIHZvaWQgYWx0ZXJuYXRpdmVzX3NtcF9tb2R1bGVf YWRkKHN0cnVjdCBtb2R1bGUgKm1vZCwgY2hhciAqbmFtZSwKICAgICB2b2lkICpsb2Nrcywgdm9p ZCAqbG9ja3NfZW5kLAogICAgIHZvaWQgKnRleHQsIHZvaWQgKnRleHRfZW5kKTsKZXh0ZXJuIHZv aWQgYWx0ZXJuYXRpdmVzX3NtcF9tb2R1bGVfZGVsKHN0cnVjdCBtb2R1bGUgKm1vZCk7CmV4dGVy biB2b2lkIGFsdGVybmF0aXZlc19lbmFibGVfc21wKHZvaWQpOwpleHRlcm4gaW50IGFsdGVybmF0 aXZlc190ZXh0X3Jlc2VydmVkKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpOwpleHRlcm4gYm9vbCBz a2lwX3NtcF9hbHRlcm5hdGl2ZXM7CiMgNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iYXJyaWVy LmgiIDIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vcHMuaCIgMQojIDE0MyAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9ub3BzLmgiCmV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyICogY29u c3QgKmlkZWFsX25vcHM7CmV4dGVybiB2b2lkIGFyY2hfaW5pdF9pZGVhbF9ub3BzKHZvaWQpOwoj IDcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYmFycmllci5oIiAyCiMgMzYgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYmFycmllci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9f bm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgdW5zaWduZWQgbG9uZyBhcnJheV9pbmRleF9tYXNr X25vc3BlYyh1bnNpZ25lZCBsb25nIGluZGV4LAogIHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogdW5z aWduZWQgbG9uZyBtYXNrOwoKIGFzbSB2b2xhdGlsZSAoImNtcCAlMSwlMjsgc2JiICUwLCUwOyIK ICAgOiI9ciIgKG1hc2spCiAgIDoiZyIoc2l6ZSksInIiIChpbmRleCkKICAgOiJjYyIpOwogcmV0 dXJuIG1hc2s7Cn0KIyA4NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iYXJyaWVyLmgiCiMgMSAi Li9pbmNsdWRlL2FzbS1nZW5lcmljL2JhcnJpZXIuaCIgMQojIDE2ICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYmFycmllci5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9jb21waWxlci5oIiAxCiMgMTcg Ii4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iYXJyaWVyLmgiIDIKIyA4NiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9iYXJyaWVyLmgiIDIKIyAyNTcgIi4vaW5jbHVkZS9saW51eC9jb21waWxlci5oIiAy CiMgMSAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLWNoZWNrcy5oIiAxCiMgMTYgIi4vaW5jbHVkZS9s aW51eC9rYXNhbi1jaGVja3MuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChfX25v X2luc3RydW1lbnRfZnVuY3Rpb25fXykpIGJvb2wgX19rYXNhbl9jaGVja19yZWFkKGNvbnN0IHZv bGF0aWxlIHZvaWQgKnAsIHVuc2lnbmVkIGludCBzaXplKQp7CiByZXR1cm4gdHJ1ZTsKfQpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkg Ym9vbCBfX2thc2FuX2NoZWNrX3dyaXRlKGNvbnN0IHZvbGF0aWxlIHZvaWQgKnAsIHVuc2lnbmVk IGludCBzaXplKQp7CiByZXR1cm4gdHJ1ZTsKfQojIDM0ICIuL2luY2x1ZGUvbGludXgva2FzYW4t Y2hlY2tzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygoX19ub19pbnN0cnVtZW50 X2Z1bmN0aW9uX18pKSBib29sIGthc2FuX2NoZWNrX3JlYWQoY29uc3Qgdm9sYXRpbGUgdm9pZCAq cCwgdW5zaWduZWQgaW50IHNpemUpCnsKIHJldHVybiB0cnVlOwp9CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygoX19ub19pbnN0cnVtZW50X2Z1bmN0aW9uX18pKSBib29sIGthc2FuX2No ZWNrX3dyaXRlKGNvbnN0IHZvbGF0aWxlIHZvaWQgKnAsIHVuc2lnbmVkIGludCBzaXplKQp7CiBy ZXR1cm4gdHJ1ZTsKfQojIDI1OCAiLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgiIDIKIyAyNzcg Ii4vaW5jbHVkZS9saW51eC9jb21waWxlci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKQp1bnNpZ25lZCBsb25nIHJlYWRfd29yZF9hdF9hX3RpbWUoY29uc3Qgdm9pZCAq YWRkcikKewoga2FzYW5fY2hlY2tfcmVhZChhZGRyLCAxKTsKIHJldHVybiAqKHVuc2lnbmVkIGxv bmcgKilhZGRyOwp9CiMgMzA4ICIuL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChfX25vX2luc3RydW1lbnRfZnVuY3Rpb25fXykpIHZvaWQg Km9mZnNldF90b19wdHIoY29uc3QgaW50ICpvZmYpCnsKIHJldHVybiAodm9pZCAqKSgodW5zaWdu ZWQgbG9uZylvZmYgKyAqb2ZmKTsKfQojIDQ0ICIuL2luY2x1ZGUvbGludXgvZXhwb3J0LmgiIDIK IyA2MCAiLi9pbmNsdWRlL2xpbnV4L2V4cG9ydC5oIgpzdHJ1Y3Qga2VybmVsX3N5bWJvbCB7CiBp bnQgdmFsdWVfb2Zmc2V0OwogaW50IG5hbWVfb2Zmc2V0OwogaW50IG5hbWVzcGFjZV9vZmZzZXQ7 Cn07CiMgOCAiLi9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vbGlua2FnZS5oIiAxCiMgOSAiLi9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMgoj IDE3ICIuL2luY2x1ZGUvbGludXgva2dkYi5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2luaXQu aCIgMQojIDExNiAiLi9pbmNsdWRlL2xpbnV4L2luaXQuaCIKdHlwZWRlZiBpbnQgKCppbml0Y2Fs bF90KSh2b2lkKTsKdHlwZWRlZiB2b2lkICgqZXhpdGNhbGxfdCkodm9pZCk7CgoKdHlwZWRlZiBp bnQgaW5pdGNhbGxfZW50cnlfdDsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGluaXRjYWxsX3QgaW5pdGNhbGxfZnJvbV9lbnRyeShpbml0 Y2FsbF9lbnRyeV90ICplbnRyeSkKewogcmV0dXJuIG9mZnNldF90b19wdHIoZW50cnkpOwp9CiMg MTM1ICIuL2luY2x1ZGUvbGludXgvaW5pdC5oIgpleHRlcm4gaW5pdGNhbGxfZW50cnlfdCBfX2Nv bl9pbml0Y2FsbF9zdGFydFtdLCBfX2Nvbl9pbml0Y2FsbF9lbmRbXTsKCgp0eXBlZGVmIHZvaWQg KCpjdG9yX2ZuX3QpKHZvaWQpOwoKc3RydWN0IGZpbGVfc3lzdGVtX3R5cGU7CgoKZXh0ZXJuIGlu dCBkb19vbmVfaW5pdGNhbGwoaW5pdGNhbGxfdCBmbik7CmV4dGVybiBjaGFyIF9fYXR0cmlidXRl X18oKF9fc2VjdGlvbl9fKCIuaW5pdC5kYXRhIikpKSBib290X2NvbW1hbmRfbGluZVtdOwpleHRl cm4gY2hhciAqc2F2ZWRfY29tbWFuZF9saW5lOwpleHRlcm4gdW5zaWduZWQgaW50IHJlc2V0X2Rl dmljZXM7CgoKdm9pZCBzZXR1cF9hcmNoKGNoYXIgKiopOwp2b2lkIHByZXBhcmVfbmFtZXNwYWNl KHZvaWQpOwp2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBf X2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIGluaXRfcm9vdGZzKHZvaWQpOwpleHRlcm4gc3RydWN0 IGZpbGVfc3lzdGVtX3R5cGUgcm9vdGZzX2ZzX3R5cGU7CgoKZXh0ZXJuIGJvb2wgcm9kYXRhX2Vu YWJsZWQ7CgoKdm9pZCBtYXJrX3JvZGF0YV9ybyh2b2lkKTsKCgpleHRlcm4gdm9pZCAoKmxhdGVf dGltZV9pbml0KSh2b2lkKTsKCmV4dGVybiBib29sIGluaXRjYWxsX2RlYnVnOwojIDE4ICIuL2lu Y2x1ZGUvbGludXgva2dkYi5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy5oIiAxCgoK CgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQoKCgoKCgoKIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL2NtcHhjaGcuaCIgMQoKCgoKCiMgMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIiAxCgoKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL3JlcXVpcmVkLWZlYXR1cmVzLmgiIDEKIyA3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2Nw dWZlYXR1cmVzLmgiIDIKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2Rpc2FibGVkLWZl YXR1cmVzLmgiIDEKIyAxMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIiAy CiMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jbXB4Y2hnLmgiIDIKCgoKCgoKZXh0ZXJuIHZv aWQgX194Y2hnX3dyb25nX3NpemUodm9pZCkKIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQmFk IGFyZ3VtZW50IHNpemUgZm9yIHhjaGciKSkpOwpleHRlcm4gdm9pZCBfX2NtcHhjaGdfd3Jvbmdf c2l6ZSh2b2lkKQogX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJCYWQgYXJndW1lbnQgc2l6ZSBm b3IgY21weGNoZyIpKSk7CmV4dGVybiB2b2lkIF9feGFkZF93cm9uZ19zaXplKHZvaWQpCiBfX2F0 dHJpYnV0ZV9fKChfX2Vycm9yX18oIkJhZCBhcmd1bWVudCBzaXplIGZvciB4YWRkIikpKTsKZXh0 ZXJuIHZvaWQgX19hZGRfd3Jvbmdfc2l6ZSh2b2lkKQogX19hdHRyaWJ1dGVfXygoX19lcnJvcl9f KCJCYWQgYXJndW1lbnQgc2l6ZSBmb3IgYWRkIikpKTsKIyAxNDUgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vY21weGNoZy5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vY21weGNoZ182NC5o IiAxCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHNldF82NGJpdCh2b2xhdGlsZSB1NjQgKnB0ciwgdTY0IHZhbCkKewogKnB0 ciA9IHZhbDsKfQojIDE0NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jbXB4Y2hnLmgiIDIKIyA5 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAyCiMgMSAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9ybXdjYy5oIiAxCiMgMTAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgi IDIKIyAyNSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBpbnQgYXJjaF9hdG9taWNfcmVhZChjb25zdCBhdG9taWNfdCAq dikKewoKCgoKIHJldHVybiAoeyB1bmlvbiB7IHR5cGVvZigodiktPmNvdW50ZXIpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKHYpLT5jb3VudGVy KSwgX191Ll9fYywgc2l6ZW9mKCh2KS0+Y291bnRlcikpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVf bm9jaGVjaygmKCh2KS0+Y291bnRlciksIF9fdS5fX2MsIHNpemVvZigodiktPmNvdW50ZXIpKTsg ZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsKfQojIDQxICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg YXJjaF9hdG9taWNfc2V0KGF0b21pY190ICp2LCBpbnQgaSkKewogKHsgdW5pb24geyB0eXBlb2Yo di0+Y291bnRlcikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBl b2Yodi0+Y291bnRlcikpIChpKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKHYtPmNvdW50ZXIpLCBf X3UuX19jLCBzaXplb2Yodi0+Y291bnRlcikpOyBfX3UuX192YWw7IH0pOwp9CiMgNTMgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdm9pZCBhcmNoX2F0b21pY19hZGQoaW50IGksIGF0b21pY190ICp2KQp7CiBhc20gdm9s YXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5s b25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJhZGRs ICUxLCUwIgogICAgICAgOiAiK20iICh2LT5jb3VudGVyKQogICAgICAgOiAiaXIiIChpKSA6ICJt ZW1vcnkiKTsKfQojIDY3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYXJjaF9hdG9taWNfc3ViKGludCBpLCBh dG9taWNfdCAqdikKewogYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFc IlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3 MToiICJcblx0bG9jazsgIiAic3VibCAlMSwlMCIKICAgICAgIDogIittIiAodi0+Y291bnRlcikK ICAgICAgIDogImlyIiAoaSkgOiAibWVtb3J5Iik7Cn0KIyA4MyAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9hdG9taWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIGFy Y2hfYXRvbWljX3N1Yl9hbmRfdGVzdChpbnQgaSwgYXRvbWljX3QgKnYpCnsKIHJldHVybiAoeyBi b29sIGM7IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIu YmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxu XHRsb2NrOyAiICJzdWJsIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25k aXRpb24gY29kZSAiICJlIiAiKi9cbiIgOiBbdmFyXSAiK20iICh2LT5jb3VudGVyKSwgIj1AY2Mi ICJlIiAoYykgOiBbdmFsXSAiZXIiIChpKSA6ICJtZW1vcnkiKTsgYzsgfSk7Cn0KIyA5NSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSB2b2lkIGFyY2hfYXRvbWljX2luYyhhdG9taWNfdCAqdikKewogYXNtIHZvbGF0aWxl KCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2 NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiaW5jbCAlMCIK ICAgICAgIDogIittIiAodi0+Y291bnRlcikgOjogIm1lbW9yeSIpOwp9CiMgMTA4ICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgYXJjaF9hdG9taWNfZGVjKGF0b21pY190ICp2KQp7CiBhc20gdm9sYXRpbGUoIi5w dXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYg LSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJkZWNsICUwIgogICAg ICAgOiAiK20iICh2LT5jb3VudGVyKSA6OiAibWVtb3J5Iik7Cn0KIyAxMjMgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg Ym9vbCBhcmNoX2F0b21pY19kZWNfYW5kX3Rlc3QoYXRvbWljX3QgKnYpCnsKIHJldHVybiAoeyBi b29sIGM7IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIu YmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxu XHRsb2NrOyAiICJkZWNsIiAiICIgIiVbdmFyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNv ZGUgIiAiZSIgIiovXG4iIDogW3Zhcl0gIittIiAodi0+Y291bnRlciksICI9QGNjIiAiZSIgKGMp IDogOiAibWVtb3J5Iik7IGM7IH0pOwp9CiMgMTM3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0 b21pYy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgYXJjaF9hdG9t aWNfaW5jX2FuZF90ZXN0KGF0b21pY190ICp2KQp7CiByZXR1cm4gKHsgYm9vbCBjOyBhc20gdm9s YXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIu bG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiaW5j bCIgIiAiICIlW3Zhcl0iICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgImUiICIqL1xu IiA6IFt2YXJdICIrbSIgKHYtPmNvdW50ZXIpLCAiPUBjYyIgImUiIChjKSA6IDogIm1lbW9yeSIp OyBjOyB9KTsKfQojIDE1MiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIGFyY2hfYXRvbWljX2FkZF9uZWdhdGl2 ZShpbnQgaSwgYXRvbWljX3QgKnYpCnsKIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAo Ii5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3 MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJhZGRsIiAiICVb dmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJzIiAiKi9c biIgOiBbdmFyXSAiK20iICh2LT5jb3VudGVyKSwgIj1AY2MiICJzIiAoYykgOiBbdmFsXSAiZXIi IChpKSA6ICJtZW1vcnkiKTsgYzsgfSk7Cn0KIyAxNjUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v YXRvbWljLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IGFyY2hfYXRv bWljX2FkZF9yZXR1cm4oaW50IGksIGF0b21pY190ICp2KQp7CiByZXR1cm4gaSArICh7IF9fdHlw ZW9mX18gKCooKCgmdi0+Y291bnRlcikpKSkgX19yZXQgPSAoKChpKSkpOyBzd2l0Y2ggKHNpemVv ZigqKCgoJnYtPmNvdW50ZXIpKSkpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0 aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIg Ii5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJiICViMCwgJTFcbiIg OiAiK3EiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAi Y2MiKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9j a3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9u XG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJ3ICV3MCwgJTFcbiIgOiAiK3IiIChfX3Jl dCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7 IGNhc2UgNDogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIg Ii5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAi XG5cdGxvY2s7ICIgInhhZGQiICJsICUwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigo KCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSA4OiBhc20g dm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4i ICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAi eGFkZCIgInEgJXEwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVy KSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgZGVmYXVsdDogX194YWRkX3dyb25nX3Np emUoKTsgfSBfX3JldDsgfSk7Cn0KIyAxNzcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWlj LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IGFyY2hfYXRvbWljX3N1 Yl9yZXR1cm4oaW50IGksIGF0b21pY190ICp2KQp7CiByZXR1cm4gYXJjaF9hdG9taWNfYWRkX3Jl dHVybigtaSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IGFy Y2hfYXRvbWljX2ZldGNoX2FkZChpbnQgaSwgYXRvbWljX3QgKnYpCnsKIHJldHVybiAoeyBfX3R5 cGVvZl9fICgqKCgoJnYtPmNvdW50ZXIpKSkpIF9fcmV0ID0gKCgoaSkpKTsgc3dpdGNoIChzaXpl b2YoKigoKCZ2LT5jb3VudGVyKSkpKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2Vj dGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4i ICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAiYiAlYjAsICUxXG4i IDogIitxIiAoX19yZXQpLCAiK20iICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5Iiwg ImNjIik7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xv Y2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlv blxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAidyAldzAsICUxXG4iIDogIityIiAoX19y ZXQpLCAiK20iICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFr OyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4i ICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIg IlxuXHRsb2NrOyAiICJ4YWRkIiAibCAlMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCoo KCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgODogYXNt IHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxu IiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIg InhhZGQiICJxICVxMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRl cikpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGRlZmF1bHQ6IF9feGFkZF93cm9uZ19z aXplKCk7IH0gX19yZXQ7IH0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IGludCBhcmNoX2F0b21pY19mZXRjaF9zdWIoaW50IGksIGF0b21pY190ICp2KQp7CiByZXR1cm4g KHsgX190eXBlb2ZfXyAoKigoKCZ2LT5jb3VudGVyKSkpKSBfX3JldCA9ICgoKC1pKSkpOyBzd2l0 Y2ggKHNpemVvZigqKCgoJnYtPmNvdW50ZXIpKSkpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgi LnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcx ZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJiICVi MCwgJTFcbiIgOiAiK3EiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJt ZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9u IC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5w b3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJ3ICV3MCwgJTFcbiIgOiAi K3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2Mi KTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3Ms XCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4i ICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJsICUwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwg IittIiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2Fz ZSA4OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJh bGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0 bG9jazsgIiAieGFkZCIgInEgJXEwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoKCZ2 LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgZGVmYXVsdDogX194YWRk X3dyb25nX3NpemUoKTsgfSBfX3JldDsgfSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgaW50IGFyY2hfYXRvbWljX2NtcHhjaGcoYXRvbWljX3QgKnYsIGludCBvbGQsIGlu dCBuZXcpCnsKIHJldHVybiAoeyBfX3R5cGVvZl9fKCooKCZ2LT5jb3VudGVyKSkpIF9fcmV0OyBf X3R5cGVvZl9fKCooKCZ2LT5jb3VudGVyKSkpIF9fb2xkID0gKChvbGQpKTsgX190eXBlb2ZfXygq KCgmdi0+Y291bnRlcikpKSBfX25ldyA9ICgobmV3KSk7IHN3aXRjaCAoKHNpemVvZigqKCZ2LT5j b3VudGVyKSkpKSB7IGNhc2UgMTogeyB2b2xhdGlsZSB1OCAqX19wdHIgPSAodm9sYXRpbGUgdTgg KikoKCZ2LT5jb3VudGVyKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3Ms XCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4i ICI2NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGdiICUyLCUxIiA6ICI9YSIgKF9fcmV0KSwgIitt IiAoKl9fcHRyKSA6ICJxIiAoX19uZXcpLCAiMCIgKF9fb2xkKSA6ICJtZW1vcnkiKTsgYnJlYWs7 IH0gY2FzZSAyOiB7IHZvbGF0aWxlIHUxNiAqX19wdHIgPSAodm9sYXRpbGUgdTE2ICopKCgmdi0+ Y291bnRlcikpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4i ICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIg IlxuXHRsb2NrOyAiICJjbXB4Y2hndyAlMiwlMSIgOiAiPWEiIChfX3JldCksICIrbSIgKCpfX3B0 cikgOiAiciIgKF9fbmV3KSwgIjAiIChfX29sZCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGNhc2Ug NDogeyB2b2xhdGlsZSB1MzIgKl9fcHRyID0gKHZvbGF0aWxlIHUzMiAqKSgoJnYtPmNvdW50ZXIp KTsgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGln biA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9j azsgIiAiY21weGNoZ2wgJTIsJTEiIDogIj1hIiAoX19yZXQpLCAiK20iICgqX19wdHIpIDogInIi IChfX25ldyksICIwIiAoX19vbGQpIDogIm1lbW9yeSIpOyBicmVhazsgfSBjYXNlIDg6IHsgdm9s YXRpbGUgdTY0ICpfX3B0ciA9ICh2b2xhdGlsZSB1NjQgKikoKCZ2LT5jb3VudGVyKSk7IGFzbSB2 b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAi LmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImNt cHhjaGdxICUyLCUxIiA6ICI9YSIgKF9fcmV0KSwgIittIiAoKl9fcHRyKSA6ICJyIiAoX19uZXcp LCAiMCIgKF9fb2xkKSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gZGVmYXVsdDogX19jbXB4Y2hnX3dy b25nX3NpemUoKTsgfSBfX3JldDsgfSk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIGJvb2wgYXJjaF9hdG9taWNfdHJ5X2NtcHhjaGcoYXRvbWljX3QgKnYsIGludCAqb2xk LCBpbnQgbmV3KQp7CiByZXR1cm4gKHsgYm9vbCBzdWNjZXNzOyBfX3R5cGVvZl9fKCgoJnYtPmNv dW50ZXIpKSkgX29sZCA9IChfX3R5cGVvZl9fKCgoJnYtPmNvdW50ZXIpKSkpKCgob2xkKSkpOyBf X3R5cGVvZl9fKCooKCgmdi0+Y291bnRlcikpKSkgX19vbGQgPSAqX29sZDsgX190eXBlb2ZfXygq KCgoJnYtPmNvdW50ZXIpKSkpIF9fbmV3ID0gKCgobmV3KSkpOyBzd2l0Y2ggKChzaXplb2YoKigm di0+Y291bnRlcikpKSkgeyBjYXNlIDE6IHsgdm9sYXRpbGUgdTggKl9fcHRyID0gKHZvbGF0aWxl IHU4ICopKCgoJnYtPmNvdW50ZXIpKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBf bG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0 aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGdiICVbbmV3XSwgJVtwdHJdIiAiXG5c dC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJ6IiAiKi9cbiIgOiAiPUBjYyIgInoiIChzdWNj ZXNzKSwgW3B0cl0gIittIiAoKl9fcHRyKSwgW29sZF0gIithIiAoX19vbGQpIDogW25ld10gInEi IChfX25ldykgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGNhc2UgMjogeyB2b2xhdGlsZSB1MTYgKl9f cHRyID0gKHZvbGF0aWxlIHUxNiAqKSgoKCZ2LT5jb3VudGVyKSkpOyBhc20gdm9sYXRpbGUoIi5w dXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYg LSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hndyAlW25l d10sICVbcHRyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAieiIgIiovXG4iIDog Ij1AY2MiICJ6IiAoc3VjY2VzcyksIFtwdHJdICIrbSIgKCpfX3B0ciksIFtvbGRdICIrYSIgKF9f b2xkKSA6IFtuZXddICJyIiAoX19uZXcpIDogIm1lbW9yeSIpOyBicmVhazsgfSBjYXNlIDQ6IHsg dm9sYXRpbGUgdTMyICpfX3B0ciA9ICh2b2xhdGlsZSB1MzIgKikoKCgmdi0+Y291bnRlcikpKTsg YXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0 XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsg IiAiY21weGNoZ2wgJVtuZXddLCAlW3B0cl0iICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2Rl ICIgInoiICIqL1xuIiA6ICI9QGNjIiAieiIgKHN1Y2Nlc3MpLCBbcHRyXSAiK20iICgqX19wdHIp LCBbb2xkXSAiK2EiIChfX29sZCkgOiBbbmV3XSAiciIgKF9fbmV3KSA6ICJtZW1vcnkiKTsgYnJl YWs7IH0gY2FzZSA4OiB7IHZvbGF0aWxlIHU2NCAqX19wdHIgPSAodm9sYXRpbGUgdTY0ICopKCgo JnYtPmNvdW50ZXIpKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJh XCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2 NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGdxICVbbmV3XSwgJVtwdHJdIiAiXG5cdC8qIG91dHB1 dCBjb25kaXRpb24gY29kZSAiICJ6IiAiKi9cbiIgOiAiPUBjYyIgInoiIChzdWNjZXNzKSwgW3B0 cl0gIittIiAoKl9fcHRyKSwgW29sZF0gIithIiAoX19vbGQpIDogW25ld10gInIiIChfX25ldykg OiAibWVtb3J5Iik7IGJyZWFrOyB9IGRlZmF1bHQ6IF9fY21weGNoZ193cm9uZ19zaXplKCk7IH0g aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIXN1Y2Nlc3MpLCAwKSkgKl9vbGQgPSBfX29sZDsgX19i dWlsdGluX2V4cGVjdCghIShzdWNjZXNzKSwgMSk7IH0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgYXJjaF9hdG9taWNfeGNo ZyhhdG9taWNfdCAqdiwgaW50IG5ldykKewogcmV0dXJuICh7IF9fdHlwZW9mX18gKCooKCZ2LT5j b3VudGVyKSkpIF9fcmV0ID0gKChuZXcpKTsgc3dpdGNoIChzaXplb2YoKigoJnYtPmNvdW50ZXIp KSkpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAiYiAlYjAsICUxXG4iIDogIitx IiAoX19yZXQpLCAiK20iICgqKCgmdi0+Y291bnRlcikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBi cmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAidyAldzAsICUxXG4iIDogIity IiAoX19yZXQpLCAiK20iICgqKCgmdi0+Y291bnRlcikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBi cmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAibCAlMCwgJTFcbiIgOiAiK3Ii IChfX3JldCksICIrbSIgKCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJy ZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIiIgInhjaGciICJxICVxMCwgJTFcbiIgOiAiK3Ii IChfX3JldCksICIrbSIgKCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJy ZWFrOyBkZWZhdWx0OiBfX3hjaGdfd3Jvbmdfc2l6ZSgpOyB9IF9fcmV0OyB9KTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBh cmNoX2F0b21pY19hbmQoaW50IGksIGF0b21pY190ICp2KQp7CiBhc20gdm9sYXRpbGUoIi5wdXNo c2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAu XG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJhbmRsICUxLCUwIgogICA6 ICIrbSIgKHYtPmNvdW50ZXIpCiAgIDogImlyIiAoaSkKICAgOiAibWVtb3J5Iik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBh cmNoX2F0b21pY19mZXRjaF9hbmQoaW50IGksIGF0b21pY190ICp2KQp7CiBpbnQgdmFsID0gYXJj aF9hdG9taWNfcmVhZCh2KTsKCiBkbyB7IH0gd2hpbGUgKCFhcmNoX2F0b21pY190cnlfY21weGNo Zyh2LCAmdmFsLCB2YWwgJiBpKSk7CgogcmV0dXJuIHZhbDsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcmNoX2F0b21pY19v cihpbnQgaSwgYXRvbWljX3QgKnYpCnsKIGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBf bG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0 aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgIm9ybCAlMSwlMCIKICAgOiAiK20iICh2LT5jb3Vu dGVyKQogICA6ICJpciIgKGkpCiAgIDogIm1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgYXJjaF9hdG9taWNfZmV0 Y2hfb3IoaW50IGksIGF0b21pY190ICp2KQp7CiBpbnQgdmFsID0gYXJjaF9hdG9taWNfcmVhZCh2 KTsKCiBkbyB7IH0gd2hpbGUgKCFhcmNoX2F0b21pY190cnlfY21weGNoZyh2LCAmdmFsLCB2YWwg fCBpKSk7CgogcmV0dXJuIHZhbDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcmNoX2F0b21pY194b3IoaW50IGksIGF0b21p Y190ICp2KQp7CiBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4i ICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIg IlxuXHRsb2NrOyAiICJ4b3JsICUxLCUwIgogICA6ICIrbSIgKHYtPmNvdW50ZXIpCiAgIDogImly IiAoaSkKICAgOiAibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBhcmNoX2F0b21pY19mZXRjaF94b3IoaW50IGks IGF0b21pY190ICp2KQp7CiBpbnQgdmFsID0gYXJjaF9hdG9taWNfcmVhZCh2KTsKCiBkbyB7IH0g d2hpbGUgKCFhcmNoX2F0b21pY190cnlfY21weGNoZyh2LCAmdmFsLCB2YWwgXiBpKSk7CgogcmV0 dXJuIHZhbDsKfQoKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0Lmgi IDEKIyAyMCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQgYXJjaF9h dG9taWM2NF9yZWFkKGNvbnN0IGF0b21pYzY0X3QgKnYpCnsKIHJldHVybiAoeyB1bmlvbiB7IHR5 cGVvZigodiktPmNvdW50ZXIpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3Jl YWRfb25jZV9zaXplKCYoKHYpLT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKCh2KS0+Y291bnRl cikpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKCh2KS0+Y291bnRlciksIF9fdS5f X2MsIHNpemVvZigodiktPmNvdW50ZXIpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9 KTsKfQojIDMyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0LmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXJj aF9hdG9taWM2NF9zZXQoYXRvbWljNjRfdCAqdiwgczY0IGkpCnsKICh7IHVuaW9uIHsgdHlwZW9m KHYtPmNvdW50ZXIpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlw ZW9mKHYtPmNvdW50ZXIpKSAoaSkgfTsgX193cml0ZV9vbmNlX3NpemUoJih2LT5jb3VudGVyKSwg X191Ll9fYywgc2l6ZW9mKHYtPmNvdW50ZXIpKTsgX191Ll9fdmFsOyB9KTsKfQojIDQ0ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgdm9pZCBhcmNoX2F0b21pYzY0X2FkZChzNjQgaSwgYXRvbWljNjRfdCAqdikK ewogYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGln biA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9j azsgIiAiYWRkcSAlMSwlMCIKICAgICAgIDogIj1tIiAodi0+Y291bnRlcikKICAgICAgIDogImVy IiAoaSksICJtIiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7Cn0KIyA1OCAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hfYXRvbWljNjRfc3ViKHM2NCBpLCBh dG9taWM2NF90ICp2KQp7CiBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwi YVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAi NjcxOiIgIlxuXHRsb2NrOyAiICJzdWJxICUxLCUwIgogICAgICAgOiAiPW0iICh2LT5jb3VudGVy KQogICAgICAgOiAiZXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKfQojIDc0 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0LmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYXJjaF9hdG9taWM2 NF9zdWJfYW5kX3Rlc3QoczY0IGksIGF0b21pYzY0X3QgKnYpCnsKIHJldHVybiAoeyBib29sIGM7 IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWdu IDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2Nr OyAiICJzdWJxIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24g Y29kZSAiICJlIiAiKi9cbiIgOiBbdmFyXSAiK20iICh2LT5jb3VudGVyKSwgIj1AY2MiICJlIiAo YykgOiBbdmFsXSAiZXIiIChpKSA6ICJtZW1vcnkiKTsgYzsgfSk7Cn0KIyA4NiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHZvaWQgYXJjaF9hdG9taWM2NF9pbmMoYXRvbWljNjRfdCAqdikKewogYXNtIHZvbGF0 aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9u ZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiaW5jcSAl MCIKICAgICAgIDogIj1tIiAodi0+Y291bnRlcikKICAgICAgIDogIm0iICh2LT5jb3VudGVyKSA6 ICJtZW1vcnkiKTsKfQojIDEwMCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYXJjaF9hdG9taWM2NF9k ZWMoYXRvbWljNjRfdCAqdikKewogYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2Nr cyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25c biIgIjY3MToiICJcblx0bG9jazsgIiAiZGVjcSAlMCIKICAgICAgIDogIj1tIiAodi0+Y291bnRl cikKICAgICAgIDogIm0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKfQojIDExNiAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGFyY2hfYXRvbWljNjRfZGVjX2Fu ZF90ZXN0KGF0b21pYzY0X3QgKnYpCnsKIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAo Ii5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3 MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJkZWNxIiAiICIg IiVbdmFyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAiZSIgIiovXG4iIDogW3Zh cl0gIittIiAodi0+Y291bnRlciksICI9QGNjIiAiZSIgKGMpIDogOiAibWVtb3J5Iik7IGM7IH0p Owp9CiMgMTMwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0LmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYXJj aF9hdG9taWM2NF9pbmNfYW5kX3Rlc3QoYXRvbWljNjRfdCAqdikKewogcmV0dXJuICh7IGJvb2wg YzsgYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxp Z24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxv Y2s7ICIgImluY3EiICIgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAi ICJlIiAiKi9cbiIgOiBbdmFyXSAiK20iICh2LT5jb3VudGVyKSwgIj1AY2MiICJlIiAoYykgOiA6 ICJtZW1vcnkiKTsgYzsgfSk7Cn0KIyAxNDUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWlj NjRfNjQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBhcmNoX2F0b21pYzY0X2FkZF9uZWdhdGl2ZShzNjQgaSwgYXRvbWljNjRf dCAqdikKewogcmV0dXJuICh7IGJvb2wgYzsgYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5z bXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3Bz ZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImFkZHEiICIgJVt2YWxdLCAiICIlW3Zhcl0i ICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgInMiICIqL1xuIiA6IFt2YXJdICIrbSIg KHYtPmNvdW50ZXIpLCAiPUBjYyIgInMiIChjKSA6IFt2YWxdICJlciIgKGkpIDogIm1lbW9yeSIp OyBjOyB9KTsKfQojIDE1OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHM2NCBhcmNoX2F0b21pYzY0X2FkZF9y ZXR1cm4oczY0IGksIGF0b21pYzY0X3QgKnYpCnsKIHJldHVybiBpICsgKHsgX190eXBlb2ZfXyAo KigoKCZ2LT5jb3VudGVyKSkpKSBfX3JldCA9ICgoKGkpKSk7IHN3aXRjaCAoc2l6ZW9mKCooKCgm di0+Y291bnRlcikpKSkpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNt cF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNl Y3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFkZCIgImIgJWIwLCAlMVxuIiA6ICIrcSIg KF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBi cmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFc IlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3 MToiICJcblx0bG9jazsgIiAieGFkZCIgIncgJXcwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIitt IiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSA0 OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGln biA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9j azsgIiAieGFkZCIgImwgJTAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKCgoJnYtPmNv dW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGls ZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25n IDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAi cSAlcTAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKCgoJnYtPmNvdW50ZXIpKSkpIDog OiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBkZWZhdWx0OiBfX3hhZGRfd3Jvbmdfc2l6ZSgpOyB9 IF9fcmV0OyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgczY0IGFyY2hfYXRvbWljNjRfc3ViX3JldHVybihzNjQgaSwgYXRvbWlj NjRfdCAqdikKewogcmV0dXJuIGFyY2hfYXRvbWljNjRfYWRkX3JldHVybigtaSwgdik7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2 NCBhcmNoX2F0b21pYzY0X2ZldGNoX2FkZChzNjQgaSwgYXRvbWljNjRfdCAqdikKewogcmV0dXJu ICh7IF9fdHlwZW9mX18gKCooKCgmdi0+Y291bnRlcikpKSkgX19yZXQgPSAoKChpKSkpOyBzd2l0 Y2ggKHNpemVvZigqKCgoJnYtPmNvdW50ZXIpKSkpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgi LnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcx ZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJiICVi MCwgJTFcbiIgOiAiK3EiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJt ZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9u IC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5w b3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJ3ICV3MCwgJTFcbiIgOiAi K3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2Mi KTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3Ms XCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4i ICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJsICUwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwg IittIiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2Fz ZSA4OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJh bGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0 bG9jazsgIiAieGFkZCIgInEgJXEwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoKCZ2 LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgZGVmYXVsdDogX194YWRk X3dyb25nX3NpemUoKTsgfSBfX3JldDsgfSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NCBhcmNoX2F0b21pYzY0X2ZldGNoX3N1 YihzNjQgaSwgYXRvbWljNjRfdCAqdikKewogcmV0dXJuICh7IF9fdHlwZW9mX18gKCooKCgmdi0+ Y291bnRlcikpKSkgX19yZXQgPSAoKCgtaSkpKTsgc3dpdGNoIChzaXplb2YoKigoKCZ2LT5jb3Vu dGVyKSkpKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tz LFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxu IiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAiYiAlYjAsICUxXG4iIDogIitxIiAoX19yZXQp LCAiK20iICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBj YXNlIDI6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIu YmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxu XHRsb2NrOyAiICJ4YWRkIiAidyAldzAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKCgo JnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2 b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIg Ii5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4 YWRkIiAibCAlMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikp KSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgiLnB1 c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAt IC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJxICVxMCwg JTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1v cnkiLCAiY2MiKTsgYnJlYWs7IGRlZmF1bHQ6IF9feGFkZF93cm9uZ19zaXplKCk7IH0gX19yZXQ7 IH0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBzNjQgYXJjaF9hdG9taWM2NF9jbXB4Y2hnKGF0b21pYzY0X3QgKnYsIHM2NCBvbGQs IHM2NCBuZXcpCnsKIHJldHVybiAoeyBfX3R5cGVvZl9fKCooKCZ2LT5jb3VudGVyKSkpIF9fcmV0 OyBfX3R5cGVvZl9fKCooKCZ2LT5jb3VudGVyKSkpIF9fb2xkID0gKChvbGQpKTsgX190eXBlb2Zf XygqKCgmdi0+Y291bnRlcikpKSBfX25ldyA9ICgobmV3KSk7IHN3aXRjaCAoKHNpemVvZigqKCZ2 LT5jb3VudGVyKSkpKSB7IGNhc2UgMTogeyB2b2xhdGlsZSB1OCAqX19wdHIgPSAodm9sYXRpbGUg dTggKikoKCZ2LT5jb3VudGVyKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9j a3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9u XG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGdiICUyLCUxIiA6ICI9YSIgKF9fcmV0KSwg IittIiAoKl9fcHRyKSA6ICJxIiAoX19uZXcpLCAiMCIgKF9fb2xkKSA6ICJtZW1vcnkiKTsgYnJl YWs7IH0gY2FzZSAyOiB7IHZvbGF0aWxlIHUxNiAqX19wdHIgPSAodm9sYXRpbGUgdTE2ICopKCgm di0+Y291bnRlcikpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwi XG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcx OiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hndyAlMiwlMSIgOiAiPWEiIChfX3JldCksICIrbSIgKCpf X3B0cikgOiAiciIgKF9fbmV3KSwgIjAiIChfX29sZCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGNh c2UgNDogeyB2b2xhdGlsZSB1MzIgKl9fcHRyID0gKHZvbGF0aWxlIHUzMiAqKSgoJnYtPmNvdW50 ZXIpKTsgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJh bGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0 bG9jazsgIiAiY21weGNoZ2wgJTIsJTEiIDogIj1hIiAoX19yZXQpLCAiK20iICgqX19wdHIpIDog InIiIChfX25ldyksICIwIiAoX19vbGQpIDogIm1lbW9yeSIpOyBicmVhazsgfSBjYXNlIDg6IHsg dm9sYXRpbGUgdTY0ICpfX3B0ciA9ICh2b2xhdGlsZSB1NjQgKikoKCZ2LT5jb3VudGVyKSk7IGFz bSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxu IiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIg ImNtcHhjaGdxICUyLCUxIiA6ICI9YSIgKF9fcmV0KSwgIittIiAoKl9fcHRyKSA6ICJyIiAoX19u ZXcpLCAiMCIgKF9fb2xkKSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gZGVmYXVsdDogX19jbXB4Y2hn X3dyb25nX3NpemUoKTsgfSBfX3JldDsgfSk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIGJvb2wgYXJjaF9hdG9taWM2NF90cnlfY21weGNoZyhhdG9taWM2NF90ICp2LCBz NjQgKm9sZCwgczY0IG5ldykKewogcmV0dXJuICh7IGJvb2wgc3VjY2VzczsgX190eXBlb2ZfXygo KCZ2LT5jb3VudGVyKSkpIF9vbGQgPSAoX190eXBlb2ZfXygoKCZ2LT5jb3VudGVyKSkpKSgoKG9s ZCkpKTsgX190eXBlb2ZfXygqKCgoJnYtPmNvdW50ZXIpKSkpIF9fb2xkID0gKl9vbGQ7IF9fdHlw ZW9mX18oKigoKCZ2LT5jb3VudGVyKSkpKSBfX25ldyA9ICgoKG5ldykpKTsgc3dpdGNoICgoc2l6 ZW9mKCooJnYtPmNvdW50ZXIpKSkpIHsgY2FzZSAxOiB7IHZvbGF0aWxlIHU4ICpfX3B0ciA9ICh2 b2xhdGlsZSB1OCAqKSgoKCZ2LT5jb3VudGVyKSkpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlv biAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIu cG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hnYiAlW25ld10sICVbcHRy XSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAieiIgIiovXG4iIDogIj1AY2MiICJ6 IiAoc3VjY2VzcyksIFtwdHJdICIrbSIgKCpfX3B0ciksIFtvbGRdICIrYSIgKF9fb2xkKSA6IFtu ZXddICJxIiAoX19uZXcpIDogIm1lbW9yeSIpOyBicmVhazsgfSBjYXNlIDI6IHsgdm9sYXRpbGUg dTE2ICpfX3B0ciA9ICh2b2xhdGlsZSB1MTYgKikoKCgmdi0+Y291bnRlcikpKTsgYXNtIHZvbGF0 aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9u ZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiY21weGNo Z3cgJVtuZXddLCAlW3B0cl0iICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgInoiICIq L1xuIiA6ICI9QGNjIiAieiIgKHN1Y2Nlc3MpLCBbcHRyXSAiK20iICgqX19wdHIpLCBbb2xkXSAi K2EiIChfX29sZCkgOiBbbmV3XSAiciIgKF9fbmV3KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gY2Fz ZSA0OiB7IHZvbGF0aWxlIHUzMiAqX19wdHIgPSAodm9sYXRpbGUgdTMyICopKCgoJnYtPmNvdW50 ZXIpKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5i YWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5c dGxvY2s7ICIgImNtcHhjaGdsICVbbmV3XSwgJVtwdHJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRp b24gY29kZSAiICJ6IiAiKi9cbiIgOiAiPUBjYyIgInoiIChzdWNjZXNzKSwgW3B0cl0gIittIiAo Kl9fcHRyKSwgW29sZF0gIithIiAoX19vbGQpIDogW25ld10gInIiIChfX25ldykgOiAibWVtb3J5 Iik7IGJyZWFrOyB9IGNhc2UgODogeyB2b2xhdGlsZSB1NjQgKl9fcHRyID0gKHZvbGF0aWxlIHU2 NCAqKSgoKCZ2LT5jb3VudGVyKSkpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xv Y2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlv blxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hncSAlW25ld10sICVbcHRyXSIgIlxuXHQv KiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAieiIgIiovXG4iIDogIj1AY2MiICJ6IiAoc3VjY2Vz cyksIFtwdHJdICIrbSIgKCpfX3B0ciksIFtvbGRdICIrYSIgKF9fb2xkKSA6IFtuZXddICJyIiAo X19uZXcpIDogIm1lbW9yeSIpOyBicmVhazsgfSBkZWZhdWx0OiBfX2NtcHhjaGdfd3Jvbmdfc2l6 ZSgpOyB9IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFzdWNjZXNzKSwgMCkpICpfb2xkID0gX19v bGQ7IF9fYnVpbHRpbl9leHBlY3QoISEoc3VjY2VzcyksIDEpOyB9KTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IGFyY2hfYXRv bWljNjRfeGNoZyhhdG9taWM2NF90ICp2LCBzNjQgbmV3KQp7CiByZXR1cm4gKHsgX190eXBlb2Zf XyAoKigoJnYtPmNvdW50ZXIpKSkgX19yZXQgPSAoKG5ldykpOyBzd2l0Y2ggKHNpemVvZigqKCgm di0+Y291bnRlcikpKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIiIgInhjaGciICJiICViMCwg JTFcbiIgOiAiK3EiIChfX3JldCksICIrbSIgKCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5 IiwgImNjIik7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIiIgInhjaGciICJ3ICV3MCwg JTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5 IiwgImNjIik7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIiIgInhjaGciICJsICUwLCAl MVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoJnYtPmNvdW50ZXIpKSkgOiA6ICJtZW1vcnki LCAiY2MiKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgiIiAieGNoZyIgInEgJXEwLCAl MVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoJnYtPmNvdW50ZXIpKSkgOiA6ICJtZW1vcnki LCAiY2MiKTsgYnJlYWs7IGRlZmF1bHQ6IF9feGNoZ193cm9uZ19zaXplKCk7IH0gX19yZXQ7IH0p Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGFyY2hfYXRvbWljNjRfYW5kKHM2NCBpLCBhdG9taWM2NF90ICp2KQp7CiBhc20g dm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIg Ii5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJh bmRxICUxLCUwIgogICA6ICIrbSIgKHYtPmNvdW50ZXIpCiAgIDogImVyIiAoaSkKICAgOiAibWVt b3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NCBhcmNoX2F0b21pYzY0X2ZldGNoX2FuZChzNjQgaSwgYXRvbWljNjRfdCAq dikKewogczY0IHZhbCA9IGFyY2hfYXRvbWljNjRfcmVhZCh2KTsKCiBkbyB7CiB9IHdoaWxlICgh YXJjaF9hdG9taWM2NF90cnlfY21weGNoZyh2LCAmdmFsLCB2YWwgJiBpKSk7CiByZXR1cm4gdmFs Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGFyY2hfYXRvbWljNjRfb3IoczY0IGksIGF0b21pYzY0X3QgKnYpCnsKIGFzbSB2 b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAi LmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgIm9y cSAlMSwlMCIKICAgOiAiK20iICh2LT5jb3VudGVyKQogICA6ICJlciIgKGkpCiAgIDogIm1lbW9y eSIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBzNjQgYXJjaF9hdG9taWM2NF9mZXRjaF9vcihzNjQgaSwgYXRvbWljNjRfdCAqdikK ewogczY0IHZhbCA9IGFyY2hfYXRvbWljNjRfcmVhZCh2KTsKCiBkbyB7CiB9IHdoaWxlICghYXJj aF9hdG9taWM2NF90cnlfY21weGNoZyh2LCAmdmFsLCB2YWwgfCBpKSk7CiByZXR1cm4gdmFsOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGFyY2hfYXRvbWljNjRfeG9yKHM2NCBpLCBhdG9taWM2NF90ICp2KQp7CiBhc20gdm9s YXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5s b25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4b3Jx ICUxLCUwIgogICA6ICIrbSIgKHYtPmNvdW50ZXIpCiAgIDogImVyIiAoaSkKICAgOiAibWVtb3J5 Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHM2NCBhcmNoX2F0b21pYzY0X2ZldGNoX3hvcihzNjQgaSwgYXRvbWljNjRfdCAqdikK ewogczY0IHZhbCA9IGFyY2hfYXRvbWljNjRfcmVhZCh2KTsKCiBkbyB7CiB9IHdoaWxlICghYXJj aF9hdG9taWM2NF90cnlfY21weGNoZyh2LCAmdmFsLCB2YWwgXiBpKSk7CiByZXR1cm4gdmFsOwp9 CiMgMjYzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAyCgoKIyAxICIuL2luY2x1 ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIiAxCiMgMjAgIi4vaW5jbHVkZS9h c20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2J1 aWxkX2J1Zy5oIiAxCiMgMjEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVu dGVkLmgiIDIKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQKYXRvbWljX3JlYWQoY29uc3QgYXRvbWljX3QgKnYpCnsKIGthc2FuX2No ZWNrX3JlYWQodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4gYXJjaF9hdG9taWNfcmVhZCh2KTsKfQoj IDQxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0 b21pY19zZXQoYXRvbWljX3QgKnYsIGludCBpKQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXpl b2YoKnYpKTsKIGFyY2hfYXRvbWljX3NldCh2LCBpKTsKfQojIDU5ICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pY19hZGQoaW50IGksIGF0b21p Y190ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIGFyY2hfYXRvbWlj X2FkZChpLCB2KTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2FkZF9yZXR1cm4oaW50IGksIGF0b21pY190ICp2 KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNoX2F0b21p Y19hZGRfcmV0dXJuKGksIHYpOwp9CiMgMTA4ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWlj LWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2ZldGNoX2FkZChpbnQgaSwgYXRvbWljX3QgKnYp CnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogcmV0dXJuIGFyY2hfYXRvbWlj X2ZldGNoX2FkZChpLCB2KTsKfQojIDE0NyAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1p bnN0cnVtZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWNfc3ViKGludCBpLCBhdG9taWNfdCAqdikKewoga2Fz YW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiBhcmNoX2F0b21pY19zdWIoaSwgdik7Cn0K CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50CmF0b21pY19zdWJfcmV0dXJuKGludCBpLCBhdG9taWNfdCAqdikKewoga2FzYW5fY2hl Y2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4gYXJjaF9hdG9taWNfc3ViX3JldHVybihp LCB2KTsKfQojIDE5NiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQu aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50CmF0b21pY19mZXRjaF9zdWIoaW50IGksIGF0b21pY190ICp2KQp7CiBrYXNhbl9jaGVj a193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNoX2F0b21pY19mZXRjaF9zdWIoaSwg dik7Cn0KIyAyMzYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQKYXRvbWljX2luYyhhdG9taWNfdCAqdikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6 ZW9mKCp2KSk7CiBhcmNoX2F0b21pY19pbmModik7Cn0KIyAzMjYgIi4vaW5jbHVkZS9hc20tZ2Vu ZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKYXRvbWljX2RlYyhhdG9taWNfdCAqdikK ewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiBhcmNoX2F0b21pY19kZWModik7 Cn0KIyA0MTUgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQKYXRvbWljX2FuZChpbnQgaSwgYXRvbWljX3QgKnYpCnsKIGthc2FuX2NoZWNrX3dyaXRlKHYs IHNpemVvZigqdikpOwogYXJjaF9hdG9taWNfYW5kKGksIHYpOwp9CgoKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAphdG9taWNfZmV0 Y2hfYW5kKGludCBpLCBhdG9taWNfdCAqdikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9m KCp2KSk7CiByZXR1cm4gYXJjaF9hdG9taWNfZmV0Y2hfYW5kKGksIHYpOwp9CiMgNTEzICIuL2lu Y2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pY19vcihp bnQgaSwgYXRvbWljX3QgKnYpCnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwog YXJjaF9hdG9taWNfb3IoaSwgdik7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9vcihpbnQgaSwgYXRv bWljX3QgKnYpCnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogcmV0dXJuIGFy Y2hfYXRvbWljX2ZldGNoX29yKGksIHYpOwp9CiMgNTYxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMv YXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pY194b3IoaW50IGksIGF0b21pY190ICp2 KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIGFyY2hfYXRvbWljX3hvcihp LCB2KTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQKYXRvbWljX2ZldGNoX3hvcihpbnQgaSwgYXRvbWljX3QgKnYpCnsKIGth c2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogcmV0dXJuIGFyY2hfYXRvbWljX2ZldGNo X3hvcihpLCB2KTsKfQojIDYxMCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVt ZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50CmF0b21pY194Y2hnKGF0b21pY190ICp2LCBpbnQgaSkKewoga2FzYW5fY2hl Y2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4gYXJjaF9hdG9taWNfeGNoZyh2LCBpKTsK fQojIDY1MCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50 CmF0b21pY19jbXB4Y2hnKGF0b21pY190ICp2LCBpbnQgb2xkLCBpbnQgbmV3KQp7CiBrYXNhbl9j aGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNoX2F0b21pY19jbXB4Y2hnKHYs IG9sZCwgbmV3KTsKfQojIDY5MCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVt ZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbAphdG9taWNfdHJ5X2NtcHhjaGcoYXRvbWljX3QgKnYsIGludCAqb2xkLCBp bnQgbmV3KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIGthc2FuX2NoZWNr X3dyaXRlKG9sZCwgc2l6ZW9mKCpvbGQpKTsKIHJldHVybiBhcmNoX2F0b21pY190cnlfY21weGNo Zyh2LCBvbGQsIG5ldyk7Cn0KIyA3MzQgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5z dHJ1bWVudGVkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wKYXRvbWljX3N1Yl9hbmRfdGVzdChpbnQgaSwgYXRvbWljX3QgKnYp CnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogcmV0dXJuIGFyY2hfYXRvbWlj X3N1Yl9hbmRfdGVzdChpLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAphdG9taWNfZGVjX2FuZF90ZXN0KGF0b21p Y190ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNo X2F0b21pY19kZWNfYW5kX3Rlc3Qodik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljX2luY19hbmRfdGVzdChh dG9taWNfdCAqdikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4g YXJjaF9hdG9taWNfaW5jX2FuZF90ZXN0KHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pY19hZGRfbmVnYXRp dmUoaW50IGksIGF0b21pY190ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYp KTsKIHJldHVybiBhcmNoX2F0b21pY19hZGRfbmVnYXRpdmUoaSwgdik7Cn0KIyA4MzMgIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAphdG9taWM2NF9yZWFk KGNvbnN0IGF0b21pYzY0X3QgKnYpCnsKIGthc2FuX2NoZWNrX3JlYWQodiwgc2l6ZW9mKCp2KSk7 CiByZXR1cm4gYXJjaF9hdG9taWM2NF9yZWFkKHYpOwp9CiMgODUxICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pYzY0X3NldChhdG9taWM2NF90 ICp2LCBzNjQgaSkKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiBhcmNoX2F0 b21pYzY0X3NldCh2LCBpKTsKfQojIDg2OSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1p bnN0cnVtZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWM2NF9hZGQoczY0IGksIGF0b21pYzY0X3QgKnYpCnsK IGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogYXJjaF9hdG9taWM2NF9hZGQoaSwg dik7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgczY0CmF0b21pYzY0X2FkZF9yZXR1cm4oczY0IGksIGF0b21pYzY0X3QgKnYpCnsK IGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogcmV0dXJuIGFyY2hfYXRvbWljNjRf YWRkX3JldHVybihpLCB2KTsKfQojIDkxOCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1p bnN0cnVtZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX2FkZChzNjQgaSwgYXRvbWljNjRfdCAq dikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4gYXJjaF9hdG9t aWM2NF9mZXRjaF9hZGQoaSwgdik7Cn0KIyA5NTcgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9t aWMtaW5zdHJ1bWVudGVkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKYXRvbWljNjRfc3ViKHM2NCBpLCBhdG9taWM2NF90ICp2 KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIGFyY2hfYXRvbWljNjRfc3Vi KGksIHYpOwp9CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHM2NAphdG9taWM2NF9zdWJfcmV0dXJuKHM2NCBpLCBhdG9taWM2NF90ICp2 KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNoX2F0b21p YzY0X3N1Yl9yZXR1cm4oaSwgdik7Cn0KIyAxMDA2ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRv bWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKYXRvbWljNjRfZmV0Y2hfc3ViKHM2NCBpLCBhdG9taWM2 NF90ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNo X2F0b21pYzY0X2ZldGNoX3N1YihpLCB2KTsKfQojIDEwNDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKYXRvbWljNjRfaW5jKGF0b21pYzY0X3QgKnYp CnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogYXJjaF9hdG9taWM2NF9pbmMo dik7Cn0KIyAxMTM2ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkCmF0b21pYzY0X2RlYyhhdG9taWM2NF90ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2 LCBzaXplb2YoKnYpKTsKIGFyY2hfYXRvbWljNjRfZGVjKHYpOwp9CiMgMTIyNSAiLi9pbmNsdWRl L2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWM2NF9hbmQoczY0 IGksIGF0b21pYzY0X3QgKnYpCnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwog YXJjaF9hdG9taWM2NF9hbmQoaSwgdik7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX2FuZChzNjQg aSwgYXRvbWljNjRfdCAqdikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiBy ZXR1cm4gYXJjaF9hdG9taWM2NF9mZXRjaF9hbmQoaSwgdik7Cn0KIyAxMzIzICIuL2luY2x1ZGUv YXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pYzY0X29yKHM2NCBp LCBhdG9taWM2NF90ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIGFy Y2hfYXRvbWljNjRfb3IoaSwgdik7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX29yKHM2NCBpLCBh dG9taWM2NF90ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVy biBhcmNoX2F0b21pYzY0X2ZldGNoX29yKGksIHYpOwp9CiMgMTM3MSAiLi9pbmNsdWRlL2FzbS1n ZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWM2NF94b3IoczY0IGksIGF0 b21pYzY0X3QgKnYpCnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogYXJjaF9h dG9taWM2NF94b3IoaSwgdik7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX3hvcihzNjQgaSwgYXRv bWljNjRfdCAqdikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4g YXJjaF9hdG9taWM2NF9mZXRjaF94b3IoaSwgdik7Cn0KIyAxNDIwICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKYXRvbWljNjRfeGNoZyhhdG9taWM2NF90 ICp2LCBzNjQgaSkKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4g YXJjaF9hdG9taWM2NF94Y2hnKHYsIGkpOwp9CiMgMTQ2MCAiLi9pbmNsdWRlL2FzbS1nZW5lcmlj L2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2NtcHhjaGcoYXRvbWljNjRfdCAq diwgczY0IG9sZCwgczY0IG5ldykKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7 CiByZXR1cm4gYXJjaF9hdG9taWM2NF9jbXB4Y2hnKHYsIG9sZCwgbmV3KTsKfQojIDE1MDAgIi4v aW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljNjRf dHJ5X2NtcHhjaGcoYXRvbWljNjRfdCAqdiwgczY0ICpvbGQsIHM2NCBuZXcpCnsKIGthc2FuX2No ZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoga2FzYW5fY2hlY2tfd3JpdGUob2xkLCBzaXplb2Yo Km9sZCkpOwogcmV0dXJuIGFyY2hfYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgb2xkLCBuZXcpOwp9 CiMgMTU0NCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bAphdG9taWM2NF9zdWJfYW5kX3Rlc3QoczY0IGksIGF0b21pYzY0X3QgKnYpCnsKIGthc2FuX2No ZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogcmV0dXJuIGFyY2hfYXRvbWljNjRfc3ViX2FuZF90 ZXN0KGksIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pYzY0X2RlY19hbmRfdGVzdChhdG9taWM2NF90ICp2 KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNoX2F0b21p YzY0X2RlY19hbmRfdGVzdCh2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAphdG9taWM2NF9pbmNfYW5kX3Rlc3QoYXRv bWljNjRfdCAqdikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4g YXJjaF9hdG9taWM2NF9pbmNfYW5kX3Rlc3Qodik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljNjRfYWRkX25l Z2F0aXZlKHM2NCBpLCBhdG9taWM2NF90ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXpl b2YoKnYpKTsKIHJldHVybiBhcmNoX2F0b21pYzY0X2FkZF9uZWdhdGl2ZShpLCB2KTsKfQojIDI2 NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMgojIDggIi4vaW5jbHVkZS9saW51 eC9hdG9taWMuaCIgMgojIDc0ICIuL2luY2x1ZGUvbGludXgvYXRvbWljLmgiCiMgMSAiLi9pbmNs dWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIiAxCiMgNzkgIi4vaW5jbHVkZS9saW51eC9hdG9t aWMtZmFsbGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19yZWFkX2FjcXVpcmUoY29uc3QgYXRvbWljX3QgKnYp CnsKIHJldHVybiAoeyB0eXBlb2YoKiYodiktPmNvdW50ZXIpIF9fX3AxID0gKHsgdW5pb24geyB0 eXBlb2YoKiYodiktPmNvdW50ZXIpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBf X3JlYWRfb25jZV9zaXplKCYoKiYodiktPmNvdW50ZXIpLCBfX3UuX19jLCBzaXplb2YoKiYodikt PmNvdW50ZXIpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigqJih2KS0+Y291bnRl ciksIF9fdS5fX2MsIHNpemVvZigqJih2KS0+Y291bnRlcikpOyBkbyB7IH0gd2hpbGUgKDApOyBf X3UuX192YWw7IH0pOyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzgyKHZv aWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9y ZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKComKHYpLT5jb3VudGVy KSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComKHYpLT5jb3VudGVyKSA9PSBzaXplb2Yoc2hv cnQpIHx8IHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKCom KHYpLT5jb3VudGVyKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfODIo KTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IF9f X3AxOyB9KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWNfc2V0X3JlbGVhc2UoYXRvbWljX3QgKnYsIGludCBp KQp7CiBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfOTEodm9pZCkg X19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9s b2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXplb2YoKiYodiktPmNvdW50ZXIpID09 IHNpemVvZihjaGFyKSB8fCBzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihzaG9ydCkg fHwgc2l6ZW9mKComKHYpLT5jb3VudGVyKSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYodikt PmNvdW50ZXIpID09IHNpemVvZihsb25nKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF85MSgpOyB9 IHdoaWxlICgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgKHsgdW5p b24geyB0eXBlb2YoKiYodiktPmNvdW50ZXIpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7 IC5fX3ZhbCA9ICggdHlwZW9mKComKHYpLT5jb3VudGVyKSkgKGkpIH07IF9fd3JpdGVfb25jZV9z aXplKCYoKiYodiktPmNvdW50ZXIpLCBfX3UuX19jLCBzaXplb2YoKiYodiktPmNvdW50ZXIpKTsg X191Ll9fdmFsOyB9KTsgfSB3aGlsZSAoMCk7Cn0KIyAyODEgIi4vaW5jbHVkZS9saW51eC9hdG9t aWMtZmFsbGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19pbmNfcmV0dXJuKGF0b21pY190ICp2KQp7CiByZXR1 cm4gYXRvbWljX2FkZF9yZXR1cm4oMSwgdik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAphdG9taWNfaW5jX3JldHVybl9h Y3F1aXJlKGF0b21pY190ICp2KQp7CiByZXR1cm4gYXRvbWljX2FkZF9yZXR1cm4oMSwgdik7Cn0K CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGludAphdG9taWNfaW5jX3JldHVybl9yZWxlYXNlKGF0b21pY190ICp2KQp7CiByZXR1cm4g YXRvbWljX2FkZF9yZXR1cm4oMSwgdik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAphdG9taWNfaW5jX3JldHVybl9yZWxh eGVkKGF0b21pY190ICp2KQp7CiByZXR1cm4gYXRvbWljX2FkZF9yZXR1cm4oMSwgdik7Cn0KIyAz NjIgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9p bmMoYXRvbWljX3QgKnYpCnsKIHJldHVybiBhdG9taWNfZmV0Y2hfYWRkKDEsIHYpOwp9CgoKCgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQKYXRvbWljX2ZldGNoX2luY19hY3F1aXJlKGF0b21pY190ICp2KQp7CiByZXR1cm4gYXRvbWlj X2ZldGNoX2FkZCgxLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9pbmNfcmVsZWFzZShhdG9t aWNfdCAqdikKewogcmV0dXJuIGF0b21pY19mZXRjaF9hZGQoMSwgdik7Cn0KCgoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAphdG9t aWNfZmV0Y2hfaW5jX3JlbGF4ZWQoYXRvbWljX3QgKnYpCnsKIHJldHVybiBhdG9taWNfZmV0Y2hf YWRkKDEsIHYpOwp9CiMgNDUyICIuL2luY2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNrLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dAphdG9taWNfZGVjX3JldHVybihhdG9taWNfdCAqdikKewogcmV0dXJuIGF0b21pY19zdWJfcmV0 dXJuKDEsIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2RlY19yZXR1cm5fYWNxdWlyZShhdG9taWNfdCAq dikKewogcmV0dXJuIGF0b21pY19zdWJfcmV0dXJuKDEsIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2Rl Y19yZXR1cm5fcmVsZWFzZShhdG9taWNfdCAqdikKewogcmV0dXJuIGF0b21pY19zdWJfcmV0dXJu KDEsIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2RlY19yZXR1cm5fcmVsYXhlZChhdG9taWNfdCAqdikK ewogcmV0dXJuIGF0b21pY19zdWJfcmV0dXJuKDEsIHYpOwp9CiMgNTMzICIuL2luY2x1ZGUvbGlu dXgvYXRvbWljLWZhbGxiYWNrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAphdG9taWNfZmV0Y2hfZGVjKGF0b21pY190ICp2KQp7 CiByZXR1cm4gYXRvbWljX2ZldGNoX3N1YigxLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9k ZWNfYWNxdWlyZShhdG9taWNfdCAqdikKewogcmV0dXJuIGF0b21pY19mZXRjaF9zdWIoMSwgdik7 Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludAphdG9taWNfZmV0Y2hfZGVjX3JlbGVhc2UoYXRvbWljX3QgKnYpCnsKIHJldHVy biBhdG9taWNfZmV0Y2hfc3ViKDEsIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2ZldGNoX2RlY19yZWxh eGVkKGF0b21pY190ICp2KQp7CiByZXR1cm4gYXRvbWljX2ZldGNoX3N1YigxLCB2KTsKfQojIDY0 OSAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pY19hbmRub3Qo aW50IGksIGF0b21pY190ICp2KQp7CiBhdG9taWNfYW5kKH5pLCB2KTsKfQojIDY2NSAiLi9pbmNs dWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2ZldGNoX2FuZG5vdChpbnQg aSwgYXRvbWljX3QgKnYpCnsKIHJldHVybiBhdG9taWNfZmV0Y2hfYW5kKH5pLCB2KTsKfQoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50CmF0b21pY19mZXRjaF9hbmRub3RfYWNxdWlyZShpbnQgaSwgYXRvbWljX3QgKnYpCnsKIHJl dHVybiBhdG9taWNfZmV0Y2hfYW5kKH5pLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9hbmRu b3RfcmVsZWFzZShpbnQgaSwgYXRvbWljX3QgKnYpCnsKIHJldHVybiBhdG9taWNfZmV0Y2hfYW5k KH5pLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9hbmRub3RfcmVsYXhlZChpbnQgaSwgYXRv bWljX3QgKnYpCnsKIHJldHVybiBhdG9taWNfZmV0Y2hfYW5kKH5pLCB2KTsKfQojIDEwODMgIi4v aW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9hZGRfdW5s ZXNzKGF0b21pY190ICp2LCBpbnQgYSwgaW50IHUpCnsKIGludCBjID0gYXRvbWljX3JlYWQodik7 CgogZG8gewogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGMgPT0gdSksIDApKQogICBicmVhazsK IH0gd2hpbGUgKCFhdG9taWNfdHJ5X2NtcHhjaGcodiwgJmMsIGMgKyBhKSk7CgogcmV0dXJuIGM7 Cn0KIyAxMTA4ICIuL2luY2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNrLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWlj X2FkZF91bmxlc3MoYXRvbWljX3QgKnYsIGludCBhLCBpbnQgdSkKewogcmV0dXJuIGF0b21pY19m ZXRjaF9hZGRfdW5sZXNzKHYsIGEsIHUpICE9IHU7Cn0KIyAxMTI0ICIuL2luY2x1ZGUvbGludXgv YXRvbWljLWZhbGxiYWNrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljX2luY19ub3RfemVybyhhdG9taWNfdCAqdikK ewogcmV0dXJuIGF0b21pY19hZGRfdW5sZXNzKHYsIDEsIDApOwp9CgoKCgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pY19p bmNfdW5sZXNzX25lZ2F0aXZlKGF0b21pY190ICp2KQp7CiBpbnQgYyA9IGF0b21pY19yZWFkKHYp OwoKIGRvIHsKICBpZiAoX19idWlsdGluX2V4cGVjdCghIShjIDwgMCksIDApKQogICByZXR1cm4g ZmFsc2U7CiB9IHdoaWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKHYsICZjLCBjICsgMSkpOwoKIHJl dHVybiB0cnVlOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pY19kZWNfdW5sZXNzX3Bvc2l0aXZlKGF0b21pY190 ICp2KQp7CiBpbnQgYyA9IGF0b21pY19yZWFkKHYpOwoKIGRvIHsKICBpZiAoX19idWlsdGluX2V4 cGVjdCghIShjID4gMCksIDApKQogICByZXR1cm4gZmFsc2U7CiB9IHdoaWxlICghYXRvbWljX3Ry eV9jbXB4Y2hnKHYsICZjLCBjIC0gMSkpOwoKIHJldHVybiB0cnVlOwp9CgoKCgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWlj X2RlY19pZl9wb3NpdGl2ZShhdG9taWNfdCAqdikKewogaW50IGRlYywgYyA9IGF0b21pY19yZWFk KHYpOwoKIGRvIHsKICBkZWMgPSBjIC0gMTsKICBpZiAoX19idWlsdGluX2V4cGVjdCghIShkZWMg PCAwKSwgMCkpCiAgIGJyZWFrOwogfSB3aGlsZSAoIWF0b21pY190cnlfY21weGNoZyh2LCAmYywg ZGVjKSk7CgogcmV0dXJuIGRlYzsKfQojIDExODkgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFs bGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgczY0CmF0b21pYzY0X3JlYWRfYWNxdWlyZShjb25zdCBhdG9taWM2NF90ICp2KQp7 CiByZXR1cm4gKHsgdHlwZW9mKComKHYpLT5jb3VudGVyKSBfX19wMSA9ICh7IHVuaW9uIHsgdHlw ZW9mKComKHYpLT5jb3VudGVyKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19y ZWFkX29uY2Vfc2l6ZSgmKComKHYpLT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKComKHYpLT5j b3VudGVyKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoKiYodiktPmNvdW50ZXIp LCBfX3UuX19jLCBzaXplb2YoKiYodiktPmNvdW50ZXIpKTsgZG8geyB9IHdoaWxlICgwKTsgX191 Ll9fdmFsOyB9KTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xMTkyKHZv aWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9y ZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKComKHYpLT5jb3VudGVy KSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComKHYpLT5jb3VudGVyKSA9PSBzaXplb2Yoc2hv cnQpIHx8IHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKCom KHYpLT5jb3VudGVyKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfMTE5 MigpOyB9IHdoaWxlICgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsg X19fcDE7IH0pOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pYzY0X3NldF9yZWxlYXNlKGF0b21pYzY0X3QgKnYs IHM2NCBpKQp7CiBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMTIw MSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQg c3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikpKTsgaWYgKCEoKHNpemVvZigqJih2KS0+Y291 bnRlcikgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9m KHNob3J0KSB8fCBzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihpbnQpIHx8IHNpemVv ZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0 XzEyMDEoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5 Iik7ICh7IHVuaW9uIHsgdHlwZW9mKComKHYpLT5jb3VudGVyKSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqJih2KS0+Y291bnRlcikpIChpKSB9OyBfX3dy aXRlX29uY2Vfc2l6ZSgmKComKHYpLT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKComKHYpLT5j b3VudGVyKSk7IF9fdS5fX3ZhbDsgfSk7IH0gd2hpbGUgKDApOwp9CiMgMTM5MSAiLi9pbmNsdWRl L2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKYXRvbWljNjRfaW5jX3JldHVybihhdG9taWM2 NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfYWRkX3JldHVybigxLCB2KTsKfQoKCgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0 b21pYzY0X2luY19yZXR1cm5fYWNxdWlyZShhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWlj NjRfYWRkX3JldHVybigxLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2luY19yZXR1cm5fcmVsZWFz ZShhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfYWRkX3JldHVybigxLCB2KTsKfQoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgczY0CmF0b21pYzY0X2luY19yZXR1cm5fcmVsYXhlZChhdG9taWM2NF90ICp2KQp7CiByZXR1 cm4gYXRvbWljNjRfYWRkX3JldHVybigxLCB2KTsKfQojIDE0NzIgIi4vaW5jbHVkZS9saW51eC9h dG9taWMtZmFsbGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX2luYyhhdG9taWM2NF90ICp2KQp7 CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYWRkKDEsIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKYXRvbWljNjRfZmV0 Y2hfaW5jX2FjcXVpcmUoYXRvbWljNjRfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX2Fk ZCgxLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX2luY19yZWxlYXNlKGF0b21pYzY0X3Qg KnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9hZGQoMSwgdik7Cn0KCgoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAphdG9taWM2 NF9mZXRjaF9pbmNfcmVsYXhlZChhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0 Y2hfYWRkKDEsIHYpOwp9CiMgMTU2MiAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBzNjQKYXRvbWljNjRfZGVjX3JldHVybihhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWlj NjRfc3ViX3JldHVybigxLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2RlY19yZXR1cm5fYWNxdWly ZShhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybigxLCB2KTsKfQoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgczY0CmF0b21pYzY0X2RlY19yZXR1cm5fcmVsZWFzZShhdG9taWM2NF90ICp2KQp7CiByZXR1 cm4gYXRvbWljNjRfc3ViX3JldHVybigxLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2RlY19yZXR1 cm5fcmVsYXhlZChhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybigx LCB2KTsKfQojIDE2NDMgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0 b21pYzY0X2ZldGNoX2RlYyhhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hf c3ViKDEsIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzNjQKYXRvbWljNjRfZmV0Y2hfZGVjX2FjcXVpcmUoYXRvbWljNjRf dCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX3N1YigxLCB2KTsKfQoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21p YzY0X2ZldGNoX2RlY19yZWxlYXNlKGF0b21pYzY0X3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9m ZXRjaF9zdWIoMSwgdik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAphdG9taWM2NF9mZXRjaF9kZWNfcmVsYXhlZChhdG9t aWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfc3ViKDEsIHYpOwp9CiMgMTc1OSAi Li9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pYzY0X2FuZG5vdChz NjQgaSwgYXRvbWljNjRfdCAqdikKewogYXRvbWljNjRfYW5kKH5pLCB2KTsKfQojIDE3NzUgIi4v aW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX2FuZG5v dChzNjQgaSwgYXRvbWljNjRfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FuZCh+aSwg dik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NAphdG9taWM2NF9mZXRjaF9hbmRub3RfYWNxdWlyZShzNjQgaSwgYXRvbWlj NjRfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FuZCh+aSwgdik7Cn0KCgoKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAph dG9taWM2NF9mZXRjaF9hbmRub3RfcmVsZWFzZShzNjQgaSwgYXRvbWljNjRfdCAqdikKewogcmV0 dXJuIGF0b21pYzY0X2ZldGNoX2FuZCh+aSwgdik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAphdG9taWM2NF9mZXRjaF9h bmRub3RfcmVsYXhlZChzNjQgaSwgYXRvbWljNjRfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2Zl dGNoX2FuZCh+aSwgdik7Cn0KIyAyMTkzICIuL2luY2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNr LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHM2NAphdG9taWM2NF9mZXRjaF9hZGRfdW5sZXNzKGF0b21pYzY0X3QgKnYsIHM2NCBhLCBz NjQgdSkKewogczY0IGMgPSBhdG9taWM2NF9yZWFkKHYpOwoKIGRvIHsKICBpZiAoX19idWlsdGlu X2V4cGVjdCghIShjID09IHUpLCAwKSkKICAgYnJlYWs7CiB9IHdoaWxlICghYXRvbWljNjRfdHJ5 X2NtcHhjaGcodiwgJmMsIGMgKyBhKSk7CgogcmV0dXJuIGM7Cn0KIyAyMjE4ICIuL2luY2x1ZGUv bGludXgvYXRvbWljLWZhbGxiYWNrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljNjRfYWRkX3VubGVzcyhhdG9taWM2 NF90ICp2LCBzNjQgYSwgczY0IHUpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9hZGRfdW5sZXNz KHYsIGEsIHUpICE9IHU7Cn0KIyAyMjM0ICIuL2luY2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNr LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wKYXRvbWljNjRfaW5jX25vdF96ZXJvKGF0b21pYzY0X3QgKnYpCnsKIHJldHVybiBh dG9taWM2NF9hZGRfdW5sZXNzKHYsIDEsIDApOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pYzY0X2luY191bmxl c3NfbmVnYXRpdmUoYXRvbWljNjRfdCAqdikKewogczY0IGMgPSBhdG9taWM2NF9yZWFkKHYpOwoK IGRvIHsKICBpZiAoX19idWlsdGluX2V4cGVjdCghIShjIDwgMCksIDApKQogICByZXR1cm4gZmFs c2U7CiB9IHdoaWxlICghYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgJmMsIGMgKyAxKSk7CgogcmV0 dXJuIHRydWU7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljNjRfZGVjX3VubGVzc19wb3NpdGl2ZShhdG9taWM2 NF90ICp2KQp7CiBzNjQgYyA9IGF0b21pYzY0X3JlYWQodik7CgogZG8gewogIGlmIChfX2J1aWx0 aW5fZXhwZWN0KCEhKGMgPiAwKSwgMCkpCiAgIHJldHVybiBmYWxzZTsKIH0gd2hpbGUgKCFhdG9t aWM2NF90cnlfY21weGNoZyh2LCAmYywgYyAtIDEpKTsKCiByZXR1cm4gdHJ1ZTsKfQoKCgoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0 CmF0b21pYzY0X2RlY19pZl9wb3NpdGl2ZShhdG9taWM2NF90ICp2KQp7CiBzNjQgZGVjLCBjID0g YXRvbWljNjRfcmVhZCh2KTsKCiBkbyB7CiAgZGVjID0gYyAtIDE7CiAgaWYgKF9fYnVpbHRpbl9l eHBlY3QoISEoZGVjIDwgMCksIDApKQogICBicmVhazsKIH0gd2hpbGUgKCFhdG9taWM2NF90cnlf Y21weGNoZyh2LCAmYywgZGVjKSk7CgogcmV0dXJuIGRlYzsKfQojIDc1ICIuL2luY2x1ZGUvbGlu dXgvYXRvbWljLmgiIDIKCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1sb25nLmgi IDEKIyA5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWxvbmcuaCIKIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVzLmgiIDEKIyAxMCAiLi9pbmNsdWRl L2FzbS1nZW5lcmljL2F0b21pYy1sb25nLmgiIDIKCgp0eXBlZGVmIGF0b21pYzY0X3QgYXRvbWlj X2xvbmdfdDsKIyAyNSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1sb25nLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcK YXRvbWljX2xvbmdfcmVhZChjb25zdCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWlj NjRfcmVhZCh2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19yZWFkX2FjcXVpcmUoY29uc3QgYXRvbWlj X2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X3JlYWRfYWNxdWlyZSh2KTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAph dG9taWNfbG9uZ19zZXQoYXRvbWljX2xvbmdfdCAqdiwgbG9uZyBpKQp7CiBhdG9taWM2NF9zZXQo diwgaSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQKYXRvbWljX2xvbmdfc2V0X3JlbGVhc2UoYXRvbWljX2xvbmdfdCAqdiwg bG9uZyBpKQp7CiBhdG9taWM2NF9zZXRfcmVsZWFzZSh2LCBpKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWNfbG9u Z19hZGQobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiBhdG9taWM2NF9hZGQoaSwgdik7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGxvbmcKYXRvbWljX2xvbmdfYWRkX3JldHVybihsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsK IHJldHVybiBhdG9taWM2NF9hZGRfcmV0dXJuKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2Fk ZF9yZXR1cm5fYWNxdWlyZShsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9t aWM2NF9hZGRfcmV0dXJuKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2FkZF9yZXR1cm5fcmVs ZWFzZShsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9hZGRfcmV0 dXJuKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2FkZF9yZXR1cm5fcmVsYXhlZChsb25nIGks IGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9hZGRfcmV0dXJuKGksIHYpOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBsb25nCmF0b21pY19sb25nX2ZldGNoX2FkZChsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsK IHJldHVybiBhdG9taWM2NF9mZXRjaF9hZGQoaSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0 Y2hfYWRkX2FjcXVpcmUobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWlj NjRfZmV0Y2hfYWRkKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2ZldGNoX2FkZF9yZWxlYXNl KGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FkZChp LCB2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19mZXRjaF9hZGRfcmVsYXhlZChsb25nIGksIGF0b21p Y19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9hZGQoaSwgdik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQK YXRvbWljX2xvbmdfc3ViKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKewogYXRvbWljNjRfc3Vi KGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX3N1Yl9yZXR1cm4obG9uZyBpLCBhdG9taWNfbG9u Z190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybihpLCB2KTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9t aWNfbG9uZ19zdWJfcmV0dXJuX2FjcXVpcmUobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiBy ZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybihpLCB2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19zdWJf cmV0dXJuX3JlbGVhc2UobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWlj NjRfc3ViX3JldHVybihpLCB2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19zdWJfcmV0dXJuX3JlbGF4 ZWQobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfc3ViX3JldHVy bihpLCB2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19mZXRjaF9zdWIobG9uZyBpLCBhdG9taWNfbG9u Z190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfc3ViKGksIHYpOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21p Y19sb25nX2ZldGNoX3N1Yl9hY3F1aXJlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKewogcmV0 dXJuIGF0b21pYzY0X2ZldGNoX3N1YihpLCB2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19mZXRjaF9z dWJfcmVsZWFzZShsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9m ZXRjaF9zdWIoaSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfc3ViX3JlbGF4ZWQobG9u ZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfc3ViKGksIHYp Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkCmF0b21pY19sb25nX2luYyhhdG9taWNfbG9uZ190ICp2KQp7CiBhdG9taWM2NF9p bmModik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfaW5jX3JldHVybihhdG9taWNfbG9uZ190ICp2KQp7 CiByZXR1cm4gYXRvbWljNjRfaW5jX3JldHVybih2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19pbmNf cmV0dXJuX2FjcXVpcmUoYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2luY19y ZXR1cm5fYWNxdWlyZSh2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19pbmNfcmV0dXJuX3JlbGVhc2Uo YXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2luY19yZXR1cm5fcmVsZWFzZSh2 KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgbG9uZwphdG9taWNfbG9uZ19pbmNfcmV0dXJuX3JlbGF4ZWQoYXRvbWljX2xvbmdfdCAq dikKewogcmV0dXJuIGF0b21pYzY0X2luY19yZXR1cm5fcmVsYXhlZCh2KTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9t aWNfbG9uZ19mZXRjaF9pbmMoYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2Zl dGNoX2luYyh2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19mZXRjaF9pbmNfYWNxdWlyZShhdG9taWNf bG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfaW5jX2FjcXVpcmUodik7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxv bmcKYXRvbWljX2xvbmdfZmV0Y2hfaW5jX3JlbGVhc2UoYXRvbWljX2xvbmdfdCAqdikKewogcmV0 dXJuIGF0b21pYzY0X2ZldGNoX2luY19yZWxlYXNlKHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2Zl dGNoX2luY19yZWxheGVkKGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRj aF9pbmNfcmVsYXhlZCh2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWNfbG9uZ19kZWMoYXRvbWljX2xvbmdfdCAq dikKewogYXRvbWljNjRfZGVjKHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2RlY19yZXR1cm4oYXRv bWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2RlY19yZXR1cm4odik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcK YXRvbWljX2xvbmdfZGVjX3JldHVybl9hY3F1aXJlKGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVy biBhdG9taWM2NF9kZWNfcmV0dXJuX2FjcXVpcmUodik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZGVj X3JldHVybl9yZWxlYXNlKGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9kZWNf cmV0dXJuX3JlbGVhc2Uodik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZGVjX3JldHVybl9yZWxheGVk KGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9kZWNfcmV0dXJuX3JlbGF4ZWQo dik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfZGVjKGF0b21pY19sb25nX3QgKnYpCnsKIHJl dHVybiBhdG9taWM2NF9mZXRjaF9kZWModik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfZGVj X2FjcXVpcmUoYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX2RlY19h Y3F1aXJlKHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2ZldGNoX2RlY19yZWxlYXNlKGF0b21pY19s b25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9kZWNfcmVsZWFzZSh2KTsKfQoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9u ZwphdG9taWNfbG9uZ19mZXRjaF9kZWNfcmVsYXhlZChhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1 cm4gYXRvbWljNjRfZmV0Y2hfZGVjX3JlbGF4ZWQodik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKYXRvbWljX2xvbmdfYW5k KGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKewogYXRvbWljNjRfYW5kKGksIHYpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25n CmF0b21pY19sb25nX2ZldGNoX2FuZChsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVy biBhdG9taWM2NF9mZXRjaF9hbmQoaSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfYW5k X2FjcXVpcmUobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0 Y2hfYW5kKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2ZldGNoX2FuZF9yZWxlYXNlKGxvbmcg aSwgYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FuZChpLCB2KTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgbG9uZwphdG9taWNfbG9uZ19mZXRjaF9hbmRfcmVsYXhlZChsb25nIGksIGF0b21pY19sb25n X3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmQoaSwgdik7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKYXRvbWlj X2xvbmdfYW5kbm90KGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKewogYXRvbWljNjRfYW5kbm90 KGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2ZldGNoX2FuZG5vdChsb25nIGksIGF0b21pY19s b25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmRub3QoaSwgdik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcK YXRvbWljX2xvbmdfZmV0Y2hfYW5kbm90X2FjcXVpcmUobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2 KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYW5kbm90X2FjcXVpcmUoaSwgdik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcK YXRvbWljX2xvbmdfZmV0Y2hfYW5kbm90X3JlbGVhc2UobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2 KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYW5kbm90X3JlbGVhc2UoaSwgdik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcK YXRvbWljX2xvbmdfZmV0Y2hfYW5kbm90X3JlbGF4ZWQobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2 KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYW5kbm90X3JlbGF4ZWQoaSwgdik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQK YXRvbWljX2xvbmdfb3IobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiBhdG9taWM2NF9vcihp LCB2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19mZXRjaF9vcihsb25nIGksIGF0b21pY19sb25nX3Qg KnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9vcihpLCB2KTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9u Z19mZXRjaF9vcl9hY3F1aXJlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0 b21pYzY0X2ZldGNoX29yKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2ZldGNoX29yX3JlbGVh c2UobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfb3Io aSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfb3JfcmVsYXhlZChsb25nIGksIGF0b21p Y19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9vcihpLCB2KTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAph dG9taWNfbG9uZ194b3IobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiBhdG9taWM2NF94b3Io aSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfeG9yKGxvbmcgaSwgYXRvbWljX2xvbmdf dCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX3hvcihpLCB2KTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNf bG9uZ19mZXRjaF94b3JfYWNxdWlyZShsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVy biBhdG9taWM2NF9mZXRjaF94b3IoaSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfeG9y X3JlbGVhc2UobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0 Y2hfeG9yKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2ZldGNoX3hvcl9yZWxheGVkKGxvbmcg aSwgYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX3hvcihpLCB2KTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgbG9uZwphdG9taWNfbG9uZ194Y2hnKGF0b21pY19sb25nX3QgKnYsIGxvbmcgaSkKewogcmV0 dXJuIGF0b21pYzY0X3hjaGcodiwgaSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfeGNoZ19hY3F1aXJl KGF0b21pY19sb25nX3QgKnYsIGxvbmcgaSkKewogcmV0dXJuIGF0b21pYzY0X3hjaGcodiwgaSk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGxvbmcKYXRvbWljX2xvbmdfeGNoZ19yZWxlYXNlKGF0b21pY19sb25nX3QgKnYsIGxvbmcg aSkKewogcmV0dXJuIGF0b21pYzY0X3hjaGcodiwgaSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfeGNo Z19yZWxheGVkKGF0b21pY19sb25nX3QgKnYsIGxvbmcgaSkKewogcmV0dXJuIGF0b21pYzY0X3hj aGcodiwgaSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfY21weGNoZyhhdG9taWNfbG9uZ190ICp2LCBs b25nIG9sZCwgbG9uZyBuZXcpCnsKIHJldHVybiBhdG9taWM2NF9jbXB4Y2hnKHYsIG9sZCwgbmV3 KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgbG9uZwphdG9taWNfbG9uZ19jbXB4Y2hnX2FjcXVpcmUoYXRvbWljX2xvbmdfdCAqdiwg bG9uZyBvbGQsIGxvbmcgbmV3KQp7CiByZXR1cm4gYXRvbWljNjRfY21weGNoZyh2LCBvbGQsIG5l dyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGxvbmcKYXRvbWljX2xvbmdfY21weGNoZ19yZWxlYXNlKGF0b21pY19sb25nX3QgKnYs IGxvbmcgb2xkLCBsb25nIG5ldykKewogcmV0dXJuIGF0b21pYzY0X2NtcHhjaGcodiwgb2xkLCBu ZXcpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBsb25nCmF0b21pY19sb25nX2NtcHhjaGdfcmVsYXhlZChhdG9taWNfbG9uZ190ICp2 LCBsb25nIG9sZCwgbG9uZyBuZXcpCnsKIHJldHVybiBhdG9taWM2NF9jbXB4Y2hnKHYsIG9sZCwg bmV3KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbAphdG9taWNfbG9uZ190cnlfY21weGNoZyhhdG9taWNfbG9uZ190ICp2LCBs b25nICpvbGQsIGxvbmcgbmV3KQp7CiByZXR1cm4gYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgKHM2 NCAqKW9sZCwgbmV3KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAphdG9taWNfbG9uZ190cnlfY21weGNoZ19hY3F1aXJlKGF0 b21pY19sb25nX3QgKnYsIGxvbmcgKm9sZCwgbG9uZyBuZXcpCnsKIHJldHVybiBhdG9taWM2NF90 cnlfY21weGNoZyh2LCAoczY0ICopb2xkLCBuZXcpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pY19sb25nX3RyeV9j bXB4Y2hnX3JlbGVhc2UoYXRvbWljX2xvbmdfdCAqdiwgbG9uZyAqb2xkLCBsb25nIG5ldykKewog cmV0dXJuIGF0b21pYzY0X3RyeV9jbXB4Y2hnKHYsIChzNjQgKilvbGQsIG5ldyk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wK YXRvbWljX2xvbmdfdHJ5X2NtcHhjaGdfcmVsYXhlZChhdG9taWNfbG9uZ190ICp2LCBsb25nICpv bGQsIGxvbmcgbmV3KQp7CiByZXR1cm4gYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgKHM2NCAqKW9s ZCwgbmV3KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbAphdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobG9uZyBpLCBhdG9taWNf bG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfc3ViX2FuZF90ZXN0KGksIHYpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s CmF0b21pY19sb25nX2RlY19hbmRfdGVzdChhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRv bWljNjRfZGVjX2FuZF90ZXN0KHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pY19sb25nX2luY19hbmRfdGVzdChh dG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfaW5jX2FuZF90ZXN0KHYpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sCmF0b21pY19sb25nX2FkZF9uZWdhdGl2ZShsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsK IHJldHVybiBhdG9taWM2NF9hZGRfbmVnYXRpdmUoaSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdf ZmV0Y2hfYWRkX3VubGVzcyhhdG9taWNfbG9uZ190ICp2LCBsb25nIGEsIGxvbmcgdSkKewogcmV0 dXJuIGF0b21pYzY0X2ZldGNoX2FkZF91bmxlc3ModiwgYSwgdSk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljX2xv bmdfYWRkX3VubGVzcyhhdG9taWNfbG9uZ190ICp2LCBsb25nIGEsIGxvbmcgdSkKewogcmV0dXJu IGF0b21pYzY0X2FkZF91bmxlc3ModiwgYSwgdSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljX2xvbmdfaW5jX25v dF96ZXJvKGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9pbmNfbm90X3plcm8o dik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wKYXRvbWljX2xvbmdfaW5jX3VubGVzc19uZWdhdGl2ZShhdG9taWNfbG9uZ190 ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfaW5jX3VubGVzc19uZWdhdGl2ZSh2KTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAph dG9taWNfbG9uZ19kZWNfdW5sZXNzX3Bvc2l0aXZlKGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVy biBhdG9taWM2NF9kZWNfdW5sZXNzX3Bvc2l0aXZlKHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2Rl Y19pZl9wb3NpdGl2ZShhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZGVjX2lm X3Bvc2l0aXZlKHYpOwp9CiMgNzcgIi4vaW5jbHVkZS9saW51eC9hdG9taWMuaCIgMgojIDE5ICIu L2luY2x1ZGUvbGludXgva2dkYi5oIiAyCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20va2dk Yi5oIiAxCiMgMTAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20va2dkYi5oIgojIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9zZWdtZW50LmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2NvbnN0LmgiIDEKCgoKIyAx ICIuL2luY2x1ZGUvdWFwaS9saW51eC9jb25zdC5oIiAxCiMgNSAiLi9pbmNsdWRlL2xpbnV4L2Nv bnN0LmgiIDIKIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NlZ21lbnQuaCIgMgojIDE2OSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zZWdtZW50LmgiCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9jYWNoZS5oIiAxCiMgMTcwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NlZ21lbnQuaCIg MgojIDI0OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zZWdtZW50LmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcg dmRzb19lbmNvZGVfY3B1bm9kZShpbnQgY3B1LCB1bnNpZ25lZCBsb25nIG5vZGUpCnsKIHJldHVy biAobm9kZSA8PCAxMikgfCBjcHU7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdmRzb19yZWFkX2NwdW5vZGUodW5zaWduZWQg KmNwdSwgdW5zaWduZWQgKm5vZGUpCnsKIHVuc2lnbmVkIGludCBwOwojIDI2NiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9zZWdtZW50LmgiCiBhc20gX19pbmxpbmUgdm9sYXRpbGUgKCIjIEFMVDog b2xkbnN0clxuIiAiNjYxOlxuXHQiICJsc2wgJVtzZWddLCVbcF0iICJcbjY2MjpcbiIgIiMgQUxU OiBwYWRkaW5nXG4iICIuc2tpcCAtKCgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKS0oIiAi NjYyYi02NjFiIiAiKSkgPiAwKSAqICIgIigoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKS0o IiAiNjYyYi02NjFiIiAiKSksMHg5MFxuIiAiNjYzIiAiOlxuIiAiLnB1c2hzZWN0aW9uIC5hbHRp bnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAubG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIgIjY2NCIi MSIiZiAtIC5cbiIgIiAud29yZCAiICIoMTYqMzIrMjIpIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJi LTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICJcbiIgIiAuYnl0 ZSAiICI2NjMiImItNjYyYiIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5wdXNoc2VjdGlvbiAuYWx0 aW5zdHJfcmVwbGFjZW1lbnQsIFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxhY2VtZW50ICIgIjEiICJc biIgIjY2NCIiMSIiOlxuXHQiICIuYnl0ZSAweGYzLDB4MGYsMHhjNywweGY4IiAiXG4iICI2NjUi IjEiICI6XG4iICIucG9wc2VjdGlvblxuIiA6IFtwXSAiPWEiIChwKSA6ICJpIiAoMCksIFtzZWdd ICJyIiAoKDE1KjggKyAzKSkpCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKCiBpZiAoY3B1KQogICpjcHUgPSAocCAmIDB4ZmZmKTsKIGlmIChub2RlKQogICpu b2RlID0gKHAgPj4gMTIpOwp9CiMgMzAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NlZ21lbnQu aCIKZXh0ZXJuIGNvbnN0IGNoYXIgZWFybHlfaWR0X2hhbmRsZXJfYXJyYXlbMzJdWzldOwpleHRl cm4gdm9pZCBlYXJseV9pZ25vcmVfaXJxKHZvaWQpOwojIDM0NyAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9zZWdtZW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgX19sb2Fkc2VnbWVudF9mcyh1bnNpZ25lZCBzaG9ydCB2YWx1 ZSkKewogYXNtIHZvbGF0aWxlKCIJCQkJCQlcbiIKICAgICAgICIxOgltb3Z3ICUwLCAlJWZzCQkJ XG4iCiAgICAgICAiMjoJCQkJCVxuIgoKICAgICAgICIgLnB1c2hzZWN0aW9uIFwiX19leF90YWJs ZVwiLFwiYVwiXG4iICIgLmJhbGlnbiA0XG4iICIgLmxvbmcgKCIgIjFiIiAiKSAtIC5cbiIgIiAu bG9uZyAoIiAiMmIiICIpIC0gLlxuIiAiIC5sb25nICgiICJleF9oYW5kbGVyX2NsZWFyX2ZzIiAi KSAtIC5cbiIgIiAucG9wc2VjdGlvblxuIgoKICAgICAgIDogOiAicm0iICh2YWx1ZSkgOiAibWVt b3J5Iik7Cn0KIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIiAyCiMgMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wYWdlX3R5cGVzLmgiIDEKCgoKCgoKIyAxICIuL2luY2x1ZGUv bGludXgvbWVtX2VuY3J5cHQuaCIgMQojIDE3ICIuL2luY2x1ZGUvbGludXgvbWVtX2VuY3J5cHQu aCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21lbV9lbmNyeXB0LmgiIDEKIyAxNyAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9tZW1fZW5jcnlwdC5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVk ZS91YXBpL2FzbS9ib290cGFyYW0uaCIgMQojIDQzICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9h c20vYm9vdHBhcmFtLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NjcmVlbl9pbmZvLmgiIDEKCgoK CiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc2NyZWVuX2luZm8uaCIgMQojIDExICIuL2luY2x1 ZGUvdWFwaS9saW51eC9zY3JlZW5faW5mby5oIgpzdHJ1Y3Qgc2NyZWVuX2luZm8gewogX191OCBv cmlnX3g7CiBfX3U4IG9yaWdfeTsKIF9fdTE2IGV4dF9tZW1fazsKIF9fdTE2IG9yaWdfdmlkZW9f cGFnZTsKIF9fdTggb3JpZ192aWRlb19tb2RlOwogX191OCBvcmlnX3ZpZGVvX2NvbHM7CiBfX3U4 IGZsYWdzOwogX191OCB1bnVzZWQyOwogX191MTYgb3JpZ192aWRlb19lZ2FfYng7CiBfX3UxNiB1 bnVzZWQzOwogX191OCBvcmlnX3ZpZGVvX2xpbmVzOwogX191OCBvcmlnX3ZpZGVvX2lzVkdBOwog X191MTYgb3JpZ192aWRlb19wb2ludHM7CgoKIF9fdTE2IGxmYl93aWR0aDsKIF9fdTE2IGxmYl9o ZWlnaHQ7CiBfX3UxNiBsZmJfZGVwdGg7CiBfX3UzMiBsZmJfYmFzZTsKIF9fdTMyIGxmYl9zaXpl OwogX191MTYgY2xfbWFnaWMsIGNsX29mZnNldDsKIF9fdTE2IGxmYl9saW5lbGVuZ3RoOwogX191 OCByZWRfc2l6ZTsKIF9fdTggcmVkX3BvczsKIF9fdTggZ3JlZW5fc2l6ZTsKIF9fdTggZ3JlZW5f cG9zOwogX191OCBibHVlX3NpemU7CiBfX3U4IGJsdWVfcG9zOwogX191OCByc3ZkX3NpemU7CiBf X3U4IHJzdmRfcG9zOwogX191MTYgdmVzYXBtX3NlZzsKIF9fdTE2IHZlc2FwbV9vZmY7CiBfX3Ux NiBwYWdlczsKIF9fdTE2IHZlc2FfYXR0cmlidXRlczsKIF9fdTMyIGNhcGFiaWxpdGllczsKIF9f dTMyIGV4dF9sZmJfYmFzZTsKIF9fdTggX3Jlc2VydmVkWzJdOwp9IF9fYXR0cmlidXRlX18oKHBh Y2tlZCkpOwojIDYgIi4vaW5jbHVkZS9saW51eC9zY3JlZW5faW5mby5oIiAyCgpleHRlcm4gc3Ry dWN0IHNjcmVlbl9pbmZvIHNjcmVlbl9pbmZvOwojIDQ0ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFw aS9hc20vYm9vdHBhcmFtLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvYXBtX2Jpb3MuaCIgMQoj IDkgIi4vaW5jbHVkZS9saW51eC9hcG1fYmlvcy5oIgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4 L2FwbV9iaW9zLmgiIDEKIyAyMiAiLi9pbmNsdWRlL3VhcGkvbGludXgvYXBtX2Jpb3MuaCIKdHlw ZWRlZiB1bnNpZ25lZCBzaG9ydCBhcG1fZXZlbnRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBh cG1fZXZlbnRpbmZvX3Q7CgpzdHJ1Y3QgYXBtX2Jpb3NfaW5mbyB7CiBfX3UxNiB2ZXJzaW9uOwog X191MTYgY3NlZzsKIF9fdTMyIG9mZnNldDsKIF9fdTE2IGNzZWdfMTY7CiBfX3UxNiBkc2VnOwog X191MTYgZmxhZ3M7CiBfX3UxNiBjc2VnX2xlbjsKIF9fdTE2IGNzZWdfMTZfbGVuOwogX191MTYg ZHNlZ19sZW47Cn07CiMgMTMzICIuL2luY2x1ZGUvdWFwaS9saW51eC9hcG1fYmlvcy5oIgojIDEg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L2lvY3RsLmgiIDEKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNs dWRlL2dlbmVyYXRlZC91YXBpL2FzbS9pb2N0bC5oIiAxCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5l cmljL2lvY3RsLmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvaW9jdGwu aCIgMQojIDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9pb2N0bC5oIiAyCgoKCgoKZXh0ZXJuIHVu c2lnbmVkIGludCBfX2ludmFsaWRfc2l6ZV9hcmd1bWVudF9mb3JfSU9DOwojIDIgIi4vYXJjaC94 ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vaW9jdGwuaCIgMgojIDYgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L2lvY3RsLmgiIDIKIyAxMzQgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2FwbV9iaW9z LmgiIDIKIyAxMCAiLi9pbmNsdWRlL2xpbnV4L2FwbV9iaW9zLmgiIDIKIyAyNiAiLi9pbmNsdWRl L2xpbnV4L2FwbV9iaW9zLmgiCnN0cnVjdCBhcG1faW5mbyB7CiBzdHJ1Y3QgYXBtX2Jpb3NfaW5m byBiaW9zOwogdW5zaWduZWQgc2hvcnQgY29ubmVjdGlvbl92ZXJzaW9uOwogaW50IGdldF9wb3dl cl9zdGF0dXNfYnJva2VuOwogaW50IGdldF9wb3dlcl9zdGF0dXNfc3dhYmlubWludXRlczsKIGlu dCBhbGxvd19pbnRzOwogaW50IGZvcmJpZF9pZGxlOwogaW50IHJlYWxtb2RlX3Bvd2VyX29mZjsK IGludCBkaXNhYmxlZDsKfTsKIyA4NSAiLi9pbmNsdWRlL2xpbnV4L2FwbV9iaW9zLmgiCmV4dGVy biBzdHJ1Y3QgYXBtX2luZm8gYXBtX2luZm87CiMgNDUgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBp L2FzbS9ib290cGFyYW0uaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9lZGQuaCIgMQojIDI0ICIu L2luY2x1ZGUvbGludXgvZWRkLmgiCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZWRkLmgiIDEK IyA3MiAiLi9pbmNsdWRlL3VhcGkvbGludXgvZWRkLmgiCnN0cnVjdCBlZGRfZGV2aWNlX3BhcmFt cyB7CiBfX3UxNiBsZW5ndGg7CiBfX3UxNiBpbmZvX2ZsYWdzOwogX191MzIgbnVtX2RlZmF1bHRf Y3lsaW5kZXJzOwogX191MzIgbnVtX2RlZmF1bHRfaGVhZHM7CiBfX3UzMiBzZWN0b3JzX3Blcl90 cmFjazsKIF9fdTY0IG51bWJlcl9vZl9zZWN0b3JzOwogX191MTYgYnl0ZXNfcGVyX3NlY3RvcjsK IF9fdTMyIGRwdGVfcHRyOwogX191MTYga2V5OwogX191OCBkZXZpY2VfcGF0aF9pbmZvX2xlbmd0 aDsKIF9fdTggcmVzZXJ2ZWQyOwogX191MTYgcmVzZXJ2ZWQzOwogX191OCBob3N0X2J1c190eXBl WzRdOwogX191OCBpbnRlcmZhY2VfdHlwZVs4XTsKIHVuaW9uIHsKICBzdHJ1Y3QgewogICBfX3Ux NiBiYXNlX2FkZHJlc3M7CiAgIF9fdTE2IHJlc2VydmVkMTsKICAgX191MzIgcmVzZXJ2ZWQyOwog IH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGlzYTsKICBzdHJ1Y3QgewogICBfX3U4IGJ1czsK ICAgX191OCBzbG90OwogICBfX3U4IGZ1bmN0aW9uOwogICBfX3U4IGNoYW5uZWw7CiAgIF9fdTMy IHJlc2VydmVkOwogIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIHBjaTsKCiAgc3RydWN0IHsK ICAgX191NjQgcmVzZXJ2ZWQ7CiAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgaWJuZDsKICBz dHJ1Y3QgewogICBfX3U2NCByZXNlcnZlZDsKICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSB4 cHJzOwogIHN0cnVjdCB7CiAgIF9fdTY0IHJlc2VydmVkOwogIH0gX19hdHRyaWJ1dGVfXyAoKHBh Y2tlZCkpIGh0cHQ7CiAgc3RydWN0IHsKICAgX191NjQgcmVzZXJ2ZWQ7CiAgfSBfX2F0dHJpYnV0 ZV9fICgocGFja2VkKSkgdW5rbm93bjsKIH0gaW50ZXJmYWNlX3BhdGg7CiB1bmlvbiB7CiAgc3Ry dWN0IHsKICAgX191OCBkZXZpY2U7CiAgIF9fdTggcmVzZXJ2ZWQxOwogICBfX3UxNiByZXNlcnZl ZDI7CiAgIF9fdTMyIHJlc2VydmVkMzsKICAgX191NjQgcmVzZXJ2ZWQ0OwogIH0gX19hdHRyaWJ1 dGVfXyAoKHBhY2tlZCkpIGF0YTsKICBzdHJ1Y3QgewogICBfX3U4IGRldmljZTsKICAgX191OCBs dW47CiAgIF9fdTggcmVzZXJ2ZWQxOwogICBfX3U4IHJlc2VydmVkMjsKICAgX191MzIgcmVzZXJ2 ZWQzOwogICBfX3U2NCByZXNlcnZlZDQ7CiAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgYXRh cGk7CiAgc3RydWN0IHsKICAgX191MTYgaWQ7CiAgIF9fdTY0IGx1bjsKICAgX191MTYgcmVzZXJ2 ZWQxOwogICBfX3UzMiByZXNlcnZlZDI7CiAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgc2Nz aTsKICBzdHJ1Y3QgewogICBfX3U2NCBzZXJpYWxfbnVtYmVyOwogICBfX3U2NCByZXNlcnZlZDsK ICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSB1c2I7CiAgc3RydWN0IHsKICAgX191NjQgZXVp OwogICBfX3U2NCByZXNlcnZlZDsKICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBpMTM5NDsK ICBzdHJ1Y3QgewogICBfX3U2NCB3d2lkOwogICBfX3U2NCBsdW47CiAgfSBfX2F0dHJpYnV0ZV9f ICgocGFja2VkKSkgZmlicmU7CiAgc3RydWN0IHsKICAgX191NjQgaWRlbnRpdHlfdGFnOwogICBf X3U2NCByZXNlcnZlZDsKICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBpMm87CiAgc3RydWN0 IHsKICAgX191MzIgYXJyYXlfbnVtYmVyOwogICBfX3UzMiByZXNlcnZlZDE7CiAgIF9fdTY0IHJl c2VydmVkMjsKICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSByYWlkOwogIHN0cnVjdCB7CiAg IF9fdTggZGV2aWNlOwogICBfX3U4IHJlc2VydmVkMTsKICAgX191MTYgcmVzZXJ2ZWQyOwogICBf X3UzMiByZXNlcnZlZDM7CiAgIF9fdTY0IHJlc2VydmVkNDsKICB9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKSBzYXRhOwogIHN0cnVjdCB7CiAgIF9fdTY0IHJlc2VydmVkMTsKICAgX191NjQgcmVz ZXJ2ZWQyOwogIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIHVua25vd247CiB9IGRldmljZV9w YXRoOwogX191OCByZXNlcnZlZDQ7CiBfX3U4IGNoZWNrc3VtOwp9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKTsKCnN0cnVjdCBlZGRfaW5mbyB7CiBfX3U4IGRldmljZTsKIF9fdTggdmVyc2lvbjsK IF9fdTE2IGludGVyZmFjZV9zdXBwb3J0OwogX191MTYgbGVnYWN5X21heF9jeWxpbmRlcjsKIF9f dTggbGVnYWN5X21heF9oZWFkOwogX191OCBsZWdhY3lfc2VjdG9yc19wZXJfdHJhY2s7CiBzdHJ1 Y3QgZWRkX2RldmljZV9wYXJhbXMgcGFyYW1zOwp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsK CnN0cnVjdCBlZGQgewogdW5zaWduZWQgaW50IG1icl9zaWduYXR1cmVbMTZdOwogc3RydWN0IGVk ZF9pbmZvIGVkZF9pbmZvWzZdOwogdW5zaWduZWQgY2hhciBtYnJfc2lnbmF0dXJlX25yOwogdW5z aWduZWQgY2hhciBlZGRfaW5mb19ucjsKfTsKIyAyNSAiLi9pbmNsdWRlL2xpbnV4L2VkZC5oIiAy CgoKZXh0ZXJuIHN0cnVjdCBlZGQgZWRkOwojIDQ2ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9h c20vYm9vdHBhcmFtLmgiIDIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lzdC5oIiAxCiMg OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pc3QuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUv dWFwaS9hc20vaXN0LmgiIDEKIyAyMyAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2lzdC5o IgpzdHJ1Y3QgaXN0X2luZm8gewogX191MzIgc2lnbmF0dXJlOwogX191MzIgY29tbWFuZDsKIF9f dTMyIGV2ZW50OwogX191MzIgcGVyZl9sZXZlbDsKfTsKIyAxMCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9pc3QuaCIgMgoKCmV4dGVybiBzdHJ1Y3QgaXN0X2luZm8gaXN0X2luZm87CiMgNDcgIi4v YXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9ib290cGFyYW0uaCIgMgojIDEgIi4vaW5jbHVkZS92 aWRlby9lZGlkLmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvdmlkZW8vZWRpZC5oIiAxCgoK CgpzdHJ1Y3QgZWRpZF9pbmZvIHsKIHVuc2lnbmVkIGNoYXIgZHVtbXlbMTI4XTsKfTsKIyA2ICIu L2luY2x1ZGUvdmlkZW8vZWRpZC5oIiAyCgoKZXh0ZXJuIHN0cnVjdCBlZGlkX2luZm8gZWRpZF9p bmZvOwojIDQ4ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgiIDIKCgpz dHJ1Y3Qgc2V0dXBfZGF0YSB7CiBfX3U2NCBuZXh0OwogX191MzIgdHlwZTsKIF9fdTMyIGxlbjsK IF9fdTggZGF0YVswXTsKfTsKCgpzdHJ1Y3Qgc2V0dXBfaW5kaXJlY3QgewogX191MzIgdHlwZTsK IF9fdTMyIHJlc2VydmVkOwogX191NjQgbGVuOwogX191NjQgYWRkcjsKfTsKCnN0cnVjdCBzZXR1 cF9oZWFkZXIgewogX191OCBzZXR1cF9zZWN0czsKIF9fdTE2IHJvb3RfZmxhZ3M7CiBfX3UzMiBz eXNzaXplOwogX191MTYgcmFtX3NpemU7CiBfX3UxNiB2aWRfbW9kZTsKIF9fdTE2IHJvb3RfZGV2 OwogX191MTYgYm9vdF9mbGFnOwogX191MTYganVtcDsKIF9fdTMyIGhlYWRlcjsKIF9fdTE2IHZl cnNpb247CiBfX3UzMiByZWFsbW9kZV9zd3RjaDsKIF9fdTE2IHN0YXJ0X3N5c19zZWc7CiBfX3Ux NiBrZXJuZWxfdmVyc2lvbjsKIF9fdTggdHlwZV9vZl9sb2FkZXI7CiBfX3U4IGxvYWRmbGFnczsK IF9fdTE2IHNldHVwX21vdmVfc2l6ZTsKIF9fdTMyIGNvZGUzMl9zdGFydDsKIF9fdTMyIHJhbWRp c2tfaW1hZ2U7CiBfX3UzMiByYW1kaXNrX3NpemU7CiBfX3UzMiBib290c2VjdF9rbHVkZ2U7CiBf X3UxNiBoZWFwX2VuZF9wdHI7CiBfX3U4IGV4dF9sb2FkZXJfdmVyOwogX191OCBleHRfbG9hZGVy X3R5cGU7CiBfX3UzMiBjbWRfbGluZV9wdHI7CiBfX3UzMiBpbml0cmRfYWRkcl9tYXg7CiBfX3Uz MiBrZXJuZWxfYWxpZ25tZW50OwogX191OCByZWxvY2F0YWJsZV9rZXJuZWw7CiBfX3U4IG1pbl9h bGlnbm1lbnQ7CiBfX3UxNiB4bG9hZGZsYWdzOwogX191MzIgY21kbGluZV9zaXplOwogX191MzIg aGFyZHdhcmVfc3ViYXJjaDsKIF9fdTY0IGhhcmR3YXJlX3N1YmFyY2hfZGF0YTsKIF9fdTMyIHBh eWxvYWRfb2Zmc2V0OwogX191MzIgcGF5bG9hZF9sZW5ndGg7CiBfX3U2NCBzZXR1cF9kYXRhOwog X191NjQgcHJlZl9hZGRyZXNzOwogX191MzIgaW5pdF9zaXplOwogX191MzIgaGFuZG92ZXJfb2Zm c2V0OwogX191MzIga2VybmVsX2luZm9fb2Zmc2V0Owp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkp OwoKc3RydWN0IHN5c19kZXNjX3RhYmxlIHsKIF9fdTE2IGxlbmd0aDsKIF9fdTggdGFibGVbMTRd Owp9OwoKCnN0cnVjdCBvbHBjX29md19oZWFkZXIgewogX191MzIgb2Z3X21hZ2ljOwogX191MzIg b2Z3X3ZlcnNpb247CiBfX3UzMiBjaWZfaGFuZGxlcjsKIF9fdTMyIGlycV9kZXNjX3RhYmxlOwp9 IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IGVmaV9pbmZvIHsKIF9fdTMyIGVmaV9s b2FkZXJfc2lnbmF0dXJlOwogX191MzIgZWZpX3N5c3RhYjsKIF9fdTMyIGVmaV9tZW1kZXNjX3Np emU7CiBfX3UzMiBlZmlfbWVtZGVzY192ZXJzaW9uOwogX191MzIgZWZpX21lbW1hcDsKIF9fdTMy IGVmaV9tZW1tYXBfc2l6ZTsKIF9fdTMyIGVmaV9zeXN0YWJfaGk7CiBfX3UzMiBlZmlfbWVtbWFw X2hpOwp9OwojIDE0MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2Jvb3RwYXJhbS5oIgpz dHJ1Y3QgYm9vdF9lODIwX2VudHJ5IHsKIF9fdTY0IGFkZHI7CiBfX3U2NCBzaXplOwogX191MzIg dHlwZTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKIyAxNTUgIi4vYXJjaC94ODYvaW5jbHVk ZS91YXBpL2FzbS9ib290cGFyYW0uaCIKc3RydWN0IGphaWxob3VzZV9zZXR1cF9kYXRhIHsKIHN0 cnVjdCB7CiAgX191MTYgdmVyc2lvbjsKICBfX3UxNiBjb21wYXRpYmxlX3ZlcnNpb247CiB9IF9f YXR0cmlidXRlX18oKHBhY2tlZCkpIGhkcjsKIHN0cnVjdCB7CiAgX191MTYgcG1fdGltZXJfYWRk cmVzczsKICBfX3UxNiBudW1fY3B1czsKICBfX3U2NCBwY2lfbW1jb25maWdfYmFzZTsKICBfX3Uz MiB0c2Nfa2h6OwogIF9fdTMyIGFwaWNfa2h6OwogIF9fdTggc3RhbmRhcmRfaW9hcGljOwogIF9f dTggY3B1X2lkc1syNTVdOwogfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSB2MTsKIHN0cnVjdCB7 CiAgX191MzIgZmxhZ3M7CiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIHYyOwp9IF9fYXR0cmli dXRlX18oKHBhY2tlZCkpOwoKCnN0cnVjdCBib290X3BhcmFtcyB7CiBzdHJ1Y3Qgc2NyZWVuX2lu Zm8gc2NyZWVuX2luZm87CiBzdHJ1Y3QgYXBtX2Jpb3NfaW5mbyBhcG1fYmlvc19pbmZvOwogX191 OCBfcGFkMls0XTsKIF9fdTY0IHRib290X2FkZHI7CiBzdHJ1Y3QgaXN0X2luZm8gaXN0X2luZm87 CiBfX3U2NCBhY3BpX3JzZHBfYWRkcjsKIF9fdTggX3BhZDNbOF07CiBfX3U4IGhkMF9pbmZvWzE2 XTsKIF9fdTggaGQxX2luZm9bMTZdOwogc3RydWN0IHN5c19kZXNjX3RhYmxlIHN5c19kZXNjX3Rh YmxlOwogc3RydWN0IG9scGNfb2Z3X2hlYWRlciBvbHBjX29md19oZWFkZXI7CiBfX3UzMiBleHRf cmFtZGlza19pbWFnZTsKIF9fdTMyIGV4dF9yYW1kaXNrX3NpemU7CiBfX3UzMiBleHRfY21kX2xp bmVfcHRyOwogX191OCBfcGFkNFsxMTZdOwogc3RydWN0IGVkaWRfaW5mbyBlZGlkX2luZm87CiBz dHJ1Y3QgZWZpX2luZm8gZWZpX2luZm87CiBfX3UzMiBhbHRfbWVtX2s7CiBfX3UzMiBzY3JhdGNo OwogX191OCBlODIwX2VudHJpZXM7CiBfX3U4IGVkZGJ1Zl9lbnRyaWVzOwogX191OCBlZGRfbWJy X3NpZ19idWZfZW50cmllczsKIF9fdTgga2JkX3N0YXR1czsKIF9fdTggc2VjdXJlX2Jvb3Q7CiBf X3U4IF9wYWQ1WzJdOwojIDIxMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2Jvb3RwYXJh bS5oIgogX191OCBzZW50aW5lbDsKIF9fdTggX3BhZDZbMV07CiBzdHJ1Y3Qgc2V0dXBfaGVhZGVy IGhkcjsKIF9fdTggX3BhZDdbMHgyOTAtMHgxZjEtc2l6ZW9mKHN0cnVjdCBzZXR1cF9oZWFkZXIp XTsKIF9fdTMyIGVkZF9tYnJfc2lnX2J1ZmZlclsxNl07CiBzdHJ1Y3QgYm9vdF9lODIwX2VudHJ5 IGU4MjBfdGFibGVbMTI4XTsKIF9fdTggX3BhZDhbNDhdOwogc3RydWN0IGVkZF9pbmZvIGVkZGJ1 Zls2XTsKIF9fdTggX3BhZDlbMjc2XTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKIyAyNjIg Ii4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9ib290cGFyYW0uaCIKZW51bSB4ODZfaGFyZHdh cmVfc3ViYXJjaCB7CiBYODZfU1VCQVJDSF9QQyA9IDAsCiBYODZfU1VCQVJDSF9MR1VFU1QsCiBY ODZfU1VCQVJDSF9YRU4sCiBYODZfU1VCQVJDSF9JTlRFTF9NSUQsCiBYODZfU1VCQVJDSF9DRTQx MDAsCiBYODZfTlJfU1VCQVJDSFMsCn07CiMgMTggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbWVt X2VuY3J5cHQuaCIgMgojIDU5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21lbV9lbmNyeXB0Lmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmli dXRlX18oKF9fY29sZF9fKSkgc21lX2Vhcmx5X2VuY3J5cHQocmVzb3VyY2Vfc2l6ZV90IHBhZGRy LAogICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpIHsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fYXR0cmlidXRlX18oKF9f c2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHNtZV9l YXJseV9kZWNyeXB0KHJlc291cmNlX3NpemVfdCBwYWRkciwKICAgICAgICAgdW5zaWduZWQgbG9u ZyBzaXplKSB7IH0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQi KSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgc21lX21hcF9ib290ZGF0YShjaGFyICpyZWFs X21vZGVfZGF0YSkgeyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRl eHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgc21lX3VubWFwX2Jvb3RkYXRhKGNoYXIg KnJlYWxfbW9kZV9kYXRhKSB7IH0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5p bml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgc21lX2Vhcmx5X2luaXQodm9p ZCkgeyB9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBf X2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHNtZV9lbmNyeXB0X2tlcm5lbChzdHJ1Y3QgYm9vdF9w YXJhbXMgKmJwKSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4 dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBzbWVfZW5hYmxlKHN0cnVjdCBib290X3Bh cmFtcyAqYnApIHsgfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCBzbWVfYWN0aXZlKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9CnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgc2V2X2FjdGl2ZSh2b2lkKSB7IHJldHVybiBmYWxzZTsgfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18o KF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpCmVh cmx5X3NldF9tZW1vcnlfZGVjcnlwdGVkKHVuc2lnbmVkIGxvbmcgdmFkZHIsIHVuc2lnbmVkIGxv bmcgc2l6ZSkgeyByZXR1cm4gMDsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5p bml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkKZWFybHlfc2V0X21lbW9yeV9l bmNyeXB0ZWQodW5zaWduZWQgbG9uZyB2YWRkciwgdW5zaWduZWQgbG9uZyBzaXplKSB7IHJldHVy biAwOyB9CiMgOTMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbWVtX2VuY3J5cHQuaCIKZXh0ZXJu IGNoYXIgX19zdGFydF9ic3NfZGVjcnlwdGVkW10sIF9fZW5kX2Jzc19kZWNyeXB0ZWRbXSwgX19z dGFydF9ic3NfZGVjcnlwdGVkX3VudXNlZFtdOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBtZW1fZW5jcnlwdF9hY3RpdmUodm9p ZCkKewogcmV0dXJuIDBVTEw7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBzbWVfZ2V0X21lX21hc2sodm9pZCkKewogcmV0dXJu IDBVTEw7Cn0KIyAxOCAiLi9pbmNsdWRlL2xpbnV4L21lbV9lbmNyeXB0LmgiIDIKIyA4ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfdHlwZXMuaCIgMgojIDQ4ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3BhZ2VfdHlwZXMuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjRf dHlwZXMuaCIgMQoKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rYXNsci5oIiAxCgoK Cgp1bnNpZ25lZCBsb25nIGthc2xyX2dldF9yYW5kb21fbG9uZyhjb25zdCBjaGFyICpwdXJwb3Nl KTsKCgp2b2lkIGtlcm5lbF9yYW5kb21pemVfbWVtb3J5KHZvaWQpOwojIDcgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vcGFnZV82NF90eXBlcy5oIiAyCiMgNDkgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vcGFnZV90eXBlcy5oIiAyCiMgNjQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZV90eXBl cy5oIgpleHRlcm4gaW50IGRldm1lbV9pc19hbGxvd2VkKHVuc2lnbmVkIGxvbmcgcGFnZW5yKTsK CmV4dGVybiB1bnNpZ25lZCBsb25nIG1heF9sb3dfcGZuX21hcHBlZDsKZXh0ZXJuIHVuc2lnbmVk IGxvbmcgbWF4X3Bmbl9tYXBwZWQ7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaHlzX2FkZHJfdCBnZXRfbWF4X21hcHBlZCh2b2lkKQp7 CiByZXR1cm4gKHBoeXNfYWRkcl90KW1heF9wZm5fbWFwcGVkIDw8IDEyOwp9Cgpib29sIHBmbl9y YW5nZV9pc19tYXBwZWQodW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgZW5k X3Bmbik7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbml0X21lbW9yeV9tYXBwaW5nKHVuc2lnbmVk IGxvbmcgc3RhcnQsCiAgICAgIHVuc2lnbmVkIGxvbmcgZW5kKTsKCmV4dGVybiB2b2lkIGluaXRt ZW1faW5pdCh2b2lkKTsKIyA3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIiAyCiMg MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5oIiAxCgoKCgoKIyAxICIuL2Fy Y2gveDg2L2luY2x1ZGUvdWFwaS9hc20vcHRyYWNlLWFiaS5oIiAxCiMgNyAiLi9hcmNoL3g4Ni9p bmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5oIiAyCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w cm9jZXNzb3ItZmxhZ3MuaCIgMQoKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20v cHJvY2Vzc29yLWZsYWdzLmgiIDEKIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nv ci1mbGFncy5oIiAyCiMgOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5oIiAy CiMgOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMgojIDU2ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgpzdHJ1Y3QgcHRfcmVncyB7CgoKCgogdW5zaWduZWQgbG9u ZyByMTU7CiB1bnNpZ25lZCBsb25nIHIxNDsKIHVuc2lnbmVkIGxvbmcgcjEzOwogdW5zaWduZWQg bG9uZyByMTI7CiB1bnNpZ25lZCBsb25nIGJwOwogdW5zaWduZWQgbG9uZyBieDsKCiB1bnNpZ25l ZCBsb25nIHIxMTsKIHVuc2lnbmVkIGxvbmcgcjEwOwogdW5zaWduZWQgbG9uZyByOTsKIHVuc2ln bmVkIGxvbmcgcjg7CiB1bnNpZ25lZCBsb25nIGF4OwogdW5zaWduZWQgbG9uZyBjeDsKIHVuc2ln bmVkIGxvbmcgZHg7CiB1bnNpZ25lZCBsb25nIHNpOwogdW5zaWduZWQgbG9uZyBkaTsKCgoKCiB1 bnNpZ25lZCBsb25nIG9yaWdfYXg7CgogdW5zaWduZWQgbG9uZyBpcDsKIHVuc2lnbmVkIGxvbmcg Y3M7CiB1bnNpZ25lZCBsb25nIGZsYWdzOwogdW5zaWduZWQgbG9uZyBzcDsKIHVuc2lnbmVkIGxv bmcgc3M7Cgp9OwoKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0X3R5cGVz LmgiIDEKIyA0MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgojIDEg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGVzY19kZWZzLmgiIDEKIyAxNiAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9kZXNjX2RlZnMuaCIKc3RydWN0IGRlc2Nfc3RydWN0IHsKIHUxNiBsaW1pdDA7 CiB1MTYgYmFzZTA7CiB1MTYgYmFzZTE6IDgsIHR5cGU6IDQsIHM6IDEsIGRwbDogMiwgcDogMTsK IHUxNiBsaW1pdDE6IDQsIGF2bDogMSwgbDogMSwgZDogMSwgZzogMSwgYmFzZTI6IDg7Cn0gX19h dHRyaWJ1dGVfXygocGFja2VkKSk7CiMgNDAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGVzY19k ZWZzLmgiCmVudW0gewogR0FURV9JTlRFUlJVUFQgPSAweEUsCiBHQVRFX1RSQVAgPSAweEYsCiBH QVRFX0NBTEwgPSAweEMsCiBHQVRFX1RBU0sgPSAweDUsCn07CgplbnVtIHsKIERFU0NfVFNTID0g MHg5LAogREVTQ19MRFQgPSAweDIsCiBERVNDVFlQRV9TID0gMHgxMCwKfTsKCgpzdHJ1Y3QgbGR0 dHNzX2Rlc2MgewogdTE2IGxpbWl0MDsKIHUxNiBiYXNlMDsKCiB1MTYgYmFzZTEgOiA4LCB0eXBl IDogNSwgZHBsIDogMiwgcCA6IDE7CiB1MTYgbGltaXQxIDogNCwgemVybzAgOiAzLCBnIDogMSwg YmFzZTIgOiA4OwoKIHUzMiBiYXNlMzsKIHUzMiB6ZXJvMTsKCn0gX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7Cgp0eXBlZGVmIHN0cnVjdCBsZHR0c3NfZGVzYyBsZHRfZGVzYzsKdHlwZWRlZiBzdHJ1 Y3QgbGR0dHNzX2Rlc2MgdHNzX2Rlc2M7CgpzdHJ1Y3QgaWR0X2JpdHMgewogdTE2IGlzdCA6IDMs CiAgIHplcm8gOiA1LAogICB0eXBlIDogNSwKICAgZHBsIDogMiwKICAgcCA6IDE7Cn0gX19hdHRy aWJ1dGVfXygocGFja2VkKSk7CgpzdHJ1Y3QgZ2F0ZV9zdHJ1Y3QgewogdTE2IG9mZnNldF9sb3c7 CiB1MTYgc2VnbWVudDsKIHN0cnVjdCBpZHRfYml0cyBiaXRzOwogdTE2IG9mZnNldF9taWRkbGU7 CgogdTMyIG9mZnNldF9oaWdoOwogdTMyIHJlc2VydmVkOwoKfSBfX2F0dHJpYnV0ZV9fKChwYWNr ZWQpKTsKCnR5cGVkZWYgc3RydWN0IGdhdGVfc3RydWN0IGdhdGVfZGVzYzsKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxv bmcgZ2F0ZV9vZmZzZXQoY29uc3QgZ2F0ZV9kZXNjICpnKQp7CgogcmV0dXJuIGctPm9mZnNldF9s b3cgfCAoKHVuc2lnbmVkIGxvbmcpZy0+b2Zmc2V0X21pZGRsZSA8PCAxNikgfAogICgodW5zaWdu ZWQgbG9uZykgZy0+b2Zmc2V0X2hpZ2ggPDwgMzIpOwoKCgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGdhdGVf c2VnbWVudChjb25zdCBnYXRlX2Rlc2MgKmcpCnsKIHJldHVybiBnLT5zZWdtZW50Owp9CgpzdHJ1 Y3QgZGVzY19wdHIgewogdW5zaWduZWQgc2hvcnQgc2l6ZTsKIHVuc2lnbmVkIGxvbmcgYWRkcmVz czsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSA7CiMgNDQgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vcGFyYXZpcnRfdHlwZXMuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20va21hcF90 eXBlcy5oIiAxCiMgOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rbWFwX3R5cGVzLmgiCiMgMSAi Li9pbmNsdWRlL2FzbS1nZW5lcmljL2ttYXBfdHlwZXMuaCIgMQojIDEwICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2ttYXBfdHlwZXMuaCIgMgojIDQ1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Bh cmF2aXJ0X3R5cGVzLmgiIDIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlw ZXMuaCIgMQojIDEzMyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmgiCmVu dW0gcGFnZV9jYWNoZV9tb2RlIHsKIF9QQUdFX0NBQ0hFX01PREVfV0IgPSAwLAogX1BBR0VfQ0FD SEVfTU9ERV9XQyA9IDEsCiBfUEFHRV9DQUNIRV9NT0RFX1VDX01JTlVTID0gMiwKIF9QQUdFX0NB Q0hFX01PREVfVUMgPSAzLAogX1BBR0VfQ0FDSEVfTU9ERV9XVCA9IDQsCiBfUEFHRV9DQUNIRV9N T0RFX1dQID0gNSwKCiBfUEFHRV9DQUNIRV9NT0RFX05VTSA9IDgKfTsKIyAyNTcgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vcGd0YWJsZV82NF90eXBlcy5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v c3BhcnNlbWVtLmgiIDEKIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfNjRfdHlw ZXMuaCIgMgojIDE0ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfNjRfdHlwZXMuaCIK dHlwZWRlZiB1bnNpZ25lZCBsb25nIHB0ZXZhbF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcG1k dmFsX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBwdWR2YWxfdDsKdHlwZWRlZiB1bnNpZ25lZCBs b25nIHA0ZHZhbF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcGdkdmFsX3Q7CnR5cGVkZWYgdW5z aWduZWQgbG9uZyBwZ3Byb3R2YWxfdDsKCnR5cGVkZWYgc3RydWN0IHsgcHRldmFsX3QgcHRlOyB9 IHB0ZV90OwojIDQzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfNjRfdHlwZXMuaCIK ZXh0ZXJuIHVuc2lnbmVkIGludCBwZ2Rpcl9zaGlmdDsKZXh0ZXJuIHVuc2lnbmVkIGludCBwdHJz X3Blcl9wNGQ7CiMgMjU4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlwZXMuaCIg MgojIDI3MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmgiCnR5cGVkZWYg c3RydWN0IHBncHJvdCB7IHBncHJvdHZhbF90IHBncHJvdDsgfSBwZ3Byb3RfdDsKCnR5cGVkZWYg c3RydWN0IHsgcGdkdmFsX3QgcGdkOyB9IHBnZF90OwojIDMwMCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9wZ3RhYmxlX3R5cGVzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHBnZF90IG5hdGl2ZV9tYWtlX3BnZChwZ2R2YWxfdCB2YWwp CnsKIHJldHVybiAocGdkX3QpIHsgdmFsICYgKH4wVUxMKSB9Owp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwZ2R2YWxfdCBuYXRpdmVf cGdkX3ZhbChwZ2RfdCBwZ2QpCnsKIHJldHVybiBwZ2QucGdkICYgKH4wVUxMKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGdkdmFs X3QgcGdkX2ZsYWdzKHBnZF90IHBnZCkKewogcmV0dXJuIG5hdGl2ZV9wZ2RfdmFsKHBnZCkgJiAo figocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8IDEyKS0xKSkpICYgKChwaHlz X2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSkpOwp9CiMgMzI4ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3BndGFibGVfdHlwZXMuaCIKIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcGd0YWJs ZS1ub3A0ZC5oIiAxCiMgOSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3BndGFibGUtbm9wNGQuaCIK dHlwZWRlZiBzdHJ1Y3QgeyBwZ2RfdCBwZ2Q7IH0gcDRkX3Q7CiMgMjIgIi4vaW5jbHVkZS9hc20t Z2VuZXJpYy9wZ3RhYmxlLW5vcDRkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwZ2Rfbm9uZShwZ2RfdCBwZ2QpIHsgcmV0dXJu IDA7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgaW50IHBnZF9iYWQocGdkX3QgcGdkKSB7IHJldHVybiAwOyB9CnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwZ2RfcHJlc2Vu dChwZ2RfdCBwZ2QpIHsgcmV0dXJuIDE7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZ2RfY2xlYXIocGdkX3QgKnBnZCkgeyB9 CiMgMzYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9wZ3RhYmxlLW5vcDRkLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHA0ZF90ICpwNGRf b2Zmc2V0KHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogcmV0dXJuIChwNGRf dCAqKXBnZDsKfQojIDMyOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmgi IDIKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHA0ZF90IG5hdGl2ZV9tYWtlX3A0ZChwdWR2YWxfdCB2YWwpCnsKIHJldHVybiAocDRkX3Qp IHsgLnBnZCA9IG5hdGl2ZV9tYWtlX3BnZCgocGdkdmFsX3QpdmFsKSB9Owp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwNGR2YWxfdCBu YXRpdmVfcDRkX3ZhbChwNGRfdCBwNGQpCnsKIHJldHVybiBuYXRpdmVfcGdkX3ZhbChwNGQucGdk KTsKfQoKCgp0eXBlZGVmIHN0cnVjdCB7IHB1ZHZhbF90IHB1ZDsgfSBwdWRfdDsKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHB1ZF90IG5h dGl2ZV9tYWtlX3B1ZChwbWR2YWxfdCB2YWwpCnsKIHJldHVybiAocHVkX3QpIHsgdmFsIH07Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHB1ZHZhbF90IG5hdGl2ZV9wdWRfdmFsKHB1ZF90IHB1ZCkKewogcmV0dXJuIHB1ZC5wdWQ7Cn0K IyAzNjggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oIgp0eXBlZGVmIHN0 cnVjdCB7IHBtZHZhbF90IHBtZDsgfSBwbWRfdDsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBtZF90IG5hdGl2ZV9tYWtlX3BtZChwbWR2 YWxfdCB2YWwpCnsKIHJldHVybiAocG1kX3QpIHsgdmFsIH07Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBtZHZhbF90IG5hdGl2ZV9w bWRfdmFsKHBtZF90IHBtZCkKewogcmV0dXJuIHBtZC5wbWQ7Cn0KIyAzOTMgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwNGR2YWxfdCBwNGRfcGZuX21hc2socDRkX3Qg cDRkKQp7CgogcmV0dXJuICgocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8IDEy KS0xKSkpICYgKChwaHlzX2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHA0ZHZhbF90 IHA0ZF9mbGFnc19tYXNrKHA0ZF90IHA0ZCkKewogcmV0dXJuIH5wNGRfcGZuX21hc2socDRkKTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgcDRkdmFsX3QgcDRkX2ZsYWdzKHA0ZF90IHA0ZCkKewogcmV0dXJuIG5hdGl2ZV9wNGRfdmFs KHA0ZCkgJiBwNGRfZmxhZ3NfbWFzayhwNGQpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwdWR2YWxfdCBwdWRfcGZuX21hc2socHVk X3QgcHVkKQp7CiBpZiAobmF0aXZlX3B1ZF92YWwocHVkKSAmICgoKHB0ZXZhbF90KSgxKSkgPDwg NykpCiAgcmV0dXJuICgoKHNpZ25lZCBsb25nKSh+KCgoMVVMKSA8PCAzMCktMSkpKSAmICgocGh5 c19hZGRyX3QpKCgxVUxMIDw8IDUyKSAtIDEpKSk7CiBlbHNlCiAgcmV0dXJuICgocHRldmFsX3Qp KCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8IDEyKS0xKSkpICYgKChwaHlzX2FkZHJfdCkoKDFV TEwgPDwgNTIpIC0gMSkpKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHB1ZHZhbF90IHB1ZF9mbGFnc19tYXNrKHB1ZF90IHB1ZCkK ewogcmV0dXJuIH5wdWRfcGZuX21hc2socHVkKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcHVkdmFsX3QgcHVkX2ZsYWdzKHB1ZF90 IHB1ZCkKewogcmV0dXJuIG5hdGl2ZV9wdWRfdmFsKHB1ZCkgJiBwdWRfZmxhZ3NfbWFzayhwdWQp Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBwbWR2YWxfdCBwbWRfcGZuX21hc2socG1kX3QgcG1kKQp7CiBpZiAobmF0aXZlX3BtZF92 YWwocG1kKSAmICgoKHB0ZXZhbF90KSgxKSkgPDwgNykpCiAgcmV0dXJuICgoKHNpZ25lZCBsb25n KSh+KCgoMVVMKSA8PCAyMSktMSkpKSAmICgocGh5c19hZGRyX3QpKCgxVUxMIDw8IDUyKSAtIDEp KSk7CiBlbHNlCiAgcmV0dXJuICgocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8 IDEyKS0xKSkpICYgKChwaHlzX2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBtZHZh bF90IHBtZF9mbGFnc19tYXNrKHBtZF90IHBtZCkKewogcmV0dXJuIH5wbWRfcGZuX21hc2socG1k KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgcG1kdmFsX3QgcG1kX2ZsYWdzKHBtZF90IHBtZCkKewogcmV0dXJuIG5hdGl2ZV9wbWRf dmFsKHBtZCkgJiBwbWRfZmxhZ3NfbWFzayhwbWQpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwdGVfdCBuYXRpdmVfbWFrZV9wdGUo cHRldmFsX3QgdmFsKQp7CiByZXR1cm4gKHB0ZV90KSB7IC5wdGUgPSB2YWwgfTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcHRldmFs X3QgbmF0aXZlX3B0ZV92YWwocHRlX3QgcHRlKQp7CiByZXR1cm4gcHRlLnB0ZTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcHRldmFs X3QgcHRlX2ZsYWdzKHB0ZV90IHB0ZSkKewogcmV0dXJuIG5hdGl2ZV9wdGVfdmFsKHB0ZSkgJiAo figocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8IDEyKS0xKSkpICYgKChwaHlz X2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSkpOwp9CgpleHRlcm4gdWludDE2X3QgX19jYWNo ZW1vZGUycHRlX3RibFtfUEFHRV9DQUNIRV9NT0RFX05VTV07CmV4dGVybiB1aW50OF90IF9fcHRl MmNhY2hlbW9kZV90YmxbOF07CiMgNDcyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVf dHlwZXMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBjYWNoZW1vZGUycHJvdHZhbChlbnVtIHBhZ2VfY2FjaGVf bW9kZSBwY20pCnsKIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHBjbSA9PSAwKSwgMSkpCiAgcmV0 dXJuIDA7CiByZXR1cm4gX19jYWNoZW1vZGUycHRlX3RibFtwY21dOwp9CnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBncHJvdF90IGNhY2hl bW9kZTJwZ3Byb3QoZW51bSBwYWdlX2NhY2hlX21vZGUgcGNtKQp7CiByZXR1cm4gKChwZ3Byb3Rf dCkgeyAoY2FjaGVtb2RlMnByb3R2YWwocGNtKSkgfSApOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGVudW0gcGFnZV9jYWNoZV9tb2Rl IHBncHJvdDJjYWNoZW1vZGUocGdwcm90X3QgcGdwcm90KQp7CiB1bnNpZ25lZCBsb25nIG1hc2tl ZDsKCiBtYXNrZWQgPSAoKHBncHJvdCkucGdwcm90KSAmICgoKChwdGV2YWxfdCkoMSkpIDw8IDMp IHwgKCgocHRldmFsX3QpKDEpKSA8PCA0KSB8ICgoKHB0ZXZhbF90KSgxKSkgPDwgNykpOwogaWYg KF9fYnVpbHRpbl9leHBlY3QoISEobWFza2VkID09IDApLCAxKSkKICByZXR1cm4gMDsKIHJldHVy biBfX3B0ZTJjYWNoZW1vZGVfdGJsWygoKChtYXNrZWQpID4+ICg3IC0gMikpICYgNCkgfCAoKCht YXNrZWQpID4+ICg0IC0gMSkpICYgMikgfCAoKChtYXNrZWQpID4+IDMpICYgMSkpXTsKfQpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwZ3By b3RfdCBwZ3Byb3RfNGtfMl9sYXJnZShwZ3Byb3RfdCBwZ3Byb3QpCnsKIHBncHJvdHZhbF90IHZh bCA9ICgocGdwcm90KS5wZ3Byb3QpOwogcGdwcm90X3QgbmV3OwoKICgobmV3KS5wZ3Byb3QpID0g KHZhbCAmIH4oKCgocHRldmFsX3QpKDEpKSA8PCA3KSB8ICgoKHB0ZXZhbF90KSgxKSkgPDwgMTIp KSkgfAogICgodmFsICYgKCgocHRldmFsX3QpKDEpKSA8PCA3KSkgPDwgKDEyIC0gNykpOwogcmV0 dXJuIG5ldzsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBwZ3Byb3RfdCBwZ3Byb3RfbGFyZ2VfMl80ayhwZ3Byb3RfdCBwZ3Byb3QpCnsK IHBncHJvdHZhbF90IHZhbCA9ICgocGdwcm90KS5wZ3Byb3QpOwogcGdwcm90X3QgbmV3OwoKICgo bmV3KS5wZ3Byb3QpID0gKHZhbCAmIH4oKCgocHRldmFsX3QpKDEpKSA8PCA3KSB8ICgoKHB0ZXZh bF90KSgxKSkgPDwgMTIpKSkgfAogICAgICgodmFsICYgKCgocHRldmFsX3QpKDEpKSA8PCAxMikp ID4+CiAgICAgICgxMiAtIDcpKTsKIHJldHVybiBuZXc7Cn0KCgp0eXBlZGVmIHN0cnVjdCBwYWdl ICpwZ3RhYmxlX3Q7CgpleHRlcm4gcHRldmFsX3QgX19zdXBwb3J0ZWRfcHRlX21hc2s7CmV4dGVy biBwdGV2YWxfdCBfX2RlZmF1bHRfa2VybmVsX3B0ZV9tYXNrOwpleHRlcm4gdm9pZCBzZXRfbngo dm9pZCk7CmV4dGVybiBpbnQgbnhfZW5hYmxlZDsKCgpleHRlcm4gcGdwcm90X3QgcGdwcm90X3dy aXRlY29tYmluZShwZ3Byb3RfdCBwcm90KTsKCgpleHRlcm4gcGdwcm90X3QgcGdwcm90X3dyaXRl dGhyb3VnaChwZ3Byb3RfdCBwcm90KTsKCgoKCgpzdHJ1Y3QgZmlsZTsKcGdwcm90X3QgcGh5c19t ZW1fYWNjZXNzX3Byb3Qoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgcGZuLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsIHBncHJvdF90IHZt YV9wcm90KTsKCgp2b2lkIHNldF9wdGVfdmFkZHIodW5zaWduZWQgbG9uZyB2YWRkciwgcHRlX3Qg cHRlKTsKCgoKCgoKCnN0cnVjdCBzZXFfZmlsZTsKZXh0ZXJuIHZvaWQgYXJjaF9yZXBvcnRfbWVt aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pOwoKZW51bSBwZ19sZXZlbCB7CiBQR19MRVZFTF9OT05F LAogUEdfTEVWRUxfNEssCiBQR19MRVZFTF8yTSwKIFBHX0xFVkVMXzFHLAogUEdfTEVWRUxfNTEy RywKIFBHX0xFVkVMX05VTQp9OwoKCmV4dGVybiB2b2lkIHVwZGF0ZV9wYWdlX2NvdW50KGludCBs ZXZlbCwgdW5zaWduZWQgbG9uZyBwYWdlcyk7CiMgNTY2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L3BndGFibGVfdHlwZXMuaCIKZXh0ZXJuIHB0ZV90ICpsb29rdXBfYWRkcmVzcyh1bnNpZ25lZCBs b25nIGFkZHJlc3MsIHVuc2lnbmVkIGludCAqbGV2ZWwpOwpleHRlcm4gcHRlX3QgKmxvb2t1cF9h ZGRyZXNzX2luX3BnZChwZ2RfdCAqcGdkLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAgICAgICAg dW5zaWduZWQgaW50ICpsZXZlbCk7CgpzdHJ1Y3QgbW1fc3RydWN0OwpleHRlcm4gcHRlX3QgKmxv b2t1cF9hZGRyZXNzX2luX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFk ZHJlc3MsCiAgICAgICB1bnNpZ25lZCBpbnQgKmxldmVsKTsKZXh0ZXJuIHBtZF90ICpsb29rdXBf cG1kX2FkZHJlc3ModW5zaWduZWQgbG9uZyBhZGRyZXNzKTsKZXh0ZXJuIHBoeXNfYWRkcl90IHNs b3dfdmlydF90b19waHlzKHZvaWQgKl9fYWRkcmVzcyk7CmV4dGVybiBpbnQgX19hdHRyaWJ1dGVf XygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkg a2VybmVsX21hcF9wYWdlc19pbl9wZ2QocGdkX3QgKnBnZCwgdTY0IHBmbiwKICAgICAgIHVuc2ln bmVkIGxvbmcgYWRkcmVzcywKICAgICAgIHVuc2lnbmVkIG51bXBhZ2VzLAogICAgICAgdW5zaWdu ZWQgbG9uZyBwYWdlX2ZsYWdzKTsKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25f XygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBrZXJuZWxfdW5tYXBf cGFnZXNfaW5fcGdkKHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKICAgICAgICAg dW5zaWduZWQgbG9uZyBudW1wYWdlcyk7CiMgNDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFy YXZpcnRfdHlwZXMuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5j aC5oIiAxCgoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvc3RhdGljX2tleS5oIiAxCiMgMSAiLi9p bmNsdWRlL2xpbnV4L2p1bXBfbGFiZWwuaCIgMQojIDc5ICIuL2luY2x1ZGUvbGludXgvanVtcF9s YWJlbC5oIgpleHRlcm4gYm9vbCBzdGF0aWNfa2V5X2luaXRpYWxpemVkOwoKCgoKCgoKc3RydWN0 IHN0YXRpY19rZXkgewogYXRvbWljX3QgZW5hYmxlZDsKIyAxMDIgIi4vaW5jbHVkZS9saW51eC9q dW1wX2xhYmVsLmgiCiB1bmlvbiB7CiAgdW5zaWduZWQgbG9uZyB0eXBlOwogIHN0cnVjdCBqdW1w X2VudHJ5ICplbnRyaWVzOwogIHN0cnVjdCBzdGF0aWNfa2V5X21vZCAqbmV4dDsKIH07Cn07CiMg MTE3ICIuL2luY2x1ZGUvbGludXgvanVtcF9sYWJlbC5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vanVtcF9sYWJlbC5oIiAxCiMgMjMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vanVtcF9s YWJlbC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgYXJjaF9zdGF0 aWNfYnJhbmNoKHN0cnVjdCBzdGF0aWNfa2V5ICprZXksIGJvb2wgYnJhbmNoKQp7CiBkbyB7IGFz bSBnb3RvKCIxOiIgIi5ieXRlICIgIjB4MGYsMHgxZiwweDQ0LDB4MDAsMCIgIlxuXHQiICIucHVz aHNlY3Rpb24gX19qdW1wX3RhYmxlLCAgXCJhd1wiIFxuXHQiICIgIiAiLmJhbGlnbiA4IiAiICIg IlxuXHQiICIubG9uZyAxYiAtIC4sICVsW2xfeWVzXSAtIC4gXG5cdCIgIiAiICIucXVhZCIgIiAi ICIlYzAgKyAlYzEgLSAuXG5cdCIgIi5wb3BzZWN0aW9uIFxuXHQiIDogOiAiaSIgKGtleSksICJp IiAoYnJhbmNoKSA6IDogbF95ZXMpOyBhc20gKCIiKTsgfSB3aGlsZSAoMCkKCgoKCgoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogcmV0dXJuIGZhbHNlOwpsX3ll czoKIHJldHVybiB0cnVlOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJv b2wgYXJjaF9zdGF0aWNfYnJhbmNoX2p1bXAoc3RydWN0IHN0YXRpY19rZXkgKmtleSwgYm9vbCBi cmFuY2gpCnsKIGRvIHsgYXNtIGdvdG8oIjE6IiAiLmJ5dGUgMHhlOVxuXHQgLmxvbmcgJWxbbF95 ZXNdIC0gMmZcblx0IiAiMjpcblx0IiAiLnB1c2hzZWN0aW9uIF9fanVtcF90YWJsZSwgIFwiYXdc IiBcblx0IiAiICIgIi5iYWxpZ24gOCIgIiAiICJcblx0IiAiLmxvbmcgMWIgLSAuLCAlbFtsX3ll c10gLSAuIFxuXHQiICIgIiAiLnF1YWQiICIgIiAiJWMwICsgJWMxIC0gLlxuXHQiICIucG9wc2Vj dGlvbiBcblx0IiA6IDogImkiIChrZXkpLCAiaSIgKGJyYW5jaCkgOiA6IGxfeWVzKTsgYXNtICgi Iik7IH0gd2hpbGUgKDApCgoKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKCiByZXR1cm4gZmFsc2U7CmxfeWVzOgogcmV0dXJuIHRydWU7Cn0KIyAxMTggIi4v aW5jbHVkZS9saW51eC9qdW1wX2xhYmVsLmgiIDIKCgoKCnN0cnVjdCBqdW1wX2VudHJ5IHsKIHMz MiBjb2RlOwogczMyIHRhcmdldDsKIGxvbmcga2V5Owp9OwoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBqdW1wX2Vu dHJ5X2NvZGUoY29uc3Qgc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5KQp7CiByZXR1cm4gKHVuc2ln bmVkIGxvbmcpJmVudHJ5LT5jb2RlICsgZW50cnktPmNvZGU7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcganVt cF9lbnRyeV90YXJnZXQoY29uc3Qgc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5KQp7CiByZXR1cm4g KHVuc2lnbmVkIGxvbmcpJmVudHJ5LT50YXJnZXQgKyBlbnRyeS0+dGFyZ2V0Owp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qg c3RhdGljX2tleSAqanVtcF9lbnRyeV9rZXkoY29uc3Qgc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5 KQp7CiBsb25nIG9mZnNldCA9IGVudHJ5LT5rZXkgJiB+M0w7CgogcmV0dXJuIChzdHJ1Y3Qgc3Rh dGljX2tleSAqKSgodW5zaWduZWQgbG9uZykmZW50cnktPmtleSArIG9mZnNldCk7Cn0KIyAxNjQg Ii4vaW5jbHVkZS9saW51eC9qdW1wX2xhYmVsLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wganVtcF9lbnRyeV9pc19icmFuY2go Y29uc3Qgc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5KQp7CiByZXR1cm4gKHVuc2lnbmVkIGxvbmcp ZW50cnktPmtleSAmIDFVTDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBqdW1wX2VudHJ5X2lzX2luaXQoY29uc3Qgc3RydWN0 IGp1bXBfZW50cnkgKmVudHJ5KQp7CiByZXR1cm4gKHVuc2lnbmVkIGxvbmcpZW50cnktPmtleSAm IDJVTDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBqdW1wX2VudHJ5X3NldF9pbml0KHN0cnVjdCBqdW1wX2VudHJ5ICplbnRy eSkKewogZW50cnktPmtleSB8PSAyOwp9CgoKCgoKCmVudW0ganVtcF9sYWJlbF90eXBlIHsKIEpV TVBfTEFCRUxfTk9QID0gMCwKIEpVTVBfTEFCRUxfSk1QLAp9OwoKc3RydWN0IG1vZHVsZTsKIyAx OTggIi4vaW5jbHVkZS9saW51eC9qdW1wX2xhYmVsLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgYm9vbCBzdGF0aWNfa2V5X2ZhbHNlKHN0cnVjdCBzdGF0aWNfa2V5ICprZXkp CnsKIHJldHVybiBhcmNoX3N0YXRpY19icmFuY2goa2V5LCBmYWxzZSk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBzdGF0aWNfa2V5X3RydWUoc3RydWN0IHN0YXRp Y19rZXkgKmtleSkKewogcmV0dXJuICFhcmNoX3N0YXRpY19icmFuY2goa2V5LCB0cnVlKTsKfQoK ZXh0ZXJuIHN0cnVjdCBqdW1wX2VudHJ5IF9fc3RhcnRfX19qdW1wX3RhYmxlW107CmV4dGVybiBz dHJ1Y3QganVtcF9lbnRyeSBfX3N0b3BfX19qdW1wX3RhYmxlW107CgpleHRlcm4gdm9pZCBqdW1w X2xhYmVsX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGp1bXBfbGFiZWxfbG9jayh2b2lkKTsKZXh0 ZXJuIHZvaWQganVtcF9sYWJlbF91bmxvY2sodm9pZCk7CmV4dGVybiB2b2lkIGFyY2hfanVtcF9s YWJlbF90cmFuc2Zvcm0oc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5LAogICAgICAgICAgZW51bSBq dW1wX2xhYmVsX3R5cGUgdHlwZSk7CmV4dGVybiB2b2lkIGFyY2hfanVtcF9sYWJlbF90cmFuc2Zv cm1fc3RhdGljKHN0cnVjdCBqdW1wX2VudHJ5ICplbnRyeSwKICAgICAgICAgIGVudW0ganVtcF9s YWJlbF90eXBlIHR5cGUpOwpleHRlcm4gYm9vbCBhcmNoX2p1bXBfbGFiZWxfdHJhbnNmb3JtX3F1 ZXVlKHN0cnVjdCBqdW1wX2VudHJ5ICplbnRyeSwKICAgICAgICAgZW51bSBqdW1wX2xhYmVsX3R5 cGUgdHlwZSk7CmV4dGVybiB2b2lkIGFyY2hfanVtcF9sYWJlbF90cmFuc2Zvcm1fYXBwbHkodm9p ZCk7CmV4dGVybiBpbnQganVtcF9sYWJlbF90ZXh0X3Jlc2VydmVkKHZvaWQgKnN0YXJ0LCB2b2lk ICplbmQpOwpleHRlcm4gdm9pZCBzdGF0aWNfa2V5X3Nsb3dfaW5jKHN0cnVjdCBzdGF0aWNfa2V5 ICprZXkpOwpleHRlcm4gdm9pZCBzdGF0aWNfa2V5X3Nsb3dfZGVjKHN0cnVjdCBzdGF0aWNfa2V5 ICprZXkpOwpleHRlcm4gdm9pZCBzdGF0aWNfa2V5X3Nsb3dfaW5jX2NwdXNsb2NrZWQoc3RydWN0 IHN0YXRpY19rZXkgKmtleSk7CmV4dGVybiB2b2lkIHN0YXRpY19rZXlfc2xvd19kZWNfY3B1c2xv Y2tlZChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5KTsKZXh0ZXJuIHZvaWQganVtcF9sYWJlbF9hcHBs eV9ub3BzKHN0cnVjdCBtb2R1bGUgKm1vZCk7CmV4dGVybiBpbnQgc3RhdGljX2tleV9jb3VudChz dHJ1Y3Qgc3RhdGljX2tleSAqa2V5KTsKZXh0ZXJuIHZvaWQgc3RhdGljX2tleV9lbmFibGUoc3Ry dWN0IHN0YXRpY19rZXkgKmtleSk7CmV4dGVybiB2b2lkIHN0YXRpY19rZXlfZGlzYWJsZShzdHJ1 Y3Qgc3RhdGljX2tleSAqa2V5KTsKZXh0ZXJuIHZvaWQgc3RhdGljX2tleV9lbmFibGVfY3B1c2xv Y2tlZChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5KTsKZXh0ZXJuIHZvaWQgc3RhdGljX2tleV9kaXNh YmxlX2NwdXNsb2NrZWQoc3RydWN0IHN0YXRpY19rZXkgKmtleSk7CiMgMzQ2ICIuL2luY2x1ZGUv bGludXgvanVtcF9sYWJlbC5oIgpzdHJ1Y3Qgc3RhdGljX2tleV90cnVlIHsKIHN0cnVjdCBzdGF0 aWNfa2V5IGtleTsKfTsKCnN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIHsKIHN0cnVjdCBzdGF0aWNf a2V5IGtleTsKfTsKIyAzODUgIi4vaW5jbHVkZS9saW51eC9qdW1wX2xhYmVsLmgiCmV4dGVybiBi b29sIF9fX193cm9uZ19icmFuY2hfZXJyb3Iodm9pZCk7CiMgMiAiLi9pbmNsdWRlL2xpbnV4L3N0 YXRpY19rZXkuaCIgMgojIDcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5o IiAyCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLWFzbS5oIiAxCiMg MTAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oIiAyCgojIDEgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vbXNyLWluZGV4LmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4 L2JpdHMuaCIgMQojIDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNyLWluZGV4LmgiIDIKIyAx MiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNoLmgiIDIKIyAyMTMgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oIgplbnVtIHNwZWN0cmVfdjJfbWl0aWdh dGlvbiB7CiBTUEVDVFJFX1YyX05PTkUsCiBTUEVDVFJFX1YyX1JFVFBPTElORV9HRU5FUklDLAog U1BFQ1RSRV9WMl9SRVRQT0xJTkVfQU1ELAogU1BFQ1RSRV9WMl9JQlJTX0VOSEFOQ0VELAp9OwoK CmVudW0gc3BlY3RyZV92Ml91c2VyX21pdGlnYXRpb24gewogU1BFQ1RSRV9WMl9VU0VSX05PTkUs CiBTUEVDVFJFX1YyX1VTRVJfU1RSSUNULAogU1BFQ1RSRV9WMl9VU0VSX1NUUklDVF9QUkVGRVJS RUQsCiBTUEVDVFJFX1YyX1VTRVJfUFJDVEwsCiBTUEVDVFJFX1YyX1VTRVJfU0VDQ09NUCwKfTsK CgplbnVtIHNzYl9taXRpZ2F0aW9uIHsKIFNQRUNfU1RPUkVfQllQQVNTX05PTkUsCiBTUEVDX1NU T1JFX0JZUEFTU19ESVNBQkxFLAogU1BFQ19TVE9SRV9CWVBBU1NfUFJDVEwsCiBTUEVDX1NUT1JF X0JZUEFTU19TRUNDT01QLAp9OwoKZXh0ZXJuIGNoYXIgX19pbmRpcmVjdF90aHVua19zdGFydFtd OwpleHRlcm4gY2hhciBfX2luZGlyZWN0X3RodW5rX2VuZFtdOwoKCgoKCgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB2bWV4aXRf ZmlsbF9SU0Iodm9pZCkKewoKIHVuc2lnbmVkIGxvbmcgbG9vcHM7CgogYXNtIHZvbGF0aWxlICgi OTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQuaWdub3JlX2FsdHNcblx0IiAiLmxvbmcg OTk5YiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IgogICAgICAgICIjIEFMVDogb2xkbnN0clxu IiAiNjYxOlxuXHQiICJqbXAgOTEwZiIgIlxuNjYyOlxuIiAiIyBBTFQ6IHBhZGRpbmdcbiIgIi5z a2lwIC0oKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpLSgiICI2NjJiLTY2MWIiICIpKSA+ IDApICogIiAiKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpLSgiICI2NjJiLTY2MWIiICIp KSwweDkwXG4iICI2NjMiICI6XG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RydWN0aW9ucyxcImFc IlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIgLmxvbmcgIiAiNjY0IiIxIiJmIC0gLlxuIiAiIC53 b3JkICIgIiggNyozMisxMikiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYxYiIgIlxuIiAiIC5i eXRlICIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjJi IiAiXG4iICIucG9wc2VjdGlvblxuIiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVu dCwgXCJheFwiXG4iICIjIEFMVDogcmVwbGFjZW1lbnQgIiAiMSIgIlxuIiAiNjY0IiIxIiI6XG5c dCIgIm1vdiAkKDMyLzIpLCAlMDsgNzcxOiBjYWxsIDc3MmY7IDc3MzogcGF1c2U7IGxmZW5jZTsg am1wIDc3M2I7IDc3MjogY2FsbCA3NzRmOyA3NzU6IHBhdXNlOyBsZmVuY2U7IGptcCA3NzViOyA3 NzQ6IGRlYyAlMDsgam56IDc3MWI7IGFkZCAkKDY0LzgpICogMzIsICUxOyIgIlxuIiAiNjY1IiIx IiAiOlxuIiAiLnBvcHNlY3Rpb25cbiIKCgogICAgICAgICI5MTA6IgogICAgICAgIDogIj1yIiAo bG9vcHMpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpCiAgICAgICAgOiA6ICJtZW1vcnki ICk7Cgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZvaWQgYWx0ZXJuYXRp dmVfbXNyX3dyaXRlKHVuc2lnbmVkIGludCBtc3IsIHU2NCB2YWwsIHVuc2lnbmVkIGludCBmZWF0 dXJlKQp7CiBhc20gdm9sYXRpbGUoIiMgQUxUOiBvbGRuc3RyXG4iICI2NjE6XG5cdCIgIiIgIlxu NjYyOlxuIiAiIyBBTFQ6IHBhZGRpbmdcbiIgIi5za2lwIC0oKCgiICI2NjUiIjEiImYtIiI2NjQi IjEiImYiICIpLSgiICI2NjJiLTY2MWIiICIpKSA+IDApICogIiAiKCgiICI2NjUiIjEiImYtIiI2 NjQiIjEiImYiICIpLSgiICI2NjJiLTY2MWIiICIpKSwweDkwXG4iICI2NjMiICI6XG4iICIucHVz aHNlY3Rpb24gLmFsdGluc3RydWN0aW9ucyxcImFcIlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIg LmxvbmcgIiAiNjY0IiIxIiJmIC0gLlxuIiAiIC53b3JkICIgIiVjW2ZlYXR1cmVdIiAiXG4iICIg LmJ5dGUgIiAiNjYzIiJiLTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQiIjEi ImYiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYyYiIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5w dXNoc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFjZW1lbnQsIFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxh Y2VtZW50ICIgIjEiICJcbiIgIjY2NCIiMSIiOlxuXHQiICJ3cm1zciIgIlxuIiAiNjY1IiIxIiAi OlxuIiAiLnBvcHNlY3Rpb25cbiIKICA6IDogImMiIChtc3IpLAogICAgICAiYSIgKCh1MzIpdmFs KSwKICAgICAgImQiICgodTMyKSh2YWwgPj4gMzIpKSwKICAgICAgW2ZlYXR1cmVdICJpIiAoZmVh dHVyZSkKICA6ICJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbmRpcmVjdF9icmFuY2hfcHJlZGljdGlvbl9i YXJyaWVyKHZvaWQpCnsKIHU2NCB2YWwgPSAoKCgoMVVMKSkpIDw8ICgwKSk7CgogYWx0ZXJuYXRp dmVfbXNyX3dyaXRlKDB4MDAwMDAwNDksIHZhbCwgKCA3KjMyKzIxKSk7Cn0KCgpleHRlcm4gdTY0 IHg4Nl9zcGVjX2N0cmxfYmFzZTsKIyAzMDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVj LWJyYW5jaC5oIgpleHRlcm4gc3RydWN0IHN0YXRpY19rZXlfZmFsc2Ugc3dpdGNoX3RvX2NvbmRf c3RpYnA7CmV4dGVybiBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSBzd2l0Y2hfbW1fY29uZF9pYnBi OwpleHRlcm4gc3RydWN0IHN0YXRpY19rZXlfZmFsc2Ugc3dpdGNoX21tX2Fsd2F5c19pYnBiOwoK ZXh0ZXJuIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIG1kc191c2VyX2NsZWFyOwpleHRlcm4gc3Ry dWN0IHN0YXRpY19rZXlfZmFsc2UgbWRzX2lkbGVfY2xlYXI7CiMgMzIyICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtZHNfY2xlYXJfY3B1X2J1ZmZlcnModm9p ZCkKewogc3RhdGljIGNvbnN0IHUxNiBkcyA9ICgzKjgpOwojIDMzNSAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9ub3NwZWMtYnJhbmNoLmgiCiBhc20gdm9sYXRpbGUoInZlcncgJVtkc10iIDogOiBb ZHNdICJtIiAoZHMpIDogImNjIik7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtZHNfdXNlcl9jbGVhcl9jcHVfYnVm ZmVycyh2b2lkKQp7CiBpZiAoKHsgYm9vbCBicmFuY2g7IGlmIChfX2J1aWx0aW5fdHlwZXNfY29t cGF0aWJsZV9wKHR5cGVvZigqJm1kc191c2VyX2NsZWFyKSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1 ZSkpIGJyYW5jaCA9ICFhcmNoX3N0YXRpY19icmFuY2goJigmbWRzX3VzZXJfY2xlYXIpLT5rZXks IHRydWUpOyBlbHNlIGlmIChfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqJm1k c191c2VyX2NsZWFyKSwgc3RydWN0IHN0YXRpY19rZXlfZmFsc2UpKSBicmFuY2ggPSAhYXJjaF9z dGF0aWNfYnJhbmNoX2p1bXAoJigmbWRzX3VzZXJfY2xlYXIpLT5rZXksIHRydWUpOyBlbHNlIGJy YW5jaCA9IF9fX193cm9uZ19icmFuY2hfZXJyb3IoKTsgX19idWlsdGluX2V4cGVjdCghIShicmFu Y2gpLCAxKTsgfSkpCiAgbWRzX2NsZWFyX2NwdV9idWZmZXJzKCk7Cn0KCgoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtZHNf aWRsZV9jbGVhcl9jcHVfYnVmZmVycyh2b2lkKQp7CiBpZiAoKHsgYm9vbCBicmFuY2g7IGlmIChf X2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqJm1kc19pZGxlX2NsZWFyKSwgc3Ry dWN0IHN0YXRpY19rZXlfdHJ1ZSkpIGJyYW5jaCA9ICFhcmNoX3N0YXRpY19icmFuY2goJigmbWRz X2lkbGVfY2xlYXIpLT5rZXksIHRydWUpOyBlbHNlIGlmIChfX2J1aWx0aW5fdHlwZXNfY29tcGF0 aWJsZV9wKHR5cGVvZigqJm1kc19pZGxlX2NsZWFyKSwgc3RydWN0IHN0YXRpY19rZXlfZmFsc2Up KSBicmFuY2ggPSAhYXJjaF9zdGF0aWNfYnJhbmNoX2p1bXAoJigmbWRzX2lkbGVfY2xlYXIpLT5r ZXksIHRydWUpOyBlbHNlIGJyYW5jaCA9IF9fX193cm9uZ19icmFuY2hfZXJyb3IoKTsgX19idWls dGluX2V4cGVjdCghIShicmFuY2gpLCAxKTsgfSkpCiAgbWRzX2NsZWFyX2NwdV9idWZmZXJzKCk7 Cn0KIyA0NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIiAyCgpzdHJ1 Y3QgcGFnZTsKc3RydWN0IHRocmVhZF9zdHJ1Y3Q7CnN0cnVjdCBkZXNjX3B0cjsKc3RydWN0IHRz c19zdHJ1Y3Q7CnN0cnVjdCBtbV9zdHJ1Y3Q7CnN0cnVjdCBkZXNjX3N0cnVjdDsKc3RydWN0IHRh c2tfc3RydWN0OwpzdHJ1Y3QgY3B1bWFzazsKc3RydWN0IGZsdXNoX3RsYl9pbmZvOwpzdHJ1Y3Qg bW11X2dhdGhlcjsKc3RydWN0IHZtX2FyZWFfc3RydWN0OwoKCgoKCnN0cnVjdCBwYXJhdmlydF9j YWxsZWVfc2F2ZSB7CiB2b2lkICpmdW5jOwp9OwoKCnN0cnVjdCBwdl9pbmZvIHsKIyA3OSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgogY29uc3QgY2hhciAqbmFtZTsK fTsKCnN0cnVjdCBwdl9pbml0X29wcyB7CiMgOTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFy YXZpcnRfdHlwZXMuaCIKIHVuc2lnbmVkICgqcGF0Y2gpKHU4IHR5cGUsIHZvaWQgKmluc25fYnVm ZiwKICAgICB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxlbik7Cn0gOwojIDEwNCAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgpzdHJ1Y3QgcHZfdGltZV9vcHMg ewogdW5zaWduZWQgbG9uZyBsb25nICgqc2NoZWRfY2xvY2spKHZvaWQpOwogdW5zaWduZWQgbG9u ZyBsb25nICgqc3RlYWxfY2xvY2spKGludCBjcHUpOwp9IDsKCnN0cnVjdCBwdl9jcHVfb3BzIHsK CiB2b2lkICgqaW9fZGVsYXkpKHZvaWQpOwojIDE4MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w YXJhdmlydF90eXBlcy5oIgp9IDsKCnN0cnVjdCBwdl9pcnFfb3BzIHsKIyAyMDQgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRfdHlwZXMuaCIKfSA7CgpzdHJ1Y3QgcHZfbW11X29wcyB7 Cgogdm9pZCAoKmZsdXNoX3RsYl91c2VyKSh2b2lkKTsKIHZvaWQgKCpmbHVzaF90bGJfa2VybmVs KSh2b2lkKTsKIHZvaWQgKCpmbHVzaF90bGJfb25lX3VzZXIpKHVuc2lnbmVkIGxvbmcgYWRkcik7 CiB2b2lkICgqZmx1c2hfdGxiX290aGVycykoY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdXMsCiAg ICAgY29uc3Qgc3RydWN0IGZsdXNoX3RsYl9pbmZvICppbmZvKTsKCiB2b2lkICgqdGxiX3JlbW92 ZV90YWJsZSkoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwgdm9pZCAqdGFibGUpOwoKCiB2b2lkICgq ZXhpdF9tbWFwKShzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CiMgMzA2ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3BhcmF2aXJ0X3R5cGVzLmgiCn0gOwoKc3RydWN0IGFyY2hfc3BpbmxvY2s7CgojIDEg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3BpbmxvY2tfdHlwZXMuaCIgMQojIDE2ICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrX3R5cGVzLmgiCnR5cGVkZWYgdTggX190aWNrZXRfdDsK dHlwZWRlZiB1MTYgX190aWNrZXRwYWlyX3Q7CiMgMjcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v c3BpbmxvY2tfdHlwZXMuaCIKIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcXNwaW5sb2NrX3R5 cGVzLmgiIDEKIyAyMiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3FzcGlubG9ja190eXBlcy5oIgp0 eXBlZGVmIHN0cnVjdCBxc3BpbmxvY2sgewogdW5pb24gewogIGF0b21pY190IHZhbDsKCgoKCgoK CiAgc3RydWN0IHsKICAgdTggbG9ja2VkOwogICB1OCBwZW5kaW5nOwogIH07CiAgc3RydWN0IHsK ICAgdTE2IGxvY2tlZF9wZW5kaW5nOwogICB1MTYgdGFpbDsKICB9OwojIDUxICIuL2luY2x1ZGUv YXNtLWdlbmVyaWMvcXNwaW5sb2NrX3R5cGVzLmgiCiB9Owp9IGFyY2hfc3BpbmxvY2tfdDsKIyAy OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGlubG9ja190eXBlcy5oIiAyCgojIDEgIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9xcndsb2NrX3R5cGVzLmgiIDEKCgoKCgojIDEgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9ieXRlb3JkZXIuaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgv Ynl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51 eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIiAxCiMgMTMgIi4vaW5jbHVkZS91YXBpL2xpbnV4 L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3N3YWIuaCIg MQoKCgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zd2FiLmgiIDEKCgoKCgoKCiMgMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3N3YWIuaCIgMQoKCgoKCgoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19jb25zdF9fKSkgX191MzIgX19hcmNoX3N3YWIzMihfX3UzMiB2YWwpCnsKIGFzbSgiYnN3YXBs ICUwIiA6ICI9ciIgKHZhbCkgOiAiMCIgKHZhbCkpOwogcmV0dXJuIHZhbDsKfQoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fY29uc3RfXykpIF9fdTY0IF9fYXJjaF9zd2FiNjQoX191NjQgdmFsKQp7CiMgMzEg Ii4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zd2FiLmgiCiBhc20oImJzd2FwcSAlMCIgOiAi PXIiICh2YWwpIDogIjAiICh2YWwpKTsKIHJldHVybiB2YWw7Cgp9CiMgOSAiLi9pbmNsdWRlL3Vh cGkvbGludXgvc3dhYi5oIiAyCiMgNDggIi4vaW5jbHVkZS91YXBpL2xpbnV4L3N3YWIuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19jb25zdF9fKSkgX191MTYgX19mc3dhYjE2KF9fdTE2IHZhbCkKewoKCgog cmV0dXJuICgoX191MTYpKCAoKChfX3UxNikodmFsKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8 ICgoKF9fdTE2KSh2YWwpICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpKSk7Cgp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbnN0X18pKSBfX3UzMiBfX2Zzd2FiMzIoX191MzIgdmFsKQp7CgogcmV0dXJuIF9f YXJjaF9zd2FiMzIodmFsKTsKCgoKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSkgX191NjQg X19mc3dhYjY0KF9fdTY0IHZhbCkKewoKIHJldHVybiBfX2FyY2hfc3dhYjY0KHZhbCk7CgoKCgoK Cgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKSBfX3UzMiBfX2Zzd2FodzMyKF9fdTMyIHZh bCkKewoKCgogcmV0dXJuICgoX191MzIpKCAoKChfX3UzMikodmFsKSAmIChfX3UzMikweDAwMDBm ZmZmVUwpIDw8IDE2KSB8ICgoKF9fdTMyKSh2YWwpICYgKF9fdTMyKTB4ZmZmZjAwMDBVTCkgPj4g MTYpKSk7Cgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKSBfX3UzMiBfX2Zzd2FoYjMyKF9f dTMyIHZhbCkKewoKCgogcmV0dXJuICgoX191MzIpKCAoKChfX3UzMikodmFsKSAmIChfX3UzMikw eDAwZmYwMGZmVUwpIDw8IDgpIHwgKCgoX191MzIpKHZhbCkgJiAoX191MzIpMHhmZjAwZmYwMFVM KSA+PiA4KSkpOwoKfQojIDEzNiAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3dhYi5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxvbmcgX19zd2FiKGNvbnN0IHVu c2lnbmVkIGxvbmcgeSkKewoKIHJldHVybiAoX191NjQpX19idWlsdGluX2Jzd2FwNjQoKF9fdTY0 KSh5KSk7CgoKCn0KIyAxNzEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3N3YWIuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBfX3UxNiBfX3N3YWIxNnAoY29uc3QgX191MTYgKnAp CnsKCgoKIHJldHVybiAoX191MTYpX19idWlsdGluX2Jzd2FwMTYoKF9fdTE2KSgqcCkpOwoKfQoK CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgX191MzIgX19zd2FiMzJwKGNv bnN0IF9fdTMyICpwKQp7CgoKCiByZXR1cm4gKF9fdTMyKV9fYnVpbHRpbl9ic3dhcDMyKChfX3Uz MikoKnApKTsKCn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fdTY0 IF9fc3dhYjY0cChjb25zdCBfX3U2NCAqcCkKewoKCgogcmV0dXJuIChfX3U2NClfX2J1aWx0aW5f YnN3YXA2NCgoX191NjQpKCpwKSk7Cgp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX3UzMiBfX3N3YWh3MzJwKGNvbnN0IF9f dTMyICpwKQp7CgoKCiByZXR1cm4gKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UzMikoKnApKSA/ ICgoX191MzIpKCAoKChfX3UzMikoKnApICYgKF9fdTMyKTB4MDAwMGZmZmZVTCkgPDwgMTYpIHwg KCgoX191MzIpKCpwKSAmIChfX3UzMikweGZmZmYwMDAwVUwpID4+IDE2KSkpIDogX19mc3dhaHcz MigqcCkpOwoKfQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191MzIgX19zd2FoYjMycChjb25zdCBfX3UzMiAqcCkKewoKCgog cmV0dXJuIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKCpwKSkgPyAoKF9fdTMyKSggKCgo X191MzIpKCpwKSAmIChfX3UzMikweDAwZmYwMGZmVUwpIDw8IDgpIHwgKCgoX191MzIpKCpwKSAm IChfX3UzMikweGZmMDBmZjAwVUwpID4+IDgpKSkgOiBfX2Zzd2FoYjMyKCpwKSk7Cgp9CgoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBfX3N3YWIxNnMoX191MTYgKnApCnsKCgoKICpwID0gX19zd2FiMTZwKHApOwoKfQoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fc3dhYjMycyhfX3UzMiAq cCkKewoKCgogKnAgPSBfX3N3YWIzMnAocCk7Cgp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIF9fc3dhYjY0cyhfX3U2NCAqcCkKewoKCgogKnAgPSBfX3N3YWI2 NHAocCk7Cgp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fc3dhaHczMnMoX191MzIgKnApCnsKCgoKICpwID0gX19z d2FodzMycChwKTsKCn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19zd2FoYjMycyhfX3UzMiAqcCkKewoKCgogKnAg PSBfX3N3YWhiMzJwKHApOwoKfQojIDYgIi4vaW5jbHVkZS9saW51eC9zd2FiLmgiIDIKIyAxNCAi Li9pbmNsdWRlL3VhcGkvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMgojIDQ0ICIu L2luY2x1ZGUvdWFwaS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fbGU2NCBfX2NwdV90b19sZTY0cChjb25zdCBfX3U2 NCAqcCkKewogcmV0dXJuICggX19sZTY0KSpwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgX191NjQgX19sZTY0X3RvX2NwdXAoY29uc3QgX19sZTY0ICpwKQp7CiByZXR1cm4g KCBfX3U2NCkqcDsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fbGUzMiBf X2NwdV90b19sZTMycChjb25zdCBfX3UzMiAqcCkKewogcmV0dXJuICggX19sZTMyKSpwOwp9CnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgX191MzIgX19sZTMyX3RvX2NwdXAoY29u c3QgX19sZTMyICpwKQp7CiByZXR1cm4gKCBfX3UzMikqcDsKfQpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIF9fbGUxNiBfX2NwdV90b19sZTE2cChjb25zdCBfX3UxNiAqcCkKewog cmV0dXJuICggX19sZTE2KSpwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg X191MTYgX19sZTE2X3RvX2NwdXAoY29uc3QgX19sZTE2ICpwKQp7CiByZXR1cm4gKCBfX3UxNikq cDsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYmU2NCBfX2NwdV90b19i ZTY0cChjb25zdCBfX3U2NCAqcCkKewogcmV0dXJuICggX19iZTY0KV9fc3dhYjY0cChwKTsKfQpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fdTY0IF9fYmU2NF90b19jcHVwKGNv bnN0IF9fYmU2NCAqcCkKewogcmV0dXJuIF9fc3dhYjY0cCgoX191NjQgKilwKTsKfQpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYmUzMiBfX2NwdV90b19iZTMycChjb25zdCBf X3UzMiAqcCkKewogcmV0dXJuICggX19iZTMyKV9fc3dhYjMycChwKTsKfQpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIF9fdTMyIF9fYmUzMl90b19jcHVwKGNvbnN0IF9fYmUzMiAq cCkKewogcmV0dXJuIF9fc3dhYjMycCgoX191MzIgKilwKTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIF9fYmUxNiBfX2NwdV90b19iZTE2cChjb25zdCBfX3UxNiAqcCkKewog cmV0dXJuICggX19iZTE2KV9fc3dhYjE2cChwKTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIF9fdTE2IF9fYmUxNl90b19jcHVwKGNvbnN0IF9fYmUxNiAqcCkKewogcmV0dXJu IF9fc3dhYjE2cCgoX191MTYgKilwKTsKfQojIDYgIi4vaW5jbHVkZS9saW51eC9ieXRlb3JkZXIv bGl0dGxlX2VuZGlhbi5oIiAyCgoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dl bmVyaWMuaCIgMQojIDE0NCAiLi9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9nZW5lcmljLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgbGUxNl9hZGRfY3B1KF9fbGUxNiAqdmFyLCB1MTYgdmFsKQp7CiAqdmFyID0gKCggX19sZTE2 KShfX3UxNikoKCggX191MTYpKF9fbGUxNikoKnZhcikpICsgdmFsKSk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGUzMl9h ZGRfY3B1KF9fbGUzMiAqdmFyLCB1MzIgdmFsKQp7CiAqdmFyID0gKCggX19sZTMyKShfX3UzMiko KCggX191MzIpKF9fbGUzMikoKnZhcikpICsgdmFsKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGU2NF9hZGRfY3B1KF9f bGU2NCAqdmFyLCB1NjQgdmFsKQp7CiAqdmFyID0gKCggX19sZTY0KShfX3U2NCkoKCggX191NjQp KF9fbGU2NCkoKnZhcikpICsgdmFsKSk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxlMzJfdG9fY3B1X2FycmF5KHUzMiAq YnVmLCB1bnNpZ25lZCBpbnQgd29yZHMpCnsKIHdoaWxlICh3b3Jkcy0tKSB7CiAgZG8geyAodm9p ZCkoYnVmKTsgfSB3aGlsZSAoMCk7CiAgYnVmKys7CiB9Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1X3RvX2xlMzJfYXJy YXkodTMyICpidWYsIHVuc2lnbmVkIGludCB3b3JkcykKewogd2hpbGUgKHdvcmRzLS0pIHsKICBk byB7ICh2b2lkKShidWYpOyB9IHdoaWxlICgwKTsKICBidWYrKzsKIH0KfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBiZTE2X2Fk ZF9jcHUoX19iZTE2ICp2YXIsIHUxNiB2YWwpCnsKICp2YXIgPSAoKCBfX2JlMTYpKF9fdTE2KV9f YnVpbHRpbl9ic3dhcDE2KChfX3UxNikoKChfX3UxNilfX2J1aWx0aW5fYnN3YXAxNigoX191MTYp KCggX191MTYpKF9fYmUxNikoKnZhcikpKSArIHZhbCkpKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYmUzMl9hZGRfY3B1 KF9fYmUzMiAqdmFyLCB1MzIgdmFsKQp7CiAqdmFyID0gKCggX19iZTMyKShfX3UzMilfX2J1aWx0 aW5fYnN3YXAzMigoX191MzIpKCgoX191MzIpX19idWlsdGluX2Jzd2FwMzIoKF9fdTMyKSgoIF9f dTMyKShfX2JlMzIpKCp2YXIpKSkgKyB2YWwpKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGJlNjRfYWRkX2NwdShfX2Jl NjQgKnZhciwgdTY0IHZhbCkKewogKnZhciA9ICgoIF9fYmU2NCkoX191NjQpX19idWlsdGluX2Jz d2FwNjQoKF9fdTY0KSgoKF9fdTY0KV9fYnVpbHRpbl9ic3dhcDY0KChfX3U2NCkoKCBfX3U2NCko X19iZTY0KSgqdmFyKSkpICsgdmFsKSkpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjcHVfdG9fYmUzMl9hcnJheShfX2Jl MzIgKmRzdCwgY29uc3QgdTMyICpzcmMsIHNpemVfdCBsZW4pCnsKIGludCBpOwoKIGZvciAoaSA9 IDA7IGkgPCBsZW47IGkrKykKICBkc3RbaV0gPSAoKCBfX2JlMzIpKF9fdTMyKV9fYnVpbHRpbl9i c3dhcDMyKChfX3UzMikoKHNyY1tpXSkpKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYmUzMl90b19jcHVfYXJyYXkodTMy ICpkc3QsIGNvbnN0IF9fYmUzMiAqc3JjLCBzaXplX3QgbGVuKQp7CiBpbnQgaTsKCiBmb3IgKGkg PSAwOyBpIDwgbGVuOyBpKyspCiAgZHN0W2ldID0gKF9fdTMyKV9fYnVpbHRpbl9ic3dhcDMyKChf X3UzMikoKCBfX3UzMikoX19iZTMyKShzcmNbaV0pKSk7Cn0KIyAxMiAiLi9pbmNsdWRlL2xpbnV4 L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDIKIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFw aS9hc20vYnl0ZW9yZGVyLmgiIDIKIyA3ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcXJ3bG9ja190 eXBlcy5oIiAyCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGlubG9ja190eXBlcy5oIiAx CiMgOCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3Fyd2xvY2tfdHlwZXMuaCIgMgoKCgoKCnR5cGVk ZWYgc3RydWN0IHFyd2xvY2sgewogdW5pb24gewogIGF0b21pY190IGNudHM7CiAgc3RydWN0IHsK CiAgIHU4IHdsb2NrZWQ7CiAgIHU4IF9fbHN0YXRlWzNdOwoKCgoKICB9OwogfTsKIGFyY2hfc3Bp bmxvY2tfdCB3YWl0X2xvY2s7Cn0gYXJjaF9yd2xvY2tfdDsKIyAzMCAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9zcGlubG9ja190eXBlcy5oIiAyCiMgMzExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L3BhcmF2aXJ0X3R5cGVzLmgiIDIKCgpzdHJ1Y3QgcXNwaW5sb2NrOwoKc3RydWN0IHB2X2xvY2tf b3BzIHsKIHZvaWQgKCpxdWV1ZWRfc3Bpbl9sb2NrX3Nsb3dwYXRoKShzdHJ1Y3QgcXNwaW5sb2Nr ICpsb2NrLCB1MzIgdmFsKTsKIHN0cnVjdCBwYXJhdmlydF9jYWxsZWVfc2F2ZSBxdWV1ZWRfc3Bp bl91bmxvY2s7Cgogdm9pZCAoKndhaXQpKHU4ICpwdHIsIHU4IHZhbCk7CiB2b2lkICgqa2ljayko aW50IGNwdSk7Cgogc3RydWN0IHBhcmF2aXJ0X2NhbGxlZV9zYXZlIHZjcHVfaXNfcHJlZW1wdGVk Owp9IDsKCgoKCnN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSB7CiBzdHJ1Y3QgcHZfaW5p dF9vcHMgaW5pdDsKIHN0cnVjdCBwdl90aW1lX29wcyB0aW1lOwogc3RydWN0IHB2X2NwdV9vcHMg Y3B1Owogc3RydWN0IHB2X2lycV9vcHMgaXJxOwogc3RydWN0IHB2X21tdV9vcHMgbW11Owogc3Ry dWN0IHB2X2xvY2tfb3BzIGxvY2s7Cn0gOwoKZXh0ZXJuIHN0cnVjdCBwdl9pbmZvIHB2X2luZm87 CmV4dGVybiBzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUgcHZfb3BzOwojIDM3MCAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgp1bnNpZ25lZCBwYXJhdmlydF9w YXRjaF9pZGVudF82NCh2b2lkICppbnNuX2J1ZmYsIHVuc2lnbmVkIGxlbik7CnVuc2lnbmVkIHBh cmF2aXJ0X3BhdGNoX2RlZmF1bHQodTggdHlwZSwgdm9pZCAqaW5zbl9idWZmLCB1bnNpZ25lZCBs b25nIGFkZHIsIHVuc2lnbmVkIGxlbik7CnVuc2lnbmVkIHBhcmF2aXJ0X3BhdGNoX2luc25zKHZv aWQgKmluc25fYnVmZiwgdW5zaWduZWQgbGVuLCBjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hh ciAqZW5kKTsKCnVuc2lnbmVkIG5hdGl2ZV9wYXRjaCh1OCB0eXBlLCB2b2lkICppbnNuX2J1ZmYs IHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbGVuKTsKCmludCBwYXJhdmlydF9kaXNhYmxl X2lvc3BhY2Uodm9pZCk7CiMgNjUxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0X3R5 cGVzLmgiCmVudW0gcGFyYXZpcnRfbGF6eV9tb2RlIHsKIFBBUkFWSVJUX0xBWllfTk9ORSwKIFBB UkFWSVJUX0xBWllfTU1VLAogUEFSQVZJUlRfTEFaWV9DUFUsCn07CgplbnVtIHBhcmF2aXJ0X2xh enlfbW9kZSBwYXJhdmlydF9nZXRfbGF6eV9tb2RlKHZvaWQpOwp2b2lkIHBhcmF2aXJ0X3N0YXJ0 X2NvbnRleHRfc3dpdGNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldik7CnZvaWQgcGFyYXZpcnRf ZW5kX2NvbnRleHRfc3dpdGNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCk7Cgp2b2lkIHBhcmF2 aXJ0X2VudGVyX2xhenlfbW11KHZvaWQpOwp2b2lkIHBhcmF2aXJ0X2xlYXZlX2xhenlfbW11KHZv aWQpOwp2b2lkIHBhcmF2aXJ0X2ZsdXNoX2xhenlfbW11KHZvaWQpOwoKdm9pZCBfcGFyYXZpcnRf bm9wKHZvaWQpOwp1NjQgX3BhcmF2aXJ0X2lkZW50XzY0KHU2NCk7CgoKCgpzdHJ1Y3QgcGFyYXZp cnRfcGF0Y2hfc2l0ZSB7CiB1OCAqaW5zdHI7CiB1OCB0eXBlOwogdTggbGVuOwp9OwoKZXh0ZXJu IHN0cnVjdCBwYXJhdmlydF9wYXRjaF9zaXRlIF9fcGFyYWluc3RydWN0aW9uc1tdLAogX19wYXJh aW5zdHJ1Y3Rpb25zX2VuZFtdOwojIDk1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5o IiAyCgoKc3RydWN0IGNwdWluZm9feDg2OwpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CgpleHRlcm4gdW5z aWduZWQgbG9uZyBwcm9maWxlX3BjKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKCmV4dGVybiB1bnNp Z25lZCBsb25nCmNvbnZlcnRfaXBfdG9fbGluZWFyKHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQs IHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKZXh0ZXJuIHZvaWQgc2VuZF9zaWd0cmFwKHN0cnVjdCBw dF9yZWdzICpyZWdzLCBpbnQgZXJyb3JfY29kZSwgaW50IHNpX2NvZGUpOwoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxv bmcgcmVnc19yZXR1cm5fdmFsdWUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCnsKIHJldHVybiByZWdz LT5heDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCByZWdzX3NldF9yZXR1cm5fdmFsdWUoc3RydWN0IHB0X3JlZ3MgKnJlZ3Ms IHVuc2lnbmVkIGxvbmcgcmMpCnsKIHJlZ3MtPmF4ID0gcmM7Cn0KIyAxMjYgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vcHRyYWNlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB1c2VyX21vZGUoc3RydWN0IHB0X3JlZ3MgKnJlZ3Mp CnsKCgoKIHJldHVybiAhIShyZWdzLT5jcyAmIDMpOwoKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHY4MDg2X21vZGUoc3RydWN0 IHB0X3JlZ3MgKnJlZ3MpCnsKCgoKIHJldHVybiAwOwoKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1c2VyXzY0Yml0X21vZGUo c3RydWN0IHB0X3JlZ3MgKnJlZ3MpCnsKCgoKCgoKIHJldHVybiByZWdzLT5jcyA9PSAoNio4ICsg Myk7CgoKCgoKCgp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBhbnlfNjRiaXRfbW9kZShzdHJ1Y3QgcHRfcmVncyAqcmVn cykKewoKIHJldHVybiAhdXNlcl9tb2RlKHJlZ3MpIHx8IHVzZXJfNjRiaXRfbW9kZShyZWdzKTsK CgoKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGtlcm5lbF9zdGFja19wb2ludGVyKHN0cnVjdCBwdF9y ZWdzICpyZWdzKQp7CiByZXR1cm4gcmVncy0+c3A7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgaW5zdHJ1Y3Rp b25fcG9pbnRlcihzdHJ1Y3QgcHRfcmVncyAqcmVncykKewogcmV0dXJuIHJlZ3MtPmlwOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGluc3RydWN0aW9uX3BvaW50ZXJfc2V0KHN0cnVjdCBwdF9yZWdzICpyZWdzLAogIHVuc2ln bmVkIGxvbmcgdmFsKQp7CiByZWdzLT5pcCA9IHZhbDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBmcmFtZV9w b2ludGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQp7CiByZXR1cm4gcmVncy0+YnA7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGxvbmcgdXNlcl9zdGFja19wb2ludGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQp7CiByZXR1 cm4gcmVncy0+c3A7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgdXNlcl9zdGFja19wb2ludGVyX3NldChzdHJ1Y3QgcHRfcmVn cyAqcmVncywKICB1bnNpZ25lZCBsb25nIHZhbCkKewogcmVncy0+c3AgPSB2YWw7Cn0KCgpleHRl cm4gaW50IHJlZ3NfcXVlcnlfcmVnaXN0ZXJfb2Zmc2V0KGNvbnN0IGNoYXIgKm5hbWUpOwpleHRl cm4gY29uc3QgY2hhciAqcmVnc19xdWVyeV9yZWdpc3Rlcl9uYW1lKHVuc2lnbmVkIGludCBvZmZz ZXQpOwojIDIyNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9u ZyByZWdzX2dldF9yZWdpc3RlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywKICAgICAgICAgICB1bnNp Z25lZCBpbnQgb2Zmc2V0KQp7CiBpZiAoX19idWlsdGluX2V4cGVjdCghIShvZmZzZXQgPiAoX19i dWlsdGluX29mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBzcykpKSwgMCkpCiAgcmV0dXJuIDA7CiMg MjQzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgogcmV0dXJuICoodW5zaWduZWQg bG9uZyAqKSgodW5zaWduZWQgbG9uZylyZWdzICsgb2Zmc2V0KTsKfQojIDI1NCAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ3Nfd2l0aGluX2tlcm5lbF9zdGFjayhzdHJ1 Y3QgcHRfcmVncyAqcmVncywKICAgICAgICB1bnNpZ25lZCBsb25nIGFkZHIpCnsKIHJldHVybiAo KGFkZHIgJiB+KCgoKDFVTCkgPDwgMTIpIDw8ICgyICsgMCkpIC0gMSkpID09IChyZWdzLT5zcCAm IH4oKCgoMVVMKSA8PCAxMikgPDwgKDIgKyAwKSkgLSAxKSkpOwp9CiMgMjY5ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nICpyZWdzX2dldF9rZXJuZWxfc3Rh Y2tfbnRoX2FkZHIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGludCBuKQp7CiB1bnNp Z25lZCBsb25nICphZGRyID0gKHVuc2lnbmVkIGxvbmcgKilyZWdzLT5zcDsKCiBhZGRyICs9IG47 CiBpZiAocmVnc193aXRoaW5fa2VybmVsX3N0YWNrKHJlZ3MsICh1bnNpZ25lZCBsb25nKWFkZHIp KQogIHJldHVybiBhZGRyOwogZWxzZQogIHJldHVybiAoKHZvaWQgKikwKTsKfQoKCmV4dGVybiBs b25nIHByb2JlX2tlcm5lbF9yZWFkKHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qg c2l6ZSk7CiMgMjkyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBs b25nIHJlZ3NfZ2V0X2tlcm5lbF9zdGFja19udGgoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCiAgICAg ICAgICAgIHVuc2lnbmVkIGludCBuKQp7CiB1bnNpZ25lZCBsb25nICphZGRyOwogdW5zaWduZWQg bG9uZyB2YWw7CiBsb25nIHJldDsKCiBhZGRyID0gcmVnc19nZXRfa2VybmVsX3N0YWNrX250aF9h ZGRyKHJlZ3MsIG4pOwogaWYgKGFkZHIpIHsKICByZXQgPSBwcm9iZV9rZXJuZWxfcmVhZCgmdmFs LCBhZGRyLCBzaXplb2YodmFsKSk7CiAgaWYgKCFyZXQpCiAgIHJldHVybiB2YWw7CiB9CiByZXR1 cm4gMDsKfQojIDMxOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQg bG9uZyByZWdzX2dldF9rZXJuZWxfYXJndW1lbnQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCiAgICAg ICAgICAgdW5zaWduZWQgaW50IG4pCnsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYXJndW1l bnRfb2Zmc1tdID0gewoKCgoKCgogIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywg ZGkpLAogIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgc2kpLAogIF9fYnVpbHRp bl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgZHgpLAogIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1 Y3QgcHRfcmVncywgY3gpLAogIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgcjgp LAogIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgcjkpLAoKCiB9OwoKIGlmIChu ID49IDYpIHsKICBuIC09IDYgLSAxOwogIHJldHVybiByZWdzX2dldF9rZXJuZWxfc3RhY2tfbnRo KHJlZ3MsIG4pOwogfSBlbHNlCiAgcmV0dXJuIHJlZ3NfZ2V0X3JlZ2lzdGVyKHJlZ3MsIGFyZ3Vt ZW50X29mZnNbbl0pOwp9CiMgMzU1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgpz dHJ1Y3QgdXNlcl9kZXNjOwpleHRlcm4gaW50IGRvX2dldF90aHJlYWRfYXJlYShzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnAsIGludCBpZHgsCiAgICAgICAgIHN0cnVjdCB1c2VyX2Rlc2MgKmluZm8pOwpl eHRlcm4gaW50IGRvX3NldF90aHJlYWRfYXJlYShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBp ZHgsCiAgICAgICAgIHN0cnVjdCB1c2VyX2Rlc2MgKmluZm8sIGludCBjYW5fYWxsb2NhdGUpOwoj IDExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2tnZGIuaCIgMgojIDQ5ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2tnZGIuaCIKZW51bSByZWduYW1lcyB7CiBHREJfQVgsCiBHREJfQlgsCiBHREJf Q1gsCiBHREJfRFgsCiBHREJfU0ksCiBHREJfREksCiBHREJfQlAsCiBHREJfU1AsCiBHREJfUjgs CiBHREJfUjksCiBHREJfUjEwLAogR0RCX1IxMSwKIEdEQl9SMTIsCiBHREJfUjEzLAogR0RCX1Ix NCwKIEdEQl9SMTUsCiBHREJfUEMsCiBHREJfUFMsCiBHREJfQ1MsCiBHREJfU1MsCiBHREJfRFMs CiBHREJfRVMsCiBHREJfRlMsCiBHREJfR1MsCn07CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXJjaF9rZ2RiX2JyZWFr cG9pbnQodm9pZCkKewogYXNtKCIgICBpbnQgJDMiKTsKfQoKCgoKZXh0ZXJuIGludCBrZ2RiX2xs X3RyYXAoaW50IGNtZCwgY29uc3QgY2hhciAqc3RyLAogICBzdHJ1Y3QgcHRfcmVncyAqcmVncywg bG9uZyBlcnIsIGludCB0cmFwLCBpbnQgc2lnKTsKIyAyMSAiLi9pbmNsdWRlL2xpbnV4L2tnZGIu aCIgMgojIDMzMyAiLi9pbmNsdWRlL2xpbnV4L2tnZGIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrZ2RiX3BhbmljKGNvbnN0 IGNoYXIgKm1zZykge30KIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL29zX3R5cGVzLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgva3JlZi5oIiAxCiMgMTYg Ii4vaW5jbHVkZS9saW51eC9rcmVmLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgi IDEKIyA1MCAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4 L3R5cGVjaGVjay5oIiAxCiMgNTEgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCiMgMSAi Li9pbmNsdWRlL2xpbnV4L3ByZWVtcHQuaCIgMQojIDExICIuL2luY2x1ZGUvbGludXgvcHJlZW1w dC5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiIDEKCgoKCgoKIyAxICIuL2luY2x1ZGUv bGludXgvcG9pc29uLmgiIDEKIyA4ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIiAyCgojIDEgIi4v aW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjL3g4Nl82NC1s aW51eC1nbnUvMTAvaW5jbHVkZS9zdGRhcmcuaCIgMSAzIDQKIyA0MCAiL3Vzci9saWIvZ2NjL3g4 Nl82NC1saW51eC1nbnUvMTAvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CgojIDQwICIvdXNyL2xpYi9n Y2MveDg2XzY0LWxpbnV4LWdudS8xMC9pbmNsdWRlL3N0ZGFyZy5oIiAzIDQKdHlwZWRlZiBfX2J1 aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyA5OSAiL3Vzci9saWIvZ2NjL3g4Nl82NC1s aW51eC1nbnUvMTAvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19nbnVjX3ZhX2xpc3Qg dmFfbGlzdDsKIyA3ICIuL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDIKIyAxICIuL2luY2x1ZGUv bGludXgvbGltaXRzLmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvbGltaXRzLmgi IDEKIyA2ICIuL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDIKIyA4ICIuL2luY2x1ZGUvbGludXgv a2VybmVsLmgiIDIKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAxCgoKCiMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS90eXBlcy5oIiAxCiMgNSAiLi9p bmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAyCiMgMjAgIi4vaW5jbHVkZS9saW51eC9iaXRvcHMuaCIK CiMgMjAgIi4vaW5jbHVkZS9saW51eC9iaXRvcHMuaCIKZXh0ZXJuIHVuc2lnbmVkIGludCBfX3N3 X2h3ZWlnaHQ4KHVuc2lnbmVkIGludCB3KTsKZXh0ZXJuIHVuc2lnbmVkIGludCBfX3N3X2h3ZWln aHQxNih1bnNpZ25lZCBpbnQgdyk7CmV4dGVybiB1bnNpZ25lZCBpbnQgX19zd19od2VpZ2h0MzIo dW5zaWduZWQgaW50IHcpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBfX3N3X2h3ZWlnaHQ2NChfX3U2 NCB3KTsKCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEKIyA1MSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkCmFyY2hfc2V0X2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBs b25nICphZGRyKQp7CiBpZiAoX19idWlsdGluX2NvbnN0YW50X3AobnIpKSB7CiAgYXNtIHZvbGF0 aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9u ZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAib3JiICUx LCUwIgogICA6ICIrbSIgKCoodm9sYXRpbGUgY2hhciAqKSAoKHZvaWQgKikoYWRkcikgKyAoKG5y KT4+MykpKQogICA6ICJpcSIgKCh1OCkoMSA8PCAoKG5yKSAmIDcpKSkKICAgOiAibWVtb3J5Iik7 CiB9IGVsc2UgewogIGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJc biIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6 IiAiXG5cdGxvY2s7ICIgIiAiICJidHNxIiAiICIgIiAlMSwlMCIKICAgOiA6ICJtIiAoKih2b2xh dGlsZSBsb25nICopIChhZGRyKSksICJJciIgKG5yKSA6ICJtZW1vcnkiKTsKIH0KfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkCmFyY2hfX19zZXRfYml0KGxvbmcgbnIs IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKIGFzbSB2b2xhdGlsZSgiICIgImJ0c3Ei ICIgIiAiICUxLCUwIiA6IDogIm0iICgqKHZvbGF0aWxlIGxvbmcgKikgKGFkZHIpKSwgIklyIiAo bnIpIDogIm1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQKYXJjaF9jbGVhcl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikK ewogaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG5yKSkgewogIGFzbSB2b2xhdGlsZSgiLnB1c2hz ZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5c biIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImFuZGIgJTEsJTAiCiAgIDog IittIiAoKih2b2xhdGlsZSBjaGFyICopICgodm9pZCAqKShhZGRyKSArICgobnIpPj4zKSkpCiAg IDogImlxIiAoKHU4KX4oMSA8PCAoKG5yKSAmIDcpKSkpOwogfSBlbHNlIHsKICBhc20gdm9sYXRp bGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25n IDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICIgIiAiYnRy cSIgIiAiICIgJTEsJTAiCiAgIDogOiAibSIgKCoodm9sYXRpbGUgbG9uZyAqKSAoYWRkcikpLCAi SXIiIChucikgOiAibWVtb3J5Iik7CiB9Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdm9pZAphcmNoX2NsZWFyX2JpdF91bmxvY2sobG9uZyBuciwgdm9sYXRpbGUgdW5zaWdu ZWQgbG9uZyAqYWRkcikKewogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsK IGFyY2hfY2xlYXJfYml0KG5yLCBhZGRyKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSB2b2lkCmFyY2hfX19jbGVhcl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQg bG9uZyAqYWRkcikKewogYXNtIHZvbGF0aWxlKCIgIiAiYnRycSIgIiAiICIgJTEsJTAiIDogOiAi bSIgKCoodm9sYXRpbGUgbG9uZyAqKSAoYWRkcikpLCAiSXIiIChucikgOiAibWVtb3J5Iik7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbAphcmNoX2NsZWFyX2JpdF91 bmxvY2tfaXNfbmVnYXRpdmVfYnl0ZShsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICph ZGRyKQp7CiBib29sIG5lZ2F0aXZlOwogYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9s b2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rp b25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiYW5kYiAlMiwlMSIKICAiXG5cdC8qIG91dHB1dCBj b25kaXRpb24gY29kZSAiICJzIiAiKi9cbiIKICA6ICI9QGNjIiAicyIgKG5lZ2F0aXZlKSwgIitt IiAoKih2b2xhdGlsZSBjaGFyICopIChhZGRyKSkKICA6ICJpciIgKChjaGFyKSB+KDEgPDwgbnIp KSA6ICJtZW1vcnkiKTsKIHJldHVybiBuZWdhdGl2ZTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQKYXJjaF9fX2NsZWFyX2JpdF91bmxvY2sobG9uZyBuciwgdm9s YXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewogYXJjaF9fX2NsZWFyX2JpdChuciwgYWRkcik7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZAphcmNoX19fY2hhbmdl X2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQp7CiBhc20gdm9sYXRp bGUoIiAiICJidGNxIiAiICIgIiAlMSwlMCIgOiA6ICJtIiAoKih2b2xhdGlsZSBsb25nICopIChh ZGRyKSksICJJciIgKG5yKSA6ICJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkCmFyY2hfY2hhbmdlX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25l ZCBsb25nICphZGRyKQp7CiBpZiAoX19idWlsdGluX2NvbnN0YW50X3AobnIpKSB7CiAgYXNtIHZv bGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIu bG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieG9y YiAlMSwlMCIKICAgOiAiK20iICgqKHZvbGF0aWxlIGNoYXIgKikgKCh2b2lkICopKGFkZHIpICsg KChucik+PjMpKSkKICAgOiAiaXEiICgodTgpKDEgPDwgKChucikgJiA3KSkpKTsKIH0gZWxzZSB7 CiAgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGln biA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9j azsgIiAiICIgImJ0Y3EiICIgIiAiICUxLCUwIgogICA6IDogIm0iICgqKHZvbGF0aWxlIGxvbmcg KikgKGFkZHIpKSwgIklyIiAobnIpIDogIm1lbW9yeSIpOwogfQp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIGJvb2wKYXJjaF90ZXN0X2FuZF9zZXRfYml0KGxvbmcgbnIsIHZv bGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xh dGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5s b25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICIgIiAi YnRzcSIgIiAiICIgJVt2YWxdLCAiICIlW3Zhcl0iICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBj b2RlICIgImMiICIqL1xuIiA6IFt2YXJdICIrbSIgKCphZGRyKSwgIj1AY2MiICJjIiAoYykgOiBb dmFsXSAiSXIiIChucikgOiAibWVtb3J5Iik7IGM7IH0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGJvb2wKYXJjaF90ZXN0X2FuZF9zZXRfYml0X2xvY2sobG9uZyBuciwg dm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewogcmV0dXJuIGFyY2hfdGVzdF9hbmRfc2V0 X2JpdChuciwgYWRkcik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9v bAphcmNoX19fdGVzdF9hbmRfc2V0X2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25n ICphZGRyKQp7CiBib29sIG9sZGJpdDsKCiBhc20oIiAiICJidHNxIiAiICIgIiAlMiwlMSIKICAg ICAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJjIiAiKi9cbiIKICAgICA6ICI9QGNj IiAiYyIgKG9sZGJpdCkKICAgICA6ICJtIiAoKih2b2xhdGlsZSBsb25nICopIChhZGRyKSksICJJ ciIgKG5yKSA6ICJtZW1vcnkiKTsKIHJldHVybiBvbGRiaXQ7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgYm9vbAphcmNoX3Rlc3RfYW5kX2NsZWFyX2JpdChsb25nIG5yLCB2 b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQp7CiByZXR1cm4gKHsgYm9vbCBjOyBhc20gdm9s YXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIu bG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiICIg ImJ0cnEiICIgIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24g Y29kZSAiICJjIiAiKi9cbiIgOiBbdmFyXSAiK20iICgqYWRkciksICI9QGNjIiAiYyIgKGMpIDog W3ZhbF0gIklyIiAobnIpIDogIm1lbW9yeSIpOyBjOyB9KTsKfQojIDE3MyAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBi b29sCmFyY2hfX190ZXN0X2FuZF9jbGVhcl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQg bG9uZyAqYWRkcikKewogYm9vbCBvbGRiaXQ7CgogYXNtIHZvbGF0aWxlKCIgIiAiYnRycSIgIiAi ICIgJTIsJTEiCiAgICAgICAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJjIiAiKi9c biIKICAgICAgIDogIj1AY2MiICJjIiAob2xkYml0KQogICAgICAgOiAibSIgKCoodm9sYXRpbGUg bG9uZyAqKSAoYWRkcikpLCAiSXIiIChucikgOiAibWVtb3J5Iik7CiByZXR1cm4gb2xkYml0Owp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wKYXJjaF9fX3Rlc3RfYW5k X2NoYW5nZV9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewogYm9v bCBvbGRiaXQ7CgogYXNtIHZvbGF0aWxlKCIgIiAiYnRjcSIgIiAiICIgJTIsJTEiCiAgICAgICAi XG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJjIiAiKi9cbiIKICAgICAgIDogIj1AY2Mi ICJjIiAob2xkYml0KQogICAgICAgOiAibSIgKCoodm9sYXRpbGUgbG9uZyAqKSAoYWRkcikpLCAi SXIiIChucikgOiAibWVtb3J5Iik7CgogcmV0dXJuIG9sZGJpdDsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBib29sCmFyY2hfdGVzdF9hbmRfY2hhbmdlX2JpdChsb25nIG5y LCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQp7CiByZXR1cm4gKHsgYm9vbCBjOyBhc20g dm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4i ICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAi ICIgImJ0Y3EiICIgIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRp b24gY29kZSAiICJjIiAiKi9cbiIgOiBbdmFyXSAiK20iICgqYWRkciksICI9QGNjIiAiYyIgKGMp IDogW3ZhbF0gIklyIiAobnIpIDogIm1lbW9yeSIpOyBjOyB9KTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBib29sIGNvbnN0YW50X3Rlc3RfYml0KGxvbmcgbnIsIGNvbnN0 IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKIHJldHVybiAoKDFVTCA8PCAobnIgJiAo NjQgLTEpKSkgJgogIChhZGRyW25yID4+IDZdKSkgIT0gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSBib29sIHZhcmlhYmxlX3Rlc3RfYml0KGxvbmcgbnIsIHZvbGF0aWxl IGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKIGJvb2wgb2xkYml0OwoKIGFzbSB2b2xhdGls ZSgiICIgImJ0cSIgIiAiICIgJTIsJTEiCiAgICAgICAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24g Y29kZSAiICJjIiAiKi9cbiIKICAgICAgIDogIj1AY2MiICJjIiAob2xkYml0KQogICAgICAgOiAi bSIgKCoodW5zaWduZWQgbG9uZyAqKWFkZHIpLCAiSXIiIChucikgOiAibWVtb3J5Iik7CgogcmV0 dXJuIG9sZGJpdDsKfQojIDIzMyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB1bnNpZ25lZCBsb25nIF9fZmZzKHVuc2ln bmVkIGxvbmcgd29yZCkKewogYXNtKCJyZXA7IGJzZiAlMSwlMCIKICA6ICI9ciIgKHdvcmQpCiAg OiAicm0iICh3b3JkKSk7CiByZXR1cm4gd29yZDsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSB1bnNpZ25lZCBsb25nIGZmeih1bnNpZ25lZCBsb25nIHdvcmQpCnsK IGFzbSgicmVwOyBic2YgJTEsJTAiCiAgOiAiPXIiICh3b3JkKQogIDogInIiICh+d29yZCkpOwog cmV0dXJuIHdvcmQ7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dW5zaWduZWQgbG9uZyBfX2Zscyh1bnNpZ25lZCBsb25nIHdvcmQpCnsKIGFzbSgiYnNyICUxLCUw IgogICAgIDogIj1yIiAod29yZCkKICAgICA6ICJybSIgKHdvcmQpKTsKIHJldHVybiB3b3JkOwp9 CiMgMjgzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIGludCBmZnMoaW50IHgpCnsKIGludCByOwojIDI5NyAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKIGFzbSgiYnNmbCAlMSwlMCIKICAgICA6ICI9ciIg KHIpCiAgICAgOiAicm0iICh4KSwgIjAiICgtMSkpOwojIDMxMCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9iaXRvcHMuaCIKIHJldHVybiByICsgMTsKfQojIDMyNCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9iaXRvcHMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgZmxz KHVuc2lnbmVkIGludCB4KQp7CiBpbnQgcjsKIyAzMzggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v Yml0b3BzLmgiCiBhc20oImJzcmwgJTEsJTAiCiAgICAgOiAiPXIiIChyKQogICAgIDogInJtIiAo eCksICIwIiAoLTEpKTsKIyAzNTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiCiBy ZXR1cm4gciArIDE7Cn0KIyAzNjYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IGZsczY0KF9fdTY0IHgpCnsKIGlu dCBiaXRwb3MgPSAtMTsKCgoKCgogYXNtKCJic3JxICUxLCVxMCIKICAgICA6ICIrciIgKGJpdHBv cykKICAgICA6ICJybSIgKHgpKTsKIHJldHVybiBiaXRwb3MgKyAxOwp9CgoKCgojIDEgIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvZmluZC5oIiAxCiMgMTUgIi4vaW5jbHVkZS9hc20tZ2Vu ZXJpYy9iaXRvcHMvZmluZC5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBmaW5kX25leHRfYml0KGNv bnN0IHVuc2lnbmVkIGxvbmcgKmFkZHIsIHVuc2lnbmVkIGxvbmcKICBzaXplLCB1bnNpZ25lZCBs b25nIG9mZnNldCk7CiMgMzAgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvZmluZC5oIgpl eHRlcm4gdW5zaWduZWQgbG9uZyBmaW5kX25leHRfYW5kX2JpdChjb25zdCB1bnNpZ25lZCBsb25n ICphZGRyMSwKICBjb25zdCB1bnNpZ25lZCBsb25nICphZGRyMiwgdW5zaWduZWQgbG9uZyBzaXpl LAogIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKIyA0NSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2Jp dG9wcy9maW5kLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIGZpbmRfbmV4dF96ZXJvX2JpdChjb25z dCB1bnNpZ25lZCBsb25nICphZGRyLCB1bnNpZ25lZAogIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9u ZyBvZmZzZXQpOwojIDU5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2ZpbmQuaCIKZXh0 ZXJuIHVuc2lnbmVkIGxvbmcgZmluZF9maXJzdF9iaXQoY29uc3QgdW5zaWduZWQgbG9uZyAqYWRk ciwKICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOwojIDcwICIuL2luY2x1ZGUvYXNtLWdlbmVy aWMvYml0b3BzL2ZpbmQuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZmluZF9maXJzdF96ZXJvX2Jp dChjb25zdCB1bnNpZ25lZCBsb25nICphZGRyLAogICAgICB1bnNpZ25lZCBsb25nIHNpemUpOwoj IDkzICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2ZpbmQuaCIKZXh0ZXJuIHVuc2lnbmVk IGxvbmcgZmluZF9uZXh0X2NsdW1wOCh1bnNpZ25lZCBsb25nICpjbHVtcCwKICAgICAgICAgIGNv bnN0IHVuc2lnbmVkIGxvbmcgKmFkZHIsCiAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsIHVu c2lnbmVkIGxvbmcgb2Zmc2V0KTsKIyAzODQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3Bz LmgiIDIKCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9zY2hlZC5oIiAxCgoKCgoK IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVzLmgiIDEKIyA3 ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL3NjaGVkLmgiIDIKCgoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHNjaGVk X2ZpbmRfZmlyc3RfYml0KGNvbnN0IHVuc2lnbmVkIGxvbmcgKmIpCnsKCiBpZiAoYlswXSkKICBy ZXR1cm4gX19mZnMoYlswXSk7CiByZXR1cm4gX19mZnMoYlsxXSkgKyA2NDsKIyAzMCAiLi9pbmNs dWRlL2FzbS1nZW5lcmljL2JpdG9wcy9zY2hlZC5oIgp9CiMgMzg2ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2JpdG9wcy5oIiAyCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXJjaF9od2Vp Z2h0LmgiIDEKIyAxNSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcmNoX2h3ZWlnaHQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB1bnNpZ25lZCBpbnQgX19hcmNoX2h3ZWln aHQzMih1bnNpZ25lZCBpbnQgdykKewogdW5zaWduZWQgaW50IHJlczsKCiBhc20gKCIjIEFMVDog b2xkbnN0clxuIiAiNjYxOlxuXHQiICJjYWxsIF9fc3dfaHdlaWdodDMyIiAiXG42NjI6XG4iICIj IEFMVDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikt KCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIg IiktKCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAu YWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2 NjQiIjEiImYgLSAuXG4iICIgLndvcmQgIiAiKCA0KjMyKzIzKSIgIlxuIiAiIC5ieXRlICIgIjY2 MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIg LmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rpb24g LmFsdGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIx IiAiXG4iICI2NjQiIjEiIjpcblx0IiAicG9wY250bCAlMSwgJTAiICJcbiIgIjY2NSIiMSIgIjpc biIgIi5wb3BzZWN0aW9uXG4iCiAgICA6ICI9IiJhIiAocmVzKQogICAgOiAiRCIgKHcpKTsKCiBy ZXR1cm4gcmVzOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgX19hcmNoX2h3ZWlnaHQxNih1bnNpZ25lZCBpbnQg dykKewogcmV0dXJuIF9fYXJjaF9od2VpZ2h0MzIodyAmIDB4ZmZmZik7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGlu dCBfX2FyY2hfaHdlaWdodDgodW5zaWduZWQgaW50IHcpCnsKIHJldHVybiBfX2FyY2hfaHdlaWdo dDMyKHcgJiAweGZmKTsKfQojIDQzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FyY2hfaHdlaWdo dC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxvbmcgX19h cmNoX2h3ZWlnaHQ2NChfX3U2NCB3KQp7CiB1bnNpZ25lZCBsb25nIHJlczsKCiBhc20gKCIjIEFM VDogb2xkbnN0clxuIiAiNjYxOlxuXHQiICJjYWxsIF9fc3dfaHdlaWdodDY0IiAiXG42NjI6XG4i ICIjIEFMVDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIg IiktKCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIi ZiIgIiktKCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlv biAuYWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAi ICI2NjQiIjEiImYgLSAuXG4iICIgLndvcmQgIiAiKCA0KjMyKzIzKSIgIlxuIiAiIC5ieXRlICIg IjY2MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4i ICIgLmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rp b24gLmFsdGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAi ICIxIiAiXG4iICI2NjQiIjEiIjpcblx0IiAicG9wY250cSAlMSwgJTAiICJcbiIgIjY2NSIiMSIg IjpcbiIgIi5wb3BzZWN0aW9uXG4iCiAgICA6ICI9IiJhIiAocmVzKQogICAgOiAiRCIgKHcpKTsK CiByZXR1cm4gcmVzOwp9CiMgMzg4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAy CgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvY29uc3RfaHdlaWdodC5oIiAxCiMg MzkwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAyCgojIDEgIi4vaW5jbHVkZS9h c20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0b21pYy5oIiAxCiMgMjYgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0b21pYy5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldF9iaXQo bG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hlY2tfd3Jp dGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogYXJjaF9zZXRfYml0KG5yLCBh ZGRyKTsKfQojIDM5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1h dG9taWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBjbGVhcl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAq YWRkcikKewoga2FzYW5fY2hlY2tfd3JpdGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9u ZykpOwogYXJjaF9jbGVhcl9iaXQobnIsIGFkZHIpOwp9CiMgNTUgIi4vaW5jbHVkZS9hc20tZ2Vu ZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0b21pYy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNoYW5nZV9iaXQobG9uZyBu ciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hlY2tfd3JpdGUoYWRk ciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogYXJjaF9jaGFuZ2VfYml0KG5yLCBhZGRy KTsKfQojIDY4ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1hdG9t aWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCB0ZXN0X2FuZF9zZXRfYml0KGxvbmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxv bmcgKmFkZHIpCnsKIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIgKyAoKG5yKSAvIDY0KSwgc2l6ZW9m KGxvbmcpKTsKIHJldHVybiBhcmNoX3Rlc3RfYW5kX3NldF9iaXQobnIsIGFkZHIpOwp9CiMgODEg Ii4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0b21pYy5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s IHRlc3RfYW5kX2NsZWFyX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRy KQp7CiBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChucikgLyA2NCksIHNpemVvZihsb25nKSk7 CiByZXR1cm4gYXJjaF90ZXN0X2FuZF9jbGVhcl9iaXQobnIsIGFkZHIpOwp9CiMgOTQgIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0b21pYy5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRlc3Rf YW5kX2NoYW5nZV9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewog a2FzYW5fY2hlY2tfd3JpdGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogcmV0 dXJuIGFyY2hfdGVzdF9hbmRfY2hhbmdlX2JpdChuciwgYWRkcik7Cn0KIyAzOTIgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDIKIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0 b3BzL2luc3RydW1lbnRlZC1ub24tYXRvbWljLmgiIDEKIyAyNSAiLi9pbmNsdWRlL2FzbS1nZW5l cmljL2JpdG9wcy9pbnN0cnVtZW50ZWQtbm9uLWF0b21pYy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fc2V0X2JpdChsb25n IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQp7CiBrYXNhbl9jaGVja193cml0ZShh ZGRyICsgKChucikgLyA2NCksIHNpemVvZihsb25nKSk7CiBhcmNoX19fc2V0X2JpdChuciwgYWRk cik7Cn0KIyA0MCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0cnVtZW50ZWQtbm9u LWF0b21pYy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIF9fY2xlYXJfYml0KGxvbmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxv bmcgKmFkZHIpCnsKIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIgKyAoKG5yKSAvIDY0KSwgc2l6ZW9m KGxvbmcpKTsKIGFyY2hfX19jbGVhcl9iaXQobnIsIGFkZHIpOwp9CiMgNTUgIi4vaW5jbHVkZS9h c20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLW5vbi1hdG9taWMuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2NoYW5n ZV9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hl Y2tfd3JpdGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogYXJjaF9fX2NoYW5n ZV9iaXQobnIsIGFkZHIpOwp9CiMgNjkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5z dHJ1bWVudGVkLW5vbi1hdG9taWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBfX3Rlc3RfYW5kX3NldF9iaXQobG9uZyBuciwg dm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hlY2tfd3JpdGUoYWRkciAr ICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogcmV0dXJuIGFyY2hfX190ZXN0X2FuZF9zZXRf Yml0KG5yLCBhZGRyKTsKfQojIDgzICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3Ry dW1lbnRlZC1ub24tYXRvbWljLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgX190ZXN0X2FuZF9jbGVhcl9iaXQobG9uZyBuciwg dm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hlY2tfd3JpdGUoYWRkciAr ICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogcmV0dXJuIGFyY2hfX190ZXN0X2FuZF9jbGVh cl9iaXQobnIsIGFkZHIpOwp9CiMgOTcgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5z dHJ1bWVudGVkLW5vbi1hdG9taWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBfX3Rlc3RfYW5kX2NoYW5nZV9iaXQobG9uZyBu ciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hlY2tfd3JpdGUoYWRk ciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogcmV0dXJuIGFyY2hfX190ZXN0X2FuZF9j aGFuZ2VfYml0KG5yLCBhZGRyKTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRlc3RfYml0KGxvbmcgbnIsIGNvbnN0 IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKIGthc2FuX2NoZWNrX3JlYWQoYWRkciAr ICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogcmV0dXJuIChfX2J1aWx0aW5fY29uc3RhbnRf cCgobnIpKSA/IGNvbnN0YW50X3Rlc3RfYml0KChuciksIChhZGRyKSkgOiB2YXJpYWJsZV90ZXN0 X2JpdCgobnIpLCAoYWRkcikpKTsKfQojIDM5MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRv cHMuaCIgMgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWxv Y2suaCIgMQojIDIzICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1s b2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgY2xlYXJfYml0X3VubG9jayhsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBs b25nICphZGRyKQp7CiBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChucikgLyA2NCksIHNpemVv Zihsb25nKSk7CiBhcmNoX2NsZWFyX2JpdF91bmxvY2sobnIsIGFkZHIpOwp9CiMgMzggIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWxvY2suaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2NsZWFy X2JpdF91bmxvY2sobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2Fz YW5fY2hlY2tfd3JpdGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogYXJjaF9f X2NsZWFyX2JpdF91bmxvY2sobnIsIGFkZHIpOwp9CiMgNTMgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9iaXRvcHMvaW5zdHJ1bWVudGVkLWxvY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0ZXN0X2FuZF9zZXRfYml0X2xvY2so bG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hlY2tfd3Jp dGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogcmV0dXJuIGFyY2hfdGVzdF9h bmRfc2V0X2JpdF9sb2NrKG5yLCBhZGRyKTsKfQojIDcxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMv Yml0b3BzL2luc3RydW1lbnRlZC1sb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKY2xlYXJfYml0X3VubG9ja19pc19uZWdh dGl2ZV9ieXRlKGxvbmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKIGthc2Fu X2NoZWNrX3dyaXRlKGFkZHIgKyAoKG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKIHJldHVybiBh cmNoX2NsZWFyX2JpdF91bmxvY2tfaXNfbmVnYXRpdmVfYnl0ZShuciwgYWRkcik7Cn0KIyAzOTQg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDIKCiMgMSAiLi9pbmNsdWRlL2FzbS1n ZW5lcmljL2JpdG9wcy9sZS5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0 ZWQvdWFwaS9hc20vdHlwZXMuaCIgMQojIDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMv bGUuaCIgMgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGZpbmRfbmV4dF96ZXJvX2JpdF9sZShjb25zdCB2 b2lkICphZGRyLAogIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpCnsK IHJldHVybiBmaW5kX25leHRfemVyb19iaXQoYWRkciwgc2l6ZSwgb2Zmc2V0KTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWdu ZWQgbG9uZyBmaW5kX25leHRfYml0X2xlKGNvbnN0IHZvaWQgKmFkZHIsCiAgdW5zaWduZWQgbG9u ZyBzaXplLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKewogcmV0dXJuIGZpbmRfbmV4dF9iaXQoYWRk ciwgc2l6ZSwgb2Zmc2V0KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBmaW5kX2ZpcnN0X3plcm9fYml0X2xl KGNvbnN0IHZvaWQgKmFkZHIsCiAgdW5zaWduZWQgbG9uZyBzaXplKQp7CiByZXR1cm4gZmluZF9m aXJzdF96ZXJvX2JpdChhZGRyLCBzaXplKTsKfQojIDUzICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMv Yml0b3BzL2xlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCB0ZXN0X2JpdF9sZShpbnQgbnIsIGNvbnN0IHZvaWQgKmFkZHIpCnsK IHJldHVybiB0ZXN0X2JpdChuciBeIDAsIGFkZHIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldF9iaXRfbGUoaW50IG5y LCB2b2lkICphZGRyKQp7CiBzZXRfYml0KG5yIF4gMCwgYWRkcik7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY2xlYXJfYml0 X2xlKGludCBuciwgdm9pZCAqYWRkcikKewogY2xlYXJfYml0KG5yIF4gMCwgYWRkcik7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgX19zZXRfYml0X2xlKGludCBuciwgdm9pZCAqYWRkcikKewogX19zZXRfYml0KG5yIF4gMCwg YWRkcik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgX19jbGVhcl9iaXRfbGUoaW50IG5yLCB2b2lkICphZGRyKQp7CiBfX2Ns ZWFyX2JpdChuciBeIDAsIGFkZHIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGVzdF9hbmRfc2V0X2JpdF9sZShpbnQgbnIs IHZvaWQgKmFkZHIpCnsKIHJldHVybiB0ZXN0X2FuZF9zZXRfYml0KG5yIF4gMCwgYWRkcik7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCB0ZXN0X2FuZF9jbGVhcl9iaXRfbGUoaW50IG5yLCB2b2lkICphZGRyKQp7CiByZXR1cm4g dGVzdF9hbmRfY2xlYXJfYml0KG5yIF4gMCwgYWRkcik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX3Rlc3RfYW5kX3NldF9i aXRfbGUoaW50IG5yLCB2b2lkICphZGRyKQp7CiByZXR1cm4gX190ZXN0X2FuZF9zZXRfYml0KG5y IF4gMCwgYWRkcik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBfX3Rlc3RfYW5kX2NsZWFyX2JpdF9sZShpbnQgbnIsIHZvaWQg KmFkZHIpCnsKIHJldHVybiBfX3Rlc3RfYW5kX2NsZWFyX2JpdChuciBeIDAsIGFkZHIpOwp9CiMg Mzk2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAyCgojIDEgIi4vaW5jbHVkZS9h c20tZ2VuZXJpYy9iaXRvcHMvZXh0Mi1hdG9taWMtc2V0Yml0LmgiIDEKIyAzOTggIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDIKIyAzMCAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5o IiAyCiMgNjUgIi4vaW5jbHVkZS9saW51eC9iaXRvcHMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGdldF9iaXRtYXNrX29yZGVy KHVuc2lnbmVkIGludCBjb3VudCkKewogaW50IG9yZGVyOwoKIG9yZGVyID0gZmxzKGNvdW50KTsK IHJldHVybiBvcmRlcjsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB1bnNp Z25lZCBsb25nIGh3ZWlnaHRfbG9uZyh1bnNpZ25lZCBsb25nIHcpCnsKIHJldHVybiBzaXplb2Yo dykgPT0gNCA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCh3KSA/ICgoKCh1bnNpZ25lZCBpbnQpICgo ISEoKHcpICYgKDFVTEwgPDwgMCkpKSArICghISgodykgJiAoMVVMTCA8PCAxKSkpICsgKCEhKCh3 KSAmICgxVUxMIDw8IDIpKSkgKyAoISEoKHcpICYgKDFVTEwgPDwgMykpKSArICghISgodykgJiAo MVVMTCA8PCA0KSkpICsgKCEhKCh3KSAmICgxVUxMIDw8IDUpKSkgKyAoISEoKHcpICYgKDFVTEwg PDwgNikpKSArICghISgodykgJiAoMVVMTCA8PCA3KSkpKSkgKyAoKHVuc2lnbmVkIGludCkgKCgh ISgoKHcpID4+IDgpICYgKDFVTEwgPDwgMCkpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwg MSkpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgMikpKSArICghISgoKHcpID4+IDgpICYg KDFVTEwgPDwgMykpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgNCkpKSArICghISgoKHcp ID4+IDgpICYgKDFVTEwgPDwgNSkpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgNikpKSAr ICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgNykpKSkpKSArICgoKHVuc2lnbmVkIGludCkgKCgh ISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDApKSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8 PCAxKSkpICsgKCEhKCgodykgPj4gMTYpICYgKDFVTEwgPDwgMikpKSArICghISgoKHcpID4+IDE2 KSAmICgxVUxMIDw8IDMpKSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8PCA0KSkpICsgKCEh KCgodykgPj4gMTYpICYgKDFVTEwgPDwgNSkpKSArICghISgoKHcpID4+IDE2KSAmICgxVUxMIDw8 IDYpKSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8PCA3KSkpKSkgKyAoKHVuc2lnbmVkIGlu dCkgKCghISgoKCh3KSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCAwKSkpICsgKCEhKCgoKHcpID4+ IDE2KSA+PiA4KSAmICgxVUxMIDw8IDEpKSkgKyAoISEoKCgodykgPj4gMTYpID4+IDgpICYgKDFV TEwgPDwgMikpKSArICghISgoKCh3KSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCAzKSkpICsgKCEh KCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDQpKSkgKyAoISEoKCgodykgPj4gMTYpID4+ IDgpICYgKDFVTEwgPDwgNSkpKSArICghISgoKCh3KSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCA2 KSkpICsgKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDcpKSkpKSkpIDogX19hcmNo X2h3ZWlnaHQzMih3KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AodykgPyAoKCgoKHVuc2lnbmVk IGludCkgKCghISgodykgJiAoMVVMTCA8PCAwKSkpICsgKCEhKCh3KSAmICgxVUxMIDw8IDEpKSkg KyAoISEoKHcpICYgKDFVTEwgPDwgMikpKSArICghISgodykgJiAoMVVMTCA8PCAzKSkpICsgKCEh KCh3KSAmICgxVUxMIDw8IDQpKSkgKyAoISEoKHcpICYgKDFVTEwgPDwgNSkpKSArICghISgodykg JiAoMVVMTCA8PCA2KSkpICsgKCEhKCh3KSAmICgxVUxMIDw8IDcpKSkpKSArICgodW5zaWduZWQg aW50KSAoKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCAwKSkpICsgKCEhKCgodykgPj4gOCkgJiAo MVVMTCA8PCAxKSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCAyKSkpICsgKCEhKCgodykg Pj4gOCkgJiAoMVVMTCA8PCAzKSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCA0KSkpICsg KCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCA1KSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8 PCA2KSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCA3KSkpKSkpICsgKCgodW5zaWduZWQg aW50KSAoKCEhKCgodykgPj4gMTYpICYgKDFVTEwgPDwgMCkpKSArICghISgoKHcpID4+IDE2KSAm ICgxVUxMIDw8IDEpKSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8PCAyKSkpICsgKCEhKCgo dykgPj4gMTYpICYgKDFVTEwgPDwgMykpKSArICghISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDQp KSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8PCA1KSkpICsgKCEhKCgodykgPj4gMTYpICYg KDFVTEwgPDwgNikpKSArICghISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDcpKSkpKSArICgodW5z aWduZWQgaW50KSAoKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDApKSkgKyAoISEo KCgodykgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgMSkpKSArICghISgoKCh3KSA+PiAxNikgPj4g OCkgJiAoMVVMTCA8PCAyKSkpICsgKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDMp KSkgKyAoISEoKCgodykgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgNCkpKSArICghISgoKCh3KSA+ PiAxNikgPj4gOCkgJiAoMVVMTCA8PCA1KSkpICsgKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgx VUxMIDw8IDYpKSkgKyAoISEoKCgodykgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgNykpKSkpKSkg KyAoKCgodW5zaWduZWQgaW50KSAoKCEhKCgodykgPj4gMzIpICYgKDFVTEwgPDwgMCkpKSArICgh ISgoKHcpID4+IDMyKSAmICgxVUxMIDw8IDEpKSkgKyAoISEoKCh3KSA+PiAzMikgJiAoMVVMTCA8 PCAyKSkpICsgKCEhKCgodykgPj4gMzIpICYgKDFVTEwgPDwgMykpKSArICghISgoKHcpID4+IDMy KSAmICgxVUxMIDw8IDQpKSkgKyAoISEoKCh3KSA+PiAzMikgJiAoMVVMTCA8PCA1KSkpICsgKCEh KCgodykgPj4gMzIpICYgKDFVTEwgPDwgNikpKSArICghISgoKHcpID4+IDMyKSAmICgxVUxMIDw8 IDcpKSkpKSArICgodW5zaWduZWQgaW50KSAoKCEhKCgoKHcpID4+IDMyKSA+PiA4KSAmICgxVUxM IDw8IDApKSkgKyAoISEoKCgodykgPj4gMzIpID4+IDgpICYgKDFVTEwgPDwgMSkpKSArICghISgo KCh3KSA+PiAzMikgPj4gOCkgJiAoMVVMTCA8PCAyKSkpICsgKCEhKCgoKHcpID4+IDMyKSA+PiA4 KSAmICgxVUxMIDw8IDMpKSkgKyAoISEoKCgodykgPj4gMzIpID4+IDgpICYgKDFVTEwgPDwgNCkp KSArICghISgoKCh3KSA+PiAzMikgPj4gOCkgJiAoMVVMTCA8PCA1KSkpICsgKCEhKCgoKHcpID4+ IDMyKSA+PiA4KSAmICgxVUxMIDw8IDYpKSkgKyAoISEoKCgodykgPj4gMzIpID4+IDgpICYgKDFV TEwgPDwgNykpKSkpKSArICgoKHVuc2lnbmVkIGludCkgKCghISgoKCh3KSA+PiAzMikgPj4gMTYp ICYgKDFVTEwgPDwgMCkpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgMSkp KSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgMikpKSArICghISgoKCh3KSA+ PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgMykpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYg KDFVTEwgPDwgNCkpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgNSkpKSAr ICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgNikpKSArICghISgoKCh3KSA+PiAz MikgPj4gMTYpICYgKDFVTEwgPDwgNykpKSkpICsgKCh1bnNpZ25lZCBpbnQpICgoISEoKCgoKHcp ID4+IDMyKSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCAwKSkpICsgKCEhKCgoKCh3KSA+PiAzMikg Pj4gMTYpID4+IDgpICYgKDFVTEwgPDwgMSkpKSArICghISgoKCgodykgPj4gMzIpID4+IDE2KSA+ PiA4KSAmICgxVUxMIDw8IDIpKSkgKyAoISEoKCgoKHcpID4+IDMyKSA+PiAxNikgPj4gOCkgJiAo MVVMTCA8PCAzKSkpICsgKCEhKCgoKCh3KSA+PiAzMikgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwg NCkpKSArICghISgoKCgodykgPj4gMzIpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDUpKSkgKyAo ISEoKCgoKHcpID4+IDMyKSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCA2KSkpICsgKCEhKCgoKCh3 KSA+PiAzMikgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgNykpKSkpKSkpIDogX19hcmNoX2h3ZWln aHQ2NCh3KSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191NjQgcm9sNjQoX191NjQgd29yZCwgdW5zaWduZWQgaW50IHNo aWZ0KQp7CiByZXR1cm4gKHdvcmQgPDwgKHNoaWZ0ICYgNjMpKSB8ICh3b3JkID4+ICgoLXNoaWZ0 KSAmIDYzKSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191NjQgcm9yNjQoX191NjQgd29yZCwgdW5zaWduZWQgaW50IHNo aWZ0KQp7CiByZXR1cm4gKHdvcmQgPj4gKHNoaWZ0ICYgNjMpKSB8ICh3b3JkIDw8ICgoLXNoaWZ0 KSAmIDYzKSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191MzIgcm9sMzIoX191MzIgd29yZCwgdW5zaWduZWQgaW50IHNo aWZ0KQp7CiByZXR1cm4gKHdvcmQgPDwgKHNoaWZ0ICYgMzEpKSB8ICh3b3JkID4+ICgoLXNoaWZ0 KSAmIDMxKSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191MzIgcm9yMzIoX191MzIgd29yZCwgdW5zaWduZWQgaW50IHNo aWZ0KQp7CiByZXR1cm4gKHdvcmQgPj4gKHNoaWZ0ICYgMzEpKSB8ICh3b3JkIDw8ICgoLXNoaWZ0 KSAmIDMxKSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191MTYgcm9sMTYoX191MTYgd29yZCwgdW5zaWduZWQgaW50IHNo aWZ0KQp7CiByZXR1cm4gKHdvcmQgPDwgKHNoaWZ0ICYgMTUpKSB8ICh3b3JkID4+ICgoLXNoaWZ0 KSAmIDE1KSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191MTYgcm9yMTYoX191MTYgd29yZCwgdW5zaWduZWQgaW50IHNo aWZ0KQp7CiByZXR1cm4gKHdvcmQgPj4gKHNoaWZ0ICYgMTUpKSB8ICh3b3JkIDw8ICgoLXNoaWZ0 KSAmIDE1KSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191OCByb2w4KF9fdTggd29yZCwgdW5zaWduZWQgaW50IHNoaWZ0 KQp7CiByZXR1cm4gKHdvcmQgPDwgKHNoaWZ0ICYgNykpIHwgKHdvcmQgPj4gKCgtc2hpZnQpICYg NykpOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fdTggcm9yOChfX3U4IHdvcmQsIHVuc2lnbmVkIGludCBzaGlmdCkKewog cmV0dXJuICh3b3JkID4+IChzaGlmdCAmIDcpKSB8ICh3b3JkIDw8ICgoLXNoaWZ0KSAmIDcpKTsK fQojIDE2NSAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX3MzMiBzaWduX2V4dGVuZDMyKF9f dTMyIHZhbHVlLCBpbnQgaW5kZXgpCnsKIF9fdTggc2hpZnQgPSAzMSAtIGluZGV4OwogcmV0dXJu IChfX3MzMikodmFsdWUgPDwgc2hpZnQpID4+IHNoaWZ0Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fczY0IHNpZ25fZXh0 ZW5kNjQoX191NjQgdmFsdWUsIGludCBpbmRleCkKewogX191OCBzaGlmdCA9IDYzIC0gaW5kZXg7 CiByZXR1cm4gKF9fczY0KSh2YWx1ZSA8PCBzaGlmdCkgPj4gc2hpZnQ7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGZs c19sb25nKHVuc2lnbmVkIGxvbmcgbCkKewogaWYgKHNpemVvZihsKSA9PSA0KQogIHJldHVybiBm bHMobCk7CiByZXR1cm4gZmxzNjQobCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBnZXRfY291bnRfb3JkZXIodW5zaWduZWQg aW50IGNvdW50KQp7CiBpbnQgb3JkZXI7Cgogb3JkZXIgPSBmbHMoY291bnQpIC0gMTsKIGlmIChj b3VudCAmIChjb3VudCAtIDEpKQogIG9yZGVyKys7CiByZXR1cm4gb3JkZXI7Cn0KCgoKCgoKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBnZXRfY291bnRfb3JkZXJfbG9uZyh1bnNpZ25lZCBsb25nIGwpCnsKIGlmIChsID09IDBVTCkK ICByZXR1cm4gLTE7CiBlbHNlIGlmIChsICYgKGwgLSAxVUwpKQogIHJldHVybiAoaW50KWZsc19s b25nKGwpOwogZWxzZQogIHJldHVybiAoaW50KWZsc19sb25nKGwpIC0gMTsKfQojIDIyMyAiLi9p bmNsdWRlL2xpbnV4L2JpdG9wcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF9fZmZzNjQodTY0IHdvcmQpCnsK CgoKCgoKIHJldHVybiBfX2ZmcygodW5zaWduZWQgbG9uZyl3b3JkKTsKfQoKCgoKCgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGFzc2lnbl9iaXQobG9uZyBuciwgdm9s YXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkciwKICAgICAgICAgICBib29sIHZhbHVlKQp7CiBpZiAo dmFsdWUpCiAgc2V0X2JpdChuciwgYWRkcik7CiBlbHNlCiAgY2xlYXJfYml0KG5yLCBhZGRyKTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fYXNzaWduX2JpdChs b25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyLAogICAgICBib29sIHZhbHVlKQp7 CiBpZiAodmFsdWUpCiAgX19zZXRfYml0KG5yLCBhZGRyKTsKIGVsc2UKICBfX2NsZWFyX2JpdChu ciwgYWRkcik7Cn0KIyAyOTkgIi4vaW5jbHVkZS9saW51eC9iaXRvcHMuaCIKZXh0ZXJuIHVuc2ln bmVkIGxvbmcgZmluZF9sYXN0X2JpdChjb25zdCB1bnNpZ25lZCBsb25nICphZGRyLAogICAgICAg dW5zaWduZWQgbG9uZyBzaXplKTsKIyAxMyAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMg MSAiLi9pbmNsdWRlL2xpbnV4L2xvZzIuaCIgMQojIDIxICIuL2luY2x1ZGUvbGludXgvbG9nMi5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChjb25zdCkpCmludCBfX2lsb2cyX3UzMih1MzIgbikKewogcmV0dXJu IGZscyhuKSAtIDE7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoY29uc3QpKQppbnQgX19pbG9nMl91NjQo dTY0IG4pCnsKIHJldHVybiBmbHM2NChuKSAtIDE7Cn0KIyA0NCAiLi9pbmNsdWRlL2xpbnV4L2xv ZzIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoY29uc3QpKQpib29sIGlzX3Bvd2VyX29mXzIodW5zaWduZWQg bG9uZyBuKQp7CiByZXR1cm4gKG4gIT0gMCAmJiAoKG4gJiAobiAtIDEpKSA9PSAwKSk7Cn0KCgoK CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChjb25zdCkpCnVuc2lnbmVkIGxvbmcgX19yb3VuZHVwX3Bvd19vZl90 d28odW5zaWduZWQgbG9uZyBuKQp7CiByZXR1cm4gMVVMIDw8IGZsc19sb25nKG4gLSAxKTsKfQoK CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKGNvbnN0KSkKdW5zaWduZWQgbG9uZyBfX3JvdW5kZG93bl9wb3df b2ZfdHdvKHVuc2lnbmVkIGxvbmcgbikKewogcmV0dXJuIDFVTCA8PCAoZmxzX2xvbmcobikgLSAx KTsKfQojIDE5NyAiLi9pbmNsdWRlL2xpbnV4L2xvZzIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19jb25z dF9fKSkKaW50IF9fb3JkZXJfYmFzZV8yKHVuc2lnbmVkIGxvbmcgbikKewogcmV0dXJuIG4gPiAx ID8gKCBfX2J1aWx0aW5fY29uc3RhbnRfcChuIC0gMSkgPyAoIF9fYnVpbHRpbl9jb25zdGFudF9w KG4gLSAxKSA/ICggKG4gLSAxKSA8IDIgPyAwIDogKG4gLSAxKSAmICgxVUxMIDw8IDYzKSA/IDYz IDogKG4gLSAxKSAmICgxVUxMIDw8IDYyKSA/IDYyIDogKG4gLSAxKSAmICgxVUxMIDw8IDYxKSA/ IDYxIDogKG4gLSAxKSAmICgxVUxMIDw8IDYwKSA/IDYwIDogKG4gLSAxKSAmICgxVUxMIDw8IDU5 KSA/IDU5IDogKG4gLSAxKSAmICgxVUxMIDw8IDU4KSA/IDU4IDogKG4gLSAxKSAmICgxVUxMIDw8 IDU3KSA/IDU3IDogKG4gLSAxKSAmICgxVUxMIDw8IDU2KSA/IDU2IDogKG4gLSAxKSAmICgxVUxM IDw8IDU1KSA/IDU1IDogKG4gLSAxKSAmICgxVUxMIDw8IDU0KSA/IDU0IDogKG4gLSAxKSAmICgx VUxMIDw8IDUzKSA/IDUzIDogKG4gLSAxKSAmICgxVUxMIDw8IDUyKSA/IDUyIDogKG4gLSAxKSAm ICgxVUxMIDw8IDUxKSA/IDUxIDogKG4gLSAxKSAmICgxVUxMIDw8IDUwKSA/IDUwIDogKG4gLSAx KSAmICgxVUxMIDw8IDQ5KSA/IDQ5IDogKG4gLSAxKSAmICgxVUxMIDw8IDQ4KSA/IDQ4IDogKG4g LSAxKSAmICgxVUxMIDw8IDQ3KSA/IDQ3IDogKG4gLSAxKSAmICgxVUxMIDw8IDQ2KSA/IDQ2IDog KG4gLSAxKSAmICgxVUxMIDw8IDQ1KSA/IDQ1IDogKG4gLSAxKSAmICgxVUxMIDw8IDQ0KSA/IDQ0 IDogKG4gLSAxKSAmICgxVUxMIDw8IDQzKSA/IDQzIDogKG4gLSAxKSAmICgxVUxMIDw8IDQyKSA/ IDQyIDogKG4gLSAxKSAmICgxVUxMIDw8IDQxKSA/IDQxIDogKG4gLSAxKSAmICgxVUxMIDw8IDQw KSA/IDQwIDogKG4gLSAxKSAmICgxVUxMIDw8IDM5KSA/IDM5IDogKG4gLSAxKSAmICgxVUxMIDw8 IDM4KSA/IDM4IDogKG4gLSAxKSAmICgxVUxMIDw8IDM3KSA/IDM3IDogKG4gLSAxKSAmICgxVUxM IDw8IDM2KSA/IDM2IDogKG4gLSAxKSAmICgxVUxMIDw8IDM1KSA/IDM1IDogKG4gLSAxKSAmICgx VUxMIDw8IDM0KSA/IDM0IDogKG4gLSAxKSAmICgxVUxMIDw8IDMzKSA/IDMzIDogKG4gLSAxKSAm ICgxVUxMIDw8IDMyKSA/IDMyIDogKG4gLSAxKSAmICgxVUxMIDw8IDMxKSA/IDMxIDogKG4gLSAx KSAmICgxVUxMIDw8IDMwKSA/IDMwIDogKG4gLSAxKSAmICgxVUxMIDw8IDI5KSA/IDI5IDogKG4g LSAxKSAmICgxVUxMIDw8IDI4KSA/IDI4IDogKG4gLSAxKSAmICgxVUxMIDw8IDI3KSA/IDI3IDog KG4gLSAxKSAmICgxVUxMIDw8IDI2KSA/IDI2IDogKG4gLSAxKSAmICgxVUxMIDw8IDI1KSA/IDI1 IDogKG4gLSAxKSAmICgxVUxMIDw8IDI0KSA/IDI0IDogKG4gLSAxKSAmICgxVUxMIDw8IDIzKSA/ IDIzIDogKG4gLSAxKSAmICgxVUxMIDw8IDIyKSA/IDIyIDogKG4gLSAxKSAmICgxVUxMIDw8IDIx KSA/IDIxIDogKG4gLSAxKSAmICgxVUxMIDw8IDIwKSA/IDIwIDogKG4gLSAxKSAmICgxVUxMIDw8 IDE5KSA/IDE5IDogKG4gLSAxKSAmICgxVUxMIDw8IDE4KSA/IDE4IDogKG4gLSAxKSAmICgxVUxM IDw8IDE3KSA/IDE3IDogKG4gLSAxKSAmICgxVUxMIDw8IDE2KSA/IDE2IDogKG4gLSAxKSAmICgx VUxMIDw8IDE1KSA/IDE1IDogKG4gLSAxKSAmICgxVUxMIDw8IDE0KSA/IDE0IDogKG4gLSAxKSAm ICgxVUxMIDw8IDEzKSA/IDEzIDogKG4gLSAxKSAmICgxVUxMIDw8IDEyKSA/IDEyIDogKG4gLSAx KSAmICgxVUxMIDw8IDExKSA/IDExIDogKG4gLSAxKSAmICgxVUxMIDw8IDEwKSA/IDEwIDogKG4g LSAxKSAmICgxVUxMIDw8IDkpID8gOSA6IChuIC0gMSkgJiAoMVVMTCA8PCA4KSA/IDggOiAobiAt IDEpICYgKDFVTEwgPDwgNykgPyA3IDogKG4gLSAxKSAmICgxVUxMIDw8IDYpID8gNiA6IChuIC0g MSkgJiAoMVVMTCA8PCA1KSA/IDUgOiAobiAtIDEpICYgKDFVTEwgPDwgNCkgPyA0IDogKG4gLSAx KSAmICgxVUxMIDw8IDMpID8gMyA6IChuIC0gMSkgJiAoMVVMTCA8PCAyKSA/IDIgOiAxKSA6IC0x KSA6IChzaXplb2YobiAtIDEpIDw9IDQpID8gX19pbG9nMl91MzIobiAtIDEpIDogX19pbG9nMl91 NjQobiAtIDEpICkgKyAxIDogMDsKfQojIDIyNCAiLi9pbmNsdWRlL2xpbnV4L2xvZzIuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoY29uc3QpKQppbnQgX19iaXRzX3Blcih1bnNpZ25lZCBsb25nIG4pCnsKIGlm IChuIDwgMikKICByZXR1cm4gMTsKIGlmIChpc19wb3dlcl9vZl8yKG4pKQogIHJldHVybiAoIF9f YnVpbHRpbl9jb25zdGFudF9wKG4pID8gKCAoKG4pID09IDAgfHwgKG4pID09IDEpID8gMCA6ICgg X19idWlsdGluX2NvbnN0YW50X3AoKG4pIC0gMSkgPyAoIF9fYnVpbHRpbl9jb25zdGFudF9wKChu KSAtIDEpID8gKCAoKG4pIC0gMSkgPCAyID8gMCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYzKSA/ IDYzIDogKChuKSAtIDEpICYgKDFVTEwgPDwgNjIpID8gNjIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8 PCA2MSkgPyA2MSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYwKSA/IDYwIDogKChuKSAtIDEpICYg KDFVTEwgPDwgNTkpID8gNTkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1OCkgPyA1OCA6ICgobikg LSAxKSAmICgxVUxMIDw8IDU3KSA/IDU3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTYpID8gNTYg OiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1NSkgPyA1NSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDU0 KSA/IDU0IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTMpID8gNTMgOiAoKG4pIC0gMSkgJiAoMVVM TCA8PCA1MikgPyA1MiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDUxKSA/IDUxIDogKChuKSAtIDEp ICYgKDFVTEwgPDwgNTApID8gNTAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0OSkgPyA0OSA6ICgo bikgLSAxKSAmICgxVUxMIDw8IDQ4KSA/IDQ4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDcpID8g NDcgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0NikgPyA0NiA6ICgobikgLSAxKSAmICgxVUxMIDw8 IDQ1KSA/IDQ1IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDQpID8gNDQgOiAoKG4pIC0gMSkgJiAo MVVMTCA8PCA0MykgPyA0MyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQyKSA/IDQyIDogKChuKSAt IDEpICYgKDFVTEwgPDwgNDEpID8gNDEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0MCkgPyA0MCA6 ICgobikgLSAxKSAmICgxVUxMIDw8IDM5KSA/IDM5IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzgp ID8gMzggOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzNykgPyAzNyA6ICgobikgLSAxKSAmICgxVUxM IDw8IDM2KSA/IDM2IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzUpID8gMzUgOiAoKG4pIC0gMSkg JiAoMVVMTCA8PCAzNCkgPyAzNCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDMzKSA/IDMzIDogKChu KSAtIDEpICYgKDFVTEwgPDwgMzIpID8gMzIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzMSkgPyAz MSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDMwKSA/IDMwIDogKChuKSAtIDEpICYgKDFVTEwgPDwg MjkpID8gMjkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyOCkgPyAyOCA6ICgobikgLSAxKSAmICgx VUxMIDw8IDI3KSA/IDI3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjYpID8gMjYgOiAoKG4pIC0g MSkgJiAoMVVMTCA8PCAyNSkgPyAyNSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDI0KSA/IDI0IDog KChuKSAtIDEpICYgKDFVTEwgPDwgMjMpID8gMjMgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyMikg PyAyMiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDIxKSA/IDIxIDogKChuKSAtIDEpICYgKDFVTEwg PDwgMjApID8gMjAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxOSkgPyAxOSA6ICgobikgLSAxKSAm ICgxVUxMIDw8IDE4KSA/IDE4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTcpID8gMTcgOiAoKG4p IC0gMSkgJiAoMVVMTCA8PCAxNikgPyAxNiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDE1KSA/IDE1 IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTQpID8gMTQgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAx MykgPyAxMyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDEyKSA/IDEyIDogKChuKSAtIDEpICYgKDFV TEwgPDwgMTEpID8gMTEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxMCkgPyAxMCA6ICgobikgLSAx KSAmICgxVUxMIDw8IDkpID8gOSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDgpID8gOCA6ICgobikg LSAxKSAmICgxVUxMIDw8IDcpID8gNyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYpID8gNiA6ICgo bikgLSAxKSAmICgxVUxMIDw8IDUpID8gNSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQpID8gNCA6 ICgobikgLSAxKSAmICgxVUxMIDw8IDMpID8gMyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDIpID8g MiA6IDEpIDogLTEpIDogKHNpemVvZigobikgLSAxKSA8PSA0KSA/IF9faWxvZzJfdTMyKChuKSAt IDEpIDogX19pbG9nMl91NjQoKG4pIC0gMSkgKSArIDEpIDogX19vcmRlcl9iYXNlXzIobikgKSAr IDE7CiByZXR1cm4gKCBfX2J1aWx0aW5fY29uc3RhbnRfcChuKSA/ICggKChuKSA9PSAwIHx8IChu KSA9PSAxKSA/IDAgOiAoIF9fYnVpbHRpbl9jb25zdGFudF9wKChuKSAtIDEpID8gKCBfX2J1aWx0 aW5fY29uc3RhbnRfcCgobikgLSAxKSA/ICggKChuKSAtIDEpIDwgMiA/IDAgOiAoKG4pIC0gMSkg JiAoMVVMTCA8PCA2MykgPyA2MyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYyKSA/IDYyIDogKChu KSAtIDEpICYgKDFVTEwgPDwgNjEpID8gNjEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA2MCkgPyA2 MCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDU5KSA/IDU5IDogKChuKSAtIDEpICYgKDFVTEwgPDwg NTgpID8gNTggOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1NykgPyA1NyA6ICgobikgLSAxKSAmICgx VUxMIDw8IDU2KSA/IDU2IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTUpID8gNTUgOiAoKG4pIC0g MSkgJiAoMVVMTCA8PCA1NCkgPyA1NCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDUzKSA/IDUzIDog KChuKSAtIDEpICYgKDFVTEwgPDwgNTIpID8gNTIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1MSkg PyA1MSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDUwKSA/IDUwIDogKChuKSAtIDEpICYgKDFVTEwg PDwgNDkpID8gNDkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0OCkgPyA0OCA6ICgobikgLSAxKSAm ICgxVUxMIDw8IDQ3KSA/IDQ3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDYpID8gNDYgOiAoKG4p IC0gMSkgJiAoMVVMTCA8PCA0NSkgPyA0NSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQ0KSA/IDQ0 IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDMpID8gNDMgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0 MikgPyA0MiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQxKSA/IDQxIDogKChuKSAtIDEpICYgKDFV TEwgPDwgNDApID8gNDAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzOSkgPyAzOSA6ICgobikgLSAx KSAmICgxVUxMIDw8IDM4KSA/IDM4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzcpID8gMzcgOiAo KG4pIC0gMSkgJiAoMVVMTCA8PCAzNikgPyAzNiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDM1KSA/ IDM1IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzQpID8gMzQgOiAoKG4pIC0gMSkgJiAoMVVMTCA8 PCAzMykgPyAzMyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDMyKSA/IDMyIDogKChuKSAtIDEpICYg KDFVTEwgPDwgMzEpID8gMzEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzMCkgPyAzMCA6ICgobikg LSAxKSAmICgxVUxMIDw8IDI5KSA/IDI5IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjgpID8gMjgg OiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyNykgPyAyNyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDI2 KSA/IDI2IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjUpID8gMjUgOiAoKG4pIC0gMSkgJiAoMVVM TCA8PCAyNCkgPyAyNCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDIzKSA/IDIzIDogKChuKSAtIDEp ICYgKDFVTEwgPDwgMjIpID8gMjIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyMSkgPyAyMSA6ICgo bikgLSAxKSAmICgxVUxMIDw8IDIwKSA/IDIwIDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTkpID8g MTkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxOCkgPyAxOCA6ICgobikgLSAxKSAmICgxVUxMIDw8 IDE3KSA/IDE3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTYpID8gMTYgOiAoKG4pIC0gMSkgJiAo MVVMTCA8PCAxNSkgPyAxNSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDE0KSA/IDE0IDogKChuKSAt IDEpICYgKDFVTEwgPDwgMTMpID8gMTMgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxMikgPyAxMiA6 ICgobikgLSAxKSAmICgxVUxMIDw8IDExKSA/IDExIDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTAp ID8gMTAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA5KSA/IDkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8 PCA4KSA/IDggOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA3KSA/IDcgOiAoKG4pIC0gMSkgJiAoMVVM TCA8PCA2KSA/IDYgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1KSA/IDUgOiAoKG4pIC0gMSkgJiAo MVVMTCA8PCA0KSA/IDQgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzKSA/IDMgOiAoKG4pIC0gMSkg JiAoMVVMTCA8PCAyKSA/IDIgOiAxKSA6IC0xKSA6IChzaXplb2YoKG4pIC0gMSkgPD0gNCkgPyBf X2lsb2cyX3UzMigobikgLSAxKSA6IF9faWxvZzJfdTY0KChuKSAtIDEpICkgKyAxKSA6IF9fb3Jk ZXJfYmFzZV8yKG4pICk7Cn0KIyAxNCAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCgojIDEg Ii4vaW5jbHVkZS9saW51eC9wcmludGsuaCIgMQoKCgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9r ZXJuX2xldmVscy5oIiAxCiMgOCAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIiAyCgojIDEgIi4v aW5jbHVkZS9saW51eC9jYWNoZS5oIiAxCgoKCgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2tl cm5lbC5oIiAxCgoKCgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3N5c2luZm8uaCIgMQoKCgoK CgoKc3RydWN0IHN5c2luZm8gewogX19rZXJuZWxfbG9uZ190IHVwdGltZTsKIF9fa2VybmVsX3Vs b25nX3QgbG9hZHNbM107CiBfX2tlcm5lbF91bG9uZ190IHRvdGFscmFtOwogX19rZXJuZWxfdWxv bmdfdCBmcmVlcmFtOwogX19rZXJuZWxfdWxvbmdfdCBzaGFyZWRyYW07CiBfX2tlcm5lbF91bG9u Z190IGJ1ZmZlcnJhbTsKIF9fa2VybmVsX3Vsb25nX3QgdG90YWxzd2FwOwogX19rZXJuZWxfdWxv bmdfdCBmcmVlc3dhcDsKIF9fdTE2IHByb2NzOwogX191MTYgcGFkOwogX19rZXJuZWxfdWxvbmdf dCB0b3RhbGhpZ2g7CiBfX2tlcm5lbF91bG9uZ190IGZyZWVoaWdoOwogX191MzIgbWVtX3VuaXQ7 CiBjaGFyIF9mWzIwLTIqc2l6ZW9mKF9fa2VybmVsX3Vsb25nX3QpLXNpemVvZihfX3UzMildOwp9 OwojIDYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2tlcm5lbC5oIiAyCiMgNiAiLi9pbmNsdWRlL2xp bnV4L2NhY2hlLmgiIDIKIyAxMCAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIiAyCgpleHRlcm4g Y29uc3QgY2hhciBsaW51eF9iYW5uZXJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIgbGludXhfcHJvY19i YW5uZXJbXTsKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IHByaW50a19nZXRfbGV2ZWwoY29uc3QgY2hhciAqYnVmZmVyKQp7CiBp ZiAoYnVmZmVyWzBdID09ICdcMDAxJyAmJiBidWZmZXJbMV0pIHsKICBzd2l0Y2ggKGJ1ZmZlclsx XSkgewogIGNhc2UgJzAnIC4uLiAnNyc6CiAgY2FzZSAnYyc6CiAgIHJldHVybiBidWZmZXJbMV07 CiAgfQogfQogcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGNvbnN0IGNoYXIgKnByaW50a19za2lwX2xldmVsKGNvbnN0 IGNoYXIgKmJ1ZmZlcikKewogaWYgKHByaW50a19nZXRfbGV2ZWwoYnVmZmVyKSkKICByZXR1cm4g YnVmZmVyICsgMjsKCiByZXR1cm4gYnVmZmVyOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjb25zdCBjaGFyICpwcmludGtfc2tpcF9o ZWFkZXJzKGNvbnN0IGNoYXIgKmJ1ZmZlcikKewogd2hpbGUgKHByaW50a19nZXRfbGV2ZWwoYnVm ZmVyKSkKICBidWZmZXIgPSBwcmludGtfc2tpcF9sZXZlbChidWZmZXIpOwoKIHJldHVybiBidWZm ZXI7Cn0KIyA2MiAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIgpleHRlcm4gaW50IGNvbnNvbGVf cHJpbnRrW107CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgY29uc29sZV9zaWxlbnQodm9pZCkKewogKGNvbnNvbGVfcHJp bnRrWzBdKSA9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgY29uc29sZV92ZXJib3NlKHZvaWQpCnsKIGlmICgoY29uc29s ZV9wcmludGtbMF0pKQogIChjb25zb2xlX3ByaW50a1swXSkgPSAxNTsKfQoKCgpleHRlcm4gY2hh ciBkZXZrbXNnX2xvZ19zdHJbXTsKc3RydWN0IGN0bF90YWJsZTsKCmV4dGVybiBpbnQgc3VwcHJl c3NfcHJpbnRrOwoKc3RydWN0IHZhX2Zvcm1hdCB7CiBjb25zdCBjaGFyICpmbXQ7CiB2YV9saXN0 ICp2YTsKfTsKIyAxNDIgIi4vaW5jbHVkZS9saW51eC9wcmludGsuaCIKZXh0ZXJuIF9fYXR0cmli dXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAxLCAyKSkpCnZvaWQgZWFybHlfcHJpbnRrKGNvbnN0 IGNoYXIgKmZtdCwgLi4uKTsKCgoKCgoKZXh0ZXJuIHZvaWQgcHJpbnRrX25taV9lbnRlcih2b2lk KTsKZXh0ZXJuIHZvaWQgcHJpbnRrX25taV9leGl0KHZvaWQpOwpleHRlcm4gdm9pZCBwcmludGtf bm1pX2RpcmVjdF9lbnRlcih2b2lkKTsKZXh0ZXJuIHZvaWQgcHJpbnRrX25taV9kaXJlY3RfZXhp dCh2b2lkKTsKIyAxNjIgIi4vaW5jbHVkZS9saW51eC9wcmludGsuaCIKIF9fYXR0cmlidXRlX18o KF9fZm9ybWF0X18ocHJpbnRmLCA1LCAwKSkpCmludCB2cHJpbnRrX2VtaXQoaW50IGZhY2lsaXR5 LCBpbnQgbGV2ZWwsCiAgIGNvbnN0IGNoYXIgKmRpY3QsIHNpemVfdCBkaWN0bGVuLAogICBjb25z dCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7CgogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhw cmludGYsIDEsIDApKSkKaW50IHZwcmludGsoY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3Mp OwoKIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAxLCAyKSkpIF9fYXR0cmlidXRl X18oKF9fY29sZF9fKSkKaW50IHByaW50ayhjb25zdCBjaGFyICpmbXQsIC4uLik7CgoKCgpfX2F0 dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMSwgMikpKSBfX2F0dHJpYnV0ZV9fKChfX2Nv bGRfXykpIGludCBwcmludGtfZGVmZXJyZWQoY29uc3QgY2hhciAqZm10LCAuLi4pOwoKCgoKCgpl eHRlcm4gaW50IF9fcHJpbnRrX3JhdGVsaW1pdChjb25zdCBjaGFyICpmdW5jKTsKCmV4dGVybiBi b29sIHByaW50a190aW1lZF9yYXRlbGltaXQodW5zaWduZWQgbG9uZyAqY2FsbGVyX2ppZmZpZXMs CiAgICAgICB1bnNpZ25lZCBpbnQgaW50ZXJ2YWxfbXNlYyk7CgpleHRlcm4gaW50IHByaW50a19k ZWxheV9tc2VjOwpleHRlcm4gaW50IGRtZXNnX3Jlc3RyaWN0OwoKZXh0ZXJuIGludApkZXZrbXNn X3N5c2N0bF9zZXRfbG9nbHZsKHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsIHZv aWQgKmJ1ZiwKICAgICBzaXplX3QgKmxlbnAsIGxvZmZfdCAqcHBvcyk7CgpleHRlcm4gdm9pZCB3 YWtlX3VwX2tsb2dkKHZvaWQpOwoKY2hhciAqbG9nX2J1Zl9hZGRyX2dldCh2b2lkKTsKdTMyIGxv Z19idWZfbGVuX2dldCh2b2lkKTsKdm9pZCBsb2dfYnVmX3ZtY29yZWluZm9fc2V0dXAodm9pZCk7 CnZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmli dXRlX18oKF9fY29sZF9fKSkgc2V0dXBfbG9nX2J1ZihpbnQgZWFybHkpOwpfX2F0dHJpYnV0ZV9f KChfX2Zvcm1hdF9fKHByaW50ZiwgMSwgMikpKSB2b2lkIGR1bXBfc3RhY2tfc2V0X2FyY2hfZGVz Yyhjb25zdCBjaGFyICpmbXQsIC4uLik7CnZvaWQgZHVtcF9zdGFja19wcmludF9pbmZvKGNvbnN0 IGNoYXIgKmxvZ19sdmwpOwp2b2lkIHNob3dfcmVnc19wcmludF9pbmZvKGNvbnN0IGNoYXIgKmxv Z19sdmwpOwpleHRlcm4gdm9pZCBkdW1wX3N0YWNrKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fY29s ZF9fKSk7CmV4dGVybiB2b2lkIHByaW50a19zYWZlX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHBy aW50a19zYWZlX2ZsdXNoKHZvaWQpOwpleHRlcm4gdm9pZCBwcmludGtfc2FmZV9mbHVzaF9vbl9w YW5pYyh2b2lkKTsKIyAyODUgIi4vaW5jbHVkZS9saW51eC9wcmludGsuaCIKZXh0ZXJuIGludCBr cHRyX3Jlc3RyaWN0OwojIDMzMSAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIgojIDEgIi4vaW5j bHVkZS9saW51eC9keW5hbWljX2RlYnVnLmgiIDEKIyAxNCAiLi9pbmNsdWRlL2xpbnV4L2R5bmFt aWNfZGVidWcuaCIKc3RydWN0IF9kZGVidWcgewoKCgoKIGNvbnN0IGNoYXIgKm1vZG5hbWU7CiBj b25zdCBjaGFyICpmdW5jdGlvbjsKIGNvbnN0IGNoYXIgKmZpbGVuYW1lOwogY29uc3QgY2hhciAq Zm9ybWF0OwogdW5zaWduZWQgaW50IGxpbmVubzoxODsKIyA0MCAiLi9pbmNsdWRlL2xpbnV4L2R5 bmFtaWNfZGVidWcuaCIKIHVuc2lnbmVkIGludCBmbGFnczo4OwoKIHVuaW9uIHsKICBzdHJ1Y3Qg c3RhdGljX2tleV90cnVlIGRkX2tleV90cnVlOwogIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIGRk X2tleV9mYWxzZTsKIH0ga2V5OwoKfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSk7CgoKCgpp bnQgZGRlYnVnX2FkZF9tb2R1bGUoc3RydWN0IF9kZGVidWcgKnRhYiwgdW5zaWduZWQgaW50IG4s CiAgICBjb25zdCBjaGFyICptb2RuYW1lKTsKZXh0ZXJuIGludCBkZGVidWdfcmVtb3ZlX21vZHVs ZShjb25zdCBjaGFyICptb2RfbmFtZSk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9f KHByaW50ZiwgMiwgMykpKQp2b2lkIF9fZHluYW1pY19wcl9kZWJ1ZyhzdHJ1Y3QgX2RkZWJ1ZyAq ZGVzY3JpcHRvciwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoKZXh0ZXJuIGludCBkZGVidWdfZHlu ZGJnX21vZHVsZV9wYXJhbV9jYihjaGFyICpwYXJhbSwgY2hhciAqdmFsLAogICAgIGNvbnN0IGNo YXIgKm1vZG5hbWUpOwoKc3RydWN0IGRldmljZTsKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zv cm1hdF9fKHByaW50ZiwgMywgNCkpKQp2b2lkIF9fZHluYW1pY19kZXZfZGJnKHN0cnVjdCBfZGRl YnVnICpkZXNjcmlwdG9yLCBjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsCiAgICAgICAgIGNvbnN0 IGNoYXIgKmZtdCwgLi4uKTsKCnN0cnVjdCBuZXRfZGV2aWNlOwoKZXh0ZXJuIF9fYXR0cmlidXRl X18oKF9fZm9ybWF0X18ocHJpbnRmLCAzLCA0KSkpCnZvaWQgX19keW5hbWljX25ldGRldl9kYmco c3RydWN0IF9kZGVidWcgKmRlc2NyaXB0b3IsCiAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Ug KmRldiwKICAgICBjb25zdCBjaGFyICpmbXQsIC4uLik7CgpzdHJ1Y3QgaWJfZGV2aWNlOwoKZXh0 ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAzLCA0KSkpCnZvaWQgX19keW5h bWljX2liZGV2X2RiZyhzdHJ1Y3QgX2RkZWJ1ZyAqZGVzY3JpcHRvciwKICAgIGNvbnN0IHN0cnVj dCBpYl9kZXZpY2UgKmliZGV2LAogICAgY29uc3QgY2hhciAqZm10LCAuLi4pOwojIDMzMiAiLi9p bmNsdWRlL2xpbnV4L3ByaW50ay5oIiAyCiMgNDc2ICIuL2luY2x1ZGUvbGludXgvcHJpbnRrLmgi CmV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGttc2dfZm9wczsKCmVudW0gewog RFVNUF9QUkVGSVhfTk9ORSwKIERVTVBfUFJFRklYX0FERFJFU1MsCiBEVU1QX1BSRUZJWF9PRkZT RVQKfTsKZXh0ZXJuIGludCBoZXhfZHVtcF90b19idWZmZXIoY29uc3Qgdm9pZCAqYnVmLCBzaXpl X3QgbGVuLCBpbnQgcm93c2l6ZSwKICAgICAgICAgaW50IGdyb3Vwc2l6ZSwgY2hhciAqbGluZWJ1 Ziwgc2l6ZV90IGxpbmVidWZsZW4sCiAgICAgICAgIGJvb2wgYXNjaWkpOwoKZXh0ZXJuIHZvaWQg cHJpbnRfaGV4X2R1bXAoY29uc3QgY2hhciAqbGV2ZWwsIGNvbnN0IGNoYXIgKnByZWZpeF9zdHIs CiAgICAgIGludCBwcmVmaXhfdHlwZSwgaW50IHJvd3NpemUsIGludCBncm91cHNpemUsCiAgICAg IGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgYm9vbCBhc2NpaSk7CiMgMTYgIi4vaW5jbHVk ZS9saW51eC9rZXJuZWwuaCIgMgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9kaXY2NC5o IiAxCiMgNzUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGl2NjQuaCIKIyAxICIuL2luY2x1ZGUv YXNtLWdlbmVyaWMvZGl2NjQuaCIgMQojIDc2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2RpdjY0 LmgiIDIKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHU2NCBtdWxfdTY0X3UzMl9kaXYodTY0IGEsIHUzMiBtdWwsIHUzMiBkaXYpCnsKIHU2 NCBxOwoKIGFzbSAoIm11bHEgJTI7IGRpdnEgJTMiIDogIj1hIiAocSkKICAgIDogImEiIChhKSwg InJtIiAoKHU2NCltdWwpLCAicm0iICgodTY0KWRpdikKICAgIDogInJkeCIpOwoKIHJldHVybiBx Owp9CiMgMTkgIi4vaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgojIDE5MSAiLi9pbmNsdWRlL2xp bnV4L2tlcm5lbC5oIgpzdHJ1Y3QgY29tcGxldGlvbjsKc3RydWN0IHB0X3JlZ3M7CnN0cnVjdCB1 c2VyOwojIDI0NyAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgogIHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19fbWlnaHRfc2xl ZXAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsCiAgICAgICBpbnQgcHJlZW1wdF9vZmZzZXQp IHsgfQogIHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgX19taWdodF9zbGVlcChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwKICAg ICAgIGludCBwcmVlbXB0X29mZnNldCkgeyB9CiMgMjk3ICIuL2luY2x1ZGUvbGludXgva2VybmVs LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHUzMiByZWNpcHJvY2FsX3NjYWxlKHUzMiB2YWwsIHUzMiBlcF9ybykKewogcmV0dXJuICh1 MzIpKCgodTY0KSB2YWwgKiBlcF9ybykgPj4gMzIpOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbWlnaHRfZmF1bHQo dm9pZCkgeyB9CgoKZXh0ZXJuIHN0cnVjdCBhdG9taWNfbm90aWZpZXJfaGVhZCBwYW5pY19ub3Rp Zmllcl9saXN0OwpleHRlcm4gbG9uZyAoKnBhbmljX2JsaW5rKShpbnQgc3RhdGUpOwpfX2F0dHJp YnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMSwgMikpKQp2b2lkIHBhbmljKGNvbnN0IGNoYXIg KmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKSBfX2F0dHJpYnV0ZV9fKChf X2NvbGRfXykpOwp2b2lkIG5taV9wYW5pYyhzdHJ1Y3QgcHRfcmVncyAqcmVncywgY29uc3QgY2hh ciAqbXNnKTsKZXh0ZXJuIHZvaWQgb29wc19lbnRlcih2b2lkKTsKZXh0ZXJuIHZvaWQgb29wc19l eGl0KHZvaWQpOwp2b2lkIHByaW50X29vcHNfZW5kX21hcmtlcih2b2lkKTsKZXh0ZXJuIGludCBv b3BzX21heV9wcmludCh2b2lkKTsKdm9pZCBkb19leGl0KGxvbmcgZXJyb3JfY29kZSkgX19hdHRy aWJ1dGVfXygoX19ub3JldHVybl9fKSk7CnZvaWQgY29tcGxldGVfYW5kX2V4aXQoc3RydWN0IGNv bXBsZXRpb24gKiwgbG9uZykgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7CgoKaW50IF9f YXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBfa3N0cnRvdWwoY29uc3QgY2hh ciAqcywgdW5zaWduZWQgaW50IGJhc2UsIHVuc2lnbmVkIGxvbmcgKnJlcyk7CmludCBfX2F0dHJp YnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgX2tzdHJ0b2woY29uc3QgY2hhciAqcywg dW5zaWduZWQgaW50IGJhc2UsIGxvbmcgKnJlcyk7CgppbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3VsbChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQg YmFzZSwgdW5zaWduZWQgbG9uZyBsb25nICpyZXMpOwppbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b2xsKGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBi YXNlLCBsb25nIGxvbmcgKnJlcyk7CiMgMzQ0ICIuL2luY2x1ZGUvbGludXgva2VybmVsLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvdWwoY29uc3Qg Y2hhciAqcywgdW5zaWduZWQgaW50IGJhc2UsIHVuc2lnbmVkIGxvbmcgKnJlcykKewoKCgoKIGlm IChzaXplb2YodW5zaWduZWQgbG9uZykgPT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZykgJiYK ICAgICBfX2FsaWdub2ZfXyh1bnNpZ25lZCBsb25nKSA9PSBfX2FsaWdub2ZfXyh1bnNpZ25lZCBs b25nIGxvbmcpKQogIHJldHVybiBrc3RydG91bGwocywgYmFzZSwgKHVuc2lnbmVkIGxvbmcgbG9u ZyAqKXJlcyk7CiBlbHNlCiAgcmV0dXJuIF9rc3RydG91bChzLCBiYXNlLCByZXMpOwp9CiMgMzcy ICIuL2luY2x1ZGUvbGludXgva2VybmVsLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51 c2VkX3Jlc3VsdF9fKSkga3N0cnRvbChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQgYmFzZSwg bG9uZyAqcmVzKQp7CgoKCgogaWYgKHNpemVvZihsb25nKSA9PSBzaXplb2YobG9uZyBsb25nKSAm JgogICAgIF9fYWxpZ25vZl9fKGxvbmcpID09IF9fYWxpZ25vZl9fKGxvbmcgbG9uZykpCiAgcmV0 dXJuIGtzdHJ0b2xsKHMsIGJhc2UsIChsb25nIGxvbmcgKilyZXMpOwogZWxzZQogIHJldHVybiBf a3N0cnRvbChzLCBiYXNlLCByZXMpOwp9CgppbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIGtzdHJ0b3VpbnQoY29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IGJhc2Us IHVuc2lnbmVkIGludCAqcmVzKTsKaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVz dWx0X18pKSBrc3RydG9pbnQoY29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IGJhc2UsIGludCAq cmVzKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0cnRv dTY0KGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBiYXNlLCB1NjQgKnJlcykKewogcmV0dXJu IGtzdHJ0b3VsbChzLCBiYXNlLCByZXMpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIGtzdHJ0b3M2NChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQgYmFz ZSwgczY0ICpyZXMpCnsKIHJldHVybiBrc3RydG9sbChzLCBiYXNlLCByZXMpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3UzMihjb25zdCBjaGFy ICpzLCB1bnNpZ25lZCBpbnQgYmFzZSwgdTMyICpyZXMpCnsKIHJldHVybiBrc3RydG91aW50KHMs IGJhc2UsIHJlcyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSkga3N0cnRvczMyKGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBiYXNlLCBzMzIgKnJlcykK ewogcmV0dXJuIGtzdHJ0b2ludChzLCBiYXNlLCByZXMpOwp9CgppbnQgX19hdHRyaWJ1dGVfXygo X193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3UxNihjb25zdCBjaGFyICpzLCB1bnNpZ25l ZCBpbnQgYmFzZSwgdTE2ICpyZXMpOwppbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9y ZXN1bHRfXykpIGtzdHJ0b3MxNihjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQgYmFzZSwgczE2 ICpyZXMpOwppbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0 b3U4KGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBiYXNlLCB1OCAqcmVzKTsKaW50IF9fYXR0 cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG9zOChjb25zdCBjaGFyICpz LCB1bnNpZ25lZCBpbnQgYmFzZSwgczggKnJlcyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvYm9vbChjb25zdCBjaGFyICpzLCBib29sICpyZXMpOwoK aW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG91bGxfZnJv bV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIHVu c2lnbmVkIGxvbmcgbG9uZyAqcmVzKTsKaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBrc3RydG9sbF9mcm9tX3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50 LCB1bnNpZ25lZCBpbnQgYmFzZSwgbG9uZyBsb25nICpyZXMpOwppbnQgX19hdHRyaWJ1dGVfXygo X193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3VsX2Zyb21fdXNlcihjb25zdCBjaGFyICpz LCBzaXplX3QgY291bnQsIHVuc2lnbmVkIGludCBiYXNlLCB1bnNpZ25lZCBsb25nICpyZXMpOwpp bnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b2xfZnJvbV91 c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIGxvbmcg KnJlcyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0cnRv dWludF9mcm9tX3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQg YmFzZSwgdW5zaWduZWQgaW50ICpyZXMpOwppbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIGtzdHJ0b2ludF9mcm9tX3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNv dW50LCB1bnNpZ25lZCBpbnQgYmFzZSwgaW50ICpyZXMpOwppbnQgX19hdHRyaWJ1dGVfXygoX193 YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3UxNl9mcm9tX3VzZXIoY29uc3QgY2hhciAqcywg c2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQgYmFzZSwgdTE2ICpyZXMpOwppbnQgX19hdHRyaWJ1 dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3MxNl9mcm9tX3VzZXIoY29uc3Qg Y2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQgYmFzZSwgczE2ICpyZXMpOwppbnQg X19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3U4X2Zyb21fdXNl cihjb25zdCBjaGFyICpzLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIGludCBiYXNlLCB1OCAqcmVz KTsKaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG9zOF9m cm9tX3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQgYmFzZSwg czggKnJlcyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0 cnRvYm9vbF9mcm9tX3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50LCBib29sICpyZXMp OwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG91NjRf ZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2Us IHU2NCAqcmVzKQp7CiByZXR1cm4ga3N0cnRvdWxsX2Zyb21fdXNlcihzLCBjb3VudCwgYmFzZSwg cmVzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3Ry dG9zNjRfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50 IGJhc2UsIHM2NCAqcmVzKQp7CiByZXR1cm4ga3N0cnRvbGxfZnJvbV91c2VyKHMsIGNvdW50LCBi YXNlLCByZXMpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IGtzdHJ0b3UzMl9mcm9tX3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25l ZCBpbnQgYmFzZSwgdTMyICpyZXMpCnsKIHJldHVybiBrc3RydG91aW50X2Zyb21fdXNlcihzLCBj b3VudCwgYmFzZSwgcmVzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVz dWx0X18pKSBrc3RydG9zMzJfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwg dW5zaWduZWQgaW50IGJhc2UsIHMzMiAqcmVzKQp7CiByZXR1cm4ga3N0cnRvaW50X2Zyb21fdXNl cihzLCBjb3VudCwgYmFzZSwgcmVzKTsKfQojIDQ1OSAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5o IgpleHRlcm4gdW5zaWduZWQgbG9uZyBzaW1wbGVfc3RydG91bChjb25zdCBjaGFyICosY2hhciAq Kix1bnNpZ25lZCBpbnQpOwpleHRlcm4gbG9uZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKixj aGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgc2ltcGxlX3N0 cnRvdWxsKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBsb25nIGxv bmcgc2ltcGxlX3N0cnRvbGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKCmV4 dGVybiBpbnQgbnVtX3RvX3N0cihjaGFyICpidWYsIGludCBzaXplLAogICAgICAgIHVuc2lnbmVk IGxvbmcgbG9uZyBudW0sIHVuc2lnbmVkIGludCB3aWR0aCk7CgoKCmV4dGVybiBfX2F0dHJpYnV0 ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKSBpbnQgc3ByaW50ZihjaGFyICpidWYsIGNv bnN0IGNoYXIgKiBmbXQsIC4uLik7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHBy aW50ZiwgMiwgMCkpKSBpbnQgdnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFyICosIHZhX2xp c3QpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKaW50 IHNucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsK ZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAzLCAwKSkpCmludCB2c25w cmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFy Z3MpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKaW50 IHNjbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIC4uLik7 CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgMCkpKQppbnQgdnNj bnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3Qg YXJncyk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKSBf X2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSkKY2hhciAqa2FzcHJpbnRmKGdmcF90IGdmcCwgY29u c3QgY2hhciAqZm10LCAuLi4pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmlu dGYsIDIsIDApKSkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpCmNoYXIgKmt2YXNwcmludGYo Z2ZwX3QgZ2ZwLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7CmV4dGVybiBfX2F0dHJp YnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMCkpKQpjb25zdCBjaGFyICprdmFzcHJpbnRm X2NvbnN0KGdmcF90IGdmcCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwoKZXh0ZXJu IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oc2NhbmYsIDIsIDMpKSkKaW50IHNzY2FuZihjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9y bWF0X18oc2NhbmYsIDIsIDApKSkKaW50IHZzc2NhbmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICosIHZhX2xpc3QpOwoKZXh0ZXJuIGludCBnZXRfb3B0aW9uKGNoYXIgKipzdHIsIGludCAqcGlu dCk7CmV4dGVybiBjaGFyICpnZXRfb3B0aW9ucyhjb25zdCBjaGFyICpzdHIsIGludCBuaW50cywg aW50ICppbnRzKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBtZW1wYXJzZShjb25zdCBjaGFy ICpwdHIsIGNoYXIgKipyZXRwdHIpOwpleHRlcm4gYm9vbCBwYXJzZV9vcHRpb25fc3RyKGNvbnN0 IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqb3B0aW9uKTsKZXh0ZXJuIGNoYXIgKm5leHRfYXJnKGNo YXIgKmFyZ3MsIGNoYXIgKipwYXJhbSwgY2hhciAqKnZhbCk7CgpleHRlcm4gaW50IGNvcmVfa2Vy bmVsX3RleHQodW5zaWduZWQgbG9uZyBhZGRyKTsKZXh0ZXJuIGludCBpbml0X2tlcm5lbF90ZXh0 KHVuc2lnbmVkIGxvbmcgYWRkcik7CmV4dGVybiBpbnQgY29yZV9rZXJuZWxfZGF0YSh1bnNpZ25l ZCBsb25nIGFkZHIpOwpleHRlcm4gaW50IF9fa2VybmVsX3RleHRfYWRkcmVzcyh1bnNpZ25lZCBs b25nIGFkZHIpOwpleHRlcm4gaW50IGtlcm5lbF90ZXh0X2FkZHJlc3ModW5zaWduZWQgbG9uZyBh ZGRyKTsKZXh0ZXJuIGludCBmdW5jX3B0cl9pc19rZXJuZWxfdGV4dCh2b2lkICpwdHIpOwoKdTY0 IGludF9wb3codTY0IGJhc2UsIHVuc2lnbmVkIGludCBleHApOwp1bnNpZ25lZCBsb25nIGludF9z cXJ0KHVuc2lnbmVkIGxvbmcpOwoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMyIGludF9zcXJ0NjQodTY0IHgpCnsKIHJldHVybiAo dTMyKWludF9zcXJ0KHgpOwp9CgoKZXh0ZXJuIHZvaWQgYnVzdF9zcGlubG9ja3MoaW50IHllcyk7 CmV4dGVybiBpbnQgb29wc19pbl9wcm9ncmVzczsKZXh0ZXJuIGludCBwYW5pY190aW1lb3V0Owpl eHRlcm4gdW5zaWduZWQgbG9uZyBwYW5pY19wcmludDsKZXh0ZXJuIGludCBwYW5pY19vbl9vb3Bz OwpleHRlcm4gaW50IHBhbmljX29uX3VucmVjb3ZlcmVkX25taTsKZXh0ZXJuIGludCBwYW5pY19v bl9pb19ubWk7CmV4dGVybiBpbnQgcGFuaWNfb25fd2FybjsKZXh0ZXJuIGludCBzeXNjdGxfcGFu aWNfb25fcmN1X3N0YWxsOwpleHRlcm4gaW50IHN5c2N0bF9wYW5pY19vbl9zdGFja292ZXJmbG93 OwoKZXh0ZXJuIGJvb2wgY3Jhc2hfa2V4ZWNfcG9zdF9ub3RpZmllcnM7CgoKCgoKCmV4dGVybiBh dG9taWNfdCBwYW5pY19jcHU7CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X2FyY2hfcGFuaWNfdGltZW91dChpbnQg dGltZW91dCwgaW50IGFyY2hfZGVmYXVsdF90aW1lb3V0KQp7CiBpZiAocGFuaWNfdGltZW91dCA9 PSBhcmNoX2RlZmF1bHRfdGltZW91dCkKICBwYW5pY190aW1lb3V0ID0gdGltZW91dDsKfQpleHRl cm4gY29uc3QgY2hhciAqcHJpbnRfdGFpbnRlZCh2b2lkKTsKZW51bSBsb2NrZGVwX29rIHsKIExP Q0tERVBfU1RJTExfT0ssCiBMT0NLREVQX05PV19VTlJFTElBQkxFCn07CmV4dGVybiB2b2lkIGFk ZF90YWludCh1bnNpZ25lZCBmbGFnLCBlbnVtIGxvY2tkZXBfb2spOwpleHRlcm4gaW50IHRlc3Rf dGFpbnQodW5zaWduZWQgZmxhZyk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF90YWludCh2b2lk KTsKZXh0ZXJuIGludCByb290X21vdW50ZmxhZ3M7CgpleHRlcm4gYm9vbCBlYXJseV9ib290X2ly cXNfZGlzYWJsZWQ7CgoKCgoKZXh0ZXJuIGVudW0gc3lzdGVtX3N0YXRlcyB7CiBTWVNURU1fQk9P VElORywKIFNZU1RFTV9TQ0hFRFVMSU5HLAogU1lTVEVNX1JVTk5JTkcsCiBTWVNURU1fSEFMVCwK IFNZU1RFTV9QT1dFUl9PRkYsCiBTWVNURU1fUkVTVEFSVCwKIFNZU1RFTV9TVVNQRU5ELAp9IHN5 c3RlbV9zdGF0ZTsKIyA1OTMgIi4vaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKc3RydWN0IHRhaW50 X2ZsYWcgewogY2hhciBjX3RydWU7CiBjaGFyIGNfZmFsc2U7CiBib29sIG1vZHVsZTsKfTsKCmV4 dGVybiBjb25zdCBzdHJ1Y3QgdGFpbnRfZmxhZyB0YWludF9mbGFnc1sxOF07CgpleHRlcm4gY29u c3QgY2hhciBoZXhfYXNjW107CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGNoYXIgKmhleF9ieXRlX3BhY2soY2hhciAqYnVmLCB1OCBi eXRlKQp7CiAqYnVmKysgPSBoZXhfYXNjWygoYnl0ZSkgJiAweGYwKSA+PiA0XTsKICpidWYrKyA9 IGhleF9hc2NbKChieXRlKSAmIDB4MGYpXTsKIHJldHVybiBidWY7Cn0KCmV4dGVybiBjb25zdCBj aGFyIGhleF9hc2NfdXBwZXJbXTsKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY2hhciAqaGV4X2J5dGVfcGFja191cHBlcihjaGFyICpi dWYsIHU4IGJ5dGUpCnsKICpidWYrKyA9IGhleF9hc2NfdXBwZXJbKChieXRlKSAmIDB4ZjApID4+ IDRdOwogKmJ1ZisrID0gaGV4X2FzY191cHBlclsoKGJ5dGUpICYgMHgwZildOwogcmV0dXJuIGJ1 ZjsKfQoKZXh0ZXJuIGludCBoZXhfdG9fYmluKGNoYXIgY2gpOwpleHRlcm4gaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBoZXgyYmluKHU4ICpkc3QsIGNvbnN0IGNo YXIgKnNyYywgc2l6ZV90IGNvdW50KTsKZXh0ZXJuIGNoYXIgKmJpbjJoZXgoY2hhciAqZHN0LCBj b25zdCB2b2lkICpzcmMsIHNpemVfdCBjb3VudCk7Cgpib29sIG1hY19wdG9uKGNvbnN0IGNoYXIg KnMsIHU4ICptYWMpOwojIDY0OSAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgplbnVtIGZ0cmFj ZV9kdW1wX21vZGUgewogRFVNUF9OT05FLAogRFVNUF9BTEwsCiBEVU1QX09SSUcsCn07CgoKdm9p ZCB0cmFjaW5nX29uKHZvaWQpOwp2b2lkIHRyYWNpbmdfb2ZmKHZvaWQpOwppbnQgdHJhY2luZ19p c19vbih2b2lkKTsKdm9pZCB0cmFjaW5nX3NuYXBzaG90KHZvaWQpOwp2b2lkIHRyYWNpbmdfc25h cHNob3RfYWxsb2Modm9pZCk7CgpleHRlcm4gdm9pZCB0cmFjaW5nX3N0YXJ0KHZvaWQpOwpleHRl cm4gdm9pZCB0cmFjaW5nX3N0b3Aodm9pZCk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHBy aW50ZiwgMSwgMikpKQp2b2lkIF9fX190cmFjZV9wcmludGtfY2hlY2tfZm9ybWF0KGNvbnN0IGNo YXIgKmZtdCwgLi4uKQp7Cn0KIyA3MjggIi4vaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKZXh0ZXJu IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpCmludCBfX3RyYWNlX2Jw cmludGsodW5zaWduZWQgbG9uZyBpcCwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoKZXh0ZXJuIF9f YXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpCmludCBfX3RyYWNlX3ByaW50 ayh1bnNpZ25lZCBsb25nIGlwLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CiMgNzY5ICIuL2luY2x1 ZGUvbGludXgva2VybmVsLmgiCmV4dGVybiBpbnQgX190cmFjZV9icHV0cyh1bnNpZ25lZCBsb25n IGlwLCBjb25zdCBjaGFyICpzdHIpOwpleHRlcm4gaW50IF9fdHJhY2VfcHV0cyh1bnNpZ25lZCBs b25nIGlwLCBjb25zdCBjaGFyICpzdHIsIGludCBzaXplKTsKCmV4dGVybiB2b2lkIHRyYWNlX2R1 bXBfc3RhY2soaW50IHNraXApOwojIDc5MSAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgpleHRl cm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDApKSkgaW50Cl9fZnRyYWNl X3ZicHJpbnRrKHVuc2lnbmVkIGxvbmcgaXAsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCk7 CgpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDApKSkgaW50Cl9f ZnRyYWNlX3ZwcmludGsodW5zaWduZWQgbG9uZyBpcCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0 IGFwKTsKCmV4dGVybiB2b2lkIGZ0cmFjZV9kdW1wKGVudW0gZnRyYWNlX2R1bXBfbW9kZSBvb3Bz X2R1bXBfbW9kZSk7CiMgMTAgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiIDIKIyAzMyAiLi9pbmNs dWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBJTklUX0xJU1RfSEVBRChzdHJ1Y3QgbGlzdF9oZWFkICps aXN0KQp7CiAoeyB1bmlvbiB7IHR5cGVvZihsaXN0LT5uZXh0KSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihsaXN0LT5uZXh0KSkgKGxpc3QpIH07IF9fd3Jp dGVfb25jZV9zaXplKCYobGlzdC0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihsaXN0LT5uZXh0KSk7 IF9fdS5fX3ZhbDsgfSk7CiBsaXN0LT5wcmV2ID0gbGlzdDsKfQoKCmV4dGVybiBib29sIF9fbGlz dF9hZGRfdmFsaWQoc3RydWN0IGxpc3RfaGVhZCAqbmV3LAogICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkICpwcmV2LAogICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0KTsKZXh0ZXJuIGJvb2wg X19saXN0X2RlbF9lbnRyeV92YWxpZChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSk7CiMgNjMgIi4v aW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19saXN0X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICpu ZXcsCiAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnByZXYsCiAgICAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgKm5leHQpCnsKIGlmICghX19saXN0X2FkZF92YWxpZChuZXcsIHByZXYsIG5leHQpKQog IHJldHVybjsKCiBuZXh0LT5wcmV2ID0gbmV3OwogbmV3LT5uZXh0ID0gbmV4dDsKIG5ldy0+cHJl diA9IHByZXY7CiAoeyB1bmlvbiB7IHR5cGVvZihwcmV2LT5uZXh0KSBfX3ZhbDsgY2hhciBfX2Nb MV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihwcmV2LT5uZXh0KSkgKG5ldykgfTsgX193 cml0ZV9vbmNlX3NpemUoJihwcmV2LT5uZXh0KSwgX191Ll9fYywgc2l6ZW9mKHByZXYtPm5leHQp KTsgX191Ll9fdmFsOyB9KTsKfQojIDg0ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxp c3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewog X19saXN0X2FkZChuZXcsIGhlYWQsIGhlYWQtPm5leHQpOwp9CiMgOTggIi4vaW5jbHVkZS9saW51 eC9saXN0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgbGlzdF9hZGRfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVj dCBsaXN0X2hlYWQgKmhlYWQpCnsKIF9fbGlzdF9hZGQobmV3LCBoZWFkLT5wcmV2LCBoZWFkKTsK fQojIDExMCAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2xpc3RfZGVsKHN0cnVjdCBs aXN0X2hlYWQgKiBwcmV2LCBzdHJ1Y3QgbGlzdF9oZWFkICogbmV4dCkKewogbmV4dC0+cHJldiA9 IHByZXY7CiAoeyB1bmlvbiB7IHR5cGVvZihwcmV2LT5uZXh0KSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihwcmV2LT5uZXh0KSkgKG5leHQpIH07IF9fd3Jp dGVfb25jZV9zaXplKCYocHJldi0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihwcmV2LT5uZXh0KSk7 IF9fdS5fX3ZhbDsgfSk7Cn0KIyAxMjQgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19s aXN0X2RlbF9jbGVhcnByZXYoc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpCnsKIF9fbGlzdF9kZWwo ZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKIGVudHJ5LT5wcmV2ID0gKCh2b2lkICopMCk7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgX19saXN0X2RlbF9lbnRyeShzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKewogaWYgKCFf X2xpc3RfZGVsX2VudHJ5X3ZhbGlkKGVudHJ5KSkKICByZXR1cm47CgogX19saXN0X2RlbChlbnRy eS0+cHJldiwgZW50cnktPm5leHQpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxpc3RfZGVsKHN0cnVjdCBsaXN0 X2hlYWQgKmVudHJ5KQp7CiBfX2xpc3RfZGVsX2VudHJ5KGVudHJ5KTsKIGVudHJ5LT5uZXh0ID0g KCh2b2lkICopIDB4MTAwICsgKDB4ZGVhZDAwMDAwMDAwMDAwMFVMKSk7CiBlbnRyeS0+cHJldiA9 ICgodm9pZCAqKSAweDEyMiArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpOwp9CiMgMTU4ICIuL2lu Y2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxpc3RfcmVwbGFjZShzdHJ1Y3QgbGlzdF9oZWFkICpv bGQsCiAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXcpCnsKIG5ldy0+bmV4dCA9IG9sZC0+bmV4dDsK IG5ldy0+bmV4dC0+cHJldiA9IG5ldzsKIG5ldy0+cHJldiA9IG9sZC0+cHJldjsKIG5ldy0+cHJl di0+bmV4dCA9IG5ldzsKfQojIDE3NCAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0 X3JlcGxhY2VfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICpvbGQsCiAgICAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgKm5ldykKewogbGlzdF9yZXBsYWNlKG9sZCwgbmV3KTsKIElOSVRfTElTVF9IRUFEKG9s ZCk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3N3YXAoc3RydWN0IGxpc3RfaGVhZCAqZW50cnkxLAogICAg ICAgIHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5MikKewogc3RydWN0IGxpc3RfaGVhZCAqcG9zID0g ZW50cnkyLT5wcmV2OwoKIGxpc3RfZGVsKGVudHJ5Mik7CiBsaXN0X3JlcGxhY2UoZW50cnkxLCBl bnRyeTIpOwogaWYgKHBvcyA9PSBlbnRyeTEpCiAgcG9zID0gZW50cnkyOwogbGlzdF9hZGQoZW50 cnkxLCBwb3MpOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X2RlbF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmVu dHJ5KQp7CiBfX2xpc3RfZGVsX2VudHJ5KGVudHJ5KTsKIElOSVRfTElTVF9IRUFEKGVudHJ5KTsK fQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGxpc3RfbW92ZShzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3QgbGlz dF9oZWFkICpoZWFkKQp7CiBfX2xpc3RfZGVsX2VudHJ5KGxpc3QpOwogbGlzdF9hZGQobGlzdCwg aGVhZCk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X21vdmVfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0 LAogICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiBfX2xpc3RfZGVsX2VudHJ5KGxpc3Qp OwogbGlzdF9hZGRfdGFpbChsaXN0LCBoZWFkKTsKfQojIDI0MCAiLi9pbmNsdWRlL2xpbnV4L2xp c3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBsaXN0X2J1bGtfbW92ZV90YWlsKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCiAg ICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqZmlyc3QsCiAgICAgICAgICAgc3RydWN0IGxpc3Rf aGVhZCAqbGFzdCkKewogZmlyc3QtPnByZXYtPm5leHQgPSBsYXN0LT5uZXh0OwogbGFzdC0+bmV4 dC0+cHJldiA9IGZpcnN0LT5wcmV2OwoKIGhlYWQtPnByZXYtPm5leHQgPSBmaXJzdDsKIGZpcnN0 LT5wcmV2ID0gaGVhZC0+cHJldjsKCiBsYXN0LT5uZXh0ID0gaGVhZDsKIGhlYWQtPnByZXYgPSBs YXN0Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBsaXN0X2lzX2ZpcnN0KGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxp c3QsCiAgICAgY29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogcmV0dXJuIGxpc3QtPnBy ZXYgPT0gaGVhZDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgbGlzdF9pc19sYXN0KGNvbnN0IHN0cnVjdCBsaXN0X2hl YWQgKmxpc3QsCiAgICBjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiByZXR1cm4gbGlz dC0+bmV4dCA9PSBoZWFkOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGxpc3RfZW1wdHkoY29uc3Qgc3RydWN0IGxpc3Rf aGVhZCAqaGVhZCkKewogcmV0dXJuICh7IHVuaW9uIHsgdHlwZW9mKGhlYWQtPm5leHQpIF9fdmFs OyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoaGVhZC0+bmV4 dCksIF9fdS5fX2MsIHNpemVvZihoZWFkLT5uZXh0KSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9u b2NoZWNrKCYoaGVhZC0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihoZWFkLT5uZXh0KSk7IGRvIHsg fSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSkgPT0gaGVhZDsKfQojIDI5OCAiLi9pbmNsdWRlL2xp bnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IGxpc3RfZW1wdHlfY2FyZWZ1bChjb25zdCBzdHJ1Y3QgbGlzdF9oZWFk ICpoZWFkKQp7CiBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0ID0gaGVhZC0+bmV4dDsKIHJldHVybiAo bmV4dCA9PSBoZWFkKSAmJiAobmV4dCA9PSBoZWFkLT5wcmV2KTsKfQoKCgoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9y b3RhdGVfbGVmdChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiBzdHJ1Y3QgbGlzdF9oZWFkICpm aXJzdDsKCiBpZiAoIWxpc3RfZW1wdHkoaGVhZCkpIHsKICBmaXJzdCA9IGhlYWQtPm5leHQ7CiAg bGlzdF9tb3ZlX3RhaWwoZmlyc3QsIGhlYWQpOwogfQp9CiMgMzI1ICIuL2luY2x1ZGUvbGludXgv bGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGxpc3Rfcm90YXRlX3RvX2Zyb250KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3Qs CiAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewoKCgoKCiBsaXN0X21vdmVfdGFpbChoZWFk LCBsaXN0KTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBsaXN0X2lzX3Npbmd1bGFyKGNvbnN0IHN0cnVjdCBsaXN0X2hl YWQgKmhlYWQpCnsKIHJldHVybiAhbGlzdF9lbXB0eShoZWFkKSAmJiAoaGVhZC0+bmV4dCA9PSBo ZWFkLT5wcmV2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2xpc3RfY3V0X3Bvc2l0aW9uKHN0cnVjdCBsaXN0X2hlYWQg Kmxpc3QsCiAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwgc3RydWN0IGxpc3RfaGVhZCAqZW50cnkp CnsKIHN0cnVjdCBsaXN0X2hlYWQgKm5ld19maXJzdCA9IGVudHJ5LT5uZXh0OwogbGlzdC0+bmV4 dCA9IGhlYWQtPm5leHQ7CiBsaXN0LT5uZXh0LT5wcmV2ID0gbGlzdDsKIGxpc3QtPnByZXYgPSBl bnRyeTsKIGVudHJ5LT5uZXh0ID0gbGlzdDsKIGhlYWQtPm5leHQgPSBuZXdfZmlyc3Q7CiBuZXdf Zmlyc3QtPnByZXYgPSBoZWFkOwp9CiMgMzcxICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGxpc3RfY3V0X3Bvc2l0aW9uKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCiAgc3RydWN0IGxpc3Rf aGVhZCAqaGVhZCwgc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpCnsKIGlmIChsaXN0X2VtcHR5KGhl YWQpKQogIHJldHVybjsKIGlmIChsaXN0X2lzX3Npbmd1bGFyKGhlYWQpICYmCiAgKGhlYWQtPm5l eHQgIT0gZW50cnkgJiYgaGVhZCAhPSBlbnRyeSkpCiAgcmV0dXJuOwogaWYgKGVudHJ5ID09IGhl YWQpCiAgSU5JVF9MSVNUX0hFQUQobGlzdCk7CiBlbHNlCiAgX19saXN0X2N1dF9wb3NpdGlvbihs aXN0LCBoZWFkLCBlbnRyeSk7Cn0KIyAzOTkgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg bGlzdF9jdXRfYmVmb3JlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCiAgICAgICBzdHJ1Y3QgbGlz dF9oZWFkICpoZWFkLAogICAgICAgc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpCnsKIGlmIChoZWFk LT5uZXh0ID09IGVudHJ5KSB7CiAgSU5JVF9MSVNUX0hFQUQobGlzdCk7CiAgcmV0dXJuOwogfQog bGlzdC0+bmV4dCA9IGhlYWQtPm5leHQ7CiBsaXN0LT5uZXh0LT5wcmV2ID0gbGlzdDsKIGxpc3Qt PnByZXYgPSBlbnRyeS0+cHJldjsKIGxpc3QtPnByZXYtPm5leHQgPSBsaXN0OwogaGVhZC0+bmV4 dCA9IGVudHJ5OwogZW50cnktPnByZXYgPSBoZWFkOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbGlzdF9zcGxpY2UoY29u c3Qgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwcmV2LAog ICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5leHQpCnsKIHN0cnVjdCBsaXN0X2hlYWQgKmZpcnN0ID0g bGlzdC0+bmV4dDsKIHN0cnVjdCBsaXN0X2hlYWQgKmxhc3QgPSBsaXN0LT5wcmV2OwoKIGZpcnN0 LT5wcmV2ID0gcHJldjsKIHByZXYtPm5leHQgPSBmaXJzdDsKCiBsYXN0LT5uZXh0ID0gbmV4dDsK IG5leHQtPnByZXYgPSBsYXN0Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9zcGxpY2UoY29uc3Qgc3RydWN0 IGxpc3RfaGVhZCAqbGlzdCwKICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKIGlmICghbGlz dF9lbXB0eShsaXN0KSkKICBfX2xpc3Rfc3BsaWNlKGxpc3QsIGhlYWQsIGhlYWQtPm5leHQpOwp9 CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgbGlzdF9zcGxpY2VfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAogICAg c3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogaWYgKCFsaXN0X2VtcHR5KGxpc3QpKQogIF9fbGlz dF9zcGxpY2UobGlzdCwgaGVhZC0+cHJldiwgaGVhZCk7Cn0KIyA0NjAgIi4vaW5jbHVkZS9saW51 eC9saXN0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgbGlzdF9zcGxpY2VfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAog ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKIGlmICghbGlzdF9lbXB0eShsaXN0KSkg ewogIF9fbGlzdF9zcGxpY2UobGlzdCwgaGVhZCwgaGVhZC0+bmV4dCk7CiAgSU5JVF9MSVNUX0hF QUQobGlzdCk7CiB9Cn0KIyA0NzcgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9z cGxpY2VfdGFpbF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCiAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgKmhlYWQpCnsKIGlmICghbGlzdF9lbXB0eShsaXN0KSkgewogIF9fbGlzdF9zcGxpY2Uo bGlzdCwgaGVhZC0+cHJldiwgaGVhZCk7CiAgSU5JVF9MSVNUX0hFQUQobGlzdCk7CiB9Cn0KIyA3 NjUgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgSU5JVF9ITElTVF9OT0RFKHN0cnVjdCBo bGlzdF9ub2RlICpoKQp7CiBoLT5uZXh0ID0gKCh2b2lkICopMCk7CiBoLT5wcHJldiA9ICgodm9p ZCAqKTApOwp9CiMgNzc5ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaGxpc3RfdW5oYXNo ZWQoY29uc3Qgc3RydWN0IGhsaXN0X25vZGUgKmgpCnsKIHJldHVybiAhaC0+cHByZXY7Cn0KIyA3 OTIgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBobGlzdF91bmhhc2hlZF9sb2NrbGVzcyhj b25zdCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqaCkKewogcmV0dXJuICEoeyB1bmlvbiB7IHR5cGVvZiho LT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3Np emUoJihoLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihoLT5wcHJldikpOyBlbHNlIF9fcmVhZF9v bmNlX3NpemVfbm9jaGVjaygmKGgtPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKGgtPnBwcmV2KSk7 IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaGxpc3RfZW1wdHko Y29uc3Qgc3RydWN0IGhsaXN0X2hlYWQgKmgpCnsKIHJldHVybiAhKHsgdW5pb24geyB0eXBlb2Yo aC0+Zmlyc3QpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9z aXplKCYoaC0+Zmlyc3QpLCBfX3UuX19jLCBzaXplb2YoaC0+Zmlyc3QpKTsgZWxzZSBfX3JlYWRf b25jZV9zaXplX25vY2hlY2soJihoLT5maXJzdCksIF9fdS5fX2MsIHNpemVvZihoLT5maXJzdCkp OyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9faGxpc3RfZGVsKHN0 cnVjdCBobGlzdF9ub2RlICpuKQp7CiBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbmV4dCA9IG4tPm5leHQ7 CiBzdHJ1Y3QgaGxpc3Rfbm9kZSAqKnBwcmV2ID0gbi0+cHByZXY7CgogKHsgdW5pb24geyB0eXBl b2YoKnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVv ZigqcHByZXYpKSAobmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqcHByZXYpLCBfX3UuX19j LCBzaXplb2YoKnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7CiBpZiAobmV4dCkKICAoeyB1bmlvbiB7 IHR5cGVvZihuZXh0LT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFs ID0gKCB0eXBlb2YobmV4dC0+cHByZXYpKSAocHByZXYpIH07IF9fd3JpdGVfb25jZV9zaXplKCYo bmV4dC0+cHByZXYpLCBfX3UuX19jLCBzaXplb2YobmV4dC0+cHByZXYpKTsgX191Ll9fdmFsOyB9 KTsKfQojIDgyMyAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9kZWwoc3RydWN0 IGhsaXN0X25vZGUgKm4pCnsKIF9faGxpc3RfZGVsKG4pOwogbi0+bmV4dCA9ICgodm9pZCAqKSAw eDEwMCArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpOwogbi0+cHByZXYgPSAoKHZvaWQgKikgMHgx MjIgKyAoMHhkZWFkMDAwMDAwMDAwMDAwVUwpKTsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9kZWxfaW5p dChzdHJ1Y3QgaGxpc3Rfbm9kZSAqbikKewogaWYgKCFobGlzdF91bmhhc2hlZChuKSkgewogIF9f aGxpc3RfZGVsKG4pOwogIElOSVRfSExJU1RfTk9ERShuKTsKIH0KfQojIDg1MiAiLi9pbmNsdWRl L2xpbnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9hZGRfaGVhZChzdHJ1Y3QgaGxpc3Rfbm9kZSAqbiwg c3RydWN0IGhsaXN0X2hlYWQgKmgpCnsKIHN0cnVjdCBobGlzdF9ub2RlICpmaXJzdCA9IGgtPmZp cnN0OwogKHsgdW5pb24geyB0eXBlb2Yobi0+bmV4dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+bmV4dCkpIChmaXJzdCkgfTsgX193cml0ZV9vbmNl X3NpemUoJihuLT5uZXh0KSwgX191Ll9fYywgc2l6ZW9mKG4tPm5leHQpKTsgX191Ll9fdmFsOyB9 KTsKIGlmIChmaXJzdCkKICAoeyB1bmlvbiB7IHR5cGVvZihmaXJzdC0+cHByZXYpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKGZpcnN0LT5wcHJldikpICgm bi0+bmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihmaXJzdC0+cHByZXYpLCBfX3UuX19jLCBz aXplb2YoZmlyc3QtPnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7CiAoeyB1bmlvbiB7IHR5cGVvZiho LT5maXJzdCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yo aC0+Zmlyc3QpKSAobikgfTsgX193cml0ZV9vbmNlX3NpemUoJihoLT5maXJzdCksIF9fdS5fX2Ms IHNpemVvZihoLT5maXJzdCkpOyBfX3UuX192YWw7IH0pOwogKHsgdW5pb24geyB0eXBlb2Yobi0+ cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4t PnBwcmV2KSkgKCZoLT5maXJzdCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5wcHJldiksIF9f dS5fX2MsIHNpemVvZihuLT5wcHJldikpOyBfX3UuX192YWw7IH0pOwp9CgoKCgoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxp c3RfYWRkX2JlZm9yZShzdHJ1Y3QgaGxpc3Rfbm9kZSAqbiwKICAgICAgICBzdHJ1Y3QgaGxpc3Rf bm9kZSAqbmV4dCkKewogKHsgdW5pb24geyB0eXBlb2Yobi0+cHByZXYpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4tPnBwcmV2KSkgKG5leHQtPnBwcmV2 KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKG4tPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG4tPnBw cmV2KSk7IF9fdS5fX3ZhbDsgfSk7CiAoeyB1bmlvbiB7IHR5cGVvZihuLT5uZXh0KSBfX3ZhbDsg Y2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5uZXh0KSkgKG5leHQp IH07IF9fd3JpdGVfb25jZV9zaXplKCYobi0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihuLT5uZXh0 KSk7IF9fdS5fX3ZhbDsgfSk7CiAoeyB1bmlvbiB7IHR5cGVvZihuZXh0LT5wcHJldikgX192YWw7 IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YobmV4dC0+cHByZXYpKSAo Jm4tPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobmV4dC0+cHByZXYpLCBfX3UuX19jLCBz aXplb2YobmV4dC0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKICh7IHVuaW9uIHsgdHlwZW9mKCoo bi0+cHByZXYpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVv ZigqKG4tPnBwcmV2KSkpIChuKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKCoobi0+cHByZXYpKSwg X191Ll9fYywgc2l6ZW9mKCoobi0+cHByZXYpKSk7IF9fdS5fX3ZhbDsgfSk7Cn0KCgoKCgoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBobGlzdF9hZGRfYmVoaW5kKHN0cnVjdCBobGlzdF9ub2RlICpuLAogICAgICAgIHN0cnVjdCBo bGlzdF9ub2RlICpwcmV2KQp7CiAoeyB1bmlvbiB7IHR5cGVvZihuLT5uZXh0KSBfX3ZhbDsgY2hh ciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5uZXh0KSkgKHByZXYtPm5l eHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobi0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihuLT5u ZXh0KSk7IF9fdS5fX3ZhbDsgfSk7CiAoeyB1bmlvbiB7IHR5cGVvZihwcmV2LT5uZXh0KSBfX3Zh bDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihwcmV2LT5uZXh0KSkg KG4pIH07IF9fd3JpdGVfb25jZV9zaXplKCYocHJldi0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihw cmV2LT5uZXh0KSk7IF9fdS5fX3ZhbDsgfSk7CiAoeyB1bmlvbiB7IHR5cGVvZihuLT5wcHJldikg X192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+cHByZXYp KSAoJnByZXYtPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobi0+cHByZXYpLCBfX3UuX19j LCBzaXplb2Yobi0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKCiBpZiAobi0+bmV4dCkKICAoeyB1 bmlvbiB7IHR5cGVvZihuLT5uZXh0LT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9 IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+bmV4dC0+cHByZXYpKSAoJm4tPm5leHQpIH07IF9fd3Jp dGVfb25jZV9zaXplKCYobi0+bmV4dC0+cHByZXYpLCBfX3UuX19jLCBzaXplb2Yobi0+bmV4dC0+ cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKfQojIDkwMCAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBobGlzdF9hZGRfZmFrZShzdHJ1Y3QgaGxpc3Rfbm9kZSAqbikKewogbi0+cHByZXYgPSAm bi0+bmV4dDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgaGxpc3RfZmFrZShzdHJ1Y3QgaGxpc3Rfbm9kZSAqaCkKewog cmV0dXJuIGgtPnBwcmV2ID09ICZoLT5uZXh0Owp9CiMgOTIyICIuL2luY2x1ZGUvbGludXgvbGlz dC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sCmhsaXN0X2lzX3Npbmd1bGFyX25vZGUoc3RydWN0IGhsaXN0X25vZGUgKm4sIHN0 cnVjdCBobGlzdF9oZWFkICpoKQp7CiByZXR1cm4gIW4tPm5leHQgJiYgbi0+cHByZXYgPT0gJmgt PmZpcnN0Owp9CiMgOTM2ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X21vdmVf bGlzdChzdHJ1Y3QgaGxpc3RfaGVhZCAqb2xkLAogICAgICAgc3RydWN0IGhsaXN0X2hlYWQgKm5l dykKewogbmV3LT5maXJzdCA9IG9sZC0+Zmlyc3Q7CiBpZiAobmV3LT5maXJzdCkKICBuZXctPmZp cnN0LT5wcHJldiA9ICZuZXctPmZpcnN0Owogb2xkLT5maXJzdCA9ICgodm9pZCAqKTApOwp9CiMg MTIgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiIDIKIyA3OCAiLi9pbmNsdWRlL2xpbnV4L3By ZWVtcHQuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3ByZWVtcHQuaCIgMQoKCgoKCiMg MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZXJjcHUuaCIgMQojIDg4ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL3BlcmNwdS5oIgpleHRlcm4gdm9pZCBfX2JhZF9wZXJjcHVfc2l6ZSh2b2lkKTsK IyA1MjQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGVyY3B1LmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgYm9vbCB4ODZfdGhpc19jcHVfY29uc3RhbnRfdGVzdF9iaXQodW5z aWduZWQgaW50IG5yLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25n ICphZGRyKQp7CiB1bnNpZ25lZCBsb25nICphID0KICAodW5zaWduZWQgbG9uZyAqKWFkZHIgKyBu ciAvIDY0OwoKCiByZXR1cm4gKCgxVUwgPDwgKG5yICUgNjQpKSAmICh7IHR5cGVvZigqYSkgcGZv X3JldF9fOyBzd2l0Y2ggKHNpemVvZigqYSkpIHsgY2FzZSAxOiBhc20gKCJtb3YiICJiICIiJSUi ImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iICgqYSkpOyBicmVh azsgY2FzZSAyOiBhc20gKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIi IChwZm9fcmV0X18pIDogIm0iICgqYSkpOyBicmVhazsgY2FzZSA0OiBhc20gKCJtb3YiICJsICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iICgqYSkpOyBi cmVhazsgY2FzZSA4OiBhc20gKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXIiIChwZm9fcmV0X18pIDogIm0iICgqYSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1 X3NpemUoKTsgfSBwZm9fcmV0X187IH0pKSAhPSAwOwoKCgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHg4Nl90aGlzX2NwdV92 YXJpYWJsZV90ZXN0X2JpdChpbnQgbnIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu c2lnbmVkIGxvbmcgKmFkZHIpCnsKIGJvb2wgb2xkYml0OwoKIGFzbSB2b2xhdGlsZSgiYnRsICIi JSUiImdzIiI6IiAiJSIgIjIiIiwlMSIKICAgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUg IiAiYyIgIiovXG4iCiAgIDogIj1AY2MiICJjIiAob2xkYml0KQogICA6ICJtIiAoKih1bnNpZ25l ZCBsb25nICopYWRkciksICJJciIgKG5yKSk7CgogcmV0dXJuIG9sZGJpdDsKfQoKCgoKCgoKIyAx ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcGVyY3B1LmgiIDEKCgoKCgojIDEgIi4vaW5jbHVkZS9s aW51eC90aHJlYWRzLmgiIDEKIyA3ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcGVyY3B1LmgiIDIK IyAxICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LWRlZnMuaCIgMQojIDMwOCAiLi9pbmNsdWRlL2xp bnV4L3BlcmNwdS1kZWZzLmgiCmV4dGVybiB2b2lkIF9fYmFkX3NpemVfY2FsbF9wYXJhbWV0ZXIo dm9pZCk7CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIF9fdGhpc19jcHVfcHJlZW1wdF9jaGVjayhjb25zdCBjaGFyICpvcCkg eyB9CiMgOCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3BlcmNwdS5oIiAyCiMgMTkgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9wZXJjcHUuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19wZXJfY3B1X29m ZnNldFs4XTsKIyA0OCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3BlcmNwdS5oIgpleHRlcm4gdm9p ZCBzZXR1cF9wZXJfY3B1X2FyZWFzKHZvaWQpOwojIDU1NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9wZXJjcHUuaCIgMgoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVy Y3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyh1bnNpZ25lZCBsb25nKSB0aGlzX2Nw dV9vZmY7CiMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcmVlbXB0LmgiIDIKIyAxICIuL2lu Y2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIgMQojIDEyICIuL2luY2x1ZGUvbGludXgvdGhyZWFk X2luZm8uaCIKIyAxICIuL2luY2x1ZGUvbGludXgvYnVnLmgiIDEKCgoKCiMgMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9idWcuaCIgMQojIDgzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2J1Zy5o IgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9idWcuaCIgMQojIDI0ICIuL2luY2x1ZGUvYXNt LWdlbmVyaWMvYnVnLmgiCnN0cnVjdCBidWdfZW50cnkgewoKCgogc2lnbmVkIGludCBidWdfYWRk cl9kaXNwOwoKCgoKCiBzaWduZWQgaW50IGZpbGVfZGlzcDsKCiB1bnNpZ25lZCBzaG9ydCBsaW5l OwoKIHVuc2lnbmVkIHNob3J0IGZsYWdzOwp9OwojIDg5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMv YnVnLmgiCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMSwgMikpKSB2 b2lkIF9fd2Fybl9wcmludGsoY29uc3QgY2hhciAqZm10LCAuLi4pOwojIDEwNSAiLi9pbmNsdWRl L2FzbS1nZW5lcmljL2J1Zy5oIgpzdHJ1Y3Qgd2Fybl9hcmdzOwpzdHJ1Y3QgcHRfcmVnczsKCnZv aWQgX193YXJuKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCB2b2lkICpjYWxsZXIsIHVuc2ln bmVkIHRhaW50LAogICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBzdHJ1Y3Qgd2Fybl9hcmdzICph cmdzKTsKIyA4NCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9idWcuaCIgMgojIDYgIi4vaW5jbHVk ZS9saW51eC9idWcuaCIgMgoKCgplbnVtIGJ1Z190cmFwX3R5cGUgewogQlVHX1RSQVBfVFlQRV9O T05FID0gMCwKIEJVR19UUkFQX1RZUEVfV0FSTiA9IDEsCiBCVUdfVFJBUF9UWVBFX0JVRyA9IDIs Cn07CgpzdHJ1Y3QgcHRfcmVnczsKIyAzNCAiLi9pbmNsdWRlL2xpbnV4L2J1Zy5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaXNf d2FybmluZ19idWcoY29uc3Qgc3RydWN0IGJ1Z19lbnRyeSAqYnVnKQp7CiByZXR1cm4gYnVnLT5m bGFncyAmICgxIDw8IDApOwp9CgpzdHJ1Y3QgYnVnX2VudHJ5ICpmaW5kX2J1Zyh1bnNpZ25lZCBs b25nIGJ1Z2FkZHIpOwoKZW51bSBidWdfdHJhcF90eXBlIHJlcG9ydF9idWcodW5zaWduZWQgbG9u ZyBidWdfYWRkciwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwoKCmludCBpc192YWxpZF9idWdhZGRy KHVuc2lnbmVkIGxvbmcgYWRkcik7Cgp2b2lkIGdlbmVyaWNfYnVnX2NsZWFyX29uY2Uodm9pZCk7 CiMgNzAgIi4vaW5jbHVkZS9saW51eC9idWcuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIGJvb2wgY2hlY2tfZGF0YV9jb3JydXB0aW9uKGJvb2wgdikgeyByZXR1cm4g djsgfQojIDEzICIuL2luY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIgMgojIDEgIi4vaW5jbHVk ZS9saW51eC9yZXN0YXJ0X2Jsb2NrLmgiIDEKIyAxMCAiLi9pbmNsdWRlL2xpbnV4L3Jlc3RhcnRf YmxvY2suaCIKIyAxICIuL2luY2x1ZGUvbGludXgvdGltZTY0LmgiIDEKCgoKCiMgMSAiLi9pbmNs dWRlL2xpbnV4L21hdGg2NC5oIiAxCiMgMjQgIi4vaW5jbHVkZS9saW51eC9tYXRoNjQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0 IGRpdl91NjRfcmVtKHU2NCBkaXZpZGVuZCwgdTMyIGRpdmlzb3IsIHUzMiAqcmVtYWluZGVyKQp7 CiAqcmVtYWluZGVyID0gZGl2aWRlbmQgJSBkaXZpc29yOwogcmV0dXJuIGRpdmlkZW5kIC8gZGl2 aXNvcjsKfQojIDM4ICIuL2luY2x1ZGUvbGludXgvbWF0aDY0LmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NCBkaXZfczY0X3JlbShz NjQgZGl2aWRlbmQsIHMzMiBkaXZpc29yLCBzMzIgKnJlbWFpbmRlcikKewogKnJlbWFpbmRlciA9 IGRpdmlkZW5kICUgZGl2aXNvcjsKIHJldHVybiBkaXZpZGVuZCAvIGRpdmlzb3I7Cn0KIyA1MiAi Li9pbmNsdWRlL2xpbnV4L21hdGg2NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQgZGl2NjRfdTY0X3JlbSh1NjQgZGl2aWRlbmQs IHU2NCBkaXZpc29yLCB1NjQgKnJlbWFpbmRlcikKewogKnJlbWFpbmRlciA9IGRpdmlkZW5kICUg ZGl2aXNvcjsKIHJldHVybiBkaXZpZGVuZCAvIGRpdmlzb3I7Cn0KIyA2NSAiLi9pbmNsdWRlL2xp bnV4L21hdGg2NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1NjQgZGl2NjRfdTY0KHU2NCBkaXZpZGVuZCwgdTY0IGRpdmlzb3IpCnsK IHJldHVybiBkaXZpZGVuZCAvIGRpdmlzb3I7Cn0KIyA3NyAiLi9pbmNsdWRlL2xpbnV4L21hdGg2 NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzNjQgZGl2NjRfczY0KHM2NCBkaXZpZGVuZCwgczY0IGRpdmlzb3IpCnsKIHJldHVybiBk aXZpZGVuZCAvIGRpdmlzb3I7Cn0KIyAxMjMgIi4vaW5jbHVkZS9saW51eC9tYXRoNjQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0 IGRpdl91NjQodTY0IGRpdmlkZW5kLCB1MzIgZGl2aXNvcikKewogdTMyIHJlbWFpbmRlcjsKIHJl dHVybiBkaXZfdTY0X3JlbShkaXZpZGVuZCwgZGl2aXNvciwgJnJlbWFpbmRlcik7Cn0KIyAxMzYg Ii4vaW5jbHVkZS9saW51eC9tYXRoNjQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IGRpdl9zNjQoczY0IGRpdmlkZW5kLCBzMzIg ZGl2aXNvcikKewogczMyIHJlbWFpbmRlcjsKIHJldHVybiBkaXZfczY0X3JlbShkaXZpZGVuZCwg ZGl2aXNvciwgJnJlbWFpbmRlcik7Cn0KCgp1MzIgaXRlcl9kaXZfdTY0X3JlbSh1NjQgZGl2aWRl bmQsIHUzMiBkaXZpc29yLCB1NjQgKnJlbWFpbmRlcik7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIHUzMgpfX2l0ZXJfZGl2X3U2NF9yZW0odTY0IGRpdmlkZW5kLCB1MzIgZGl2 aXNvciwgdTY0ICpyZW1haW5kZXIpCnsKIHUzMiByZXQgPSAwOwoKIHdoaWxlIChkaXZpZGVuZCA+ PSBkaXZpc29yKSB7CgoKICBhc20oIiIgOiAiK3JtIihkaXZpZGVuZCkpOwoKICBkaXZpZGVuZCAt PSBkaXZpc29yOwogIHJldCsrOwogfQoKICpyZW1haW5kZXIgPSBkaXZpZGVuZDsKCiByZXR1cm4g cmV0Owp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdTY0IG11bF91MzJfdTMyKHUzMiBhLCB1MzIgYikKewogcmV0dXJuICh1NjQp YSAqIGI7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1NjQgbXVsX3U2NF91MzJfc2hyKHU2NCBhLCB1MzIgbXVsLCB1bnNpZ25l ZCBpbnQgc2hpZnQpCnsKIHJldHVybiAodTY0KSgoKHVuc2lnbmVkIF9faW50MTI4KWEgKiBtdWwp ID4+IHNoaWZ0KTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB1NjQgbXVsX3U2NF91NjRfc2hyKHU2NCBhLCB1NjQgbXVsLCB1bnNp Z25lZCBpbnQgc2hpZnQpCnsKIHJldHVybiAodTY0KSgoKHVuc2lnbmVkIF9faW50MTI4KWEgKiBt dWwpID4+IHNoaWZ0KTsKfQojIDYgIi4vaW5jbHVkZS9saW51eC90aW1lNjQuaCIgMgoKdHlwZWRl ZiBfX3M2NCB0aW1lNjRfdDsKdHlwZWRlZiBfX3U2NCB0aW1ldTY0X3Q7CgojIDEgIi4vaW5jbHVk ZS91YXBpL2xpbnV4L3RpbWUuaCIgMQoKCgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvdGlt ZV90eXBlcy5oIiAxCgoKCgoKCnN0cnVjdCBfX2tlcm5lbF90aW1lc3BlYyB7CiBfX2tlcm5lbF90 aW1lNjRfdCB0dl9zZWM7CiBsb25nIGxvbmcgdHZfbnNlYzsKfTsKCnN0cnVjdCBfX2tlcm5lbF9p dGltZXJzcGVjIHsKIHN0cnVjdCBfX2tlcm5lbF90aW1lc3BlYyBpdF9pbnRlcnZhbDsKIHN0cnVj dCBfX2tlcm5lbF90aW1lc3BlYyBpdF92YWx1ZTsKfTsKIyAyNSAiLi9pbmNsdWRlL3VhcGkvbGlu dXgvdGltZV90eXBlcy5oIgpzdHJ1Y3QgX19rZXJuZWxfb2xkX3RpbWV2YWwgewogX19rZXJuZWxf bG9uZ190IHR2X3NlYzsKIF9fa2VybmVsX2xvbmdfdCB0dl91c2VjOwp9OwoKCnN0cnVjdCBfX2tl cm5lbF9vbGRfdGltZXNwZWMgewogX19rZXJuZWxfb2xkX3RpbWVfdCB0dl9zZWM7CiBsb25nIHR2 X25zZWM7Cn07CgpzdHJ1Y3QgX19rZXJuZWxfb2xkX2l0aW1lcnZhbCB7CiBzdHJ1Y3QgX19rZXJu ZWxfb2xkX3RpbWV2YWwgaXRfaW50ZXJ2YWw7CiBzdHJ1Y3QgX19rZXJuZWxfb2xkX3RpbWV2YWwg aXRfdmFsdWU7Cn07CgpzdHJ1Y3QgX19rZXJuZWxfc29ja190aW1ldmFsIHsKIF9fczY0IHR2X3Nl YzsKIF9fczY0IHR2X3VzZWM7Cn07CiMgNyAiLi9pbmNsdWRlL3VhcGkvbGludXgvdGltZS5oIiAy CiMgMzMgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3RpbWUuaCIKc3RydWN0IHRpbWV6b25lIHsKIGlu dCB0el9taW51dGVzd2VzdDsKIGludCB0el9kc3R0aW1lOwp9OwojIDExICIuL2luY2x1ZGUvbGlu dXgvdGltZTY0LmgiIDIKCnN0cnVjdCB0aW1lc3BlYzY0IHsKIHRpbWU2NF90IHR2X3NlYzsKIGxv bmcgdHZfbnNlYzsKfTsKCnN0cnVjdCBpdGltZXJzcGVjNjQgewogc3RydWN0IHRpbWVzcGVjNjQg aXRfaW50ZXJ2YWw7CiBzdHJ1Y3QgdGltZXNwZWM2NCBpdF92YWx1ZTsKfTsKIyA0OSAiLi9pbmNs dWRlL2xpbnV4L3RpbWU2NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGltZXNwZWM2NF9lcXVhbChjb25zdCBzdHJ1Y3QgdGlt ZXNwZWM2NCAqYSwKICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICpiKQp7CiByZXR1cm4g KGEtPnR2X3NlYyA9PSBiLT50dl9zZWMpICYmIChhLT50dl9uc2VjID09IGItPnR2X25zZWMpOwp9 CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludCB0aW1lc3BlYzY0X2NvbXBhcmUoY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKmxo cywgY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnJocykKewogaWYgKGxocy0+dHZfc2VjIDwgcmhz LT50dl9zZWMpCiAgcmV0dXJuIC0xOwogaWYgKGxocy0+dHZfc2VjID4gcmhzLT50dl9zZWMpCiAg cmV0dXJuIDE7CiByZXR1cm4gbGhzLT50dl9uc2VjIC0gcmhzLT50dl9uc2VjOwp9CgpleHRlcm4g dm9pZCBzZXRfbm9ybWFsaXplZF90aW1lc3BlYzY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cywgdGlt ZTY0X3Qgc2VjLCBzNjQgbnNlYyk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgdGltZXNwZWM2NCB0aW1lc3BlYzY0X2FkZChz dHJ1Y3QgdGltZXNwZWM2NCBsaHMsCiAgICAgIHN0cnVjdCB0aW1lc3BlYzY0IHJocykKewogc3Ry dWN0IHRpbWVzcGVjNjQgdHNfZGVsdGE7CiBzZXRfbm9ybWFsaXplZF90aW1lc3BlYzY0KCZ0c19k ZWx0YSwgbGhzLnR2X3NlYyArIHJocy50dl9zZWMsCiAgICBsaHMudHZfbnNlYyArIHJocy50dl9u c2VjKTsKIHJldHVybiB0c19kZWx0YTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHRpbWVzcGVjNjQgdGltZXNwZWM2 NF9zdWIoc3RydWN0IHRpbWVzcGVjNjQgbGhzLAogICAgICBzdHJ1Y3QgdGltZXNwZWM2NCByaHMp CnsKIHN0cnVjdCB0aW1lc3BlYzY0IHRzX2RlbHRhOwogc2V0X25vcm1hbGl6ZWRfdGltZXNwZWM2 NCgmdHNfZGVsdGEsIGxocy50dl9zZWMgLSByaHMudHZfc2VjLAogICAgbGhzLnR2X25zZWMgLSBy aHMudHZfbnNlYyk7CiByZXR1cm4gdHNfZGVsdGE7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGltZXNwZWM2NF92YWxp ZChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCnsKCiBpZiAodHMtPnR2X3NlYyA8IDApCiAg cmV0dXJuIGZhbHNlOwoKIGlmICgodW5zaWduZWQgbG9uZyl0cy0+dHZfbnNlYyA+PSAxMDAwMDAw MDAwTCkKICByZXR1cm4gZmFsc2U7CiByZXR1cm4gdHJ1ZTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0aW1lc3BlYzY0X3Zh bGlkX3N0cmljdChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCnsKIGlmICghdGltZXNwZWM2 NF92YWxpZCh0cykpCiAgcmV0dXJuIGZhbHNlOwoKIGlmICgodW5zaWduZWQgbG9uZyBsb25nKXRz LT50dl9zZWMgPj0gKCgoczY0KX4oKHU2NCkxIDw8IDYzKSkgLyAxMDAwMDAwMDAwTCkpCiAgcmV0 dXJuIGZhbHNlOwogcmV0dXJuIHRydWU7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGltZXNwZWM2NF92YWxpZF9zZXR0b2Qo Y29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzKQp7CiBpZiAoIXRpbWVzcGVjNjRfdmFsaWQodHMp KQogIHJldHVybiBmYWxzZTsKCiBpZiAoKHVuc2lnbmVkIGxvbmcgbG9uZyl0cy0+dHZfc2VjID49 ICgoKChzNjQpfigodTY0KTEgPDwgNjMpKSAvIDEwMDAwMDAwMDBMKSAtICgzMExMICogMzY1ICog MjQgKjM2MDApKSkKICByZXR1cm4gZmFsc2U7CiByZXR1cm4gdHJ1ZTsKfQojIDEzMyAiLi9pbmNs dWRlL2xpbnV4L3RpbWU2NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzNjQgdGltZXNwZWM2NF90b19ucyhjb25zdCBzdHJ1Y3QgdGlt ZXNwZWM2NCAqdHMpCnsKIHJldHVybiAoKHM2NCkgdHMtPnR2X3NlYyAqIDEwMDAwMDAwMDBMKSAr IHRzLT50dl9uc2VjOwp9CgoKCgoKCgpleHRlcm4gc3RydWN0IHRpbWVzcGVjNjQgbnNfdG9fdGlt ZXNwZWM2NChjb25zdCBzNjQgbnNlYyk7CiMgMTU0ICIuL2luY2x1ZGUvbGludXgvdGltZTY0Lmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCB0aW1lc3BlYzY0X2FkZF9u cyhzdHJ1Y3QgdGltZXNwZWM2NCAqYSwgdTY0IG5zKQp7CiBhLT50dl9zZWMgKz0gX19pdGVyX2Rp dl91NjRfcmVtKGEtPnR2X25zZWMgKyBucywgMTAwMDAwMDAwMEwsICZucyk7CiBhLT50dl9uc2Vj ID0gbnM7Cn0KCgoKCgpleHRlcm4gc3RydWN0IHRpbWVzcGVjNjQgdGltZXNwZWM2NF9hZGRfc2Fm ZShjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCBsaHMsCiAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3Bl YzY0IHJocyk7CiMgMTEgIi4vaW5jbHVkZS9saW51eC9yZXN0YXJ0X2Jsb2NrLmgiIDIKCnN0cnVj dCB0aW1lc3BlYzsKc3RydWN0IG9sZF90aW1lc3BlYzMyOwpzdHJ1Y3QgcG9sbGZkOwoKZW51bSB0 aW1lc3BlY190eXBlIHsKIFRUX05PTkUgPSAwLAogVFRfTkFUSVZFID0gMSwKIFRUX0NPTVBBVCA9 IDIsCn07CgoKCgpzdHJ1Y3QgcmVzdGFydF9ibG9jayB7CiBsb25nICgqZm4pKHN0cnVjdCByZXN0 YXJ0X2Jsb2NrICopOwogdW5pb24gewoKICBzdHJ1Y3QgewogICB1MzIgKnVhZGRyOwogICB1MzIg dmFsOwogICB1MzIgZmxhZ3M7CiAgIHUzMiBiaXRzZXQ7CiAgIHU2NCB0aW1lOwogICB1MzIgKnVh ZGRyMjsKICB9IGZ1dGV4OwoKICBzdHJ1Y3QgewogICBjbG9ja2lkX3QgY2xvY2tpZDsKICAgZW51 bSB0aW1lc3BlY190eXBlIHR5cGU7CiAgIHVuaW9uIHsKICAgIHN0cnVjdCBfX2tlcm5lbF90aW1l c3BlYyAqcm10cDsKICAgIHN0cnVjdCBvbGRfdGltZXNwZWMzMiAqY29tcGF0X3JtdHA7CiAgIH07 CiAgIHU2NCBleHBpcmVzOwogIH0gbmFub3NsZWVwOwoKICBzdHJ1Y3QgewogICBzdHJ1Y3QgcG9s bGZkICp1ZmRzOwogICBpbnQgbmZkczsKICAgaW50IGhhc190aW1lb3V0OwogICB1bnNpZ25lZCBs b25nIHR2X3NlYzsKICAgdW5zaWduZWQgbG9uZyB0dl9uc2VjOwogIH0gcG9sbDsKIH07Cn07Cgpl eHRlcm4gbG9uZyBkb19ub19yZXN0YXJ0X3N5c2NhbGwoc3RydWN0IHJlc3RhcnRfYmxvY2sgKnBh cm0pOwojIDE0ICIuL2luY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIgMgoKCgoKCgoKIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL2N1cnJlbnQuaCIgMQojIDkgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vY3VycmVudC5oIgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CgpleHRlcm4gX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIiIpKSkgX190eXBlb2ZfXyhzdHJ1Y3QgdGFza19z dHJ1Y3QgKikgY3VycmVudF90YXNrOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmdldF9jdXJyZW50KHZvaWQpCnsKIHJldHVybiAoeyB0eXBl b2YoY3VycmVudF90YXNrKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGN1cnJlbnRfdGFzaykp IHsgY2FzZSAxOiBhc20oIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiUDEiIiwlMCIgOiAiPXEi IChwZm9fcmV0X18pIDogInAiICgmKGN1cnJlbnRfdGFzaykpKTsgYnJlYWs7IGNhc2UgMjogYXNt KCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIlAxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6 ICJwIiAoJihjdXJyZW50X3Rhc2spKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSgibW92IiAibCAiIiUl IiJncyIiOiIgIiUiICJQMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAicCIgKCYoY3VycmVu dF90YXNrKSkpOyBicmVhazsgY2FzZSA4OiBhc20oIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAi UDEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogInAiICgmKGN1cnJlbnRfdGFzaykpKTsgYnJl YWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsKfQojIDIy ICIuL2luY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIgMgojIDMxICIuL2luY2x1ZGUvbGludXgv dGhyZWFkX2luZm8uaCIKZW51bSB7CiBCQURfU1RBQ0sgPSAtMSwKIE5PVF9TVEFDSyA9IDAsCiBH T09EX0ZSQU1FLAogR09PRF9TVEFDSywKfTsKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90 aHJlYWRfaW5mby5oIiAxCiMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8u aCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDEyICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3BhZ2UuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjQu aCIgMQojIDExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjQuaCIKZXh0ZXJuIHVuc2ln bmVkIGxvbmcgbWF4X3BmbjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGh5c19iYXNlOwoKZXh0ZXJu IHVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXRfYmFzZTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdm1h bGxvY19iYXNlOwpleHRlcm4gdW5zaWduZWQgbG9uZyB2bWVtbWFwX2Jhc2U7CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBs b25nIF9fcGh5c19hZGRyX25vZGVidWcodW5zaWduZWQgbG9uZyB4KQp7CiB1bnNpZ25lZCBsb25n IHkgPSB4IC0gKDB4ZmZmZmZmZmY4MDAwMDAwMFVMKTsKCgogeCA9IHkgKyAoKHggPiB5KSA/IHBo eXNfYmFzZSA6ICgoMHhmZmZmZmZmZjgwMDAwMDAwVUwpIC0gKCh1bnNpZ25lZCBsb25nKXBhZ2Vf b2Zmc2V0X2Jhc2UpKSk7CgogcmV0dXJuIHg7Cn0KIyA0MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9wYWdlXzY0LmgiCnZvaWQgY2xlYXJfcGFnZV9vcmlnKHZvaWQgKnBhZ2UpOwp2b2lkIGNsZWFy X3BhZ2VfcmVwKHZvaWQgKnBhZ2UpOwp2b2lkIGNsZWFyX3BhZ2VfZXJtcyh2b2lkICpwYWdlKTsK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgY2xlYXJfcGFnZSh2b2lkICpwYWdlKQp7CiBhc20gX19pbmxpbmUgdm9sYXRpbGUgKCIj IEFMVDogb2xkaW5zdHIyXG4iICI2NjE6XG5cdCIgImNhbGwgJVBbb2xkXSIgIlxuNjYyOlxuIiAi IyBBTFQ6IHBhZGRpbmcyXG4iICIuc2tpcCAtKCgiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIi ZiIgIikgXiAoKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCIgIjY2NSIiMiIiZi0i IjY2NCIiMiIiZiIgIikpICYgLSgtKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIDwgKCIg IjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIgIikpKSkpIiAiIC0gKCIgIjY2MmItNjYxYiIgIikpID4g MCkgKiAiICIoIiAiKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCgoIiAiNjY1IiIx IiJmLSIiNjY0IiIxIiJmIiAiKSBeICgiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICIpKSAmIC0o LSgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSA8ICgiICI2NjUiIjIiImYtIiI2NjQiIjIi ImYiICIpKSkpKSIgIiAtICgiICI2NjJiLTY2MWIiICIpKSwgMHg5MFxuIiAiNjYzIiAiOlxuIiAi LnB1c2hzZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAubG9uZyA2NjFiIC0gLlxu IiAiIC5sb25nICIgIjY2NCIiMSIiZiAtIC5cbiIgIiAud29yZCAiICIoIDMqMzIrMTYpIiAiXG4i ICIgLmJ5dGUgIiAiNjYzIiJiLTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQi IjEiImYiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYyYiIgIlxuIiAiIC5sb25nIDY2MWIgLSAu XG4iICIgLmxvbmcgIiAiNjY0IiIyIiJmIC0gLlxuIiAiIC53b3JkICIgIiggOSozMisgOSkiICJc biIgIiAuYnl0ZSAiICI2NjMiImItNjYxYiIgIlxuIiAiIC5ieXRlICIgIjY2NSIiMiIiZi0iIjY2 NCIiMiIiZiIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjJiIiAiXG4iICIucG9wc2VjdGlvblxu IiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgXCJheFwiXG4iICIjIEFMVDog cmVwbGFjZW1lbnQgIiAiMSIgIlxuIiAiNjY0IiIxIiI6XG5cdCIgImNhbGwgJVBbbmV3MV0iICJc biIgIjY2NSIiMSIgIjpcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIyIiAiXG4iICI2NjQiIjIi Ijpcblx0IiAiY2FsbCAlUFtuZXcyXSIgIlxuIiAiNjY1IiIyIiAiOlxuIiAiLnBvcHNlY3Rpb25c biIgOiAiPUQiIChwYWdlKSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6IFtvbGRdICJp IiAoY2xlYXJfcGFnZV9vcmlnKSwgW25ldzFdICJpIiAoY2xlYXJfcGFnZV9yZXApLCBbbmV3Ml0g ImkiIChjbGVhcl9wYWdlX2VybXMpLCAiMCIgKHBhZ2UpIDogImNjIiwgIm1lbW9yeSIsICJyYXgi LCAicmN4IikKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cn0KCnZv aWQgY29weV9wYWdlKHZvaWQgKnRvLCB2b2lkICpmcm9tKTsKIyAxMyAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9wYWdlLmgiIDIKCgoKCgoKc3RydWN0IHBhZ2U7CgojIDEgIi4vaW5jbHVkZS9saW51 eC9yYW5nZS5oIiAxCgoKCgpzdHJ1Y3QgcmFuZ2UgewogdTY0IHN0YXJ0OwogdTY0IGVuZDsKfTsK CmludCBhZGRfcmFuZ2Uoc3RydWN0IHJhbmdlICpyYW5nZSwgaW50IGF6LCBpbnQgbnJfcmFuZ2Us CiAgdTY0IHN0YXJ0LCB1NjQgZW5kKTsKCgppbnQgYWRkX3JhbmdlX3dpdGhfbWVyZ2Uoc3RydWN0 IHJhbmdlICpyYW5nZSwgaW50IGF6LCBpbnQgbnJfcmFuZ2UsCiAgICB1NjQgc3RhcnQsIHU2NCBl bmQpOwoKdm9pZCBzdWJ0cmFjdF9yYW5nZShzdHJ1Y3QgcmFuZ2UgKnJhbmdlLCBpbnQgYXosIHU2 NCBzdGFydCwgdTY0IGVuZCk7CgppbnQgY2xlYW5fc29ydF9yYW5nZShzdHJ1Y3QgcmFuZ2UgKnJh bmdlLCBpbnQgYXopOwoKdm9pZCBzb3J0X3JhbmdlKHN0cnVjdCByYW5nZSAqcmFuZ2UsIGludCBu cl9yYW5nZSk7CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgcmVzb3VyY2Vfc2l6ZV90IGNhcF9yZXNvdXJjZSh1NjQgdmFsKQp7CiBpZiAo dmFsID4gKChyZXNvdXJjZV9zaXplX3QpfjApKQogIHJldHVybiAoKHJlc291cmNlX3NpemVfdCl+ MCk7CgogcmV0dXJuIHZhbDsKfQojIDIyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2UuaCIg MgpleHRlcm4gc3RydWN0IHJhbmdlIHBmbl9tYXBwZWRbXTsKZXh0ZXJuIGludCBucl9wZm5fbWFw cGVkOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBjbGVhcl91c2VyX3BhZ2Uodm9pZCAqcGFnZSwgdW5zaWduZWQgbG9uZyB2YWRk ciwKICAgICAgIHN0cnVjdCBwYWdlICpwZykKewogY2xlYXJfcGFnZShwYWdlKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBj b3B5X3VzZXJfcGFnZSh2b2lkICp0bywgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyB2YWRkciwK ICAgICAgc3RydWN0IHBhZ2UgKnRvcGFnZSkKewogY29weV9wYWdlKHRvLCBmcm9tKTsKfQojIDcx ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2UuaCIKZXh0ZXJuIGJvb2wgX192aXJ0X2FkZHJf dmFsaWQodW5zaWduZWQgbG9uZyBrYWRkcik7CgoKCgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9tZW1vcnlfbW9kZWwuaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvcGZuLmgiIDEKIyAx MyAiLi9pbmNsdWRlL2xpbnV4L3Bmbi5oIgp0eXBlZGVmIHN0cnVjdCB7CiB1NjQgdmFsOwp9IHBm bl90OwojIDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9tZW1vcnlfbW9kZWwuaCIgMgojIDc3ICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2UuaCIgMgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9nZXRvcmRlci5oIiAxCiMgMjkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9nZXRvcmRlci5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKSBpbnQgZ2V0X29yZGVyKHVuc2lnbmVkIGxvbmcgc2l6 ZSkKewogaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpKSB7CiAgaWYgKCFzaXplKQogICBy ZXR1cm4gNjQgLSAxMjsKCiAgaWYgKHNpemUgPCAoMVVMIDw8IDEyKSkKICAgcmV0dXJuIDA7Cgog IHJldHVybiAoIF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplKSAtIDEpID8gKCBfX2J1aWx0aW5f Y29uc3RhbnRfcCgoc2l6ZSkgLSAxKSA/ICggKChzaXplKSAtIDEpIDwgMiA/IDAgOiAoKHNpemUp IC0gMSkgJiAoMVVMTCA8PCA2MykgPyA2MyA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDYyKSA/ IDYyIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNjEpID8gNjEgOiAoKHNpemUpIC0gMSkgJiAo MVVMTCA8PCA2MCkgPyA2MCA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDU5KSA/IDU5IDogKChz aXplKSAtIDEpICYgKDFVTEwgPDwgNTgpID8gNTggOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1 NykgPyA1NyA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDU2KSA/IDU2IDogKChzaXplKSAtIDEp ICYgKDFVTEwgPDwgNTUpID8gNTUgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1NCkgPyA1NCA6 ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDUzKSA/IDUzIDogKChzaXplKSAtIDEpICYgKDFVTEwg PDwgNTIpID8gNTIgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1MSkgPyA1MSA6ICgoc2l6ZSkg LSAxKSAmICgxVUxMIDw8IDUwKSA/IDUwIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNDkpID8g NDkgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA0OCkgPyA0OCA6ICgoc2l6ZSkgLSAxKSAmICgx VUxMIDw8IDQ3KSA/IDQ3IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNDYpID8gNDYgOiAoKHNp emUpIC0gMSkgJiAoMVVMTCA8PCA0NSkgPyA0NSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDQ0 KSA/IDQ0IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNDMpID8gNDMgOiAoKHNpemUpIC0gMSkg JiAoMVVMTCA8PCA0MikgPyA0MiA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDQxKSA/IDQxIDog KChzaXplKSAtIDEpICYgKDFVTEwgPDwgNDApID8gNDAgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8 PCAzOSkgPyAzOSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDM4KSA/IDM4IDogKChzaXplKSAt IDEpICYgKDFVTEwgPDwgMzcpID8gMzcgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzNikgPyAz NiA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDM1KSA/IDM1IDogKChzaXplKSAtIDEpICYgKDFV TEwgPDwgMzQpID8gMzQgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzMykgPyAzMyA6ICgoc2l6 ZSkgLSAxKSAmICgxVUxMIDw8IDMyKSA/IDMyIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMzEp ID8gMzEgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzMCkgPyAzMCA6ICgoc2l6ZSkgLSAxKSAm ICgxVUxMIDw8IDI5KSA/IDI5IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMjgpID8gMjggOiAo KHNpemUpIC0gMSkgJiAoMVVMTCA8PCAyNykgPyAyNyA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8 IDI2KSA/IDI2IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMjUpID8gMjUgOiAoKHNpemUpIC0g MSkgJiAoMVVMTCA8PCAyNCkgPyAyNCA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDIzKSA/IDIz IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMjIpID8gMjIgOiAoKHNpemUpIC0gMSkgJiAoMVVM TCA8PCAyMSkgPyAyMSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDIwKSA/IDIwIDogKChzaXpl KSAtIDEpICYgKDFVTEwgPDwgMTkpID8gMTkgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAxOCkg PyAxOCA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDE3KSA/IDE3IDogKChzaXplKSAtIDEpICYg KDFVTEwgPDwgMTYpID8gMTYgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAxNSkgPyAxNSA6ICgo c2l6ZSkgLSAxKSAmICgxVUxMIDw8IDE0KSA/IDE0IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwg MTMpID8gMTMgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAxMikgPyAxMiA6ICgoc2l6ZSkgLSAx KSAmICgxVUxMIDw8IDExKSA/IDExIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMTApID8gMTAg OiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA5KSA/IDkgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8 PCA4KSA/IDggOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA3KSA/IDcgOiAoKHNpemUpIC0gMSkg JiAoMVVMTCA8PCA2KSA/IDYgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1KSA/IDUgOiAoKHNp emUpIC0gMSkgJiAoMVVMTCA8PCA0KSA/IDQgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzKSA/ IDMgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAyKSA/IDIgOiAxKSA6IC0xKSA6IChzaXplb2Yo KHNpemUpIC0gMSkgPD0gNCkgPyBfX2lsb2cyX3UzMigoc2l6ZSkgLSAxKSA6IF9faWxvZzJfdTY0 KChzaXplKSAtIDEpICkgLSAxMiArIDE7CiB9Cgogc2l6ZS0tOwogc2l6ZSA+Pj0gMTI7CgoKCiBy ZXR1cm4gZmxzNjQoc2l6ZSk7Cgp9CiMgNzggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZS5o IiAyCiMgMTMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCIgMgoKIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVzLmgiIDEKIyAxNSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIiAyCiMgNTIgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vdGhyZWFkX2luZm8uaCIKc3RydWN0IHRhc2tfc3RydWN0OwojIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vcHJvY2Vzc29yLmgiIDEKCgoKCgoKCnN0cnVjdCB0YXNrX3N0cnVjdDsKc3RydWN0IG1t X3N0cnVjdDsKc3RydWN0IGlvX2JpdG1hcDsKc3RydWN0IHZtODY7CgojIDEgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vbWF0aF9lbXUuaCIgMQojIDExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21h dGhfZW11LmgiCnN0cnVjdCBtYXRoX2VtdV9pbmZvIHsKIGxvbmcgX19fb3JpZ19laXA7CiBzdHJ1 Y3QgcHRfcmVncyAqcmVnczsKfTsKIyAxNCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNz b3IuaCIgMgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVz LmgiIDEKIyAxNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi4v YXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaWdjb250ZXh0LmgiIDEKIyA0MCAiLi9hcmNoL3g4 Ni9pbmNsdWRlL3VhcGkvYXNtL3NpZ2NvbnRleHQuaCIKc3RydWN0IF9mcHhfc3dfYnl0ZXMgewoK CgoKIF9fdTMyIG1hZ2ljMTsKIyA1NCAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3NpZ2Nv bnRleHQuaCIKIF9fdTMyIGV4dGVuZGVkX3NpemU7CgoKCgoKIF9fdTY0IHhmZWF0dXJlczsKCgoK CgogX191MzIgeHN0YXRlX3NpemU7CgoKIF9fdTMyIHBhZGRpbmdbN107Cn07CiMgODUgIi4vYXJj aC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaWdjb250ZXh0LmgiCnN0cnVjdCBfZnByZWcgewogX191 MTYgc2lnbmlmaWNhbmRbNF07CiBfX3UxNiBleHBvbmVudDsKfTsKCgpzdHJ1Y3QgX2ZweHJlZyB7 CiBfX3UxNiBzaWduaWZpY2FuZFs0XTsKIF9fdTE2IGV4cG9uZW50OwogX191MTYgcGFkZGluZ1sz XTsKfTsKCgpzdHJ1Y3QgX3htbXJlZyB7CiBfX3UzMiBlbGVtZW50WzRdOwp9OwoKCgoKCgpzdHJ1 Y3QgX2Zwc3RhdGVfMzIgewoKIF9fdTMyIGN3OwogX191MzIgc3c7CiBfX3UzMiB0YWc7CiBfX3Uz MiBpcG9mZjsKIF9fdTMyIGNzc2VsOwogX191MzIgZGF0YW9mZjsKIF9fdTMyIGRhdGFzZWw7CiBz dHJ1Y3QgX2ZwcmVnIF9zdFs4XTsKIF9fdTE2IHN0YXR1czsKIF9fdTE2IG1hZ2ljOwoKCgogX191 MzIgX2Z4c3JfZW52WzZdOwogX191MzIgbXhjc3I7CiBfX3UzMiByZXNlcnZlZDsKIHN0cnVjdCBf ZnB4cmVnIF9meHNyX3N0WzhdOwogc3RydWN0IF94bW1yZWcgX3htbVs4XTsKIHVuaW9uIHsKICBf X3UzMiBwYWRkaW5nMVs0NF07CiAgX191MzIgcGFkZGluZ1s0NF07CiB9OwoKIHVuaW9uIHsKICBf X3UzMiBwYWRkaW5nMlsxMl07CiAgc3RydWN0IF9mcHhfc3dfYnl0ZXMgc3dfcmVzZXJ2ZWQ7CiB9 Owp9OwojIDE0OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3NpZ2NvbnRleHQuaCIKc3Ry dWN0IF9mcHN0YXRlXzY0IHsKIF9fdTE2IGN3ZDsKIF9fdTE2IHN3ZDsKCiBfX3UxNiB0d2Q7CiBf X3UxNiBmb3A7CiBfX3U2NCByaXA7CiBfX3U2NCByZHA7CiBfX3UzMiBteGNzcjsKIF9fdTMyIG14 Y3NyX21hc2s7CiBfX3UzMiBzdF9zcGFjZVszMl07CiBfX3UzMiB4bW1fc3BhY2VbNjRdOwogX191 MzIgcmVzZXJ2ZWQyWzEyXTsKIHVuaW9uIHsKICBfX3UzMiByZXNlcnZlZDNbMTJdOwogIHN0cnVj dCBfZnB4X3N3X2J5dGVzIHN3X3Jlc2VydmVkOwogfTsKfTsKCgoKCgoKCnN0cnVjdCBfaGVhZGVy IHsKIF9fdTY0IHhmZWF0dXJlczsKIF9fdTY0IHJlc2VydmVkMVsyXTsKIF9fdTY0IHJlc2VydmVk Mls1XTsKfTsKCnN0cnVjdCBfeW1taF9zdGF0ZSB7CgogX191MzIgeW1taF9zcGFjZVs2NF07Cn07 CiMgMTkyICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnY29udGV4dC5oIgpzdHJ1Y3Qg X3hzdGF0ZSB7CiBzdHJ1Y3QgX2Zwc3RhdGVfNjQgZnBzdGF0ZTsKIHN0cnVjdCBfaGVhZGVyIHhz dGF0ZV9oZHI7CiBzdHJ1Y3QgX3ltbWhfc3RhdGUgeW1taDsKCn07CgoKCgpzdHJ1Y3Qgc2lnY29u dGV4dF8zMiB7CiBfX3UxNiBncywgX19nc2g7CiBfX3UxNiBmcywgX19mc2g7CiBfX3UxNiBlcywg X19lc2g7CiBfX3UxNiBkcywgX19kc2g7CiBfX3UzMiBkaTsKIF9fdTMyIHNpOwogX191MzIgYnA7 CiBfX3UzMiBzcDsKIF9fdTMyIGJ4OwogX191MzIgZHg7CiBfX3UzMiBjeDsKIF9fdTMyIGF4Owog X191MzIgdHJhcG5vOwogX191MzIgZXJyOwogX191MzIgaXA7CiBfX3UxNiBjcywgX19jc2g7CiBf X3UzMiBmbGFnczsKIF9fdTMyIHNwX2F0X3NpZ25hbDsKIF9fdTE2IHNzLCBfX3NzaDsKIyAyMzAg Ii4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaWdjb250ZXh0LmgiCiBfX3UzMiBmcHN0YXRl OwogX191MzIgb2xkbWFzazsKIF9fdTMyIGNyMjsKfTsKCgoKCnN0cnVjdCBzaWdjb250ZXh0XzY0 IHsKIF9fdTY0IHI4OwogX191NjQgcjk7CiBfX3U2NCByMTA7CiBfX3U2NCByMTE7CiBfX3U2NCBy MTI7CiBfX3U2NCByMTM7CiBfX3U2NCByMTQ7CiBfX3U2NCByMTU7CiBfX3U2NCBkaTsKIF9fdTY0 IHNpOwogX191NjQgYnA7CiBfX3U2NCBieDsKIF9fdTY0IGR4OwogX191NjQgYXg7CiBfX3U2NCBj eDsKIF9fdTY0IHNwOwogX191NjQgaXA7CiBfX3U2NCBmbGFnczsKIF9fdTE2IGNzOwogX191MTYg Z3M7CiBfX3UxNiBmczsKIF9fdTE2IHNzOwogX191NjQgZXJyOwogX191NjQgdHJhcG5vOwogX191 NjQgb2xkbWFzazsKIF9fdTY0IGNyMjsKIyAyNzMgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2Fz bS9zaWdjb250ZXh0LmgiCiBfX3U2NCBmcHN0YXRlOwogX191NjQgcmVzZXJ2ZWQxWzhdOwp9Owoj IDE3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCgoKCgoKIyAxICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL21zci5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vbXNyLWluZGV4LmgiIDEKIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci5oIiAyCgoK CgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vZXJybm8uaCIgMQoj IDEgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2Vycm5vLmgiIDEKCgoKCiMgMSAiLi9pbmNs dWRlL3VhcGkvYXNtLWdlbmVyaWMvZXJybm8tYmFzZS5oIiAxCiMgNiAiLi9pbmNsdWRlL3VhcGkv YXNtLWdlbmVyaWMvZXJybm8uaCIgMgojIDIgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQv dWFwaS9hc20vZXJybm8uaCIgMgojIDExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci5oIiAy CiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVtYXNrLmgiIDEKCgoKCiMgMSAiLi9pbmNs dWRlL2xpbnV4L2NwdW1hc2suaCIgMQojIDEyICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgoj IDEgIi4vaW5jbHVkZS9saW51eC9iaXRtYXAuaCIgMQojIDkgIi4vaW5jbHVkZS9saW51eC9iaXRt YXAuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDEKIyAxMCAiLi9pbmNsdWRlL2xp bnV4L3N0cmluZy5oIgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3N0cmluZy5oIiAxCiMgMTEg Ii4vaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMgoKZXh0ZXJuIGNoYXIgKnN0cm5kdXBfdXNlcihj b25zdCBjaGFyICosIGxvbmcpOwpleHRlcm4gdm9pZCAqbWVtZHVwX3VzZXIoY29uc3Qgdm9pZCAq LCBzaXplX3QpOwpleHRlcm4gdm9pZCAqdm1lbWR1cF91c2VyKGNvbnN0IHZvaWQgKiwgc2l6ZV90 KTsKZXh0ZXJuIHZvaWQgKm1lbWR1cF91c2VyX251bChjb25zdCB2b2lkICosIHNpemVfdCk7CgoK CgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3RyaW5nLmgiIDEKCgoKCiMgMSAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9zdHJpbmdfNjQuaCIgMQojIDE0ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL3N0cmluZ182NC5oIgpleHRlcm4gdm9pZCAqbWVtY3B5KHZvaWQgKnRvLCBjb25zdCB2b2lk ICpmcm9tLCBzaXplX3QgbGVuKTsKZXh0ZXJuIHZvaWQgKl9fbWVtY3B5KHZvaWQgKnRvLCBjb25z dCB2b2lkICpmcm9tLCBzaXplX3QgbGVuKTsKCgp2b2lkICptZW1zZXQodm9pZCAqcywgaW50IGMs IHNpemVfdCBuKTsKdm9pZCAqX19tZW1zZXQodm9pZCAqcywgaW50IGMsIHNpemVfdCBuKTsKCgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkICptZW1zZXQxNih1aW50MTZfdCAqcywgdWludDE2X3Qgdiwgc2l6ZV90IG4pCnsKIGxvbmcg ZDAsIGQxOwogYXNtIHZvbGF0aWxlKCJyZXBcblx0IgogICAgICAgInN0b3N3IgogICAgICAgOiAi PSZjIiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICA6ICJhIiAodiksICIxIiAocyksICIwIiAobikK ICAgICAgIDogIm1lbW9yeSIpOwogcmV0dXJuIHM7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICptZW1zZXQzMih1aW50MzJf dCAqcywgdWludDMyX3Qgdiwgc2l6ZV90IG4pCnsKIGxvbmcgZDAsIGQxOwogYXNtIHZvbGF0aWxl KCJyZXBcblx0IgogICAgICAgInN0b3NsIgogICAgICAgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEp CiAgICAgICA6ICJhIiAodiksICIxIiAocyksICIwIiAobikKICAgICAgIDogIm1lbW9yeSIpOwog cmV0dXJuIHM7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkICptZW1zZXQ2NCh1aW50NjRfdCAqcywgdWludDY0X3Qgdiwgc2l6 ZV90IG4pCnsKIGxvbmcgZDAsIGQxOwogYXNtIHZvbGF0aWxlKCJyZXBcblx0IgogICAgICAgInN0 b3NxIgogICAgICAgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICA6ICJhIiAodiksICIx IiAocyksICIwIiAobikKICAgICAgIDogIm1lbW9yeSIpOwogcmV0dXJuIHM7Cn0KCgp2b2lkICpt ZW1tb3ZlKHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGNvdW50KTsKdm9pZCAq X19tZW1tb3ZlKHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGNvdW50KTsKCmlu dCBtZW1jbXAoY29uc3Qgdm9pZCAqY3MsIGNvbnN0IHZvaWQgKmN0LCBzaXplX3QgY291bnQpOwpz aXplX3Qgc3RybGVuKGNvbnN0IGNoYXIgKnMpOwpjaGFyICpzdHJjcHkoY2hhciAqZGVzdCwgY29u c3QgY2hhciAqc3JjKTsKY2hhciAqc3RyY2F0KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYyk7 CmludCBzdHJjbXAoY29uc3QgY2hhciAqY3MsIGNvbnN0IGNoYXIgKmN0KTsKIyA4NiAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9zdHJpbmdfNjQuaCIKX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIHVuc2lnbmVkIGxvbmcgX19tZW1jcHlfbWNzYWZlKHZvaWQgKmRzdCwgY29u c3Qgdm9pZCAqc3JjLAogIHNpemVfdCBjbnQpOwpleHRlcm4gc3RydWN0IHN0YXRpY19rZXlfZmFs c2UgbWNzYWZlX2tleTsKIyAxMDUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3RyaW5nXzY0Lmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIHVuc2lnbmVkIGxvbmcKbWVtY3B5X21jc2FmZSh2b2lkICpkc3Qs IGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGNudCkKewoKIGlmICgoeyBib29sIGJyYW5jaDsgaWYg KF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCombWNzYWZlX2tleSksIHN0cnVj dCBzdGF0aWNfa2V5X3RydWUpKSBicmFuY2ggPSBhcmNoX3N0YXRpY19icmFuY2hfanVtcCgmKCZt Y3NhZmVfa2V5KS0+a2V5LCBmYWxzZSk7IGVsc2UgaWYgKF9fYnVpbHRpbl90eXBlc19jb21wYXRp YmxlX3AodHlwZW9mKCombWNzYWZlX2tleSksIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlKSkgYnJh bmNoID0gYXJjaF9zdGF0aWNfYnJhbmNoKCYoJm1jc2FmZV9rZXkpLT5rZXksIGZhbHNlKTsgZWxz ZSBicmFuY2ggPSBfX19fd3JvbmdfYnJhbmNoX2Vycm9yKCk7IF9fYnVpbHRpbl9leHBlY3QoISEo YnJhbmNoKSwgMCk7IH0pKQogIHJldHVybiBfX21lbWNweV9tY3NhZmUoZHN0LCBzcmMsIGNudCk7 CiBlbHNlCgogIG1lbWNweShkc3QsIHNyYywgY250KTsKIHJldHVybiAwOwp9CgoKCnZvaWQgX19t ZW1jcHlfZmx1c2hjYWNoZSh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGNudCk7 CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBtZW1jcHlfZmx1c2hjYWNo ZSh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGNudCkKewogaWYgKF9fYnVpbHRp bl9jb25zdGFudF9wKGNudCkpIHsKICBzd2l0Y2ggKGNudCkgewogICBjYXNlIDQ6CiAgICBhc20g KCJtb3ZudGlsICUxLCAlMCIgOiAiPW0iKCoodTMyICopZHN0KSA6ICJyIigqKHUzMiAqKXNyYykp OwogICAgcmV0dXJuOwogICBjYXNlIDg6CiAgICBhc20gKCJtb3ZudGlxICUxLCAlMCIgOiAiPW0i KCoodTY0ICopZHN0KSA6ICJyIigqKHU2NCAqKXNyYykpOwogICAgcmV0dXJuOwogICBjYXNlIDE2 OgogICAgYXNtICgibW92bnRpcSAlMSwgJTAiIDogIj1tIigqKHU2NCAqKWRzdCkgOiAiciIoKih1 NjQgKilzcmMpKTsKICAgIGFzbSAoIm1vdm50aXEgJTEsICUwIiA6ICI9bSIoKih1NjQgKikoZHN0 ICsgOCkpIDogInIiKCoodTY0ICopKHNyYyArIDgpKSk7CiAgICByZXR1cm47CiAgfQogfQogX19t ZW1jcHlfZmx1c2hjYWNoZShkc3QsIHNyYywgY250KTsKfQojIDYgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vc3RyaW5nLmgiIDIKIyAyMSAiLi9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAyCgoKZXh0 ZXJuIGNoYXIgKiBzdHJjcHkoY2hhciAqLGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGNoYXIgKiBz dHJuY3B5KGNoYXIgKixjb25zdCBjaGFyICosIF9fa2VybmVsX3NpemVfdCk7CgoKc2l6ZV90IHN0 cmxjcHkoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CgoKc3NpemVfdCBzdHJzY3B5KGNo YXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwoKCgpzc2l6ZV90IHN0cnNjcHlfcGFkKGNoYXIg KmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IGNvdW50KTsKCgpleHRlcm4gY2hhciAqIHN0 cmNhdChjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGNoYXIgKiBzdHJuY2F0KGNoYXIg KiwgY29uc3QgY2hhciAqLCBfX2tlcm5lbF9zaXplX3QpOwoKCmV4dGVybiBzaXplX3Qgc3RybGNh dChjaGFyICosIGNvbnN0IGNoYXIgKiwgX19rZXJuZWxfc2l6ZV90KTsKCgpleHRlcm4gaW50IHN0 cmNtcChjb25zdCBjaGFyICosY29uc3QgY2hhciAqKTsKCgpleHRlcm4gaW50IHN0cm5jbXAoY29u c3QgY2hhciAqLGNvbnN0IGNoYXIgKixfX2tlcm5lbF9zaXplX3QpOwoKCmV4dGVybiBpbnQgc3Ry Y2FzZWNtcChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpOwoKCmV4dGVybiBpbnQgc3Ry bmNhc2VjbXAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBzaXplX3Qgbik7CgoKZXh0 ZXJuIGNoYXIgKiBzdHJjaHIoY29uc3QgY2hhciAqLGludCk7CgoKZXh0ZXJuIGNoYXIgKiBzdHJj aHJudWwoY29uc3QgY2hhciAqLGludCk7CgpleHRlcm4gY2hhciAqIHN0cm5jaHJudWwoY29uc3Qg Y2hhciAqLCBzaXplX3QsIGludCk7CgpleHRlcm4gY2hhciAqIHN0cm5jaHIoY29uc3QgY2hhciAq LCBzaXplX3QsIGludCk7CgoKZXh0ZXJuIGNoYXIgKiBzdHJyY2hyKGNvbnN0IGNoYXIgKixpbnQp OwoKZXh0ZXJuIGNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkg c2tpcF9zcGFjZXMoY29uc3QgY2hhciAqKTsKCmV4dGVybiBjaGFyICpzdHJpbShjaGFyICopOwoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGNoYXIgKnN0cnN0cmlwKGNo YXIgKnN0cikKewogcmV0dXJuIHN0cmltKHN0cik7Cn0KCgpleHRlcm4gY2hhciAqIHN0cnN0cihj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGNoYXIgKiBzdHJuc3RyKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwoKCmV4dGVybiBfX2tlcm5lbF9zaXplX3Qg c3RybGVuKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIF9fa2VybmVsX3NpemVfdCBzdHJubGVuKGNv bnN0IGNoYXIgKixfX2tlcm5lbF9zaXplX3QpOwoKCmV4dGVybiBjaGFyICogc3RycGJyayhjb25z dCBjaGFyICosY29uc3QgY2hhciAqKTsKCgpleHRlcm4gY2hhciAqIHN0cnNlcChjaGFyICoqLGNv bnN0IGNoYXIgKik7CgoKZXh0ZXJuIF9fa2VybmVsX3NpemVfdCBzdHJzcG4oY29uc3QgY2hhciAq LGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIF9fa2VybmVsX3NpemVfdCBzdHJjc3BuKGNvbnN0IGNo YXIgKixjb25zdCBjaGFyICopOwojIDEyMiAiLi9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk ICptZW1zZXRfbCh1bnNpZ25lZCBsb25nICpwLCB1bnNpZ25lZCBsb25nIHYsCiAgX19rZXJuZWxf c2l6ZV90IG4pCnsKIGlmICg2NCA9PSAzMikKICByZXR1cm4gbWVtc2V0MzIoKHVpbnQzMl90ICop cCwgdiwgbik7CiBlbHNlCiAgcmV0dXJuIG1lbXNldDY0KCh1aW50NjRfdCAqKXAsIHYsIG4pOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkICptZW1zZXRfcCh2b2lkICoqcCwgdm9pZCAqdiwgX19rZXJuZWxfc2l6ZV90IG4pCnsK IGlmICg2NCA9PSAzMikKICByZXR1cm4gbWVtc2V0MzIoKHVpbnQzMl90ICopcCwgKHVpbnRwdHJf dCl2LCBuKTsKIGVsc2UKICByZXR1cm4gbWVtc2V0NjQoKHVpbnQ2NF90ICopcCwgKHVpbnRwdHJf dCl2LCBuKTsKfQoKZXh0ZXJuIHZvaWQgKipfX21lbWNhdF9wKHZvaWQgKiphLCB2b2lkICoqYik7 CiMgMTUzICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCmV4dGVybiB2b2lkICogbWVtc2Nhbih2 b2lkICosaW50LF9fa2VybmVsX3NpemVfdCk7CgoKZXh0ZXJuIGludCBtZW1jbXAoY29uc3Qgdm9p ZCAqLGNvbnN0IHZvaWQgKixfX2tlcm5lbF9zaXplX3QpOwoKCmV4dGVybiBpbnQgYmNtcChjb25z dCB2b2lkICosY29uc3Qgdm9pZCAqLF9fa2VybmVsX3NpemVfdCk7CgoKZXh0ZXJuIHZvaWQgKiBt ZW1jaHIoY29uc3Qgdm9pZCAqLGludCxfX2tlcm5lbF9zaXplX3QpOwojIDE3OCAiLi9pbmNsdWRl L2xpbnV4L3N0cmluZy5oIgp2b2lkICptZW1jaHJfaW52KGNvbnN0IHZvaWQgKnMsIGludCBjLCBz aXplX3Qgbik7CmNoYXIgKnN0cnJlcGxhY2UoY2hhciAqcywgY2hhciBvbGQsIGNoYXIgbmV3KTsK CmV4dGVybiB2b2lkIGtmcmVlX2NvbnN0KGNvbnN0IHZvaWQgKngpOwoKZXh0ZXJuIGNoYXIgKmtz dHJkdXAoY29uc3QgY2hhciAqcywgZ2ZwX3QgZ2ZwKSBfX2F0dHJpYnV0ZV9fKChfX21hbGxvY19f KSk7CmV4dGVybiBjb25zdCBjaGFyICprc3RyZHVwX2NvbnN0KGNvbnN0IGNoYXIgKnMsIGdmcF90 IGdmcCk7CmV4dGVybiBjaGFyICprc3RybmR1cChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCBn ZnBfdCBnZnApOwpleHRlcm4gdm9pZCAqa21lbWR1cChjb25zdCB2b2lkICpzcmMsIHNpemVfdCBs ZW4sIGdmcF90IGdmcCk7CmV4dGVybiBjaGFyICprbWVtZHVwX251bChjb25zdCBjaGFyICpzLCBz aXplX3QgbGVuLCBnZnBfdCBnZnApOwoKZXh0ZXJuIGNoYXIgKiphcmd2X3NwbGl0KGdmcF90IGdm cCwgY29uc3QgY2hhciAqc3RyLCBpbnQgKmFyZ2NwKTsKZXh0ZXJuIHZvaWQgYXJndl9mcmVlKGNo YXIgKiphcmd2KTsKCmV4dGVybiBib29sIHN5c2ZzX3N0cmVxKGNvbnN0IGNoYXIgKnMxLCBjb25z dCBjaGFyICpzMik7CmV4dGVybiBpbnQga3N0cnRvYm9vbChjb25zdCBjaGFyICpzLCBib29sICpy ZXMpOwpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgc3RydG9ib29sKGNvbnN0IGNoYXIgKnMsIGJvb2wgKnJlcykKewogcmV0dXJuIGtz dHJ0b2Jvb2wocywgcmVzKTsKfQoKaW50IG1hdGNoX3N0cmluZyhjb25zdCBjaGFyICogY29uc3Qg KmFycmF5LCBzaXplX3QgbiwgY29uc3QgY2hhciAqc3RyaW5nKTsKaW50IF9fc3lzZnNfbWF0Y2hf c3RyaW5nKGNvbnN0IGNoYXIgKiBjb25zdCAqYXJyYXksIHNpemVfdCBuLCBjb25zdCBjaGFyICpz KTsKIyAyMTIgIi4vaW5jbHVkZS9saW51eC9zdHJpbmcuaCIKaW50IHZiaW5fcHJpbnRmKHUzMiAq YmluX2J1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKTsKaW50 IGJzdHJfcHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgY29u c3QgdTMyICpiaW5fYnVmKTsKaW50IGJwcmludGYodTMyICpiaW5fYnVmLCBzaXplX3Qgc2l6ZSwg Y29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAz LCA0KSkpOwoKCmV4dGVybiBzc2l6ZV90IG1lbW9yeV9yZWFkX2Zyb21fYnVmZmVyKHZvaWQgKnRv LCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcywKICAgICAgICAgICBjb25zdCB2b2lkICpmcm9t LCBzaXplX3QgYXZhaWxhYmxlKTsKCmludCBwdHJfdG9faGFzaHZhbChjb25zdCB2b2lkICpwdHIs IHVuc2lnbmVkIGxvbmcgKmhhc2h2YWxfb3V0KTsKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBzdHJzdGFydHMoY29uc3Qg Y2hhciAqc3RyLCBjb25zdCBjaGFyICpwcmVmaXgpCnsKIHJldHVybiBzdHJuY21wKHN0ciwgcHJl Zml4LCBzdHJsZW4ocHJlZml4KSkgPT0gMDsKfQoKc2l6ZV90IG1lbXdlaWdodChjb25zdCB2b2lk ICpwdHIsIHNpemVfdCBieXRlcyk7CiMgMjQ4ICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgbWVtemVyb19leHBsaWNpdCh2b2lkICpzLCBzaXplX3QgY291bnQpCnsKIG1lbXNldChzLCAw LCBjb3VudCk7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiJyIihzKSA6Im1lbW9yeSIpOwp9 CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGNvbnN0IGNoYXIgKmtiYXNlbmFtZShjb25zdCBjaGFyICpwYXRoKQp7CiBjb25zdCBj aGFyICp0YWlsID0gc3RycmNocihwYXRoLCAnLycpOwogcmV0dXJuIHRhaWwgPyB0YWlsICsgMSA6 IHBhdGg7Cn0KCgoKCnZvaWQgZm9ydGlmeV9wYW5pYyhjb25zdCBjaGFyICpuYW1lKSBfX2F0dHJp YnV0ZV9fKChfX25vcmV0dXJuX18pKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpOwp2b2lkIF9f cmVhZF9vdmVyZmxvdyh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oImRldGVjdGVkIHJl YWQgYmV5b25kIHNpemUgb2Ygb2JqZWN0IHBhc3NlZCBhcyAxc3QgcGFyYW1ldGVyIikpKTsKdm9p ZCBfX3JlYWRfb3ZlcmZsb3cyKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiZGV0ZWN0 ZWQgcmVhZCBiZXlvbmQgc2l6ZSBvZiBvYmplY3QgcGFzc2VkIGFzIDJuZCBwYXJhbWV0ZXIiKSkp Owp2b2lkIF9fcmVhZF9vdmVyZmxvdzModm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJk ZXRlY3RlZCByZWFkIGJleW9uZCBzaXplIG9mIG9iamVjdCBwYXNzZWQgYXMgM3JkIHBhcmFtZXRl ciIpKSk7CnZvaWQgX193cml0ZV9vdmVyZmxvdyh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9y X18oImRldGVjdGVkIHdyaXRlIGJleW9uZCBzaXplIG9mIG9iamVjdCBwYXNzZWQgYXMgMXN0IHBh cmFtZXRlciIpKSk7CiMgNDc4ICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbWVtY3B5 X2FuZF9wYWQodm9pZCAqZGVzdCwgc2l6ZV90IGRlc3RfbGVuLAogICAgICBjb25zdCB2b2lkICpz cmMsIHNpemVfdCBjb3VudCwgaW50IHBhZCkKewogaWYgKGRlc3RfbGVuID4gY291bnQpIHsKICBt ZW1jcHkoZGVzdCwgc3JjLCBjb3VudCk7CiAgbWVtc2V0KGRlc3QgKyBjb3VudCwgcGFkLCBkZXN0 X2xlbiAtIGNvdW50KTsKIH0gZWxzZQogIG1lbWNweShkZXN0LCBzcmMsIGRlc3RfbGVuKTsKfQoj IDUwMyAiLi9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIHNpemVfdCBzdHJfaGFzX3ByZWZpeChjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNo YXIgKnByZWZpeCkKewogc2l6ZV90IGxlbiA9IHN0cmxlbihwcmVmaXgpOwogcmV0dXJuIHN0cm5j bXAoc3RyLCBwcmVmaXgsIGxlbikgPT0gMCA/IGxlbiA6IDA7Cn0KIyAxMCAiLi9pbmNsdWRlL2xp bnV4L2JpdG1hcC5oIiAyCiMgMTE1ICIuL2luY2x1ZGUvbGludXgvYml0bWFwLmgiCmV4dGVybiB1 bnNpZ25lZCBsb25nICpiaXRtYXBfYWxsb2ModW5zaWduZWQgaW50IG5iaXRzLCBnZnBfdCBmbGFn cyk7CmV4dGVybiB1bnNpZ25lZCBsb25nICpiaXRtYXBfemFsbG9jKHVuc2lnbmVkIGludCBuYml0 cywgZ2ZwX3QgZmxhZ3MpOwpleHRlcm4gdm9pZCBiaXRtYXBfZnJlZShjb25zdCB1bnNpZ25lZCBs b25nICpiaXRtYXApOwoKCgoKCmV4dGVybiBpbnQgX19iaXRtYXBfZW1wdHkoY29uc3QgdW5zaWdu ZWQgbG9uZyAqYml0bWFwLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRlcm4gaW50IF9fYml0bWFw X2Z1bGwoY29uc3QgdW5zaWduZWQgbG9uZyAqYml0bWFwLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwpl eHRlcm4gaW50IF9fYml0bWFwX2VxdWFsKGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDEsCiAg ICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYml0bWFwMiwgdW5zaWduZWQgaW50IG5iaXRzKTsKZXh0 ZXJuIGJvb2wgX19hdHRyaWJ1dGVfXygoX19wdXJlX18pKSBfX2JpdG1hcF9vcl9lcXVhbChjb25z dCB1bnNpZ25lZCBsb25nICpzcmMxLAogICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMy LAogICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMzLAogICAgICAgICB1bnNpZ25lZCBp bnQgbmJpdHMpOwpleHRlcm4gdm9pZCBfX2JpdG1hcF9jb21wbGVtZW50KHVuc2lnbmVkIGxvbmcg KmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjLAogICB1bnNpZ25lZCBpbnQgbmJpdHMpOwpl eHRlcm4gdm9pZCBfX2JpdG1hcF9zaGlmdF9yaWdodCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0 IHVuc2lnbmVkIGxvbmcgKnNyYywKICAgIHVuc2lnbmVkIGludCBzaGlmdCwgdW5zaWduZWQgaW50 IG5iaXRzKTsKZXh0ZXJuIHZvaWQgX19iaXRtYXBfc2hpZnRfbGVmdCh1bnNpZ25lZCBsb25nICpk c3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKICAgIHVuc2lnbmVkIGludCBzaGlmdCwgdW5z aWduZWQgaW50IG5iaXRzKTsKZXh0ZXJuIHZvaWQgYml0bWFwX2N1dCh1bnNpZ25lZCBsb25nICpk c3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKICAgICAgICAgdW5zaWduZWQgaW50IGZpcnN0 LCB1bnNpZ25lZCBpbnQgY3V0LAogICAgICAgICB1bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRlcm4g aW50IF9fYml0bWFwX2FuZCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcg KmJpdG1hcDEsCiAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDIsIHVuc2lnbmVkIGludCBu Yml0cyk7CmV4dGVybiB2b2lkIF9fYml0bWFwX29yKHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3Qg dW5zaWduZWQgbG9uZyAqYml0bWFwMSwKICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYml0bWFwMiwg dW5zaWduZWQgaW50IG5iaXRzKTsKZXh0ZXJuIHZvaWQgX19iaXRtYXBfeG9yKHVuc2lnbmVkIGxv bmcgKmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqYml0bWFwMSwKICAgY29uc3QgdW5zaWduZWQg bG9uZyAqYml0bWFwMiwgdW5zaWduZWQgaW50IG5iaXRzKTsKZXh0ZXJuIGludCBfX2JpdG1hcF9h bmRub3QodW5zaWduZWQgbG9uZyAqZHN0LCBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAxLAog ICBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAyLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRl cm4gdm9pZCBfX2JpdG1hcF9yZXBsYWNlKHVuc2lnbmVkIGxvbmcgKmRzdCwKICAgY29uc3QgdW5z aWduZWQgbG9uZyAqb2xkLCBjb25zdCB1bnNpZ25lZCBsb25nICpuZXcsCiAgIGNvbnN0IHVuc2ln bmVkIGxvbmcgKm1hc2ssIHVuc2lnbmVkIGludCBuYml0cyk7CmV4dGVybiBpbnQgX19iaXRtYXBf aW50ZXJzZWN0cyhjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAxLAogICBjb25zdCB1bnNpZ25l ZCBsb25nICpiaXRtYXAyLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRlcm4gaW50IF9fYml0bWFw X3N1YnNldChjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAxLAogICBjb25zdCB1bnNpZ25lZCBs b25nICpiaXRtYXAyLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRlcm4gaW50IF9fYml0bWFwX3dl aWdodChjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAsIHVuc2lnbmVkIGludCBuYml0cyk7CmV4 dGVybiB2b2lkIF9fYml0bWFwX3NldCh1bnNpZ25lZCBsb25nICptYXAsIHVuc2lnbmVkIGludCBz dGFydCwgaW50IGxlbik7CmV4dGVybiB2b2lkIF9fYml0bWFwX2NsZWFyKHVuc2lnbmVkIGxvbmcg Km1hcCwgdW5zaWduZWQgaW50IHN0YXJ0LCBpbnQgbGVuKTsKCmV4dGVybiB1bnNpZ25lZCBsb25n IGJpdG1hcF9maW5kX25leHRfemVyb19hcmVhX29mZih1bnNpZ25lZCBsb25nICptYXAsCiAgICAg ICAgICB1bnNpZ25lZCBsb25nIHNpemUsCiAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAog ICAgICAgICAgdW5zaWduZWQgaW50IG5yLAogICAgICAgICAgdW5zaWduZWQgbG9uZyBhbGlnbl9t YXNrLAogICAgICAgICAgdW5zaWduZWQgbG9uZyBhbGlnbl9vZmZzZXQpOwojIDE3OCAiLi9pbmNs dWRlL2xpbnV4L2JpdG1hcC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nCmJpdG1hcF9maW5kX25leHRfemVyb19h cmVhKHVuc2lnbmVkIGxvbmcgKm1hcCwKICAgICAgdW5zaWduZWQgbG9uZyBzaXplLAogICAgICB1 bnNpZ25lZCBsb25nIHN0YXJ0LAogICAgICB1bnNpZ25lZCBpbnQgbnIsCiAgICAgIHVuc2lnbmVk IGxvbmcgYWxpZ25fbWFzaykKewogcmV0dXJuIGJpdG1hcF9maW5kX25leHRfemVyb19hcmVhX29m ZihtYXAsIHNpemUsIHN0YXJ0LCBuciwKICAgICAgICAgICBhbGlnbl9tYXNrLCAwKTsKfQoKZXh0 ZXJuIGludCBiaXRtYXBfcGFyc2UoY29uc3QgY2hhciAqYnVmLCB1bnNpZ25lZCBpbnQgYnVmbGVu LAogICB1bnNpZ25lZCBsb25nICpkc3QsIGludCBuYml0cyk7CmV4dGVybiBpbnQgYml0bWFwX3Bh cnNlX3VzZXIoY29uc3QgY2hhciAqdWJ1ZiwgdW5zaWduZWQgaW50IHVsZW4sCiAgIHVuc2lnbmVk IGxvbmcgKmRzdCwgaW50IG5iaXRzKTsKZXh0ZXJuIGludCBiaXRtYXBfcGFyc2VsaXN0KGNvbnN0 IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyAqbWFza3AsCiAgIGludCBubWFza2JpdHMpOwpleHRl cm4gaW50IGJpdG1hcF9wYXJzZWxpc3RfdXNlcihjb25zdCBjaGFyICp1YnVmLCB1bnNpZ25lZCBp bnQgdWxlbiwKICAgdW5zaWduZWQgbG9uZyAqZHN0LCBpbnQgbmJpdHMpOwpleHRlcm4gdm9pZCBi aXRtYXBfcmVtYXAodW5zaWduZWQgbG9uZyAqZHN0LCBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMs CiAgY29uc3QgdW5zaWduZWQgbG9uZyAqb2xkLCBjb25zdCB1bnNpZ25lZCBsb25nICpuZXcsIHVu c2lnbmVkIGludCBuYml0cyk7CmV4dGVybiBpbnQgYml0bWFwX2JpdHJlbWFwKGludCBvbGRiaXQs CiAgY29uc3QgdW5zaWduZWQgbG9uZyAqb2xkLCBjb25zdCB1bnNpZ25lZCBsb25nICpuZXcsIGlu dCBiaXRzKTsKZXh0ZXJuIHZvaWQgYml0bWFwX29udG8odW5zaWduZWQgbG9uZyAqZHN0LCBjb25z dCB1bnNpZ25lZCBsb25nICpvcmlnLAogIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnJlbG1hcCwgdW5z aWduZWQgaW50IGJpdHMpOwpleHRlcm4gdm9pZCBiaXRtYXBfZm9sZCh1bnNpZ25lZCBsb25nICpk c3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm9yaWcsCiAgdW5zaWduZWQgaW50IHN6LCB1bnNpZ25l ZCBpbnQgbmJpdHMpOwpleHRlcm4gaW50IGJpdG1hcF9maW5kX2ZyZWVfcmVnaW9uKHVuc2lnbmVk IGxvbmcgKmJpdG1hcCwgdW5zaWduZWQgaW50IGJpdHMsIGludCBvcmRlcik7CmV4dGVybiB2b2lk IGJpdG1hcF9yZWxlYXNlX3JlZ2lvbih1bnNpZ25lZCBsb25nICpiaXRtYXAsIHVuc2lnbmVkIGlu dCBwb3MsIGludCBvcmRlcik7CmV4dGVybiBpbnQgYml0bWFwX2FsbG9jYXRlX3JlZ2lvbih1bnNp Z25lZCBsb25nICpiaXRtYXAsIHVuc2lnbmVkIGludCBwb3MsIGludCBvcmRlcik7CgoKCgoKCmV4 dGVybiB1bnNpZ25lZCBpbnQgYml0bWFwX29yZF90b19wb3MoY29uc3QgdW5zaWduZWQgbG9uZyAq Yml0bWFwLCB1bnNpZ25lZCBpbnQgb3JkLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRlcm4gaW50 IGJpdG1hcF9wcmludF90b19wYWdlYnVmKGJvb2wgbGlzdCwgY2hhciAqYnVmLAogICAgICAgY29u c3QgdW5zaWduZWQgbG9uZyAqbWFza3AsIGludCBubWFza2JpdHMpOwojIDIyOSAiLi9pbmNsdWRl L2xpbnV4L2JpdG1hcC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGJpdG1hcF96ZXJvKHVuc2lnbmVkIGxvbmcgKmRzdCwgdW5z aWduZWQgaW50IG5iaXRzKQp7CiB1bnNpZ25lZCBpbnQgbGVuID0gKCgobmJpdHMpICsgKChzaXpl b2YobG9uZykgKiA4KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkpKSAqIHNpemVvZih1bnNp Z25lZCBsb25nKTsKIG1lbXNldChkc3QsIDAsIGxlbik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYml0bWFwX2ZpbGwodW5z aWduZWQgbG9uZyAqZHN0LCB1bnNpZ25lZCBpbnQgbmJpdHMpCnsKIHVuc2lnbmVkIGludCBsZW4g PSAoKChuYml0cykgKyAoKHNpemVvZihsb25nKSAqIDgpKSAtIDEpIC8gKChzaXplb2YobG9uZykg KiA4KSkpICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpOwogbWVtc2V0KGRzdCwgMHhmZiwgbGVuKTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBiaXRtYXBfY29weSh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxv bmcgKnNyYywKICAgdW5zaWduZWQgaW50IG5iaXRzKQp7CiB1bnNpZ25lZCBpbnQgbGVuID0gKCgo bmJpdHMpICsgKChzaXplb2YobG9uZykgKiA4KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkp KSAqIHNpemVvZih1bnNpZ25lZCBsb25nKTsKIG1lbWNweShkc3QsIHNyYywgbGVuKTsKfQoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBiaXRtYXBfY29weV9jbGVhcl90YWlsKHVuc2lnbmVkIGxvbmcgKmRzdCwKICBjb25zdCB1 bnNpZ25lZCBsb25nICpzcmMsIHVuc2lnbmVkIGludCBuYml0cykKewogYml0bWFwX2NvcHkoZHN0 LCBzcmMsIG5iaXRzKTsKIGlmIChuYml0cyAlIDY0KQogIGRzdFtuYml0cyAvIDY0XSAmPSAofjBV TCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkpOwp9CgoKCgoKCmV4dGVybiB2b2lkIGJpdG1hcF9m cm9tX2FycjMyKHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwgY29uc3QgdTMyICpidWYsCiAgICAgICB1 bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRlcm4gdm9pZCBiaXRtYXBfdG9fYXJyMzIodTMyICpidWYs IGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwKICAgICAgIHVuc2lnbmVkIGludCBuYml0cyk7 CiMgMjc3ICIuL2luY2x1ZGUvbGludXgvYml0bWFwLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRtYXBfYW5kKHVuc2lnbmVk IGxvbmcgKmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKICAgY29uc3QgdW5zaWduZWQg bG9uZyAqc3JjMiwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAoKF9fYnVpbHRpbl9jb25zdGFu dF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKICByZXR1cm4gKCpk c3QgPSAqc3JjMSAmICpzcmMyICYgKH4wVUwgPj4gKC0obmJpdHMpICYgKDY0IC0gMSkpKSkgIT0g MDsKIHJldHVybiBfX2JpdG1hcF9hbmQoZHN0LCBzcmMxLCBzcmMyLCBuYml0cyk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg Yml0bWFwX29yKHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwK ICAgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMiwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAo KF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykg PiAwKSkKICAqZHN0ID0gKnNyYzEgfCAqc3JjMjsKIGVsc2UKICBfX2JpdG1hcF9vcihkc3QsIHNy YzEsIHNyYzIsIG5iaXRzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBiaXRtYXBfeG9yKHVuc2lnbmVkIGxvbmcgKmRzdCwg Y29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKICAgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMiwg dW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAm JiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKICAqZHN0ID0gKnNyYzEgXiAqc3JjMjsK IGVsc2UKICBfX2JpdG1hcF94b3IoZHN0LCBzcmMxLCBzcmMyLCBuYml0cyk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRt YXBfYW5kbm90KHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwK ICAgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMiwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAo KF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykg PiAwKSkKICByZXR1cm4gKCpkc3QgPSAqc3JjMSAmIH4oKnNyYzIpICYgKH4wVUwgPj4gKC0obmJp dHMpICYgKDY0IC0gMSkpKSkgIT0gMDsKIHJldHVybiBfX2JpdG1hcF9hbmRub3QoZHN0LCBzcmMx LCBzcmMyLCBuYml0cyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYml0bWFwX2NvbXBsZW1lbnQodW5zaWduZWQgbG9uZyAq ZHN0LCBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMsCiAgIHVuc2lnbmVkIGludCBuYml0cykKewog aWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAobmJp dHMpID4gMCkpCiAgKmRzdCA9IH4oKnNyYyk7CiBlbHNlCiAgX19iaXRtYXBfY29tcGxlbWVudChk c3QsIHNyYywgbmJpdHMpOwp9CiMgMzI3ICIuL2luY2x1ZGUvbGludXgvYml0bWFwLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBi aXRtYXBfZXF1YWwoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKICAgY29uc3QgdW5zaWduZWQg bG9uZyAqc3JjMiwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAoKF9fYnVpbHRpbl9jb25zdGFu dF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKICByZXR1cm4gISgo KnNyYzEgXiAqc3JjMikgJiAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkpKTsKIGlmIChf X2J1aWx0aW5fY29uc3RhbnRfcChuYml0cyAmICg4IC0gMSkpICYmCiAgICAgKCgobmJpdHMpICYg KCh0eXBlb2YobmJpdHMpKSg4KSAtIDEpKSA9PSAwKSkKICByZXR1cm4gIW1lbWNtcChzcmMxLCBz cmMyLCBuYml0cyAvIDgpOwogcmV0dXJuIF9fYml0bWFwX2VxdWFsKHNyYzEsIHNyYzIsIG5iaXRz KTsKfQojIDM0NyAiLi9pbmNsdWRlL2xpbnV4L2JpdG1hcC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGJpdG1hcF9vcl9lcXVh bChjb25zdCB1bnNpZ25lZCBsb25nICpzcmMxLAogICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAq c3JjMiwKICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYzMsCiAgICAgICB1bnNpZ25lZCBp bnQgbmJpdHMpCnsKIGlmICghKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMp IDw9IDY0ICYmIChuYml0cykgPiAwKSkKICByZXR1cm4gX19iaXRtYXBfb3JfZXF1YWwoc3JjMSwg c3JjMiwgc3JjMywgbmJpdHMpOwoKIHJldHVybiAhKCgoKnNyYzEgfCAqc3JjMikgXiAqc3JjMykg JiAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJpdG1hcF9pbnRlcnNl Y3RzKGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYzEsCiAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNy YzIsIHVuc2lnbmVkIGludCBuYml0cykKewogaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0 cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAobmJpdHMpID4gMCkpCiAgcmV0dXJuICgoKnNyYzEgJiAq c3JjMikgJiAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkpKSAhPSAwOwogZWxzZQogIHJl dHVybiBfX2JpdG1hcF9pbnRlcnNlY3RzKHNyYzEsIHNyYzIsIG5iaXRzKTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJpdG1h cF9zdWJzZXQoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKICAgY29uc3QgdW5zaWduZWQgbG9u ZyAqc3JjMiwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9w KG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKICByZXR1cm4gISAoKCpz cmMxICYgfigqc3JjMikpICYgKH4wVUwgPj4gKC0obmJpdHMpICYgKDY0IC0gMSkpKSk7CiBlbHNl CiAgcmV0dXJuIF9fYml0bWFwX3N1YnNldChzcmMxLCBzcmMyLCBuYml0cyk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRt YXBfZW1wdHkoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjLCB1bnNpZ25lZCBuYml0cykKewogaWYg KChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAobmJpdHMp ID4gMCkpCiAgcmV0dXJuICEgKCpzcmMgJiAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkp KTsKCiByZXR1cm4gZmluZF9maXJzdF9iaXQoc3JjLCBuYml0cykgPT0gbmJpdHM7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBi aXRtYXBfZnVsbChjb25zdCB1bnNpZ25lZCBsb25nICpzcmMsIHVuc2lnbmVkIGludCBuYml0cykK ewogaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAo bmJpdHMpID4gMCkpCiAgcmV0dXJuICEgKH4oKnNyYykgJiAofjBVTCA+PiAoLShuYml0cykgJiAo NjQgLSAxKSkpKTsKCiByZXR1cm4gZmluZF9maXJzdF96ZXJvX2JpdChzcmMsIG5iaXRzKSA9PSBu Yml0czsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgYml0bWFwX3dl aWdodChjb25zdCB1bnNpZ25lZCBsb25nICpzcmMsIHVuc2lnbmVkIGludCBuYml0cykKewogaWYg KChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAobmJpdHMp ID4gMCkpCiAgcmV0dXJuIGh3ZWlnaHRfbG9uZygqc3JjICYgKH4wVUwgPj4gKC0obmJpdHMpICYg KDY0IC0gMSkpKSk7CiByZXR1cm4gX19iaXRtYXBfd2VpZ2h0KHNyYywgbmJpdHMpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYml0bWFwX3NldCh1bnNpZ25lZCBs b25nICptYXAsIHVuc2lnbmVkIGludCBzdGFydCwKICB1bnNpZ25lZCBpbnQgbmJpdHMpCnsKIGlm IChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgbmJpdHMgPT0gMSkKICBfX3NldF9iaXQo c3RhcnQsIG1hcCk7CiBlbHNlIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChzdGFydCAmICg4IC0g MSkpICYmCiAgICgoKHN0YXJ0KSAmICgodHlwZW9mKHN0YXJ0KSkoOCkgLSAxKSkgPT0gMCkgJiYK ICAgX19idWlsdGluX2NvbnN0YW50X3AobmJpdHMgJiAoOCAtIDEpKSAmJgogICAoKChuYml0cykg JiAoKHR5cGVvZihuYml0cykpKDgpIC0gMSkpID09IDApKQogIG1lbXNldCgoY2hhciAqKW1hcCAr IHN0YXJ0IC8gOCwgMHhmZiwgbmJpdHMgLyA4KTsKIGVsc2UKICBfX2JpdG1hcF9zZXQobWFwLCBz dGFydCwgbmJpdHMpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg Yml0bWFwX2NsZWFyKHVuc2lnbmVkIGxvbmcgKm1hcCwgdW5zaWduZWQgaW50IHN0YXJ0LAogIHVu c2lnbmVkIGludCBuYml0cykKewogaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiBu Yml0cyA9PSAxKQogIF9fY2xlYXJfYml0KHN0YXJ0LCBtYXApOwogZWxzZSBpZiAoX19idWlsdGlu X2NvbnN0YW50X3Aoc3RhcnQgJiAoOCAtIDEpKSAmJgogICAoKChzdGFydCkgJiAoKHR5cGVvZihz dGFydCkpKDgpIC0gMSkpID09IDApICYmCiAgIF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzICYg KDggLSAxKSkgJiYKICAgKCgobmJpdHMpICYgKCh0eXBlb2YobmJpdHMpKSg4KSAtIDEpKSA9PSAw KSkKICBtZW1zZXQoKGNoYXIgKiltYXAgKyBzdGFydCAvIDgsIDAsIG5iaXRzIC8gOCk7CiBlbHNl CiAgX19iaXRtYXBfY2xlYXIobWFwLCBzdGFydCwgbmJpdHMpOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGJpdG1hcF9zaGlm dF9yaWdodCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKICAg IHVuc2lnbmVkIGludCBzaGlmdCwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAoKF9fYnVpbHRp bl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKICAq ZHN0ID0gKCpzcmMgJiAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkpKSA+PiBzaGlmdDsK IGVsc2UKICBfX2JpdG1hcF9zaGlmdF9yaWdodChkc3QsIHNyYywgc2hpZnQsIG5iaXRzKTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBiaXRtYXBfc2hpZnRfbGVmdCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVk IGxvbmcgKnNyYywKICAgIHVuc2lnbmVkIGludCBzaGlmdCwgdW5zaWduZWQgaW50IG5iaXRzKQp7 CiBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChu Yml0cykgPiAwKSkKICAqZHN0ID0gKCpzcmMgPDwgc2hpZnQpICYgKH4wVUwgPj4gKC0obmJpdHMp ICYgKDY0IC0gMSkpKTsKIGVsc2UKICBfX2JpdG1hcF9zaGlmdF9sZWZ0KGRzdCwgc3JjLCBzaGlm dCwgbmJpdHMpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGJpdG1hcF9yZXBsYWNlKHVuc2lnbmVkIGxvbmcgKmRzdCwKICAg ICAgY29uc3QgdW5zaWduZWQgbG9uZyAqb2xkLAogICAgICBjb25zdCB1bnNpZ25lZCBsb25nICpu ZXcsCiAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm1hc2ssCiAgICAgIHVuc2lnbmVkIGludCBu Yml0cykKewogaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2 NCAmJiAobmJpdHMpID4gMCkpCiAgKmRzdCA9ICgqb2xkICYgfigqbWFzaykpIHwgKCpuZXcgJiAq bWFzayk7CiBlbHNlCiAgX19iaXRtYXBfcmVwbGFjZShkc3QsIG9sZCwgbmV3LCBtYXNrLCBuYml0 cyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgYml0bWFwX25leHRfY2xlYXJfcmVnaW9uKHVuc2lnbmVkIGxvbmcgKmJpdG1h cCwKICAgICAgICAgdW5zaWduZWQgaW50ICpycywgdW5zaWduZWQgaW50ICpyZSwKICAgICAgICAg dW5zaWduZWQgaW50IGVuZCkKewogKnJzID0gZmluZF9uZXh0X3plcm9fYml0KGJpdG1hcCwgZW5k LCAqcnMpOwogKnJlID0gZmluZF9uZXh0X2JpdChiaXRtYXAsIGVuZCwgKnJzICsgMSk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgYml0bWFwX25leHRfc2V0X3JlZ2lvbih1bnNpZ25lZCBsb25nICpiaXRtYXAsCiAgICAgICB1 bnNpZ25lZCBpbnQgKnJzLCB1bnNpZ25lZCBpbnQgKnJlLAogICAgICAgdW5zaWduZWQgaW50IGVu ZCkKewogKnJzID0gZmluZF9uZXh0X2JpdChiaXRtYXAsIGVuZCwgKnJzKTsKICpyZSA9IGZpbmRf bmV4dF96ZXJvX2JpdChiaXRtYXAsIGVuZCwgKnJzICsgMSk7Cn0KIyA1MzUgIi4vaW5jbHVkZS9s aW51eC9iaXRtYXAuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBiaXRtYXBfZnJvbV91NjQodW5zaWduZWQgbG9uZyAqZHN0LCB1 NjQgbWFzaykKewogZHN0WzBdID0gbWFzayAmICh+MFVMKTsKCiBpZiAoc2l6ZW9mKG1hc2spID4g c2l6ZW9mKHVuc2lnbmVkIGxvbmcpKQogIGRzdFsxXSA9IG1hc2sgPj4gMzI7Cn0KIyA1NTEgIi4v aW5jbHVkZS9saW51eC9iaXRtYXAuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBiaXRtYXBfZ2V0X3ZhbHVlOChj b25zdCB1bnNpZ25lZCBsb25nICptYXAsCiAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCkK ewogY29uc3Qgc2l6ZV90IGluZGV4ID0gKChzdGFydCkgLyA2NCk7CiBjb25zdCB1bnNpZ25lZCBs b25nIG9mZnNldCA9IHN0YXJ0ICUgNjQ7CgogcmV0dXJuIChtYXBbaW5kZXhdID4+IG9mZnNldCkg JiAweEZGOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGJpdG1hcF9zZXRfdmFsdWU4KHVuc2lnbmVkIGxvbmcgKm1h cCwgdW5zaWduZWQgbG9uZyB2YWx1ZSwKICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCkKewog Y29uc3Qgc2l6ZV90IGluZGV4ID0gKChzdGFydCkgLyA2NCk7CiBjb25zdCB1bnNpZ25lZCBsb25n IG9mZnNldCA9IHN0YXJ0ICUgNjQ7CgogbWFwW2luZGV4XSAmPSB+KDB4RkZVTCA8PCBvZmZzZXQp OwogbWFwW2luZGV4XSB8PSB2YWx1ZSA8PCBvZmZzZXQ7Cn0KIyAxMyAiLi9pbmNsdWRlL2xpbnV4 L2NwdW1hc2suaCIgMgoKCgoKdHlwZWRlZiBzdHJ1Y3QgY3B1bWFzayB7IHVuc2lnbmVkIGxvbmcg Yml0c1soKCg4KSArICgoc2l6ZW9mKGxvbmcpICogOCkpIC0gMSkgLyAoKHNpemVvZihsb25nKSAq IDgpKSldOyB9IGNwdW1hc2tfdDsKIyAzOSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKZXh0 ZXJuIHVuc2lnbmVkIGludCBucl9jcHVfaWRzOwojIDkwICIuL2luY2x1ZGUvbGludXgvY3B1bWFz ay5oIgpleHRlcm4gc3RydWN0IGNwdW1hc2sgX19jcHVfcG9zc2libGVfbWFzazsKZXh0ZXJuIHN0 cnVjdCBjcHVtYXNrIF9fY3B1X29ubGluZV9tYXNrOwpleHRlcm4gc3RydWN0IGNwdW1hc2sgX19j cHVfcHJlc2VudF9tYXNrOwpleHRlcm4gc3RydWN0IGNwdW1hc2sgX19jcHVfYWN0aXZlX21hc2s7 CgoKCgoKZXh0ZXJuIGF0b21pY190IF9fbnVtX29ubGluZV9jcHVzOwojIDExMCAiLi9pbmNsdWRl L2xpbnV4L2NwdW1hc2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IG51bV9vbmxpbmVfY3B1cyh2b2lkKQp7CiBy ZXR1cm4gYXRvbWljX3JlYWQoJl9fbnVtX29ubGluZV9jcHVzKTsKfQojIDEzMiAiLi9pbmNsdWRl L2xpbnV4L2NwdW1hc2suaCIKZXh0ZXJuIGNwdW1hc2tfdCBjcHVzX2Jvb3RlZF9vbmNlX21hc2s7 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGNwdV9tYXhfYml0c193YXJuKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCBi aXRzKQp7CgoKCn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgY3B1bWFza19jaGVjayh1bnNpZ25lZCBpbnQgY3B1 KQp7CiBjcHVfbWF4X2JpdHNfd2FybihjcHUsICgodW5zaWduZWQgaW50KTgpKTsKIHJldHVybiBj cHU7Cn0KIyAyMTIgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBjcHVt YXNrX2ZpcnN0KGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmNwKQp7CiByZXR1cm4gZmluZF9maXJz dF9iaXQoKChzcmNwKS0+Yml0cyksICgodW5zaWduZWQgaW50KTgpKTsKfQoKCgoKCgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWdu ZWQgaW50IGNwdW1hc2tfbGFzdChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCkKewogcmV0dXJu IGZpbmRfbGFzdF9iaXQoKChzcmNwKS0+Yml0cyksICgodW5zaWduZWQgaW50KTgpKTsKfQoKdW5z aWduZWQgaW50IGNwdW1hc2tfbmV4dChpbnQgbiwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyY3Ap OwojIDIzNyAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGNwdW1hc2tf bmV4dF96ZXJvKGludCBuLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCkKewoKIGlmIChuICE9 IC0xKQogIGNwdW1hc2tfY2hlY2sobik7CiByZXR1cm4gZmluZF9uZXh0X3plcm9fYml0KCgoc3Jj cCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSwgbisxKTsKfQoKaW50IGNwdW1hc2tfbmV4dF9h bmQoaW50IG4sIGNvbnN0IHN0cnVjdCBjcHVtYXNrICosIGNvbnN0IHN0cnVjdCBjcHVtYXNrICop OwppbnQgY3B1bWFza19hbnlfYnV0KGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCB1bnNpZ25l ZCBpbnQgY3B1KTsKdW5zaWduZWQgaW50IGNwdW1hc2tfbG9jYWxfc3ByZWFkKHVuc2lnbmVkIGlu dCBpLCBpbnQgbm9kZSk7CiMgMjczICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgpleHRlcm4g aW50IGNwdW1hc2tfbmV4dF93cmFwKGludCBuLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaywg aW50IHN0YXJ0LCBib29sIHdyYXApOwojIDMyNSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBjcHVtYXNrX3NldF9jcHUodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGNwdW1hc2sgKmRz dHApCnsKIHNldF9iaXQoY3B1bWFza19jaGVjayhjcHUpLCAoKGRzdHApLT5iaXRzKSk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgX19jcHVtYXNrX3NldF9jcHUodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGNwdW1hc2sgKmRz dHApCnsKIF9fc2V0X2JpdChjcHVtYXNrX2NoZWNrKGNwdSksICgoZHN0cCktPmJpdHMpKTsKfQoK CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBjcHVtYXNrX2NsZWFyX2NwdShpbnQgY3B1LCBzdHJ1Y3QgY3B1bWFzayAqZHN0 cCkKewogY2xlYXJfYml0KGNwdW1hc2tfY2hlY2soY3B1KSwgKChkc3RwKS0+Yml0cykpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIF9fY3B1bWFza19jbGVhcl9jcHUoaW50IGNwdSwgc3RydWN0IGNwdW1hc2sgKmRzdHApCnsK IF9fY2xlYXJfYml0KGNwdW1hc2tfY2hlY2soY3B1KSwgKChkc3RwKS0+Yml0cykpOwp9CiMgMzU4 ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza190ZXN0X2NwdShpbnQgY3B1 LCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1bWFzaykKewogcmV0dXJuIHRlc3RfYml0KGNwdW1h c2tfY2hlY2soY3B1KSwgKCgoY3B1bWFzaykpLT5iaXRzKSk7Cn0KIyAzNzIgIi4vaW5jbHVkZS9s aW51eC9jcHVtYXNrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBjcHVtYXNrX3Rlc3RfYW5kX3NldF9jcHUoaW50IGNwdSwgc3Ry dWN0IGNwdW1hc2sgKmNwdW1hc2spCnsKIHJldHVybiB0ZXN0X2FuZF9zZXRfYml0KGNwdW1hc2tf Y2hlY2soY3B1KSwgKChjcHVtYXNrKS0+Yml0cykpOwp9CiMgMzg2ICIuL2luY2x1ZGUvbGludXgv Y3B1bWFzay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgY3B1bWFza190ZXN0X2FuZF9jbGVhcl9jcHUoaW50IGNwdSwgc3RydWN0 IGNwdW1hc2sgKmNwdW1hc2spCnsKIHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoY3B1bWFza19j aGVjayhjcHUpLCAoKGNwdW1hc2spLT5iaXRzKSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNwdW1hc2tfc2V0YWxs KHN0cnVjdCBjcHVtYXNrICpkc3RwKQp7CiBiaXRtYXBfZmlsbCgoKGRzdHApLT5iaXRzKSwgKCh1 bnNpZ25lZCBpbnQpOCkpOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjcHVtYXNrX2NsZWFyKHN0cnVjdCBjcHVtYXNr ICpkc3RwKQp7CiBiaXRtYXBfemVybygoKGRzdHApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkp Owp9CiMgNDE3ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza19hbmQoc3Ry dWN0IGNwdW1hc2sgKmRzdHAsCiAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMXAs CiAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMnApCnsKIHJldHVybiBiaXRtYXBf YW5kKCgoZHN0cCktPmJpdHMpLCAoKHNyYzFwKS0+Yml0cyksCiAgICAgICAgICAgKChzcmMycCkt PmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1bWFza19vcihzdHJ1 Y3QgY3B1bWFzayAqZHN0cCwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyYzFwLAogICAgICAgICBj b25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMnApCnsKIGJpdG1hcF9vcigoKGRzdHApLT5iaXRzKSwg KChzcmMxcCktPmJpdHMpLAogICAgICAgICAgKChzcmMycCktPmJpdHMpLCAoKHVuc2lnbmVkIGlu dCk4KSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1bWFza194b3Ioc3RydWN0IGNwdW1hc2sgKmRzdHAsCiAg ICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMXAsCiAgICAgICAgICBjb25zdCBzdHJ1 Y3QgY3B1bWFzayAqc3JjMnApCnsKIGJpdG1hcF94b3IoKChkc3RwKS0+Yml0cyksICgoc3JjMXAp LT5iaXRzKSwKICAgICAgICAgICAoKHNyYzJwKS0+Yml0cyksICgodW5zaWduZWQgaW50KTgpKTsK fQojIDQ2MCAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNwdW1hc2tfYW5kbm90KHN0 cnVjdCBjcHVtYXNrICpkc3RwLAogICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMXAsCiAg ICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmMycCkKewogcmV0dXJuIGJpdG1hcF9hbmRub3Qo KChkc3RwKS0+Yml0cyksICgoc3JjMXApLT5iaXRzKSwKICAgICAgICgoc3JjMnApLT5iaXRzKSwg KCh1bnNpZ25lZCBpbnQpOCkpOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1bWFza19jb21wbGVtZW50KHN0cnVj dCBjcHVtYXNrICpkc3RwLAogICAgICAgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyY3ApCnsK IGJpdG1hcF9jb21wbGVtZW50KCgoZHN0cCktPmJpdHMpLCAoKHNyY3ApLT5iaXRzKSwKICAgICAg ICAgICAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBjcHVtYXNrX2VxdWFsKGNvbnN0 IHN0cnVjdCBjcHVtYXNrICpzcmMxcCwKICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmMycCkK ewogcmV0dXJuIGJpdG1hcF9lcXVhbCgoKHNyYzFwKS0+Yml0cyksICgoc3JjMnApLT5iaXRzKSwK ICAgICAgICgodW5zaWduZWQgaW50KTgpKTsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBjcHVtYXNrX29yX2VxdWFs KGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmMxcCwKICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFz ayAqc3JjMnAsCiAgICAgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyYzNwKQp7CiByZXR1cm4g Yml0bWFwX29yX2VxdWFsKCgoc3JjMXApLT5iaXRzKSwgKChzcmMycCktPmJpdHMpLAogICAgICAg ICAgKChzcmMzcCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBjcHVt YXNrX2ludGVyc2VjdHMoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyYzFwLAogICAgICAgICBjb25z dCBzdHJ1Y3QgY3B1bWFzayAqc3JjMnApCnsKIHJldHVybiBiaXRtYXBfaW50ZXJzZWN0cygoKHNy YzFwKS0+Yml0cyksICgoc3JjMnApLT5iaXRzKSwKICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQp OCkpOwp9CiMgNTI1ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza19zdWJz ZXQoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyYzFwLAogICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNr ICpzcmMycCkKewogcmV0dXJuIGJpdG1hcF9zdWJzZXQoKChzcmMxcCktPmJpdHMpLCAoKHNyYzJw KS0+Yml0cyksCiAgICAgICAgKCh1bnNpZ25lZCBpbnQpOCkpOwp9CgoKCgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBjcHVtYXNr X2VtcHR5KGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmNwKQp7CiByZXR1cm4gYml0bWFwX2VtcHR5 KCgoc3JjcCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGNwdW1hc2tf ZnVsbChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCkKewogcmV0dXJuIGJpdG1hcF9mdWxsKCgo c3JjcCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgY3B1 bWFza193ZWlnaHQoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyY3ApCnsKIHJldHVybiBiaXRtYXBf d2VpZ2h0KCgoc3JjcCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgoKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg Y3B1bWFza19zaGlmdF9yaWdodChzdHJ1Y3QgY3B1bWFzayAqZHN0cCwKICAgICAgICAgICBjb25z dCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCwgaW50IG4pCnsKIGJpdG1hcF9zaGlmdF9yaWdodCgoKGRz dHApLT5iaXRzKSwgKChzcmNwKS0+Yml0cyksIG4sCiAgICAgICAgICAgICgodW5zaWduZWQgaW50 KTgpKTsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBjcHVtYXNrX3NoaWZ0X2xlZnQoc3RydWN0IGNwdW1hc2sgKmRz dHAsCiAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCwgaW50IG4pCnsKIGJpdG1h cF9zaGlmdF9sZWZ0KCgoZHN0cCktPmJpdHMpLCAoKHNyY3ApLT5iaXRzKSwgbiwKICAgICAgICAg ICAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjcHVtYXNrX2NvcHkoc3RydWN0IGNw dW1hc2sgKmRzdHAsCiAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCkKewogYml0bWFwX2Nv cHkoKChkc3RwKS0+Yml0cyksICgoc3JjcCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0K IyA2MzYgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBjcHVtYXNrX3BhcnNlX3VzZXIo Y29uc3QgY2hhciAqYnVmLCBpbnQgbGVuLAogICAgICAgICBzdHJ1Y3QgY3B1bWFzayAqZHN0cCkK ewogcmV0dXJuIGJpdG1hcF9wYXJzZV91c2VyKGJ1ZiwgbGVuLCAoKGRzdHApLT5iaXRzKSwgKCh1 bnNpZ25lZCBpbnQpOCkpOwp9CiMgNjUwICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg Y3B1bWFza19wYXJzZWxpc3RfdXNlcihjb25zdCBjaGFyICpidWYsIGludCBsZW4sCiAgICAgICAg IHN0cnVjdCBjcHVtYXNrICpkc3RwKQp7CiByZXR1cm4gYml0bWFwX3BhcnNlbGlzdF91c2VyKGJ1 ZiwgbGVuLCAoKGRzdHApLT5iaXRzKSwKICAgICAgICAgKCh1bnNpZ25lZCBpbnQpOCkpOwp9CiMg NjY0ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza19wYXJzZShjb25zdCBj aGFyICpidWYsIHN0cnVjdCBjcHVtYXNrICpkc3RwKQp7CiByZXR1cm4gYml0bWFwX3BhcnNlKGJ1 ZiwgKH4wVSksICgoZHN0cCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0KIyA2NzYgIi4v aW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBjcHVsaXN0X3BhcnNlKGNvbnN0IGNoYXIgKmJ1 Ziwgc3RydWN0IGNwdW1hc2sgKmRzdHApCnsKIHJldHVybiBiaXRtYXBfcGFyc2VsaXN0KGJ1Ziwg KChkc3RwKS0+Yml0cyksICgodW5zaWduZWQgaW50KTgpKTsKfQoKCgoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGNw dW1hc2tfc2l6ZSh2b2lkKQp7CiByZXR1cm4gKCgoKCh1bnNpZ25lZCBpbnQpOCkpICsgKChzaXpl b2YobG9uZykgKiA4KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkpKSAqIHNpemVvZihsb25n KTsKfQojIDc0OSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKdHlwZWRlZiBzdHJ1Y3QgY3B1 bWFzayBjcHVtYXNrX3Zhcl90WzFdOwoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBhbGxvY19jcHVtYXNrX3ZhcihjcHVtYXNr X3Zhcl90ICptYXNrLCBnZnBfdCBmbGFncykKewogcmV0dXJuIHRydWU7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYWxsb2Nf Y3B1bWFza192YXJfbm9kZShjcHVtYXNrX3Zhcl90ICptYXNrLCBnZnBfdCBmbGFncywKICAgICAg IGludCBub2RlKQp7CiByZXR1cm4gdHJ1ZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB6YWxsb2NfY3B1bWFza192YXIoY3B1 bWFza192YXJfdCAqbWFzaywgZ2ZwX3QgZmxhZ3MpCnsKIGNwdW1hc2tfY2xlYXIoKm1hc2spOwog cmV0dXJuIHRydWU7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgemFsbG9jX2NwdW1hc2tfdmFyX25vZGUoY3B1bWFza192YXJf dCAqbWFzaywgZ2ZwX3QgZmxhZ3MsCiAgICAgICBpbnQgbm9kZSkKewogY3B1bWFza19jbGVhcigq bWFzayk7CiByZXR1cm4gdHJ1ZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhbGxvY19ib290bWVtX2NwdW1hc2tfdmFyKGNw dW1hc2tfdmFyX3QgKm1hc2spCnsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmcmVlX2NwdW1hc2tfdmFyKGNwdW1hc2tfdmFy X3QgbWFzaykKewp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGZyZWVfYm9vdG1lbV9jcHVtYXNrX3ZhcihjcHVtYXNrX3Zhcl90 IG1hc2spCnsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBjcHVtYXNrX2F2YWlsYWJsZShjcHVtYXNrX3Zhcl90IG1hc2spCnsK IHJldHVybiB0cnVlOwp9CgoKCgpleHRlcm4gY29uc3QgdW5zaWduZWQgbG9uZyBjcHVfYWxsX2Jp dHNbKCgoOCkgKyAoKHNpemVvZihsb25nKSAqIDgpKSAtIDEpIC8gKChzaXplb2YobG9uZykgKiA4 KSkpXTsKIyA4MDkgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCnZvaWQgaW5pdF9jcHVfcHJl c2VudChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjKTsKdm9pZCBpbml0X2NwdV9wb3NzaWJsZShj b25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjKTsKdm9pZCBpbml0X2NwdV9vbmxpbmUoY29uc3Qgc3Ry dWN0IGNwdW1hc2sgKnNyYyk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlc2V0X2NwdV9wb3NzaWJsZV9tYXNrKHZvaWQpCnsK IGJpdG1hcF96ZXJvKCgoJl9fY3B1X3Bvc3NpYmxlX21hc2spLT5iaXRzKSwgOCk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQK c2V0X2NwdV9wb3NzaWJsZSh1bnNpZ25lZCBpbnQgY3B1LCBib29sIHBvc3NpYmxlKQp7CiBpZiAo cG9zc2libGUpCiAgY3B1bWFza19zZXRfY3B1KGNwdSwgJl9fY3B1X3Bvc3NpYmxlX21hc2spOwog ZWxzZQogIGNwdW1hc2tfY2xlYXJfY3B1KGNwdSwgJl9fY3B1X3Bvc3NpYmxlX21hc2spOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkCnNldF9jcHVfcHJlc2VudCh1bnNpZ25lZCBpbnQgY3B1LCBib29sIHByZXNlbnQpCnsKIGlm IChwcmVzZW50KQogIGNwdW1hc2tfc2V0X2NwdShjcHUsICZfX2NwdV9wcmVzZW50X21hc2spOwog ZWxzZQogIGNwdW1hc2tfY2xlYXJfY3B1KGNwdSwgJl9fY3B1X3ByZXNlbnRfbWFzayk7Cn0KCnZv aWQgc2V0X2NwdV9vbmxpbmUodW5zaWduZWQgaW50IGNwdSwgYm9vbCBvbmxpbmUpOwoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApz ZXRfY3B1X2FjdGl2ZSh1bnNpZ25lZCBpbnQgY3B1LCBib29sIGFjdGl2ZSkKewogaWYgKGFjdGl2 ZSkKICBjcHVtYXNrX3NldF9jcHUoY3B1LCAmX19jcHVfYWN0aXZlX21hc2spOwogZWxzZQogIGNw dW1hc2tfY2xlYXJfY3B1KGNwdSwgJl9fY3B1X2FjdGl2ZV9tYXNrKTsKfQojIDg2MiAiLi9pbmNs dWRlL2xpbnV4L2NwdW1hc2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fY2hlY2tfaXNfYml0bWFwKGNvbnN0IHVuc2lnbmVk IGxvbmcgKmJpdG1hcCkKewogcmV0dXJuIDE7Cn0KIyA4NzQgIi4vaW5jbHVkZS9saW51eC9jcHVt YXNrLmgiCmV4dGVybiBjb25zdCB1bnNpZ25lZCBsb25nCiBjcHVfYml0X2JpdG1hcFs2NCArMV1b KCgoOCkgKyAoKHNpemVvZihsb25nKSAqIDgpKSAtIDEpIC8gKChzaXplb2YobG9uZykgKiA4KSkp XTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpnZXRfY3B1X21hc2sodW5zaWduZWQgaW50IGNwdSkK ewogY29uc3QgdW5zaWduZWQgbG9uZyAqcCA9IGNwdV9iaXRfYml0bWFwWzEgKyBjcHUgJSA2NF07 CiBwIC09IGNwdSAvIDY0OwogcmV0dXJuICgoc3RydWN0IGNwdW1hc2sgKikoMSA/IChwKSA6ICh2 b2lkICopc2l6ZW9mKF9fY2hlY2tfaXNfYml0bWFwKHApKSkpOwp9CiMgOTExICIuL2luY2x1ZGUv bGludXgvY3B1bWFzay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzc2l6ZV90CmNwdW1hcF9wcmludF90b19wYWdlYnVmKGJvb2wgbGlz dCwgY2hhciAqYnVmLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaykKewogcmV0dXJuIGJpdG1h cF9wcmludF90b19wYWdlYnVmKGxpc3QsIGJ1ZiwgKChtYXNrKS0+Yml0cyksCiAgICAgICAgICBu cl9jcHVfaWRzKTsKfQojIDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1bWFzay5oIiAyCgpl eHRlcm4gY3B1bWFza192YXJfdCBjcHVfY2FsbGluX21hc2s7CmV4dGVybiBjcHVtYXNrX3Zhcl90 IGNwdV9jYWxsb3V0X21hc2s7CmV4dGVybiBjcHVtYXNrX3Zhcl90IGNwdV9pbml0aWFsaXplZF9t YXNrOwpleHRlcm4gY3B1bWFza192YXJfdCBjcHVfc2libGluZ19zZXR1cF9tYXNrOwoKZXh0ZXJu IHZvaWQgc2V0dXBfY3B1X2xvY2FsX21hc2tzKHZvaWQpOwojIDEyICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL21zci5oIiAyCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL21zci5oIiAx CiMgMTMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNyLmgiIDIKCnN0cnVjdCBtc3IgewogdW5p b24gewogIHN0cnVjdCB7CiAgIHUzMiBsOwogICB1MzIgaDsKICB9OwogIHU2NCBxOwogfTsKfTsK CnN0cnVjdCBtc3JfaW5mbyB7CiB1MzIgbXNyX25vOwogc3RydWN0IG1zciByZWc7CiBzdHJ1Y3Qg bXNyICptc3JzOwogaW50IGVycjsKfTsKCnN0cnVjdCBtc3JfcmVnc19pbmZvIHsKIHUzMiAqcmVn czsKIGludCBlcnI7Cn07CgpzdHJ1Y3Qgc2F2ZWRfbXNyIHsKIGJvb2wgdmFsaWQ7CiBzdHJ1Y3Qg bXNyX2luZm8gaW5mbzsKfTsKCnN0cnVjdCBzYXZlZF9tc3JzIHsKIHVuc2lnbmVkIGludCBudW07 CiBzdHJ1Y3Qgc2F2ZWRfbXNyICphcnJheTsKfTsKIyA2OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9tc3IuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC1kZWZzLmgiIDEKIyAxMiAi Li9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9z dGF0aWNfa2V5LmgiIDEKIyAxMyAiLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oIiAy CgpzdHJ1Y3QgdHJhY2VfcHJpbnRfZmxhZ3MgewogdW5zaWduZWQgbG9uZyBtYXNrOwogY29uc3Qg Y2hhciAqbmFtZTsKfTsKCnN0cnVjdCB0cmFjZV9wcmludF9mbGFnc191NjQgewogdW5zaWduZWQg bG9uZyBsb25nIG1hc2s7CiBjb25zdCBjaGFyICpuYW1lOwp9OwoKc3RydWN0IHRyYWNlcG9pbnRf ZnVuYyB7CiB2b2lkICpmdW5jOwogdm9pZCAqZGF0YTsKIGludCBwcmlvOwp9OwoKc3RydWN0IHRy YWNlcG9pbnQgewogY29uc3QgY2hhciAqbmFtZTsKIHN0cnVjdCBzdGF0aWNfa2V5IGtleTsKIGlu dCAoKnJlZ2Z1bmMpKHZvaWQpOwogdm9pZCAoKnVucmVnZnVuYykodm9pZCk7CiBzdHJ1Y3QgdHJh Y2Vwb2ludF9mdW5jICpmdW5jczsKfTsKCgp0eXBlZGVmIGNvbnN0IGludCB0cmFjZXBvaW50X3B0 cl90OwoKCgoKc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwIHsKIHN0cnVjdCB0cmFjZXBvaW50ICp0 cDsKIHZvaWQgKmJwZl9mdW5jOwogdTMyIG51bV9hcmdzOwogdTMyIHdyaXRhYmxlX3NpemU7Cn0g X19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7CiMgNjkgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vbXNyLmgiIDIKCmV4dGVybiBzdHJ1Y3QgdHJhY2Vwb2ludCBfX3RyYWNlcG9pbnRfcmVh ZF9tc3I7CmV4dGVybiBzdHJ1Y3QgdHJhY2Vwb2ludCBfX3RyYWNlcG9pbnRfd3JpdGVfbXNyOwpl eHRlcm4gc3RydWN0IHRyYWNlcG9pbnQgX190cmFjZXBvaW50X3JkcG1jOwoKZXh0ZXJuIHZvaWQg ZG9fdHJhY2Vfd3JpdGVfbXNyKHVuc2lnbmVkIGludCBtc3IsIHU2NCB2YWwsIGludCBmYWlsZWQp OwpleHRlcm4gdm9pZCBkb190cmFjZV9yZWFkX21zcih1bnNpZ25lZCBpbnQgbXNyLCB1NjQgdmFs LCBpbnQgZmFpbGVkKTsKZXh0ZXJuIHZvaWQgZG9fdHJhY2VfcmRwbWModW5zaWduZWQgaW50IG1z ciwgdTY0IHZhbCwgaW50IGZhaWxlZCk7CiMgOTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNy LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19yZG1zcih1bnNpZ25lZCBpbnQgbXNyKQp7CiB1bnNpZ25lZCBsb25nIGxvdywgaGln aDsKCiBhc20gdm9sYXRpbGUoIjE6IHJkbXNyXG4iCiAgICAgICAiMjpcbiIKICAgICAgICIgLnB1 c2hzZWN0aW9uIFwiX19leF90YWJsZVwiLFwiYVwiXG4iICIgLmJhbGlnbiA0XG4iICIgLmxvbmcg KCIgIjFiIiAiKSAtIC5cbiIgIiAubG9uZyAoIiAiMmIiICIpIC0gLlxuIiAiIC5sb25nICgiICJl eF9oYW5kbGVyX3JkbXNyX3Vuc2FmZSIgIikgLSAuXG4iICIgLnBvcHNlY3Rpb25cbiIKICAgICAg IDogIj1hIiAobG93KSwgIj1kIiAoaGlnaCkgOiAiYyIgKG1zcikpOwoKIHJldHVybiAoKGxvdykg fCAoaGlnaCkgPDwgMzIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX3dybXNyKHVuc2lnbmVkIGludCBtc3IsIHUzMiBsb3csIHUzMiBoaWdoKQp7CiBh c20gdm9sYXRpbGUoIjE6IHdybXNyXG4iCiAgICAgICAiMjpcbiIKICAgICAgICIgLnB1c2hzZWN0 aW9uIFwiX19leF90YWJsZVwiLFwiYVwiXG4iICIgLmJhbGlnbiA0XG4iICIgLmxvbmcgKCIgIjFi IiAiKSAtIC5cbiIgIiAubG9uZyAoIiAiMmIiICIpIC0gLlxuIiAiIC5sb25nICgiICJleF9oYW5k bGVyX3dybXNyX3Vuc2FmZSIgIikgLSAuXG4iICIgLnBvcHNlY3Rpb25cbiIKICAgICAgIDogOiAi YyIgKG1zciksICJhIihsb3cpLCAiZCIgKGhpZ2gpIDogIm1lbW9yeSIpOwp9CiMgMTI1ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL21zci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZlX3JlYWRf bXNyKHVuc2lnbmVkIGludCBtc3IpCnsKIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CgogdmFsID0g X19yZG1zcihtc3IpOwoKIGlmIChzdGF0aWNfa2V5X2ZhbHNlKCYoX190cmFjZXBvaW50X3JlYWRf bXNyKS5rZXkpKQogIGRvX3RyYWNlX3JlYWRfbXNyKG1zciwgdmFsLCAwKTsKCiByZXR1cm4gdmFs Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZlX3JlYWRfbXNyX3NhZmUodW5zaWduZWQgaW50 IG1zciwKICAgICAgICAgICAgaW50ICplcnIpCnsKIHVuc2lnbmVkIGxvbmcgbG93LCBoaWdoOwoK IGFzbSB2b2xhdGlsZSgiMjogcmRtc3IgOyB4b3IgJVtlcnJdLCVbZXJyXVxuIgogICAgICAgIjE6 XG5cdCIKICAgICAgICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG5cdCIKICAgICAgICIzOiBtb3Yg JVtmYXVsdF0sJVtlcnJdXG5cdCIKICAgICAgICJ4b3JsICUlZWF4LCAlJWVheFxuXHQiCiAgICAg ICAieG9ybCAlJWVkeCwgJSVlZHhcblx0IgogICAgICAgImptcCAxYlxuXHQiCiAgICAgICAiLnBy ZXZpb3VzXG5cdCIKICAgICAgICIgLnB1c2hzZWN0aW9uIFwiX19leF90YWJsZVwiLFwiYVwiXG4i ICIgLmJhbGlnbiA0XG4iICIgLmxvbmcgKCIgIjJiIiAiKSAtIC5cbiIgIiAubG9uZyAoIiAiM2Ii ICIpIC0gLlxuIiAiIC5sb25nICgiICJleF9oYW5kbGVyX2RlZmF1bHQiICIpIC0gLlxuIiAiIC5w b3BzZWN0aW9uXG4iCiAgICAgICA6IFtlcnJdICI9ciIgKCplcnIpLCAiPWEiIChsb3cpLCAiPWQi IChoaWdoKQogICAgICAgOiAiYyIgKG1zciksIFtmYXVsdF0gImkiICgtNSkpOwogaWYgKHN0YXRp Y19rZXlfZmFsc2UoJihfX3RyYWNlcG9pbnRfcmVhZF9tc3IpLmtleSkpCiAgZG9fdHJhY2VfcmVh ZF9tc3IobXNyLCAoKGxvdykgfCAoaGlnaCkgPDwgMzIpLCAqZXJyKTsKIHJldHVybiAoKGxvdykg fCAoaGlnaCkgPDwgMzIpOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkKbmF0aXZlX3dyaXRlX21zcih1bnNpZ25lZCBpbnQgbXNyLCB1MzIgbG93LCB1MzIg aGlnaCkKewogX193cm1zcihtc3IsIGxvdywgaGlnaCk7CgogaWYgKHN0YXRpY19rZXlfZmFsc2Uo JihfX3RyYWNlcG9pbnRfd3JpdGVfbXNyKS5rZXkpKQogIGRvX3RyYWNlX3dyaXRlX21zcihtc3Is ICgodTY0KWhpZ2ggPDwgMzIgfCBsb3cpLCAwKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkKbmF0aXZlX3dyaXRlX21zcl9zYWZlKHVuc2lnbmVkIGludCBt c3IsIHUzMiBsb3csIHUzMiBoaWdoKQp7CiBpbnQgZXJyOwoKIGFzbSB2b2xhdGlsZSgiMjogd3Jt c3IgOyB4b3IgJVtlcnJdLCVbZXJyXVxuIgogICAgICAgIjE6XG5cdCIKICAgICAgICIuc2VjdGlv biAuZml4dXAsXCJheFwiXG5cdCIKICAgICAgICIzOiAgbW92ICVbZmF1bHRdLCVbZXJyXSA7IGpt cCAxYlxuXHQiCiAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICIgLnB1c2hzZWN0aW9uIFwi X19leF90YWJsZVwiLFwiYVwiXG4iICIgLmJhbGlnbiA0XG4iICIgLmxvbmcgKCIgIjJiIiAiKSAt IC5cbiIgIiAubG9uZyAoIiAiM2IiICIpIC0gLlxuIiAiIC5sb25nICgiICJleF9oYW5kbGVyX2Rl ZmF1bHQiICIpIC0gLlxuIiAiIC5wb3BzZWN0aW9uXG4iCiAgICAgICA6IFtlcnJdICI9YSIgKGVy cikKICAgICAgIDogImMiIChtc3IpLCAiMCIgKGxvdyksICJkIiAoaGlnaCksCiAgICAgICAgIFtm YXVsdF0gImkiICgtNSkKICAgICAgIDogIm1lbW9yeSIpOwogaWYgKHN0YXRpY19rZXlfZmFsc2Uo JihfX3RyYWNlcG9pbnRfd3JpdGVfbXNyKS5rZXkpKQogIGRvX3RyYWNlX3dyaXRlX21zcihtc3Is ICgodTY0KWhpZ2ggPDwgMzIgfCBsb3cpLCBlcnIpOwogcmV0dXJuIGVycjsKfQoKZXh0ZXJuIGlu dCByZG1zcl9zYWZlX3JlZ3ModTMyIHJlZ3NbOF0pOwpleHRlcm4gaW50IHdybXNyX3NhZmVfcmVn cyh1MzIgcmVnc1s4XSk7CiMgMjAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxvbmcgbG9uZyByZHRzYyh2 b2lkKQp7CiB1bnNpZ25lZCBsb25nIGxvdywgaGlnaDsKCiBhc20gdm9sYXRpbGUoInJkdHNjIiA6 ICI9YSIgKGxvdyksICI9ZCIgKGhpZ2gpKTsKCiByZXR1cm4gKChsb3cpIHwgKGhpZ2gpIDw8IDMy KTsKfQojIDIxOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB1bnNpZ25lZCBsb25nIGxvbmcgcmR0c2Nfb3JkZXJlZCh2b2lk KQp7CiB1bnNpZ25lZCBsb25nIGxvdywgaGlnaDsKIyAyMzYgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vbXNyLmgiCiBhc20gdm9sYXRpbGUoIiMgQUxUOiBvbGRpbnN0cjJcbiIgIjY2MTpcblx0IiAi cmR0c2MiICJcbjY2MjpcbiIgIiMgQUxUOiBwYWRkaW5nMlxuIiAiLnNraXAgLSgoIiAiKCgiICI2 NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAi KSBeICgiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICIpKSAmIC0oLSgoIiAiNjY1IiIxIiJmLSIi NjY0IiIxIiJmIiAiKSA8ICgiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICIpKSkpKSIgIiAtICgi ICI2NjJiLTY2MWIiICIpKSA+IDApICogIiAiKCIgIigoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJm IiAiKSBeICgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikgXiAoIiAiNjY1IiIyIiJmLSIi NjY0IiIyIiJmIiAiKSkgJiAtKC0oKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikgPCAoIiAi NjY1IiIyIiJmLSIiNjY0IiIyIiJmIiAiKSkpKSkiICIgLSAoIiAiNjYyYi02NjFiIiAiKSksIDB4 OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4i ICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2NjQiIjEiImYgLSAuXG4iICIgLndvcmQg IiAiKCAzKjMyKzE4KSIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUg IiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJc biIgIiAubG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIgIjY2NCIiMiIiZiAtIC5cbiIgIiAud29y ZCAiICIoIDEqMzIrMjcpIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MWIiICJcbiIgIiAuYnl0 ZSAiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYyYiIg IlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFjZW1lbnQs IFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxhY2VtZW50ICIgIjEiICJcbiIgIjY2NCIiMSIiOlxuXHQi ICJsZmVuY2U7IHJkdHNjIiAiXG4iICI2NjUiIjEiICI6XG4iICIjIEFMVDogcmVwbGFjZW1lbnQg IiAiMiIgIlxuIiAiNjY0IiIyIiI6XG5cdCIgInJkdHNjcCIgIlxuIiAiNjY1IiIyIiAiOlxuIiAi LnBvcHNlY3Rpb25cbiIKCgogICA6ICI9YSIgKGxvdyksICI9ZCIgKGhpZ2gpCgogICA6OiAiZWN4 Iik7CgogcmV0dXJuICgobG93KSB8IChoaWdoKSA8PCAzMik7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgbG9u ZyBuYXRpdmVfcmVhZF9wbWMoaW50IGNvdW50ZXIpCnsKIHVuc2lnbmVkIGxvbmcgbG93LCBoaWdo OwoKIGFzbSB2b2xhdGlsZSgicmRwbWMiIDogIj1hIiAobG93KSwgIj1kIiAoaGlnaCkgOiAiYyIg KGNvdW50ZXIpKTsKIGlmIChzdGF0aWNfa2V5X2ZhbHNlKCYoX190cmFjZXBvaW50X3JkcG1jKS5r ZXkpKQogIGRvX3RyYWNlX3JkcG1jKGNvdW50ZXIsICgobG93KSB8IChoaWdoKSA8PCAzMiksIDAp OwogcmV0dXJuICgobG93KSB8IChoaWdoKSA8PCAzMik7Cn0KCgoKCiMgMSAiLi9pbmNsdWRlL2xp bnV4L2Vycm5vLmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZXJybm8uaCIgMQoj IDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vZXJybm8uaCIgMQojIDIg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L2Vycm5vLmgiIDIKIyA2ICIuL2luY2x1ZGUvbGludXgvZXJy bm8uaCIgMgojIDI2MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIgMgojIDI3MyAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cm1zcih1bnNpZ25lZCBpbnQgbXNyLCB1 MzIgbG93LCB1MzIgaGlnaCkKewogbmF0aXZlX3dyaXRlX21zcihtc3IsIGxvdywgaGlnaCk7Cn0K CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgd3Jtc3JsKHVuc2lnbmVkIGludCBtc3IsIHU2NCB2YWwpCnsKIG5hdGl2ZV93cml0 ZV9tc3IobXNyLCAodTMyKSh2YWwgJiAweGZmZmZmZmZmVUxMKSwgKHUzMikodmFsID4+IDMyKSk7 Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgd3Jtc3Jfc2FmZSh1bnNpZ25lZCBpbnQgbXNyLCB1MzIgbG93LCB1MzIgaGlnaCkK ewogcmV0dXJuIG5hdGl2ZV93cml0ZV9tc3Jfc2FmZShtc3IsIGxvdywgaGlnaCk7Cn0KIyAzMDIg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCByZG1zcmxfc2FmZSh1bnNpZ25lZCBp bnQgbXNyLCB1bnNpZ25lZCBsb25nIGxvbmcgKnApCnsKIGludCBlcnI7CgogKnAgPSBuYXRpdmVf cmVhZF9tc3Jfc2FmZShtc3IsICZlcnIpOwogcmV0dXJuIGVycjsKfQojIDMyNCAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9tc3IuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHdybXNybF9zYWZlKHUzMiBtc3IsIHU2NCB2YWwpCnsK IHJldHVybiB3cm1zcl9zYWZlKG1zciwgKHUzMil2YWwsICh1MzIpKHZhbCA+PiAzMikpOwp9CgoK CgoKc3RydWN0IG1zciAqbXNyc19hbGxvYyh2b2lkKTsKdm9pZCBtc3JzX2ZyZWUoc3RydWN0IG1z ciAqbXNycyk7CmludCBtc3Jfc2V0X2JpdCh1MzIgbXNyLCB1OCBiaXQpOwppbnQgbXNyX2NsZWFy X2JpdCh1MzIgbXNyLCB1OCBiaXQpOwoKCmludCByZG1zcl9vbl9jcHUodW5zaWduZWQgaW50IGNw dSwgdTMyIG1zcl9ubywgdTMyICpsLCB1MzIgKmgpOwppbnQgd3Jtc3Jfb25fY3B1KHVuc2lnbmVk IGludCBjcHUsIHUzMiBtc3Jfbm8sIHUzMiBsLCB1MzIgaCk7CmludCByZG1zcmxfb25fY3B1KHVu c2lnbmVkIGludCBjcHUsIHUzMiBtc3Jfbm8sIHU2NCAqcSk7CmludCB3cm1zcmxfb25fY3B1KHVu c2lnbmVkIGludCBjcHUsIHUzMiBtc3Jfbm8sIHU2NCBxKTsKdm9pZCByZG1zcl9vbl9jcHVzKGNv bnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCB1MzIgbXNyX25vLCBzdHJ1Y3QgbXNyICptc3JzKTsK dm9pZCB3cm1zcl9vbl9jcHVzKGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCB1MzIgbXNyX25v LCBzdHJ1Y3QgbXNyICptc3JzKTsKaW50IHJkbXNyX3NhZmVfb25fY3B1KHVuc2lnbmVkIGludCBj cHUsIHUzMiBtc3Jfbm8sIHUzMiAqbCwgdTMyICpoKTsKaW50IHdybXNyX3NhZmVfb25fY3B1KHVu c2lnbmVkIGludCBjcHUsIHUzMiBtc3Jfbm8sIHUzMiBsLCB1MzIgaCk7CmludCByZG1zcmxfc2Fm ZV9vbl9jcHUodW5zaWduZWQgaW50IGNwdSwgdTMyIG1zcl9ubywgdTY0ICpxKTsKaW50IHdybXNy bF9zYWZlX29uX2NwdSh1bnNpZ25lZCBpbnQgY3B1LCB1MzIgbXNyX25vLCB1NjQgcSk7CmludCBy ZG1zcl9zYWZlX3JlZ3Nfb25fY3B1KHVuc2lnbmVkIGludCBjcHUsIHUzMiByZWdzWzhdKTsKaW50 IHdybXNyX3NhZmVfcmVnc19vbl9jcHUodW5zaWduZWQgaW50IGNwdSwgdTMyIHJlZ3NbOF0pOwoj IDIzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCgoKIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3NwZWNpYWxfaW5zbnMuaCIgMQojIDE5ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3NwZWNpYWxfaW5zbnMuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19mb3JjZV9vcmRl cjsKCnZvaWQgbmF0aXZlX3dyaXRlX2NyMCh1bnNpZ25lZCBsb25nIHZhbCk7CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBs b25nIG5hdGl2ZV9yZWFkX2NyMCh2b2lkKQp7CiB1bnNpZ25lZCBsb25nIHZhbDsKIGFzbSB2b2xh dGlsZSgibW92ICUlY3IwLCUwXG5cdCIgOiAiPXIiICh2YWwpLCAiPW0iIChfX2ZvcmNlX29yZGVy KSk7CiByZXR1cm4gdmFsOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIG5hdGl2ZV9yZWFkX2NyMih2b2lkKQp7 CiB1bnNpZ25lZCBsb25nIHZhbDsKIGFzbSB2b2xhdGlsZSgibW92ICUlY3IyLCUwXG5cdCIgOiAi PXIiICh2YWwpLCAiPW0iIChfX2ZvcmNlX29yZGVyKSk7CiByZXR1cm4gdmFsOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5h dGl2ZV93cml0ZV9jcjIodW5zaWduZWQgbG9uZyB2YWwpCnsKIGFzbSB2b2xhdGlsZSgibW92ICUw LCUlY3IyIjogOiAiciIgKHZhbCksICJtIiAoX19mb3JjZV9vcmRlcikpOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBs b25nIF9fbmF0aXZlX3JlYWRfY3IzKHZvaWQpCnsKIHVuc2lnbmVkIGxvbmcgdmFsOwogYXNtIHZv bGF0aWxlKCJtb3YgJSVjcjMsJTBcblx0IiA6ICI9ciIgKHZhbCksICI9bSIgKF9fZm9yY2Vfb3Jk ZXIpKTsKIHJldHVybiB2YWw7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbmF0aXZlX3dyaXRlX2NyMyh1bnNpZ25lZCBsb25n IHZhbCkKewogYXNtIHZvbGF0aWxlKCJtb3YgJTAsJSVjcjMiOiA6ICJyIiAodmFsKSwgIm0iIChf X2ZvcmNlX29yZGVyKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgbmF0aXZlX3JlYWRfY3I0KHZvaWQpCnsK IHVuc2lnbmVkIGxvbmcgdmFsOwojIDY5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwZWNpYWxf aW5zbnMuaCIKIGFzbSB2b2xhdGlsZSgibW92ICUlY3I0LCUwXG5cdCIgOiAiPXIiICh2YWwpLCAi PW0iIChfX2ZvcmNlX29yZGVyKSk7CgogcmV0dXJuIHZhbDsKfQoKdm9pZCBuYXRpdmVfd3JpdGVf Y3I0KHVuc2lnbmVkIGxvbmcgdmFsKTsKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgcmRwa3J1KHZvaWQpCnsKIHUzMiBlY3ggPSAw OwogdTMyIGVkeCwgcGtydTsKCgoKCgogYXNtIHZvbGF0aWxlKCIuYnl0ZSAweDBmLDB4MDEsMHhl ZVxuXHQiCiAgICAgICA6ICI9YSIgKHBrcnUpLCAiPWQiIChlZHgpCiAgICAgICA6ICJjIiAoZWN4 KSk7CiByZXR1cm4gcGtydTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cnBrcnUodTMyIHBrcnUpCnsKIHUzMiBlY3ggPSAw LCBlZHggPSAwOwoKCgoKCiBhc20gdm9sYXRpbGUoIi5ieXRlIDB4MGYsMHgwMSwweGVmXG5cdCIK ICAgICAgIDogOiAiYSIgKHBrcnUpLCAiYyIoZWN4KSwgImQiKGVkeCkpOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fd3Jp dGVfcGtydSh1MzIgcGtydSkKewoKCgoKIGlmIChwa3J1ID09IHJkcGtydSgpKQogIHJldHVybjsK CiB3cnBrcnUocGtydSk7Cn0KIyAxMjcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3BlY2lhbF9p bnNucy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIG5hdGl2ZV93YmludmQodm9pZCkKewogYXNtIHZvbGF0aWxlKCJ3YmludmQi OiA6IDoibWVtb3J5Iik7Cn0KCmV4dGVybiB2b2lkIG5hdGl2ZV9sb2FkX2dzX2luZGV4KHVuc2ln bmVkKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGxvbmcgX19yZWFkX2NyNCh2b2lkKQp7CiByZXR1cm4gbmF0aXZlX3Jl YWRfY3I0KCk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIHJlYWRfY3IwKHZvaWQpCnsKIHJldHVybiBu YXRpdmVfcmVhZF9jcjAoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cml0ZV9jcjAodW5zaWduZWQgbG9uZyB4KQp7CiBu YXRpdmVfd3JpdGVfY3IwKHgpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIHJlYWRfY3IyKHZvaWQpCnsKIHJl dHVybiBuYXRpdmVfcmVhZF9jcjIoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cml0ZV9jcjIodW5zaWduZWQgbG9uZyB4 KQp7CiBuYXRpdmVfd3JpdGVfY3IyKHgpOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX3JlYWRfY3Iz KHZvaWQpCnsKIHJldHVybiBfX25hdGl2ZV9yZWFkX2NyMygpOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX2NyMyh1 bnNpZ25lZCBsb25nIHgpCnsKIG5hdGl2ZV93cml0ZV9jcjMoeCk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX193cml0ZV9j cjQodW5zaWduZWQgbG9uZyB4KQp7CiBuYXRpdmVfd3JpdGVfY3I0KHgpOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdiaW52 ZCh2b2lkKQp7CiBuYXRpdmVfd2JpbnZkKCk7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2FkX2dzX2luZGV4KHVuc2ln bmVkIHNlbGVjdG9yKQp7CiBuYXRpdmVfbG9hZF9nc19pbmRleChzZWxlY3Rvcik7Cn0KCgoKCgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGNsZmx1c2godm9sYXRpbGUgdm9pZCAqX19wKQp7CiBhc20gdm9sYXRpbGUoImNsZmx1c2gg JTAiIDogIittIiAoKih2b2xhdGlsZSBjaGFyICopX19wKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY2xmbHVzaG9wdCh2 b2xhdGlsZSB2b2lkICpfX3ApCnsKIGFzbSBfX2lubGluZSB2b2xhdGlsZSAoIiMgQUxUOiBvbGRu c3RyXG4iICI2NjE6XG5cdCIgIi5ieXRlICIgIjB4M2UiICI7IGNsZmx1c2ggJVAwIiAiXG42NjI6 XG4iICIjIEFMVDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIi ZiIgIiktKCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIi MSIiZiIgIiktKCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2Vj dGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9u ZyAiICI2NjQiIjEiImYgLSAuXG4iICIgLndvcmQgIiAiKCA5KjMyKzIzKSIgIlxuIiAiIC5ieXRl ICIgIjY2MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAi XG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNl Y3Rpb24gLmFsdGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVu dCAiICIxIiAiXG4iICI2NjQiIjEiIjpcblx0IiAiLmJ5dGUgMHg2NjsgY2xmbHVzaCAlUDAiICJc biIgIjY2NSIiMSIgIjpcbiIgIi5wb3BzZWN0aW9uXG4iIDogIittIiAoKih2b2xhdGlsZSBjaGFy ICopX19wKSA6ICJpIiAoMCkpCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBjbHdiKHZvbGF0aWxlIHZvaWQgKl9fcCkKewogdm9sYXRpbGUg c3RydWN0IHsgY2hhciB4WzY0XTsgfSAqcCA9IF9fcDsKCiBhc20gdm9sYXRpbGUoIiMgQUxUOiBv bGRpbnN0cjJcbiIgIjY2MTpcblx0IiAiLmJ5dGUgIiAiMHgzZSIgIjsgY2xmbHVzaCAoJVtwYXhd KSIgIlxuNjYyOlxuIiAiIyBBTFQ6IHBhZGRpbmcyXG4iICIuc2tpcCAtKCgiICIoKCIgIjY2NSIi MSIiZi0iIjY2NCIiMSIiZiIgIikgXiAoKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4g KCIgIjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIgIikpICYgLSgtKCgiICI2NjUiIjEiImYtIiI2NjQi IjEiImYiICIpIDwgKCIgIjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIgIikpKSkpIiAiIC0gKCIgIjY2 MmItNjYxYiIgIikpID4gMCkgKiAiICIoIiAiKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIp IF4gKCgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSBeICgiICI2NjUiIjIiImYtIiI2NjQi IjIiImYiICIpKSAmIC0oLSgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSA8ICgiICI2NjUi IjIiImYtIiI2NjQiIjIiImYiICIpKSkpKSIgIiAtICgiICI2NjJiLTY2MWIiICIpKSwgMHg5MFxu IiAiNjYzIiAiOlxuIiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAu bG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIgIjY2NCIiMSIiZiAtIC5cbiIgIiAud29yZCAiICIo IDkqMzIrMjMpIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2 NjUiIjEiImYtIiI2NjQiIjEiImYiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYyYiIgIlxuIiAi IC5sb25nIDY2MWIgLSAuXG4iICIgLmxvbmcgIiAiNjY0IiIyIiJmIC0gLlxuIiAiIC53b3JkICIg IiggOSozMisyNCkiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYxYiIgIlxuIiAiIC5ieXRlICIg IjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjJiIiAiXG4i ICIucG9wc2VjdGlvblxuIiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgXCJh eFwiXG4iICIjIEFMVDogcmVwbGFjZW1lbnQgIiAiMSIgIlxuIiAiNjY0IiIxIiI6XG5cdCIgIi5i eXRlIDB4NjY7IGNsZmx1c2ggKCVbcGF4XSkiICJcbiIgIjY2NSIiMSIgIjpcbiIgIiMgQUxUOiBy ZXBsYWNlbWVudCAiICIyIiAiXG4iICI2NjQiIjIiIjpcblx0IiAiLmJ5dGUgMHg2NiwgMHgwZiwg MHhhZSwgMHgzMCIgIlxuIiAiNjY1IiIyIiAiOlxuIiAiLnBvcHNlY3Rpb25cbiIKCgoKCgogIDog W3BdICIrbSIgKCpwKQogIDogW3BheF0gImEiIChwKSk7Cn0KIyAyNiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L3R5 cGVzLmgiIDEKIyAxMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9mcHUvdHlwZXMuaCIKc3RydWN0 IGZyZWdzX3N0YXRlIHsKIHUzMiBjd2Q7CiB1MzIgc3dkOwogdTMyIHR3ZDsKIHUzMiBmaXA7CiB1 MzIgZmNzOwogdTMyIGZvbzsKIHUzMiBmb3M7CgoKIHUzMiBzdF9zcGFjZVsyMF07CgoKIHUzMiBz dGF0dXM7Cn07CgoKCgoKCgpzdHJ1Y3QgZnhyZWdzX3N0YXRlIHsKIHUxNiBjd2Q7CiB1MTYgc3dk OwogdTE2IHR3ZDsKIHUxNiBmb3A7CiB1bmlvbiB7CiAgc3RydWN0IHsKICAgdTY0IHJpcDsKICAg dTY0IHJkcDsKICB9OwogIHN0cnVjdCB7CiAgIHUzMiBmaXA7CiAgIHUzMiBmY3M7CiAgIHUzMiBm b287CiAgIHUzMiBmb3M7CiAgfTsKIH07CiB1MzIgbXhjc3I7CiB1MzIgbXhjc3JfbWFzazsKCgog dTMyIHN0X3NwYWNlWzMyXTsKCgogdTMyIHhtbV9zcGFjZVs2NF07CgogdTMyIHBhZGRpbmdbMTJd OwoKIHVuaW9uIHsKICB1MzIgcGFkZGluZzFbMTJdOwogIHUzMiBzd19yZXNlcnZlZFsxMl07CiB9 OwoKfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpOwojIDc5ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2ZwdS90eXBlcy5oIgpzdHJ1Y3Qgc3dyZWdzX3N0YXRlIHsKIHUzMiBjd2Q7CiB1MzIg c3dkOwogdTMyIHR3ZDsKIHUzMiBmaXA7CiB1MzIgZmNzOwogdTMyIGZvbzsKIHUzMiBmb3M7Cgog dTMyIHN0X3NwYWNlWzIwXTsKIHU4IGZ0b3A7CiB1OCBjaGFuZ2VkOwogdTggbG9va2FoZWFkOwog dTggbm9fdXBkYXRlOwogdTggcm07CiB1OCBhbGltaXQ7CiBzdHJ1Y3QgbWF0aF9lbXVfaW5mbyAq aW5mbzsKIHUzMiBlbnRyeV9laXA7Cn07CgoKCgplbnVtIHhmZWF0dXJlIHsKIFhGRUFUVVJFX0ZQ LAogWEZFQVRVUkVfU1NFLAoKCgoKIFhGRUFUVVJFX1lNTSwKIFhGRUFUVVJFX0JORFJFR1MsCiBY RkVBVFVSRV9CTkRDU1IsCiBYRkVBVFVSRV9PUE1BU0ssCiBYRkVBVFVSRV9aTU1fSGkyNTYsCiBY RkVBVFVSRV9IaTE2X1pNTSwKIFhGRUFUVVJFX1BUX1VOSU1QTEVNRU5URURfU09fRkFSLAogWEZF QVRVUkVfUEtSVSwKCiBYRkVBVFVSRV9NQVgsCn07CiMgMTM5ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL2ZwdS90eXBlcy5oIgpzdHJ1Y3QgcmVnXzEyOF9iaXQgewogdTggcmVnYnl0ZXNbMTI4Lzhd Owp9OwpzdHJ1Y3QgcmVnXzI1Nl9iaXQgewogdTggcmVnYnl0ZXNbMjU2LzhdOwp9OwpzdHJ1Y3Qg cmVnXzUxMl9iaXQgewogdTggcmVnYnl0ZXNbNTEyLzhdOwp9OwojIDE1OSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9mcHUvdHlwZXMuaCIKc3RydWN0IHltbWhfc3RydWN0IHsKIHN0cnVjdCByZWdf MTI4X2JpdCBoaV95bW1bMTZdOwp9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKCgoKc3Ry dWN0IG1weF9ibmRyZWcgewogdTY0IGxvd2VyX2JvdW5kOwogdTY0IHVwcGVyX2JvdW5kOwp9IF9f YXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKCgoKc3RydWN0IG1weF9ibmRyZWdfc3RhdGUgewog c3RydWN0IG1weF9ibmRyZWcgYm5kcmVnWzRdOwp9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18p KTsKCgoKCgoKc3RydWN0IG1weF9ibmRjc3IgewogdTY0IGJuZGNmZ3U7CiB1NjQgYm5kc3RhdHVz Owp9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKCgoKCnN0cnVjdCBtcHhfYm5kY3NyX3N0 YXRlIHsKIHVuaW9uIHsKICBzdHJ1Y3QgbXB4X2JuZGNzciBibmRjc3I7CiAgdTggcGFkX3RvXzY0 X2J5dGVzWzY0XTsKIH07Cn0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOwoKCgoKCgoKc3Ry dWN0IGF2eF81MTJfb3BtYXNrX3N0YXRlIHsKIHU2NCBvcG1hc2tfcmVnWzhdOwp9IF9fYXR0cmli dXRlX18oKF9fcGFja2VkX18pKTsKCgoKCgoKc3RydWN0IGF2eF81MTJfem1tX3VwcGVyc19zdGF0 ZSB7CiBzdHJ1Y3QgcmVnXzI1Nl9iaXQgem1tX3VwcGVyWzE2XTsKfSBfX2F0dHJpYnV0ZV9fKChf X3BhY2tlZF9fKSk7CgoKCgoKc3RydWN0IGF2eF81MTJfaGkxNl9zdGF0ZSB7CiBzdHJ1Y3QgcmVn XzUxMl9iaXQgaGkxNl96bW1bMTZdOwp9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKCgoK CgpzdHJ1Y3QgcGtydV9zdGF0ZSB7CiB1MzIgcGtydTsKIHUzMiBwYWQ7Cn0gX19hdHRyaWJ1dGVf XygoX19wYWNrZWRfXykpOwoKc3RydWN0IHhzdGF0ZV9oZWFkZXIgewogdTY0IHhmZWF0dXJlczsK IHU2NCB4Y29tcF9idjsKIHU2NCByZXNlcnZlZFs2XTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp KTsKIyAyNTMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L3R5cGVzLmgiCnN0cnVjdCB4cmVn c19zdGF0ZSB7CiBzdHJ1Y3QgZnhyZWdzX3N0YXRlIGkzODc7CiBzdHJ1Y3QgeHN0YXRlX2hlYWRl ciBoZWFkZXI7CiB1OCBleHRlbmRlZF9zdGF0ZV9hcmVhWzBdOwp9IF9fYXR0cmlidXRlX18gKChw YWNrZWQsIGFsaWduZWQgKDY0KSkpOwojIDI2OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9mcHUv dHlwZXMuaCIKdW5pb24gZnByZWdzX3N0YXRlIHsKIHN0cnVjdCBmcmVnc19zdGF0ZSBmc2F2ZTsK IHN0cnVjdCBmeHJlZ3Nfc3RhdGUgZnhzYXZlOwogc3RydWN0IHN3cmVnc19zdGF0ZSBzb2Z0Owog c3RydWN0IHhyZWdzX3N0YXRlIHhzYXZlOwogdTggX19wYWRkaW5nWygoMVVMKSA8PCAxMildOwp9 OwoKCgoKCgpzdHJ1Y3QgZnB1IHsKIyAyOTQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L3R5 cGVzLmgiCiB1bnNpZ25lZCBpbnQgbGFzdF9jcHU7CgoKCgoKCiB1bnNpZ25lZCBsb25nIGF2eDUx Ml90aW1lc3RhbXA7CiMgMzEyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2ZwdS90eXBlcy5oIgog dW5pb24gZnByZWdzX3N0YXRlIHN0YXRlOwoKCgoKfTsKIyAyNyAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdW53aW5kX2hp bnRzLmgiIDEKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL29yY190eXBlcy5oIiAxCiMg NzMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vb3JjX3R5cGVzLmgiCnN0cnVjdCBvcmNfZW50cnkg ewogczE2IHNwX29mZnNldDsKIHMxNiBicF9vZmZzZXQ7CiB1bnNpZ25lZCBzcF9yZWc6NDsKIHVu c2lnbmVkIGJwX3JlZzo0OwogdW5zaWduZWQgdHlwZToyOwogdW5zaWduZWQgZW5kOjE7Cn0gX19h dHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOwoKCgoKCgoKc3RydWN0IHVud2luZF9oaW50IHsKIHUz MiBpcDsKIHMxNiBzcF9vZmZzZXQ7CiB1OCBzcF9yZWc7CiB1OCB0eXBlOwogdTggZW5kOwp9Owoj IDUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdW53aW5kX2hpbnRzLmgiIDIKIyAyOCAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vdm14ZmVhdHVyZXMuaCIgMQojIDI5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nv ci5oIiAyCgojIDEgIi4vaW5jbHVkZS9saW51eC9wZXJzb25hbGl0eS5oIiAxCgoKCgojIDEgIi4v aW5jbHVkZS91YXBpL2xpbnV4L3BlcnNvbmFsaXR5LmgiIDEKIyAxMSAiLi9pbmNsdWRlL3VhcGkv bGludXgvcGVyc29uYWxpdHkuaCIKZW51bSB7CiBVTkFNRTI2ID0gMHgwMDIwMDAwLAogQUREUl9O T19SQU5ET01JWkUgPSAweDAwNDAwMDAsCiBGRFBJQ19GVU5DUFRSUyA9IDB4MDA4MDAwMCwKCgog TU1BUF9QQUdFX1pFUk8gPSAweDAxMDAwMDAsCiBBRERSX0NPTVBBVF9MQVlPVVQgPSAweDAyMDAw MDAsCiBSRUFEX0lNUExJRVNfRVhFQyA9IDB4MDQwMDAwMCwKIEFERFJfTElNSVRfMzJCSVQgPSAw eDA4MDAwMDAsCiBTSE9SVF9JTk9ERSA9IDB4MTAwMDAwMCwKIFdIT0xFX1NFQ09ORFMgPSAweDIw MDAwMDAsCiBTVElDS1lfVElNRU9VVFMgPSAweDQwMDAwMDAsCiBBRERSX0xJTUlUXzNHQiA9IDB4 ODAwMDAwMCwKfTsKIyA0MiAiLi9pbmNsdWRlL3VhcGkvbGludXgvcGVyc29uYWxpdHkuaCIKZW51 bSB7CiBQRVJfTElOVVggPSAweDAwMDAsCiBQRVJfTElOVVhfMzJCSVQgPSAweDAwMDAgfCBBRERS X0xJTUlUXzMyQklULAogUEVSX0xJTlVYX0ZEUElDID0gMHgwMDAwIHwgRkRQSUNfRlVOQ1BUUlMs CiBQRVJfU1ZSNCA9IDB4MDAwMSB8IFNUSUNLWV9USU1FT1VUUyB8IE1NQVBfUEFHRV9aRVJPLAog UEVSX1NWUjMgPSAweDAwMDIgfCBTVElDS1lfVElNRU9VVFMgfCBTSE9SVF9JTk9ERSwKIFBFUl9T Q09TVlIzID0gMHgwMDAzIHwgU1RJQ0tZX1RJTUVPVVRTIHwKICAgICAgV0hPTEVfU0VDT05EUyB8 IFNIT1JUX0lOT0RFLAogUEVSX09TUjUgPSAweDAwMDMgfCBTVElDS1lfVElNRU9VVFMgfCBXSE9M RV9TRUNPTkRTLAogUEVSX1dZU0VWMzg2ID0gMHgwMDA0IHwgU1RJQ0tZX1RJTUVPVVRTIHwgU0hP UlRfSU5PREUsCiBQRVJfSVNDUjQgPSAweDAwMDUgfCBTVElDS1lfVElNRU9VVFMsCiBQRVJfQlNE ID0gMHgwMDA2LAogUEVSX1NVTk9TID0gMHgwMDA2IHwgU1RJQ0tZX1RJTUVPVVRTLAogUEVSX1hF TklYID0gMHgwMDA3IHwgU1RJQ0tZX1RJTUVPVVRTIHwgU0hPUlRfSU5PREUsCiBQRVJfTElOVVgz MiA9IDB4MDAwOCwKIFBFUl9MSU5VWDMyXzNHQiA9IDB4MDAwOCB8IEFERFJfTElNSVRfM0dCLAog UEVSX0lSSVgzMiA9IDB4MDAwOSB8IFNUSUNLWV9USU1FT1VUUywKIFBFUl9JUklYTjMyID0gMHgw MDBhIHwgU1RJQ0tZX1RJTUVPVVRTLAogUEVSX0lSSVg2NCA9IDB4MDAwYiB8IFNUSUNLWV9USU1F T1VUUywKIFBFUl9SSVNDT1MgPSAweDAwMGMsCiBQRVJfU09MQVJJUyA9IDB4MDAwZCB8IFNUSUNL WV9USU1FT1VUUywKIFBFUl9VVzcgPSAweDAwMGUgfCBTVElDS1lfVElNRU9VVFMgfCBNTUFQX1BB R0VfWkVSTywKIFBFUl9PU0Y0ID0gMHgwMDBmLAogUEVSX0hQVVggPSAweDAwMTAsCiBQRVJfTUFT SyA9IDB4MDBmZiwKfTsKIyA2ICIuL2luY2x1ZGUvbGludXgvcGVyc29uYWxpdHkuaCIgMgojIDMx ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCgoKCiMgMSAiLi9pbmNsdWRl L2xpbnV4L2Vyci5oIiAxCgoKCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQv dWFwaS9hc20vZXJybm8uaCIgMQojIDkgIi4vaW5jbHVkZS9saW51eC9lcnIuaCIgMgojIDI0ICIu L2luY2x1ZGUvbGludXgvZXJyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2Vk X3Jlc3VsdF9fKSkgRVJSX1BUUihsb25nIGVycm9yKQp7CiByZXR1cm4gKHZvaWQgKikgZXJyb3I7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGxvbmcgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIFBUUl9FUlIo IGNvbnN0IHZvaWQgKnB0cikKewogcmV0dXJuIChsb25nKSBwdHI7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgX19hdHRyaWJ1 dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIElTX0VSUiggY29uc3Qgdm9pZCAqcHRyKQp7 CiByZXR1cm4gX19idWlsdGluX2V4cGVjdCghISgodW5zaWduZWQgbG9uZykodm9pZCAqKSgodW5z aWduZWQgbG9uZylwdHIpID49ICh1bnNpZ25lZCBsb25nKS00MDk1KSwgMCk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIElTX0VSUl9PUl9OVUxMKCBjb25z dCB2b2lkICpwdHIpCnsKIHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KCEhKCFwdHIpLCAwKSB8fCBf X2J1aWx0aW5fZXhwZWN0KCEhKCh1bnNpZ25lZCBsb25nKSh2b2lkICopKCh1bnNpZ25lZCBsb25n KXB0cikgPj0gKHVuc2lnbmVkIGxvbmcpLTQwOTUpLCAwKTsKfQojIDUxICIuL2luY2x1ZGUvbGlu dXgvZXJyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkg RVJSX0NBU1QoIGNvbnN0IHZvaWQgKnB0cikKewoKIHJldHVybiAodm9pZCAqKSBwdHI7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgUFRSX0VSUl9PUl9aRVJP KCBjb25zdCB2b2lkICpwdHIpCnsKIGlmIChJU19FUlIocHRyKSkKICByZXR1cm4gUFRSX0VSUihw dHIpOwogZWxzZQogIHJldHVybiAwOwp9CiMgMzUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJv Y2Vzc29yLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvaXJxZmxhZ3MuaCIgMQojIDE2ICIuL2lu Y2x1ZGUvbGludXgvaXJxZmxhZ3MuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycWZs YWdzLmgiIDEKIyAxOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFmbGFncy5oIgpleHRlcm4g aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25l ZCBsb25nIG5hdGl2ZV9zYXZlX2ZsKHZvaWQpOwpleHRlcm4gaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIG5hdGl2ZV9zYXZlX2Zs KHZvaWQpCnsKIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgoKCgoKCiBhc20gdm9sYXRpbGUoIiMgX19y YXdfc2F2ZV9mbGFnc1xuXHQiCiAgICAgICAicHVzaGYgOyBwb3AgJTAiCiAgICAgICA6ICI9cm0i IChmbGFncykKICAgICAgIDoKICAgICAgIDogIm1lbW9yeSIpOwoKIHJldHVybiBmbGFnczsKfQoK ZXh0ZXJuIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBuYXRpdmVfcmVzdG9yZV9mbCh1bnNpZ25lZCBsb25nIGZsYWdzKTsKZXh0ZXJuIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBuYXRpdmVf cmVzdG9yZV9mbCh1bnNpZ25lZCBsb25nIGZsYWdzKQp7CiBhc20gdm9sYXRpbGUoInB1c2ggJTAg OyBwb3BmIgogICAgICAgOgogICAgICAgOiJnIiAoZmxhZ3MpCiAgICAgICA6Im1lbW9yeSIsICJj YyIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIG5hdGl2ZV9pcnFfZGlzYWJsZSh2b2lkKQp7CiBhc20gdm9sYXRpbGUoImNs aSI6IDogOiJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBuYXRpdmVfaXJxX2VuYWJsZSh2b2lkKQp7CiBhc20g dm9sYXRpbGUoInN0aSI6IDogOiJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9u X18oIi5jcHVpZGxlLnRleHQiKSkpIHZvaWQgbmF0aXZlX3NhZmVfaGFsdCh2b2lkKQp7CiBtZHNf aWRsZV9jbGVhcl9jcHVfYnVmZmVycygpOwogYXNtIHZvbGF0aWxlKCJzdGk7IGhsdCI6IDogOiJt ZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5jcHVpZGxlLnRleHQiKSkp IHZvaWQgbmF0aXZlX2hhbHQodm9pZCkKewogbWRzX2lkbGVfY2xlYXJfY3B1X2J1ZmZlcnMoKTsK IGFzbSB2b2xhdGlsZSgiaGx0IjogOiA6Im1lbW9yeSIpOwp9CiMgNzcgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vaXJxZmxhZ3MuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHVuc2lnbmVkIGxvbmcgYXJjaF9sb2NhbF9zYXZlX2ZsYWdzKHZvaWQpCnsKIHJldHVybiBu YXRpdmVfc2F2ZV9mbCgpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBhcmNoX2xvY2FsX2lycV9yZXN0b3JlKHVuc2lnbmVkIGxvbmcgZmxhZ3MpCnsKIG5h dGl2ZV9yZXN0b3JlX2ZsKGZsYWdzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgYXJjaF9sb2NhbF9pcnFfZGlzYWJsZSh2b2lkKQp7CiBuYXRpdmVfaXJx X2Rpc2FibGUoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgYXJjaF9sb2NhbF9pcnFfZW5hYmxlKHZvaWQpCnsKIG5hdGl2ZV9pcnFfZW5hYmxlKCk7Cn0K CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmNwdWlkbGUudGV4dCIpKSkgdm9pZCBh cmNoX3NhZmVfaGFsdCh2b2lkKQp7CiBuYXRpdmVfc2FmZV9oYWx0KCk7Cn0KCgoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX3NlY3Rpb25fXygiLmNwdWlkbGUudGV4dCIpKSkgdm9pZCBoYWx0KHZvaWQpCnsK IG5hdGl2ZV9oYWx0KCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBsb25nIGFyY2hfbG9jYWxfaXJxX3NhdmUodm9pZCkKewogdW5zaWduZWQg bG9uZyBmbGFncyA9IGFyY2hfbG9jYWxfc2F2ZV9mbGFncygpOwogYXJjaF9sb2NhbF9pcnFfZGlz YWJsZSgpOwogcmV0dXJuIGZsYWdzOwp9CiMgMTYyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2ly cWZsYWdzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGludCBhcmNoX2lycXNfZGlzYWJsZWRfZmxhZ3ModW5zaWduZWQgbG9uZyBmbGFn cykKewogcmV0dXJuICEoZmxhZ3MgJiAoKCgxVUwpKSA8PCAoOSkpKTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGFyY2hfaXJx c19kaXNhYmxlZCh2b2lkKQp7CiB1bnNpZ25lZCBsb25nIGZsYWdzID0gYXJjaF9sb2NhbF9zYXZl X2ZsYWdzKCk7CgogcmV0dXJuIGFyY2hfaXJxc19kaXNhYmxlZF9mbGFncyhmbGFncyk7Cn0KIyAx NyAiLi9pbmNsdWRlL2xpbnV4L2lycWZsYWdzLmgiIDIKIyAyNSAiLi9pbmNsdWRlL2xpbnV4L2ly cWZsYWdzLmgiCiAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCB0cmFjZV9zb2Z0aXJxc19vbih1bnNpZ25lZCBsb25nIGlwKSB7IH0K ICBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHRyYWNlX3NvZnRpcnFzX29mZih1bnNpZ25lZCBsb25nIGlwKSB7IH0KICBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxv Y2tkZXBfaGFyZGlycXNfb24odW5zaWduZWQgbG9uZyBpcCkgeyB9CiAgc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2NrZGVwX2hh cmRpcnFzX29mZih1bnNpZ25lZCBsb25nIGlwKSB7IH0KIyAzNiAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9wcm9jZXNzb3IuaCIgMgojIDYxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nv ci5oIgplbnVtIHRsYl9pbmZvcyB7CiBFTlRSSUVTLAogTlJfSU5GTwp9OwoKZXh0ZXJuIHUxNiBf X2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRhdGEuLnJlYWRfbW9zdGx5IikpKSB0bGJfbGxp XzRrW05SX0lORk9dOwpleHRlcm4gdTE2IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0 YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9sbGlfMm1bTlJfSU5GT107CmV4dGVybiB1MTYgX19hdHRy aWJ1dGVfXygoX19zZWN0aW9uX18oIi5kYXRhLi5yZWFkX21vc3RseSIpKSkgdGxiX2xsaV80bVtO Ul9JTkZPXTsKZXh0ZXJuIHUxNiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRhdGEuLnJl YWRfbW9zdGx5IikpKSB0bGJfbGxkXzRrW05SX0lORk9dOwpleHRlcm4gdTE2IF9fYXR0cmlidXRl X18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9sbGRfMm1bTlJfSU5G T107CmV4dGVybiB1MTYgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5kYXRhLi5yZWFkX21v c3RseSIpKSkgdGxiX2xsZF80bVtOUl9JTkZPXTsKZXh0ZXJuIHUxNiBfX2F0dHJpYnV0ZV9fKChf X3NlY3Rpb25fXygiLmRhdGEuLnJlYWRfbW9zdGx5IikpKSB0bGJfbGxkXzFnW05SX0lORk9dOwoK CgoKCgoKc3RydWN0IGNwdWluZm9feDg2IHsKIF9fdTggeDg2OwogX191OCB4ODZfdmVuZG9yOwog X191OCB4ODZfbW9kZWw7CiBfX3U4IHg4Nl9zdGVwcGluZzsKCgogaW50IHg4Nl90bGJzaXplOwoK CiBfX3UzMiB2bXhfY2FwYWJpbGl0eVszXTsKCiBfX3U4IHg4Nl92aXJ0X2JpdHM7CiBfX3U4IHg4 Nl9waHlzX2JpdHM7CgogX191OCB4ODZfY29yZWlkX2JpdHM7CiBfX3U4IGN1X2lkOwoKIF9fdTMy IGV4dGVuZGVkX2NwdWlkX2xldmVsOwoKIGludCBjcHVpZF9sZXZlbDsKCgoKCgogdW5pb24gewog IF9fdTMyIHg4Nl9jYXBhYmlsaXR5WzE5ICsgMV07CiAgdW5zaWduZWQgbG9uZyB4ODZfY2FwYWJp bGl0eV9hbGlnbm1lbnQ7CiB9OwogY2hhciB4ODZfdmVuZG9yX2lkWzE2XTsKIGNoYXIgeDg2X21v ZGVsX2lkWzY0XTsKCiB1bnNpZ25lZCBpbnQgeDg2X2NhY2hlX3NpemU7CiBpbnQgeDg2X2NhY2hl X2FsaWdubWVudDsKCiBpbnQgeDg2X2NhY2hlX21heF9ybWlkOwogaW50IHg4Nl9jYWNoZV9vY2Nf c2NhbGU7CiBpbnQgeDg2X3Bvd2VyOwogdW5zaWduZWQgbG9uZyBsb29wc19wZXJfamlmZnk7Cgog dTE2IHg4Nl9tYXhfY29yZXM7CiB1MTYgYXBpY2lkOwogdTE2IGluaXRpYWxfYXBpY2lkOwogdTE2 IHg4Nl9jbGZsdXNoX3NpemU7CgogdTE2IGJvb3RlZF9jb3JlczsKCiB1MTYgcGh5c19wcm9jX2lk OwoKIHUxNiBsb2dpY2FsX3Byb2NfaWQ7CgogdTE2IGNwdV9jb3JlX2lkOwogdTE2IGNwdV9kaWVf aWQ7CiB1MTYgbG9naWNhbF9kaWVfaWQ7CgogdTE2IGNwdV9pbmRleDsKIHUzMiBtaWNyb2NvZGU7 CgogdTggeDg2X2NhY2hlX2JpdHM7CiB1bnNpZ25lZCBpbml0aWFsaXplZCA6IDE7Cn0gX19hdHRy aWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRfXykpOwoKc3RydWN0IGNwdWlkX3JlZ3MgewogdTMy IGVheCwgZWJ4LCBlY3gsIGVkeDsKfTsKCmVudW0gY3B1aWRfcmVnc19pZHggewogQ1BVSURfRUFY ID0gMCwKIENQVUlEX0VCWCwKIENQVUlEX0VDWCwKIENQVUlEX0VEWCwKfTsKIyAxNzAgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiBzdHJ1Y3QgY3B1aW5mb194ODYg Ym9vdF9jcHVfZGF0YTsKZXh0ZXJuIHN0cnVjdCBjcHVpbmZvX3g4NiBuZXdfY3B1X2RhdGE7Cgpl eHRlcm4gX191MzIgY3B1X2NhcHNfY2xlYXJlZFsxOSArIDFdOwpleHRlcm4gX191MzIgY3B1X2Nh cHNfc2V0WzE5ICsgMV07CgoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5w ZXJjcHUiICIuLnJlYWRfbW9zdGx5IikpKSBfX3R5cGVvZl9fKHN0cnVjdCBjcHVpbmZvX3g4Nikg Y3B1X2luZm87CgoKCgoKCmV4dGVybiBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgY3B1aW5m b19vcDsKCgoKZXh0ZXJuIHZvaWQgY3B1X2RldGVjdChzdHJ1Y3QgY3B1aW5mb194ODYgKmMpOwoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dW5zaWduZWQgbG9uZyBsb25nIGwxdGZfcGZuX2xpbWl0KHZvaWQpCnsKIHJldHVybiAoKCgoMVVM TCkpKSA8PCAoYm9vdF9jcHVfZGF0YS54ODZfY2FjaGVfYml0cyAtIDEgLSAxMikpOwp9CgpleHRl cm4gdm9pZCBlYXJseV9jcHVfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgaWRlbnRpZnlfYm9vdF9j cHUodm9pZCk7CmV4dGVybiB2b2lkIGlkZW50aWZ5X3NlY29uZGFyeV9jcHUoc3RydWN0IGNwdWlu Zm9feDg2ICopOwpleHRlcm4gdm9pZCBwcmludF9jcHVfaW5mbyhzdHJ1Y3QgY3B1aW5mb194ODYg Kik7CnZvaWQgcHJpbnRfY3B1X21zcihzdHJ1Y3QgY3B1aW5mb194ODYgKik7CgoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaGF2 ZV9jcHVpZF9wKHZvaWQpCnsKIHJldHVybiAxOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5hdGl2ZV9jcHVpZCh1bnNpZ25l ZCBpbnQgKmVheCwgdW5zaWduZWQgaW50ICplYngsCiAgICB1bnNpZ25lZCBpbnQgKmVjeCwgdW5z aWduZWQgaW50ICplZHgpCnsKCiBhc20gdm9sYXRpbGUoImNwdWlkIgogICAgIDogIj1hIiAoKmVh eCksCiAgICAgICAiPWIiICgqZWJ4KSwKICAgICAgICI9YyIgKCplY3gpLAogICAgICAgIj1kIiAo KmVkeCkKICAgICA6ICIwIiAoKmVheCksICIyIiAoKmVjeCkKICAgICA6ICJtZW1vcnkiKTsKfQoj IDIzNSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IG5h dGl2ZV9jcHVpZF9lYXgodW5zaWduZWQgaW50IG9wKSB7IHVuc2lnbmVkIGludCBlYXggPSBvcCwg ZWJ4LCBlY3ggPSAwLCBlZHg7IG5hdGl2ZV9jcHVpZCgmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsg cmV0dXJuIGVheDsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgbmF0aXZlX2NwdWlkX2VieCh1bnNpZ25lZCBpbnQg b3ApIHsgdW5zaWduZWQgaW50IGVheCA9IG9wLCBlYngsIGVjeCA9IDAsIGVkeDsgbmF0aXZlX2Nw dWlkKCZlYXgsICZlYngsICZlY3gsICZlZHgpOyByZXR1cm4gZWJ4OyB9CnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBu YXRpdmVfY3B1aWRfZWN4KHVuc2lnbmVkIGludCBvcCkgeyB1bnNpZ25lZCBpbnQgZWF4ID0gb3As IGVieCwgZWN4ID0gMCwgZWR4OyBuYXRpdmVfY3B1aWQoJmVheCwgJmVieCwgJmVjeCwgJmVkeCk7 IHJldHVybiBlY3g7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IG5hdGl2ZV9jcHVpZF9lZHgodW5zaWduZWQgaW50 IG9wKSB7IHVuc2lnbmVkIGludCBlYXggPSBvcCwgZWJ4LCBlY3ggPSAwLCBlZHg7IG5hdGl2ZV9j cHVpZCgmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsgcmV0dXJuIGVkeDsgfQoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQg bG9uZyByZWFkX2NyM19wYSh2b2lkKQp7CiByZXR1cm4gX19yZWFkX2NyMygpICYgKDB4N0ZGRkZG RkZGRkZGRjAwMHVsbCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgbmF0aXZlX3JlYWRfY3IzX3BhKHZvaWQp CnsKIHJldHVybiBfX25hdGl2ZV9yZWFkX2NyMygpICYgKDB4N0ZGRkZGRkZGRkZGRjAwMHVsbCk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgbG9hZF9jcjMocGdkX3QgKnBnZGlyKQp7CiB3cml0ZV9jcjMoKF9fcGh5c19hZGRy X25vZGVidWcoKHVuc2lnbmVkIGxvbmcpKHBnZGlyKSkgfCAwVUxMKSk7Cn0KIyAzMTIgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0cnVjdCB4ODZfaHdfdHNzIHsKIHUzMiBy ZXNlcnZlZDE7CiB1NjQgc3AwOwoKCgoKCiB1NjQgc3AxOwoKCgoKCgogdTY0IHNwMjsKCiB1NjQg cmVzZXJ2ZWQyOwogdTY0IGlzdFs3XTsKIHUzMiByZXNlcnZlZDM7CiB1MzIgcmVzZXJ2ZWQ0Owog dTE2IHJlc2VydmVkNTsKIHUxNiBpb19iaXRtYXBfYmFzZTsKCn0gX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7CiMgMzcwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3Qg ZW50cnlfc3RhY2sgewogdW5zaWduZWQgbG9uZyB3b3Jkc1s2NF07Cn07CgpzdHJ1Y3QgZW50cnlf c3RhY2tfcGFnZSB7CiBzdHJ1Y3QgZW50cnlfc3RhY2sgc3RhY2s7Cn0gX19hdHRyaWJ1dGVfXygo X19hbGlnbmVkX18oKCgxVUwpIDw8IDEyKSkpKTsKCgoKCnN0cnVjdCB4ODZfaW9fYml0bWFwIHsK CiB1NjQgcHJldl9zZXF1ZW5jZTsKIyAzOTIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJvY2Vz c29yLmgiCiB1bnNpZ25lZCBpbnQgcHJldl9tYXg7CgoKCgoKCgogdW5zaWduZWQgbG9uZyBiaXRt YXBbKCg2NTUzNiAvIDgpIC8gc2l6ZW9mKGxvbmcpKSArIDFdOwoKCgoKCiB1bnNpZ25lZCBsb25n IG1hcGFsbFsoKDY1NTM2IC8gOCkgLyBzaXplb2YobG9uZykpICsgMV07Cn07CgpzdHJ1Y3QgdHNz X3N0cnVjdCB7CgoKCgoKIHN0cnVjdCB4ODZfaHdfdHNzIHg4Nl90c3M7Cgogc3RydWN0IHg4Nl9p b19iaXRtYXAgaW9fYml0bWFwOwp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgoMVVMKSA8 PCAxMikpKSk7CgpleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIg Ii4ucGFnZV9hbGlnbmVkIikpKSBfX3R5cGVvZl9fKHN0cnVjdCB0c3Nfc3RydWN0KSBjcHVfdHNz X3J3IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgoMVVMKSA8PCAxMikpKSk7CgoKc3RydWN0 IGlycV9zdGFjayB7CiBjaGFyIHN0YWNrWygoKDFVTCkgPDwgMTIpIDw8ICgyICsgMCkpXTsKfSBf X2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoKCgxVUwpIDw8IDEyKSA8PCAoMiArIDApKSkpKTsK CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiIikpKSBfX3R5 cGVvZl9fKHN0cnVjdCBpcnFfc3RhY2sgKikgaGFyZGlycV9zdGFja19wdHI7CiMgNDM3ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgZml4ZWRfcGVyY3B1X2RhdGEg ewoKCgoKCiBjaGFyIGdzX2Jhc2VbNDBdOwogdW5zaWduZWQgbG9uZyBzdGFja19jYW5hcnk7Cn07 CgpleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIi4uZmlyc3Qi KSkpIF9fdHlwZW9mX18oc3RydWN0IGZpeGVkX3BlcmNwdV9kYXRhKSBmaXhlZF9wZXJjcHVfZGF0 YSBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSk7CmV4dGVybiB0eXBlb2Yo Zml4ZWRfcGVyY3B1X2RhdGEpIGluaXRfcGVyX2NwdV9fZml4ZWRfcGVyY3B1X2RhdGE7CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNp Z25lZCBsb25nIGNwdV9rZXJuZWxtb2RlX2dzX2Jhc2UoaW50IGNwdSkKewogcmV0dXJuICh1bnNp Z25lZCBsb25nKSgqKHsgZG8geyBjb25zdCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgm KGZpeGVkX3BlcmNwdV9kYXRhLmdzX2Jhc2UpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3Zw cF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25lZCBsb25nIF9fcHRyOyBfX2FzbV9fICgi IiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigoJihmaXhlZF9wZXJjcHVfZGF0YS5nc19i YXNlKSkpKSAqKSgoJihmaXhlZF9wZXJjcHVfZGF0YS5nc19iYXNlKSkpKSk7ICh0eXBlb2YoKHR5 cGVvZigqKCgmKGZpeGVkX3BlcmNwdV9kYXRhLmdzX2Jhc2UpKSkpICopKCgmKGZpeGVkX3BlcmNw dV9kYXRhLmdzX2Jhc2UpKSkpKSAoX19wdHIgKyAoKChfX3Blcl9jcHVfb2Zmc2V0WyhjcHUpXSkp KSk7IH0pOyB9KSk7Cn0KCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVy Y3B1IiAiIikpKSBfX3R5cGVvZl9fKHVuc2lnbmVkIGludCkgaXJxX2NvdW50OwpleHRlcm4gdm9p ZCBpZ25vcmVfc3lzcmV0KHZvaWQpOwoKCgp2b2lkIHNhdmVfZnNnc19mb3Jfa3ZtKHZvaWQpOwoj IDQ4MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIHVuc2lnbmVk IGludCBmcHVfa2VybmVsX3hzdGF0ZV9zaXplOwpleHRlcm4gdW5zaWduZWQgaW50IGZwdV91c2Vy X3hzdGF0ZV9zaXplOwoKc3RydWN0IHBlcmZfZXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiB1bnNp Z25lZCBsb25nIHNlZzsKfSBtbV9zZWdtZW50X3Q7CgpzdHJ1Y3QgdGhyZWFkX3N0cnVjdCB7Cgog c3RydWN0IGRlc2Nfc3RydWN0IHRsc19hcnJheVszXTsKCgoKIHVuc2lnbmVkIGxvbmcgc3A7CgoK CiB1bnNpZ25lZCBzaG9ydCBlczsKIHVuc2lnbmVkIHNob3J0IGRzOwogdW5zaWduZWQgc2hvcnQg ZnNpbmRleDsKIHVuc2lnbmVkIHNob3J0IGdzaW5kZXg7CgoKCiB1bnNpZ25lZCBsb25nIGZzYmFz ZTsKIHVuc2lnbmVkIGxvbmcgZ3NiYXNlOwojIDUxOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w cm9jZXNzb3IuaCIKIHN0cnVjdCBwZXJmX2V2ZW50ICpwdHJhY2VfYnBzWzRdOwoKIHVuc2lnbmVk IGxvbmcgZGVidWdyZWc2OwoKIHVuc2lnbmVkIGxvbmcgcHRyYWNlX2RyNzsKCiB1bnNpZ25lZCBs b25nIGNyMjsKIHVuc2lnbmVkIGxvbmcgdHJhcF9ucjsKIHVuc2lnbmVkIGxvbmcgZXJyb3JfY29k ZTsKCgoKCgogc3RydWN0IGlvX2JpdG1hcCAqaW9fYml0bWFwOwoKCgoKCgogdW5zaWduZWQgbG9u ZyBpb3BsX2VtdWw7CgogbW1fc2VnbWVudF90IGFkZHJfbGltaXQ7CgogdW5zaWduZWQgaW50IHNp Z19vbl91YWNjZXNzX2VycjoxOwogdW5zaWduZWQgaW50IHVhY2Nlc3NfZXJyOjE7CgoKIHN0cnVj dCBmcHUgZnB1OwoKCgoKfTsKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hfdGhyZWFkX3N0cnVjdF93aGl0ZWxpc3QodW5z aWduZWQgbG9uZyAqb2Zmc2V0LAogICAgICB1bnNpZ25lZCBsb25nICpzaXplKQp7CiAqb2Zmc2V0 ID0gX19idWlsdGluX29mZnNldG9mKHN0cnVjdCB0aHJlYWRfc3RydWN0LCBmcHUuc3RhdGUpOwog KnNpemUgPSBmcHVfa2VybmVsX3hzdGF0ZV9zaXplOwp9CiMgNTcxICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCm5hdGl2ZV9sb2FkX3NwMCh1bnNpZ25lZCBsb25nIHNw MCkKewogZG8geyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1 X3Rzc19ydy54ODZfdHNzLnNwMCkpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3Zlcmlm eTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIHsg Y2FzZSAxOiBkbyB7IHR5cGVkZWYgdHlwZW9mKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgcHRv X1RfXzsgaWYgKDApIHsgcHRvX1RfXyBwdG9fdG1wX187IHB0b190bXBfXyA9IChzcDApOyAodm9p ZClwdG9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSkg eyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInFpIiAoKHB0b19UX18pKHNwMCkp KTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAlMSwiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgOiAicmkiICgocHRvX1Rf Xykoc3AwKSkpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICUxLCIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSA6ICJyaSIg KChwdG9fVF9fKShzcDApKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEg JTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkp IDogInJlIiAoKHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9z aXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgMjogZG8geyB0eXBlZGVmIHR5cGVvZigo Y3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIHB0b19UX187IGlmICgwKSB7IHB0b19UX18gcHRvX3Rt cF9fOyBwdG9fdG1wX18gPSAoc3AwKTsgKHZvaWQpcHRvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9m KChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3Yi ICJiICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKGNwdV90c3NfcncueDg2X3Rzcy5z cDApKSA6ICJxaSIgKChwdG9fVF9fKShzcDApKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGls ZSAoIm1vdiIgIncgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54 ODZfdHNzLnNwMCkpIDogInJpIiAoKHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGNhc2UgNDogYXNt IHZvbGF0aWxlICgibW92IiAibCAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVf dHNzX3J3Lng4Nl90c3Muc3AwKSkgOiAicmkiICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgY2Fz ZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSA6ICJyZSIgKChwdG9fVF9fKShzcDApKSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBj YXNlIDQ6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSBwdG9f VF9fOyBpZiAoMCkgeyBwdG9fVF9fIHB0b190bXBfXzsgcHRvX3RtcF9fID0gKHNwMCk7ICh2b2lk KXB0b190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpKSB7 IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgOiAicWkiICgocHRvX1RfXykoc3AwKSkp OyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICUxLCIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSA6ICJyaSIgKChwdG9fVF9f KShzcDApKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgJTEsIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInJpIiAo KHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAl MSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkg OiAicmUiICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3Np emUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSA4OiBkbyB7IHR5cGVkZWYgdHlwZW9mKChj cHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgcHRvX1RfXzsgaWYgKDApIHsgcHRvX1RfXyBwdG9fdG1w X187IHB0b190bXBfXyA9IChzcDApOyAodm9pZClwdG9fdG1wX187IH0gc3dpdGNoIChzaXplb2Yo KGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIg ImIgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNw MCkpIDogInFpIiAoKHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxl ICgibW92IiAidyAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4 Nl90c3Muc3AwKSkgOiAicmkiICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgY2FzZSA0OiBhc20g dm9sYXRpbGUgKCJtb3YiICJsICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKGNwdV90 c3NfcncueDg2X3Rzcy5zcDApKSA6ICJyaSIgKChwdG9fVF9fKShzcDApKSk7IGJyZWFrOyBjYXNl IDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInJlIiAoKHB0b19UX18pKHNwMCkpKTsgYnJl YWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGRl ZmF1bHQ6IF9fYmFkX3NpemVfY2FsbF9wYXJhbWV0ZXIoKTticmVhazsgfSB9IHdoaWxlICgwKTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBuYXRpdmVfc3dhcGdzKHZvaWQpCnsKCiBhc20gdm9sYXRpbGUoInN3YXBncyIgOjo6 ICJtZW1vcnkiKTsKCn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgY3VycmVudF90b3Bfb2Zfc3RhY2sodm9pZCkK ewoKCgoKCiByZXR1cm4gKHsgdHlwZW9mKGNwdV90c3NfcncueDg2X3Rzcy5zcDEpIHBmb19yZXRf Xzsgc3dpdGNoIChzaXplb2YoY3B1X3Rzc19ydy54ODZfdHNzLnNwMSkpIHsgY2FzZSAxOiBhc20o Im1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiUDEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDog InAiICgmKGNwdV90c3NfcncueDg2X3Rzcy5zcDEpKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSgibW92 IiAidyAiIiUlIiJncyIiOiIgIiUiICJQMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAicCIg KCYoY3B1X3Rzc19ydy54ODZfdHNzLnNwMSkpKTsgYnJlYWs7IGNhc2UgNDogYXNtKCJtb3YiICJs ICIiJSUiImdzIiI6IiAiJSIgIlAxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJwIiAoJihj cHVfdHNzX3J3Lng4Nl90c3Muc3AxKSkpOyBicmVhazsgY2FzZSA4OiBhc20oIm1vdiIgInEgIiIl JSIiZ3MiIjoiICIlIiAiUDEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogInAiICgmKGNwdV90 c3NfcncueDg2X3Rzcy5zcDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgp OyB9IHBmb19yZXRfXzsgfSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgb25fdGhyZWFkX3N0YWNrKHZvaWQpCnsKIHJldHVy biAodW5zaWduZWQgbG9uZykoY3VycmVudF90b3Bfb2Zfc3RhY2soKSAtCiAgICAgICAgICBjdXJy ZW50X3N0YWNrX3BvaW50ZXIpIDwgKCgoMVVMKSA8PCAxMikgPDwgKDIgKyAwKSk7Cn0KCgoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBsb2FkX3NwMCh1bnNpZ25lZCBsb25nIHNwMCkKewogbmF0aXZlX2xvYWRfc3AwKHNwMCk7 Cn0KCgoKCmV4dGVybiB2b2lkIHJlbGVhc2VfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsK CnVuc2lnbmVkIGxvbmcgZ2V0X3djaGFuKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7CgoKCgoKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgY3B1aWQodW5zaWduZWQgaW50IG9wLAogICAgdW5zaWduZWQgaW50ICplYXgsIHVuc2lnbmVk IGludCAqZWJ4LAogICAgdW5zaWduZWQgaW50ICplY3gsIHVuc2lnbmVkIGludCAqZWR4KQp7CiAq ZWF4ID0gb3A7CiAqZWN4ID0gMDsKIG5hdGl2ZV9jcHVpZChlYXgsIGVieCwgZWN4LCBlZHgpOwp9 CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBjcHVpZF9jb3VudCh1bnNpZ25lZCBpbnQgb3AsIGludCBjb3VudCwKICAgICAgICAg IHVuc2lnbmVkIGludCAqZWF4LCB1bnNpZ25lZCBpbnQgKmVieCwKICAgICAgICAgIHVuc2lnbmVk IGludCAqZWN4LCB1bnNpZ25lZCBpbnQgKmVkeCkKewogKmVheCA9IG9wOwogKmVjeCA9IGNvdW50 OwogbmF0aXZlX2NwdWlkKGVheCwgZWJ4LCBlY3gsIGVkeCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBj cHVpZF9lYXgodW5zaWduZWQgaW50IG9wKQp7CiB1bnNpZ25lZCBpbnQgZWF4LCBlYngsIGVjeCwg ZWR4OwoKIGNwdWlkKG9wLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsKCiByZXR1cm4gZWF4Owp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBpbnQgY3B1aWRfZWJ4KHVuc2lnbmVkIGludCBvcCkKewogdW5zaWduZWQgaW50 IGVheCwgZWJ4LCBlY3gsIGVkeDsKCiBjcHVpZChvcCwgJmVheCwgJmVieCwgJmVjeCwgJmVkeCk7 CgogcmV0dXJuIGVieDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGNwdWlkX2VjeCh1bnNpZ25lZCBpbnQgb3Ap CnsKIHVuc2lnbmVkIGludCBlYXgsIGVieCwgZWN4LCBlZHg7CgogY3B1aWQob3AsICZlYXgsICZl YngsICZlY3gsICZlZHgpOwoKIHJldHVybiBlY3g7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBjcHVpZF9lZHgo dW5zaWduZWQgaW50IG9wKQp7CiB1bnNpZ25lZCBpbnQgZWF4LCBlYngsIGVjeCwgZWR4OwoKIGNw dWlkKG9wLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsKCiByZXR1cm4gZWR4Owp9CgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHJlcF9ub3Aodm9pZCkKewogYXNtIHZv bGF0aWxlKCJyZXA7IG5vcCIgOjo6ICJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIGNwdV9yZWxheCh2b2lkKQp7CiByZXBfbm9wKCk7Cn0KIyA3MDUg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc3luY19jb3JlKHZvaWQp CnsKIyA3MzggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCiB1bnNpZ25lZCBp bnQgdG1wOwoKIGFzbSB2b2xhdGlsZSAoCiAgIjk4NzogXG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlz Y2FyZC51bndpbmRfaGludHNcblx0IiAiLmxvbmcgOTg3YiAtIC5cblx0IiAiLnNob3J0ICIgIjAi ICJcblx0IiAiLmJ5dGUgIiAiMCIgIlxuXHQiICIuYnl0ZSAiICIzIiAiXG5cdCIgIi5ieXRlICIg IjAiICJcblx0IiAiLmJhbGlnbiA0IFxuXHQiICIucG9wc2VjdGlvblxuXHQiCiAgIm1vdiAlJXNz LCAlMFxuXHQiCiAgInB1c2hxICVxMFxuXHQiCiAgInB1c2hxICUlcnNwXG5cdCIKICAiYWRkcSAk OCwgKCUlcnNwKVxuXHQiCiAgInB1c2hmcVxuXHQiCiAgIm1vdiAlJWNzLCAlMFxuXHQiCiAgInB1 c2hxICVxMFxuXHQiCiAgInB1c2hxICQxZlxuXHQiCiAgImlyZXRxXG5cdCIKICAiOTg3OiBcblx0 IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVud2luZF9oaW50c1xuXHQiICIubG9uZyA5ODdiIC0g LlxuXHQiICIuc2hvcnQgIiAiMCIgIlxuXHQiICIuYnl0ZSAiICIwIiAiXG5cdCIgIi5ieXRlICIg IjQiICJcblx0IiAiLmJ5dGUgIiAiMCIgIlxuXHQiICIuYmFsaWduIDQgXG5cdCIgIi5wb3BzZWN0 aW9uXG5cdCIKICAiMToiCiAgOiAiPSZyIiAodG1wKSwgIityIiAoY3VycmVudF9zdGFja19wb2lu dGVyKSA6IDogImNjIiwgIm1lbW9yeSIpOwoKfQoKZXh0ZXJuIHZvaWQgc2VsZWN0X2lkbGVfcm91 dGluZShjb25zdCBzdHJ1Y3QgY3B1aW5mb194ODYgKmMpOwpleHRlcm4gdm9pZCBhbWRfZTQwMF9j MWVfYXBpY19zZXR1cCh2b2lkKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGJvb3Rfb3B0aW9uX2lk bGVfb3ZlcnJpZGU7CgplbnVtIGlkbGVfYm9vdF9vdmVycmlkZSB7SURMRV9OT19PVkVSUklERT0w LCBJRExFX0hBTFQsIElETEVfTk9NV0FJVCwKICAgIElETEVfUE9MTH07CgpleHRlcm4gdm9pZCBl bmFibGVfc2VwX2NwdSh2b2lkKTsKZXh0ZXJuIGludCBzeXNlbnRlcl9zZXR1cCh2b2lkKTsKCgoK ZXh0ZXJuIHN0cnVjdCBkZXNjX3B0ciBlYXJseV9nZHRfZGVzY3I7CgpleHRlcm4gdm9pZCBzd2l0 Y2hfdG9fbmV3X2dkdChpbnQpOwpleHRlcm4gdm9pZCBsb2FkX2RpcmVjdF9nZHQoaW50KTsKZXh0 ZXJuIHZvaWQgbG9hZF9maXhtYXBfZ2R0KGludCk7CmV4dGVybiB2b2lkIGxvYWRfcGVyY3B1X3Nl Z21lbnQoaW50KTsKZXh0ZXJuIHZvaWQgY3B1X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGNyNF9p bml0KHZvaWQpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBnZXRfZGVidWdjdGxtc3Iodm9pZCkKewogdW5zaWdu ZWQgbG9uZyBkZWJ1Z2N0bG1zciA9IDA7CgoKCgoKICgoZGVidWdjdGxtc3IpID0gbmF0aXZlX3Jl YWRfbXNyKCgweDAwMDAwMWQ5KSkpOwoKIHJldHVybiBkZWJ1Z2N0bG1zcjsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB1cGRh dGVfZGVidWdjdGxtc3IodW5zaWduZWQgbG9uZyBkZWJ1Z2N0bG1zcikKewoKCgoKIHdybXNybCgw eDAwMDAwMWQ5LCBkZWJ1Z2N0bG1zcik7Cn0KCmV4dGVybiB2b2lkIHNldF90YXNrX2Jsb2Nrc3Rl cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGJvb2wgb24pOwoKCmV4dGVybiBpbnQgYm9vdGxv YWRlcl90eXBlOwpleHRlcm4gaW50IGJvb3Rsb2FkZXJfdmVyc2lvbjsKCmV4dGVybiBjaGFyIGln bm9yZV9mcHVfaXJxOwojIDgyNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBwcmVmZXRjaChjb25zdCB2b2lkICp4KQp7CiBhc20gX19pbmxpbmUgdm9sYXRpbGUgKCIj IEFMVDogb2xkbnN0clxuIiAiNjYxOlxuXHQiICJwcmVmZXRjaHQwICVQMSIgIlxuNjYyOlxuIiAi IyBBTFQ6IHBhZGRpbmdcbiIgIi5za2lwIC0oKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIp LSgiICI2NjJiLTY2MWIiICIpKSA+IDApICogIiAiKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYi ICIpLSgiICI2NjJiLTY2MWIiICIpKSwweDkwXG4iICI2NjMiICI6XG4iICIucHVzaHNlY3Rpb24g LmFsdGluc3RydWN0aW9ucyxcImFcIlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIgLmxvbmcgIiAi NjY0IiIxIiJmIC0gLlxuIiAiIC53b3JkICIgIiggMCozMisyNSkiICJcbiIgIiAuYnl0ZSAiICI2 NjMiImItNjYxYiIgIlxuIiAiIC5ieXRlICIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIlxuIiAi IC5ieXRlICIgIjY2MyIiYi02NjJiIiAiXG4iICIucG9wc2VjdGlvblxuIiAiLnB1c2hzZWN0aW9u IC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgXCJheFwiXG4iICIjIEFMVDogcmVwbGFjZW1lbnQgIiAi MSIgIlxuIiAiNjY0IiIxIiI6XG5cdCIgInByZWZldGNobnRhICVQMSIgIlxuIiAiNjY1IiIxIiAi OlxuIiAiLnBvcHNlY3Rpb25cbiIgOiA6ICJpIiAoMCksICJtIiAoKihjb25zdCBjaGFyICopeCkp CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcHJlZmV0Y2h3KGNv bnN0IHZvaWQgKngpCnsKIGFzbSBfX2lubGluZSB2b2xhdGlsZSAoIiMgQUxUOiBvbGRuc3RyXG4i ICI2NjE6XG5cdCIgInByZWZldGNodDAgJVAxIiAiXG42NjI6XG4iICIjIEFMVDogcGFkZGluZ1xu IiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIiktKCIgIjY2MmItNjYxYiIg IikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIiktKCIgIjY2MmItNjYx YiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25z LFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2NjQiIjEiImYgLSAuXG4i ICIgLndvcmQgIiAiKCA2KjMyKyA4KSIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjFiIiAiXG4i ICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJi LTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RyX3JlcGxh Y2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIxIiAiXG4iICI2NjQiIjEi Ijpcblx0IiAicHJlZmV0Y2h3ICVQMSIgIlxuIiAiNjY1IiIxIiAiOlxuIiAiLnBvcHNlY3Rpb25c biIgOiA6ICJpIiAoMCksICJtIiAoKihjb25zdCBjaGFyICopeCkpCgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNwaW5fbG9ja19wcmVmZXRjaChjb25zdCB2b2lkICp4KQp7 CiBwcmVmZXRjaHcoeCk7Cn0KIyA5MjUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29y LmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIEtTVEtfRVNQKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFz ayk7CgoKCmV4dGVybiB2b2lkIHN0YXJ0X3RocmVhZChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5z aWduZWQgbG9uZyBuZXdfaXAsCiAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbmV3X3NwKTsKIyA5 NDUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiBpbnQgZ2V0X3Rz Y19tb2RlKHVuc2lnbmVkIGxvbmcgYWRyKTsKZXh0ZXJuIGludCBzZXRfdHNjX21vZGUodW5zaWdu ZWQgaW50IHZhbCk7CgpleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNw dSIgIiIpKSkgX190eXBlb2ZfXyh1NjQpIG1zcl9taXNjX2ZlYXR1cmVzX3NoYWRvdzsKCgpleHRl cm4gdTE2IGFtZF9nZXRfbmJfaWQoaW50IGNwdSk7CmV4dGVybiB1MzIgYW1kX2dldF9ub2Rlc19w ZXJfc29ja2V0KHZvaWQpOwoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHVpbnQzMl90IGh5cGVydmlzb3JfY3B1aWRfYmFzZShjb25z dCBjaGFyICpzaWcsIHVpbnQzMl90IGxlYXZlcykKewogdWludDMyX3QgYmFzZSwgZWF4LCBzaWdu YXR1cmVbM107CgogZm9yIChiYXNlID0gMHg0MDAwMDAwMDsgYmFzZSA8IDB4NDAwMTAwMDA7IGJh c2UgKz0gMHgxMDApIHsKICBjcHVpZChiYXNlLCAmZWF4LCAmc2lnbmF0dXJlWzBdLCAmc2lnbmF0 dXJlWzFdLCAmc2lnbmF0dXJlWzJdKTsKCiAgaWYgKCFtZW1jbXAoc2lnLCBzaWduYXR1cmUsIDEy KSAmJgogICAgICAobGVhdmVzID09IDAgfHwgKChlYXggLSBiYXNlKSA+PSBsZWF2ZXMpKSkKICAg cmV0dXJuIGJhc2U7CiB9CgogcmV0dXJuIDA7Cn0KCmV4dGVybiB1bnNpZ25lZCBsb25nIGFyY2hf YWxpZ25fc3RhY2sodW5zaWduZWQgbG9uZyBzcCk7CnZvaWQgZnJlZV9pbml0X3BhZ2VzKGNvbnN0 IGNoYXIgKndoYXQsIHVuc2lnbmVkIGxvbmcgYmVnaW4sIHVuc2lnbmVkIGxvbmcgZW5kKTsKZXh0 ZXJuIHZvaWQgZnJlZV9rZXJuZWxfaW1hZ2VfcGFnZXMoY29uc3QgY2hhciAqd2hhdCwgdm9pZCAq YmVnaW4sIHZvaWQgKmVuZCk7Cgp2b2lkIGRlZmF1bHRfaWRsZSh2b2lkKTsKCgoKCgoKdm9pZCBz dG9wX3RoaXNfY3B1KHZvaWQgKmR1bW15KTsKdm9pZCBtaWNyb2NvZGVfY2hlY2sodm9pZCk7Cgpl bnVtIGwxdGZfbWl0aWdhdGlvbnMgewogTDFURl9NSVRJR0FUSU9OX09GRiwKIEwxVEZfTUlUSUdB VElPTl9GTFVTSF9OT1dBUk4sCiBMMVRGX01JVElHQVRJT05fRkxVU0gsCiBMMVRGX01JVElHQVRJ T05fRkxVU0hfTk9TTVQsCiBMMVRGX01JVElHQVRJT05fRlVMTCwKIEwxVEZfTUlUSUdBVElPTl9G VUxMX0ZPUkNFCn07CgpleHRlcm4gZW51bSBsMXRmX21pdGlnYXRpb25zIGwxdGZfbWl0aWdhdGlv bjsKCmVudW0gbWRzX21pdGlnYXRpb25zIHsKIE1EU19NSVRJR0FUSU9OX09GRiwKIE1EU19NSVRJ R0FUSU9OX0ZVTEwsCiBNRFNfTUlUSUdBVElPTl9WTVdFUlYsCn07CiMgNiAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9jcHVmZWF0dXJlLmgiIDIKCgoKCgoKZW51bSBjcHVpZF9sZWFmcwp7CiBDUFVJ RF8xX0VEWCA9IDAsCiBDUFVJRF84MDAwXzAwMDFfRURYLAogQ1BVSURfODA4Nl8wMDAxX0VEWCwK IENQVUlEX0xOWF8xLAogQ1BVSURfMV9FQ1gsCiBDUFVJRF9DMDAwXzAwMDFfRURYLAogQ1BVSURf ODAwMF8wMDAxX0VDWCwKIENQVUlEX0xOWF8yLAogQ1BVSURfTE5YXzMsCiBDUFVJRF83XzBfRUJY LAogQ1BVSURfRF8xX0VBWCwKIENQVUlEX0xOWF80LAogQ1BVSURfN18xX0VBWCwKIENQVUlEXzgw MDBfMDAwOF9FQlgsCiBDUFVJRF82X0VBWCwKIENQVUlEXzgwMDBfMDAwQV9FRFgsCiBDUFVJRF83 X0VDWCwKIENQVUlEXzgwMDBfMDAwN19FQlgsCiBDUFVJRF83X0VEWCwKfTsKCgpleHRlcm4gY29u c3QgY2hhciAqIGNvbnN0IHg4Nl9jYXBfZmxhZ3NbMTkqMzJdOwpleHRlcm4gY29uc3QgY2hhciAq IGNvbnN0IHg4Nl9wb3dlcl9mbGFnc1szMl07CiMgNDkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v Y3B1ZmVhdHVyZS5oIgpleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IHg4Nl9idWdfZmxhZ3NbMSoz Ml07CiMgMTQxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCIKZXh0ZXJuIHZv aWQgc2V0dXBfY2xlYXJfY3B1X2NhcCh1bnNpZ25lZCBpbnQgYml0KTsKZXh0ZXJuIHZvaWQgY2xl YXJfY3B1X2NhcChzdHJ1Y3QgY3B1aW5mb194ODYgKmMsIHVuc2lnbmVkIGludCBiaXQpOwojIDE3 MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgYm9vbCBfc3RhdGljX2NwdV9oYXModTE2IGJpdCkKewogZG8geyBh c20gZ290bygiMTogam1wIDZmXG4iICIyOlxuIiAiLnNraXAgLSgoKDVmLTRmKSAtICgyYi0xYikp ID4gMCkgKiAiICIoKDVmLTRmKSAtICgyYi0xYikpLDB4OTBcbiIgIjM6XG4iICIuc2VjdGlvbiAu YWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgMWIgLSAuXG4iICIgLmxvbmcgNGYgLSAu XG4iICIgLndvcmQgJVBbYWx3YXlzXVxuIiAiIC5ieXRlIDNiIC0gMWJcbiIgIiAuYnl0ZSA1ZiAt IDRmXG4iICIgLmJ5dGUgM2IgLSAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiAuYWx0aW5z dHJfcmVwbGFjZW1lbnQsXCJheFwiXG4iICI0OiBqbXAgJWxbdF9ub11cbiIgIjU6XG4iICIucHJl dmlvdXNcbiIgIi5zZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAubG9uZyAxYiAt IC5cbiIgIiAubG9uZyAwXG4iICIgLndvcmQgJVBbZmVhdHVyZV1cbiIgIiAuYnl0ZSAzYiAtIDFi XG4iICIgLmJ5dGUgMFxuIiAiIC5ieXRlIDBcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gLmFs dGluc3RyX2F1eCxcImF4XCJcbiIgIjY6XG4iICIgdGVzdGIgJVtiaXRudW1dLCVbY2FwX2J5dGVd XG4iICIgam56ICVsW3RfeWVzXVxuIiAiIGptcCAlbFt0X25vXVxuIiAiLnByZXZpb3VzXG4iIDog OiBbZmVhdHVyZV0gImkiIChiaXQpLCBbYWx3YXlzXSAiaSIgKCggMyozMisyMSkpLCBbYml0bnVt XSAiaSIgKDEgPDwgKGJpdCAmIDcpKSwgW2NhcF9ieXRlXSAibSIgKCgoY29uc3QgY2hhciAqKWJv b3RfY3B1X2RhdGEueDg2X2NhcGFiaWxpdHkpW2JpdCA+PiAzXSkgOiA6IHRfeWVzLCB0X25vKTsg YXNtICgiIik7IH0gd2hpbGUgKDApCiMgMjEwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZl YXR1cmUuaCIKICAgICAgICAgICAgICAgICAgIDsKdF95ZXM6CiByZXR1cm4gdHJ1ZTsKdF9ubzoK IHJldHVybiBmYWxzZTsKfQojIDU0ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZv LmgiIDIKCgpzdHJ1Y3QgdGhyZWFkX2luZm8gewogdW5zaWduZWQgbG9uZyBmbGFnczsKIHUzMiBz dGF0dXM7Cn07CiMgMTg2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBhcmNoX3dpdGhpbl9zdGFja19mcmFtZXMoY29uc3Qgdm9pZCAqIGNvbnN0IHN0YWNrLAogICAg ICAgIGNvbnN0IHZvaWQgKiBjb25zdCBzdGFja2VuZCwKICAgICAgICBjb25zdCB2b2lkICpvYmos IHVuc2lnbmVkIGxvbmcgbGVuKQp7CiMgMjE4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVh ZF9pbmZvLmgiCiByZXR1cm4gTk9UX1NUQUNLOwoKfQojIDI0MiAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS90aHJlYWRfaW5mby5oIgpleHRlcm4gdm9pZCBhcmNoX3Rhc2tfY2FjaGVfaW5pdCh2b2lk KTsKZXh0ZXJuIGludCBhcmNoX2R1cF90YXNrX3N0cnVjdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKmRz dCwgc3RydWN0IHRhc2tfc3RydWN0ICpzcmMpOwpleHRlcm4gdm9pZCBhcmNoX3JlbGVhc2VfdGFz a19zdHJ1Y3Qoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spOwpleHRlcm4gdm9pZCBhcmNoX3NldHVw X25ld19leGVjKHZvaWQpOwojIDM5ICIuL2luY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIgMgoj IDUzICIuL2luY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzZXRfdGlfdGhyZWFkX2Zs YWcoc3RydWN0IHRocmVhZF9pbmZvICp0aSwgaW50IGZsYWcpCnsKIHNldF9iaXQoZmxhZywgKHVu c2lnbmVkIGxvbmcgKikmdGktPmZsYWdzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGVhcl90aV90aHJlYWRfZmxhZyhz dHJ1Y3QgdGhyZWFkX2luZm8gKnRpLCBpbnQgZmxhZykKewogY2xlYXJfYml0KGZsYWcsICh1bnNp Z25lZCBsb25nICopJnRpLT5mbGFncyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdXBkYXRlX3RpX3RocmVhZF9mbGFnKHN0 cnVjdCB0aHJlYWRfaW5mbyAqdGksIGludCBmbGFnLAogICAgICBib29sIHZhbHVlKQp7CiBpZiAo dmFsdWUpCiAgc2V0X3RpX3RocmVhZF9mbGFnKHRpLCBmbGFnKTsKIGVsc2UKICBjbGVhcl90aV90 aHJlYWRfZmxhZyh0aSwgZmxhZyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0ZXN0X2FuZF9zZXRfdGlfdGhyZWFkX2ZsYWco c3RydWN0IHRocmVhZF9pbmZvICp0aSwgaW50IGZsYWcpCnsKIHJldHVybiB0ZXN0X2FuZF9zZXRf Yml0KGZsYWcsICh1bnNpZ25lZCBsb25nICopJnRpLT5mbGFncyk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0ZXN0X2FuZF9j bGVhcl90aV90aHJlYWRfZmxhZyhzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpLCBpbnQgZmxhZykKewog cmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChmbGFnLCAodW5zaWduZWQgbG9uZyAqKSZ0aS0+Zmxh Z3MpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgdGVzdF90aV90aHJlYWRfZmxhZyhzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpLCBp bnQgZmxhZykKewogcmV0dXJuIHRlc3RfYml0KGZsYWcsICh1bnNpZ25lZCBsb25nICopJnRpLT5m bGFncyk7Cn0KIyAxMjIgIi4vaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNoZWNr X29iamVjdF9zaXplKGNvbnN0IHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBuLAogICAgICAgICBi b29sIHRvX3VzZXIpCnsgfQoKCmV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygi Y29weSBzb3VyY2Ugc2l6ZSBpcyB0b28gc21hbGwiKSkpCl9fYmFkX2NvcHlfZnJvbSh2b2lkKTsK ZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJjb3B5IGRlc3RpbmF0aW9uIHNp emUgaXMgdG9vIHNtYWxsIikpKQpfX2JhZF9jb3B5X3RvKHZvaWQpOwoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjb3B5X292ZXJm bG93KGludCBzaXplLCB1bnNpZ25lZCBsb25nIGNvdW50KQp7CiAoeyBpbnQgX19yZXRfd2Fybl9v biA9ICEhKDEpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRv IHsgX193YXJuX3ByaW50aygiQnVmZmVyIG92ZXJmbG93IGRldGVjdGVkICglZCA8ICVsdSkhXG4i LCBzaXplLCBjb3VudCk7IGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIu Ynl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4i ICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4i ICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQu d29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdf ZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAo ImluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIpLCAiaSIgKDEzNCksICJpIiAoKDEgPDwgMCl8 KCgxIDw8IDMpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkp OyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAu ZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25c blx0IiA6IDogImkiICgwKSk7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRp bl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkg Ym9vbApjaGVja19jb3B5X3NpemUoY29uc3Qgdm9pZCAqYWRkciwgc2l6ZV90IGJ5dGVzLCBib29s IGlzX3NvdXJjZSkKewogaW50IHN6ID0gX19idWlsdGluX29iamVjdF9zaXplKGFkZHIsIDApOwog aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoc3ogPj0gMCAmJiBzeiA8IGJ5dGVzKSwgMCkpIHsKICBp ZiAoIV9fYnVpbHRpbl9jb25zdGFudF9wKGJ5dGVzKSkKICAgY29weV9vdmVyZmxvdyhzeiwgYnl0 ZXMpOwogIGVsc2UgaWYgKGlzX3NvdXJjZSkKICAgX19iYWRfY29weV9mcm9tKCk7CiAgZWxzZQog ICBfX2JhZF9jb3B5X3RvKCk7CiAgcmV0dXJuIGZhbHNlOwogfQogaWYgKCh7IGludCBfX3JldF93 YXJuX29uID0gISEoYnl0ZXMgPiAoKGludCkofjBVID4+IDEpKSk7IGlmIChfX2J1aWx0aW5fZXhw ZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGls ZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJs ZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6 YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5Ojpm aWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMy IiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9u IiA6IDogImkiICgiaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oIiksICJpIiAoMTUwKSwgImki ICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBi dWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1 c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIu cG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDEpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5f ZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSkpCiAgcmV0dXJuIGZhbHNlOwogY2hlY2tf b2JqZWN0X3NpemUoYWRkciwgYnl0ZXMsIGlzX3NvdXJjZSk7CiByZXR1cm4gdHJ1ZTsKfQojIDgg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJlZW1wdC5oIiAyCgpleHRlcm4gX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIiIpKSkgX190eXBlb2ZfXyhpbnQpIF9fcHJlZW1w dF9jb3VudDsKIyAyNCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcmVlbXB0LmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IHByZWVtcHRfY291bnQodm9pZCkKewogcmV0 dXJuICh7IHR5cGVvZihfX3ByZWVtcHRfY291bnQpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2Yo X19wcmVlbXB0X2NvdW50KSkgeyBjYXNlIDE6IGFzbSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIl IiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3VudCkpOyBi cmVhazsgY2FzZSAyOiBhc20gKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXIiIChwZm9fcmV0X18pIDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGNhc2UgNDog YXNtICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9f KSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7IGJyZWFrOyBjYXNlIDg6IGFzbSAoIm1vdiIgInEg IiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJl ZW1wdF9jb3VudCkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9f cmV0X187IH0pICYgfjB4ODAwMDAwMDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdm9pZCBwcmVlbXB0X2NvdW50X3NldChpbnQgcGMpCnsKIGludCBvbGQsIG5ldzsKCiBk byB7CiAgb2xkID0gKHsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGZvX3JldF9fOyBzd2l0Y2gg KHNpemVvZihfX3ByZWVtcHRfY291bnQpKSB7IGNhc2UgMTogYXNtICgibW92IiAiYiAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2Nv dW50KSk7IGJyZWFrOyBjYXNlIDI6IGFzbSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIi LCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3VudCkpOyBicmVhazsg Y2FzZSA0OiBhc20gKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChw Zm9fcmV0X18pIDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGNhc2UgODogYXNtICgi bW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJt IiAoX19wcmVlbXB0X2NvdW50KSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgp OyB9IHBmb19yZXRfXzsgfSk7CiAgbmV3ID0gKG9sZCAmIDB4ODAwMDAwMDApIHwKICAgKHBjICYg fjB4ODAwMDAwMDApOwogfSB3aGlsZSAoKHsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGNvX3Jl dF9fOyB0eXBlb2YoX19wcmVlbXB0X2NvdW50KSBwY29fb2xkX18gPSAob2xkKTsgdHlwZW9mKF9f cHJlZW1wdF9jb3VudCkgcGNvX25ld19fID0gKG5ldyk7IHN3aXRjaCAoc2l6ZW9mKF9fcHJlZW1w dF9jb3VudCkpIHsgY2FzZSAxOiBhc20gKCJjbXB4Y2hnYiAlMiwgIiIlJSIiZ3MiIjoiICIlIiAi MSIgOiAiPWEiIChwY29fcmV0X18pLCAiK20iIChfX3ByZWVtcHRfY291bnQpIDogInEiIChwY29f bmV3X18pLCAiMCIgKHBjb19vbGRfXykgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IGFzbSAo ImNtcHhjaGd3ICUyLCAiIiUlIiJncyIiOiIgIiUiICIxIiA6ICI9YSIgKHBjb19yZXRfXyksICIr bSIgKF9fcHJlZW1wdF9jb3VudCkgOiAiciIgKHBjb19uZXdfXyksICIwIiAocGNvX29sZF9fKSA6 ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgNDogYXNtICgiY21weGNoZ2wgJTIsICIiJSUiImdzIiI6 IiAiJSIgIjEiIDogIj1hIiAocGNvX3JldF9fKSwgIittIiAoX19wcmVlbXB0X2NvdW50KSA6ICJy IiAocGNvX25ld19fKSwgIjAiIChwY29fb2xkX18pIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSA4 OiBhc20gKCJjbXB4Y2hncSAlMiwgIiIlJSIiZ3MiIjoiICIlIiAiMSIgOiAiPWEiIChwY29fcmV0 X18pLCAiK20iIChfX3ByZWVtcHRfY291bnQpIDogInIiIChwY29fbmV3X18pLCAiMCIgKHBjb19v bGRfXykgOiAibWVtb3J5Iik7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9 IHBjb19yZXRfXzsgfSkgIT0gb2xkKTsKfQojIDU4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3By ZWVtcHQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNldF9wcmVl bXB0X25lZWRfcmVzY2hlZCh2b2lkKQp7CiBkbyB7IHR5cGVkZWYgdHlwZW9mKChfX3ByZWVtcHRf Y291bnQpKSBwdG9fVF9fOyBpZiAoMCkgeyBwdG9fVF9fIHB0b190bXBfXzsgcHRvX3RtcF9fID0g KH4weDgwMDAwMDAwKTsgKHZvaWQpcHRvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKChfX3ByZWVt cHRfY291bnQpKSkgeyBjYXNlIDE6IGFzbSAoImFuZCIgImIgJTEsIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicWkiICgocHRvX1RfXykofjB4ODAwMDAw MDApKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSAoImFuZCIgIncgJTEsIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmkiICgocHRvX1RfXykofjB4ODAwMDAw MDApKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSAoImFuZCIgImwgJTEsIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmkiICgocHRvX1RfXykofjB4ODAwMDAw MDApKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSAoImFuZCIgInEgJTEsIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmUiICgocHRvX1RfXykofjB4ODAwMDAw MDApKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDAp Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgY2xlYXJfcHJlZW1w dF9uZWVkX3Jlc2NoZWQodm9pZCkKewogZG8geyB0eXBlZGVmIHR5cGVvZigoX19wcmVlbXB0X2Nv dW50KSkgcHRvX1RfXzsgaWYgKDApIHsgcHRvX1RfXyBwdG9fdG1wX187IHB0b190bXBfXyA9ICgw eDgwMDAwMDAwKTsgKHZvaWQpcHRvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKChfX3ByZWVtcHRf Y291bnQpKSkgeyBjYXNlIDE6IGFzbSAoIm9yIiAiYiAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSA6ICJxaSIgKChwdG9fVF9fKSgweDgwMDAwMDAwKSkp OyBicmVhazsgY2FzZSAyOiBhc20gKCJvciIgIncgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmkiICgocHRvX1RfXykoMHg4MDAwMDAwMCkpKTsg YnJlYWs7IGNhc2UgNDogYXNtICgib3IiICJsICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKF9fcHJlZW1wdF9jb3VudCkpIDogInJpIiAoKHB0b19UX18pKDB4ODAwMDAwMDApKSk7IGJy ZWFrOyBjYXNlIDg6IGFzbSAoIm9yIiAicSAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KChfX3ByZWVtcHRfY291bnQpKSA6ICJyZSIgKChwdG9fVF9fKSgweDgwMDAwMDAwKSkpOyBicmVh azsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIHRlc3RfcHJlZW1wdF9uZWVkX3Jlc2No ZWQodm9pZCkKewogcmV0dXJuICEoKHsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGZvX3JldF9f OyBzd2l0Y2ggKHNpemVvZihfX3ByZWVtcHRfY291bnQpKSB7IGNhc2UgMTogYXNtICgibW92IiAi YiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoX19w cmVlbXB0X2NvdW50KSk7IGJyZWFrOyBjYXNlIDI6IGFzbSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoi ICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3VudCkp OyBicmVhazsgY2FzZSA0OiBhc20gKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIg OiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGNhc2Ug ODogYXNtICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3Jl dF9fKSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJj cHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSkgJiAweDgwMDAwMDAwKTsKfQoKCgoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX3ByZWVtcHRfY291bnRfYWRkKGludCB2 YWwpCnsKIGRvIHsgdHlwZWRlZiB0eXBlb2YoKF9fcHJlZW1wdF9jb3VudCkpIHBhb19UX187IGNv bnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCh2YWwpICYmICgodmFsKSA9 PSAxIHx8ICh2YWwpID09IC0xKSkgPyAoaW50KSh2YWwpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBw YW9fdG1wX187IHBhb190bXBfXyA9ICh2YWwpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChz aXplb2YoKF9fcHJlZW1wdF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFz bSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicWkiICgocGFvX1Rf XykodmFsKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jdyAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSh2YWwpKSk7 IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18g PT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0 X2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKF9fcHJlZW1wdF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKHZhbCkpKTsgYnJlYWs7IGNh c2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNt ICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSk7 IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVl bXB0X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykodmFsKSkpOyBicmVhazsgZGVmYXVsdDogX19i YWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIF9fcHJlZW1wdF9jb3VudF9zdWIoaW50IHZhbCkKewogZG8geyB0 eXBlZGVmIHR5cGVvZigoX19wcmVlbXB0X2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19J RF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKC12YWwpICYmICgoLXZhbCkgPT0gMSB8fCAoLXZh bCkgPT0gLTEpKSA/IChpbnQpKC12YWwpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187 IHBhb190bXBfXyA9ICgtdmFsKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKChf X3ByZWVtcHRfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNi ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBp ZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZGIgJTEsICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKC12YWwp KSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lE X18gPT0gLTEpIGFzbSAoImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVl bXB0X2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKF9fcHJlZW1wdF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC12YWwpKSk7IGJyZWFr OyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEp IGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50 KSkpOyBlbHNlIGFzbSAoImFkZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9f cHJlZW1wdF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC12YWwpKSk7IGJyZWFrOyBjYXNlIDg6 IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRl Y3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNl IGFzbSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9j b3VudCkpIDogInJlIiAoKHBhb19UX18pKC12YWwpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9w ZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgYm9vbCBfX3ByZWVtcHRfY291bnRfZGVjX2FuZF90ZXN0KHZvaWQpCnsK IHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAoImRlY2wiICIgIiAiJSUiImdzIiI6IiAi JSIgIlt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJlIiAiKi9cbiIgOiBb dmFyXSAiK20iIChfX3ByZWVtcHRfY291bnQpLCAiPUBjYyIgImUiIChjKSA6IDogIm1lbW9yeSIp OyBjOyB9KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIHNo b3VsZF9yZXNjaGVkKGludCBwcmVlbXB0X29mZnNldCkKewogcmV0dXJuIF9fYnVpbHRpbl9leHBl Y3QoISEoKHsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVv ZihfX3ByZWVtcHRfY291bnQpKSB7IGNhc2UgMTogYXNtICgibW92IiAiYiAiIiUlIiJncyIiOiIg IiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7 IGJyZWFrOyBjYXNlIDI6IGFzbSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6 ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3VudCkpOyBicmVhazsgY2FzZSA0 OiBhc20gKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0 X18pIDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGNhc2UgODogYXNtICgibW92IiAi cSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoX19w cmVlbXB0X2NvdW50KSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBm b19yZXRfXzsgfSkgPT0gcHJlZW1wdF9vZmZzZXQpLCAwKTsKfQojIDc5ICIuL2luY2x1ZGUvbGlu dXgvcHJlZW1wdC5oIiAyCiMgMjc3ICIuL2luY2x1ZGUvbGludXgvcHJlZW1wdC5oIgpzdHJ1Y3Qg cHJlZW1wdF9ub3RpZmllcjsKIyAyOTMgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiCnN0cnVj dCBwcmVlbXB0X29wcyB7CiB2b2lkICgqc2NoZWRfaW4pKHN0cnVjdCBwcmVlbXB0X25vdGlmaWVy ICpub3RpZmllciwgaW50IGNwdSk7CiB2b2lkICgqc2NoZWRfb3V0KShzdHJ1Y3QgcHJlZW1wdF9u b3RpZmllciAqbm90aWZpZXIsCiAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KTsKfTsKIyAz MDYgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiCnN0cnVjdCBwcmVlbXB0X25vdGlmaWVyIHsK IHN0cnVjdCBobGlzdF9ub2RlIGxpbms7CiBzdHJ1Y3QgcHJlZW1wdF9vcHMgKm9wczsKfTsKCnZv aWQgcHJlZW1wdF9ub3RpZmllcl9pbmModm9pZCk7CnZvaWQgcHJlZW1wdF9ub3RpZmllcl9kZWMo dm9pZCk7CnZvaWQgcHJlZW1wdF9ub3RpZmllcl9yZWdpc3RlcihzdHJ1Y3QgcHJlZW1wdF9ub3Rp ZmllciAqbm90aWZpZXIpOwp2b2lkIHByZWVtcHRfbm90aWZpZXJfdW5yZWdpc3RlcihzdHJ1Y3Qg cHJlZW1wdF9ub3RpZmllciAqbm90aWZpZXIpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwcmVlbXB0X25vdGlmaWVyX2luaXQo c3RydWN0IHByZWVtcHRfbm90aWZpZXIgKm5vdGlmaWVyLAogICAgICAgICBzdHJ1Y3QgcHJlZW1w dF9vcHMgKm9wcykKewogSU5JVF9ITElTVF9OT0RFKCZub3RpZmllci0+bGluayk7CiBub3RpZmll ci0+b3BzID0gb3BzOwp9CiMgNTIgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCgoKCgoK CiMgMSAiLi9pbmNsdWRlL2xpbnV4L2JvdHRvbV9oYWxmLmgiIDEKIyAxMCAiLi9pbmNsdWRlL2xp bnV4L2JvdHRvbV9oYWxmLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9p ZCBfX2xvY2FsX2JoX2Rpc2FibGVfaXAodW5zaWduZWQgbG9uZyBpcCwgdW5zaWduZWQgaW50IGNu dCkKewogX19wcmVlbXB0X2NvdW50X2FkZChjbnQpOwogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6 IDogOiJtZW1vcnkiKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9jYWxfYmhfZGlzYWJsZSh2b2lkKQp7CiBfX2xvY2Fs X2JoX2Rpc2FibGVfaXAoKHsgX19sYWJlbF9fIF9faGVyZTsgX19oZXJlOiAodW5zaWduZWQgbG9u ZykmJl9faGVyZTsgfSksICgyICogKDFVTCA8PCAoMCArIDgpKSkpOwp9CgpleHRlcm4gdm9pZCBf bG9jYWxfYmhfZW5hYmxlKHZvaWQpOwpleHRlcm4gdm9pZCBfX2xvY2FsX2JoX2VuYWJsZV9pcCh1 bnNpZ25lZCBsb25nIGlwLCB1bnNpZ25lZCBpbnQgY250KTsKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9jYWxfYmhfZW5hYmxl X2lwKHVuc2lnbmVkIGxvbmcgaXApCnsKIF9fbG9jYWxfYmhfZW5hYmxlX2lwKGlwLCAoMiAqICgx VUwgPDwgKDAgKyA4KSkpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2NhbF9iaF9lbmFibGUodm9pZCkKewogX19sb2Nh bF9iaF9lbmFibGVfaXAoKHsgX19sYWJlbF9fIF9faGVyZTsgX19oZXJlOiAodW5zaWduZWQgbG9u ZykmJl9faGVyZTsgfSksICgyICogKDFVTCA8PCAoMCArIDgpKSkpOwp9CiMgNTkgIi4vaW5jbHVk ZS9saW51eC9zcGlubG9jay5oIiAyCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQv YXNtL21taW93Yi5oIiAxCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL21taW93Yi5oIiAxCiMg MiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC9hc20vbW1pb3diLmgiIDIKIyA2MSAiLi9p bmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDIKIyA4MyAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2Nr LmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX3R5cGVzLmgiIDEKIyAxOCAiLi9pbmNs dWRlL2xpbnV4L3NwaW5sb2NrX3R5cGVzLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2xvY2tkZXAu aCIgMQojIDEzICIuL2luY2x1ZGUvbGludXgvbG9ja2RlcC5oIgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7 CnN0cnVjdCBsb2NrZGVwX21hcDsKCgpleHRlcm4gaW50IHByb3ZlX2xvY2tpbmc7CmV4dGVybiBp bnQgbG9ja19zdGF0OwojIDQxMyAiLi9pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2Nr ZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCnsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2NrZGVw X29mZih2b2lkKQp7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2RlcF9vbih2b2lkKQp7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2RlcF9z ZXRfc2VsZnRlc3RfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCnsKfQojIDQ1OCAiLi9p bmNsdWRlL2xpbnV4L2xvY2tkZXAuaCIKc3RydWN0IGxvY2tfY2xhc3Nfa2V5IHsgfTsKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg bG9ja2RlcF9yZWdpc3Rlcl9rZXkoc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXkpCnsKfQoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBsb2NrZGVwX3VucmVnaXN0ZXJfa2V5KHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KQp7Cn0K CgoKCnN0cnVjdCBsb2NrZGVwX21hcCB7IH07CiMgNDg0ICIuL2luY2x1ZGUvbGludXgvbG9ja2Rl cC5oIgpzdHJ1Y3QgcGluX2Nvb2tpZSB7IH07CiMgNDk0ICIuL2luY2x1ZGUvbGludXgvbG9ja2Rl cC5oIgplbnVtIHhobG9ja19jb250ZXh0X3QgewogWEhMT0NLX0hBUkQsCiBYSExPQ0tfU09GVCwK IFhITE9DS19DVFhfTlIsCn07CiMgNTA4ICIuL2luY2x1ZGUvbGludXgvbG9ja2RlcC5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGxvY2tkZXBfaW52YXJpYW50X3N0YXRlKGJvb2wgZm9yY2UpIHt9CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2RlcF9mcmVl X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKSB7fQojIDU3MCAiLi9pbmNsdWRlL2xpbnV4 L2xvY2tkZXAuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBwcmludF9pcnF0cmFjZV9ldmVudHMoc3RydWN0IHRhc2tfc3RydWN0 ICpjdXJyKQp7Cn0KIyA2NjggIi4vaW5jbHVkZS9saW51eC9sb2NrZGVwLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKbG9ja2Rl cF9yY3Vfc3VzcGljaW91cyhjb25zdCBjaGFyICpmaWxlLCBjb25zdCBpbnQgbGluZSwgY29uc3Qg Y2hhciAqcykKewp9CiMgMTkgIi4vaW5jbHVkZS9saW51eC9zcGlubG9ja190eXBlcy5oIiAyCgp0 eXBlZGVmIHN0cnVjdCByYXdfc3BpbmxvY2sgewogYXJjaF9zcGlubG9ja190IHJhd19sb2NrOwoK CgoKCgoKfSByYXdfc3BpbmxvY2tfdDsKIyA2MSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX3R5 cGVzLmgiCnR5cGVkZWYgc3RydWN0IHNwaW5sb2NrIHsKIHVuaW9uIHsKICBzdHJ1Y3QgcmF3X3Nw aW5sb2NrIHJsb2NrOwojIDcyICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2tfdHlwZXMuaCIKIH07 Cn0gc3BpbmxvY2tfdDsKIyA4MyAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX3R5cGVzLmgiCiMg MSAiLi9pbmNsdWRlL2xpbnV4L3J3bG9ja190eXBlcy5oIiAxCiMgMTEgIi4vaW5jbHVkZS9saW51 eC9yd2xvY2tfdHlwZXMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogYXJjaF9yd2xvY2tfdCByYXdfbG9j azsKCgoKCgoKCn0gcndsb2NrX3Q7CiMgODQgIi4vaW5jbHVkZS9saW51eC9zcGlubG9ja190eXBl cy5oIiAyCiMgODQgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCgoKCgoKIyAxICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiIDEKIyAxMCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9zcGlubG9jay5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnQuaCIg MQojIDE4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0LmgiCiMgMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9mcmFtZS5oIiAxCiMgMTkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFy YXZpcnQuaCIgMgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBsb25nIHBhcmF2aXJ0X3NjaGVkX2Nsb2NrKHZvaWQp CnsKIHJldHVybiAoeyB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXQ7IHVuc2lnbmVkIGxvbmcgX19l ZGkgPSBfX2VkaSwgX19lc2kgPSBfX2VzaSwgX19lZHggPSBfX2VkeCwgX19lY3ggPSBfX2VjeCwg X19lYXggPSBfX2VheDs7ICgodm9pZClwdl9vcHMudGltZS5zY2hlZF9jbG9jayk7IGlmIChzaXpl b2YodW5zaWduZWQgbG9uZyBsb25nKSA+IHNpemVvZih1bnNpZ25lZCBsb25nKSkgeyBhc20gdm9s YXRpbGUoIiIgIjc3MTpcblx0IiAiOTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0 cG9saW5lX3NhZmVcblx0IiAiICIgIi5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9u XG5cdCIgImNhbGwgKiVjW3BhcmF2aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2Vj dGlvbiAucGFyYWluc3RydWN0aW9ucyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIg IiAiICIucXVhZCIgIiAiICIgNzcxYlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVt XSIgIlxuIiAiICAuYnl0ZSA3NzJiLTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Ns b2JiZXJdIiAiXG4iICIucG9wc2VjdGlvblxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1TIiAoX19l c2kpLCAiPWQiIChfX2VkeCksICI9YyIgKF9fZWN4KSwgIj1hIiAoX19lYXgpLCAiK3IiIChjdXJy ZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVpbHRpbl9v ZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIHRpbWUuc2NoZWRfY2xvY2sp IC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLnRpbWUu c2NoZWRfY2xvY2spKSwgW3BhcmF2aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0gMSkpIDog Im1lbW9yeSIsICJjYyIgLCAicjgiLCAicjkiLCAicjEwIiwgInIxMSIpOyBfX3JldCA9ICh1bnNp Z25lZCBsb25nIGxvbmcpKCgoKHU2NClfX2VkeCkgPDwgMzIpIHwgX19lYXgpOyB9IGVsc2UgeyBh c20gdm9sYXRpbGUoIiIgIjc3MTpcblx0IiAiOTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2Nh cmQucmV0cG9saW5lX3NhZmVcblx0IiAiICIgIi5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3Bz ZWN0aW9uXG5cdCIgImNhbGwgKiVjW3BhcmF2aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5w dXNoc2VjdGlvbiAucGFyYWluc3RydWN0aW9ucyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAi ICJcbiIgIiAiICIucXVhZCIgIiAiICIgNzcxYlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90 eXBlbnVtXSIgIlxuIiAiICAuYnl0ZSA3NzJiLTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2 aXJ0X2Nsb2JiZXJdIiAiXG4iICIucG9wc2VjdGlvblxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1T IiAoX19lc2kpLCAiPWQiIChfX2VkeCksICI9YyIgKF9fZWN4KSwgIj1hIiAoX19lYXgpLCAiK3Ii IChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVp bHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIHRpbWUuc2NoZWRf Y2xvY2spIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYocHZfb3Bz LnRpbWUuc2NoZWRfY2xvY2spKSwgW3BhcmF2aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0g MSkpIDogIm1lbW9yeSIsICJjYyIgLCAicjgiLCAicjkiLCAicjEwIiwgInIxMSIpOyBfX3JldCA9 ICh1bnNpZ25lZCBsb25nIGxvbmcpKF9fZWF4ICYgKHsgdW5zaWduZWQgbG9uZyBfX21hc2sgPSB+ MFVMOyBzd2l0Y2ggKHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpKSB7IGNhc2UgMTogX19tYXNr ID0gMHhmZlVMOyBicmVhazsgY2FzZSAyOiBfX21hc2sgPSAweGZmZmZVTDsgYnJlYWs7IGNhc2Ug NDogX19tYXNrID0gMHhmZmZmZmZmZlVMOyBicmVhazsgZGVmYXVsdDogYnJlYWs7IH0gX19tYXNr OyB9KSk7IH0gX19yZXQ7IH0pOwp9CgpzdHJ1Y3Qgc3RhdGljX2tleTsKZXh0ZXJuIHN0cnVjdCBz dGF0aWNfa2V5IHBhcmF2aXJ0X3N0ZWFsX2VuYWJsZWQ7CmV4dGVybiBzdHJ1Y3Qgc3RhdGljX2tl eSBwYXJhdmlydF9zdGVhbF9ycV9lbmFibGVkOwoKX19hdHRyaWJ1dGVfXygoX19leHRlcm5hbGx5 X3Zpc2libGVfXykpIHZvaWQgX19uYXRpdmVfcXVldWVkX3NwaW5fdW5sb2NrKHN0cnVjdCBxc3Bp bmxvY2sgKmxvY2spOwpib29sIHB2X2lzX25hdGl2ZV9zcGluX3VubG9jayh2b2lkKTsKX19hdHRy aWJ1dGVfXygoX19leHRlcm5hbGx5X3Zpc2libGVfXykpIGJvb2wgX19uYXRpdmVfdmNwdV9pc19w cmVlbXB0ZWQobG9uZyBjcHUpOwpib29sIHB2X2lzX25hdGl2ZV92Y3B1X2lzX3ByZWVtcHRlZCh2 b2lkKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHU2NCBwYXJhdmlydF9zdGVhbF9jbG9jayhpbnQgY3B1KQp7CiByZXR1cm4gKHsgdTY0 IF9fcmV0OyB1bnNpZ25lZCBsb25nIF9fZWRpID0gX19lZGksIF9fZXNpID0gX19lc2ksIF9fZWR4 ID0gX19lZHgsIF9fZWN4ID0gX19lY3gsIF9fZWF4ID0gX19lYXg7OyAoKHZvaWQpcHZfb3BzLnRp bWUuc3RlYWxfY2xvY2spOyBpZiAoc2l6ZW9mKHU2NCkgPiBzaXplb2YodW5zaWduZWQgbG9uZykp IHsgYXNtIHZvbGF0aWxlKCIiICI3NzE6XG5cdCIgIjk5OTpcblx0IiAiLnB1c2hzZWN0aW9uIC5k aXNjYXJkLnJldHBvbGluZV9zYWZlXG5cdCIgIiAiICIucXVhZCIgIiAiICIgOTk5YlxuXHQiICIu cG9wc2VjdGlvblxuXHQiICJjYWxsIColY1twYXJhdmlydF9vcHB0cl07IiAiXG4iICI3NzI6XG4i ICIucHVzaHNlY3Rpb24gLnBhcmFpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAiICIuYmFsaWduIDgi ICIgIiAiXG4iICIgIiAiLnF1YWQiICIgIiAiIDc3MWJcbiIgIiAgLmJ5dGUgIiAiJWNbcGFyYXZp cnRfdHlwZW51bV0iICJcbiIgIiAgLmJ5dGUgNzcyYi03NzFiXG4iICIgIC5zaG9ydCAiICIlY1tw YXJhdmlydF9jbG9iYmVyXSIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIiIgOiAiPUQiIChfX2VkaSks ICI9UyIgKF9fZXNpKSwgIj1kIiAoX19lZHgpLCAiPWMiIChfX2VjeCksICI9YSIgKF9fZWF4KSwg IityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6IFtwYXJhdmlydF90eXBlbnVtXSAiaSIgKChf X2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBhcmF2aXJ0X3BhdGNoX3RlbXBsYXRlLCB0aW1lLnN0 ZWFsX2Nsb2NrKSAvIHNpemVvZih2b2lkICopKSksIFtwYXJhdmlydF9vcHB0cl0gImkiICgmKHB2 X29wcy50aW1lLnN0ZWFsX2Nsb2NrKSksIFtwYXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCA5 KSAtIDEpKSwgIkQiICgodW5zaWduZWQgbG9uZykoY3B1KSkgOiAibWVtb3J5IiwgImNjIiAsICJy OCIsICJyOSIsICJyMTAiLCAicjExIik7IF9fcmV0ID0gKHU2NCkoKCgodTY0KV9fZWR4KSA8PCAz MikgfCBfX2VheCk7IH0gZWxzZSB7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5c dCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQi ICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3Bw dHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwi XG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIg IC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxu IiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4i ICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19l Y3gpLCAiPWEiIChfX2VheCksICIrciIgKGN1cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZp cnRfdHlwZW51bV0gImkiICgoX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRj aF90ZW1wbGF0ZSwgdGltZS5zdGVhbF9jbG9jaykgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZp cnRfb3BwdHJdICJpIiAoJihwdl9vcHMudGltZS5zdGVhbF9jbG9jaykpLCBbcGFyYXZpcnRfY2xv YmJlcl0gImkiICgoKDEgPDwgOSkgLSAxKSksICJEIiAoKHVuc2lnbmVkIGxvbmcpKGNwdSkpIDog Im1lbW9yeSIsICJjYyIgLCAicjgiLCAicjkiLCAicjEwIiwgInIxMSIpOyBfX3JldCA9ICh1NjQp KF9fZWF4ICYgKHsgdW5zaWduZWQgbG9uZyBfX21hc2sgPSB+MFVMOyBzd2l0Y2ggKHNpemVvZih1 NjQpKSB7IGNhc2UgMTogX19tYXNrID0gMHhmZlVMOyBicmVhazsgY2FzZSAyOiBfX21hc2sgPSAw eGZmZmZVTDsgYnJlYWs7IGNhc2UgNDogX19tYXNrID0gMHhmZmZmZmZmZlVMOyBicmVhazsgZGVm YXVsdDogYnJlYWs7IH0gX19tYXNrOyB9KSk7IH0gX19yZXQ7IH0pOwp9CgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzbG93X2Rv d25faW8odm9pZCkKewogcHZfb3BzLmNwdS5pb19kZWxheSgpOwoKCgoKCn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19mbHVz aF90bGIodm9pZCkKewogKHsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9f ZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lk KXB2X29wcy5tbXUuZmx1c2hfdGxiX3VzZXIpOyBhc20gdm9sYXRpbGUoIiIgIjc3MTpcblx0IiAi OTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0cG9saW5lX3NhZmVcblx0IiAiICIg Ii5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgImNhbGwgKiVjW3BhcmF2 aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2VjdGlvbiAucGFyYWluc3RydWN0aW9u cyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIgIiAiICIucXVhZCIgIiAiICIgNzcx YlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVtXSIgIlxuIiAiICAuYnl0ZSA3NzJi LTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJdIiAiXG4iICIucG9wc2Vj dGlvblxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1TIiAoX19lc2kpLCAiPWQiIChfX2VkeCksICI9 YyIgKF9fZWN4KSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6IFtwYXJhdmlydF90eXBl bnVtXSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBhcmF2aXJ0X3BhdGNoX3RlbXBs YXRlLCBtbXUuZmx1c2hfdGxiX3VzZXIpIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29w cHRyXSAiaSIgKCYocHZfb3BzLm1tdS5mbHVzaF90bGJfdXNlcikpLCBbcGFyYXZpcnRfY2xvYmJl cl0gImkiICgoKDEgPDwgOSkgLSAxKSkgOiAibWVtb3J5IiwgImNjIiAsICJyYXgiLCAicjgiLCAi cjkiLCAicjEwIiwgInIxMSIpOyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2ZsdXNoX3RsYl9nbG9iYWwodm9pZCkK ewogKHsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9 IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5tbXUu Zmx1c2hfdGxiX2tlcm5lbCk7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIg Ii5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIg IiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJd OyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4i ICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5i eXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAi ICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIi IDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gp LCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAo KF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIG1tdS5m bHVzaF90bGJfa2VybmVsKSAvIHNpemVvZih2b2lkICopKSksIFtwYXJhdmlydF9vcHB0cl0gImki ICgmKHB2X29wcy5tbXUuZmx1c2hfdGxiX2tlcm5lbCkpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImki ICgoKDEgPDwgOSkgLSAxKSkgOiAibWVtb3J5IiwgImNjIiAsICJyYXgiLCAicjgiLCAicjkiLCAi cjEwIiwgInIxMSIpOyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2ZsdXNoX3RsYl9vbmVfdXNlcih1bnNpZ25lZCBs b25nIGFkZHIpCnsKICh7IHVuc2lnbmVkIGxvbmcgX19lZGkgPSBfX2VkaSwgX19lc2kgPSBfX2Vz aSwgX19lZHggPSBfX2VkeCwgX19lY3ggPSBfX2VjeCwgX19lYXggPSBfX2VheDs7ICgodm9pZClw dl9vcHMubW11LmZsdXNoX3RsYl9vbmVfdXNlcik7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQi ICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIg IiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFy YXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rp b25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3 NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3 MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3Bz ZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwg Ij1jIiAoX19lY3gpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5 cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVt cGxhdGUsIG1tdS5mbHVzaF90bGJfb25lX3VzZXIpIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2 aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLm1tdS5mbHVzaF90bGJfb25lX3VzZXIpKSwgW3BhcmF2 aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0gMSkpLCAiRCIgKCh1bnNpZ25lZCBsb25nKShh ZGRyKSkgOiAibWVtb3J5IiwgImNjIiAsICJyYXgiLCAicjgiLCAicjkiLCAicjEwIiwgInIxMSIp OyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBmbHVzaF90bGJfb3RoZXJzKGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVt YXNrLAogICAgICAgIGNvbnN0IHN0cnVjdCBmbHVzaF90bGJfaW5mbyAqaW5mbykKewogKHsgdW5z aWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBf X2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5tbXUuZmx1c2hfdGxi X290aGVycyk7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2Vj dGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJc blx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAi NzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJh bGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVj W3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQg IiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAo X19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiK3IiIChj dXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVpbHRp bl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIG1tdS5mbHVzaF90bGJf b3RoZXJzKSAvIHNpemVvZih2b2lkICopKSksIFtwYXJhdmlydF9vcHB0cl0gImkiICgmKHB2X29w cy5tbXUuZmx1c2hfdGxiX290aGVycykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwg OSkgLSAxKSksICJEIiAoKHVuc2lnbmVkIGxvbmcpKGNwdW1hc2spKSwgIlMiICgodW5zaWduZWQg bG9uZykoaW5mbykpIDogIm1lbW9yeSIsICJjYyIgLCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIs ICJyMTEiKTsgfSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcGFyYXZpcnRfdGxiX3JlbW92ZV90YWJsZShzdHJ1Y3QgbW11 X2dhdGhlciAqdGxiLCB2b2lkICp0YWJsZSkKewogKHsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9f ZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9 IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5tbXUudGxiX3JlbW92ZV90YWJsZSk7IGFzbSB2b2xhdGls ZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xp bmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0 IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9u IC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIg Ii5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAi XG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJl cl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSks ICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIp IDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFy YXZpcnRfcGF0Y2hfdGVtcGxhdGUsIG1tdS50bGJfcmVtb3ZlX3RhYmxlKSAvIHNpemVvZih2b2lk ICopKSksIFtwYXJhdmlydF9vcHB0cl0gImkiICgmKHB2X29wcy5tbXUudGxiX3JlbW92ZV90YWJs ZSkpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgOSkgLSAxKSksICJEIiAoKHVuc2ln bmVkIGxvbmcpKHRsYikpLCAiUyIgKCh1bnNpZ25lZCBsb25nKSh0YWJsZSkpIDogIm1lbW9yeSIs ICJjYyIgLCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgfSk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGFy YXZpcnRfYXJjaF9leGl0X21tYXAoc3RydWN0IG1tX3N0cnVjdCAqbW0pCnsKICh7IHVuc2lnbmVk IGxvbmcgX19lZGkgPSBfX2VkaSwgX19lc2kgPSBfX2VzaSwgX19lZHggPSBfX2VkeCwgX19lY3gg PSBfX2VjeCwgX19lYXggPSBfX2VheDs7ICgodm9pZClwdl9vcHMubW11LmV4aXRfbW1hcCk7IGFz bSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2Fy ZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNl Y3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1 c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIg IlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5 cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZp cnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMi IChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiK3IiIChjdXJyZW50X3N0YWNr X3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihz dHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIG1tdS5leGl0X21tYXApIC8gc2l6ZW9mKHZv aWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLm1tdS5leGl0X21tYXApKSwg W3BhcmF2aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0gMSkpLCAiRCIgKCh1bnNpZ25lZCBs b25nKShtbSkpIDogIm1lbW9yeSIsICJjYyIgLCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJy MTEiKTsgfSk7Cn0KIyA2NDIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHB2X3F1ZXVlZF9zcGluX2xvY2tf c2xvd3BhdGgoc3RydWN0IHFzcGlubG9jayAqbG9jaywKICAgICAgIHUzMiB2YWwpCnsKICh7IHVu c2lnbmVkIGxvbmcgX19lZGkgPSBfX2VkaSwgX19lc2kgPSBfX2VzaSwgX19lZHggPSBfX2VkeCwg X19lY3ggPSBfX2VjeCwgX19lYXggPSBfX2VheDs7ICgodm9pZClwdl9vcHMubG9jay5xdWV1ZWRf c3Bpbl9sb2NrX3Nsb3dwYXRoKTsgYXNtIHZvbGF0aWxlKCIiICI3NzE6XG5cdCIgIjk5OTpcblx0 IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJldHBvbGluZV9zYWZlXG5cdCIgIiAiICIucXVhZCIg IiAiICIgOTk5YlxuXHQiICIucG9wc2VjdGlvblxuXHQiICJjYWxsIColY1twYXJhdmlydF9vcHB0 cl07IiAiXG4iICI3NzI6XG4iICIucHVzaHNlY3Rpb24gLnBhcmFpbnN0cnVjdGlvbnMsXCJhXCJc biIgIiAiICIuYmFsaWduIDgiICIgIiAiXG4iICIgIiAiLnF1YWQiICIgIiAiIDc3MWJcbiIgIiAg LmJ5dGUgIiAiJWNbcGFyYXZpcnRfdHlwZW51bV0iICJcbiIgIiAgLmJ5dGUgNzcyYi03NzFiXG4i ICIgIC5zaG9ydCAiICIlY1twYXJhdmlydF9jbG9iYmVyXSIgIlxuIiAiLnBvcHNlY3Rpb25cbiIg IiIgOiAiPUQiIChfX2VkaSksICI9UyIgKF9fZXNpKSwgIj1kIiAoX19lZHgpLCAiPWMiIChfX2Vj eCksICIrciIgKGN1cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImki ICgoX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgbG9j ay5xdWV1ZWRfc3Bpbl9sb2NrX3Nsb3dwYXRoKSAvIHNpemVvZih2b2lkICopKSksIFtwYXJhdmly dF9vcHB0cl0gImkiICgmKHB2X29wcy5sb2NrLnF1ZXVlZF9zcGluX2xvY2tfc2xvd3BhdGgpKSwg W3BhcmF2aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0gMSkpLCAiRCIgKCh1bnNpZ25lZCBs b25nKShsb2NrKSksICJTIiAoKHVuc2lnbmVkIGxvbmcpKHZhbCkpIDogIm1lbW9yeSIsICJjYyIg LCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgfSk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBwdl9xdWV1ZWRfc3Bpbl91bmxvY2soc3RydWN0IHFz cGlubG9jayAqbG9jaykKewogKHsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9 IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2 b2lkKXB2X29wcy5sb2NrLnF1ZXVlZF9zcGluX3VubG9jay5mdW5jKTsgYXNtIHZvbGF0aWxlKCIi ICI3NzE6XG5cdCIgIjk5OTpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJldHBvbGluZV9z YWZlXG5cdCIgIiAiICIucXVhZCIgIiAiICIgOTk5YlxuXHQiICIucG9wc2VjdGlvblxuXHQiICJj YWxsIColY1twYXJhdmlydF9vcHB0cl07IiAiXG4iICI3NzI6XG4iICIucHVzaHNlY3Rpb24gLnBh cmFpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAiICIuYmFsaWduIDgiICIgIiAiXG4iICIgIiAiLnF1 YWQiICIgIiAiIDc3MWJcbiIgIiAgLmJ5dGUgIiAiJWNbcGFyYXZpcnRfdHlwZW51bV0iICJcbiIg IiAgLmJ5dGUgNzcyYi03NzFiXG4iICIgIC5zaG9ydCAiICIlY1twYXJhdmlydF9jbG9iYmVyXSIg IlxuIiAiLnBvcHNlY3Rpb25cbiIgIiIgOiAiPWEiIChfX2VheCksICIrciIgKGN1cnJlbnRfc3Rh Y2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImkiICgoX19idWlsdGluX29mZnNldG9m KHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgbG9jay5xdWV1ZWRfc3Bpbl91bmxvY2su ZnVuYykgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9vcHMu bG9jay5xdWV1ZWRfc3Bpbl91bmxvY2suZnVuYykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgo KDEgPDwgMCkpKSwgIkQiICgodW5zaWduZWQgbG9uZykobG9jaykpIDogIm1lbW9yeSIsICJjYyIg KTsgfSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBwdl93YWl0 KHU4ICpwdHIsIHU4IHZhbCkKewogKHsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2Vz aSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4Ozsg KCh2b2lkKXB2X29wcy5sb2NrLndhaXQpOyBhc20gdm9sYXRpbGUoIiIgIjc3MTpcblx0IiAiOTk5 OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0cG9saW5lX3NhZmVcblx0IiAiICIgIi5x dWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgImNhbGwgKiVjW3BhcmF2aXJ0 X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2VjdGlvbiAucGFyYWluc3RydWN0aW9ucyxc ImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIgIiAiICIucXVhZCIgIiAiICIgNzcxYlxu IiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVtXSIgIlxuIiAiICAuYnl0ZSA3NzJiLTc3 MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJdIiAiXG4iICIucG9wc2VjdGlv blxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1TIiAoX19lc2kpLCAiPWQiIChfX2VkeCksICI9YyIg KF9fZWN4KSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6IFtwYXJhdmlydF90eXBlbnVt XSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBhcmF2aXJ0X3BhdGNoX3RlbXBsYXRl LCBsb2NrLndhaXQpIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYo cHZfb3BzLmxvY2sud2FpdCkpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgOSkgLSAx KSksICJEIiAoKHVuc2lnbmVkIGxvbmcpKHB0cikpLCAiUyIgKCh1bnNpZ25lZCBsb25nKSh2YWwp KSA6ICJtZW1vcnkiLCAiY2MiICwgInJheCIsICJyOCIsICJyOSIsICJyMTAiLCAicjExIik7IH0p Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgcHZfa2ljayhpbnQg Y3B1KQp7CiAoeyB1bnNpZ25lZCBsb25nIF9fZWRpID0gX19lZGksIF9fZXNpID0gX19lc2ksIF9f ZWR4ID0gX19lZHgsIF9fZWN4ID0gX19lY3gsIF9fZWF4ID0gX19lYXg7OyAoKHZvaWQpcHZfb3Bz LmxvY2sua2ljayk7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNo c2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5 OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxu IiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAi LmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIg IiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hv cnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1E IiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiK3Ii IChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVp bHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIGxvY2sua2ljaykg LyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9vcHMubG9jay5r aWNrKSksIFtwYXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCA5KSAtIDEpKSwgIkQiICgodW5z aWduZWQgbG9uZykoY3B1KSkgOiAibWVtb3J5IiwgImNjIiAsICJyYXgiLCAicjgiLCAicjkiLCAi cjEwIiwgInIxMSIpOyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBi b29sIHB2X3ZjcHVfaXNfcHJlZW1wdGVkKGxvbmcgY3B1KQp7CiByZXR1cm4gKHsgYm9vbCBfX3Jl dDsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9f ZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5sb2NrLnZj cHVfaXNfcHJlZW1wdGVkLmZ1bmMpOyBpZiAoc2l6ZW9mKGJvb2wpID4gc2l6ZW9mKHVuc2lnbmVk IGxvbmcpKSB7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2Vj dGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJc blx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAi NzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJh bGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVj W3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQg IiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1hIiAo X19lYXgpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1d ICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUs IGxvY2sudmNwdV9pc19wcmVlbXB0ZWQuZnVuYykgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZp cnRfb3BwdHJdICJpIiAoJihwdl9vcHMubG9jay52Y3B1X2lzX3ByZWVtcHRlZC5mdW5jKSksIFtw YXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCAwKSkpLCAiRCIgKCh1bnNpZ25lZCBsb25nKShj cHUpKSA6ICJtZW1vcnkiLCAiY2MiICk7IF9fcmV0ID0gKGJvb2wpKCgoKHU2NClfX2VkeCkgPDwg MzIpIHwgX19lYXgpOyB9IGVsc2UgeyBhc20gdm9sYXRpbGUoIiIgIjc3MTpcblx0IiAiOTk5Olxu XHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0cG9saW5lX3NhZmVcblx0IiAiICIgIi5xdWFk IiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgImNhbGwgKiVjW3BhcmF2aXJ0X29w cHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2VjdGlvbiAucGFyYWluc3RydWN0aW9ucyxcImFc IlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIgIiAiICIucXVhZCIgIiAiICIgNzcxYlxuIiAi ICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVtXSIgIlxuIiAiICAuYnl0ZSA3NzJiLTc3MWJc biIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJdIiAiXG4iICIucG9wc2VjdGlvblxu IiAiIiA6ICI9YSIgKF9fZWF4KSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6IFtwYXJh dmlydF90eXBlbnVtXSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBhcmF2aXJ0X3Bh dGNoX3RlbXBsYXRlLCBsb2NrLnZjcHVfaXNfcHJlZW1wdGVkLmZ1bmMpIC8gc2l6ZW9mKHZvaWQg KikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLmxvY2sudmNwdV9pc19wcmVlbXB0 ZWQuZnVuYykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgMCkpKSwgIkQiICgodW5z aWduZWQgbG9uZykoY3B1KSkgOiAibWVtb3J5IiwgImNjIiApOyBfX3JldCA9IChib29sKShfX2Vh eCAmICh7IHVuc2lnbmVkIGxvbmcgX19tYXNrID0gfjBVTDsgc3dpdGNoIChzaXplb2YoYm9vbCkp IHsgY2FzZSAxOiBfX21hc2sgPSAweGZmVUw7IGJyZWFrOyBjYXNlIDI6IF9fbWFzayA9IDB4ZmZm ZlVMOyBicmVhazsgY2FzZSA0OiBfX21hc2sgPSAweGZmZmZmZmZmVUw7IGJyZWFrOyBkZWZhdWx0 OiBicmVhazsgfSBfX21hc2s7IH0pKTsgfSBfX3JldDsgfSk7Cn0KCnZvaWQgX19yYXdfY2FsbGVl X3NhdmVfX19uYXRpdmVfcXVldWVkX3NwaW5fdW5sb2NrKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2sp Owpib29sIF9fcmF3X2NhbGxlZV9zYXZlX19fbmF0aXZlX3ZjcHVfaXNfcHJlZW1wdGVkKGxvbmcg Y3B1KTsKIyA3OTggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnQuaCIKZXh0ZXJuIHZv aWQgZGVmYXVsdF9iYW5uZXIodm9pZCk7CiMgOTM5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Bh cmF2aXJ0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgcGFyYXZpcnRfYXJjaF9kdXBfbW1hcChzdHJ1Y3QgbW1fc3RydWN0ICpv bGRtbSwKICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQp7Cn0KIyAxMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9zcGlubG9jay5oIiAyCiMgMjcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3Bp bmxvY2suaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3FzcGlubG9jay5oIiAxCiMgMTQg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vcXNwaW5sb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdTMyIHF1ZXVlZF9mZXRjaF9zZXRfcGVuZGluZ19hY3F1aXJlKHN0cnVj dCBxc3BpbmxvY2sgKmxvY2spCnsKIHUzMiB2YWw7CgoKCgoKCiB2YWwgPSAoeyBib29sIGM7IGFz bSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRc biIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAi ICJidHNsIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29k ZSAiICJjIiAiKi9cbiIgOiBbdmFyXSAiK20iIChsb2NrLT52YWwuY291bnRlciksICI9QGNjIiAi YyIgKGMpIDogW3ZhbF0gIkkiICgoMCArIDgpKSA6ICJtZW1vcnkiKTsgYzsgfSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICogKDFVIDw8ICgwICsgOCkpOwogdmFsIHw9IGF0b21p Y19yZWFkKCZsb2NrLT52YWwpICYgfigoKDFVIDw8IDgpIC0gMSkgPDwgKDAgKyA4KSk7CgogcmV0 dXJuIHZhbDsKfQoKCmV4dGVybiB2b2lkIG5hdGl2ZV9xdWV1ZWRfc3Bpbl9sb2NrX3Nsb3dwYXRo KHN0cnVjdCBxc3BpbmxvY2sgKmxvY2ssIHUzMiB2YWwpOwpleHRlcm4gdm9pZCBfX3B2X2luaXRf bG9ja19oYXNoKHZvaWQpOwpleHRlcm4gdm9pZCBfX3B2X3F1ZXVlZF9zcGluX2xvY2tfc2xvd3Bh dGgoc3RydWN0IHFzcGlubG9jayAqbG9jaywgdTMyIHZhbCk7CmV4dGVybiB2b2lkIF9fcmF3X2Nh bGxlZV9zYXZlX19fcHZfcXVldWVkX3NwaW5fdW5sb2NrKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2sp OwojIDQzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3FzcGlubG9jay5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5hdGl2ZV9x dWV1ZWRfc3Bpbl91bmxvY2soc3RydWN0IHFzcGlubG9jayAqbG9jaykKewogZG8geyBkbyB7IGV4 dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzQ1KHZvaWQpIF9fYXR0cmlidXRlX18oKF9f ZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9yZXMvbG9hZHMgZm9yIGF0b21pY2l0 eS4iKSkpOyBpZiAoISgoc2l6ZW9mKCombG9jay0+bG9ja2VkKSA9PSBzaXplb2YoY2hhcikgfHwg c2l6ZW9mKCombG9jay0+bG9ja2VkKSA9PSBzaXplb2Yoc2hvcnQpIHx8IHNpemVvZigqJmxvY2st PmxvY2tlZCkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKCombG9jay0+bG9ja2VkKSA9PSBzaXpl b2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfNDUoKTsgfSB3aGlsZSAoMCk7IF9fYXNt X18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7ICh7IHVuaW9uIHsgdHlwZW9mKCombG9j ay0+bG9ja2VkKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVv ZigqJmxvY2stPmxvY2tlZCkpICgwKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKCombG9jay0+bG9j a2VkKSwgX191Ll9fYywgc2l6ZW9mKCombG9jay0+bG9ja2VkKSk7IF9fdS5fX3ZhbDsgfSk7IH0g d2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHF1ZXVlZF9zcGluX2xvY2tfc2xvd3BhdGgoc3RydWN0IHFzcGlu bG9jayAqbG9jaywgdTMyIHZhbCkKewogcHZfcXVldWVkX3NwaW5fbG9ja19zbG93cGF0aChsb2Nr LCB2YWwpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHF1ZXVlZF9zcGluX3VubG9jayhzdHJ1Y3QgcXNwaW5sb2NrICpsb2Nr KQp7CiBwdl9xdWV1ZWRfc3Bpbl91bmxvY2sobG9jayk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHZjcHVfaXNfcHJlZW1w dGVkKGxvbmcgY3B1KQp7CiByZXR1cm4gcHZfdmNwdV9pc19wcmVlbXB0ZWQoY3B1KTsKfQojIDcz ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3FzcGlubG9jay5oIgpleHRlcm4gc3RydWN0IHN0YXRp Y19rZXlfdHJ1ZSB2aXJ0X3NwaW5fbG9ja19rZXk7Cgp2b2lkIG5hdGl2ZV9wdl9sb2NrX2luaXQo dm9pZCkgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmli dXRlX18oKF9fY29sZF9fKSkgOwojIDg2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3FzcGlubG9j ay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIHZpcnRfc3Bpbl9sb2NrKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2spCnsKIGlmICgh KHsgYm9vbCBicmFuY2g7IGlmIChfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigq JnZpcnRfc3Bpbl9sb2NrX2tleSksIHN0cnVjdCBzdGF0aWNfa2V5X3RydWUpKSBicmFuY2ggPSAh YXJjaF9zdGF0aWNfYnJhbmNoKCYoJnZpcnRfc3Bpbl9sb2NrX2tleSktPmtleSwgdHJ1ZSk7IGVs c2UgaWYgKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKComdmlydF9zcGluX2xv Y2tfa2V5KSwgc3RydWN0IHN0YXRpY19rZXlfZmFsc2UpKSBicmFuY2ggPSAhYXJjaF9zdGF0aWNf YnJhbmNoX2p1bXAoJigmdmlydF9zcGluX2xvY2tfa2V5KS0+a2V5LCB0cnVlKTsgZWxzZSBicmFu Y2ggPSBfX19fd3JvbmdfYnJhbmNoX2Vycm9yKCk7IF9fYnVpbHRpbl9leHBlY3QoISEoYnJhbmNo KSwgMSk7IH0pKQogIHJldHVybiBmYWxzZTsKCgoKCgoKCiBkbyB7CiAgd2hpbGUgKGF0b21pY19y ZWFkKCZsb2NrLT52YWwpICE9IDApCiAgIGNwdV9yZWxheCgpOwogfSB3aGlsZSAoYXRvbWljX2Nt cHhjaGcoJmxvY2stPnZhbCwgMCwgKDFVIDw8IDApKSAhPSAwKTsKCiByZXR1cm4gdHJ1ZTsKfQoK CgoKCgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9xc3BpbmxvY2suaCIgMQojIDIwICIuL2lu Y2x1ZGUvYXNtLWdlbmVyaWMvcXNwaW5sb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgaW50IHF1ZXVlZF9zcGluX2lzX2xvY2tlZChzdHJ1Y3QgcXNwaW5sb2NrICpsb2Nr KQp7CgoKCgogcmV0dXJuIGF0b21pY19yZWFkKCZsb2NrLT52YWwpOwp9CiMgMzkgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9xc3BpbmxvY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKSBpbnQgcXVldWVkX3NwaW5fdmFsdWVfdW5sb2NrZWQoc3RydWN0IHFzcGlubG9jayBsb2Nr KQp7CiByZXR1cm4gIWF0b21pY19yZWFkKCZsb2NrLnZhbCk7Cn0KCgoKCgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgcXVldWVkX3NwaW5faXNfY29udGVuZGVkKHN0cnVj dCBxc3BpbmxvY2sgKmxvY2spCnsKIHJldHVybiBhdG9taWNfcmVhZCgmbG9jay0+dmFsKSAmIH4o KCgxVSA8PCA4KSAtIDEpIDw8IDApOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSBpbnQgcXVldWVkX3NwaW5fdHJ5bG9jayhzdHJ1Y3QgcXNwaW5sb2NrICpsb2NrKQp7 CiB1MzIgdmFsID0gYXRvbWljX3JlYWQoJmxvY2stPnZhbCk7CgogaWYgKF9fYnVpbHRpbl9leHBl Y3QoISEodmFsKSwgMCkpCiAgcmV0dXJuIDA7CgogcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoISEo YXRvbWljX3RyeV9jbXB4Y2hnKCZsb2NrLT52YWwsICZ2YWwsICgxVSA8PCAwKSkpLCAxKTsKfQoK ZXh0ZXJuIHZvaWQgcXVldWVkX3NwaW5fbG9ja19zbG93cGF0aChzdHJ1Y3QgcXNwaW5sb2NrICps b2NrLCB1MzIgdmFsKTsKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgcXVldWVkX3NwaW5fbG9jayhzdHJ1Y3QgcXNwaW5sb2NrICpsb2NrKQp7CiB1MzIgdmFsID0g MDsKCiBpZiAoX19idWlsdGluX2V4cGVjdCghIShhdG9taWNfdHJ5X2NtcHhjaGcoJmxvY2stPnZh bCwgJnZhbCwgKDFVIDw8IDApKSksIDEpKQogIHJldHVybjsKCiBxdWV1ZWRfc3Bpbl9sb2NrX3Ns b3dwYXRoKGxvY2ssIHZhbCk7Cn0KIyAxMTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcXNwaW5s b2NrLmgiIDIKIyAyOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGlubG9jay5oIiAyCiMgNDMg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3BpbmxvY2suaCIKIyAxICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3Fyd2xvY2suaCIgMQoKCgoKCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3Fyd2xv Y2suaCIgMQojIDMwICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcXJ3bG9jay5oIgpleHRlcm4gdm9p ZCBxdWV1ZWRfcmVhZF9sb2NrX3Nsb3dwYXRoKHN0cnVjdCBxcndsb2NrICpsb2NrKTsKZXh0ZXJu IHZvaWQgcXVldWVkX3dyaXRlX2xvY2tfc2xvd3BhdGgoc3RydWN0IHFyd2xvY2sgKmxvY2spOwoK CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgcXVldWVkX3JlYWRfdHJ5bG9jayhzdHJ1Y3QgcXJ3bG9jayAqbG9jaykKewogdTMy IGNudHM7CgogY250cyA9IGF0b21pY19yZWFkKCZsb2NrLT5jbnRzKTsKIGlmIChfX2J1aWx0aW5f ZXhwZWN0KCEhKCEoY250cyAmIDB4MWZmKSksIDEpKSB7CiAgY250cyA9ICh1MzIpYXRvbWljX2Fk ZF9yZXR1cm4oKDFVIDw8IDkpLCAmbG9jay0+Y250cyk7CiAgaWYgKF9fYnVpbHRpbl9leHBlY3Qo ISEoIShjbnRzICYgMHgxZmYpKSwgMSkpCiAgIHJldHVybiAxOwogIGF0b21pY19zdWIoKDFVIDw8 IDkpLCAmbG9jay0+Y250cyk7CiB9CiByZXR1cm4gMDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcXVldWVkX3dyaXRl X3RyeWxvY2soc3RydWN0IHFyd2xvY2sgKmxvY2spCnsKIHUzMiBjbnRzOwoKIGNudHMgPSBhdG9t aWNfcmVhZCgmbG9jay0+Y250cyk7CiBpZiAoX19idWlsdGluX2V4cGVjdCghIShjbnRzKSwgMCkp CiAgcmV0dXJuIDA7CgogcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoISEoYXRvbWljX3RyeV9jbXB4 Y2hnKCZsb2NrLT5jbnRzLCAmY250cywgMHgwZmYpKSwgMSkKICAgICAgICAgICAgICAgIDsKfQoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBxdWV1ZWRfcmVhZF9sb2NrKHN0cnVjdCBxcndsb2NrICpsb2NrKQp7CiB1MzIgY250 czsKCiBjbnRzID0gYXRvbWljX2FkZF9yZXR1cm4oKDFVIDw8IDkpLCAmbG9jay0+Y250cyk7CiBp ZiAoX19idWlsdGluX2V4cGVjdCghISghKGNudHMgJiAweDFmZikpLCAxKSkKICByZXR1cm47CgoK IHF1ZXVlZF9yZWFkX2xvY2tfc2xvd3BhdGgobG9jayk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHF1ZXVlZF93cml0 ZV9sb2NrKHN0cnVjdCBxcndsb2NrICpsb2NrKQp7CiB1MzIgY250cyA9IDA7CgogaWYgKF9fYnVp bHRpbl9leHBlY3QoISEoYXRvbWljX3RyeV9jbXB4Y2hnKCZsb2NrLT5jbnRzLCAmY250cywgMHgw ZmYpKSwgMSkpCiAgcmV0dXJuOwoKIHF1ZXVlZF93cml0ZV9sb2NrX3Nsb3dwYXRoKGxvY2spOwp9 CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBxdWV1ZWRfcmVhZF91bmxvY2soc3RydWN0IHFyd2xvY2sgKmxvY2spCnsKCgoK ICh2b2lkKWF0b21pY19zdWJfcmV0dXJuKCgxVSA8PCA5KSwgJmxvY2stPmNudHMpOwp9CgoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBxdWV1ZWRfd3JpdGVfdW5sb2NrKHN0cnVjdCBxcndsb2NrICpsb2NrKQp7CiBkbyB7IGRv IHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMTE2KHZvaWQpIF9fYXR0cmlidXRl X18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9yZXMvbG9hZHMgZm9yIGF0 b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKCombG9jay0+d2xvY2tlZCkgPT0gc2l6ZW9mKGNo YXIpIHx8IHNpemVvZigqJmxvY2stPndsb2NrZWQpID09IHNpemVvZihzaG9ydCkgfHwgc2l6ZW9m KCombG9jay0+d2xvY2tlZCkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKCombG9jay0+d2xvY2tl ZCkgPT0gc2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzExNigpOyB9IHdoaWxl ICgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgKHsgdW5pb24geyB0 eXBlb2YoKiZsb2NrLT53bG9ja2VkKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192 YWwgPSAoIHR5cGVvZigqJmxvY2stPndsb2NrZWQpKSAoMCkgfTsgX193cml0ZV9vbmNlX3NpemUo JigqJmxvY2stPndsb2NrZWQpLCBfX3UuX19jLCBzaXplb2YoKiZsb2NrLT53bG9ja2VkKSk7IF9f dS5fX3ZhbDsgfSk7IH0gd2hpbGUgKDApOwp9CiMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9x cndsb2NrLmgiIDIKIyA0NCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGlubG9jay5oIiAyCiMg OTAgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCiMgMTc4ICIuL2luY2x1ZGUvbGludXgv c3BpbmxvY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBkb19yYXdfc3Bpbl9sb2NrKHJhd19zcGlubG9ja190ICpsb2NrKQp7 CiAodm9pZCkwOwogcXVldWVkX3NwaW5fbG9jaygmbG9jay0+cmF3X2xvY2spOwogZG8geyB9IHdo aWxlICgwKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQKZG9fcmF3X3NwaW5fbG9ja19mbGFncyhyYXdfc3BpbmxvY2tf dCAqbG9jaywgdW5zaWduZWQgbG9uZyAqZmxhZ3MpCnsKICh2b2lkKTA7CiBxdWV1ZWRfc3Bpbl9s b2NrKCZsb2NrLT5yYXdfbG9jayk7CiBkbyB7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZG9fcmF3X3Nw aW5fdHJ5bG9jayhyYXdfc3BpbmxvY2tfdCAqbG9jaykKewogaW50IHJldCA9IHF1ZXVlZF9zcGlu X3RyeWxvY2soJihsb2NrKS0+cmF3X2xvY2spOwoKIGlmIChyZXQpCiAgZG8geyB9IHdoaWxlICgw KTsKCiByZXR1cm4gcmV0Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRvX3Jhd19zcGluX3VubG9jayhyYXdfc3BpbmxvY2tf dCAqbG9jaykKewogZG8geyB9IHdoaWxlICgwKTsKIHF1ZXVlZF9zcGluX3VubG9jaygmbG9jay0+ cmF3X2xvY2spOwogKHZvaWQpMDsKfQojIDMxMCAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgi CiMgMSAiLi9pbmNsdWRlL2xpbnV4L3J3bG9jay5oIiAxCiMgMzExICIuL2luY2x1ZGUvbGludXgv c3BpbmxvY2suaCIgMgoKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX2FwaV9zbXAu aCIgMQojIDE4ICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2tfYXBpX3NtcC5oIgppbnQgaW5fbG9j a19mdW5jdGlvbnModW5zaWduZWQgbG9uZyBhZGRyKTsKCgoKdm9pZCBfX2F0dHJpYnV0ZV9fKChz ZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19zcGluX2xvY2socmF3X3NwaW5sb2NrX3Qg KmxvY2spIDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkg X3Jhd19zcGluX2xvY2tfbmVzdGVkKHJhd19zcGlubG9ja190ICpsb2NrLCBpbnQgc3ViY2xhc3Mp CiAgICAgICAgOwp2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0Iikp KQpfcmF3X3NwaW5fbG9ja19uZXN0X2xvY2socmF3X3NwaW5sb2NrX3QgKmxvY2ssIHN0cnVjdCBs b2NrZGVwX21hcCAqbWFwKQogICAgICAgIDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIu c3BpbmxvY2sudGV4dCIpKSkgX3Jhd19zcGluX2xvY2tfYmgocmF3X3NwaW5sb2NrX3QgKmxvY2sp IDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19z cGluX2xvY2tfaXJxKHJhd19zcGlubG9ja190ICpsb2NrKQogICAgICAgIDsKCnVuc2lnbmVkIGxv bmcgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfc3Bpbl9s b2NrX2lycXNhdmUocmF3X3NwaW5sb2NrX3QgKmxvY2spCiAgICAgICAgOwp1bnNpZ25lZCBsb25n IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKQpfcmF3X3NwaW5fbG9j a19pcnFzYXZlX25lc3RlZChyYXdfc3BpbmxvY2tfdCAqbG9jaywgaW50IHN1YmNsYXNzKQogICAg ICAgIDsKaW50IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKSBfcmF3 X3NwaW5fdHJ5bG9jayhyYXdfc3BpbmxvY2tfdCAqbG9jayk7CmludCBfX2F0dHJpYnV0ZV9fKChz ZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19zcGluX3RyeWxvY2tfYmgocmF3X3NwaW5s b2NrX3QgKmxvY2spOwp2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0 IikpKSBfcmF3X3NwaW5fdW5sb2NrKHJhd19zcGlubG9ja190ICpsb2NrKSA7CnZvaWQgX19hdHRy aWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfc3Bpbl91bmxvY2tfYmgo cmF3X3NwaW5sb2NrX3QgKmxvY2spIDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3Bp bmxvY2sudGV4dCIpKSkgX3Jhd19zcGluX3VubG9ja19pcnEocmF3X3NwaW5sb2NrX3QgKmxvY2sp IDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkKX3Jhd19z cGluX3VubG9ja19pcnFyZXN0b3JlKHJhd19zcGlubG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25n IGZsYWdzKQogICAgICAgIDsKIyA4NiAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX2FwaV9zbXAu aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IF9fcmF3X3NwaW5fdHJ5bG9jayhyYXdfc3BpbmxvY2tfdCAqbG9jaykKewogX19hc21f XyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKIGlmIChkb19yYXdfc3Bpbl90cnlsb2Nr KGxvY2spKSB7CiAgZG8geyB9IHdoaWxlICgwKTsKICByZXR1cm4gMTsKIH0KIF9fYXNtX18gX192 b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiByZXR1cm4gMDsKfQojIDEwNCAiLi9pbmNsdWRl L2xpbnV4L3NwaW5sb2NrX2FwaV9zbXAuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX3Jhd19zcGluX2xvY2tf aXJxc2F2ZShyYXdfc3BpbmxvY2tfdCAqbG9jaykKewogdW5zaWduZWQgbG9uZyBmbGFnczsKCiBk byB7IGRvIHsgKHsgdW5zaWduZWQgbG9uZyBfX2R1bW15OyB0eXBlb2YoZmxhZ3MpIF9fZHVtbXky OyAodm9pZCkoJl9fZHVtbXkgPT0gJl9fZHVtbXkyKTsgMTsgfSk7IGZsYWdzID0gYXJjaF9sb2Nh bF9pcnFfc2F2ZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiBfX2FzbV9fIF9fdm9sYXRp bGVfXygiIjogOiA6Im1lbW9yeSIpOwogZG8geyB9IHdoaWxlICgwKTsKIyAxMTkgIi4vaW5jbHVk ZS9saW51eC9zcGlubG9ja19hcGlfc21wLmgiCiBkb19yYXdfc3Bpbl9sb2NrX2ZsYWdzKGxvY2ss ICZmbGFncyk7CgogcmV0dXJuIGZsYWdzOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3NwaW5fbG9ja19pcnEocmF3 X3NwaW5sb2NrX3QgKmxvY2spCnsKIGRvIHsgYXJjaF9sb2NhbF9pcnFfZGlzYWJsZSgpOyB9IHdo aWxlICgwKTsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiBkbyB7IH0g d2hpbGUgKDApOwogZG9fcmF3X3NwaW5fbG9jayhsb2NrKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd19zcGluX2xv Y2tfYmgocmF3X3NwaW5sb2NrX3QgKmxvY2spCnsKIF9fbG9jYWxfYmhfZGlzYWJsZV9pcCgodW5z aWduZWQgbG9uZylfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksICgoMiAqICgxVUwgPDwgKDAg KyA4KSkpICsgMCkpOwogZG8geyB9IHdoaWxlICgwKTsKIGRvX3Jhd19zcGluX2xvY2sobG9jayk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgX19yYXdfc3Bpbl9sb2NrKHJhd19zcGlubG9ja190ICpsb2NrKQp7CiBfX2FzbV9f IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogZG8geyB9IHdoaWxlICgwKTsKIGRvX3Jh d19zcGluX2xvY2sobG9jayk7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd19zcGluX3VubG9jayhyYXdfc3Bpbmxv Y2tfdCAqbG9jaykKewogZG8geyB9IHdoaWxlICgwKTsKIGRvX3Jhd19zcGluX3VubG9jayhsb2Nr KTsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdf c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShyYXdfc3BpbmxvY2tfdCAqbG9jaywKICAgICAgICAgdW5z aWduZWQgbG9uZyBmbGFncykKewogZG8geyB9IHdoaWxlICgwKTsKIGRvX3Jhd19zcGluX3VubG9j ayhsb2NrKTsKIGRvIHsgZG8geyAoeyB1bnNpZ25lZCBsb25nIF9fZHVtbXk7IHR5cGVvZihmbGFn cykgX19kdW1teTI7ICh2b2lkKSgmX19kdW1teSA9PSAmX19kdW1teTIpOyAxOyB9KTsgYXJjaF9s b2NhbF9pcnFfcmVzdG9yZShmbGFncyk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIF9fYXNt X18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfc3Bpbl91bmxv Y2tfaXJxKHJhd19zcGlubG9ja190ICpsb2NrKQp7CiBkbyB7IH0gd2hpbGUgKDApOwogZG9fcmF3 X3NwaW5fdW5sb2NrKGxvY2spOwogZG8geyBhcmNoX2xvY2FsX2lycV9lbmFibGUoKTsgfSB3aGls ZSAoMCk7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9f cmF3X3NwaW5fdW5sb2NrX2JoKHJhd19zcGlubG9ja190ICpsb2NrKQp7CiBkbyB7IH0gd2hpbGUg KDApOwogZG9fcmF3X3NwaW5fdW5sb2NrKGxvY2spOwogX19sb2NhbF9iaF9lbmFibGVfaXAoKHVu c2lnbmVkIGxvbmcpX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCAoKDIgKiAoMVVMIDw8ICgw ICsgOCkpKSArIDApKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fcmF3X3NwaW5fdHJ5bG9ja19iaChyYXdfc3BpbmxvY2tf dCAqbG9jaykKewogX19sb2NhbF9iaF9kaXNhYmxlX2lwKCh1bnNpZ25lZCBsb25nKV9fYnVpbHRp bl9yZXR1cm5fYWRkcmVzcygwKSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAwKSk7CiBpZiAo ZG9fcmF3X3NwaW5fdHJ5bG9jayhsb2NrKSkgewogIGRvIHsgfSB3aGlsZSAoMCk7CiAgcmV0dXJu IDE7CiB9CiBfX2xvY2FsX2JoX2VuYWJsZV9pcCgodW5zaWduZWQgbG9uZylfX2J1aWx0aW5fcmV0 dXJuX2FkZHJlc3MoMCksICgoMiAqICgxVUwgPDwgKDAgKyA4KSkpICsgMCkpOwogcmV0dXJuIDA7 Cn0KCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3J3bG9ja19hcGlfc21wLmgiIDEKIyAxOCAiLi9pbmNs dWRlL2xpbnV4L3J3bG9ja19hcGlfc21wLmgiCnZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigi LnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfcmVhZF9sb2NrKHJ3bG9ja190ICpsb2NrKSA7CnZvaWQg X19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfbG9j ayhyd2xvY2tfdCAqbG9jaykgOwp2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9j ay50ZXh0IikpKSBfcmF3X3JlYWRfbG9ja19iaChyd2xvY2tfdCAqbG9jaykgOwp2b2lkIF9fYXR0 cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKSBfcmF3X3dyaXRlX2xvY2tfYmgo cndsb2NrX3QgKmxvY2spIDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2su dGV4dCIpKSkgX3Jhd19yZWFkX2xvY2tfaXJxKHJ3bG9ja190ICpsb2NrKSA7CnZvaWQgX19hdHRy aWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfbG9ja19pcnEo cndsb2NrX3QgKmxvY2spIDsKdW5zaWduZWQgbG9uZyBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIu c3BpbmxvY2sudGV4dCIpKSkgX3Jhd19yZWFkX2xvY2tfaXJxc2F2ZShyd2xvY2tfdCAqbG9jaykK ICAgICAgIDsKdW5zaWduZWQgbG9uZyBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2su dGV4dCIpKSkgX3Jhd193cml0ZV9sb2NrX2lycXNhdmUocndsb2NrX3QgKmxvY2spCiAgICAgICA7 CmludCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19yZWFk X3RyeWxvY2socndsb2NrX3QgKmxvY2spOwppbnQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNw aW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfdHJ5bG9jayhyd2xvY2tfdCAqbG9jayk7CnZvaWQg X19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfcmVhZF91bmxv Y2socndsb2NrX3QgKmxvY2spIDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3Bpbmxv Y2sudGV4dCIpKSkgX3Jhd193cml0ZV91bmxvY2socndsb2NrX3QgKmxvY2spIDsKdm9pZCBfX2F0 dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19yZWFkX3VubG9ja19i aChyd2xvY2tfdCAqbG9jaykgOwp2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9j ay50ZXh0IikpKSBfcmF3X3dyaXRlX3VubG9ja19iaChyd2xvY2tfdCAqbG9jaykgOwp2b2lkIF9f YXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKSBfcmF3X3JlYWRfdW5sb2Nr X2lycShyd2xvY2tfdCAqbG9jaykgOwp2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlu bG9jay50ZXh0IikpKSBfcmF3X3dyaXRlX3VubG9ja19pcnEocndsb2NrX3QgKmxvY2spIDsKdm9p ZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkKX3Jhd19yZWFkX3Vu bG9ja19pcnFyZXN0b3JlKHJ3bG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZsYWdzKQogICAg ICAgOwp2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKQpfcmF3 X3dyaXRlX3VubG9ja19pcnFyZXN0b3JlKHJ3bG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZs YWdzKQogICAgICAgOwojIDExNyAiLi9pbmNsdWRlL2xpbnV4L3J3bG9ja19hcGlfc21wLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBfX3Jhd19yZWFkX3RyeWxvY2socndsb2NrX3QgKmxvY2spCnsKIF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7CiBpZiAocXVldWVkX3JlYWRfdHJ5bG9jaygmKGxvY2spLT5y YXdfbG9jaykpIHsKICBkbyB7IH0gd2hpbGUgKDApOwogIHJldHVybiAxOwogfQogX19hc21fXyBf X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19yYXdfd3Jp dGVfdHJ5bG9jayhyd2xvY2tfdCAqbG9jaykKewogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDog OiJtZW1vcnkiKTsKIGlmIChxdWV1ZWRfd3JpdGVfdHJ5bG9jaygmKGxvY2spLT5yYXdfbG9jaykp IHsKICBkbyB7IH0gd2hpbGUgKDApOwogIHJldHVybiAxOwogfQogX19hc21fXyBfX3ZvbGF0aWxl X18oIiI6IDogOiJtZW1vcnkiKTsKIHJldHVybiAwOwp9CiMgMTQ2ICIuL2luY2x1ZGUvbGludXgv cndsb2NrX2FwaV9zbXAuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd19yZWFkX2xvY2socndsb2NrX3QgKmxvY2spCnsK IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiBkbyB7IH0gd2hpbGUgKDAp OwogZG8geyh2b2lkKTA7IHF1ZXVlZF9yZWFkX2xvY2soJihsb2NrKS0+cmF3X2xvY2spOyB9IHdo aWxlICgwKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX3Jhd19yZWFkX2xvY2tfaXJxc2F2ZShyd2xvY2tf dCAqbG9jaykKewogdW5zaWduZWQgbG9uZyBmbGFnczsKCiBkbyB7IGRvIHsgKHsgdW5zaWduZWQg bG9uZyBfX2R1bW15OyB0eXBlb2YoZmxhZ3MpIF9fZHVtbXkyOyAodm9pZCkoJl9fZHVtbXkgPT0g Jl9fZHVtbXkyKTsgMTsgfSk7IGZsYWdzID0gYXJjaF9sb2NhbF9pcnFfc2F2ZSgpOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OwogZG8geyB9IHdoaWxlICgwKTsKIGRvIHsodm9pZCkwOyBxdWV1ZWRfcmVhZF9sb2NrKCYoKGxv Y2spKS0+cmF3X2xvY2spOyB9IHdoaWxlICgwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7CiByZXR1cm4gZmxhZ3M7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfcmVhZF9sb2NrX2lycShy d2xvY2tfdCAqbG9jaykKewogZG8geyBhcmNoX2xvY2FsX2lycV9kaXNhYmxlKCk7IH0gd2hpbGUg KDApOwogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKIGRvIHsgfSB3aGls ZSAoMCk7CiBkbyB7KHZvaWQpMDsgcXVldWVkX3JlYWRfbG9jaygmKGxvY2spLT5yYXdfbG9jayk7 IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3JlYWRfbG9ja19iaChyd2xvY2tfdCAqbG9jaykK ewogX19sb2NhbF9iaF9kaXNhYmxlX2lwKCh1bnNpZ25lZCBsb25nKV9fYnVpbHRpbl9yZXR1cm5f YWRkcmVzcygwKSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAwKSk7CiBkbyB7IH0gd2hpbGUg KDApOwogZG8geyh2b2lkKTA7IHF1ZXVlZF9yZWFkX2xvY2soJihsb2NrKS0+cmF3X2xvY2spOyB9 IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX3Jhd193cml0ZV9sb2NrX2lycXNhdmUocnds b2NrX3QgKmxvY2spCnsKIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogZG8geyBkbyB7ICh7IHVuc2ln bmVkIGxvbmcgX19kdW1teTsgdHlwZW9mKGZsYWdzKSBfX2R1bW15MjsgKHZvaWQpKCZfX2R1bW15 ID09ICZfX2R1bW15Mik7IDE7IH0pOyBmbGFncyA9IGFyY2hfbG9jYWxfaXJxX3NhdmUoKTsgfSB3 aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1v cnkiKTsKIGRvIHsgfSB3aGlsZSAoMCk7CiBkbyB7KHZvaWQpMDsgcXVldWVkX3dyaXRlX2xvY2so JigobG9jaykpLT5yYXdfbG9jayk7IH0gd2hpbGUgKDApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7CiByZXR1cm4gZmxhZ3M7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfd3JpdGVfbG9j a19pcnEocndsb2NrX3QgKmxvY2spCnsKIGRvIHsgYXJjaF9sb2NhbF9pcnFfZGlzYWJsZSgpOyB9 IHdoaWxlICgwKTsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiBkbyB7 IH0gd2hpbGUgKDApOwogZG8geyh2b2lkKTA7IHF1ZXVlZF93cml0ZV9sb2NrKCYobG9jayktPnJh d19sb2NrKTsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfd3JpdGVfbG9ja19iaChyd2xvY2tf dCAqbG9jaykKewogX19sb2NhbF9iaF9kaXNhYmxlX2lwKCh1bnNpZ25lZCBsb25nKV9fYnVpbHRp bl9yZXR1cm5fYWRkcmVzcygwKSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAwKSk7CiBkbyB7 IH0gd2hpbGUgKDApOwogZG8geyh2b2lkKTA7IHF1ZXVlZF93cml0ZV9sb2NrKCYobG9jayktPnJh d19sb2NrKTsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfd3JpdGVfbG9jayhyd2xvY2tfdCAq bG9jaykKewogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKIGRvIHsgfSB3 aGlsZSAoMCk7CiBkbyB7KHZvaWQpMDsgcXVldWVkX3dyaXRlX2xvY2soJihsb2NrKS0+cmF3X2xv Y2spOyB9IHdoaWxlICgwKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3dyaXRlX3VubG9jayhyd2xvY2tfdCAq bG9jaykKewogZG8geyB9IHdoaWxlICgwKTsKIGRvIHtxdWV1ZWRfd3JpdGVfdW5sb2NrKCYobG9j ayktPnJhd19sb2NrKTsgKHZvaWQpMDsgfSB3aGlsZSAoMCk7CiBfX2FzbV9fIF9fdm9sYXRpbGVf XygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3JlYWRfdW5sb2NrKHJ3bG9ja190ICps b2NrKQp7CiBkbyB7IH0gd2hpbGUgKDApOwogZG8ge3F1ZXVlZF9yZWFkX3VubG9jaygmKGxvY2sp LT5yYXdfbG9jayk7ICh2b2lkKTA7IH0gd2hpbGUgKDApOwogX19hc21fXyBfX3ZvbGF0aWxlX18o IiI6IDogOiJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApfX3Jhd19yZWFkX3VubG9ja19pcnFyZXN0b3JlKHJ3 bG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZsYWdzKQp7CiBkbyB7IH0gd2hpbGUgKDApOwog ZG8ge3F1ZXVlZF9yZWFkX3VubG9jaygmKGxvY2spLT5yYXdfbG9jayk7ICh2b2lkKTA7IH0gd2hp bGUgKDApOwogZG8geyBkbyB7ICh7IHVuc2lnbmVkIGxvbmcgX19kdW1teTsgdHlwZW9mKGZsYWdz KSBfX2R1bW15MjsgKHZvaWQpKCZfX2R1bW15ID09ICZfX2R1bW15Mik7IDE7IH0pOyBhcmNoX2xv Y2FsX2lycV9yZXN0b3JlKGZsYWdzKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogX19hc21f XyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd19yZWFkX3VubG9j a19pcnEocndsb2NrX3QgKmxvY2spCnsKIGRvIHsgfSB3aGlsZSAoMCk7CiBkbyB7cXVldWVkX3Jl YWRfdW5sb2NrKCYobG9jayktPnJhd19sb2NrKTsgKHZvaWQpMDsgfSB3aGlsZSAoMCk7CiBkbyB7 IGFyY2hfbG9jYWxfaXJxX2VuYWJsZSgpOyB9IHdoaWxlICgwKTsKIF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfcmVhZF91bmxvY2tfYmgocndsb2Nr X3QgKmxvY2spCnsKIGRvIHsgfSB3aGlsZSAoMCk7CiBkbyB7cXVldWVkX3JlYWRfdW5sb2NrKCYo bG9jayktPnJhd19sb2NrKTsgKHZvaWQpMDsgfSB3aGlsZSAoMCk7CiBfX2xvY2FsX2JoX2VuYWJs ZV9pcCgodW5zaWduZWQgbG9uZylfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksICgoMiAqICgx VUwgPDwgKDAgKyA4KSkpICsgMCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3dyaXRlX3VubG9ja19pcnFyZXN0 b3JlKHJ3bG9ja190ICpsb2NrLAogICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncykKewogZG8g eyB9IHdoaWxlICgwKTsKIGRvIHtxdWV1ZWRfd3JpdGVfdW5sb2NrKCYobG9jayktPnJhd19sb2Nr KTsgKHZvaWQpMDsgfSB3aGlsZSAoMCk7CiBkbyB7IGRvIHsgKHsgdW5zaWduZWQgbG9uZyBfX2R1 bW15OyB0eXBlb2YoZmxhZ3MpIF9fZHVtbXkyOyAodm9pZCkoJl9fZHVtbXkgPT0gJl9fZHVtbXky KTsgMTsgfSk7IGFyY2hfbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOyB9IHdoaWxlICgwKTsgfSB3 aGlsZSAoMCk7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IF9fcmF3X3dyaXRlX3VubG9ja19pcnEocndsb2NrX3QgKmxvY2spCnsKIGRvIHsgfSB3aGlsZSAo MCk7CiBkbyB7cXVldWVkX3dyaXRlX3VubG9jaygmKGxvY2spLT5yYXdfbG9jayk7ICh2b2lkKTA7 IH0gd2hpbGUgKDApOwogZG8geyBhcmNoX2xvY2FsX2lycV9lbmFibGUoKTsgfSB3aGlsZSAoMCk7 CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3dy aXRlX3VubG9ja19iaChyd2xvY2tfdCAqbG9jaykKewogZG8geyB9IHdoaWxlICgwKTsKIGRvIHtx dWV1ZWRfd3JpdGVfdW5sb2NrKCYobG9jayktPnJhd19sb2NrKTsgKHZvaWQpMDsgfSB3aGlsZSAo MCk7CiBfX2xvY2FsX2JoX2VuYWJsZV9pcCgodW5zaWduZWQgbG9uZylfX2J1aWx0aW5fcmV0dXJu X2FkZHJlc3MoMCksICgoMiAqICgxVUwgPDwgKDAgKyA4KSkpICsgMCkpOwp9CiMgMTkxICIuL2lu Y2x1ZGUvbGludXgvc3BpbmxvY2tfYXBpX3NtcC5oIiAyCiMgMzE3ICIuL2luY2x1ZGUvbGludXgv c3BpbmxvY2suaCIgMgojIDMyNSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgcmF3X3NwaW5sb2NrX3QgKnNwaW5sb2NrX2NoZWNr KHNwaW5sb2NrX3QgKmxvY2spCnsKIHJldHVybiAmbG9jay0+cmxvY2s7Cn0KCgoKCgoKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzcGluX2xvY2soc3BpbmxvY2tfdCAq bG9jaykKewogX3Jhd19zcGluX2xvY2soJmxvY2stPnJsb2NrKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNwaW5fbG9ja19iaChzcGlubG9ja190ICpsb2NrKQp7 CiBfcmF3X3NwaW5fbG9ja19iaCgmbG9jay0+cmxvY2spOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBzcGluX3RyeWxvY2soc3BpbmxvY2tfdCAqbG9jaykKewogcmV0 dXJuIChfcmF3X3NwaW5fdHJ5bG9jaygmbG9jay0+cmxvY2spKTsKfQojIDM2MSAiLi9pbmNsdWRl L2xpbnV4L3NwaW5sb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9p ZCBzcGluX2xvY2tfaXJxKHNwaW5sb2NrX3QgKmxvY2spCnsKIF9yYXdfc3Bpbl9sb2NrX2lycSgm bG9jay0+cmxvY2spOwp9CiMgMzc2ICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNwaW5fdW5sb2NrKHNwaW5sb2NrX3Qg KmxvY2spCnsKIF9fcmF3X3NwaW5fdW5sb2NrKCZsb2NrLT5ybG9jayk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzcGluX3VubG9ja19iaChzcGlubG9ja190ICps b2NrKQp7CiBfcmF3X3NwaW5fdW5sb2NrX2JoKCZsb2NrLT5ybG9jayk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzcGluX3VubG9ja19pcnEoc3BpbmxvY2tfdCAq bG9jaykKewogX19yYXdfc3Bpbl91bmxvY2tfaXJxKCZsb2NrLT5ybG9jayk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzcGluX3VubG9ja19pcnFyZXN0b3JlKHNw aW5sb2NrX3QgKmxvY2ssIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCnsKIGRvIHsgKHsgdW5zaWduZWQg bG9uZyBfX2R1bW15OyB0eXBlb2YoZmxhZ3MpIF9fZHVtbXkyOyAodm9pZCkoJl9fZHVtbXkgPT0g Jl9fZHVtbXkyKTsgMTsgfSk7IF9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbG9jay0+cmxv Y2ssIGZsYWdzKTsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgaW50IHNwaW5fdHJ5bG9ja19iaChzcGlubG9ja190ICpsb2NrKQp7CiByZXR1cm4gKF9y YXdfc3Bpbl90cnlsb2NrX2JoKCZsb2NrLT5ybG9jaykpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBzcGluX3RyeWxvY2tfaXJxKHNwaW5sb2NrX3QgKmxvY2spCnsK IHJldHVybiAoeyBkbyB7IGFyY2hfbG9jYWxfaXJxX2Rpc2FibGUoKTsgfSB3aGlsZSAoMCk7IChf cmF3X3NwaW5fdHJ5bG9jaygmbG9jay0+cmxvY2spKSA/IDEgOiAoeyBkbyB7IGFyY2hfbG9jYWxf aXJxX2VuYWJsZSgpOyB9IHdoaWxlICgwKTsgMDsgfSk7IH0pOwp9CiMgNDI5ICIuL2luY2x1ZGUv bGludXgvc3BpbmxvY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQg c3Bpbl9pc19sb2NrZWQoc3BpbmxvY2tfdCAqbG9jaykKewogcmV0dXJuIHF1ZXVlZF9zcGluX2lz X2xvY2tlZCgmKCZsb2NrLT5ybG9jayktPnJhd19sb2NrKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSBpbnQgc3Bpbl9pc19jb250ZW5kZWQoc3BpbmxvY2tfdCAqbG9jaykK ewogcmV0dXJuIHF1ZXVlZF9zcGluX2lzX2NvbnRlbmRlZCgmKCZsb2NrLT5ybG9jayktPnJhd19s b2NrKTsKfQojIDQ1NCAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCmV4dGVybiBpbnQgX2F0 b21pY19kZWNfYW5kX2xvY2soYXRvbWljX3QgKmF0b21pYywgc3BpbmxvY2tfdCAqbG9jayk7CgoK CmV4dGVybiBpbnQgX2F0b21pY19kZWNfYW5kX2xvY2tfaXJxc2F2ZShhdG9taWNfdCAqYXRvbWlj LCBzcGlubG9ja190ICpsb2NrLAogICAgIHVuc2lnbmVkIGxvbmcgKmZsYWdzKTsKCgoKaW50IF9f YWxsb2NfYnVja2V0X3NwaW5sb2NrcyhzcGlubG9ja190ICoqbG9ja3MsIHVuc2lnbmVkIGludCAq bG9ja19tYXNrLAogICAgICAgIHNpemVfdCBtYXhfc2l6ZSwgdW5zaWduZWQgaW50IGNwdV9tdWx0 LAogICAgICAgIGdmcF90IGdmcCwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBzdHJ1Y3QgbG9j a19jbGFzc19rZXkgKmtleSk7CiMgNDc4ICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIKdm9p ZCBmcmVlX2J1Y2tldF9zcGlubG9ja3Moc3BpbmxvY2tfdCAqbG9ja3MpOwojIDE3ICIuL2luY2x1 ZGUvbGludXgva3JlZi5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgiIDEKIyA4 OCAiLi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgiCnN0cnVjdCBtdXRleDsKIyA5OCAiLi9pbmNs dWRlL2xpbnV4L3JlZmNvdW50LmgiCnR5cGVkZWYgc3RydWN0IHJlZmNvdW50X3N0cnVjdCB7CiBh dG9taWNfdCByZWZzOwp9IHJlZmNvdW50X3Q7CgoKCgoKZW51bSByZWZjb3VudF9zYXR1cmF0aW9u X3R5cGUgewogUkVGQ09VTlRfQUREX05PVF9aRVJPX09WRiwKIFJFRkNPVU5UX0FERF9PVkYsCiBS RUZDT1VOVF9BRERfVUFGLAogUkVGQ09VTlRfU1VCX1VBRiwKIFJFRkNPVU5UX0RFQ19MRUFLLAp9 OwoKdm9pZCByZWZjb3VudF93YXJuX3NhdHVyYXRlKHJlZmNvdW50X3QgKnIsIGVudW0gcmVmY291 bnRfc2F0dXJhdGlvbl90eXBlIHQpOwoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlZmNvdW50X3NldChyZWZjb3VudF90 ICpyLCBpbnQgbikKewogYXRvbWljX3NldCgmci0+cmVmcywgbik7Cn0KCgoKCgoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVk IGludCByZWZjb3VudF9yZWFkKGNvbnN0IHJlZmNvdW50X3QgKnIpCnsKIHJldHVybiBhdG9taWNf cmVhZCgmci0+cmVmcyk7Cn0KIyAxNTUgIi4vaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgYm9vbCByZWZjb3VudF9hZGRfbm90 X3plcm8oaW50IGksIHJlZmNvdW50X3QgKnIpCnsKIGludCBvbGQgPSByZWZjb3VudF9yZWFkKHIp OwoKIGRvIHsKICBpZiAoIW9sZCkKICAgYnJlYWs7CiB9IHdoaWxlICghYXRvbWljX3RyeV9jbXB4 Y2hnKCZyLT5yZWZzLCAmb2xkLCBvbGQgKyBpKSk7CgogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEo b2xkIDwgMCB8fCBvbGQgKyBpIDwgMCksIDApKQogIHJlZmNvdW50X3dhcm5fc2F0dXJhdGUociwg UkVGQ09VTlRfQUREX05PVF9aRVJPX09WRik7CgogcmV0dXJuIG9sZDsKfQojIDE4NiAiLi9pbmNs dWRlL2xpbnV4L3JlZmNvdW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmVmY291bnRfYWRkKGludCBpLCByZWZjb3VudF90 ICpyKQp7CiBpbnQgb2xkID0gYXRvbWljX2ZldGNoX2FkZChpLCAmci0+cmVmcyk7CgogaWYgKF9f YnVpbHRpbl9leHBlY3QoISEoIW9sZCksIDApKQogIHJlZmNvdW50X3dhcm5fc2F0dXJhdGUociwg UkVGQ09VTlRfQUREX1VBRik7CiBlbHNlIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKG9sZCA8IDAg fHwgb2xkICsgaSA8IDApLCAwKSkKICByZWZjb3VudF93YXJuX3NhdHVyYXRlKHIsIFJFRkNPVU5U X0FERF9PVkYpOwp9CiMgMjA5ICIuL2luY2x1ZGUvbGludXgvcmVmY291bnQuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGJvb2wgcmVmY291bnRfaW5jX25vdF96ZXJv KHJlZmNvdW50X3QgKnIpCnsKIHJldHVybiByZWZjb3VudF9hZGRfbm90X3plcm8oMSwgcik7Cn0K IyAyMjYgIi4vaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlZmNvdW50X2luYyhyZWZj b3VudF90ICpyKQp7CiByZWZjb3VudF9hZGQoMSwgcik7Cn0KIyAyNTEgIi4vaW5jbHVkZS9saW51 eC9yZWZjb3VudC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgYm9v bCByZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIpCnsKIGludCBvbGQg PSBhdG9taWNfZmV0Y2hfc3ViKGksICZyLT5yZWZzKTsKCiBpZiAob2xkID09IGkpIHsKICBfX2Fz bV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogIHJldHVybiB0cnVlOwogfQoKIGlm IChfX2J1aWx0aW5fZXhwZWN0KCEhKG9sZCA8IDAgfHwgb2xkIC0gaSA8IDApLCAwKSkKICByZWZj b3VudF93YXJuX3NhdHVyYXRlKHIsIFJFRkNPVU5UX1NVQl9VQUYpOwoKIHJldHVybiBmYWxzZTsK fQojIDI3OSAiLi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fd2Fy bl91bnVzZWRfcmVzdWx0X18pKSBib29sIHJlZmNvdW50X2RlY19hbmRfdGVzdChyZWZjb3VudF90 ICpyKQp7CiByZXR1cm4gcmVmY291bnRfc3ViX2FuZF90ZXN0KDEsIHIpOwp9CiMgMjk0ICIuL2lu Y2x1ZGUvbGludXgvcmVmY291bnQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByZWZjb3VudF9kZWMocmVmY291bnRfdCAqcikK ewogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoYXRvbWljX2ZldGNoX3N1YigxLCAmci0+cmVmcykg PD0gMSksIDApKQogIHJlZmNvdW50X3dhcm5fc2F0dXJhdGUociwgUkVGQ09VTlRfREVDX0xFQUsp Owp9CgpleHRlcm4gX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGJvb2wg cmVmY291bnRfZGVjX2lmX29uZShyZWZjb3VudF90ICpyKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18o KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBib29sIHJlZmNvdW50X2RlY19ub3Rfb25lKHJlZmNv dW50X3QgKnIpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IGJvb2wgcmVmY291bnRfZGVjX2FuZF9tdXRleF9sb2NrKHJlZmNvdW50X3QgKnIsIHN0cnVjdCBt dXRleCAqbG9jayk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSkgYm9vbCByZWZjb3VudF9kZWNfYW5kX2xvY2socmVmY291bnRfdCAqciwgc3BpbmxvY2tfdCAq bG9jayk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgYm9v bCByZWZjb3VudF9kZWNfYW5kX2xvY2tfaXJxc2F2ZShyZWZjb3VudF90ICpyLAogICAgICAgICAg ICAgc3BpbmxvY2tfdCAqbG9jaywKICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmZsYWdzKTsK IyAxOCAiLi9pbmNsdWRlL2xpbnV4L2tyZWYuaCIgMgoKc3RydWN0IGtyZWYgewogcmVmY291bnRf dCByZWZjb3VudDsKfTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga3JlZl9pbml0KHN0cnVjdCBrcmVmICprcmVmKQp7 CiByZWZjb3VudF9zZXQoJmtyZWYtPnJlZmNvdW50LCAxKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGtyZWZf cmVhZChjb25zdCBzdHJ1Y3Qga3JlZiAqa3JlZikKewogcmV0dXJuIHJlZmNvdW50X3JlYWQoJmty ZWYtPnJlZmNvdW50KTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga3JlZl9nZXQoc3RydWN0IGtyZWYgKmtyZWYpCnsK IHJlZmNvdW50X2luYygma3JlZi0+cmVmY291bnQpOwp9CiMgNjIgIi4vaW5jbHVkZS9saW51eC9r cmVmLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludCBrcmVmX3B1dChzdHJ1Y3Qga3JlZiAqa3JlZiwgdm9pZCAoKnJlbGVhc2UpKHN0 cnVjdCBrcmVmICprcmVmKSkKewogaWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdCgma3JlZi0+cmVm Y291bnQpKSB7CiAgcmVsZWFzZShrcmVmKTsKICByZXR1cm4gMTsKIH0KIHJldHVybiAwOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQga3JlZl9wdXRfbXV0ZXgoc3RydWN0IGtyZWYgKmtyZWYsCiAgICAgdm9pZCAoKnJlbGVhc2Up KHN0cnVjdCBrcmVmICprcmVmKSwKICAgICBzdHJ1Y3QgbXV0ZXggKmxvY2spCnsKIGlmIChyZWZj b3VudF9kZWNfYW5kX211dGV4X2xvY2soJmtyZWYtPnJlZmNvdW50LCBsb2NrKSkgewogIHJlbGVh c2Uoa3JlZik7CiAgcmV0dXJuIDE7CiB9CiByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGtyZWZfcHV0X2xvY2so c3RydWN0IGtyZWYgKmtyZWYsCiAgICB2b2lkICgqcmVsZWFzZSkoc3RydWN0IGtyZWYgKmtyZWYp LAogICAgc3BpbmxvY2tfdCAqbG9jaykKewogaWYgKHJlZmNvdW50X2RlY19hbmRfbG9jaygma3Jl Zi0+cmVmY291bnQsIGxvY2spKSB7CiAgcmVsZWFzZShrcmVmKTsKICByZXR1cm4gMTsKIH0KIHJl dHVybiAwOwp9CiMgMTA5ICIuL2luY2x1ZGUvbGludXgva3JlZi5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVf XygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtyZWZfZ2V0X3VubGVzc196ZXJvKHN0cnVjdCBr cmVmICprcmVmKQp7CiByZXR1cm4gcmVmY291bnRfaW5jX25vdF96ZXJvKCZrcmVmLT5yZWZjb3Vu dCk7Cn0KIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL29z X3R5cGVzLmgiIDIKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIgMQojIDE1ICIuL2luY2x1 ZGUvbGludXgvc2xhYi5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9nZnAuaCIgMQoKCgoKIyAxICIu L2luY2x1ZGUvbGludXgvbW1kZWJ1Zy5oIiAxCgoKCgoKCgpzdHJ1Y3QgcGFnZTsKc3RydWN0IHZt X2FyZWFfc3RydWN0OwpzdHJ1Y3QgbW1fc3RydWN0OwoKZXh0ZXJuIHZvaWQgZHVtcF9wYWdlKHN0 cnVjdCBwYWdlICpwYWdlLCBjb25zdCBjaGFyICpyZWFzb24pOwpleHRlcm4gdm9pZCBfX2R1bXBf cGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgY29uc3QgY2hhciAqcmVhc29uKTsKdm9pZCBkdW1wX3Zt YShjb25zdCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CnZvaWQgZHVtcF9tbShjb25zdCBz dHJ1Y3QgbW1fc3RydWN0ICptbSk7CiMgNiAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIiAyCiMgMSAi Li9pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAxCiMgMTAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUu aCIKIyAxICIuL2luY2x1ZGUvbGludXgvd2FpdC5oIiAxCiMgMTIgIi4vaW5jbHVkZS9saW51eC93 YWl0LmgiCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvd2FpdC5oIiAxCiMgMTMgIi4vaW5jbHVk ZS9saW51eC93YWl0LmgiIDIKCnR5cGVkZWYgc3RydWN0IHdhaXRfcXVldWVfZW50cnkgd2FpdF9x dWV1ZV9lbnRyeV90OwoKdHlwZWRlZiBpbnQgKCp3YWl0X3F1ZXVlX2Z1bmNfdCkoc3RydWN0IHdh aXRfcXVldWVfZW50cnkgKndxX2VudHJ5LCB1bnNpZ25lZCBtb2RlLCBpbnQgZmxhZ3MsIHZvaWQg KmtleSk7CmludCBkZWZhdWx0X3dha2VfZnVuY3Rpb24oc3RydWN0IHdhaXRfcXVldWVfZW50cnkg KndxX2VudHJ5LCB1bnNpZ25lZCBtb2RlLCBpbnQgZmxhZ3MsIHZvaWQgKmtleSk7CiMgMjcgIi4v aW5jbHVkZS9saW51eC93YWl0LmgiCnN0cnVjdCB3YWl0X3F1ZXVlX2VudHJ5IHsKIHVuc2lnbmVk IGludCBmbGFnczsKIHZvaWQgKnByaXZhdGU7CiB3YWl0X3F1ZXVlX2Z1bmNfdCBmdW5jOwogc3Ry dWN0IGxpc3RfaGVhZCBlbnRyeTsKfTsKCnN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgewogc3Bpbmxv Y2tfdCBsb2NrOwogc3RydWN0IGxpc3RfaGVhZCBoZWFkOwp9Owp0eXBlZGVmIHN0cnVjdCB3YWl0 X3F1ZXVlX2hlYWQgd2FpdF9xdWV1ZV9oZWFkX3Q7CgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CiMgNjEg Ii4vaW5jbHVkZS9saW51eC93YWl0LmgiCmV4dGVybiB2b2lkIF9faW5pdF93YWl0cXVldWVfaGVh ZChzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1 Y3QgbG9ja19jbGFzc19rZXkgKik7CiMgNzkgIi4vaW5jbHVkZS9saW51eC93YWl0LmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg aW5pdF93YWl0cXVldWVfZW50cnkoc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5LCBz dHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKIHdxX2VudHJ5LT5mbGFncyA9IDA7CiB3cV9lbnRyeS0+ cHJpdmF0ZSA9IHA7CiB3cV9lbnRyeS0+ZnVuYyA9IGRlZmF1bHRfd2FrZV9mdW5jdGlvbjsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZAppbml0X3dhaXRxdWV1ZV9mdW5jX2VudHJ5KHN0cnVjdCB3YWl0X3F1ZXVlX2VudHJ5ICp3 cV9lbnRyeSwgd2FpdF9xdWV1ZV9mdW5jX3QgZnVuYykKewogd3FfZW50cnktPmZsYWdzID0gMDsK IHdxX2VudHJ5LT5wcml2YXRlID0gKCh2b2lkICopMCk7CiB3cV9lbnRyeS0+ZnVuYyA9IGZ1bmM7 Cn0KIyAxMjQgIi4vaW5jbHVkZS9saW51eC93YWl0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB3YWl0cXVldWVfYWN0aXZlKHN0 cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQpCnsKIHJldHVybiAhbGlzdF9lbXB0eSgmd3Ff aGVhZC0+aGVhZCk7Cn0KIyAxMzcgIi4vaW5jbHVkZS9saW51eC93YWl0LmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgd3FfaGFz X3NpbmdsZV9zbGVlcGVyKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQpCnsKIHJldHVy biBsaXN0X2lzX3Npbmd1bGFyKCZ3cV9oZWFkLT5oZWFkKTsKfQojIDE1MCAiLi9pbmNsdWRlL2xp bnV4L3dhaXQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCB3cV9oYXNfc2xlZXBlcihzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3 cV9oZWFkKQp7CgoKCgoKCgogYXNtIHZvbGF0aWxlKCJsb2NrOyBhZGRsICQwLC00KCUlcnNwKSIg Ojo6ICJtZW1vcnkiLCAiY2MiKTsKIHJldHVybiB3YWl0cXVldWVfYWN0aXZlKHdxX2hlYWQpOwp9 CgpleHRlcm4gdm9pZCBhZGRfd2FpdF9xdWV1ZShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9o ZWFkLCBzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnkpOwpleHRlcm4gdm9pZCBhZGRf d2FpdF9xdWV1ZV9leGNsdXNpdmUoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3Ry dWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5KTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX3dhaXRf cXVldWUoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVf ZW50cnkgKndxX2VudHJ5KTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19hZGRfd2FpdF9xdWV1ZShzdHJ1Y3Qgd2FpdF9xdWV1 ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnkpCnsKIGxp c3RfYWRkKCZ3cV9lbnRyeS0+ZW50cnksICZ3cV9oZWFkLT5oZWFkKTsKfQoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApfX2Fk ZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBz dHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnkpCnsKIHdxX2VudHJ5LT5mbGFncyB8PSAw eDAxOwogX19hZGRfd2FpdF9xdWV1ZSh3cV9oZWFkLCB3cV9lbnRyeSk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19hZGRf d2FpdF9xdWV1ZV9lbnRyeV90YWlsKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHN0 cnVjdCB3YWl0X3F1ZXVlX2VudHJ5ICp3cV9lbnRyeSkKewogbGlzdF9hZGRfdGFpbCgmd3FfZW50 cnktPmVudHJ5LCAmd3FfaGVhZC0+aGVhZCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKX19hZGRfd2FpdF9xdWV1ZV9lbnRy eV90YWlsX2V4Y2x1c2l2ZShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qg d2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnkpCnsKIHdxX2VudHJ5LT5mbGFncyB8PSAweDAxOwog X19hZGRfd2FpdF9xdWV1ZV9lbnRyeV90YWlsKHdxX2hlYWQsIHdxX2VudHJ5KTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApf X3JlbW92ZV93YWl0X3F1ZXVlKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHN0cnVj dCB3YWl0X3F1ZXVlX2VudHJ5ICp3cV9lbnRyeSkKewogbGlzdF9kZWwoJndxX2VudHJ5LT5lbnRy eSk7Cn0KCnZvaWQgX193YWtlX3VwKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHVu c2lnbmVkIGludCBtb2RlLCBpbnQgbnIsIHZvaWQgKmtleSk7CnZvaWQgX193YWtlX3VwX2xvY2tl ZF9rZXkoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgdW5zaWduZWQgaW50IG1vZGUs IHZvaWQgKmtleSk7CnZvaWQgX193YWtlX3VwX2xvY2tlZF9rZXlfYm9va21hcmsoc3RydWN0IHdh aXRfcXVldWVfaGVhZCAqd3FfaGVhZCwKICB1bnNpZ25lZCBpbnQgbW9kZSwgdm9pZCAqa2V5LCB3 YWl0X3F1ZXVlX2VudHJ5X3QgKmJvb2ttYXJrKTsKdm9pZCBfX3dha2VfdXBfc3luY19rZXkoc3Ry dWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgdW5zaWduZWQgaW50IG1vZGUsIHZvaWQgKmtl eSk7CnZvaWQgX193YWtlX3VwX2xvY2tlZF9zeW5jX2tleShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFk ICp3cV9oZWFkLCB1bnNpZ25lZCBpbnQgbW9kZSwgdm9pZCAqa2V5KTsKdm9pZCBfX3dha2VfdXBf bG9ja2VkKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHVuc2lnbmVkIGludCBtb2Rl LCBpbnQgbnIpOwp2b2lkIF9fd2FrZV91cF9zeW5jKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndx X2hlYWQsIHVuc2lnbmVkIGludCBtb2RlKTsKIyAyNDggIi4vaW5jbHVkZS9saW51eC93YWl0Lmgi CmV4dGVybiB2b2lkIGluaXRfd2FpdF9lbnRyeShzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3Ff ZW50cnksIGludCBmbGFncyk7CiMgNzMyICIuL2luY2x1ZGUvbGludXgvd2FpdC5oIgpleHRlcm4g aW50IGRvX3dhaXRfaW50cih3YWl0X3F1ZXVlX2hlYWRfdCAqLCB3YWl0X3F1ZXVlX2VudHJ5X3Qg Kik7CmV4dGVybiBpbnQgZG9fd2FpdF9pbnRyX2lycSh3YWl0X3F1ZXVlX2hlYWRfdCAqLCB3YWl0 X3F1ZXVlX2VudHJ5X3QgKik7CiMgMTEyNiAiLi9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKdm9pZCBw cmVwYXJlX3RvX3dhaXQoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdh aXRfcXVldWVfZW50cnkgKndxX2VudHJ5LCBpbnQgc3RhdGUpOwp2b2lkIHByZXBhcmVfdG9fd2Fp dF9leGNsdXNpdmUoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRf cXVldWVfZW50cnkgKndxX2VudHJ5LCBpbnQgc3RhdGUpOwpsb25nIHByZXBhcmVfdG9fd2FpdF9l dmVudChzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qgd2FpdF9xdWV1ZV9l bnRyeSAqd3FfZW50cnksIGludCBzdGF0ZSk7CnZvaWQgZmluaXNoX3dhaXQoc3RydWN0IHdhaXRf cXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5KTsK bG9uZyB3YWl0X3dva2VuKHN0cnVjdCB3YWl0X3F1ZXVlX2VudHJ5ICp3cV9lbnRyeSwgdW5zaWdu ZWQgbW9kZSwgbG9uZyB0aW1lb3V0KTsKaW50IHdva2VuX3dha2VfZnVuY3Rpb24oc3RydWN0IHdh aXRfcXVldWVfZW50cnkgKndxX2VudHJ5LCB1bnNpZ25lZCBtb2RlLCBpbnQgc3luYywgdm9pZCAq a2V5KTsKaW50IGF1dG9yZW1vdmVfd2FrZV9mdW5jdGlvbihzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRy eSAqd3FfZW50cnksIHVuc2lnbmVkIG1vZGUsIGludCBzeW5jLCB2b2lkICprZXkpOwojIDExICIu L2luY2x1ZGUvbGludXgvbW16b25lLmgiIDIKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvbnVtYS5o IiAxCiMgMTUgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgoKIyAxICIuL2luY2x1ZGUvbGlu dXgvc2VxbG9jay5oIiAxCiMgNDggIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiCnR5cGVkZWYg c3RydWN0IHNlcWNvdW50IHsKIHVuc2lnbmVkIHNlcXVlbmNlOwoKCgp9IHNlcWNvdW50X3Q7Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIF9fc2VxY291bnRfaW5pdChzZXFjb3VudF90ICpzLCBjb25zdCBjaGFyICpuYW1lLAogICAg ICAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXkpCnsKCgoKIGRvIHsgKHZvaWQpKG5hbWUpOyAo dm9pZCkoa2V5KTsgfSB3aGlsZSAoMCk7CiBzLT5zZXF1ZW5jZSA9IDA7Cn0KIyAxMDggIi4vaW5j bHVkZS9saW51eC9zZXFsb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIF9fcmVhZF9zZXFjb3VudF9iZWdpbihjb25z dCBzZXFjb3VudF90ICpzKQp7CiB1bnNpZ25lZCByZXQ7CgpyZXBlYXQ6CiByZXQgPSAoeyB1bmlv biB7IHR5cGVvZihzLT5zZXF1ZW5jZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEp IF9fcmVhZF9vbmNlX3NpemUoJihzLT5zZXF1ZW5jZSksIF9fdS5fX2MsIHNpemVvZihzLT5zZXF1 ZW5jZSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKHMtPnNlcXVlbmNlKSwgX191 Ll9fYywgc2l6ZW9mKHMtPnNlcXVlbmNlKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsg fSk7CiBpZiAoX19idWlsdGluX2V4cGVjdCghIShyZXQgJiAxKSwgMCkpIHsKICBjcHVfcmVsYXgo KTsKICBnb3RvIHJlcGVhdDsKIH0KIHJldHVybiByZXQ7Cn0KIyAxMzAgIi4vaW5jbHVkZS9saW51 eC9zZXFsb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHVuc2lnbmVkIHJhd19yZWFkX3NlcWNvdW50KGNvbnN0IHNlcWNvdW50X3Qg KnMpCnsKIHVuc2lnbmVkIHJldCA9ICh7IHVuaW9uIHsgdHlwZW9mKHMtPnNlcXVlbmNlKSBfX3Zh bDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKHMtPnNlcXVl bmNlKSwgX191Ll9fYywgc2l6ZW9mKHMtPnNlcXVlbmNlKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6 ZV9ub2NoZWNrKCYocy0+c2VxdWVuY2UpLCBfX3UuX19jLCBzaXplb2Yocy0+c2VxdWVuY2UpKTsg ZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIi OiA6IDoibWVtb3J5Iik7CiByZXR1cm4gcmV0Owp9CiMgMTQ2ICIuL2luY2x1ZGUvbGludXgvc2Vx bG9jay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB1bnNpZ25lZCByYXdfcmVhZF9zZXFjb3VudF9iZWdpbihjb25zdCBzZXFjb3VudF90 ICpzKQp7CiB1bnNpZ25lZCByZXQgPSBfX3JlYWRfc2VxY291bnRfYmVnaW4ocyk7CiBfX2FzbV9f IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogcmV0dXJuIHJldDsKfQojIDE2MiAiLi9p bmNsdWRlL2xpbnV4L3NlcWxvY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgcmVhZF9zZXFjb3VudF9iZWdpbihjb25z dCBzZXFjb3VudF90ICpzKQp7CiA7CiByZXR1cm4gcmF3X3JlYWRfc2VxY291bnRfYmVnaW4ocyk7 Cn0KIyAxODIgIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIHJhd19zZXFjb3Vu dF9iZWdpbihjb25zdCBzZXFjb3VudF90ICpzKQp7CiB1bnNpZ25lZCByZXQgPSAoeyB1bmlvbiB7 IHR5cGVvZihzLT5zZXF1ZW5jZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9f cmVhZF9vbmNlX3NpemUoJihzLT5zZXF1ZW5jZSksIF9fdS5fX2MsIHNpemVvZihzLT5zZXF1ZW5j ZSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKHMtPnNlcXVlbmNlKSwgX191Ll9f Yywgc2l6ZW9mKHMtPnNlcXVlbmNlKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7 CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogcmV0dXJuIHJldCAmIH4x Owp9CiMgMjAzICIuL2luY2x1ZGUvbGludXgvc2VxbG9jay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19yZWFkX3NlcWNvdW50 X3JldHJ5KGNvbnN0IHNlcWNvdW50X3QgKnMsIHVuc2lnbmVkIHN0YXJ0KQp7CiByZXR1cm4gX19i dWlsdGluX2V4cGVjdCghIShzLT5zZXF1ZW5jZSAhPSBzdGFydCksIDApOwp9CiMgMjE4ICIuL2lu Y2x1ZGUvbGludXgvc2VxbG9jay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmVhZF9zZXFjb3VudF9yZXRyeShjb25zdCBzZXFj b3VudF90ICpzLCB1bnNpZ25lZCBzdGFydCkKewogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDog OiJtZW1vcnkiKTsKIHJldHVybiBfX3JlYWRfc2VxY291bnRfcmV0cnkocywgc3RhcnQpOwp9CgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgcmF3X3dyaXRlX3NlcWNvdW50X2JlZ2luKHNlcWNvdW50X3QgKnMpCnsKIHMtPnNlcXVl bmNlKys7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJh d193cml0ZV9zZXFjb3VudF9lbmQoc2VxY291bnRfdCAqcykKewogX19hc21fXyBfX3ZvbGF0aWxl X18oIiI6IDogOiJtZW1vcnkiKTsKIHMtPnNlcXVlbmNlKys7Cn0KIyAyNzIgIi4vaW5jbHVkZS9s aW51eC9zZXFsb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcmF3X3dyaXRlX3NlcWNvdW50X2JhcnJpZXIoc2VxY291bnRf dCAqcykKewogcy0+c2VxdWVuY2UrKzsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVt b3J5Iik7CiBzLT5zZXF1ZW5jZSsrOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmF3X3JlYWRfc2VxY291bnRfbGF0Y2goc2Vx Y291bnRfdCAqcykKewoKIGludCBzZXEgPSAoeyB1bmlvbiB7IHR5cGVvZihzLT5zZXF1ZW5jZSkg X192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihzLT5z ZXF1ZW5jZSksIF9fdS5fX2MsIHNpemVvZihzLT5zZXF1ZW5jZSkpOyBlbHNlIF9fcmVhZF9vbmNl X3NpemVfbm9jaGVjaygmKHMtPnNlcXVlbmNlKSwgX191Ll9fYywgc2l6ZW9mKHMtPnNlcXVlbmNl KSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7CiByZXR1cm4gc2VxOwp9CiMgMzYz ICIuL2luY2x1ZGUvbGludXgvc2VxbG9jay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJhd193cml0ZV9zZXFjb3VudF9sYXRj aChzZXFjb3VudF90ICpzKQp7CiAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1l bW9yeSIpOwogICAgICAgcy0+c2VxdWVuY2UrKzsKICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f KCIiOiA6IDoibWVtb3J5Iik7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX3NlcWNvdW50X2JlZ2luX25lc3Rl ZChzZXFjb3VudF90ICpzLCBpbnQgc3ViY2xhc3MpCnsKIHJhd193cml0ZV9zZXFjb3VudF9iZWdp bihzKTsKIGRvIHsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgd3JpdGVfc2VxY291bnRfYmVnaW4oc2Vx Y291bnRfdCAqcykKewogd3JpdGVfc2VxY291bnRfYmVnaW5fbmVzdGVkKHMsIDApOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IHdyaXRlX3NlcWNvdW50X2VuZChzZXFjb3VudF90ICpzKQp7CiBkbyB7IH0gd2hpbGUgKDApOwog cmF3X3dyaXRlX3NlcWNvdW50X2VuZChzKTsKfQojIDM5OCAiLi9pbmNsdWRlL2xpbnV4L3NlcWxv Y2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCB3cml0ZV9zZXFjb3VudF9pbnZhbGlkYXRlKHNlcWNvdW50X3QgKnMpCnsKIF9f YXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiBzLT5zZXF1ZW5jZSs9MjsKfQoK dHlwZWRlZiBzdHJ1Y3Qgewogc3RydWN0IHNlcWNvdW50IHNlcWNvdW50Owogc3BpbmxvY2tfdCBs b2NrOwp9IHNlcWxvY2tfdDsKIyA0MzEgIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIHJlYWRfc2VxYmVnaW4oY29uc3Qgc2VxbG9ja190ICpzbCkKewogcmV0dXJuIHJlYWRfc2Vx Y291bnRfYmVnaW4oJnNsLT5zZXFjb3VudCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIHJlYWRfc2VxcmV0cnkoY29u c3Qgc2VxbG9ja190ICpzbCwgdW5zaWduZWQgc3RhcnQpCnsKIHJldHVybiByZWFkX3NlcWNvdW50 X3JldHJ5KCZzbC0+c2VxY291bnQsIHN0YXJ0KTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX3NlcWxvY2so c2VxbG9ja190ICpzbCkKewogc3Bpbl9sb2NrKCZzbC0+bG9jayk7CiB3cml0ZV9zZXFjb3VudF9i ZWdpbigmc2wtPnNlcWNvdW50KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cml0ZV9zZXF1bmxvY2soc2VxbG9ja190ICpz bCkKewogd3JpdGVfc2VxY291bnRfZW5kKCZzbC0+c2VxY291bnQpOwogc3Bpbl91bmxvY2soJnNs LT5sb2NrKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCB3cml0ZV9zZXFsb2NrX2JoKHNlcWxvY2tfdCAqc2wpCnsKIHNwaW5f bG9ja19iaCgmc2wtPmxvY2spOwogd3JpdGVfc2VxY291bnRfYmVnaW4oJnNsLT5zZXFjb3VudCk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgd3JpdGVfc2VxdW5sb2NrX2JoKHNlcWxvY2tfdCAqc2wpCnsKIHdyaXRlX3NlcWNv dW50X2VuZCgmc2wtPnNlcWNvdW50KTsKIHNwaW5fdW5sb2NrX2JoKCZzbC0+bG9jayk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgd3JpdGVfc2VxbG9ja19pcnEoc2VxbG9ja190ICpzbCkKewogc3Bpbl9sb2NrX2lycSgmc2wt PmxvY2spOwogd3JpdGVfc2VxY291bnRfYmVnaW4oJnNsLT5zZXFjb3VudCk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgd3Jp dGVfc2VxdW5sb2NrX2lycShzZXFsb2NrX3QgKnNsKQp7CiB3cml0ZV9zZXFjb3VudF9lbmQoJnNs LT5zZXFjb3VudCk7CiBzcGluX3VubG9ja19pcnEoJnNsLT5sb2NrKTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9u ZyBfX3dyaXRlX3NlcWxvY2tfaXJxc2F2ZShzZXFsb2NrX3QgKnNsKQp7CiB1bnNpZ25lZCBsb25n IGZsYWdzOwoKIGRvIHsgZG8geyAoeyB1bnNpZ25lZCBsb25nIF9fZHVtbXk7IHR5cGVvZihmbGFn cykgX19kdW1teTI7ICh2b2lkKSgmX19kdW1teSA9PSAmX19kdW1teTIpOyAxOyB9KTsgZmxhZ3Mg PSBfcmF3X3NwaW5fbG9ja19pcnFzYXZlKHNwaW5sb2NrX2NoZWNrKCZzbC0+bG9jaykpOyB9IHdo aWxlICgwKTsgfSB3aGlsZSAoMCk7CiB3cml0ZV9zZXFjb3VudF9iZWdpbigmc2wtPnNlcWNvdW50 KTsKIHJldHVybiBmbGFnczsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAp3cml0ZV9zZXF1bmxvY2tfaXJxcmVzdG9yZShz ZXFsb2NrX3QgKnNsLCB1bnNpZ25lZCBsb25nIGZsYWdzKQp7CiB3cml0ZV9zZXFjb3VudF9lbmQo JnNsLT5zZXFjb3VudCk7CiBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzbC0+bG9jaywgZmxhZ3Mp Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgcmVhZF9zZXFsb2NrX2V4Y2woc2VxbG9ja190ICpzbCkKewogc3Bpbl9s b2NrKCZzbC0+bG9jayk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmVhZF9zZXF1bmxvY2tfZXhjbChzZXFsb2NrX3QgKnNs KQp7CiBzcGluX3VubG9jaygmc2wtPmxvY2spOwp9CiMgNTI2ICIuL2luY2x1ZGUvbGludXgvc2Vx bG9jay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHJlYWRfc2VxYmVnaW5fb3JfbG9jayhzZXFsb2NrX3QgKmxvY2ssIGludCAq c2VxKQp7CiBpZiAoISgqc2VxICYgMSkpCiAgKnNlcSA9IHJlYWRfc2VxYmVnaW4obG9jayk7CiBl bHNlCiAgcmVhZF9zZXFsb2NrX2V4Y2wobG9jayk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBuZWVkX3NlcXJldHJ5KHNlcWxv Y2tfdCAqbG9jaywgaW50IHNlcSkKewogcmV0dXJuICEoc2VxICYgMSkgJiYgcmVhZF9zZXFyZXRy eShsb2NrLCBzZXEpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRvbmVfc2VxcmV0cnkoc2VxbG9ja190ICpsb2NrLCBpbnQg c2VxKQp7CiBpZiAoc2VxICYgMSkKICByZWFkX3NlcXVubG9ja19leGNsKGxvY2spOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IHJlYWRfc2VxbG9ja19leGNsX2JoKHNlcWxvY2tfdCAqc2wpCnsKIHNwaW5fbG9ja19iaCgmc2wt PmxvY2spOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHJlYWRfc2VxdW5sb2NrX2V4Y2xfYmgoc2VxbG9ja190ICpzbCkKewog c3Bpbl91bmxvY2tfYmgoJnNsLT5sb2NrKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByZWFkX3NlcWxvY2tfZXhjbF9pcnEo c2VxbG9ja190ICpzbCkKewogc3Bpbl9sb2NrX2lycSgmc2wtPmxvY2spOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlYWRf c2VxdW5sb2NrX2V4Y2xfaXJxKHNlcWxvY2tfdCAqc2wpCnsKIHNwaW5fdW5sb2NrX2lycSgmc2wt PmxvY2spOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF9fcmVhZF9zZXFsb2NrX2V4Y2xfaXJxc2F2ZShzZXFs b2NrX3QgKnNsKQp7CiB1bnNpZ25lZCBsb25nIGZsYWdzOwoKIGRvIHsgZG8geyAoeyB1bnNpZ25l ZCBsb25nIF9fZHVtbXk7IHR5cGVvZihmbGFncykgX19kdW1teTI7ICh2b2lkKSgmX19kdW1teSA9 PSAmX19kdW1teTIpOyAxOyB9KTsgZmxhZ3MgPSBfcmF3X3NwaW5fbG9ja19pcnFzYXZlKHNwaW5s b2NrX2NoZWNrKCZzbC0+bG9jaykpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiByZXR1cm4g ZmxhZ3M7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQKcmVhZF9zZXF1bmxvY2tfZXhjbF9pcnFyZXN0b3JlKHNlcWxvY2tf dCAqc2wsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCnsKIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNs LT5sb2NrLCBmbGFncyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcKcmVhZF9zZXFiZWdpbl9vcl9sb2NrX2ly cXNhdmUoc2VxbG9ja190ICpsb2NrLCBpbnQgKnNlcSkKewogdW5zaWduZWQgbG9uZyBmbGFncyA9 IDA7CgogaWYgKCEoKnNlcSAmIDEpKQogICpzZXEgPSByZWFkX3NlcWJlZ2luKGxvY2spOwogZWxz ZQogIGRvIHsgZmxhZ3MgPSBfX3JlYWRfc2VxbG9ja19leGNsX2lycXNhdmUobG9jayk7IH0gd2hp bGUgKDApOwoKIHJldHVybiBmbGFnczsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApkb25lX3NlcXJldHJ5X2lycXJlc3RvcmUo c2VxbG9ja190ICpsb2NrLCBpbnQgc2VxLCB1bnNpZ25lZCBsb25nIGZsYWdzKQp7CiBpZiAoc2Vx ICYgMSkKICByZWFkX3NlcXVubG9ja19leGNsX2lycXJlc3RvcmUobG9jaywgZmxhZ3MpOwp9CiMg MTcgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9ub2Rl bWFzay5oIiAxCiMgOTggIi4vaW5jbHVkZS9saW51eC9ub2RlbWFzay5oIgp0eXBlZGVmIHN0cnVj dCB7IHVuc2lnbmVkIGxvbmcgYml0c1soKCgoMSA8PCAwKSkgKyAoKHNpemVvZihsb25nKSAqIDgp KSAtIDEpIC8gKChzaXplb2YobG9uZykgKiA4KSkpXTsgfSBub2RlbWFza190OwpleHRlcm4gbm9k ZW1hc2tfdCBfdW51c2VkX25vZGVtYXNrX2FyZ187CiMgMTA5ICIuL2luY2x1ZGUvbGludXgvbm9k ZW1hc2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdW5zaWduZWQgaW50IF9fbm9kZW1hc2tfcHJfbnVtbm9kZXMoY29uc3Qgbm9kZW1h c2tfdCAqbSkKewogcmV0dXJuIG0gPyAoMSA8PCAwKSA6IDA7Cn0Kc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY29uc3QgdW5zaWduZWQgbG9u ZyAqX19ub2RlbWFza19wcl9iaXRzKGNvbnN0IG5vZGVtYXNrX3QgKm0pCnsKIHJldHVybiBtID8g bS0+Yml0cyA6ICgodm9pZCAqKTApOwp9CiMgMTI4ICIuL2luY2x1ZGUvbGludXgvbm9kZW1hc2su aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fbm9kZV9zZXQoaW50 IG5vZGUsIHZvbGF0aWxlIG5vZGVtYXNrX3QgKmRzdHApCnsKIHNldF9iaXQobm9kZSwgZHN0cC0+ Yml0cyk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIF9fbm9kZV9jbGVhcihpbnQgbm9kZSwgdm9sYXRpbGUgbm9kZW1hc2tf dCAqZHN0cCkKewogY2xlYXJfYml0KG5vZGUsIGRzdHAtPmJpdHMpOwp9CgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX25vZGVz X3NldGFsbChub2RlbWFza190ICpkc3RwLCB1bnNpZ25lZCBpbnQgbmJpdHMpCnsKIGJpdG1hcF9m aWxsKGRzdHAtPmJpdHMsIG5iaXRzKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19ub2Rlc19jbGVhcihub2RlbWFza190 ICpkc3RwLCB1bnNpZ25lZCBpbnQgbmJpdHMpCnsKIGJpdG1hcF96ZXJvKGRzdHAtPmJpdHMsIG5i aXRzKTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgX19ub2RlX3Rlc3RfYW5kX3NldChpbnQgbm9kZSwgbm9kZW1hc2tf dCAqYWRkcikKewogcmV0dXJuIHRlc3RfYW5kX3NldF9iaXQobm9kZSwgYWRkci0+Yml0cyk7Cn0K CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBfX25vZGVzX2FuZChub2RlbWFza190ICpkc3RwLCBjb25zdCBub2RlbWFza190ICpz cmMxcCwKICAgICBjb25zdCBub2RlbWFza190ICpzcmMycCwgdW5zaWduZWQgaW50IG5iaXRzKQp7 CiBiaXRtYXBfYW5kKGRzdHAtPmJpdHMsIHNyYzFwLT5iaXRzLCBzcmMycC0+Yml0cywgbmJpdHMp Owp9CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgX19ub2Rlc19vcihub2RlbWFza190ICpkc3RwLCBjb25zdCBub2RlbWFza190 ICpzcmMxcCwKICAgICBjb25zdCBub2RlbWFza190ICpzcmMycCwgdW5zaWduZWQgaW50IG5iaXRz KQp7CiBiaXRtYXBfb3IoZHN0cC0+Yml0cywgc3JjMXAtPmJpdHMsIHNyYzJwLT5iaXRzLCBuYml0 cyk7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBfX25vZGVzX3hvcihub2RlbWFza190ICpkc3RwLCBjb25zdCBub2RlbWFz a190ICpzcmMxcCwKICAgICBjb25zdCBub2RlbWFza190ICpzcmMycCwgdW5zaWduZWQgaW50IG5i aXRzKQp7CiBiaXRtYXBfeG9yKGRzdHAtPmJpdHMsIHNyYzFwLT5iaXRzLCBzcmMycC0+Yml0cywg bmJpdHMpOwp9CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgX19ub2Rlc19hbmRub3Qobm9kZW1hc2tfdCAqZHN0cCwgY29uc3Qg bm9kZW1hc2tfdCAqc3JjMXAsCiAgICAgY29uc3Qgbm9kZW1hc2tfdCAqc3JjMnAsIHVuc2lnbmVk IGludCBuYml0cykKewogYml0bWFwX2FuZG5vdChkc3RwLT5iaXRzLCBzcmMxcC0+Yml0cywgc3Jj MnAtPmJpdHMsIG5iaXRzKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbm9kZXNfY29tcGxlbWVudChub2RlbWFza190 ICpkc3RwLAogICAgIGNvbnN0IG5vZGVtYXNrX3QgKnNyY3AsIHVuc2lnbmVkIGludCBuYml0cykK ewogYml0bWFwX2NvbXBsZW1lbnQoZHN0cC0+Yml0cywgc3JjcC0+Yml0cywgbmJpdHMpOwp9CgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBfX25vZGVzX2VxdWFsKGNvbnN0IG5vZGVtYXNrX3QgKnNyYzFwLAogICAgIGNvbnN0IG5v ZGVtYXNrX3QgKnNyYzJwLCB1bnNpZ25lZCBpbnQgbmJpdHMpCnsKIHJldHVybiBiaXRtYXBfZXF1 YWwoc3JjMXAtPmJpdHMsIHNyYzJwLT5iaXRzLCBuYml0cyk7Cn0KCgoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbm9kZXNfaW50 ZXJzZWN0cyhjb25zdCBub2RlbWFza190ICpzcmMxcCwKICAgICBjb25zdCBub2RlbWFza190ICpz cmMycCwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiByZXR1cm4gYml0bWFwX2ludGVyc2VjdHMoc3Jj MXAtPmJpdHMsIHNyYzJwLT5iaXRzLCBuYml0cyk7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbm9kZXNfc3Vic2V0KGNv bnN0IG5vZGVtYXNrX3QgKnNyYzFwLAogICAgIGNvbnN0IG5vZGVtYXNrX3QgKnNyYzJwLCB1bnNp Z25lZCBpbnQgbmJpdHMpCnsKIHJldHVybiBiaXRtYXBfc3Vic2V0KHNyYzFwLT5iaXRzLCBzcmMy cC0+Yml0cywgbmJpdHMpOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbm9kZXNfZW1wdHkoY29uc3Qgbm9kZW1hc2tfdCAq c3JjcCwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiByZXR1cm4gYml0bWFwX2VtcHR5KHNyY3AtPmJp dHMsIG5iaXRzKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBfX25vZGVzX2Z1bGwoY29uc3Qgbm9kZW1hc2tfdCAqc3JjcCwg dW5zaWduZWQgaW50IG5iaXRzKQp7CiByZXR1cm4gYml0bWFwX2Z1bGwoc3JjcC0+Yml0cywgbmJp dHMpOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IF9fbm9kZXNfd2VpZ2h0KGNvbnN0IG5vZGVtYXNrX3QgKnNyY3AsIHVuc2ln bmVkIGludCBuYml0cykKewogcmV0dXJuIGJpdG1hcF93ZWlnaHQoc3JjcC0+Yml0cywgbmJpdHMp Owp9CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgX19ub2Rlc19zaGlmdF9yaWdodChub2RlbWFza190ICpkc3RwLAogICAgIGNv bnN0IG5vZGVtYXNrX3QgKnNyY3AsIGludCBuLCBpbnQgbmJpdHMpCnsKIGJpdG1hcF9zaGlmdF9y aWdodChkc3RwLT5iaXRzLCBzcmNwLT5iaXRzLCBuLCBuYml0cyk7Cn0KCgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX25vZGVz X3NoaWZ0X2xlZnQobm9kZW1hc2tfdCAqZHN0cCwKICAgICBjb25zdCBub2RlbWFza190ICpzcmNw LCBpbnQgbiwgaW50IG5iaXRzKQp7CiBiaXRtYXBfc2hpZnRfbGVmdChkc3RwLT5iaXRzLCBzcmNw LT5iaXRzLCBuLCBuYml0cyk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19maXJzdF9ub2RlKGNvbnN0IG5vZGVtYXNr X3QgKnNyY3ApCnsKIHJldHVybiBfX2J1aWx0aW5fY2hvb3NlX2V4cHIoKCghIShzaXplb2YoKHR5 cGVvZigoaW50KSgoMSA8PCAwKSkpICopMSA9PSAodHlwZW9mKChpbnQpKGZpbmRfZmlyc3RfYml0 KHNyY3AtPmJpdHMsICgxIDw8IDApKSkpICopMSkpKSAmJiAoKHNpemVvZihpbnQpID09IHNpemVv ZigqKDggPyAoKHZvaWQgKikoKGxvbmcpKChpbnQpKCgxIDw8IDApKSkgKiAwbCkpIDogKGludCAq KTgpKSkgJiYgKHNpemVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcpKChp bnQpKGZpbmRfZmlyc3RfYml0KHNyY3AtPmJpdHMsICgxIDw8IDApKSkpICogMGwpKSA6IChpbnQg Kik4KSkpKSksICgoKGludCkoKDEgPDwgMCkpKSA8ICgoaW50KShmaW5kX2ZpcnN0X2JpdChzcmNw LT5iaXRzLCAoMSA8PCAwKSkpKSA/ICgoaW50KSgoMSA8PCAwKSkpIDogKChpbnQpKGZpbmRfZmly c3RfYml0KHNyY3AtPmJpdHMsICgxIDw8IDApKSkpKSwgKHsgdHlwZW9mKChpbnQpKCgxIDw8IDAp KSkgX19VTklRVUVfSURfX194MiA9ICgoaW50KSgoMSA8PCAwKSkpOyB0eXBlb2YoKGludCkoZmlu ZF9maXJzdF9iaXQoc3JjcC0+Yml0cywgKDEgPDwgMCkpKSkgX19VTklRVUVfSURfX195MyA9ICgo aW50KShmaW5kX2ZpcnN0X2JpdChzcmNwLT5iaXRzLCAoMSA8PCAwKSkpKTsgKChfX1VOSVFVRV9J RF9fX3gyKSA8IChfX1VOSVFVRV9JRF9fX3kzKSA/IChfX1VOSVFVRV9JRF9fX3gyKSA6IChfX1VO SVFVRV9JRF9fX3kzKSk7IH0pKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX25leHRfbm9kZShpbnQgbiwgY29uc3Qgbm9k ZW1hc2tfdCAqc3JjcCkKewogcmV0dXJuIF9fYnVpbHRpbl9jaG9vc2VfZXhwcigoKCEhKHNpemVv ZigodHlwZW9mKChpbnQpKCgxIDw8IDApKSkgKikxID09ICh0eXBlb2YoKGludCkoZmluZF9uZXh0 X2JpdChzcmNwLT5iaXRzLCAoMSA8PCAwKSwgbisxKSkpICopMSkpKSAmJiAoKHNpemVvZihpbnQp ID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcpKChpbnQpKCgxIDw8IDApKSkgKiAwbCkp IDogKGludCAqKTgpKSkgJiYgKHNpemVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKiko KGxvbmcpKChpbnQpKGZpbmRfbmV4dF9iaXQoc3JjcC0+Yml0cywgKDEgPDwgMCksIG4rMSkpKSAq IDBsKSkgOiAoaW50ICopOCkpKSkpLCAoKChpbnQpKCgxIDw8IDApKSkgPCAoKGludCkoZmluZF9u ZXh0X2JpdChzcmNwLT5iaXRzLCAoMSA8PCAwKSwgbisxKSkpID8gKChpbnQpKCgxIDw8IDApKSkg OiAoKGludCkoZmluZF9uZXh0X2JpdChzcmNwLT5iaXRzLCAoMSA8PCAwKSwgbisxKSkpKSwgKHsg dHlwZW9mKChpbnQpKCgxIDw8IDApKSkgX19VTklRVUVfSURfX194NCA9ICgoaW50KSgoMSA8PCAw KSkpOyB0eXBlb2YoKGludCkoZmluZF9uZXh0X2JpdChzcmNwLT5iaXRzLCAoMSA8PCAwKSwgbisx KSkpIF9fVU5JUVVFX0lEX19feTUgPSAoKGludCkoZmluZF9uZXh0X2JpdChzcmNwLT5iaXRzLCAo MSA8PCAwKSwgbisxKSkpOyAoKF9fVU5JUVVFX0lEX19feDQpIDwgKF9fVU5JUVVFX0lEX19feTUp ID8gKF9fVU5JUVVFX0lEX19feDQpIDogKF9fVU5JUVVFX0lEX19feTUpKTsgfSkpOwp9CgoKCgoK CmludCBfX25leHRfbm9kZV9pbihpbnQgbm9kZSwgY29uc3Qgbm9kZW1hc2tfdCAqc3JjcCk7Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGluaXRfbm9kZW1hc2tfb2Zfbm9kZShub2RlbWFza190ICptYXNrLCBpbnQgbm9kZSkKewog X19ub2Rlc19jbGVhcigmKCptYXNrKSwgKDEgPDwgMCkpOwogX19ub2RlX3NldCgobm9kZSksICYo Km1hc2spKTsKfQojIDI5OSAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2ZpcnN0 X3Vuc2V0X25vZGUoY29uc3Qgbm9kZW1hc2tfdCAqbWFza3ApCnsKIHJldHVybiBfX2J1aWx0aW5f Y2hvb3NlX2V4cHIoKCghIShzaXplb2YoKHR5cGVvZigoaW50KSgoMSA8PCAwKSkpICopMSA9PSAo dHlwZW9mKChpbnQpKGZpbmRfZmlyc3RfemVyb19iaXQobWFza3AtPmJpdHMsICgxIDw8IDApKSkp ICopMSkpKSAmJiAoKHNpemVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcp KChpbnQpKCgxIDw8IDApKSkgKiAwbCkpIDogKGludCAqKTgpKSkgJiYgKHNpemVvZihpbnQpID09 IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcpKChpbnQpKGZpbmRfZmlyc3RfemVyb19iaXQo bWFza3AtPmJpdHMsICgxIDw8IDApKSkpICogMGwpKSA6IChpbnQgKik4KSkpKSksICgoKGludCko KDEgPDwgMCkpKSA8ICgoaW50KShmaW5kX2ZpcnN0X3plcm9fYml0KG1hc2twLT5iaXRzLCAoMSA8 PCAwKSkpKSA/ICgoaW50KSgoMSA8PCAwKSkpIDogKChpbnQpKGZpbmRfZmlyc3RfemVyb19iaXQo bWFza3AtPmJpdHMsICgxIDw8IDApKSkpKSwgKHsgdHlwZW9mKChpbnQpKCgxIDw8IDApKSkgX19V TklRVUVfSURfX194NiA9ICgoaW50KSgoMSA8PCAwKSkpOyB0eXBlb2YoKGludCkoZmluZF9maXJz dF96ZXJvX2JpdChtYXNrcC0+Yml0cywgKDEgPDwgMCkpKSkgX19VTklRVUVfSURfX195NyA9ICgo aW50KShmaW5kX2ZpcnN0X3plcm9fYml0KG1hc2twLT5iaXRzLCAoMSA8PCAwKSkpKTsgKChfX1VO SVFVRV9JRF9fX3g2KSA8IChfX1VOSVFVRV9JRF9fX3k3KSA/IChfX1VOSVFVRV9JRF9fX3g2KSA6 IChfX1VOSVFVRV9JRF9fX3k3KSk7IH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsKfQojIDMzMyAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBfX25vZGVtYXNrX3BhcnNlX3VzZXIoY29uc3QgY2hhciAqYnVmLCBpbnQgbGVuLAogICAg IG5vZGVtYXNrX3QgKmRzdHAsIGludCBuYml0cykKewogcmV0dXJuIGJpdG1hcF9wYXJzZV91c2Vy KGJ1ZiwgbGVuLCBkc3RwLT5iaXRzLCBuYml0cyk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19ub2RlbGlzdF9wYXJzZShj b25zdCBjaGFyICpidWYsIG5vZGVtYXNrX3QgKmRzdHAsIGludCBuYml0cykKewogcmV0dXJuIGJp dG1hcF9wYXJzZWxpc3QoYnVmLCBkc3RwLT5iaXRzLCBuYml0cyk7Cn0KCgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbm9kZV9y ZW1hcChpbnQgb2xkYml0LAogIGNvbnN0IG5vZGVtYXNrX3QgKm9sZHAsIGNvbnN0IG5vZGVtYXNr X3QgKm5ld3AsIGludCBuYml0cykKewogcmV0dXJuIGJpdG1hcF9iaXRyZW1hcChvbGRiaXQsIG9s ZHAtPmJpdHMsIG5ld3AtPmJpdHMsIG5iaXRzKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbm9kZXNfcmVtYXAobm9k ZW1hc2tfdCAqZHN0cCwgY29uc3Qgbm9kZW1hc2tfdCAqc3JjcCwKICBjb25zdCBub2RlbWFza190 ICpvbGRwLCBjb25zdCBub2RlbWFza190ICpuZXdwLCBpbnQgbmJpdHMpCnsKIGJpdG1hcF9yZW1h cChkc3RwLT5iaXRzLCBzcmNwLT5iaXRzLCBvbGRwLT5iaXRzLCBuZXdwLT5iaXRzLCBuYml0cyk7 Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBfX25vZGVzX29udG8obm9kZW1hc2tfdCAqZHN0cCwgY29uc3Qgbm9kZW1hc2tf dCAqb3JpZ3AsCiAgY29uc3Qgbm9kZW1hc2tfdCAqcmVsbWFwcCwgaW50IG5iaXRzKQp7CiBiaXRt YXBfb250byhkc3RwLT5iaXRzLCBvcmlncC0+Yml0cywgcmVsbWFwcC0+Yml0cywgbmJpdHMpOwp9 CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgX19ub2Rlc19mb2xkKG5vZGVtYXNrX3QgKmRzdHAsIGNvbnN0IG5vZGVtYXNrX3Qg Km9yaWdwLAogIGludCBzeiwgaW50IG5iaXRzKQp7CiBiaXRtYXBfZm9sZChkc3RwLT5iaXRzLCBv cmlncC0+Yml0cywgc3osIG5iaXRzKTsKfQojIDM5MSAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNr LmgiCmVudW0gbm9kZV9zdGF0ZXMgewogTl9QT1NTSUJMRSwKIE5fT05MSU5FLAogTl9OT1JNQUxf TUVNT1JZLAoKCgogTl9ISUdIX01FTU9SWSA9IE5fTk9STUFMX01FTU9SWSwKCiBOX01FTU9SWSwK IE5fQ1BVLAogTlJfTk9ERV9TVEFURVMKfTsKCgoKCgoKZXh0ZXJuIG5vZGVtYXNrX3Qgbm9kZV9z dGF0ZXNbTlJfTk9ERV9TVEFURVNdOwojIDQ2NCAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBub2RlX3N0YXRlKGludCBub2RlLCBlbnVtIG5vZGVfc3RhdGVzIHN0YXRlKQp7CiByZXR1 cm4gbm9kZSA9PSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5vZGVfc2V0X3N0YXRlKGludCBub2RlLCBlbnVtIG5vZGVf c3RhdGVzIHN0YXRlKQp7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbm9kZV9jbGVhcl9zdGF0ZShpbnQgbm9kZSwgZW51bSBu b2RlX3N0YXRlcyBzdGF0ZSkKewp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgbnVtX25vZGVfc3RhdGUoZW51bSBub2RlX3N0YXRl cyBzdGF0ZSkKewogcmV0dXJuIDE7Cn0KIyA0OTkgIi4vaW5jbHVkZS9saW51eC9ub2RlbWFzay5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgbm9kZV9yYW5kb20oY29uc3Qgbm9kZW1hc2tfdCAqbWFzaykKewogcmV0dXJuIDA7Cn0K IyA1MzEgIi4vaW5jbHVkZS9saW51eC9ub2RlbWFzay5oIgpzdHJ1Y3Qgbm9kZW1hc2tfc2NyYXRj aCB7CiBub2RlbWFza190IG1hc2sxOwogbm9kZW1hc2tfdCBtYXNrMjsKfTsKIyAxOCAiLi9pbmNs dWRlL2xpbnV4L21tem9uZS5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFn cy5oIiAxCiMgMTggIi4vaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaCIKZW51bSBwYWdl YmxvY2tfYml0cyB7CiBQQl9taWdyYXRlLAogUEJfbWlncmF0ZV9lbmQgPSBQQl9taWdyYXRlICsg MyAtIDEsCgogUEJfbWlncmF0ZV9za2lwLAoKCgoKCiBOUl9QQUdFQkxPQ0tfQklUUwp9OwojIDU1 ICIuL2luY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmgiCnN0cnVjdCBwYWdlOwoKdW5zaWdu ZWQgbG9uZyBnZXRfcGZuYmxvY2tfZmxhZ3NfbWFzayhzdHJ1Y3QgcGFnZSAqcGFnZSwKICAgIHVu c2lnbmVkIGxvbmcgcGZuLAogICAgdW5zaWduZWQgbG9uZyBlbmRfYml0aWR4LAogICAgdW5zaWdu ZWQgbG9uZyBtYXNrKTsKCnZvaWQgc2V0X3BmbmJsb2NrX2ZsYWdzX21hc2soc3RydWN0IHBhZ2Ug KnBhZ2UsCiAgICB1bnNpZ25lZCBsb25nIGZsYWdzLAogICAgdW5zaWduZWQgbG9uZyBwZm4sCiAg ICB1bnNpZ25lZCBsb25nIGVuZF9iaXRpZHgsCiAgICB1bnNpZ25lZCBsb25nIG1hc2spOwojIDE5 ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvcGFnZS1m bGFncy1sYXlvdXQuaCIgMQoKCgoKCiMgMSAiLi9pbmNsdWRlL2dlbmVyYXRlZC9ib3VuZHMuaCIg MQojIDcgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLWxheW91dC5oIiAyCiMgMjAgIi4vaW5j bHVkZS9saW51eC9tbXpvbmUuaCIgMgoKIyAxICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIg MQoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXNfdGFzay5oIiAxCiMgMTkgIi4vaW5j bHVkZS9saW51eC9tbV90eXBlc190YXNrLmgiCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90 bGJiYXRjaC5oIiAxCgoKCgoKCnN0cnVjdCBhcmNoX3RsYmZsdXNoX3VubWFwX2JhdGNoIHsKCgoK CiBzdHJ1Y3QgY3B1bWFzayBjcHVtYXNrOwp9OwojIDIwICIuL2luY2x1ZGUvbGludXgvbW1fdHlw ZXNfdGFzay5oIiAyCiMgMzQgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlc190YXNrLmgiCnN0cnVj dCB2bWFjYWNoZSB7CiB1NjQgc2VxbnVtOwogc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWFzWygx VSA8PCAyKV07Cn07CgoKCgoKZW51bSB7CiBNTV9GSUxFUEFHRVMsCiBNTV9BTk9OUEFHRVMsCiBN TV9TV0FQRU5UUywKIE1NX1NITUVNUEFHRVMsCiBOUl9NTV9DT1VOVEVSUwp9OwoKCgoKc3RydWN0 IHRhc2tfcnNzX3N0YXQgewogaW50IGV2ZW50czsKIGludCBjb3VudFtOUl9NTV9DT1VOVEVSU107 Cn07CgoKc3RydWN0IG1tX3Jzc19zdGF0IHsKIGF0b21pY19sb25nX3QgY291bnRbTlJfTU1fQ09V TlRFUlNdOwp9OwoKc3RydWN0IHBhZ2VfZnJhZyB7CiBzdHJ1Y3QgcGFnZSAqcGFnZTsKCiBfX3Uz MiBvZmZzZXQ7CiBfX3UzMiBzaXplOwoKCgoKfTsKCgpzdHJ1Y3QgdGxiZmx1c2hfdW5tYXBfYmF0 Y2ggewojIDg1ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXNfdGFzay5oIgogc3RydWN0IGFyY2hf dGxiZmx1c2hfdW5tYXBfYmF0Y2ggYXJjaDsKCgogYm9vbCBmbHVzaF9yZXF1aXJlZDsKCgoKCgoK IGJvb2wgd3JpdGFibGU7Cgp9OwojIDYgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAyCgoj IDEgIi4vaW5jbHVkZS9saW51eC9hdXh2ZWMuaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvdWFwaS9s aW51eC9hdXh2ZWMuaCIgMQoKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYXV4 dmVjLmgiIDEKIyA2ICIuL2luY2x1ZGUvdWFwaS9saW51eC9hdXh2ZWMuaCIgMgojIDYgIi4vaW5j bHVkZS9saW51eC9hdXh2ZWMuaCIgMgojIDggIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAy CgoKIyAxICIuL2luY2x1ZGUvbGludXgvcmJ0cmVlLmgiIDEKIyAyMiAiLi9pbmNsdWRlL2xpbnV4 L3JidHJlZS5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIiAxCiMgMzggIi4vaW5j bHVkZS9saW51eC9yY3VwZGF0ZS5oIgp2b2lkIGNhbGxfcmN1KHN0cnVjdCBjYWxsYmFja19oZWFk ICpoZWFkLCByY3VfY2FsbGJhY2tfdCBmdW5jKTsKdm9pZCByY3VfYmFycmllcl90YXNrcyh2b2lk KTsKdm9pZCBzeW5jaHJvbml6ZV9yY3Uodm9pZCk7CiMgNTcgIi4vaW5jbHVkZS9saW51eC9yY3Vw ZGF0ZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIF9fcmN1X3JlYWRfbG9jayh2b2lkKQp7CiBfX2FzbV9fIF9fdm9sYXRpbGVf XygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmN1X3JlYWRfdW5sb2NrKHZvaWQpCnsKIF9f YXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCByY3VfcHJlZW1wdF9k ZXB0aCh2b2lkKQp7CiByZXR1cm4gMDsKfQoKCgoKdm9pZCByY3VfaW5pdCh2b2lkKTsKZXh0ZXJu IGludCByY3Vfc2NoZWR1bGVyX2FjdGl2ZSBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRh dGEuLnJlYWRfbW9zdGx5IikpKTsKdm9pZCByY3Vfc2NoZWRfY2xvY2tfaXJxKGludCB1c2VyKTsK dm9pZCByY3VfcmVwb3J0X2RlYWQodW5zaWduZWQgaW50IGNwdSk7CnZvaWQgcmN1dHJlZV9taWdy YXRlX2NhbGxiYWNrcyhpbnQgY3B1KTsKCgp2b2lkIHJjdV9zeXNycV9zdGFydCh2b2lkKTsKdm9p ZCByY3Vfc3lzcnFfZW5kKHZvaWQpOwojIDkzICIuL2luY2x1ZGUvbGludXgvcmN1cGRhdGUuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCByY3VfdXNlcl9lbnRlcih2b2lkKSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByY3VfdXNlcl9leGl0KHZvaWQpIHsg fQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgcmN1X2luaXRfbm9oeih2b2lkKSB7IH0KIyAxNDggIi4vaW5jbHVkZS9saW51 eC9yY3VwZGF0ZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGV4aXRfdGFza3NfcmN1X3N0YXJ0KHZvaWQpIHsgfQpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGV4 aXRfdGFza3NfcmN1X2ZpbmlzaCh2b2lkKSB7IH0KIyAxNzEgIi4vaW5jbHVkZS9saW51eC9yY3Vw ZGF0ZS5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9yY3V0cmVlLmgiIDEKIyAyMCAiLi9pbmNsdWRl L2xpbnV4L3JjdXRyZWUuaCIKdm9pZCByY3Vfc29mdGlycV9xcyh2b2lkKTsKdm9pZCByY3Vfbm90 ZV9jb250ZXh0X3N3aXRjaChib29sIHByZWVtcHQpOwppbnQgcmN1X25lZWRzX2NwdSh1NjQgYmFz ZW0sIHU2NCAqbmV4dGV2dCk7CnZvaWQgcmN1X2NwdV9zdGFsbF9yZXNldCh2b2lkKTsKCgoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCByY3VfdmlydF9ub3RlX2NvbnRleHRfc3dpdGNoKGludCBjcHUpCnsKIHJjdV9ub3RlX2Nv bnRleHRfc3dpdGNoKGZhbHNlKTsKfQoKdm9pZCBzeW5jaHJvbml6ZV9yY3VfZXhwZWRpdGVkKHZv aWQpOwp2b2lkIGtmcmVlX2NhbGxfcmN1KHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkLCByY3Vf Y2FsbGJhY2tfdCBmdW5jKTsKCnZvaWQgcmN1X2JhcnJpZXIodm9pZCk7CmJvb2wgcmN1X2Vxc19z cGVjaWFsX3NldChpbnQgY3B1KTsKdm9pZCByY3VfbW9tZW50YXJ5X2R5bnRpY2tfaWRsZSh2b2lk KTsKdm9pZCBrZnJlZV9yY3Vfc2NoZWR1bGVyX3J1bm5pbmcodm9pZCk7CnVuc2lnbmVkIGxvbmcg Z2V0X3N0YXRlX3N5bmNocm9uaXplX3JjdSh2b2lkKTsKdm9pZCBjb25kX3N5bmNocm9uaXplX3Jj dSh1bnNpZ25lZCBsb25nIG9sZHN0YXRlKTsKCnZvaWQgcmN1X2lkbGVfZW50ZXIodm9pZCk7CnZv aWQgcmN1X2lkbGVfZXhpdCh2b2lkKTsKdm9pZCByY3VfaXJxX2VudGVyKHZvaWQpOwp2b2lkIHJj dV9pcnFfZXhpdCh2b2lkKTsKdm9pZCByY3VfaXJxX2VudGVyX2lycXNvbih2b2lkKTsKdm9pZCBy Y3VfaXJxX2V4aXRfaXJxc29uKHZvaWQpOwoKdm9pZCBleGl0X3JjdSh2b2lkKTsKCnZvaWQgcmN1 X3NjaGVkdWxlcl9zdGFydGluZyh2b2lkKTsKZXh0ZXJuIGludCByY3Vfc2NoZWR1bGVyX2FjdGl2 ZSBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRhdGEuLnJlYWRfbW9zdGx5IikpKTsKdm9p ZCByY3VfZW5kX2lua2VybmVsX2Jvb3Qodm9pZCk7CmJvb2wgcmN1X2lzX3dhdGNoaW5nKHZvaWQp OwoKdm9pZCByY3VfYWxsX3FzKHZvaWQpOwoKCgppbnQgcmN1dHJlZV9wcmVwYXJlX2NwdSh1bnNp Z25lZCBpbnQgY3B1KTsKaW50IHJjdXRyZWVfb25saW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsK aW50IHJjdXRyZWVfb2ZmbGluZV9jcHUodW5zaWduZWQgaW50IGNwdSk7CmludCByY3V0cmVlX2Rl YWRfY3B1KHVuc2lnbmVkIGludCBjcHUpOwppbnQgcmN1dHJlZV9keWluZ19jcHUodW5zaWduZWQg aW50IGNwdSk7CnZvaWQgcmN1X2NwdV9zdGFydGluZyh1bnNpZ25lZCBpbnQgY3B1KTsKIyAxNzIg Ii4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIiAyCiMgMTkyICIuL2luY2x1ZGUvbGludXgvcmN1 cGRhdGUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBpbml0X3JjdV9oZWFkKHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkKSB7 IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBkZXN0cm95X3JjdV9oZWFkKHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkKSB7IH0K c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBpbml0X3JjdV9oZWFkX29uX3N0YWNrKHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkKSB7 IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBkZXN0cm95X3JjdV9oZWFkX29uX3N0YWNrKHN0cnVjdCBjYWxsYmFja19oZWFkICpo ZWFkKSB7IH0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sIHJjdV9sb2NrZGVwX2N1cnJlbnRfY3B1X29ubGluZSh2b2lkKSB7 IHJldHVybiB0cnVlOyB9CiMgMjMxICIuL2luY2x1ZGUvbGludXgvcmN1cGRhdGUuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJj dV9yZWFkX2xvY2tfaGVsZCh2b2lkKQp7CiByZXR1cm4gMTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJjdV9yZWFkX2xvY2tf YmhfaGVsZCh2b2lkKQp7CiByZXR1cm4gMTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJjdV9yZWFkX2xvY2tfc2NoZWRfaGVs ZCh2b2lkKQp7CiByZXR1cm4gITA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCByY3VfcmVhZF9sb2NrX2FueV9oZWxkKHZvaWQp CnsKIHJldHVybiAhMDsKfQojIDU5NyAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCByY3VfcmVhZF9sb2NrKHZvaWQpCnsK IF9fcmN1X3JlYWRfbG9jaygpOwogKHZvaWQpMDsKIGRvIHsgfSB3aGlsZSAoMCk7CiBkbyB7IH0g d2hpbGUgKDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsKfQojIDY0OSAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmN1X3JlYWRfdW5s b2NrKHZvaWQpCnsKIGRvIHsgfSB3aGlsZSAoMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7CiAodm9pZCkwOwogX19yY3VfcmVhZF91bmxvY2soKTsK IGRvIHsgfSB3aGlsZSAoMCk7Cn0KIyA2NzAgIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHJjdV9yZWFkX2xvY2tfYmgodm9pZCkKewogbG9jYWxfYmhfZGlzYWJsZSgpOwogKHZvaWQp MDsKIGRvIHsgfSB3aGlsZSAoMCk7CiBkbyB7IH0gd2hpbGUgKDApCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoKCgoKCgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJjdV9yZWFk X3VubG9ja19iaCh2b2lkKQp7CiBkbyB7IH0gd2hpbGUgKDApCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogZG8geyB9IHdoaWxlICgwKTsKICh2 b2lkKTA7CiBsb2NhbF9iaF9lbmFibGUoKTsKfQojIDcwNSAiLi9pbmNsdWRlL2xpbnV4L3JjdXBk YXRlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgcmN1X3JlYWRfbG9ja19zY2hlZCh2b2lkKQp7CiBfX2FzbV9fIF9fdm9sYXRp bGVfXygiIjogOiA6Im1lbW9yeSIpOwogKHZvaWQpMDsKIGRvIHsgfSB3aGlsZSAoMCk7CiBkbyB7 IH0gd2hpbGUgKDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHJjdV9yZWFkX2xvY2tfc2NoZWRfbm90cmFjZSh2b2lkKQp7CiBfX2FzbV9fIF9fdm9sYXRp bGVfXygiIjogOiA6Im1lbW9yeSIpOwogKHZvaWQpMDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJjdV9yZWFkX3Vu bG9ja19zY2hlZCh2b2lkKQp7CiBkbyB7IH0gd2hpbGUgKDApCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogZG8geyB9IHdoaWxlICgwKTsK ICh2b2lkKTA7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmN1X3JlYWRfdW5sb2Nr X3NjaGVkX25vdHJhY2Uodm9pZCkKewogKHZvaWQpMDsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIi OiA6IDoibWVtb3J5Iik7Cn0KIyA4NzAgIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IHJjdV9oZWFkX2luaXQoc3RydWN0IGNhbGxiYWNrX2hlYWQgKnJocCkKewogcmhwLT5mdW5jID0g KHJjdV9jYWxsYmFja190KX4wTDsKfQojIDg4OCAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wKcmN1X2hlYWRfYWZ0ZXJfY2FsbF9yY3Uoc3RydWN0IGNhbGxiYWNrX2hlYWQgKnJocCwg cmN1X2NhbGxiYWNrX3QgZikKewogcmN1X2NhbGxiYWNrX3QgZnVuYyA9ICh7IHVuaW9uIHsgdHlw ZW9mKHJocC0+ZnVuYykgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9v bmNlX3NpemUoJihyaHAtPmZ1bmMpLCBfX3UuX19jLCBzaXplb2YocmhwLT5mdW5jKSk7IGVsc2Ug X19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYocmhwLT5mdW5jKSwgX191Ll9fYywgc2l6ZW9mKHJo cC0+ZnVuYykpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOwoKIGlmIChmdW5jID09 IGYpCiAgcmV0dXJuIHRydWU7CiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGZ1bmMgIT0gKHJj dV9jYWxsYmFja190KX4wTCk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24p LCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYs IDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIu bG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxv bmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIg Ilx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6Zmxh Z3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9s aW51eC9yY3VwZGF0ZS5oIiksICJpIiAoODk1KSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAo KDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDAp OyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNo YWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIg KDgpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24p LCAwKTsgfSk7CiByZXR1cm4gZmFsc2U7Cn0KCgpleHRlcm4gaW50IHJjdV9leHBlZGl0ZWQ7CmV4 dGVybiBpbnQgcmN1X25vcm1hbDsKIyAyMyAiLi9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAyCgpz dHJ1Y3QgcmJfbm9kZSB7CiB1bnNpZ25lZCBsb25nIF9fcmJfcGFyZW50X2NvbG9yOwogc3RydWN0 IHJiX25vZGUgKnJiX3JpZ2h0Owogc3RydWN0IHJiX25vZGUgKnJiX2xlZnQ7Cn0gX19hdHRyaWJ1 dGVfXygoYWxpZ25lZChzaXplb2YobG9uZykpKSk7CgoKc3RydWN0IHJiX3Jvb3Qgewogc3RydWN0 IHJiX25vZGUgKnJiX25vZGU7Cn07CiMgNDkgIi4vaW5jbHVkZS9saW51eC9yYnRyZWUuaCIKZXh0 ZXJuIHZvaWQgcmJfaW5zZXJ0X2NvbG9yKHN0cnVjdCByYl9ub2RlICosIHN0cnVjdCByYl9yb290 ICopOwpleHRlcm4gdm9pZCByYl9lcmFzZShzdHJ1Y3QgcmJfbm9kZSAqLCBzdHJ1Y3QgcmJfcm9v dCAqKTsKCgoKZXh0ZXJuIHN0cnVjdCByYl9ub2RlICpyYl9uZXh0KGNvbnN0IHN0cnVjdCByYl9u b2RlICopOwpleHRlcm4gc3RydWN0IHJiX25vZGUgKnJiX3ByZXYoY29uc3Qgc3RydWN0IHJiX25v ZGUgKik7CmV4dGVybiBzdHJ1Y3QgcmJfbm9kZSAqcmJfZmlyc3QoY29uc3Qgc3RydWN0IHJiX3Jv b3QgKik7CmV4dGVybiBzdHJ1Y3QgcmJfbm9kZSAqcmJfbGFzdChjb25zdCBzdHJ1Y3QgcmJfcm9v dCAqKTsKCgpleHRlcm4gc3RydWN0IHJiX25vZGUgKnJiX2ZpcnN0X3Bvc3RvcmRlcihjb25zdCBz dHJ1Y3QgcmJfcm9vdCAqKTsKZXh0ZXJuIHN0cnVjdCByYl9ub2RlICpyYl9uZXh0X3Bvc3RvcmRl cihjb25zdCBzdHJ1Y3QgcmJfbm9kZSAqKTsKCgpleHRlcm4gdm9pZCByYl9yZXBsYWNlX25vZGUo c3RydWN0IHJiX25vZGUgKnZpY3RpbSwgc3RydWN0IHJiX25vZGUgKm5ldywKICAgICAgIHN0cnVj dCByYl9yb290ICpyb290KTsKZXh0ZXJuIHZvaWQgcmJfcmVwbGFjZV9ub2RlX3JjdShzdHJ1Y3Qg cmJfbm9kZSAqdmljdGltLCBzdHJ1Y3QgcmJfbm9kZSAqbmV3LAogICAgc3RydWN0IHJiX3Jvb3Qg KnJvb3QpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCByYl9saW5rX25vZGUoc3RydWN0IHJiX25vZGUgKm5vZGUsIHN0cnVjdCBy Yl9ub2RlICpwYXJlbnQsCiAgICBzdHJ1Y3QgcmJfbm9kZSAqKnJiX2xpbmspCnsKIG5vZGUtPl9f cmJfcGFyZW50X2NvbG9yID0gKHVuc2lnbmVkIGxvbmcpcGFyZW50Owogbm9kZS0+cmJfbGVmdCA9 IG5vZGUtPnJiX3JpZ2h0ID0gKCh2b2lkICopMCk7CgogKnJiX2xpbmsgPSBub2RlOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IHJiX2xpbmtfbm9kZV9yY3Uoc3RydWN0IHJiX25vZGUgKm5vZGUsIHN0cnVjdCByYl9ub2RlICpw YXJlbnQsCiAgICAgICAgc3RydWN0IHJiX25vZGUgKipyYl9saW5rKQp7CiBub2RlLT5fX3JiX3Bh cmVudF9jb2xvciA9ICh1bnNpZ25lZCBsb25nKXBhcmVudDsKIG5vZGUtPnJiX2xlZnQgPSBub2Rl LT5yYl9yaWdodCA9ICgodm9pZCAqKTApOwoKIGRvIHsgdWludHB0cl90IF9yX2FfcF9fdiA9ICh1 aW50cHRyX3QpKG5vZGUpOyA7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChub2RlKSAmJiAoX3Jf YV9wX192KSA9PSAodWludHB0cl90KSgodm9pZCAqKTApKSAoeyB1bmlvbiB7IHR5cGVvZigoKnJi X2xpbmspKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigo KnJiX2xpbmspKSkgKCh0eXBlb2YoKnJiX2xpbmspKShfcl9hX3BfX3YpKSB9OyBfX3dyaXRlX29u Y2Vfc2l6ZSgmKCgqcmJfbGluaykpLCBfX3UuX19jLCBzaXplb2YoKCpyYl9saW5rKSkpOyBfX3Uu X192YWw7IH0pOyBlbHNlIGRvIHsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2Vy dF84NCh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6 ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikpKTsgaWYgKCEoKHNpemVvZigqJipyYl9s aW5rKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComKnJiX2xpbmspID09IHNpemVvZihzaG9y dCkgfHwgc2l6ZW9mKComKnJiX2xpbmspID09IHNpemVvZihpbnQpIHx8IHNpemVvZigqJipyYl9s aW5rKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfODQoKTsgfSB3aGls ZSAoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7ICh7IHVuaW9uIHsg dHlwZW9mKComKnJiX2xpbmspIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9 ICggdHlwZW9mKComKnJiX2xpbmspKSAoKHR5cGVvZigqKCh0eXBlb2YoKnJiX2xpbmspKV9yX2Ff cF9fdikpICopKCh0eXBlb2YoKnJiX2xpbmspKV9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9z aXplKCYoKiYqcmJfbGluayksIF9fdS5fX2MsIHNpemVvZigqJipyYl9saW5rKSk7IF9fdS5fX3Zh bDsgfSk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKfQojIDEyNSAiLi9pbmNsdWRlL2xpbnV4 L3JidHJlZS5oIgpzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgewogc3RydWN0IHJiX3Jvb3QgcmJfcm9v dDsKIHN0cnVjdCByYl9ub2RlICpyYl9sZWZ0bW9zdDsKfTsKCgoKCgoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByYl9pbnNlcnRf Y29sb3JfY2FjaGVkKHN0cnVjdCByYl9ub2RlICpub2RlLAogICAgICAgc3RydWN0IHJiX3Jvb3Rf Y2FjaGVkICpyb290LAogICAgICAgYm9vbCBsZWZ0bW9zdCkKewogaWYgKGxlZnRtb3N0KQogIHJv b3QtPnJiX2xlZnRtb3N0ID0gbm9kZTsKIHJiX2luc2VydF9jb2xvcihub2RlLCAmcm9vdC0+cmJf cm9vdCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgcmJfZXJhc2VfY2FjaGVkKHN0cnVjdCByYl9ub2RlICpub2RlLAogICAg ICAgc3RydWN0IHJiX3Jvb3RfY2FjaGVkICpyb290KQp7CiBpZiAocm9vdC0+cmJfbGVmdG1vc3Qg PT0gbm9kZSkKICByb290LT5yYl9sZWZ0bW9zdCA9IHJiX25leHQobm9kZSk7CiByYl9lcmFzZShu b2RlLCAmcm9vdC0+cmJfcm9vdCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmJfcmVwbGFjZV9ub2RlX2NhY2hlZChzdHJ1 Y3QgcmJfbm9kZSAqdmljdGltLAogICAgICAgc3RydWN0IHJiX25vZGUgKm5ldywKICAgICAgIHN0 cnVjdCByYl9yb290X2NhY2hlZCAqcm9vdCkKewogaWYgKHJvb3QtPnJiX2xlZnRtb3N0ID09IHZp Y3RpbSkKICByb290LT5yYl9sZWZ0bW9zdCA9IG5ldzsKIHJiX3JlcGxhY2Vfbm9kZSh2aWN0aW0s IG5ldywgJnJvb3QtPnJiX3Jvb3QpOwp9CiMgMTEgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5o IiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDEKIyAyMCAiLi9pbmNsdWRlL2xpbnV4 L3J3c2VtLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L29zcV9sb2NrLmgiIDEKIyA5ICIuL2luY2x1 ZGUvbGludXgvb3NxX2xvY2suaCIKc3RydWN0IG9wdGltaXN0aWNfc3Bpbl9ub2RlIHsKIHN0cnVj dCBvcHRpbWlzdGljX3NwaW5fbm9kZSAqbmV4dCwgKnByZXY7CiBpbnQgbG9ja2VkOwogaW50IGNw dTsKfTsKCnN0cnVjdCBvcHRpbWlzdGljX3NwaW5fcXVldWUgewoKCgoKIGF0b21pY190IHRhaWw7 Cn07CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgb3NxX2xvY2tfaW5pdChzdHJ1Y3Qgb3B0aW1pc3RpY19zcGluX3F1ZXVl ICpsb2NrKQp7CiBhdG9taWNfc2V0KCZsb2NrLT50YWlsLCAoMCkpOwp9CgpleHRlcm4gYm9vbCBv c3FfbG9jayhzdHJ1Y3Qgb3B0aW1pc3RpY19zcGluX3F1ZXVlICpsb2NrKTsKZXh0ZXJuIHZvaWQg b3NxX3VubG9jayhzdHJ1Y3Qgb3B0aW1pc3RpY19zcGluX3F1ZXVlICpsb2NrKTsKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgb3Nx X2lzX2xvY2tlZChzdHJ1Y3Qgb3B0aW1pc3RpY19zcGluX3F1ZXVlICpsb2NrKQp7CiByZXR1cm4g YXRvbWljX3JlYWQoJmxvY2stPnRhaWwpICE9ICgwKTsKfQojIDIxICIuL2luY2x1ZGUvbGludXgv cndzZW0uaCIgMgojIDM1ICIuL2luY2x1ZGUvbGludXgvcndzZW0uaCIKc3RydWN0IHJ3X3NlbWFw aG9yZSB7CiBhdG9taWNfbG9uZ190IGNvdW50OwoKCgoKCiBhdG9taWNfbG9uZ190IG93bmVyOwoK IHN0cnVjdCBvcHRpbWlzdGljX3NwaW5fcXVldWUgb3NxOwoKIHJhd19zcGlubG9ja190IHdhaXRf bG9jazsKIHN0cnVjdCBsaXN0X2hlYWQgd2FpdF9saXN0OwoKCgoKCgp9OwojIDYzICIuL2luY2x1 ZGUvbGludXgvcndzZW0uaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJ3c2VtX2lzX2xvY2tlZChzdHJ1Y3Qgcndfc2VtYXBob3Jl ICpzZW0pCnsKIHJldHVybiBhdG9taWNfbG9uZ19yZWFkKCZzZW0tPmNvdW50KSAhPSAwOwp9CiMg MTAzICIuL2luY2x1ZGUvbGludXgvcndzZW0uaCIKZXh0ZXJuIHZvaWQgX19pbml0X3J3c2VtKHN0 cnVjdCByd19zZW1hcGhvcmUgKnNlbSwgY29uc3QgY2hhciAqbmFtZSwKICAgIHN0cnVjdCBsb2Nr X2NsYXNzX2tleSAqa2V5KTsKIyAxMTkgIi4vaW5jbHVkZS9saW51eC9yd3NlbS5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcndz ZW1faXNfY29udGVuZGVkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogcmV0dXJuICFsaXN0 X2VtcHR5KCZzZW0tPndhaXRfbGlzdCk7Cn0KCgoKCmV4dGVybiB2b2lkIGRvd25fcmVhZChzdHJ1 Y3Qgcndfc2VtYXBob3JlICpzZW0pOwpleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91 bnVzZWRfcmVzdWx0X18pKSBkb3duX3JlYWRfa2lsbGFibGUoc3RydWN0IHJ3X3NlbWFwaG9yZSAq c2VtKTsKCgoKCmV4dGVybiBpbnQgZG93bl9yZWFkX3RyeWxvY2soc3RydWN0IHJ3X3NlbWFwaG9y ZSAqc2VtKTsKCgoKCmV4dGVybiB2b2lkIGRvd25fd3JpdGUoc3RydWN0IHJ3X3NlbWFwaG9yZSAq c2VtKTsKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkg ZG93bl93cml0ZV9raWxsYWJsZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pOwoKCgoKZXh0ZXJu IGludCBkb3duX3dyaXRlX3RyeWxvY2soc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKTsKCgoKCmV4 dGVybiB2b2lkIHVwX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKTsKCgoKCmV4dGVybiB2 b2lkIHVwX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSk7CgoKCgpleHRlcm4gdm9pZCBk b3duZ3JhZGVfd3JpdGUoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKTsKIyAxMiAiLi9pbmNsdWRl L2xpbnV4L21tX3R5cGVzLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIiAx CiMgMjYgIi4vaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiCnN0cnVjdCBjb21wbGV0aW9uIHsK IHVuc2lnbmVkIGludCBkb25lOwogd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKfTsKCgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBj b21wbGV0ZV9hY3F1aXJlKHN0cnVjdCBjb21wbGV0aW9uICp4KSB7fQpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNvbXBsZXRlX3Jl bGVhc2Uoc3RydWN0IGNvbXBsZXRpb24gKngpIHt9CiMgODUgIi4vaW5jbHVkZS9saW51eC9jb21w bGV0aW9uLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgX19pbml0X2NvbXBsZXRpb24oc3RydWN0IGNvbXBsZXRpb24gKngpCnsK IHgtPmRvbmUgPSAwOwogZG8geyBzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IF9fa2V5OyBf X2luaXRfd2FpdHF1ZXVlX2hlYWQoKCZ4LT53YWl0KSwgIiZ4LT53YWl0IiwgJl9fa2V5KTsgfSB3 aGlsZSAoMCk7Cn0KIyA5OCAiLi9pbmNsdWRlL2xpbnV4L2NvbXBsZXRpb24uaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByZWlu aXRfY29tcGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAqeCkKewogeC0+ZG9uZSA9IDA7Cn0KCmV4 dGVybiB2b2lkIHdhaXRfZm9yX2NvbXBsZXRpb24oc3RydWN0IGNvbXBsZXRpb24gKik7CmV4dGVy biB2b2lkIHdhaXRfZm9yX2NvbXBsZXRpb25faW8oc3RydWN0IGNvbXBsZXRpb24gKik7CmV4dGVy biBpbnQgd2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBjb21wbGV0aW9u ICp4KTsKZXh0ZXJuIGludCB3YWl0X2Zvcl9jb21wbGV0aW9uX2tpbGxhYmxlKHN0cnVjdCBjb21w bGV0aW9uICp4KTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgd2FpdF9mb3JfY29tcGxldGlvbl90aW1l b3V0KHN0cnVjdCBjb21wbGV0aW9uICp4LAogICAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQp OwpleHRlcm4gdW5zaWduZWQgbG9uZyB3YWl0X2Zvcl9jb21wbGV0aW9uX2lvX3RpbWVvdXQoc3Ry dWN0IGNvbXBsZXRpb24gKngsCiAgICAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwpleHRl cm4gbG9uZyB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGVfdGltZW91dCgKIHN0cnVj dCBjb21wbGV0aW9uICp4LCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwpleHRlcm4gbG9uZyB3YWl0 X2Zvcl9jb21wbGV0aW9uX2tpbGxhYmxlX3RpbWVvdXQoCiBzdHJ1Y3QgY29tcGxldGlvbiAqeCwg dW5zaWduZWQgbG9uZyB0aW1lb3V0KTsKZXh0ZXJuIGJvb2wgdHJ5X3dhaXRfZm9yX2NvbXBsZXRp b24oc3RydWN0IGNvbXBsZXRpb24gKngpOwpleHRlcm4gYm9vbCBjb21wbGV0aW9uX2RvbmUoc3Ry dWN0IGNvbXBsZXRpb24gKngpOwoKZXh0ZXJuIHZvaWQgY29tcGxldGUoc3RydWN0IGNvbXBsZXRp b24gKik7CmV4dGVybiB2b2lkIGNvbXBsZXRlX2FsbChzdHJ1Y3QgY29tcGxldGlvbiAqKTsKIyAx MyAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiIDIKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3Vw cm9iZXMuaCIgMQojIDE5ICIuL2luY2x1ZGUvbGludXgvdXByb2Jlcy5oIgpzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3Q7CnN0cnVjdCBtbV9zdHJ1Y3Q7CnN0cnVjdCBpbm9kZTsKc3RydWN0IG5vdGlmaWVy X2Jsb2NrOwpzdHJ1Y3QgcGFnZTsKCgoKCgoKZW51bSB1cHJvYmVfZmlsdGVyX2N0eCB7CiBVUFJP QkVfRklMVEVSX1JFR0lTVEVSLAogVVBST0JFX0ZJTFRFUl9VTlJFR0lTVEVSLAogVVBST0JFX0ZJ TFRFUl9NTUFQLAp9OwoKc3RydWN0IHVwcm9iZV9jb25zdW1lciB7CiBpbnQgKCpoYW5kbGVyKShz dHJ1Y3QgdXByb2JlX2NvbnN1bWVyICpzZWxmLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CiBpbnQg KCpyZXRfaGFuZGxlcikoc3RydWN0IHVwcm9iZV9jb25zdW1lciAqc2VsZiwKICAgIHVuc2lnbmVk IGxvbmcgZnVuYywKICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKIGJvb2wgKCpmaWx0ZXIpKHN0 cnVjdCB1cHJvYmVfY29uc3VtZXIgKnNlbGYsCiAgICBlbnVtIHVwcm9iZV9maWx0ZXJfY3R4IGN0 eCwKICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTsKCiBzdHJ1Y3QgdXByb2JlX2NvbnN1bWVyICpu ZXh0Owp9OwojIDE0MiAiLi9pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaCIKc3RydWN0IHVwcm9iZXNf c3RhdGUgewp9OwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCB1cHJvYmVzX2luaXQodm9pZCkKewp9CgoKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAp1cHJvYmVfcmVn aXN0ZXIoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgc3RydWN0IHVwcm9iZV9j b25zdW1lciAqdWMpCnsKIHJldHVybiAtMzg7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHVwcm9iZV9yZWdpc3Rlcl9yZWZjdHIo c3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IHJlZl9jdHJfb2Zmc2V0 LCBzdHJ1Y3QgdXByb2JlX2NvbnN1bWVyICp1YykKewogcmV0dXJuIC0zODsKfQpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKdXByb2Jl X2FwcGx5KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIHN0cnVjdCB1cHJvYmVf Y29uc3VtZXIgKnVjLCBib29sIGFkZCkKewogcmV0dXJuIC0zODsKfQpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCnVwcm9iZV91bnJl Z2lzdGVyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIHN0cnVjdCB1cHJvYmVf Y29uc3VtZXIgKnVjKQp7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHVwcm9iZV9tbWFwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq dm1hKQp7CiByZXR1cm4gMDsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCnVwcm9iZV9tdW5tYXAoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQp7Cn0Kc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCB1cHJvYmVfc3RhcnRfZHVwX21tYXAodm9pZCkKewp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdXByb2JlX2VuZF9kdXBfbW1h cCh2b2lkKQp7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZAp1cHJvYmVfZHVwX21tYXAoc3RydWN0IG1tX3N0cnVjdCAqb2xkbW0s IHN0cnVjdCBtbV9zdHJ1Y3QgKm5ld21tKQp7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB1cHJvYmVfbm90aWZ5X3Jlc3VtZShz dHJ1Y3QgcHRfcmVncyAqcmVncykKewp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdXByb2JlX2Rlbnlfc2lnbmFsKHZvaWQpCnsK IHJldHVybiBmYWxzZTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVwcm9iZV9mcmVlX3V0YXNrKHN0cnVjdCB0YXNrX3N0cnVj dCAqdCkKewp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgdXByb2JlX2NvcHlfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQs IHVuc2lnbmVkIGxvbmcgZmxhZ3MpCnsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVwcm9iZV9jbGVhcl9zdGF0ZShzdHJ1Y3Qg bW1fc3RydWN0ICptbSkKewp9CiMgMTUgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAyCgoj IDEgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIgMQojIDkgIi4vaW5jbHVkZS9saW51eC93 b3JrcXVldWUuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvdGltZXIuaCIgMQoKCgoKCiMgMSAiLi9p bmNsdWRlL2xpbnV4L2t0aW1lLmgiIDEKIyAyNCAiLi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgiCiMg MSAiLi9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMQojIDEwICIuL2luY2x1ZGUvbGludXgvdGltZS5o IgpleHRlcm4gc3RydWN0IHRpbWV6b25lIHN5c190ejsKCmludCBnZXRfdGltZXNwZWM2NChzdHJ1 Y3QgdGltZXNwZWM2NCAqdHMsCiAgY29uc3Qgc3RydWN0IF9fa2VybmVsX3RpbWVzcGVjICp1dHMp OwppbnQgcHV0X3RpbWVzcGVjNjQoY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzLAogIHN0cnVj dCBfX2tlcm5lbF90aW1lc3BlYyAqdXRzKTsKaW50IGdldF9pdGltZXJzcGVjNjQoc3RydWN0IGl0 aW1lcnNwZWM2NCAqaXQsCiAgIGNvbnN0IHN0cnVjdCBfX2tlcm5lbF9pdGltZXJzcGVjICp1aXQp OwppbnQgcHV0X2l0aW1lcnNwZWM2NChjb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYzY0ICppdCwKICAg c3RydWN0IF9fa2VybmVsX2l0aW1lcnNwZWMgKnVpdCk7CgpleHRlcm4gdGltZTY0X3QgbWt0aW1l NjQoY29uc3QgdW5zaWduZWQgaW50IHllYXIsIGNvbnN0IHVuc2lnbmVkIGludCBtb24sCiAgIGNv bnN0IHVuc2lnbmVkIGludCBkYXksIGNvbnN0IHVuc2lnbmVkIGludCBob3VyLAogICBjb25zdCB1 bnNpZ25lZCBpbnQgbWluLCBjb25zdCB1bnNpZ25lZCBpbnQgc2VjKTsKIyAzOSAiLi9pbmNsdWRl L2xpbnV4L3RpbWUuaCIKZXh0ZXJuIHZvaWQgY2xlYXJfaXRpbWVyKHZvaWQpOwoKCgoKZXh0ZXJu IGxvbmcgZG9fdXRpbWVzKGludCBkZmQsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgdGlt ZXNwZWM2NCAqdGltZXMsIGludCBmbGFncyk7CgoKCgoKc3RydWN0IHRtIHsKCgoKCiBpbnQgdG1f c2VjOwoKIGludCB0bV9taW47CgogaW50IHRtX2hvdXI7CgogaW50IHRtX21kYXk7CgogaW50IHRt X21vbjsKCiBsb25nIHRtX3llYXI7CgogaW50IHRtX3dkYXk7CgogaW50IHRtX3lkYXk7Cn07Cgp2 b2lkIHRpbWU2NF90b190bSh0aW1lNjRfdCB0b3RhbHNlY3MsIGludCBvZmZzZXQsIHN0cnVjdCB0 bSAqcmVzdWx0KTsKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3RpbWUzMi5oIiAxCiMgMTMgIi4vaW5j bHVkZS9saW51eC90aW1lMzIuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvdGltZXguaCIgMQojIDU2 ICIuL2luY2x1ZGUvbGludXgvdGltZXguaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC90aW1l eC5oIiAxCiMgNTYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3RpbWV4LmgiCiMgMSAiLi9pbmNsdWRl L2xpbnV4L3RpbWUuaCIgMQojIDU3ICIuL2luY2x1ZGUvdWFwaS9saW51eC90aW1leC5oIiAyCiMg OTcgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3RpbWV4LmgiCnN0cnVjdCBfX2tlcm5lbF90aW1leF90 aW1ldmFsIHsKIF9fa2VybmVsX3RpbWU2NF90IHR2X3NlYzsKIGxvbmcgbG9uZyB0dl91c2VjOwp9 OwoKc3RydWN0IF9fa2VybmVsX3RpbWV4IHsKIHVuc2lnbmVkIGludCBtb2RlczsKIGludCA6MzI7 CiBsb25nIGxvbmcgb2Zmc2V0OwogbG9uZyBsb25nIGZyZXE7CiBsb25nIGxvbmcgbWF4ZXJyb3I7 CiBsb25nIGxvbmcgZXN0ZXJyb3I7CiBpbnQgc3RhdHVzOwogaW50IDozMjsKIGxvbmcgbG9uZyBj b25zdGFudDsKIGxvbmcgbG9uZyBwcmVjaXNpb247CiBsb25nIGxvbmcgdG9sZXJhbmNlOwoKCiBz dHJ1Y3QgX19rZXJuZWxfdGltZXhfdGltZXZhbCB0aW1lOwogbG9uZyBsb25nIHRpY2s7CgogbG9u ZyBsb25nIHBwc2ZyZXE7CiBsb25nIGxvbmcgaml0dGVyOwogaW50IHNoaWZ0OwogaW50IDozMjsK IGxvbmcgbG9uZyBzdGFiaWw7CiBsb25nIGxvbmcgaml0Y250OwogbG9uZyBsb25nIGNhbGNudDsK IGxvbmcgbG9uZyBlcnJjbnQ7CiBsb25nIGxvbmcgc3RiY250OwoKIGludCB0YWk7CgogaW50IDoz MjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7 IGludCA6MzI7CiBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwp9OwojIDU3ICIuL2luY2x1ZGUv bGludXgvdGltZXguaCIgMgoKCgoKCgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3BhcmFtLmgi IDEKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS9wYXJhbS5o IiAxCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3BhcmFtLmgiIDEKCgoKCiMgMSAiLi9pbmNs dWRlL3VhcGkvYXNtLWdlbmVyaWMvcGFyYW0uaCIgMQojIDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9wYXJhbS5oIiAyCiMgMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS9w YXJhbS5oIiAyCiMgNiAiLi9pbmNsdWRlL3VhcGkvbGludXgvcGFyYW0uaCIgMgojIDY0ICIuL2lu Y2x1ZGUvbGludXgvdGltZXguaCIgMgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RpbWV4 LmgiIDEKCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdHNjLmgiIDEKIyAxNiAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS90c2MuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgY3lj bGVzX3Q7CgpleHRlcm4gdW5zaWduZWQgaW50IGNwdV9raHo7CmV4dGVybiB1bnNpZ25lZCBpbnQg dHNjX2toejsKCmV4dGVybiB2b2lkIGRpc2FibGVfVFNDKHZvaWQpOwoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY3ljbGVzX3QgZ2V0X2N5 Y2xlcyh2b2lkKQp7CgoKCgoKIHJldHVybiByZHRzYygpOwp9CgpleHRlcm4gc3RydWN0IHN5c3Rl bV9jb3VudGVydmFsX3QgY29udmVydF9hcnRfdG9fdHNjKHU2NCBhcnQpOwpleHRlcm4gc3RydWN0 IHN5c3RlbV9jb3VudGVydmFsX3QgY29udmVydF9hcnRfbnNfdG9fdHNjKHU2NCBhcnRfbnMpOwoK ZXh0ZXJuIHZvaWQgdHNjX2Vhcmx5X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHRzY19pbml0KHZv aWQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBjYWxpYnJhdGVfZGVsYXlfaXNfa25vd24odm9pZCk7 CmV4dGVybiB2b2lkIG1hcmtfdHNjX3Vuc3RhYmxlKGNoYXIgKnJlYXNvbik7CmV4dGVybiBpbnQg dW5zeW5jaHJvbml6ZWRfdHNjKHZvaWQpOwpleHRlcm4gaW50IGNoZWNrX3RzY191bnN0YWJsZSh2 b2lkKTsKZXh0ZXJuIHZvaWQgbWFya190c2NfYXN5bmNfcmVzZXRzKGNoYXIgKnJlYXNvbik7CmV4 dGVybiB1bnNpZ25lZCBsb25nIG5hdGl2ZV9jYWxpYnJhdGVfY3B1X2Vhcmx5KHZvaWQpOwpleHRl cm4gdW5zaWduZWQgbG9uZyBuYXRpdmVfY2FsaWJyYXRlX3RzYyh2b2lkKTsKZXh0ZXJuIHVuc2ln bmVkIGxvbmcgbG9uZyBuYXRpdmVfc2NoZWRfY2xvY2tfZnJvbV90c2ModTY0IHRzYyk7CgpleHRl cm4gaW50IHRzY19jbG9ja3NvdXJjZV9yZWxpYWJsZTsKCmV4dGVybiBib29sIHRzY19hc3luY19y ZXNldHM7CiMgNTkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdHNjLmgiCmV4dGVybiBib29sIHRz Y19zdG9yZV9hbmRfY2hlY2tfdHNjX2FkanVzdChib29sIGJvb3RjcHUpOwpleHRlcm4gdm9pZCB0 c2NfdmVyaWZ5X3RzY19hZGp1c3QoYm9vbCByZXN1bWUpOwpleHRlcm4gdm9pZCBjaGVja190c2Nf c3luY19zb3VyY2UoaW50IGNwdSk7CmV4dGVybiB2b2lkIGNoZWNrX3RzY19zeW5jX3RhcmdldCh2 b2lkKTsKCgoKCgoKCmV4dGVybiBpbnQgbm90c2Nfc2V0dXAoY2hhciAqKTsKZXh0ZXJuIHZvaWQg dHNjX3NhdmVfc2NoZWRfY2xvY2tfc3RhdGUodm9pZCk7CmV4dGVybiB2b2lkIHRzY19yZXN0b3Jl X3NjaGVkX2Nsb2NrX3N0YXRlKHZvaWQpOwoKdW5zaWduZWQgbG9uZyBjcHVfa2h6X2Zyb21fbXNy KHZvaWQpOwojIDcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdGltZXguaCIgMgojIDY2ICIuL2lu Y2x1ZGUvbGludXgvdGltZXguaCIgMgojIDEzOSAiLi9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCmV4 dGVybiB1bnNpZ25lZCBsb25nIHRpY2tfdXNlYzsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdGlja19u c2VjOwojIDE1NCAiLi9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCmV4dGVybiBpbnQgZG9fYWRqdGlt ZXgoc3RydWN0IF9fa2VybmVsX3RpbWV4ICopOwpleHRlcm4gaW50IGRvX2Nsb2NrX2FkanRpbWUo Y29uc3QgY2xvY2tpZF90IHdoaWNoX2Nsb2NrLCBzdHJ1Y3QgX19rZXJuZWxfdGltZXggKiBrdHgp OwoKZXh0ZXJuIHZvaWQgaGFyZHBwcyhjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqLCBjb25zdCBz dHJ1Y3QgdGltZXNwZWM2NCAqKTsKCmludCByZWFkX2N1cnJlbnRfdGltZXIodW5zaWduZWQgbG9u ZyAqdGltZXJfdmFsKTsKdm9pZCBudHBfbm90aWZ5X2Ntb3NfdGltZXIodm9pZCk7CiMgMTQgIi4v aW5jbHVkZS9saW51eC90aW1lMzIuaCIgMgoKdHlwZWRlZiBzMzIgb2xkX3RpbWUzMl90OwoKc3Ry dWN0IG9sZF90aW1lc3BlYzMyIHsKIG9sZF90aW1lMzJfdCB0dl9zZWM7CiBzMzIgdHZfbnNlYzsK fTsKCnN0cnVjdCBvbGRfdGltZXZhbDMyIHsKIG9sZF90aW1lMzJfdCB0dl9zZWM7CiBzMzIgdHZf dXNlYzsKfTsKCnN0cnVjdCBvbGRfaXRpbWVyc3BlYzMyIHsKIHN0cnVjdCBvbGRfdGltZXNwZWMz MiBpdF9pbnRlcnZhbDsKIHN0cnVjdCBvbGRfdGltZXNwZWMzMiBpdF92YWx1ZTsKfTsKCnN0cnVj dCBvbGRfdXRpbWJ1ZjMyIHsKIG9sZF90aW1lMzJfdCBhY3RpbWU7CiBvbGRfdGltZTMyX3QgbW9k dGltZTsKfTsKCnN0cnVjdCBvbGRfdGltZXgzMiB7CiB1MzIgbW9kZXM7CiBzMzIgb2Zmc2V0Owog czMyIGZyZXE7CiBzMzIgbWF4ZXJyb3I7CiBzMzIgZXN0ZXJyb3I7CiBzMzIgc3RhdHVzOwogczMy IGNvbnN0YW50OwogczMyIHByZWNpc2lvbjsKIHMzMiB0b2xlcmFuY2U7CiBzdHJ1Y3Qgb2xkX3Rp bWV2YWwzMiB0aW1lOwogczMyIHRpY2s7CiBzMzIgcHBzZnJlcTsKIHMzMiBqaXR0ZXI7CiBzMzIg c2hpZnQ7CiBzMzIgc3RhYmlsOwogczMyIGppdGNudDsKIHMzMiBjYWxjbnQ7CiBzMzIgZXJyY250 OwogczMyIHN0YmNudDsKIHMzMiB0YWk7CgogczMyOjMyOyBzMzI6MzI7IHMzMjozMjsgczMyOjMy OwogczMyOjMyOyBzMzI6MzI7IHMzMjozMjsgczMyOjMyOwogczMyOjMyOyBzMzI6MzI7IHMzMjoz MjsKfTsKCmV4dGVybiBpbnQgZ2V0X29sZF90aW1lc3BlYzMyKHN0cnVjdCB0aW1lc3BlYzY0ICos IGNvbnN0IHZvaWQgKik7CmV4dGVybiBpbnQgcHV0X29sZF90aW1lc3BlYzMyKGNvbnN0IHN0cnVj dCB0aW1lc3BlYzY0ICosIHZvaWQgKik7CmV4dGVybiBpbnQgZ2V0X29sZF9pdGltZXJzcGVjMzIo c3RydWN0IGl0aW1lcnNwZWM2NCAqaXRzLAogICBjb25zdCBzdHJ1Y3Qgb2xkX2l0aW1lcnNwZWMz MiAqdWl0cyk7CmV4dGVybiBpbnQgcHV0X29sZF9pdGltZXJzcGVjMzIoY29uc3Qgc3RydWN0IGl0 aW1lcnNwZWM2NCAqaXRzLAogICBzdHJ1Y3Qgb2xkX2l0aW1lcnNwZWMzMiAqdWl0cyk7CnN0cnVj dCBfX2tlcm5lbF90aW1leDsKaW50IGdldF9vbGRfdGltZXgzMihzdHJ1Y3QgX19rZXJuZWxfdGlt ZXggKiwgY29uc3Qgc3RydWN0IG9sZF90aW1leDMyICopOwppbnQgcHV0X29sZF90aW1leDMyKHN0 cnVjdCBvbGRfdGltZXgzMiAqLCBjb25zdCBzdHJ1Y3QgX19rZXJuZWxfdGltZXggKik7CgoKCgoK CgpleHRlcm4gc3RydWN0IF9fa2VybmVsX29sZF90aW1ldmFsIG5zX3RvX2tlcm5lbF9vbGRfdGlt ZXZhbChzNjQgbnNlYyk7CiMgNzUgIi4vaW5jbHVkZS9saW51eC90aW1lLmgiIDIKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaXRp bWVyc3BlYzY0X3ZhbGlkKGNvbnN0IHN0cnVjdCBpdGltZXJzcGVjNjQgKml0cykKewogaWYgKCF0 aW1lc3BlYzY0X3ZhbGlkKCYoaXRzLT5pdF9pbnRlcnZhbCkpIHx8CiAgIXRpbWVzcGVjNjRfdmFs aWQoJihpdHMtPml0X3ZhbHVlKSkpCiAgcmV0dXJuIGZhbHNlOwoKIHJldHVybiB0cnVlOwp9CiMg MTE0ICIuL2luY2x1ZGUvbGludXgvdGltZS5oIgpzdHJ1Y3QgdGltZW5zX29mZnNldCB7CiBzNjQg c2VjOwogdTY0IG5zZWM7Cn07CiMgMjUgIi4vaW5jbHVkZS9saW51eC9rdGltZS5oIiAyCiMgMSAi Li9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaCIgMQojIDExICIuL2luY2x1ZGUvbGludXgvamlmZmll cy5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vcGFyYW0uaCIg MQojIDEyICIuL2luY2x1ZGUvbGludXgvamlmZmllcy5oIiAyCiMgMSAiLi9pbmNsdWRlL2dlbmVy YXRlZC90aW1lY29uc3QuaCIgMQojIDEzICIuL2luY2x1ZGUvbGludXgvamlmZmllcy5oIiAyCiMg NjAgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVzLmgiCmV4dGVybiBpbnQgcmVnaXN0ZXJfcmVmaW5l ZF9qaWZmaWVzKGxvbmcgY2xvY2tfdGlja19yYXRlKTsKIyA4MCAiLi9pbmNsdWRlL2xpbnV4L2pp ZmZpZXMuaCIKZXh0ZXJuIHU2NCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikp KSwgX19zZWN0aW9uX18oIi5kYXRhLi5jYWNoZWxpbmVfYWxpZ25lZCIpKSkgamlmZmllc182NDsK ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdm9sYXRpbGUgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18o KDEgPDwgKDYpKSksIF9fc2VjdGlvbl9fKCIuZGF0YS4uY2FjaGVsaW5lX2FsaWduZWQiKSkpIGpp ZmZpZXM7CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB1NjQgZ2V0X2ppZmZpZXNfNjQodm9pZCkKewogcmV0dXJuICh1NjQpamlmZmll czsKfQojIDE5MCAiLi9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaCIKZXh0ZXJuIHVuc2lnbmVkIGxv bmcgcHJlc2V0X2xwajsKIyAyOTEgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVzLmgiCmV4dGVybiB1 bnNpZ25lZCBpbnQgamlmZmllc190b19tc2Vjcyhjb25zdCB1bnNpZ25lZCBsb25nIGopOwpleHRl cm4gdW5zaWduZWQgaW50IGppZmZpZXNfdG9fdXNlY3MoY29uc3QgdW5zaWduZWQgbG9uZyBqKTsK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHU2NCBqaWZmaWVzX3RvX25zZWNzKGNvbnN0IHVuc2lnbmVkIGxvbmcgaikKewogcmV0dXJuICh1 NjQpamlmZmllc190b191c2VjcyhqKSAqIDEwMDBMOwp9CgpleHRlcm4gdTY0IGppZmZpZXM2NF90 b19uc2Vjcyh1NjQgaik7CmV4dGVybiB1NjQgamlmZmllczY0X3RvX21zZWNzKHU2NCBqKTsKCmV4 dGVybiB1bnNpZ25lZCBsb25nIF9fbXNlY3NfdG9famlmZmllcyhjb25zdCB1bnNpZ25lZCBpbnQg bSk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgX21zZWNzX3RvX2ppZmZpZXMoY29uc3QgdW5zaWduZWQg aW50IG0pCnsKIHJldHVybiAobSArICgxMDAwTCAvIDI1MCkgLSAxKSAvICgxMDAwTCAvIDI1MCk7 Cn0KIyAzNjQgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdW5zaWduZWQgbG9uZyBtc2Vjc190b19qaWZmaWVzKGNvbnN0IHVuc2ln bmVkIGludCBtKQp7CiBpZiAoX19idWlsdGluX2NvbnN0YW50X3AobSkpIHsKICBpZiAoKGludClt IDwgMCkKICAgcmV0dXJuICgoKChsb25nKSh+MFVMID4+IDEpKSA+PiAxKS0xKTsKICByZXR1cm4g X21zZWNzX3RvX2ppZmZpZXMobSk7CiB9IGVsc2UgewogIHJldHVybiBfX21zZWNzX3RvX2ppZmZp ZXMobSk7CiB9Cn0KCmV4dGVybiB1bnNpZ25lZCBsb25nIF9fdXNlY3NfdG9famlmZmllcyhjb25z dCB1bnNpZ25lZCBpbnQgdSk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF91c2Vjc190b19qaWZmaWVzKGNvbnN0 IHVuc2lnbmVkIGludCB1KQp7CiByZXR1cm4gKHUgKyAoMTAwMDAwMEwgLyAyNTApIC0gMSkgLyAo MTAwMDAwMEwgLyAyNTApOwp9CiMgNDExICIuL2luY2x1ZGUvbGludXgvamlmZmllcy5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxvbmcgdXNlY3NfdG9famlm Zmllcyhjb25zdCB1bnNpZ25lZCBpbnQgdSkKewogaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKHUp KSB7CiAgaWYgKHUgPiBqaWZmaWVzX3RvX3VzZWNzKCgoKChsb25nKSh+MFVMID4+IDEpKSA+PiAx KS0xKSkpCiAgIHJldHVybiAoKCgobG9uZykofjBVTCA+PiAxKSkgPj4gMSktMSk7CiAgcmV0dXJu IF91c2Vjc190b19qaWZmaWVzKHUpOwogfSBlbHNlIHsKICByZXR1cm4gX191c2Vjc190b19qaWZm aWVzKHUpOwogfQp9CgpleHRlcm4gdW5zaWduZWQgbG9uZyB0aW1lc3BlYzY0X3RvX2ppZmZpZXMo Y29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnZhbHVlKTsKZXh0ZXJuIHZvaWQgamlmZmllc190b190 aW1lc3BlYzY0KGNvbnN0IHVuc2lnbmVkIGxvbmcgamlmZmllcywKICAgICAgc3RydWN0IHRpbWVz cGVjNjQgKnZhbHVlKTsKZXh0ZXJuIGNsb2NrX3QgamlmZmllc190b19jbG9ja190KHVuc2lnbmVk IGxvbmcgeCk7CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGNsb2NrX3QgamlmZmllc19kZWx0YV90b19jbG9ja190KGxvbmcgZGVsdGEpCnsK IHJldHVybiBqaWZmaWVzX3RvX2Nsb2NrX3QoX19idWlsdGluX2Nob29zZV9leHByKCgoISEoc2l6 ZW9mKCh0eXBlb2YoMEwpICopMSA9PSAodHlwZW9mKGRlbHRhKSAqKTEpKSkgJiYgKChzaXplb2Yo aW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lkICopKChsb25nKSgwTCkgKiAwbCkpIDogKGludCAq KTgpKSkgJiYgKHNpemVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcpKGRl bHRhKSAqIDBsKSkgOiAoaW50ICopOCkpKSkpLCAoKDBMKSA+IChkZWx0YSkgPyAoMEwpIDogKGRl bHRhKSksICh7IHR5cGVvZigwTCkgX19VTklRVUVfSURfX194OSA9ICgwTCk7IHR5cGVvZihkZWx0 YSkgX19VTklRVUVfSURfX195MTAgPSAoZGVsdGEpOyAoKF9fVU5JUVVFX0lEX19feDkpID4gKF9f VU5JUVVFX0lEX19feTEwKSA/IChfX1VOSVFVRV9JRF9fX3g5KSA6IChfX1VOSVFVRV9JRF9fX3kx MCkpOyB9KSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgamlmZmllc19kZWx0YV90b19tc2Vjcyhsb25nIGRl bHRhKQp7CiByZXR1cm4gamlmZmllc190b19tc2VjcyhfX2J1aWx0aW5fY2hvb3NlX2V4cHIoKCgh IShzaXplb2YoKHR5cGVvZigwTCkgKikxID09ICh0eXBlb2YoZGVsdGEpICopMSkpKSAmJiAoKHNp emVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcpKDBMKSAqIDBsKSkgOiAo aW50ICopOCkpKSAmJiAoc2l6ZW9mKGludCkgPT0gc2l6ZW9mKCooOCA/ICgodm9pZCAqKSgobG9u ZykoZGVsdGEpICogMGwpKSA6IChpbnQgKik4KSkpKSksICgoMEwpID4gKGRlbHRhKSA/ICgwTCkg OiAoZGVsdGEpKSwgKHsgdHlwZW9mKDBMKSBfX1VOSVFVRV9JRF9fX3gxMSA9ICgwTCk7IHR5cGVv ZihkZWx0YSkgX19VTklRVUVfSURfX195MTIgPSAoZGVsdGEpOyAoKF9fVU5JUVVFX0lEX19feDEx KSA+IChfX1VOSVFVRV9JRF9fX3kxMikgPyAoX19VTklRVUVfSURfX194MTEpIDogKF9fVU5JUVVF X0lEX19feTEyKSk7IH0pKSk7Cn0KCmV4dGVybiB1bnNpZ25lZCBsb25nIGNsb2NrX3RfdG9famlm Zmllcyh1bnNpZ25lZCBsb25nIHgpOwpleHRlcm4gdTY0IGppZmZpZXNfNjRfdG9fY2xvY2tfdCh1 NjQgeCk7CmV4dGVybiB1NjQgbnNlY190b19jbG9ja190KHU2NCB4KTsKZXh0ZXJuIHU2NCBuc2Vj c190b19qaWZmaWVzNjQodTY0IG4pOwpleHRlcm4gdW5zaWduZWQgbG9uZyBuc2Vjc190b19qaWZm aWVzKHU2NCBuKTsKIyAyNiAiLi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgiIDIKCgp0eXBlZGVmIHM2 NCBrdGltZV90OwojIDM3ICIuL2luY2x1ZGUvbGludXgva3RpbWUuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBrdGltZV9z ZXQoY29uc3QgczY0IHNlY3MsIGNvbnN0IHVuc2lnbmVkIGxvbmcgbnNlY3MpCnsKIGlmIChfX2J1 aWx0aW5fZXhwZWN0KCEhKHNlY3MgPj0gKCgoczY0KX4oKHU2NCkxIDw8IDYzKSkgLyAxMDAwMDAw MDAwTCkpLCAwKSkKICByZXR1cm4gKChzNjQpfigodTY0KTEgPDwgNjMpKTsKCiByZXR1cm4gc2Vj cyAqIDEwMDAwMDAwMDBMICsgKHM2NCluc2VjczsKfQojIDcwICIuL2luY2x1ZGUvbGludXgva3Rp bWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkga3RpbWVfdCB0aW1lc3BlYzY0X3RvX2t0aW1lKHN0cnVjdCB0aW1lc3BlYzY0IHRzKQp7 CiByZXR1cm4ga3RpbWVfc2V0KHRzLnR2X3NlYywgdHMudHZfbnNlYyk7Cn0KCgoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQga3Rp bWVfdG9fbnMoY29uc3Qga3RpbWVfdCBrdCkKewogcmV0dXJuIGt0Owp9CiMgOTQgIi4vaW5jbHVk ZS9saW51eC9rdGltZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQga3RpbWVfY29tcGFyZShjb25zdCBrdGltZV90IGNtcDEsIGNv bnN0IGt0aW1lX3QgY21wMikKewogaWYgKGNtcDEgPCBjbXAyKQogIHJldHVybiAtMTsKIGlmIChj bXAxID4gY21wMikKICByZXR1cm4gMTsKIHJldHVybiAwOwp9CiMgMTEwICIuL2luY2x1ZGUvbGlu dXgva3RpbWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBrdGltZV9hZnRlcihjb25zdCBrdGltZV90IGNtcDEsIGNvbnN0IGt0 aW1lX3QgY21wMikKewogcmV0dXJuIGt0aW1lX2NvbXBhcmUoY21wMSwgY21wMikgPiAwOwp9CiMg MTIyICIuL2luY2x1ZGUvbGludXgva3RpbWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBrdGltZV9iZWZvcmUoY29uc3Qga3Rp bWVfdCBjbXAxLCBjb25zdCBrdGltZV90IGNtcDIpCnsKIHJldHVybiBrdGltZV9jb21wYXJlKGNt cDEsIGNtcDIpIDwgMDsKfQojIDE0NyAiLi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NCBrdGlt ZV9kaXZucyhjb25zdCBrdGltZV90IGt0LCBzNjQgZGl2KQp7CgoKCgogKHsgaW50IF9fcmV0X3dh cm5fb24gPSAhIShkaXYgPCAwKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9v biksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgw ZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIg Ii5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIu bG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMx IiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5Ojpm bGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRl L2xpbnV4L2t0aW1lLmgiKSwgImkiICgxNTMpLCAiaSIgKCgxIDw8IDApfCgoKDkpIDw8IDgpKSks ICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9s YXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIu bG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDEzKSk7IH0pOyB9 IHdoaWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwog cmV0dXJuIGt0IC8gZGl2Owp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IGt0aW1lX3RvX3VzKGNvbnN0IGt0aW1lX3Qga3QpCnsK IHJldHVybiBrdGltZV9kaXZucyhrdCwgMTAwMEwpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQga3RpbWVfdG9fbXMoY29uc3Qg a3RpbWVfdCBrdCkKewogcmV0dXJuIGt0aW1lX2Rpdm5zKGt0LCAxMDAwMDAwTCk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NCBr dGltZV91c19kZWx0YShjb25zdCBrdGltZV90IGxhdGVyLCBjb25zdCBrdGltZV90IGVhcmxpZXIp CnsKICAgICAgIHJldHVybiBrdGltZV90b191cygoKGxhdGVyKSAtIChlYXJsaWVyKSkpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBz NjQga3RpbWVfbXNfZGVsdGEoY29uc3Qga3RpbWVfdCBsYXRlciwgY29uc3Qga3RpbWVfdCBlYXJs aWVyKQp7CiByZXR1cm4ga3RpbWVfdG9fbXMoKChsYXRlcikgLSAoZWFybGllcikpKTsKfQoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3Rp bWVfdCBrdGltZV9hZGRfdXMoY29uc3Qga3RpbWVfdCBrdCwgY29uc3QgdTY0IHVzZWMpCnsKIHJl dHVybiAoKGt0KSArICh1c2VjICogMTAwMEwpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBrdGltZV9hZGRfbXMoY29u c3Qga3RpbWVfdCBrdCwgY29uc3QgdTY0IG1zZWMpCnsKIHJldHVybiAoKGt0KSArIChtc2VjICog MTAwMDAwMEwpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBrdGltZV9zdWJfdXMoY29uc3Qga3RpbWVfdCBrdCwgY29u c3QgdTY0IHVzZWMpCnsKIHJldHVybiAoKGt0KSAtICh1c2VjICogMTAwMEwpKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVf dCBrdGltZV9zdWJfbXMoY29uc3Qga3RpbWVfdCBrdCwgY29uc3QgdTY0IG1zZWMpCnsKIHJldHVy biAoKGt0KSAtIChtc2VjICogMTAwMDAwMEwpKTsKfQoKZXh0ZXJuIGt0aW1lX3Qga3RpbWVfYWRk X3NhZmUoY29uc3Qga3RpbWVfdCBsaHMsIGNvbnN0IGt0aW1lX3QgcmhzKTsKIyAyMDggIi4vaW5j bHVkZS9saW51eC9rdGltZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSkgYm9vbCBrdGltZV90b190aW1lc3BlYzY0X2NvbmQoY29uc3Qga3RpbWVfdCBrdCwKICAgICAg ICAgICAgIHN0cnVjdCB0aW1lc3BlYzY0ICp0cykKewogaWYgKGt0KSB7CiAgKnRzID0gbnNfdG9f dGltZXNwZWM2NCgoa3QpKTsKICByZXR1cm4gdHJ1ZTsKIH0gZWxzZSB7CiAgcmV0dXJuIGZhbHNl OwogfQp9CiMgMjI4ICIuL2luY2x1ZGUvbGludXgva3RpbWUuaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBuc190b19rdGlt ZSh1NjQgbnMpCnsKIHJldHVybiBuczsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBtc190b19rdGltZSh1NjQgbXMpCnsK IHJldHVybiBtcyAqIDEwMDAwMDBMOwp9CgojIDEgIi4vaW5jbHVkZS9saW51eC90aW1la2VlcGlu Zy5oIiAxCiMgOSAiLi9pbmNsdWRlL2xpbnV4L3RpbWVrZWVwaW5nLmgiCnZvaWQgdGltZWtlZXBp bmdfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCB0aW1la2VlcGluZ19zdXNwZW5kZWQ7CgoKZXh0ZXJu IHZvaWQgdXBkYXRlX3Byb2Nlc3NfdGltZXMoaW50IHVzZXIpOwpleHRlcm4gdm9pZCB4dGltZV91 cGRhdGUodW5zaWduZWQgbG9uZyB0aWNrcyk7CgoKCgpleHRlcm4gaW50IGRvX3NldHRpbWVvZmRh eTY0KGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CmV4dGVybiBpbnQgZG9fc3lzX3NldHRp bWVvZmRheTY0KGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0diwKICAgICBjb25zdCBzdHJ1Y3Qg dGltZXpvbmUgKnR6KTsKIyA0MSAiLi9pbmNsdWRlL2xpbnV4L3RpbWVrZWVwaW5nLmgiCmV4dGVy biB2b2lkIGt0aW1lX2dldF9yYXdfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwpleHRlcm4g dm9pZCBrdGltZV9nZXRfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwpleHRlcm4gdm9pZCBr dGltZV9nZXRfcmVhbF90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0dik7CmV4dGVybiB2b2lkIGt0 aW1lX2dldF9jb2Fyc2VfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwpleHRlcm4gdm9pZCBr dGltZV9nZXRfY29hcnNlX3JlYWxfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwoKdm9pZCBn ZXRib290dGltZTY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CgoKCgpleHRlcm4gdGltZTY0X3Qg a3RpbWVfZ2V0X3NlY29uZHModm9pZCk7CmV4dGVybiB0aW1lNjRfdCBfX2t0aW1lX2dldF9yZWFs X3NlY29uZHModm9pZCk7CmV4dGVybiB0aW1lNjRfdCBrdGltZV9nZXRfcmVhbF9zZWNvbmRzKHZv aWQpOwoKCgoKCmVudW0gdGtfb2Zmc2V0cyB7CiBUS19PRkZTX1JFQUwsCiBUS19PRkZTX0JPT1Qs CiBUS19PRkZTX1RBSSwKIFRLX09GRlNfTUFYLAp9OwoKZXh0ZXJuIGt0aW1lX3Qga3RpbWVfZ2V0 KHZvaWQpOwpleHRlcm4ga3RpbWVfdCBrdGltZV9nZXRfd2l0aF9vZmZzZXQoZW51bSB0a19vZmZz ZXRzIG9mZnMpOwpleHRlcm4ga3RpbWVfdCBrdGltZV9nZXRfY29hcnNlX3dpdGhfb2Zmc2V0KGVu dW0gdGtfb2Zmc2V0cyBvZmZzKTsKZXh0ZXJuIGt0aW1lX3Qga3RpbWVfbW9ub190b19hbnkoa3Rp bWVfdCB0bW9ubywgZW51bSB0a19vZmZzZXRzIG9mZnMpOwpleHRlcm4ga3RpbWVfdCBrdGltZV9n ZXRfcmF3KHZvaWQpOwpleHRlcm4gdTMyIGt0aW1lX2dldF9yZXNvbHV0aW9uX25zKHZvaWQpOwoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkga3RpbWVfdCBrdGltZV9nZXRfcmVhbCh2b2lkKQp7CiByZXR1cm4ga3RpbWVfZ2V0X3dpdGhf b2Zmc2V0KFRLX09GRlNfUkVBTCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3Qga3RpbWVfZ2V0X2NvYXJzZV9yZWFsKHZv aWQpCnsKIHJldHVybiBrdGltZV9nZXRfY29hcnNlX3dpdGhfb2Zmc2V0KFRLX09GRlNfUkVBTCk7 Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGt0aW1lX3Qga3RpbWVfZ2V0X2Jvb3R0aW1lKHZvaWQpCnsKIHJldHVybiBrdGlt ZV9nZXRfd2l0aF9vZmZzZXQoVEtfT0ZGU19CT09UKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBrdGltZV9nZXRfY29h cnNlX2Jvb3R0aW1lKHZvaWQpCnsKIHJldHVybiBrdGltZV9nZXRfY29hcnNlX3dpdGhfb2Zmc2V0 KFRLX09GRlNfQk9PVCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3Qga3RpbWVfZ2V0X2Nsb2NrdGFpKHZvaWQpCnsK IHJldHVybiBrdGltZV9nZXRfd2l0aF9vZmZzZXQoVEtfT0ZGU19UQUkpOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGt0 aW1lX2dldF9jb2Fyc2VfY2xvY2t0YWkodm9pZCkKewogcmV0dXJuIGt0aW1lX2dldF9jb2Fyc2Vf d2l0aF9vZmZzZXQoVEtfT0ZGU19UQUkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGt0aW1lX2dldF9jb2Fyc2Uodm9p ZCkKewogc3RydWN0IHRpbWVzcGVjNjQgdHM7Cgoga3RpbWVfZ2V0X2NvYXJzZV90czY0KCZ0cyk7 CiByZXR1cm4gdGltZXNwZWM2NF90b19rdGltZSh0cyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRfY29hcnNl X25zKHZvaWQpCnsKIHJldHVybiBrdGltZV90b19ucyhrdGltZV9nZXRfY29hcnNlKCkpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1 NjQga3RpbWVfZ2V0X2NvYXJzZV9yZWFsX25zKHZvaWQpCnsKIHJldHVybiBrdGltZV90b19ucyhr dGltZV9nZXRfY29hcnNlX3JlYWwoKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRfY29hcnNlX2Jvb3R0aW1l X25zKHZvaWQpCnsKIHJldHVybiBrdGltZV90b19ucyhrdGltZV9nZXRfY29hcnNlX2Jvb3R0aW1l KCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB1NjQga3RpbWVfZ2V0X2NvYXJzZV9jbG9ja3RhaV9ucyh2b2lkKQp7CiByZXR1cm4g a3RpbWVfdG9fbnMoa3RpbWVfZ2V0X2NvYXJzZV9jbG9ja3RhaSgpKTsKfQoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBr dGltZV9tb25vX3RvX3JlYWwoa3RpbWVfdCBtb25vKQp7CiByZXR1cm4ga3RpbWVfbW9ub190b19h bnkobW9ubywgVEtfT0ZGU19SRUFMKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0IGt0aW1lX2dldF9ucyh2b2lkKQp7CiByZXR1 cm4ga3RpbWVfdG9fbnMoa3RpbWVfZ2V0KCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQga3RpbWVfZ2V0X3JlYWxfbnModm9p ZCkKewogcmV0dXJuIGt0aW1lX3RvX25zKGt0aW1lX2dldF9yZWFsKCkpOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQga3RpbWVf Z2V0X2Jvb3R0aW1lX25zKHZvaWQpCnsKIHJldHVybiBrdGltZV90b19ucyhrdGltZV9nZXRfYm9v dHRpbWUoKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRfY2xvY2t0YWlfbnModm9pZCkKewogcmV0dXJuIGt0 aW1lX3RvX25zKGt0aW1lX2dldF9jbG9ja3RhaSgpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0IGt0aW1lX2dldF9yYXdfbnMo dm9pZCkKewogcmV0dXJuIGt0aW1lX3RvX25zKGt0aW1lX2dldF9yYXcoKSk7Cn0KCmV4dGVybiB1 NjQga3RpbWVfZ2V0X21vbm9fZmFzdF9ucyh2b2lkKTsKZXh0ZXJuIHU2NCBrdGltZV9nZXRfcmF3 X2Zhc3RfbnModm9pZCk7CmV4dGVybiB1NjQga3RpbWVfZ2V0X2Jvb3RfZmFzdF9ucyh2b2lkKTsK ZXh0ZXJuIHU2NCBrdGltZV9nZXRfcmVhbF9mYXN0X25zKHZvaWQpOwoKCgoKCgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGt0aW1l X2dldF9ib290dGltZV90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cykKewogKnRzID0gbnNfdG9f dGltZXNwZWM2NCgoa3RpbWVfZ2V0X2Jvb3R0aW1lKCkpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrdGltZV9nZXRfY29h cnNlX2Jvb3R0aW1lX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKQp7CiAqdHMgPSBuc190b190 aW1lc3BlYzY0KChrdGltZV9nZXRfY29hcnNlX2Jvb3R0aW1lKCkpKTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdGltZTY0X3Qga3Rp bWVfZ2V0X2Jvb3R0aW1lX3NlY29uZHModm9pZCkKewogcmV0dXJuIGt0aW1lX2Rpdm5zKGt0aW1l X2dldF9jb2Fyc2VfYm9vdHRpbWUoKSwgMTAwMDAwMDAwMEwpOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGt0aW1lX2dldF9j bG9ja3RhaV90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cykKewogKnRzID0gbnNfdG9fdGltZXNw ZWM2NCgoa3RpbWVfZ2V0X2Nsb2NrdGFpKCkpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrdGltZV9nZXRfY29hcnNlX2Ns b2NrdGFpX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKQp7CiAqdHMgPSBuc190b190aW1lc3Bl YzY0KChrdGltZV9nZXRfY29hcnNlX2Nsb2NrdGFpKCkpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdGltZTY0X3Qga3RpbWVfZ2V0 X2Nsb2NrdGFpX3NlY29uZHModm9pZCkKewogcmV0dXJuIGt0aW1lX2Rpdm5zKGt0aW1lX2dldF9j b2Fyc2VfY2xvY2t0YWkoKSwgMTAwMDAwMDAwMEwpOwp9CgoKCgpleHRlcm4gYm9vbCB0aW1la2Vl cGluZ19ydGNfc2tpcHN1c3BlbmQodm9pZCk7CmV4dGVybiBib29sIHRpbWVrZWVwaW5nX3J0Y19z a2lwcmVzdW1lKHZvaWQpOwoKZXh0ZXJuIHZvaWQgdGltZWtlZXBpbmdfaW5qZWN0X3NsZWVwdGlt ZTY0KGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICpkZWx0YSk7CiMgMjM0ICIuL2luY2x1ZGUvbGlu dXgvdGltZWtlZXBpbmcuaCIKc3RydWN0IHN5c3RlbV90aW1lX3NuYXBzaG90IHsKIHU2NCBjeWNs ZXM7CiBrdGltZV90IHJlYWw7CiBrdGltZV90IHJhdzsKIHVuc2lnbmVkIGludCBjbG9ja193YXNf c2V0X3NlcTsKIHU4IGNzX3dhc19jaGFuZ2VkX3NlcTsKfTsKIyAyNDkgIi4vaW5jbHVkZS9saW51 eC90aW1la2VlcGluZy5oIgpzdHJ1Y3Qgc3lzdGVtX2RldmljZV9jcm9zc3RzdGFtcCB7CiBrdGlt ZV90IGRldmljZTsKIGt0aW1lX3Qgc3lzX3JlYWx0aW1lOwoga3RpbWVfdCBzeXNfbW9ub3JhdzsK fTsKIyAyNjIgIi4vaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oIgpzdHJ1Y3Qgc3lzdGVtX2Nv dW50ZXJ2YWxfdCB7CiB1NjQgY3ljbGVzOwogc3RydWN0IGNsb2Nrc291cmNlICpjczsKfTsKCgoK CmV4dGVybiBpbnQgZ2V0X2RldmljZV9zeXN0ZW1fY3Jvc3N0c3RhbXAoCiAgIGludCAoKmdldF90 aW1lX2ZuKShrdGltZV90ICpkZXZpY2VfdGltZSwKICAgIHN0cnVjdCBzeXN0ZW1fY291bnRlcnZh bF90ICpzeXN0ZW1fY291bnRlcnZhbCwKICAgIHZvaWQgKmN0eCksCiAgIHZvaWQgKmN0eCwKICAg c3RydWN0IHN5c3RlbV90aW1lX3NuYXBzaG90ICpoaXN0b3J5LAogICBzdHJ1Y3Qgc3lzdGVtX2Rl dmljZV9jcm9zc3RzdGFtcCAqeHRzdGFtcCk7CgoKCgpleHRlcm4gdm9pZCBrdGltZV9nZXRfc25h cHNob3Qoc3RydWN0IHN5c3RlbV90aW1lX3NuYXBzaG90ICpzeXN0aW1lX3NuYXBzaG90KTsKCgoK CmV4dGVybiBpbnQgcGVyc2lzdGVudF9jbG9ja19pc19sb2NhbDsKCmV4dGVybiB2b2lkIHJlYWRf cGVyc2lzdGVudF9jbG9jazY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CnZvaWQgcmVhZF9wZXJz aXN0ZW50X3dhbGxfYW5kX2Jvb3Rfb2Zmc2V0KHN0cnVjdCB0aW1lc3BlYzY0ICp3YWxsX2Nsb2Nr LAogICAgICAgc3RydWN0IHRpbWVzcGVjNjQgKmJvb3Rfb2Zmc2V0KTsKZXh0ZXJuIGludCB1cGRh dGVfcGVyc2lzdGVudF9jbG9jazY0KHN0cnVjdCB0aW1lc3BlYzY0IG5vdyk7CiMgMjM5ICIuL2lu Y2x1ZGUvbGludXgva3RpbWUuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC90aW1la2VlcGluZzMy LmgiIDEKIyA5ICIuL2luY2x1ZGUvbGludXgvdGltZWtlZXBpbmczMi5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25n IGdldF9zZWNvbmRzKHZvaWQpCnsKIHJldHVybiBrdGltZV9nZXRfcmVhbF9zZWNvbmRzKCk7Cn0K IyAyNDAgIi4vaW5jbHVkZS9saW51eC9rdGltZS5oIiAyCiMgNyAiLi9pbmNsdWRlL2xpbnV4L3Rp bWVyLmgiIDIKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnb2JqZWN0cy5oIiAxCgoKCgoKCgpl bnVtIGRlYnVnX29ial9zdGF0ZSB7CiBPREVCVUdfU1RBVEVfTk9ORSwKIE9ERUJVR19TVEFURV9J TklULAogT0RFQlVHX1NUQVRFX0lOQUNUSVZFLAogT0RFQlVHX1NUQVRFX0FDVElWRSwKIE9ERUJV R19TVEFURV9ERVNUUk9ZRUQsCiBPREVCVUdfU1RBVEVfTk9UQVZBSUxBQkxFLAogT0RFQlVHX1NU QVRFX01BWCwKfTsKCnN0cnVjdCBkZWJ1Z19vYmpfZGVzY3I7CiMgMjggIi4vaW5jbHVkZS9saW51 eC9kZWJ1Z29iamVjdHMuaCIKc3RydWN0IGRlYnVnX29iaiB7CiBzdHJ1Y3QgaGxpc3Rfbm9kZSBu b2RlOwogZW51bSBkZWJ1Z19vYmpfc3RhdGUgc3RhdGU7CiB1bnNpZ25lZCBpbnQgYXN0YXRlOwog dm9pZCAqb2JqZWN0Owogc3RydWN0IGRlYnVnX29ial9kZXNjciAqZGVzY3I7Cn07CiMgNTUgIi4v aW5jbHVkZS9saW51eC9kZWJ1Z29iamVjdHMuaCIKc3RydWN0IGRlYnVnX29ial9kZXNjciB7CiBj b25zdCBjaGFyICpuYW1lOwogdm9pZCAqKCpkZWJ1Z19oaW50KSh2b2lkICphZGRyKTsKIGJvb2wg KCppc19zdGF0aWNfb2JqZWN0KSh2b2lkICphZGRyKTsKIGJvb2wgKCpmaXh1cF9pbml0KSh2b2lk ICphZGRyLCBlbnVtIGRlYnVnX29ial9zdGF0ZSBzdGF0ZSk7CiBib29sICgqZml4dXBfYWN0aXZh dGUpKHZvaWQgKmFkZHIsIGVudW0gZGVidWdfb2JqX3N0YXRlIHN0YXRlKTsKIGJvb2wgKCpmaXh1 cF9kZXN0cm95KSh2b2lkICphZGRyLCBlbnVtIGRlYnVnX29ial9zdGF0ZSBzdGF0ZSk7CiBib29s ICgqZml4dXBfZnJlZSkodm9pZCAqYWRkciwgZW51bSBkZWJ1Z19vYmpfc3RhdGUgc3RhdGUpOwog Ym9vbCAoKmZpeHVwX2Fzc2VydF9pbml0KSh2b2lkICphZGRyLCBlbnVtIGRlYnVnX29ial9zdGF0 ZSBzdGF0ZSk7Cn07CiMgODggIi4vaW5jbHVkZS9saW51eC9kZWJ1Z29iamVjdHMuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApk ZWJ1Z19vYmplY3RfaW5pdCAodm9pZCAqYWRkciwgc3RydWN0IGRlYnVnX29ial9kZXNjciAqZGVz Y3IpIHsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkCmRlYnVnX29iamVjdF9pbml0X29uX3N0YWNrKHZvaWQgKmFkZHIsIHN0cnVj dCBkZWJ1Z19vYmpfZGVzY3IgKmRlc2NyKSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmRlYnVnX29iamVjdF9hY3RpdmF0ZSAo dm9pZCAqYWRkciwgc3RydWN0IGRlYnVnX29ial9kZXNjciAqZGVzY3IpIHsgcmV0dXJuIDA7IH0K c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZApkZWJ1Z19vYmplY3RfZGVhY3RpdmF0ZSh2b2lkICphZGRyLCBzdHJ1Y3QgZGVidWdfb2Jq X2Rlc2NyICpkZXNjcikgeyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKZGVidWdfb2JqZWN0X2Rlc3Ryb3kgKHZvaWQgKmFkZHIs IHN0cnVjdCBkZWJ1Z19vYmpfZGVzY3IgKmRlc2NyKSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApkZWJ1Z19vYmplY3RfZnJl ZSAodm9pZCAqYWRkciwgc3RydWN0IGRlYnVnX29ial9kZXNjciAqZGVzY3IpIHsgfQpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmRl YnVnX29iamVjdF9hc3NlcnRfaW5pdCh2b2lkICphZGRyLCBzdHJ1Y3QgZGVidWdfb2JqX2Rlc2Ny ICpkZXNjcikgeyB9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGRlYnVnX29iamVjdHNfZWFybHlfaW5pdCh2b2lkKSB7IH0Kc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBkZWJ1Z19vYmplY3RzX21lbV9pbml0KHZvaWQpIHsgfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKZGVidWdfY2hlY2tf bm9fb2JqX2ZyZWVkKGNvbnN0IHZvaWQgKmFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSkgeyB9 CiMgOSAiLi9pbmNsdWRlL2xpbnV4L3RpbWVyLmgiIDIKCgpzdHJ1Y3QgdGltZXJfbGlzdCB7CgoK Cgogc3RydWN0IGhsaXN0X25vZGUgZW50cnk7CiB1bnNpZ25lZCBsb25nIGV4cGlyZXM7CiB2b2lk ICgqZnVuY3Rpb24pKHN0cnVjdCB0aW1lcl9saXN0ICopOwogdTMyIGZsYWdzOwoKCgoKfTsKIyA5 MCAiLi9pbmNsdWRlL2xpbnV4L3RpbWVyLmgiCnZvaWQgaW5pdF90aW1lcl9rZXkoc3RydWN0IHRp bWVyX2xpc3QgKnRpbWVyLAogICAgICB2b2lkICgqZnVuYykoc3RydWN0IHRpbWVyX2xpc3QgKiks IHVuc2lnbmVkIGludCBmbGFncywKICAgICAgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGxvY2tf Y2xhc3Nfa2V5ICprZXkpOwoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbml0X3RpbWVyX29uX3N0YWNrX2tleShzdHJ1 Y3QgdGltZXJfbGlzdCAqdGltZXIsCiAgICAgICAgdm9pZCAoKmZ1bmMpKHN0cnVjdCB0aW1lcl9s aXN0ICopLAogICAgICAgIHVuc2lnbmVkIGludCBmbGFncywKICAgICAgICBjb25zdCBjaGFyICpu YW1lLAogICAgICAgIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KQp7CiBpbml0X3RpbWVyX2tl eSh0aW1lciwgZnVuYywgZmxhZ3MsIG5hbWUsIGtleSk7Cn0KIyAxNDkgIi4vaW5jbHVkZS9saW51 eC90aW1lci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGRlc3Ryb3lfdGltZXJfb25fc3RhY2soc3RydWN0IHRpbWVyX2xpc3Qg KnRpbWVyKSB7IH0KIyAxNjUgIi4vaW5jbHVkZS9saW51eC90aW1lci5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGltZXJfcGVu ZGluZyhjb25zdCBzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKQp7CiByZXR1cm4gdGltZXItPmVu dHJ5LnBwcmV2ICE9ICgodm9pZCAqKTApOwp9CgpleHRlcm4gdm9pZCBhZGRfdGltZXJfb24oc3Ry dWN0IHRpbWVyX2xpc3QgKnRpbWVyLCBpbnQgY3B1KTsKZXh0ZXJuIGludCBkZWxfdGltZXIoc3Ry dWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CmV4dGVybiBpbnQgbW9kX3RpbWVyKHN0cnVjdCB0aW1l cl9saXN0ICp0aW1lciwgdW5zaWduZWQgbG9uZyBleHBpcmVzKTsKZXh0ZXJuIGludCBtb2RfdGlt ZXJfcGVuZGluZyhzdHJ1Y3QgdGltZXJfbGlzdCAqdGltZXIsIHVuc2lnbmVkIGxvbmcgZXhwaXJl cyk7CmV4dGVybiBpbnQgdGltZXJfcmVkdWNlKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lciwgdW5z aWduZWQgbG9uZyBleHBpcmVzKTsKCgoKCgoKCmV4dGVybiB2b2lkIGFkZF90aW1lcihzdHJ1Y3Qg dGltZXJfbGlzdCAqdGltZXIpOwoKZXh0ZXJuIGludCB0cnlfdG9fZGVsX3RpbWVyX3N5bmMoc3Ry dWN0IHRpbWVyX2xpc3QgKnRpbWVyKTsKCgogIGV4dGVybiBpbnQgZGVsX3RpbWVyX3N5bmMoc3Ry dWN0IHRpbWVyX2xpc3QgKnRpbWVyKTsKCgoKCgoKZXh0ZXJuIHZvaWQgaW5pdF90aW1lcnModm9p ZCk7CmV4dGVybiB2b2lkIHJ1bl9sb2NhbF90aW1lcnModm9pZCk7CnN0cnVjdCBocnRpbWVyOwpl eHRlcm4gZW51bSBocnRpbWVyX3Jlc3RhcnQgaXRfcmVhbF9mbihzdHJ1Y3QgaHJ0aW1lciAqKTsK CgpzdHJ1Y3QgY3RsX3RhYmxlOwoKZXh0ZXJuIHVuc2lnbmVkIGludCBzeXNjdGxfdGltZXJfbWln cmF0aW9uOwppbnQgdGltZXJfbWlncmF0aW9uX2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAqdGFi bGUsIGludCB3cml0ZSwKICAgICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLAogICAgICAg bG9mZl90ICpwcG9zKTsKCgp1bnNpZ25lZCBsb25nIF9fcm91bmRfamlmZmllcyh1bnNpZ25lZCBs b25nIGosIGludCBjcHUpOwp1bnNpZ25lZCBsb25nIF9fcm91bmRfamlmZmllc19yZWxhdGl2ZSh1 bnNpZ25lZCBsb25nIGosIGludCBjcHUpOwp1bnNpZ25lZCBsb25nIHJvdW5kX2ppZmZpZXModW5z aWduZWQgbG9uZyBqKTsKdW5zaWduZWQgbG9uZyByb3VuZF9qaWZmaWVzX3JlbGF0aXZlKHVuc2ln bmVkIGxvbmcgaik7Cgp1bnNpZ25lZCBsb25nIF9fcm91bmRfamlmZmllc191cCh1bnNpZ25lZCBs b25nIGosIGludCBjcHUpOwp1bnNpZ25lZCBsb25nIF9fcm91bmRfamlmZmllc191cF9yZWxhdGl2 ZSh1bnNpZ25lZCBsb25nIGosIGludCBjcHUpOwp1bnNpZ25lZCBsb25nIHJvdW5kX2ppZmZpZXNf dXAodW5zaWduZWQgbG9uZyBqKTsKdW5zaWduZWQgbG9uZyByb3VuZF9qaWZmaWVzX3VwX3JlbGF0 aXZlKHVuc2lnbmVkIGxvbmcgaik7CgoKaW50IHRpbWVyc19wcmVwYXJlX2NwdSh1bnNpZ25lZCBp bnQgY3B1KTsKaW50IHRpbWVyc19kZWFkX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKIyAxMCAiLi9p bmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIiAyCiMgMTggIi4vaW5jbHVkZS9saW51eC93b3JrcXVl dWUuaCIKc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3Q7CgpzdHJ1Y3Qgd29ya19zdHJ1Y3Q7CnR5cGVk ZWYgdm9pZCAoKndvcmtfZnVuY190KShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwp2b2lkIGRl bGF5ZWRfd29ya190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7CgoKCgoKCgplbnVtIHsK IFdPUktfU1RSVUNUX1BFTkRJTkdfQklUID0gMCwKIFdPUktfU1RSVUNUX0RFTEFZRURfQklUID0g MSwKIFdPUktfU1RSVUNUX1BXUV9CSVQgPSAyLAogV09SS19TVFJVQ1RfTElOS0VEX0JJVCA9IDMs CgoKCgogV09SS19TVFJVQ1RfQ09MT1JfU0hJRlQgPSA0LAoKCiBXT1JLX1NUUlVDVF9DT0xPUl9C SVRTID0gNCwKCiBXT1JLX1NUUlVDVF9QRU5ESU5HID0gMSA8PCBXT1JLX1NUUlVDVF9QRU5ESU5H X0JJVCwKIFdPUktfU1RSVUNUX0RFTEFZRUQgPSAxIDw8IFdPUktfU1RSVUNUX0RFTEFZRURfQklU LAogV09SS19TVFJVQ1RfUFdRID0gMSA8PCBXT1JLX1NUUlVDVF9QV1FfQklULAogV09SS19TVFJV Q1RfTElOS0VEID0gMSA8PCBXT1JLX1NUUlVDVF9MSU5LRURfQklULAoKCgogV09SS19TVFJVQ1Rf U1RBVElDID0gMCwKCgoKCgoKIFdPUktfTlJfQ09MT1JTID0gKDEgPDwgV09SS19TVFJVQ1RfQ09M T1JfQklUUykgLSAxLAogV09SS19OT19DT0xPUiA9IFdPUktfTlJfQ09MT1JTLAoKCiBXT1JLX0NQ VV9VTkJPVU5EID0gOCwKCgoKCgoKIFdPUktfU1RSVUNUX0ZMQUdfQklUUyA9IFdPUktfU1RSVUNU X0NPTE9SX1NISUZUICsKICAgICAgV09SS19TVFJVQ1RfQ09MT1JfQklUUywKCgogV09SS19PRkZR X0ZMQUdfQkFTRSA9IFdPUktfU1RSVUNUX0NPTE9SX1NISUZULAoKIF9fV09SS19PRkZRX0NBTkNF TElORyA9IFdPUktfT0ZGUV9GTEFHX0JBU0UsCiBXT1JLX09GRlFfQ0FOQ0VMSU5HID0gKDEgPDwg X19XT1JLX09GRlFfQ0FOQ0VMSU5HKSwKCgoKCgoKIFdPUktfT0ZGUV9GTEFHX0JJVFMgPSAxLAog V09SS19PRkZRX1BPT0xfU0hJRlQgPSBXT1JLX09GRlFfRkxBR19CQVNFICsgV09SS19PRkZRX0ZM QUdfQklUUywKIFdPUktfT0ZGUV9MRUZUID0gNjQgLSBXT1JLX09GRlFfUE9PTF9TSElGVCwKIFdP UktfT0ZGUV9QT09MX0JJVFMgPSBXT1JLX09GRlFfTEVGVCA8PSAzMSA/IFdPUktfT0ZGUV9MRUZU IDogMzEsCiBXT1JLX09GRlFfUE9PTF9OT05FID0gKDFMVSA8PCBXT1JLX09GRlFfUE9PTF9CSVRT KSAtIDEsCgoKIFdPUktfU1RSVUNUX0ZMQUdfTUFTSyA9ICgxVUwgPDwgV09SS19TVFJVQ1RfRkxB R19CSVRTKSAtIDEsCiBXT1JLX1NUUlVDVF9XUV9EQVRBX01BU0sgPSB+V09SS19TVFJVQ1RfRkxB R19NQVNLLAogV09SS19TVFJVQ1RfTk9fUE9PTCA9ICh1bnNpZ25lZCBsb25nKVdPUktfT0ZGUV9Q T09MX05PTkUgPDwgV09SS19PRkZRX1BPT0xfU0hJRlQsCgoKIFdPUktfQlVTWV9QRU5ESU5HID0g MSA8PCAwLAogV09SS19CVVNZX1JVTk5JTkcgPSAxIDw8IDEsCgoKIFdPUktFUl9ERVNDX0xFTiA9 IDI0LAp9OwoKc3RydWN0IHdvcmtfc3RydWN0IHsKIGF0b21pY19sb25nX3QgZGF0YTsKIHN0cnVj dCBsaXN0X2hlYWQgZW50cnk7CiB3b3JrX2Z1bmNfdCBmdW5jOwoKCgp9OwoKCgoKCnN0cnVjdCBk ZWxheWVkX3dvcmsgewogc3RydWN0IHdvcmtfc3RydWN0IHdvcms7CiBzdHJ1Y3QgdGltZXJfbGlz dCB0aW1lcjsKCgogc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOwogaW50IGNwdTsKfTsKCnN0 cnVjdCByY3Vfd29yayB7CiBzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKIHN0cnVjdCBjYWxsYmFj a19oZWFkIHJjdTsKCgogc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOwp9OwoKCgoKCgpzdHJ1 Y3Qgd29ya3F1ZXVlX2F0dHJzIHsKCgoKIGludCBuaWNlOwoKCgoKIGNwdW1hc2tfdmFyX3QgY3B1 bWFzazsKIyAxNTUgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKIGJvb2wgbm9fbnVtYTsK fTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHN0cnVjdCBkZWxheWVkX3dvcmsgKnRvX2RlbGF5ZWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCnsKIHJldHVybiAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAqKSh3b3JrKTsgZG8g eyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNjAodm9pZCkgX19hdHRyaWJ1dGVf XygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29udGFpbmVyX29mKCkiKSkp OyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKHdvcmspKSwg dHlwZW9mKCgoc3RydWN0IGRlbGF5ZWRfd29yayAqKTApLT53b3JrKSkgJiYgIV9fYnVpbHRpbl90 eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCood29yaykpLCB0eXBlb2Yodm9pZCkpKSkpIF9fY29t cGlsZXRpbWVfYXNzZXJ0XzE2MCgpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgZGVsYXllZF93b3Jr ICopKF9fbXB0ciAtIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgZGVsYXllZF93b3JrLCB3b3Jr KSkpOyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgc3RydWN0IHJjdV93b3JrICp0b19yY3Vfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCnsKIHJldHVybiAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAqKSh3b3JrKTsgZG8g eyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNjUodm9pZCkgX19hdHRyaWJ1dGVf XygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29udGFpbmVyX29mKCkiKSkp OyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKHdvcmspKSwg dHlwZW9mKCgoc3RydWN0IHJjdV93b3JrICopMCktPndvcmspKSAmJiAhX19idWlsdGluX3R5cGVz X2NvbXBhdGlibGVfcCh0eXBlb2YoKih3b3JrKSksIHR5cGVvZih2b2lkKSkpKSkgX19jb21waWxl dGltZV9hc3NlcnRfMTY1KCk7IH0gd2hpbGUgKDApOyAoKHN0cnVjdCByY3Vfd29yayAqKShfX21w dHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHJjdV93b3JrLCB3b3JrKSkpOyB9KTsKfQoK c3RydWN0IGV4ZWN1dGVfd29yayB7CiBzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKfTsKIyAyMTUg Ii4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2luaXRfd29yayhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmssIGludCBvbnN0YWNrKSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXN0cm95X3dvcmtfb25fc3Rh Y2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXN0cm95X2RlbGF5ZWRfd29y a19vbl9zdGFjayhzdHJ1Y3QgZGVsYXllZF93b3JrICp3b3JrKSB7IH0Kc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IHdv cmtfc3RhdGljKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykgeyByZXR1cm4gMDsgfQojIDMwOCAi Li9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIgplbnVtIHsKIFdRX1VOQk9VTkQgPSAxIDw8IDEs CiBXUV9GUkVFWkFCTEUgPSAxIDw8IDIsCiBXUV9NRU1fUkVDTEFJTSA9IDEgPDwgMywKIFdRX0hJ R0hQUkkgPSAxIDw8IDQsCiBXUV9DUFVfSU5URU5TSVZFID0gMSA8PCA1LAogV1FfU1lTRlMgPSAx IDw8IDYsCiMgMzQxICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCiBXUV9QT1dFUl9FRkZJ Q0lFTlQgPSAxIDw8IDcsCgogX19XUV9EUkFJTklORyA9IDEgPDwgMTYsCiBfX1dRX09SREVSRUQg PSAxIDw8IDE3LAogX19XUV9MRUdBQ1kgPSAxIDw8IDE4LAogX19XUV9PUkRFUkVEX0VYUExJQ0lU ID0gMSA8PCAxOSwKCiBXUV9NQVhfQUNUSVZFID0gNTEyLAogV1FfTUFYX1VOQk9VTkRfUEVSX0NQ VSA9IDQsCiBXUV9ERkxfQUNUSVZFID0gV1FfTUFYX0FDVElWRSAvIDIsCn07CiMgMzg1ICIuL2lu Y2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCmV4dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAq c3lzdGVtX3dxOwpleHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9oaWdocHJp X3dxOwpleHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9sb25nX3dxOwpleHRl cm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV91bmJvdW5kX3dxOwpleHRlcm4gc3Ry dWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9mcmVlemFibGVfd3E7CmV4dGVybiBzdHJ1Y3Qg d29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93cTsKZXh0ZXJuIHN0cnVj dCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fZnJlZXphYmxlX3Bvd2VyX2VmZmljaWVudF93cTsK IyA0MDcgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKc3RydWN0IHdvcmtxdWV1ZV9zdHJ1 Y3QgKmFsbG9jX3dvcmtxdWV1ZShjb25zdCBjaGFyICpmbXQsCiAgICAgIHVuc2lnbmVkIGludCBm bGFncywKICAgICAgaW50IG1heF9hY3RpdmUsIC4uLik7CiMgNDM2ICIuL2luY2x1ZGUvbGludXgv d29ya3F1ZXVlLmgiCmV4dGVybiB2b2lkIGRlc3Ryb3lfd29ya3F1ZXVlKHN0cnVjdCB3b3JrcXVl dWVfc3RydWN0ICp3cSk7CgpzdHJ1Y3Qgd29ya3F1ZXVlX2F0dHJzICphbGxvY193b3JrcXVldWVf YXR0cnModm9pZCk7CnZvaWQgZnJlZV93b3JrcXVldWVfYXR0cnMoc3RydWN0IHdvcmtxdWV1ZV9h dHRycyAqYXR0cnMpOwppbnQgYXBwbHlfd29ya3F1ZXVlX2F0dHJzKHN0cnVjdCB3b3JrcXVldWVf c3RydWN0ICp3cSwKICAgICBjb25zdCBzdHJ1Y3Qgd29ya3F1ZXVlX2F0dHJzICphdHRycyk7Cmlu dCB3b3JrcXVldWVfc2V0X3VuYm91bmRfY3B1bWFzayhjcHVtYXNrX3Zhcl90IGNwdW1hc2spOwoK ZXh0ZXJuIGJvb2wgcXVldWVfd29ya19vbihpbnQgY3B1LCBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVj dCAqd3EsCiAgIHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CmV4dGVybiBib29sIHF1ZXVlX3dv cmtfbm9kZShpbnQgbm9kZSwgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLAogICAgICAgc3Ry dWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKZXh0ZXJuIGJvb2wgcXVldWVfZGVsYXllZF93b3JrX29u KGludCBjcHUsIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cSwKICAgc3RydWN0IGRlbGF5ZWRf d29yayAqd29yaywgdW5zaWduZWQgbG9uZyBkZWxheSk7CmV4dGVybiBib29sIG1vZF9kZWxheWVk X3dvcmtfb24oaW50IGNwdSwgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLAogICBzdHJ1Y3Qg ZGVsYXllZF93b3JrICpkd29yaywgdW5zaWduZWQgbG9uZyBkZWxheSk7CmV4dGVybiBib29sIHF1 ZXVlX3JjdV93b3JrKHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cSwgc3RydWN0IHJjdV93b3Jr ICpyd29yayk7CgpleHRlcm4gdm9pZCBmbHVzaF93b3JrcXVldWUoc3RydWN0IHdvcmtxdWV1ZV9z dHJ1Y3QgKndxKTsKZXh0ZXJuIHZvaWQgZHJhaW5fd29ya3F1ZXVlKHN0cnVjdCB3b3JrcXVldWVf c3RydWN0ICp3cSk7CgpleHRlcm4gaW50IHNjaGVkdWxlX29uX2VhY2hfY3B1KHdvcmtfZnVuY190 IGZ1bmMpOwoKaW50IGV4ZWN1dGVfaW5fcHJvY2Vzc19jb250ZXh0KHdvcmtfZnVuY190IGZuLCBz dHJ1Y3QgZXhlY3V0ZV93b3JrICopOwoKZXh0ZXJuIGJvb2wgZmx1c2hfd29yayhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspOwpleHRlcm4gYm9vbCBjYW5jZWxfd29ya19zeW5jKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yayk7CgpleHRlcm4gYm9vbCBmbHVzaF9kZWxheWVkX3dvcmsoc3RydWN0IGRl bGF5ZWRfd29yayAqZHdvcmspOwpleHRlcm4gYm9vbCBjYW5jZWxfZGVsYXllZF93b3JrKHN0cnVj dCBkZWxheWVkX3dvcmsgKmR3b3JrKTsKZXh0ZXJuIGJvb2wgY2FuY2VsX2RlbGF5ZWRfd29ya19z eW5jKHN0cnVjdCBkZWxheWVkX3dvcmsgKmR3b3JrKTsKCmV4dGVybiBib29sIGZsdXNoX3JjdV93 b3JrKHN0cnVjdCByY3Vfd29yayAqcndvcmspOwoKZXh0ZXJuIHZvaWQgd29ya3F1ZXVlX3NldF9t YXhfYWN0aXZlKHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cSwKICAgICAgICAgaW50IG1heF9h Y3RpdmUpOwpleHRlcm4gc3RydWN0IHdvcmtfc3RydWN0ICpjdXJyZW50X3dvcmsodm9pZCk7CmV4 dGVybiBib29sIGN1cnJlbnRfaXNfd29ya3F1ZXVlX3Jlc2N1ZXIodm9pZCk7CmV4dGVybiBib29s IHdvcmtxdWV1ZV9jb25nZXN0ZWQoaW50IGNwdSwgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndx KTsKZXh0ZXJuIHVuc2lnbmVkIGludCB3b3JrX2J1c3koc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAxLCAyKSkpIHZvaWQg c2V0X3dvcmtlcl9kZXNjKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKZXh0ZXJuIHZvaWQgcHJpbnRf d29ya2VyX2luZm8oY29uc3QgY2hhciAqbG9nX2x2bCwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNr KTsKZXh0ZXJuIHZvaWQgc2hvd193b3JrcXVldWVfc3RhdGUodm9pZCk7CmV4dGVybiB2b2lkIHdx X3dvcmtlcl9jb21tKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVjdCB0YXNrX3N0cnVjdCAq dGFzayk7CiMgNTA0ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcXVldWVfd29y ayhzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd3EsCiAgICAgICAgIHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKewogcmV0dXJuIHF1ZXVlX3dvcmtfb24oV09SS19DUFVfVU5CT1VORCwgd3EsIHdv cmspOwp9CiMgNTE4ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcXVldWVfZGVs YXllZF93b3JrKHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cSwKICAgICAgICAgIHN0cnVjdCBk ZWxheWVkX3dvcmsgKmR3b3JrLAogICAgICAgICAgdW5zaWduZWQgbG9uZyBkZWxheSkKewogcmV0 dXJuIHF1ZXVlX2RlbGF5ZWRfd29ya19vbihXT1JLX0NQVV9VTkJPVU5ELCB3cSwgZHdvcmssIGRl bGF5KTsKfQojIDUzMyAiLi9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIG1vZF9kZWxh eWVkX3dvcmsoc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLAogICAgICAgIHN0cnVjdCBkZWxh eWVkX3dvcmsgKmR3b3JrLAogICAgICAgIHVuc2lnbmVkIGxvbmcgZGVsYXkpCnsKIHJldHVybiBt b2RfZGVsYXllZF93b3JrX29uKFdPUktfQ1BVX1VOQk9VTkQsIHdxLCBkd29yaywgZGVsYXkpOwp9 CiMgNTQ3ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgc2NoZWR1bGVfd29ya19v bihpbnQgY3B1LCBzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCnsKIHJldHVybiBxdWV1ZV93b3Jr X29uKGNwdSwgc3lzdGVtX3dxLCB3b3JrKTsKfQojIDU2NiAiLi9pbmNsdWRlL2xpbnV4L3dvcmtx dWV1ZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIHNjaGVkdWxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQp7CiBy ZXR1cm4gcXVldWVfd29yayhzeXN0ZW1fd3EsIHdvcmspOwp9CiMgNTk1ICIuL2luY2x1ZGUvbGlu dXgvd29ya3F1ZXVlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgZmx1c2hfc2NoZWR1bGVkX3dvcmsodm9pZCkKewogZmx1c2hf d29ya3F1ZXVlKHN5c3RlbV93cSk7Cn0KIyA2MDkgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUu aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCBzY2hlZHVsZV9kZWxheWVkX3dvcmtfb24oaW50IGNwdSwgc3RydWN0IGRlbGF5ZWRf d29yayAqZHdvcmssCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGVsYXkpCnsKIHJldHVybiBxdWV1 ZV9kZWxheWVkX3dvcmtfb24oY3B1LCBzeXN0ZW1fd3EsIGR3b3JrLCBkZWxheSk7Cn0KIyA2MjMg Ii4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBzY2hlZHVsZV9kZWxheWVkX3dvcmso c3RydWN0IGRlbGF5ZWRfd29yayAqZHdvcmssCiAgICAgIHVuc2lnbmVkIGxvbmcgZGVsYXkpCnsK IHJldHVybiBxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCBkd29yaywgZGVsYXkpOwp9CiMg NjM5ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCmxvbmcgd29ya19vbl9jcHUoaW50IGNw dSwgbG9uZyAoKmZuKSh2b2lkICopLCB2b2lkICphcmcpOwpsb25nIHdvcmtfb25fY3B1X3NhZmUo aW50IGNwdSwgbG9uZyAoKmZuKSh2b2lkICopLCB2b2lkICphcmcpOwoKCgpleHRlcm4gdm9pZCBm cmVlemVfd29ya3F1ZXVlc19iZWdpbih2b2lkKTsKZXh0ZXJuIGJvb2wgZnJlZXplX3dvcmtxdWV1 ZXNfYnVzeSh2b2lkKTsKZXh0ZXJuIHZvaWQgdGhhd193b3JrcXVldWVzKHZvaWQpOwoKCgppbnQg d29ya3F1ZXVlX3N5c2ZzX3JlZ2lzdGVyKHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cSk7CiMg NjU5ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgd3Ffd2F0Y2hkb2dfdG91Y2go aW50IGNwdSkgeyB9CgoKCmludCB3b3JrcXVldWVfcHJlcGFyZV9jcHUodW5zaWduZWQgaW50IGNw dSk7CmludCB3b3JrcXVldWVfb25saW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKaW50IHdvcmtx dWV1ZV9vZmZsaW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKCgppbnQgX19hdHRyaWJ1dGVfXygo X19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgd29y a3F1ZXVlX2luaXRfZWFybHkodm9pZCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygi LmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSB3b3JrcXVldWVfaW5pdCh2 b2lkKTsKIyAxNyAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiIDIKCiMgMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9tbXUuaCIgMQoKCgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9tdXRleC5o IiAxCiMgMjEgIi4vaW5jbHVkZS9saW51eC9tdXRleC5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9k ZWJ1Z19sb2Nrcy5oIiAxCiMgOSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnX2xvY2tzLmgiCnN0cnVj dCB0YXNrX3N0cnVjdDsKCmV4dGVybiBpbnQgZGVidWdfbG9ja3MgX19hdHRyaWJ1dGVfXygoX19z ZWN0aW9uX18oIi5kYXRhLi5yZWFkX21vc3RseSIpKSk7CmV4dGVybiBpbnQgZGVidWdfbG9ja3Nf c2lsZW50IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkp OwoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGludCBfX2RlYnVnX2xvY2tzX29mZih2b2lkKQp7CiByZXR1cm4gKHsgdHlwZW9mKCZkZWJ1 Z19sb2NrcykgX19haV9wdHIgPSAoJmRlYnVnX2xvY2tzKTsga2FzYW5fY2hlY2tfd3JpdGUoX19h aV9wdHIsIHNpemVvZigqX19haV9wdHIpKTsgKHsgX190eXBlb2ZfXyAoKigoX19haV9wdHIpKSkg X19yZXQgPSAoKDApKTsgc3dpdGNoIChzaXplb2YoKigoX19haV9wdHIpKSkpIHsgY2FzZSAxOiBh c20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAiYiAlYjAsICUxXG4iIDogIitxIiAoX19yZXQpLCAiK20i ICgqKChfX2FpX3B0cikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSAyOiBhc20g dm9sYXRpbGUgKCIiICJ4Y2hnIiAidyAldzAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgq KChfX2FpX3B0cikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSA0OiBhc20gdm9s YXRpbGUgKCIiICJ4Y2hnIiAibCAlMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKF9f YWlfcHRyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGls ZSAoIiIgInhjaGciICJxICVxMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKF9fYWlf cHRyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBkZWZhdWx0OiBfX3hjaGdfd3Jvbmdf c2l6ZSgpOyB9IF9fcmV0OyB9KTsgfSk7Cn0KCgoKCmV4dGVybiBpbnQgZGVidWdfbG9ja3Nfb2Zm KHZvaWQpOwojIDQ5ICIuL2luY2x1ZGUvbGludXgvZGVidWdfbG9ja3MuaCIKc3RydWN0IHRhc2tf c3RydWN0OwoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBkZWJ1Z19zaG93X2FsbF9sb2Nrcyh2b2lkKQp7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg ZGVidWdfc2hvd19oZWxkX2xvY2tzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKewp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk CmRlYnVnX2NoZWNrX25vX2xvY2tzX2ZyZWVkKGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxv bmcgbGVuKQp7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQKZGVidWdfY2hlY2tfbm9fbG9ja3NfaGVsZCh2b2lkKQp7Cn0KIyAy MiAiLi9pbmNsdWRlL2xpbnV4L211dGV4LmgiIDIKCnN0cnVjdCB3d19hY3F1aXJlX2N0eDsKIyA1 MyAiLi9pbmNsdWRlL2xpbnV4L211dGV4LmgiCnN0cnVjdCBtdXRleCB7CiBhdG9taWNfbG9uZ190 IG93bmVyOwogc3BpbmxvY2tfdCB3YWl0X2xvY2s7Cgogc3RydWN0IG9wdGltaXN0aWNfc3Bpbl9x dWV1ZSBvc3E7Cgogc3RydWN0IGxpc3RfaGVhZCB3YWl0X2xpc3Q7CgoKCgoKCn07CgoKCgoKc3Ry dWN0IG11dGV4X3dhaXRlciB7CiBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiBzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRhc2s7CiBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKnd3X2N0eDsKCgoKfTsKIyA5MiAi Li9pbmNsdWRlL2xpbnV4L211dGV4LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbXV0ZXhfZGVzdHJveShzdHJ1Y3QgbXV0ZXgg KmxvY2spIHt9CiMgMTI4ICIuL2luY2x1ZGUvbGludXgvbXV0ZXguaCIKZXh0ZXJuIHZvaWQgX19t dXRleF9pbml0KHN0cnVjdCBtdXRleCAqbG9jaywgY29uc3QgY2hhciAqbmFtZSwKICAgIHN0cnVj dCBsb2NrX2NsYXNzX2tleSAqa2V5KTsKCgoKCgoKCmV4dGVybiBib29sIG11dGV4X2lzX2xvY2tl ZChzdHJ1Y3QgbXV0ZXggKmxvY2spOwojIDE2NSAiLi9pbmNsdWRlL2xpbnV4L211dGV4LmgiCmV4 dGVybiB2b2lkIG11dGV4X2xvY2soc3RydWN0IG11dGV4ICpsb2NrKTsKZXh0ZXJuIGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgbXV0ZXhfbG9ja19pbnRlcnJ1cHRp YmxlKHN0cnVjdCBtdXRleCAqbG9jayk7CmV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIG11dGV4X2xvY2tfa2lsbGFibGUoc3RydWN0IG11dGV4ICpsb2Nr KTsKZXh0ZXJuIHZvaWQgbXV0ZXhfbG9ja19pbyhzdHJ1Y3QgbXV0ZXggKmxvY2spOwojIDE4MyAi Li9pbmNsdWRlL2xpbnV4L211dGV4LmgiCmV4dGVybiBpbnQgbXV0ZXhfdHJ5bG9jayhzdHJ1Y3Qg bXV0ZXggKmxvY2spOwpleHRlcm4gdm9pZCBtdXRleF91bmxvY2soc3RydWN0IG11dGV4ICpsb2Nr KTsKCmV4dGVybiBpbnQgYXRvbWljX2RlY19hbmRfbXV0ZXhfbG9jayhhdG9taWNfdCAqY250LCBz dHJ1Y3QgbXV0ZXggKmxvY2spOwoKCgoKCmVudW0gbXV0ZXhfdHJ5bG9ja19yZWN1cnNpdmVfZW51 bSB7CiBNVVRFWF9UUllMT0NLX0ZBSUxFRCA9IDAsCiBNVVRFWF9UUllMT0NLX1NVQ0NFU1MgPSAx LAogTVVURVhfVFJZTE9DS19SRUNVUlNJVkUsCn07CiMgMjEwICIuL2luY2x1ZGUvbGludXgvbXV0 ZXguaCIKZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBlbnVt IG11dGV4X3RyeWxvY2tfcmVjdXJzaXZlX2VudW0KbXV0ZXhfdHJ5bG9ja19yZWN1cnNpdmUoc3Ry dWN0IG11dGV4ICpsb2NrKTsKIyA4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21tdS5oIiAyCgoK CgoKdHlwZWRlZiBzdHJ1Y3QgewoKCgoKIHU2NCBjdHhfaWQ7CiMgMjggIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vbW11LmgiCiBhdG9taWM2NF90IHRsYl9nZW47CgoKIHN0cnVjdCByd19zZW1hcGhv cmUgbGR0X3Vzcl9zZW07CiBzdHJ1Y3QgbGR0X3N0cnVjdCAqbGR0OwoKCgoKIHVuc2lnbmVkIHNo b3J0IGlhMzJfY29tcGF0OwoKCiBzdHJ1Y3QgbXV0ZXggbG9jazsKIHZvaWQgKnZkc287CiBjb25z dCBzdHJ1Y3QgdmRzb19pbWFnZSAqdmRzb19pbWFnZTsKCiBhdG9taWNfdCBwZXJmX3JkcG1jX2Fs bG93ZWQ7CgoKCgoKIHUxNiBwa2V5X2FsbG9jYXRpb25fbWFwOwogczE2IGV4ZWN1dGVfb25seV9w a2V5OwoKfSBtbV9jb250ZXh0X3Q7CgoKCgoKCgp2b2lkIGxlYXZlX21tKGludCBjcHUpOwojIDE5 ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIgMgoKCgoKCgoKc3RydWN0IGFkZHJlc3Nfc3Bh Y2U7CnN0cnVjdCBtZW1fY2dyb3VwOwojIDY4ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIK c3RydWN0IHBhZ2UgewogdW5zaWduZWQgbG9uZyBmbGFnczsKCgoKCgoKCiB1bmlvbiB7CiAgc3Ry dWN0IHsKCgoKCgogICBzdHJ1Y3QgbGlzdF9oZWFkIGxydTsKCiAgIHN0cnVjdCBhZGRyZXNzX3Nw YWNlICptYXBwaW5nOwogICB1bnNpZ25lZCBsb25nIGluZGV4OwoKCgoKCgogICB1bnNpZ25lZCBs b25nIHByaXZhdGU7CiAgfTsKICBzdHJ1Y3QgewoKCgoKICAgZG1hX2FkZHJfdCBkbWFfYWRkcjsK ICB9OwogIHN0cnVjdCB7CiAgIHVuaW9uIHsKICAgIHN0cnVjdCBsaXN0X2hlYWQgc2xhYl9saXN0 OwogICAgc3RydWN0IHsKICAgICBzdHJ1Y3QgcGFnZSAqbmV4dDsKCiAgICAgaW50IHBhZ2VzOwog ICAgIGludCBwb2JqZWN0czsKCgoKCiAgICB9OwogICB9OwogICBzdHJ1Y3Qga21lbV9jYWNoZSAq c2xhYl9jYWNoZTsKCiAgIHZvaWQgKmZyZWVsaXN0OwogICB1bmlvbiB7CiAgICB2b2lkICpzX21l bTsKICAgIHVuc2lnbmVkIGxvbmcgY291bnRlcnM7CiAgICBzdHJ1Y3QgewogICAgIHVuc2lnbmVk IGludXNlOjE2OwogICAgIHVuc2lnbmVkIG9iamVjdHM6MTU7CiAgICAgdW5zaWduZWQgZnJvemVu OjE7CiAgICB9OwogICB9OwogIH07CiAgc3RydWN0IHsKICAgdW5zaWduZWQgbG9uZyBjb21wb3Vu ZF9oZWFkOwoKCiAgIHVuc2lnbmVkIGNoYXIgY29tcG91bmRfZHRvcjsKICAgdW5zaWduZWQgY2hh ciBjb21wb3VuZF9vcmRlcjsKICAgYXRvbWljX3QgY29tcG91bmRfbWFwY291bnQ7CiAgfTsKICBz dHJ1Y3QgewogICB1bnNpZ25lZCBsb25nIF9jb21wb3VuZF9wYWRfMTsKICAgdW5zaWduZWQgbG9u ZyBfY29tcG91bmRfcGFkXzI7CgogICBzdHJ1Y3QgbGlzdF9oZWFkIGRlZmVycmVkX2xpc3Q7CiAg fTsKICBzdHJ1Y3QgewogICB1bnNpZ25lZCBsb25nIF9wdF9wYWRfMTsKICAgcGd0YWJsZV90IHBt ZF9odWdlX3B0ZTsKICAgdW5zaWduZWQgbG9uZyBfcHRfcGFkXzI7CiAgIHVuaW9uIHsKICAgIHN0 cnVjdCBtbV9zdHJ1Y3QgKnB0X21tOwogICAgYXRvbWljX3QgcHRfZnJhZ19yZWZjb3VudDsKICAg fTsKCgoKICAgc3BpbmxvY2tfdCBwdGw7CgogIH07CiAgc3RydWN0IHsKCiAgIHN0cnVjdCBkZXZf cGFnZW1hcCAqcGdtYXA7CiAgIHZvaWQgKnpvbmVfZGV2aWNlX2RhdGE7CiMgMTcyICIuL2luY2x1 ZGUvbGludXgvbW1fdHlwZXMuaCIKICB9OwoKCiAgc3RydWN0IGNhbGxiYWNrX2hlYWQgY2FsbGJh Y2tfaGVhZDsKIH07CgogdW5pb24gewoKCgoKICBhdG9taWNfdCBfbWFwY291bnQ7CgoKCgoKCgog IHVuc2lnbmVkIGludCBwYWdlX3R5cGU7CgogIHVuc2lnbmVkIGludCBhY3RpdmU7CiAgaW50IHVu aXRzOwogfTsKCgogYXRvbWljX3QgX3JlZmNvdW50OwoKCiBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVt X2Nncm91cDsKIyAyMjIgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgp9IDsKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGF0b21pY190 ICpjb21wb3VuZF9tYXBjb3VudF9wdHIoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKIHJldHVybiAmcGFn ZVsxXS5jb21wb3VuZF9tYXBjb3VudDsKfQojIDI0MCAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVz LmgiCnN0cnVjdCBwYWdlX2ZyYWdfY2FjaGUgewogdm9pZCAqIHZhOwoKIF9fdTE2IG9mZnNldDsK IF9fdTE2IHNpemU7CgoKCgoKCiB1bnNpZ25lZCBpbnQgcGFnZWNudF9iaWFzOwogYm9vbCBwZm1l bWFsbG9jOwp9OwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHZtX2ZsYWdzX3Q7CgoKCgoKCnN0cnVj dCB2bV9yZWdpb24gewogc3RydWN0IHJiX25vZGUgdm1fcmI7CiB2bV9mbGFnc190IHZtX2ZsYWdz OwogdW5zaWduZWQgbG9uZyB2bV9zdGFydDsKIHVuc2lnbmVkIGxvbmcgdm1fZW5kOwogdW5zaWdu ZWQgbG9uZyB2bV90b3A7CiB1bnNpZ25lZCBsb25nIHZtX3Bnb2ZmOwogc3RydWN0IGZpbGUgKnZt X2ZpbGU7CgogaW50IHZtX3VzYWdlOwogYm9vbCB2bV9pY2FjaGVfZmx1c2hlZCA6IDE7Cgp9Owoj IDI4MyAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiCnN0cnVjdCB2bV91c2VyZmF1bHRmZF9j dHgge307CiMgMjkyICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKc3RydWN0IHZtX2FyZWFf c3RydWN0IHsKCgogdW5zaWduZWQgbG9uZyB2bV9zdGFydDsKIHVuc2lnbmVkIGxvbmcgdm1fZW5k OwoKCgogc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bV9uZXh0LCAqdm1fcHJldjsKCiBzdHJ1Y3Qg cmJfbm9kZSB2bV9yYjsKCgoKCgoKCiB1bnNpZ25lZCBsb25nIHJiX3N1YnRyZWVfZ2FwOwoKCgog c3RydWN0IG1tX3N0cnVjdCAqdm1fbW07CgoKCgoKIHBncHJvdF90IHZtX3BhZ2VfcHJvdDsKIHVu c2lnbmVkIGxvbmcgdm1fZmxhZ3M7CgoKCgoKIHN0cnVjdCB7CiAgc3RydWN0IHJiX25vZGUgcmI7 CiAgdW5zaWduZWQgbG9uZyByYl9zdWJ0cmVlX2xhc3Q7CiB9IHNoYXJlZDsKCgoKCgoKCiBzdHJ1 Y3QgbGlzdF9oZWFkIGFub25fdm1hX2NoYWluOwoKIHN0cnVjdCBhbm9uX3ZtYSAqYW5vbl92bWE7 CgoKIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCAqdm1fb3BzOwoKCiB1bnNpZ25l ZCBsb25nIHZtX3Bnb2ZmOwoKIHN0cnVjdCBmaWxlICogdm1fZmlsZTsKIHZvaWQgKiB2bV9wcml2 YXRlX2RhdGE7CgoKIGF0b21pY19sb25nX3Qgc3dhcF9yZWFkYWhlYWRfaW5mbzsKCgoKCgoKCiBz dHJ1Y3Qgdm1fdXNlcmZhdWx0ZmRfY3R4IHZtX3VzZXJmYXVsdGZkX2N0eDsKfSBfX2F0dHJpYnV0 ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CgpzdHJ1Y3QgY29yZV90aHJlYWQgewogc3RydWN0 IHRhc2tfc3RydWN0ICp0YXNrOwogc3RydWN0IGNvcmVfdGhyZWFkICpuZXh0Owp9OwoKc3RydWN0 IGNvcmVfc3RhdGUgewogYXRvbWljX3QgbnJfdGhyZWFkczsKIHN0cnVjdCBjb3JlX3RocmVhZCBk dW1wZXI7CiBzdHJ1Y3QgY29tcGxldGlvbiBzdGFydHVwOwp9OwoKc3RydWN0IGtpb2N0eF90YWJs ZTsKc3RydWN0IG1tX3N0cnVjdCB7CiBzdHJ1Y3QgewogIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq bW1hcDsKICBzdHJ1Y3QgcmJfcm9vdCBtbV9yYjsKICB1NjQgdm1hY2FjaGVfc2VxbnVtOwoKICB1 bnNpZ25lZCBsb25nICgqZ2V0X3VubWFwcGVkX2FyZWEpIChzdHJ1Y3QgZmlsZSAqZmlscCwKICAg IHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBsZW4sCiAgICB1bnNpZ25lZCBsb25n IHBnb2ZmLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKCiAgdW5zaWduZWQgbG9uZyBtbWFwX2Jhc2U7 CiAgdW5zaWduZWQgbG9uZyBtbWFwX2xlZ2FjeV9iYXNlOwoKCgoKCiAgdW5zaWduZWQgbG9uZyB0 YXNrX3NpemU7CiAgdW5zaWduZWQgbG9uZyBoaWdoZXN0X3ZtX2VuZDsKICBwZ2RfdCAqIHBnZDsK IyA0MDMgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgogIGF0b21pY190IG1lbWJhcnJpZXJf c3RhdGU7CiMgNDE1ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKICBhdG9taWNfdCBtbV91 c2VyczsKIyA0MjQgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgogIGF0b21pY190IG1tX2Nv dW50OwoKCiAgYXRvbWljX2xvbmdfdCBwZ3RhYmxlc19ieXRlczsKCiAgaW50IG1hcF9jb3VudDsK CiAgc3BpbmxvY2tfdCBwYWdlX3RhYmxlX2xvY2s7CgoKICBzdHJ1Y3Qgcndfc2VtYXBob3JlIG1t YXBfc2VtOwoKICBzdHJ1Y3QgbGlzdF9oZWFkIG1tbGlzdDsKCgoKCgoKICB1bnNpZ25lZCBsb25n IGhpd2F0ZXJfcnNzOwogIHVuc2lnbmVkIGxvbmcgaGl3YXRlcl92bTsKCiAgdW5zaWduZWQgbG9u ZyB0b3RhbF92bTsKICB1bnNpZ25lZCBsb25nIGxvY2tlZF92bTsKICBhdG9taWM2NF90IHBpbm5l ZF92bTsKICB1bnNpZ25lZCBsb25nIGRhdGFfdm07CiAgdW5zaWduZWQgbG9uZyBleGVjX3ZtOwog IHVuc2lnbmVkIGxvbmcgc3RhY2tfdm07CiAgdW5zaWduZWQgbG9uZyBkZWZfZmxhZ3M7CgogIHNw aW5sb2NrX3QgYXJnX2xvY2s7CiAgdW5zaWduZWQgbG9uZyBzdGFydF9jb2RlLCBlbmRfY29kZSwg c3RhcnRfZGF0YSwgZW5kX2RhdGE7CiAgdW5zaWduZWQgbG9uZyBzdGFydF9icmssIGJyaywgc3Rh cnRfc3RhY2s7CiAgdW5zaWduZWQgbG9uZyBhcmdfc3RhcnQsIGFyZ19lbmQsIGVudl9zdGFydCwg ZW52X2VuZDsKCiAgdW5zaWduZWQgbG9uZyBzYXZlZF9hdXh2WygyKigxICsgMjAgKyAxKSldOwoK CgoKCiAgc3RydWN0IG1tX3Jzc19zdGF0IHJzc19zdGF0OwoKICBzdHJ1Y3QgbGludXhfYmluZm10 ICpiaW5mbXQ7CgoKICBtbV9jb250ZXh0X3QgY29udGV4dDsKCiAgdW5zaWduZWQgbG9uZyBmbGFn czsKCiAgc3RydWN0IGNvcmVfc3RhdGUgKmNvcmVfc3RhdGU7CgoKICBzcGlubG9ja190IGlvY3R4 X2xvY2s7CiAgc3RydWN0IGtpb2N0eF90YWJsZSAqaW9jdHhfdGFibGU7CiMgNDkxICIuL2luY2x1 ZGUvbGludXgvbW1fdHlwZXMuaCIKICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm93bmVyOwoKICBzdHJ1 Y3QgdXNlcl9uYW1lc3BhY2UgKnVzZXJfbnM7CgoKICBzdHJ1Y3QgZmlsZSAqZXhlX2ZpbGU7Cgog IHN0cnVjdCBtbXVfbm90aWZpZXJfc3Vic2NyaXB0aW9ucyAqbm90aWZpZXJfc3Vic2NyaXB0aW9u czsKIyA1MjIgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgogIGF0b21pY190IHRsYl9mbHVz aF9wZW5kaW5nOwoKCiAgYm9vbCB0bGJfZmx1c2hfYmF0Y2hlZDsKCiAgc3RydWN0IHVwcm9iZXNf c3RhdGUgdXByb2Jlc19zdGF0ZTsKCiAgYXRvbWljX2xvbmdfdCBodWdldGxiX3VzYWdlOwoKICBz dHJ1Y3Qgd29ya19zdHJ1Y3QgYXN5bmNfcHV0X3dvcms7CiB9IF9fYXR0cmlidXRlX18oKF9fZGVz aWduYXRlZF9pbml0X18pKTsKCgoKCgogdW5zaWduZWQgbG9uZyBjcHVfYml0bWFwW107Cn07Cgpl eHRlcm4gc3RydWN0IG1tX3N0cnVjdCBpbml0X21tOwoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbW1faW5pdF9jcHVtYXNrKHN0 cnVjdCBtbV9zdHJ1Y3QgKm1tKQp7CiB1bnNpZ25lZCBsb25nIGNwdV9iaXRtYXAgPSAodW5zaWdu ZWQgbG9uZyltbTsKCiBjcHVfYml0bWFwICs9IF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgbW1f c3RydWN0LCBjcHVfYml0bWFwKTsKIGNwdW1hc2tfY2xlYXIoKHN0cnVjdCBjcHVtYXNrICopY3B1 X2JpdG1hcCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBjcHVtYXNrX3QgKm1tX2NwdW1hc2soc3RydWN0IG1tX3N0cnVjdCAqbW0p CnsKIHJldHVybiAoc3RydWN0IGNwdW1hc2sgKikmbW0tPmNwdV9iaXRtYXA7Cn0KCnN0cnVjdCBt bXVfZ2F0aGVyOwpleHRlcm4gdm9pZCB0bGJfZ2F0aGVyX21tdShzdHJ1Y3QgbW11X2dhdGhlciAq dGxiLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2ln bmVkIGxvbmcgZW5kKTsKZXh0ZXJuIHZvaWQgdGxiX2ZpbmlzaF9tbXUoc3RydWN0IG1tdV9nYXRo ZXIgKnRsYiwKICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgaW5pdF90bGJfZmx1c2hfcGVuZGluZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSkKewogYXRvbWlj X3NldCgmbW0tPnRsYl9mbHVzaF9wZW5kaW5nLCAwKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbmNfdGxiX2ZsdXNoX3Bl bmRpbmcoc3RydWN0IG1tX3N0cnVjdCAqbW0pCnsKIGF0b21pY19pbmMoJm1tLT50bGJfZmx1c2hf cGVuZGluZyk7CiMgNjA4ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZWNf dGxiX2ZsdXNoX3BlbmRpbmcoc3RydWN0IG1tX3N0cnVjdCAqbW0pCnsKIyA2MjAgIi4vaW5jbHVk ZS9saW51eC9tbV90eXBlcy5oIgogYXRvbWljX2RlYygmbW0tPnRsYl9mbHVzaF9wZW5kaW5nKTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCBtbV90bGJfZmx1c2hfcGVuZGluZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSkKewojIDYz MyAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiCiByZXR1cm4gYXRvbWljX3JlYWQoJm1tLT50 bGJfZmx1c2hfcGVuZGluZyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgbW1fdGxiX2ZsdXNoX25lc3RlZChzdHJ1Y3QgbW1f c3RydWN0ICptbSkKewoKCgoKCgoKIHJldHVybiBhdG9taWNfcmVhZCgmbW0tPnRsYl9mbHVzaF9w ZW5kaW5nKSA+IDE7Cn0KCnN0cnVjdCB2bV9mYXVsdDsKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBp bnQgdm1fZmF1bHRfdDsKIyA2ODIgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgplbnVtIHZt X2ZhdWx0X3JlYXNvbiB7CiBWTV9GQVVMVF9PT00gPSAoIHZtX2ZhdWx0X3QpMHgwMDAwMDEsCiBW TV9GQVVMVF9TSUdCVVMgPSAoIHZtX2ZhdWx0X3QpMHgwMDAwMDIsCiBWTV9GQVVMVF9NQUpPUiA9 ICggdm1fZmF1bHRfdCkweDAwMDAwNCwKIFZNX0ZBVUxUX1dSSVRFID0gKCB2bV9mYXVsdF90KTB4 MDAwMDA4LAogVk1fRkFVTFRfSFdQT0lTT04gPSAoIHZtX2ZhdWx0X3QpMHgwMDAwMTAsCiBWTV9G QVVMVF9IV1BPSVNPTl9MQVJHRSA9ICggdm1fZmF1bHRfdCkweDAwMDAyMCwKIFZNX0ZBVUxUX1NJ R1NFR1YgPSAoIHZtX2ZhdWx0X3QpMHgwMDAwNDAsCiBWTV9GQVVMVF9OT1BBR0UgPSAoIHZtX2Zh dWx0X3QpMHgwMDAxMDAsCiBWTV9GQVVMVF9MT0NLRUQgPSAoIHZtX2ZhdWx0X3QpMHgwMDAyMDAs CiBWTV9GQVVMVF9SRVRSWSA9ICggdm1fZmF1bHRfdCkweDAwMDQwMCwKIFZNX0ZBVUxUX0ZBTExC QUNLID0gKCB2bV9mYXVsdF90KTB4MDAwODAwLAogVk1fRkFVTFRfRE9ORV9DT1cgPSAoIHZtX2Zh dWx0X3QpMHgwMDEwMDAsCiBWTV9GQVVMVF9ORUVERFNZTkMgPSAoIHZtX2ZhdWx0X3QpMHgwMDIw MDAsCiBWTV9GQVVMVF9ISU5ERVhfTUFTSyA9ICggdm1fZmF1bHRfdCkweDBmMDAwMCwKfTsKIyA3 MjIgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgpzdHJ1Y3Qgdm1fc3BlY2lhbF9tYXBwaW5n IHsKIGNvbnN0IGNoYXIgKm5hbWU7CgoKCgoKCgogc3RydWN0IHBhZ2UgKipwYWdlczsKCgoKCgog dm1fZmF1bHRfdCAoKmZhdWx0KShjb25zdCBzdHJ1Y3Qgdm1fc3BlY2lhbF9tYXBwaW5nICpzbSwK ICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogICAgc3RydWN0IHZtX2ZhdWx0ICp2bWYp OwoKIGludCAoKm1yZW1hcCkoY29uc3Qgc3RydWN0IHZtX3NwZWNpYWxfbWFwcGluZyAqc20sCiAg ICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKm5ld192bWEpOwp9OwoKZW51bSB0bGJfZmx1c2hf cmVhc29uIHsKIFRMQl9GTFVTSF9PTl9UQVNLX1NXSVRDSCwKIFRMQl9SRU1PVEVfU0hPT1RET1dO LAogVExCX0xPQ0FMX1NIT09URE9XTiwKIFRMQl9MT0NBTF9NTV9TSE9PVERPV04sCiBUTEJfUkVN T1RFX1NFTkRfSVBJLAogTlJfVExCX0ZMVVNIX1JFQVNPTlMsCn07CgoKCgoKdHlwZWRlZiBzdHJ1 Y3QgewogdW5zaWduZWQgbG9uZyB2YWw7Cn0gc3dwX2VudHJ5X3Q7CiMgMjIgIi4vaW5jbHVkZS9s aW51eC9tbXpvbmUuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgiIDEKIyA5 OSAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCIKZW51bSBwYWdlZmxhZ3MgewogUEdfbG9j a2VkLAogUEdfcmVmZXJlbmNlZCwKIFBHX3VwdG9kYXRlLAogUEdfZGlydHksCiBQR19scnUsCiBQ R19hY3RpdmUsCiBQR193b3JraW5nc2V0LAogUEdfd2FpdGVycywKIFBHX2Vycm9yLAogUEdfc2xh YiwKIFBHX293bmVyX3ByaXZfMSwKIFBHX2FyY2hfMSwKIFBHX3Jlc2VydmVkLAogUEdfcHJpdmF0 ZSwKIFBHX3ByaXZhdGVfMiwKIFBHX3dyaXRlYmFjaywKIFBHX2hlYWQsCiBQR19tYXBwZWR0b2Rp c2ssCiBQR19yZWNsYWltLAogUEdfc3dhcGJhY2tlZCwKIFBHX3VuZXZpY3RhYmxlLAoKIFBHX21s b2NrZWQsCgoKIFBHX3VuY2FjaGVkLAojIDEzNCAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3Mu aCIKIF9fTlJfUEFHRUZMQUdTLAoKCiBQR19jaGVja2VkID0gUEdfb3duZXJfcHJpdl8xLAoKCiBQ R19zd2FwY2FjaGUgPSBQR19vd25lcl9wcml2XzEsCgoKCgoKIFBHX2ZzY2FjaGUgPSBQR19wcml2 YXRlXzIsCgoKCiBQR19waW5uZWQgPSBQR19vd25lcl9wcml2XzEsCgogUEdfc2F2ZXBpbm5lZCA9 IFBHX2RpcnR5LAoKIFBHX2ZvcmVpZ24gPSBQR19vd25lcl9wcml2XzEsCgogUEdfeGVuX3JlbWFw cGVkID0gUEdfb3duZXJfcHJpdl8xLAoKCiBQR19zbG9iX2ZyZWUgPSBQR19wcml2YXRlLAoKCiBQ R19kb3VibGVfbWFwID0gUEdfcHJpdmF0ZV8yLAoKCiBQR19pc29sYXRlZCA9IFBHX3JlY2xhaW0s Cn07CgoKCnN0cnVjdCBwYWdlOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHBhZ2UgKmNvbXBvdW5kX2hlYWQoc3RydWN0IHBh Z2UgKnBhZ2UpCnsKIHVuc2lnbmVkIGxvbmcgaGVhZCA9ICh7IHVuaW9uIHsgdHlwZW9mKHBhZ2Ut PmNvbXBvdW5kX2hlYWQpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRf b25jZV9zaXplKCYocGFnZS0+Y29tcG91bmRfaGVhZCksIF9fdS5fX2MsIHNpemVvZihwYWdlLT5j b21wb3VuZF9oZWFkKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYocGFnZS0+Y29t cG91bmRfaGVhZCksIF9fdS5fX2MsIHNpemVvZihwYWdlLT5jb21wb3VuZF9oZWFkKSk7IGRvIHsg fSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7CgogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoaGVh ZCAmIDEpLCAwKSkKICByZXR1cm4gKHN0cnVjdCBwYWdlICopIChoZWFkIC0gMSk7CiByZXR1cm4g cGFnZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVRhaWwo c3RydWN0IHBhZ2UgKnBhZ2UpCnsKIHJldHVybiAoeyB1bmlvbiB7IHR5cGVvZihwYWdlLT5jb21w b3VuZF9oZWFkKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vf c2l6ZSgmKHBhZ2UtPmNvbXBvdW5kX2hlYWQpLCBfX3UuX19jLCBzaXplb2YocGFnZS0+Y29tcG91 bmRfaGVhZCkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKHBhZ2UtPmNvbXBvdW5k X2hlYWQpLCBfX3UuX19jLCBzaXplb2YocGFnZS0+Y29tcG91bmRfaGVhZCkpOyBkbyB7IH0gd2hp bGUgKDApOyBfX3UuX192YWw7IH0pICYgMTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSBpbnQgUGFnZUNvbXBvdW5kKHN0cnVjdCBwYWdlICpwYWdlKQp7CiByZXR1cm4gdGVz dF9iaXQoUEdfaGVhZCwgJnBhZ2UtPmZsYWdzKSB8fCBQYWdlVGFpbChwYWdlKTsKfQoKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBQ YWdlUG9pc29uZWQoY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UpCnsKIHJldHVybiBwYWdlLT5mbGFn cyA9PSAtMWw7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcGFnZV9pbml0X3BvaXNvbihzdHJ1Y3QgcGFnZSAqcGFnZSwg c2l6ZV90IHNpemUpCnsKfQojIDMxMiAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUxvY2tlZChzdHJ1Y3QgcGFn ZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfbG9ja2VkLCAmKHsgKCh2b2lkKShzaXplb2Yo KCBsb25nKSgwICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25n KShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBh Z2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IHZvaWQgX19TZXRQYWdlTG9ja2VkKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fc2V0X2JpdChQR19s b2NrZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkp OyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBh Z2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZUxvY2tlZChzdHJ1Y3Qg cGFnZSAqcGFnZSkgeyBfX2NsZWFyX2JpdChQR19sb2NrZWQsICYoeyAoKHZvaWQpKHNpemVvZigo IGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFn ZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg aW50IFBhZ2VXYWl0ZXJzKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR193 YWl0ZXJzLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlVGFpbChwYWdlKSkpKSk7ICh7 ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7 IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNl dFBhZ2VXYWl0ZXJzKHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQoUEdfd2FpdGVycywgJih7 ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNp emVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3Mp OyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVhclBhZ2VXYWl0 ZXJzKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR193YWl0ZXJzLCAmKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKShQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCgg bG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQYWdlV2FpdGVycyhz dHJ1Y3QgcGFnZSAqcGFnZSkgeyBfX2NsZWFyX2JpdChQR193YWl0ZXJzLCAmKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9u ZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0Kc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUVycm9yKHN0cnVjdCBwYWdlICpw YWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19lcnJvciwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9u ZykoMCAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFn ZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsg fSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lk IFNldFBhZ2VFcnJvcihzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX2Vycm9yLCAmKHsg KCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBj b21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlRXJyb3Ioc3RydWN0IHBhZ2UgKnBhZ2UpIHsg Y2xlYXJfYml0KFBHX2Vycm9yLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VU YWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29t cG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdz KTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdl RXJyb3Ioc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19l cnJvciwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7 ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFn ZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0Kc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVJlZmVyZW5jZWQoc3RydWN0IHBhZ2Ug KnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3JlZmVyZW5jZWQsICYoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5k X2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKSB2b2lkIFNldFBhZ2VSZWZlcmVuY2VkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQo UEdfcmVmZXJlbmNlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNv bXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsg fSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlUmVmZXJl bmNlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfcmVmZXJlbmNlZCwgJih7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkp KTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfQogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZVJlZmVyZW5jZWQoc3RydWN0IHBhZ2Ug KnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19yZWZlcmVuY2VkLCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkp OyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlUmVmZXJlbmNlZChzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyBfX3NldF9iaXQoUEdfcmVmZXJlbmNlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko UGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdl KTsgfSktPmZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQ YWdlRGlydHkoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX2RpcnR5LCAm KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdl KSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlRGlydHkoc3RydWN0IHBhZ2UgKnBhZ2Up IHsgc2V0X2JpdChQR19kaXJ0eSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNv bmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZs YWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdl RGlydHkoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX2RpcnR5LCAmKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBj b21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgaW50IFRlc3RTZXRQYWdlRGlydHkoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0 dXJuIHRlc3RfYW5kX3NldF9iaXQoUEdfZGlydHksICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFn ZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQg VGVzdENsZWFyUGFnZURpcnR5KHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2FuZF9j bGVhcl9iaXQoUEdfZGlydHksICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25l ZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFn cyk7IH0KIHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFn ZURpcnR5KHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX2RpcnR5LCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkp OyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgaW50IFBhZ2VMUlUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRl c3RfYml0KFBHX2xydSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNv bXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsg fSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZUxSVShzdHJ1 Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX2xydSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9u ZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChw YWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgQ2xlYXJQYWdlTFJVKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR19scnUsICYo eyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2Up KSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQYWdlTFJVKHN0cnVjdCBwYWdlICpwYWdl KSB7IF9fY2xlYXJfYml0KFBHX2xydSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSkt PmZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlQWN0 aXZlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19hY3RpdmUsICYoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkp KSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VBY3RpdmUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsg c2V0X2JpdChQR19hY3RpdmUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25l ZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZUFj dGl2ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfYWN0aXZlLCAmKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBj b21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZUFjdGl2ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBf X2NsZWFyX2JpdChQR19hY3RpdmUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lz b25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5m bGFncyk7IH0KIHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFRlc3RDbGVh clBhZ2VBY3RpdmUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2Jp dChQR19hY3RpdmUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21w b3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0K c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVdvcmtpbmdzZXQoc3Ry dWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3dvcmtpbmdzZXQsICYoeyAoKHZv aWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7 IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VXb3JraW5nc2V0KHN0cnVjdCBwYWdlICpwYWdlKSB7 IHNldF9iaXQoUEdfd29ya2luZ3NldCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSkt PmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQ YWdlV29ya2luZ3NldChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfd29ya2luZ3Nl dCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQo cGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfQogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZVdvcmtpbmdzZXQoc3Ry dWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR193b3JraW5nc2V0 LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChw YWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9CnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VTbGFiKHN0cnVjdCBwYWdlICpwYWdlKSB7 IHJldHVybiB0ZXN0X2JpdChQR19zbGFiLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgwICYm IFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29u ZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSkt PmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQ YWdlU2xhYihzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBfX3NldF9iaXQoUEdfc2xhYiwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91 bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQYWdlU2xhYihzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBfX2Ns ZWFyX2JpdChQR19zbGFiLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWls KHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91 bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsg fQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlU2xvYkZyZWUoc3Ry dWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3Nsb2JfZnJlZSwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91 bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkIF9fU2V0UGFnZVNsb2JGcmVlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9f c2V0X2JpdChQR19zbG9iX2ZyZWUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFn ZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChj b21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+Zmxh Z3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFn ZVNsb2JGcmVlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX3Nsb2JfZnJlZSwg Jih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkp KTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0Kc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUNoZWNrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsg cmV0dXJuIHRlc3RfYml0KFBHX2NoZWNrZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAg JiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZUNoZWNrZWQoc3RydWN0IHBhZ2UgKnBh Z2UpIHsgc2V0X2JpdChQR19jaGVja2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZUNoZWNrZWQoc3RydWN0IHBhZ2UgKnBh Z2UpIHsgY2xlYXJfYml0KFBHX2NoZWNrZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEg JiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfQoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VQaW5uZWQoc3RydWN0IHBhZ2UgKnBhZ2Up IHsgcmV0dXJuIHRlc3RfYml0KFBHX3Bpbm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko MCAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBh Z2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlUGlubmVkKHN0cnVjdCBwYWdlICpw YWdlKSB7IHNldF9iaXQoUEdfcGlubmVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyBjbGVhcl9iaXQoUEdfcGlubmVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0KIHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFRlc3RTZXRQYWdlUGlubmVkKHN0cnVjdCBwYWdlICpw YWdlKSB7IHJldHVybiB0ZXN0X2FuZF9zZXRfYml0KFBHX3Bpbm5lZCwgJih7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFRlc3RDbGVhclBhZ2VQaW5u ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19waW5u ZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkp KTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdl OyB9KTsgfSktPmZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBQYWdlU2F2ZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdf c2F2ZXBpbm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlQ29tcG91bmQo cGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkp KSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdm9pZCBTZXRQYWdlU2F2ZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0 KFBHX3NhdmVwaW5uZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBv dW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFn ZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlU2F2ZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBj bGVhcl9iaXQoUEdfc2F2ZXBpbm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQ YWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lz b25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9OwpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlRm9yZWlnbihzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBy ZXR1cm4gdGVzdF9iaXQoUEdfZm9yZWlnbiwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAm JiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQ b2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlRm9yZWlnbihzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyBzZXRfYml0KFBHX2ZvcmVpZ24sICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYg UGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9p c29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlRm9yZWlnbihzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyBjbGVhcl9iaXQoUEdfZm9yZWlnbiwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAm JiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQ b2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9OwpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlWGVuUmVtYXBwZWQoc3RydWN0IHBhZ2UgKnBh Z2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3hlbl9yZW1hcHBlZCwgJih7ICgodm9pZCkoc2l6ZW9m KCggbG9uZykoMCAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigo IGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlWGVuUmVtYXBwZWQo c3RydWN0IHBhZ2UgKnBhZ2UpIHsgc2V0X2JpdChQR194ZW5fcmVtYXBwZWQsICYoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdz KTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlWGVu UmVtYXBwZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3hlbl9yZW1hcHBlZCwg Jih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAo eyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0p OyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBU ZXN0Q2xlYXJQYWdlWGVuUmVtYXBwZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3Rf YW5kX2NsZWFyX2JpdChQR194ZW5fcmVtYXBwZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVJlc2VydmVkKHN0cnVjdCBwYWdlICpw YWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19yZXNlcnZlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCgg bG9uZykoMCAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxv bmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlUmVzZXJ2ZWQoc3RydWN0 IHBhZ2UgKnBhZ2UpIHsgc2V0X2JpdChQR19yZXNlcnZlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCgg bG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxv bmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVhclBhZ2VSZXNlcnZlZChzdHJ1 Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfcmVzZXJ2ZWQsICYoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2Yo KCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfQog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQYWdlUmVzZXJ2 ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQoUEdfcmVzZXJ2ZWQsICYoeyAoKHZv aWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZs YWdzKTsgfQogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fU2V0UGFn ZVJlc2VydmVkKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fc2V0X2JpdChQR19yZXNlcnZlZCwgJih7 ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9 KS0+ZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VT d2FwQmFja2VkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19zd2FwYmFj a2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgwICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsg KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdl KSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZVN3YXBCYWNrZWQoc3RydWN0IHBh Z2UgKnBhZ2UpIHsgc2V0X2JpdChQR19zd2FwYmFja2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBs b25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2Up OyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgQ2xlYXJQYWdlU3dhcEJhY2tlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdf c3dhcGJhY2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdl KSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hl YWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KIHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZVN3YXBCYWNr ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQoUEdfc3dhcGJhY2tlZCwgJih7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29t cG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KIHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdm9pZCBfX1NldFBhZ2VTd2FwQmFja2VkKHN0cnVjdCBwYWdlICpwYWdl KSB7IF9fc2V0X2JpdChQR19zd2FwYmFja2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgx ICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9p c29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsg fSktPmZsYWdzKTsgfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBQYWdlUHJpdmF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfcHJp dmF0ZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsg cGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgU2V0UGFnZVByaXZhdGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgc2V0X2JpdChQR19wcml2YXRl LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdl OyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBD bGVhclBhZ2VQcml2YXRlKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR19wcml2YXRl LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdl OyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBf X1NldFBhZ2VQcml2YXRlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fc2V0X2JpdChQR19wcml2YXRl LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdl OyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg X19DbGVhclBhZ2VQcml2YXRlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX3By aXZhdGUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7 IHBhZ2U7IH0pLT5mbGFncyk7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBp bnQgUGFnZVByaXZhdGUyKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19w cml2YXRlXzIsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkp KSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIFNldFBhZ2VQcml2YXRlMihzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3By aXZhdGVfMiwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkp KTsgcGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IHZvaWQgQ2xlYXJQYWdlUHJpdmF0ZTIoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBH X3ByaXZhdGVfMiwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2Up KSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIGludCBUZXN0U2V0UGFnZVByaXZhdGUyKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0 ZXN0X2FuZF9zZXRfYml0KFBHX3ByaXZhdGVfMiwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko UGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlUHJpdmF0ZTIoc3RydWN0IHBh Z2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19wcml2YXRlXzIsICYoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pLT5m bGFncyk7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZU93bmVy UHJpdjEoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX293bmVyX3ByaXZf MSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFn ZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg U2V0UGFnZU93bmVyUHJpdjEoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgc2V0X2JpdChQR19vd25lcl9w cml2XzEsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7 IHBhZ2U7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2 b2lkIENsZWFyUGFnZU93bmVyUHJpdjEoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBH X293bmVyX3ByaXZfMSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBh Z2UpKSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfQogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZU93bmVyUHJpdjEoc3RydWN0IHBhZ2UgKnBhZ2UpIHsg cmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19vd25lcl9wcml2XzEsICYoeyAoKHZvaWQpKHNp emVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0K CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlV3JpdGViYWNr KHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR193cml0ZWJhY2ssICYoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKDAgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNv bXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBUZXN0U2V0UGFnZVdyaXRlYmFjayhzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyByZXR1cm4gdGVzdF9hbmRfc2V0X2JpdChQR193cml0ZWJhY2ssICYoeyAoKHZvaWQpKHNp emVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigo IGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hl YWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgaW50IFRlc3RDbGVhclBhZ2VXcml0ZWJhY2soc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0 dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR193cml0ZWJhY2ssICYoeyAoKHZvaWQpKHNpemVvZigo IGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFn ZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg aW50IFBhZ2VNYXBwZWRUb0Rpc2soc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0 KFBHX21hcHBlZHRvZGlzaywgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFp bChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBv dW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7 IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VNYXBwZWRU b0Rpc2soc3RydWN0IHBhZ2UgKnBhZ2UpIHsgc2V0X2JpdChQR19tYXBwZWR0b2Rpc2ssICYoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNv bXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdm9pZCBDbGVhclBhZ2VNYXBwZWRUb0Rpc2soc3RydWN0IHBhZ2UgKnBh Z2UpIHsgY2xlYXJfYml0KFBHX21hcHBlZHRvZGlzaywgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9u ZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFn ZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsg fSk7IH0pLT5mbGFncyk7IH0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBQYWdlUmVjbGFpbShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfcmVj bGFpbSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFpbChwYWdlKSkpKSk7 ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFn ZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VSZWNsYWltKHN0cnVjdCBwYWdl ICpwYWdlKSB7IHNldF9iaXQoUEdfcmVjbGFpbSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko MSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7 IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENs ZWFyUGFnZVJlY2xhaW0oc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3JlY2xhaW0s ICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkp KSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlUmVjbGFpbShzdHJ1Y3QgcGFn ZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX3JlY2xhaW0sICYoeyAoKHZv aWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNp emVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBv dW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgaW50IFBhZ2VSZWFkYWhlYWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJu IHRlc3RfYml0KFBHX3JlY2xhaW0sICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAgJiYgUGFn ZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29u ZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZVJlYWRhaGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSkg eyBzZXRfYml0KFBHX3JlY2xhaW0sICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFn ZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29u ZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlUmVhZGFoZWFkKHN0cnVjdCBwYWdlICpwYWdl KSB7IGNsZWFyX2JpdChQR19yZWNsYWltLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0KIHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFRlc3RDbGVhclBhZ2VSZWFkYWhlYWQoc3RydWN0IHBh Z2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19yZWNsYWltLCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5m bGFncyk7IH0KIyAzNzYgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBQYWdlSGln aE1lbShjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gMDsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIFNldFBhZ2VI aWdoTWVtKHN0cnVjdCBwYWdlICpwYWdlKSB7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBDbGVhclBhZ2VIaWdoTWVtKHN0cnVj dCBwYWdlICpwYWdlKSB7IH0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBp bnQgUGFnZVN3YXBDYWNoZShzdHJ1Y3QgcGFnZSAqcGFnZSkKewoKIHBhZ2UgPSBjb21wb3VuZF9o ZWFkKHBhZ2UpOwoKIHJldHVybiBQYWdlU3dhcEJhY2tlZChwYWdlKSAmJiB0ZXN0X2JpdChQR19z d2FwY2FjaGUsICZwYWdlLT5mbGFncyk7Cgp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdm9pZCBTZXRQYWdlU3dhcENhY2hlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQo UEdfc3dhcGNhY2hlLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBh Z2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRf aGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlU3dhcENhY2hl KHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR19zd2FwY2FjaGUsICYoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5k X2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIGludCBQYWdlVW5ldmljdGFibGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0 dXJuIHRlc3RfYml0KFBHX3VuZXZpY3RhYmxlLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2Up OyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBT ZXRQYWdlVW5ldmljdGFibGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgc2V0X2JpdChQR191bmV2aWN0 YWJsZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hl YWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlVW5ldmljdGFibGUoc3Ry dWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3VuZXZpY3RhYmxlLCAmKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21w b3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIHZvaWQgX19DbGVhclBhZ2VVbmV2aWN0YWJsZShzdHJ1Y3QgcGFnZSAqcGFnZSkg eyBfX2NsZWFyX2JpdChQR191bmV2aWN0YWJsZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko UGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdl KTsgfSktPmZsYWdzKTsgfQogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQg VGVzdENsZWFyUGFnZVVuZXZpY3RhYmxlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0 X2FuZF9jbGVhcl9iaXQoUEdfdW5ldmljdGFibGUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFn ZSk7IH0pLT5mbGFncyk7IH0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBQYWdlTWxvY2tlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfbWxv Y2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFpbChwYWdlKSkpKSk7 ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFn ZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VNbG9ja2VkKHN0cnVjdCBwYWdl ICpwYWdlKSB7IHNldF9iaXQoUEdfbWxvY2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko MSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7 IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENs ZWFyUGFnZU1sb2NrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX21sb2NrZWQs ICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkp KSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19DbGVhclBhZ2VNbG9ja2VkKHN0cnVjdCBwYWdl ICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX21sb2NrZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxv bmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBh Z2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7 IH0pOyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBUZXN0U2V0UGFnZU1sb2NrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5k X3NldF9iaXQoUEdfbWxvY2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdl VGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNv bXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFn ZU1sb2NrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQ R19tbG9ja2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2Up KSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVh ZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQoKCgoK CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlVW5jYWNoZWQoc3Ry dWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3VuY2FjaGVkLCAmKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKSgwICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VVbmNh Y2hlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3VuY2FjaGVkLCAmKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZVVu Y2FjaGVkKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR191bmNhY2hlZCwgJih7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZv aWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ ZmxhZ3MpOyB9CiMgNDE5ICIuL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgUGFnZUhX UG9pc29uKGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiAwOyB9IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgU2V0UGFn ZUhXUG9pc29uKHN0cnVjdCBwYWdlICpwYWdlKSB7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBDbGVhclBhZ2VIV1BvaXNvbihz dHJ1Y3QgcGFnZSAqcGFnZSkgeyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgc2V0X2h3cG9pc29uX2ZyZWVfYnVkZHlfcGFnZShz dHJ1Y3QgcGFnZSAqcGFnZSkKewogcmV0dXJuIDA7Cn0KIyA0NTYgIi4vaW5jbHVkZS9saW51eC9w YWdlLWZsYWdzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VN YXBwaW5nRmxhZ3Moc3RydWN0IHBhZ2UgKnBhZ2UpCnsKIHJldHVybiAoKHVuc2lnbmVkIGxvbmcp cGFnZS0+bWFwcGluZyAmICgweDEgfCAweDIpKSAhPSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBQYWdlQW5vbihzdHJ1Y3QgcGFnZSAqcGFnZSkKewogcGFnZSA9 IGNvbXBvdW5kX2hlYWQocGFnZSk7CiByZXR1cm4gKCh1bnNpZ25lZCBsb25nKXBhZ2UtPm1hcHBp bmcgJiAweDEpICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50 IF9fUGFnZU1vdmFibGUoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKIHJldHVybiAoKHVuc2lnbmVkIGxv bmcpcGFnZS0+bWFwcGluZyAmICgweDEgfCAweDIpKSA9PQogICAgMHgyOwp9CiMgNDgwICIuL2lu Y2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIGludCBQYWdlS3NtKHN0cnVjdCBwYWdlICpwYWdlKQp7CiBwYWdlID0gY29tcG91bmRfaGVh ZChwYWdlKTsKIHJldHVybiAoKHVuc2lnbmVkIGxvbmcpcGFnZS0+bWFwcGluZyAmICgweDEgfCAw eDIpKSA9PQogICAgKDB4MSB8IDB4Mik7Cn0KCgoKCnU2NCBzdGFibGVfcGFnZV9mbGFncyhzdHJ1 Y3QgcGFnZSAqcGFnZSk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQgUGFnZVVwdG9kYXRlKHN0cnVjdCBwYWdlICpwYWdlKQp7CiBp bnQgcmV0OwogcGFnZSA9IGNvbXBvdW5kX2hlYWQocGFnZSk7CiByZXQgPSB0ZXN0X2JpdChQR191 cHRvZGF0ZSwgJihwYWdlKS0+ZmxhZ3MpOwojIDUwNSAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxh Z3MuaCIKIGlmIChyZXQpCiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsK CiByZXR1cm4gcmV0Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg X19TZXRQYWdlVXB0b2RhdGUoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKICgodm9pZCkoc2l6ZW9mKCgg bG9uZykoUGFnZVRhaWwocGFnZSkpKSkpOwogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJt ZW1vcnkiKTsKIF9fc2V0X2JpdChQR191cHRvZGF0ZSwgJnBhZ2UtPmZsYWdzKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VVcHRvZGF0ZShzdHJ1Y3Qg cGFnZSAqcGFnZSkKewogKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlVGFpbChwYWdlKSkpKSk7 CgoKCgoKIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiBzZXRfYml0KFBH X3VwdG9kYXRlLCAmcGFnZS0+ZmxhZ3MpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHZvaWQgQ2xlYXJQYWdlVXB0b2RhdGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJf Yml0KFBHX3VwdG9kYXRlLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWls KHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91 bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsg fQoKaW50IHRlc3RfY2xlYXJfcGFnZV93cml0ZWJhY2soc3RydWN0IHBhZ2UgKnBhZ2UpOwppbnQg X190ZXN0X3NldF9wYWdlX3dyaXRlYmFjayhzdHJ1Y3QgcGFnZSAqcGFnZSwgYm9vbCBrZWVwX3dy aXRlKTsKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBzZXRfcGFnZV93cml0ZWJhY2soc3RydWN0IHBhZ2UgKnBhZ2UpCnsK IF9fdGVzdF9zZXRfcGFnZV93cml0ZWJhY2socGFnZSwgZmFsc2UpOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldF9wYWdl X3dyaXRlYmFja19rZWVwd3JpdGUoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKIF9fdGVzdF9zZXRfcGFn ZV93cml0ZWJhY2socGFnZSwgdHJ1ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgaW50IFBhZ2VIZWFkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQ R19oZWFkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkp OyBwYWdlOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dm9pZCBfX1NldFBhZ2VIZWFkKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fc2V0X2JpdChQR19oZWFk LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdl OyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBf X0NsZWFyUGFnZUhlYWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQoUEdfaGVhZCwg Jih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsg fSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xl YXJQYWdlSGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfaGVhZCwgJih7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSktPmZs YWdzKTsgfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNldF9jb21w b3VuZF9oZWFkKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgcGFnZSAqaGVhZCkKewogKHsgdW5p b24geyB0eXBlb2YocGFnZS0+Y29tcG91bmRfaGVhZCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dSA9IHsgLl9fdmFsID0gKCB0eXBlb2YocGFnZS0+Y29tcG91bmRfaGVhZCkpICgodW5zaWduZWQg bG9uZyloZWFkICsgMSkgfTsgX193cml0ZV9vbmNlX3NpemUoJihwYWdlLT5jb21wb3VuZF9oZWFk KSwgX191Ll9fYywgc2l6ZW9mKHBhZ2UtPmNvbXBvdW5kX2hlYWQpKTsgX191Ll9fdmFsOyB9KTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGNsZWFyX2NvbXBvdW5k X2hlYWQoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKICh7IHVuaW9uIHsgdHlwZW9mKHBhZ2UtPmNvbXBv dW5kX2hlYWQpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9m KHBhZ2UtPmNvbXBvdW5kX2hlYWQpKSAoMCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihwYWdlLT5j b21wb3VuZF9oZWFkKSwgX191Ll9fYywgc2l6ZW9mKHBhZ2UtPmNvbXBvdW5kX2hlYWQpKTsgX191 Ll9fdmFsOyB9KTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgQ2xlYXJQYWdlQ29tcG91bmQoc3RydWN0IHBhZ2UgKnBhZ2Up CnsKIGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIVBhZ2VIZWFkKHBhZ2UpKSwgMCkpIGRv IHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAi XG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAi MWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVj MCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVn X2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJc dC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvcGFn ZS1mbGFncy5oIiksICJpIiAoNTY1KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19l bnRyeSkpKTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5w dXNoc2VjdGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQi ICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDE0KSk7IH0pOyBhc20gdm9sYXRpbGUoIiIpOyBf X2J1aWx0aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9IHdoaWxl ICgwKTsKIENsZWFyUGFnZUhlYWQocGFnZSk7Cn0KCgoKCgppbnQgUGFnZUh1Z2Uoc3RydWN0IHBh Z2UgKnBhZ2UpOwppbnQgUGFnZUhlYWRIdWdlKHN0cnVjdCBwYWdlICpwYWdlKTsKYm9vbCBwYWdl X2h1Z2VfYWN0aXZlKHN0cnVjdCBwYWdlICpwYWdlKTsKIyA1OTYgIi4vaW5jbHVkZS9saW51eC9w YWdlLWZsYWdzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBQYWdlVHJhbnNIdWdlKHN0cnVjdCBwYWdlICpwYWdlKQp7CiAoKHZv aWQpKHNpemVvZigoIGxvbmcpKFBhZ2VUYWlsKHBhZ2UpKSkpKTsKIHJldHVybiBQYWdlSGVhZChw YWdlKTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgUGFnZVRyYW5zQ29tcG91bmQoc3RydWN0IHBhZ2UgKnBhZ2UpCnsK IHJldHVybiBQYWdlQ29tcG91bmQocGFnZSk7Cn0KIyA2MzMgIi4vaW5jbHVkZS9saW51eC9wYWdl LWZsYWdzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGludCBQYWdlVHJhbnNDb21wb3VuZE1hcChzdHJ1Y3QgcGFnZSAqcGFnZSkKewog c3RydWN0IHBhZ2UgKmhlYWQ7CgogaWYgKCFQYWdlVHJhbnNDb21wb3VuZChwYWdlKSkKICByZXR1 cm4gMDsKCiBpZiAoUGFnZUFub24ocGFnZSkpCiAgcmV0dXJuIGF0b21pY19yZWFkKCZwYWdlLT5f bWFwY291bnQpIDwgMDsKCiBoZWFkID0gY29tcG91bmRfaGVhZChwYWdlKTsKCiByZXR1cm4gYXRv bWljX3JlYWQoJnBhZ2UtPl9tYXBjb3VudCkgPT0KICAgICAgICBhdG9taWNfcmVhZChjb21wb3Vu ZF9tYXBjb3VudF9wdHIoaGVhZCkpOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBQYWdlVHJhbnNUYWlsKHN0cnVjdCBw YWdlICpwYWdlKQp7CiByZXR1cm4gUGFnZVRhaWwocGFnZSk7Cn0KIyA2NzIgIi4vaW5jbHVkZS9s aW51eC9wYWdlLWZsYWdzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludCBQYWdlRG91YmxlTWFwKHN0cnVjdCBwYWdlICpwYWdlKQp7 CiByZXR1cm4gUGFnZUhlYWQocGFnZSkgJiYgdGVzdF9iaXQoUEdfZG91YmxlX21hcCwgJnBhZ2Vb MV0uZmxhZ3MpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIFNldFBhZ2VEb3VibGVNYXAoc3RydWN0IHBhZ2UgKnBhZ2UpCnsK ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VIZWFkKHBhZ2UpKSkpKTsKIHNldF9iaXQoUEdf ZG91YmxlX21hcCwgJnBhZ2VbMV0uZmxhZ3MpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIENsZWFyUGFnZURvdWJsZU1hcChz dHJ1Y3QgcGFnZSAqcGFnZSkKewogKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFnZUhlYWQocGFn ZSkpKSkpOwogY2xlYXJfYml0KFBHX2RvdWJsZV9tYXAsICZwYWdlWzFdLmZsYWdzKTsKfQpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg VGVzdFNldFBhZ2VEb3VibGVNYXAoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKICgodm9pZCkoc2l6ZW9m KCggbG9uZykoIVBhZ2VIZWFkKHBhZ2UpKSkpKTsKIHJldHVybiB0ZXN0X2FuZF9zZXRfYml0KFBH X2RvdWJsZV9tYXAsICZwYWdlWzFdLmZsYWdzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IFRlc3RDbGVhclBhZ2VEb3VibGVN YXAoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VIZWFk KHBhZ2UpKSkpKTsKIHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoUEdfZG91YmxlX21hcCwgJnBh Z2VbMV0uZmxhZ3MpOwp9CiMgNzMxICIuL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg cGFnZV9oYXNfdHlwZShzdHJ1Y3QgcGFnZSAqcGFnZSkKewogcmV0dXJuIChpbnQpcGFnZS0+cGFn ZV90eXBlIDwgLTEyODsKfQojIDc1NiAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUJ1ZGR5KHN0cnVjdCBwYWdl ICpwYWdlKSB7IHJldHVybiAoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAwIHwgMHgwMDAw MDA4MCkpID09IDB4ZjAwMDAwMDApOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkgdm9pZCBfX1NldFBhZ2VCdWRkeShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKCEoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAwIHwgMCkpID09IDB4ZjAw MDAwMDApKSkpKTsgcGFnZS0+cGFnZV90eXBlICY9IH4weDAwMDAwMDgwOyB9IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZUJ1ZGR5KHN0cnVjdCBwYWdl ICpwYWdlKSB7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VCdWRkeShwYWdlKSkpKSk7IHBh Z2UtPnBhZ2VfdHlwZSB8PSAweDAwMDAwMDgwOyB9CiMgNzY1ICIuL2luY2x1ZGUvbGludXgvcGFn ZS1mbGFncy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlT2Zm bGluZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gKChwYWdlLT5wYWdlX3R5cGUgJiAoMHhm MDAwMDAwMCB8IDB4MDAwMDAxMDApKSA9PSAweGYwMDAwMDAwKTsgfSBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlT2ZmbGluZShzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCEoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAw MDAwIHwgMCkpID09IDB4ZjAwMDAwMDApKSkpKTsgcGFnZS0+cGFnZV90eXBlICY9IH4weDAwMDAw MTAwOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFn ZU9mZmxpbmUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFn ZU9mZmxpbmUocGFnZSkpKSkpOyBwYWdlLT5wYWdlX3R5cGUgfD0gMHgwMDAwMDEwMDsgfQoKCgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VLbWVtY2coc3RydWN0 IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuICgocGFnZS0+cGFnZV90eXBlICYgKDB4ZjAwMDAwMDAgfCAw eDAwMDAwMjAwKSkgPT0gMHhmMDAwMDAwMCk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSB2b2lkIF9fU2V0UGFnZUttZW1jZyhzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKCEoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAwIHwgMCkpID09 IDB4ZjAwMDAwMDApKSkpKTsgcGFnZS0+cGFnZV90eXBlICY9IH4weDAwMDAwMjAwOyB9IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZUttZW1jZyhzdHJ1 Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCFQYWdlS21lbWNnKHBhZ2Up KSkpKTsgcGFnZS0+cGFnZV90eXBlIHw9IDB4MDAwMDAyMDA7IH0KCgoKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VUYWJsZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBy ZXR1cm4gKChwYWdlLT5wYWdlX3R5cGUgJiAoMHhmMDAwMDAwMCB8IDB4MDAwMDA0MDApKSA9PSAw eGYwMDAwMDAwKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19T ZXRQYWdlVGFibGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgh KChwYWdlLT5wYWdlX3R5cGUgJiAoMHhmMDAwMDAwMCB8IDApKSA9PSAweGYwMDAwMDAwKSkpKSk7 IHBhZ2UtPnBhZ2VfdHlwZSAmPSB+MHgwMDAwMDQwMDsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIHZvaWQgX19DbGVhclBhZ2VUYWJsZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKCFQYWdlVGFibGUocGFnZSkpKSkpOyBwYWdlLT5wYWdlX3R5 cGUgfD0gMHgwMDAwMDQwMDsgfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSBpbnQgUGFnZUd1YXJkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiAoKHBhZ2UtPnBhZ2Vf dHlwZSAmICgweGYwMDAwMDAwIHwgMHgwMDAwMDgwMCkpID09IDB4ZjAwMDAwMDApOyB9IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX1NldFBhZ2VHdWFyZChzdHJ1Y3Qg cGFnZSAqcGFnZSkgeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCEoKHBhZ2UtPnBhZ2VfdHlwZSAm ICgweGYwMDAwMDAwIHwgMCkpID09IDB4ZjAwMDAwMDApKSkpKTsgcGFnZS0+cGFnZV90eXBlICY9 IH4weDAwMDAwODAwOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBf X0NsZWFyUGFnZUd1YXJkKHN0cnVjdCBwYWdlICpwYWdlKSB7ICgodm9pZCkoc2l6ZW9mKCggbG9u ZykoIVBhZ2VHdWFyZChwYWdlKSkpKSk7IHBhZ2UtPnBhZ2VfdHlwZSB8PSAweDAwMDAwODAwOyB9 CgpleHRlcm4gYm9vbCBpc19mcmVlX2J1ZGR5X3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpOwoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUlzb2xhdGVkKHN0cnVjdCBw YWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19pc29sYXRlZCwgJih7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfSBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlSXNvbGF0ZWQo c3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19zZXRfYml0KFBHX2lzb2xhdGVkLCAmKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KS0+ZmxhZ3MpOyB9 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZUlzb2xh dGVkKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX2lzb2xhdGVkLCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KS0+Zmxh Z3MpOyB9OwoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBQYWdlU2xhYlBmbWVtYWxsb2Moc3RydWN0IHBhZ2UgKnBhZ2UpCnsK ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VTbGFiKHBhZ2UpKSkpKTsKIHJldHVybiBQYWdl QWN0aXZlKHBhZ2UpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIFNldFBhZ2VTbGFiUGZtZW1hbGxvYyhzdHJ1Y3QgcGFnZSAq cGFnZSkKewogKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFnZVNsYWIocGFnZSkpKSkpOwogU2V0 UGFnZUFjdGl2ZShwYWdlKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX0NsZWFyUGFnZVNsYWJQZm1lbWFsbG9jKHN0cnVj dCBwYWdlICpwYWdlKQp7CiAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCFQYWdlU2xhYihwYWdlKSkp KSk7CiBfX0NsZWFyUGFnZUFjdGl2ZShwYWdlKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBDbGVhclBhZ2VTbGFiUGZtZW1h bGxvYyhzdHJ1Y3QgcGFnZSAqcGFnZSkKewogKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFnZVNs YWIocGFnZSkpKSkpOwogQ2xlYXJQYWdlQWN0aXZlKHBhZ2UpOwp9CiMgODUyICIuL2luY2x1ZGUv bGludXgvcGFnZS1mbGFncy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGFnZV9oYXNfcHJpdmF0ZShzdHJ1Y3QgcGFnZSAqcGFn ZSkKewogcmV0dXJuICEhKHBhZ2UtPmZsYWdzICYgKDFVTCA8PCBQR19wcml2YXRlIHwgMVVMIDw8 IFBHX3ByaXZhdGVfMikpOwp9CiMgMjMgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgojIDQx ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCmVudW0gbWlncmF0ZXR5cGUgewogTUlHUkFURV9V Tk1PVkFCTEUsCiBNSUdSQVRFX01PVkFCTEUsCiBNSUdSQVRFX1JFQ0xBSU1BQkxFLAogTUlHUkFU RV9QQ1BUWVBFUywKIE1JR1JBVEVfSElHSEFUT01JQyA9IE1JR1JBVEVfUENQVFlQRVMsCiMgNjQg Ii4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKIE1JR1JBVEVfSVNPTEFURSwKCiBNSUdSQVRFX1RZ UEVTCn07CgoKZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBtaWdyYXRldHlwZV9uYW1lc1tNSUdS QVRFX1RZUEVTXTsKIyA4MCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGlzX21pZ3Jh dGVfbW92YWJsZShpbnQgbXQpCnsKIHJldHVybiBmYWxzZSB8fCBtdCA9PSBNSUdSQVRFX01PVkFC TEU7Cn0KCgoKCgpleHRlcm4gaW50IHBhZ2VfZ3JvdXBfYnlfbW9iaWxpdHlfZGlzYWJsZWQ7CiMg OTggIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RydWN0IGZyZWVfYXJlYSB7CiBzdHJ1Y3Qg bGlzdF9oZWFkIGZyZWVfbGlzdFtNSUdSQVRFX1RZUEVTXTsKIHVuc2lnbmVkIGxvbmcgbnJfZnJl ZTsKfTsKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGFkZF90b19mcmVlX2FyZWEoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBm cmVlX2FyZWEgKmFyZWEsCiAgICAgICAgaW50IG1pZ3JhdGV0eXBlKQp7CiBsaXN0X2FkZCgmcGFn ZS0+bHJ1LCAmYXJlYS0+ZnJlZV9saXN0W21pZ3JhdGV0eXBlXSk7CiBhcmVhLT5ucl9mcmVlKys7 Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGFkZF90b19mcmVlX2FyZWFfdGFpbChzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0 IGZyZWVfYXJlYSAqYXJlYSwKICAgICAgaW50IG1pZ3JhdGV0eXBlKQp7CiBsaXN0X2FkZF90YWls KCZwYWdlLT5scnUsICZhcmVhLT5mcmVlX2xpc3RbbWlncmF0ZXR5cGVdKTsKIGFyZWEtPm5yX2Zy ZWUrKzsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGFkZF90b19mcmVlX2FyZWFfcmFuZG9tKHN0cnVjdCBwYWdlICpw YWdlLAogIHN0cnVjdCBmcmVlX2FyZWEgKmFyZWEsIGludCBtaWdyYXRldHlwZSkKewogYWRkX3Rv X2ZyZWVfYXJlYShwYWdlLCBhcmVhLCBtaWdyYXRldHlwZSk7Cn0KCgoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtb3ZlX3RvX2Zy ZWVfYXJlYShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGZyZWVfYXJlYSAqYXJlYSwKICAgICAg ICBpbnQgbWlncmF0ZXR5cGUpCnsKIGxpc3RfbW92ZSgmcGFnZS0+bHJ1LCAmYXJlYS0+ZnJlZV9s aXN0W21pZ3JhdGV0eXBlXSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBwYWdlICpnZXRfcGFnZV9mcm9tX2ZyZWVfYXJl YShzdHJ1Y3QgZnJlZV9hcmVhICphcmVhLAogICAgICAgICBpbnQgbWlncmF0ZXR5cGUpCnsKIHJl dHVybiAoeyBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkX18gPSAoJmFyZWEtPmZyZWVfbGlzdFttaWdy YXRldHlwZV0pOyBzdHJ1Y3QgbGlzdF9oZWFkICpwb3NfXyA9ICh7IHVuaW9uIHsgdHlwZW9mKGhl YWRfXy0+bmV4dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNl X3NpemUoJihoZWFkX18tPm5leHQpLCBfX3UuX19jLCBzaXplb2YoaGVhZF9fLT5uZXh0KSk7IGVs c2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoaGVhZF9fLT5uZXh0KSwgX191Ll9fYywgc2l6 ZW9mKGhlYWRfXy0+bmV4dCkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOyBwb3Nf XyAhPSBoZWFkX18gPyAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAqKShwb3NfXyk7IGRvIHsgZXh0 ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMTQxKHZvaWQpIF9fYXR0cmlidXRlX18oKF9f ZXJyb3JfXygicG9pbnRlciB0eXBlIG1pc21hdGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsgaWYg KCEoISghX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKihwb3NfXykpLCB0eXBl b2YoKChzdHJ1Y3QgcGFnZSAqKTApLT5scnUpKSAmJiAhX19idWlsdGluX3R5cGVzX2NvbXBhdGli bGVfcCh0eXBlb2YoKihwb3NfXykpLCB0eXBlb2Yodm9pZCkpKSkpIF9fY29tcGlsZXRpbWVfYXNz ZXJ0XzE0MSgpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgcGFnZSAqKShfX21wdHIgLSBfX2J1aWx0 aW5fb2Zmc2V0b2Yoc3RydWN0IHBhZ2UsIGxydSkpKTsgfSkgOiAoKHZvaWQgKikwKTsgfSkKICAg ICAgICAgICAgICAgICAgICAgIDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZWxfcGFnZV9mcm9tX2ZyZWVfYXJlYShzdHJ1 Y3QgcGFnZSAqcGFnZSwKICBzdHJ1Y3QgZnJlZV9hcmVhICphcmVhKQp7CiBsaXN0X2RlbCgmcGFn ZS0+bHJ1KTsKIF9fQ2xlYXJQYWdlQnVkZHkocGFnZSk7CiAoKHBhZ2UpLT5wcml2YXRlID0gKDAp KTsKIGFyZWEtPm5yX2ZyZWUtLTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBmcmVlX2FyZWFfZW1wdHkoc3RydWN0IGZyZWVf YXJlYSAqYXJlYSwgaW50IG1pZ3JhdGV0eXBlKQp7CiByZXR1cm4gbGlzdF9lbXB0eSgmYXJlYS0+ ZnJlZV9saXN0W21pZ3JhdGV0eXBlXSk7Cn0KCnN0cnVjdCBwZ2xpc3RfZGF0YTsKIyAxNjggIi4v aW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RydWN0IHpvbmVfcGFkZGluZyB7CiBjaGFyIHhbMF07 Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMSA8PCAoNikpKSk7CiMgMTkwICIuL2luY2x1 ZGUvbGludXgvbW16b25lLmgiCmVudW0gem9uZV9zdGF0X2l0ZW0gewoKIE5SX0ZSRUVfUEFHRVMs CiBOUl9aT05FX0xSVV9CQVNFLAogTlJfWk9ORV9JTkFDVElWRV9BTk9OID0gTlJfWk9ORV9MUlVf QkFTRSwKIE5SX1pPTkVfQUNUSVZFX0FOT04sCiBOUl9aT05FX0lOQUNUSVZFX0ZJTEUsCiBOUl9a T05FX0FDVElWRV9GSUxFLAogTlJfWk9ORV9VTkVWSUNUQUJMRSwKIE5SX1pPTkVfV1JJVEVfUEVO RElORywKIE5SX01MT0NLLAogTlJfUEFHRVRBQkxFLAogTlJfS0VSTkVMX1NUQUNLX0tCLAoKIE5S X0JPVU5DRSwKCiBOUl9aU1BBR0VTLAoKIE5SX0ZSRUVfQ01BX1BBR0VTLAogTlJfVk1fWk9ORV9T VEFUX0lURU1TIH07CgplbnVtIG5vZGVfc3RhdF9pdGVtIHsKIE5SX0xSVV9CQVNFLAogTlJfSU5B Q1RJVkVfQU5PTiA9IE5SX0xSVV9CQVNFLAogTlJfQUNUSVZFX0FOT04sCiBOUl9JTkFDVElWRV9G SUxFLAogTlJfQUNUSVZFX0ZJTEUsCiBOUl9VTkVWSUNUQUJMRSwKIE5SX1NMQUJfUkVDTEFJTUFC TEUsCiBOUl9TTEFCX1VOUkVDTEFJTUFCTEUsCiBOUl9JU09MQVRFRF9BTk9OLAogTlJfSVNPTEFU RURfRklMRSwKIFdPUktJTkdTRVRfTk9ERVMsCiBXT1JLSU5HU0VUX1JFRkFVTFQsCiBXT1JLSU5H U0VUX0FDVElWQVRFLAogV09SS0lOR1NFVF9SRVNUT1JFLAogV09SS0lOR1NFVF9OT0RFUkVDTEFJ TSwKIE5SX0FOT05fTUFQUEVELAogTlJfRklMRV9NQVBQRUQsCgogTlJfRklMRV9QQUdFUywKIE5S X0ZJTEVfRElSVFksCiBOUl9XUklURUJBQ0ssCiBOUl9XUklURUJBQ0tfVEVNUCwKIE5SX1NITUVN LAogTlJfU0hNRU1fVEhQUywKIE5SX1NITUVNX1BNRE1BUFBFRCwKIE5SX0ZJTEVfVEhQUywKIE5S X0ZJTEVfUE1ETUFQUEVELAogTlJfQU5PTl9USFBTLAogTlJfVU5TVEFCTEVfTkZTLAogTlJfVk1T Q0FOX1dSSVRFLAogTlJfVk1TQ0FOX0lNTUVESUFURSwKIE5SX0RJUlRJRUQsCiBOUl9XUklUVEVO LAogTlJfS0VSTkVMX01JU0NfUkVDTEFJTUFCTEUsCiBOUl9WTV9OT0RFX1NUQVRfSVRFTVMKfTsK IyAyNjIgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKZW51bSBscnVfbGlzdCB7CiBMUlVfSU5B Q1RJVkVfQU5PTiA9IDAsCiBMUlVfQUNUSVZFX0FOT04gPSAwICsgMSwKIExSVV9JTkFDVElWRV9G SUxFID0gMCArIDIsCiBMUlVfQUNUSVZFX0ZJTEUgPSAwICsgMiArIDEsCiBMUlVfVU5FVklDVEFC TEUsCiBOUl9MUlVfTElTVFMKfTsKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGlzX2ZpbGVfbHJ1KGVudW0gbHJ1X2xpc3Qg bHJ1KQp7CiByZXR1cm4gKGxydSA9PSBMUlVfSU5BQ1RJVkVfRklMRSB8fCBscnUgPT0gTFJVX0FD VElWRV9GSUxFKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCBpc19hY3RpdmVfbHJ1KGVudW0gbHJ1X2xpc3QgbHJ1KQp7CiBy ZXR1cm4gKGxydSA9PSBMUlVfQUNUSVZFX0FOT04gfHwgbHJ1ID09IExSVV9BQ1RJVkVfRklMRSk7 Cn0KCnN0cnVjdCB6b25lX3JlY2xhaW1fc3RhdCB7CiMgMjk0ICIuL2luY2x1ZGUvbGludXgvbW16 b25lLmgiCiB1bnNpZ25lZCBsb25nIHJlY2VudF9yb3RhdGVkWzJdOwogdW5zaWduZWQgbG9uZyBy ZWNlbnRfc2Nhbm5lZFsyXTsKfTsKCmVudW0gbHJ1dmVjX2ZsYWdzIHsKIExSVVZFQ19DT05HRVNU RUQsCgoKfTsKCnN0cnVjdCBscnV2ZWMgewogc3RydWN0IGxpc3RfaGVhZCBsaXN0c1tOUl9MUlVf TElTVFNdOwogc3RydWN0IHpvbmVfcmVjbGFpbV9zdGF0IHJlY2xhaW1fc3RhdDsKCiBhdG9taWNf bG9uZ190IGluYWN0aXZlX2FnZTsKCiB1bnNpZ25lZCBsb25nIHJlZmF1bHRzOwoKIHVuc2lnbmVk IGxvbmcgZmxhZ3M7Cgogc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdDsKCn07CiMgMzI2ICIuL2lu Y2x1ZGUvbGludXgvbW16b25lLmgiCnR5cGVkZWYgdW5zaWduZWQgaXNvbGF0ZV9tb2RlX3Q7Cgpl bnVtIHpvbmVfd2F0ZXJtYXJrcyB7CiBXTUFSS19NSU4sCiBXTUFSS19MT1csCiBXTUFSS19ISUdI LAogTlJfV01BUksKfTsKCgoKCgoKc3RydWN0IHBlcl9jcHVfcGFnZXMgewogaW50IGNvdW50Owog aW50IGhpZ2g7CiBpbnQgYmF0Y2g7CgoKIHN0cnVjdCBsaXN0X2hlYWQgbGlzdHNbTUlHUkFURV9Q Q1BUWVBFU107Cn07CgpzdHJ1Y3QgcGVyX2NwdV9wYWdlc2V0IHsKIHN0cnVjdCBwZXJfY3B1X3Bh Z2VzIHBjcDsKCgoKCgogczggc3RhdF90aHJlc2hvbGQ7CiBzOCB2bV9zdGF0X2RpZmZbTlJfVk1f Wk9ORV9TVEFUX0lURU1TXTsKCn07CgpzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCB7CiBzOCBzdGF0 X3RocmVzaG9sZDsKIHM4IHZtX25vZGVfc3RhdF9kaWZmW05SX1ZNX05PREVfU1RBVF9JVEVNU107 Cn07CgoKCmVudW0gem9uZV90eXBlIHsKIyA0MDAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIK IFpPTkVfRE1BLAoKCiBaT05FX0RNQTMyLAoKCgoKCgogWk9ORV9OT1JNQUwsCiMgNDIyICIuL2lu Y2x1ZGUvbGludXgvbW16b25lLmgiCiBaT05FX01PVkFCTEUsCgoKCiBfX01BWF9OUl9aT05FUwoK fTsKCgoKc3RydWN0IHpvbmUgewoKCgogdW5zaWduZWQgbG9uZyBfd2F0ZXJtYXJrW05SX1dNQVJL XTsKIHVuc2lnbmVkIGxvbmcgd2F0ZXJtYXJrX2Jvb3N0OwoKIHVuc2lnbmVkIGxvbmcgbnJfcmVz ZXJ2ZWRfaGlnaGF0b21pYzsKIyA0NTAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKIGxvbmcg bG93bWVtX3Jlc2VydmVbNF07CgoKCgogc3RydWN0IHBnbGlzdF9kYXRhICp6b25lX3BnZGF0Owog c3RydWN0IHBlcl9jcHVfcGFnZXNldCAqcGFnZXNldDsKIyA0NjcgIi4vaW5jbHVkZS9saW51eC9t bXpvbmUuaCIKIHVuc2lnbmVkIGxvbmcgem9uZV9zdGFydF9wZm47CiMgNTA0ICIuL2luY2x1ZGUv bGludXgvbW16b25lLmgiCiBhdG9taWNfbG9uZ190IG1hbmFnZWRfcGFnZXM7CiB1bnNpZ25lZCBs b25nIHNwYW5uZWRfcGFnZXM7CiB1bnNpZ25lZCBsb25nIHByZXNlbnRfcGFnZXM7CgogY29uc3Qg Y2hhciAqbmFtZTsKCgoKCgoKCiB1bnNpZ25lZCBsb25nIG5yX2lzb2xhdGVfcGFnZWJsb2NrOwoK CgoKIHNlcWxvY2tfdCBzcGFuX3NlcWxvY2s7CgoKIGludCBpbml0aWFsaXplZDsKCgogc3RydWN0 IHpvbmVfcGFkZGluZyBfcGFkMV87CgoKIHN0cnVjdCBmcmVlX2FyZWEgZnJlZV9hcmVhWzExXTsK CgogdW5zaWduZWQgbG9uZyBmbGFnczsKCgogc3BpbmxvY2tfdCBsb2NrOwoKCiBzdHJ1Y3Qgem9u ZV9wYWRkaW5nIF9wYWQyXzsKCgoKCgoKIHVuc2lnbmVkIGxvbmcgcGVyY3B1X2RyaWZ0X21hcms7 CgoKCiB1bnNpZ25lZCBsb25nIGNvbXBhY3RfY2FjaGVkX2ZyZWVfcGZuOwoKIHVuc2lnbmVkIGxv bmcgY29tcGFjdF9jYWNoZWRfbWlncmF0ZV9wZm5bMl07CiB1bnNpZ25lZCBsb25nIGNvbXBhY3Rf aW5pdF9taWdyYXRlX3BmbjsKIHVuc2lnbmVkIGxvbmcgY29tcGFjdF9pbml0X2ZyZWVfcGZuOwoj IDU2MyAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgogdW5zaWduZWQgaW50IGNvbXBhY3RfY29u c2lkZXJlZDsKIHVuc2lnbmVkIGludCBjb21wYWN0X2RlZmVyX3NoaWZ0OwogaW50IGNvbXBhY3Rf b3JkZXJfZmFpbGVkOwoKCgoKIGJvb2wgY29tcGFjdF9ibG9ja3NraXBfZmx1c2g7CgoKIGJvb2wg Y29udGlndW91czsKCiBzdHJ1Y3Qgem9uZV9wYWRkaW5nIF9wYWQzXzsKCiBhdG9taWNfbG9uZ190 IHZtX3N0YXRbTlJfVk1fWk9ORV9TVEFUX0lURU1TXTsKIGF0b21pY19sb25nX3Qgdm1fbnVtYV9z dGF0WzBdOwp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDEgPDwgKDYpKSkpOwoKZW51bSBw Z2RhdF9mbGFncyB7CiBQR0RBVF9ESVJUWSwKCgoKIFBHREFUX1dSSVRFQkFDSywKCgogUEdEQVRf UkVDTEFJTV9MT0NLRUQsCn07CgplbnVtIHpvbmVfZmxhZ3MgewogWk9ORV9CT09TVEVEX1dBVEVS TUFSSywKCgp9OwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyB6b25lX21hbmFnZWRfcGFnZXMoc3RydWN0IHpvbmUg KnpvbmUpCnsKIHJldHVybiAodW5zaWduZWQgbG9uZylhdG9taWNfbG9uZ19yZWFkKCZ6b25lLT5t YW5hZ2VkX3BhZ2VzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyB6b25lX2VuZF9wZm4oY29uc3Qgc3RydWN0 IHpvbmUgKnpvbmUpCnsKIHJldHVybiB6b25lLT56b25lX3N0YXJ0X3BmbiArIHpvbmUtPnNwYW5u ZWRfcGFnZXM7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgem9uZV9zcGFuc19wZm4oY29uc3Qgc3RydWN0IHpvbmUgKnpvbmUs IHVuc2lnbmVkIGxvbmcgcGZuKQp7CiByZXR1cm4gem9uZS0+em9uZV9zdGFydF9wZm4gPD0gcGZu ICYmIHBmbiA8IHpvbmVfZW5kX3Bmbih6b25lKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB6b25lX2lzX2luaXRpYWxpemVk KHN0cnVjdCB6b25lICp6b25lKQp7CiByZXR1cm4gem9uZS0+aW5pdGlhbGl6ZWQ7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg em9uZV9pc19lbXB0eShzdHJ1Y3Qgem9uZSAqem9uZSkKewogcmV0dXJuIHpvbmUtPnNwYW5uZWRf cGFnZXMgPT0gMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgem9uZV9pbnRlcnNlY3RzKHN0cnVjdCB6b25lICp6b25l LAogIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKQp7CiBp ZiAoem9uZV9pc19lbXB0eSh6b25lKSkKICByZXR1cm4gZmFsc2U7CiBpZiAoc3RhcnRfcGZuID49 IHpvbmVfZW5kX3Bmbih6b25lKSB8fAogICAgIHN0YXJ0X3BmbiArIG5yX3BhZ2VzIDw9IHpvbmUt PnpvbmVfc3RhcnRfcGZuKQogIHJldHVybiBmYWxzZTsKCiByZXR1cm4gdHJ1ZTsKfQojIDY0OSAi Li9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgplbnVtIHsKIFpPTkVMSVNUX0ZBTExCQUNLLAoKCgoK CgoKIE1BWF9aT05FTElTVFMKfTsKCgoKCgpzdHJ1Y3Qgem9uZXJlZiB7CiBzdHJ1Y3Qgem9uZSAq em9uZTsKIGludCB6b25lX2lkeDsKfTsKIyA2ODQgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIK c3RydWN0IHpvbmVsaXN0IHsKIHN0cnVjdCB6b25lcmVmIF96b25lcmVmc1soKDEgPDwgMCkgKiA0 KSArIDFdOwp9OwoKCgpleHRlcm4gc3RydWN0IHBhZ2UgKm1lbV9tYXA7CgoKCnN0cnVjdCBkZWZl cnJlZF9zcGxpdCB7CiBzcGlubG9ja190IHNwbGl0X3F1ZXVlX2xvY2s7CiBzdHJ1Y3QgbGlzdF9o ZWFkIHNwbGl0X3F1ZXVlOwogdW5zaWduZWQgbG9uZyBzcGxpdF9xdWV1ZV9sZW47Cn07CiMgNzA5 ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCnN0cnVjdCBib290bWVtX2RhdGE7CnR5cGVkZWYg c3RydWN0IHBnbGlzdF9kYXRhIHsKIHN0cnVjdCB6b25lIG5vZGVfem9uZXNbNF07CiBzdHJ1Y3Qg em9uZWxpc3Qgbm9kZV96b25lbGlzdHNbTUFYX1pPTkVMSVNUU107CiBpbnQgbnJfem9uZXM7CiMg NzMxICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCiBzcGlubG9ja190IG5vZGVfc2l6ZV9sb2Nr OwoKIHVuc2lnbmVkIGxvbmcgbm9kZV9zdGFydF9wZm47CiB1bnNpZ25lZCBsb25nIG5vZGVfcHJl c2VudF9wYWdlczsKIHVuc2lnbmVkIGxvbmcgbm9kZV9zcGFubmVkX3BhZ2VzOwoKIGludCBub2Rl X2lkOwogd2FpdF9xdWV1ZV9oZWFkX3Qga3N3YXBkX3dhaXQ7CiB3YWl0X3F1ZXVlX2hlYWRfdCBw Zm1lbWFsbG9jX3dhaXQ7CiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmtzd2FwZDsKCiBpbnQga3N3YXBk X29yZGVyOwogZW51bSB6b25lX3R5cGUga3N3YXBkX2NsYXNzem9uZV9pZHg7CgogaW50IGtzd2Fw ZF9mYWlsdXJlczsKCgogaW50IGtjb21wYWN0ZF9tYXhfb3JkZXI7CiBlbnVtIHpvbmVfdHlwZSBr Y29tcGFjdGRfY2xhc3N6b25lX2lkeDsKIHdhaXRfcXVldWVfaGVhZF90IGtjb21wYWN0ZF93YWl0 Owogc3RydWN0IHRhc2tfc3RydWN0ICprY29tcGFjdGQ7CgoKCgoKIHVuc2lnbmVkIGxvbmcgdG90 YWxyZXNlcnZlX3BhZ2VzOwojIDc2OCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgogc3RydWN0 IHpvbmVfcGFkZGluZyBfcGFkMV87CiBzcGlubG9ja190IGxydV9sb2NrOwojIDc4MCAiLi9pbmNs dWRlL2xpbnV4L21tem9uZS5oIgogc3RydWN0IGRlZmVycmVkX3NwbGl0IGRlZmVycmVkX3NwbGl0 X3F1ZXVlOwojIDc5MCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgogc3RydWN0IGxydXZlYyBf X2xydXZlYzsKCiB1bnNpZ25lZCBsb25nIGZsYWdzOwoKIHN0cnVjdCB6b25lX3BhZGRpbmcgX3Bh ZDJfOwoKCiBzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCAqcGVyX2NwdV9ub2Rlc3RhdHM7CiBhdG9t aWNfbG9uZ190IHZtX3N0YXRbTlJfVk1fTk9ERV9TVEFUX0lURU1TXTsKfSBwZ19kYXRhX3Q7CiMg ODEzICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgcGdkYXRfZW5kX3Bm bihwZ19kYXRhX3QgKnBnZGF0KQp7CiByZXR1cm4gcGdkYXQtPm5vZGVfc3RhcnRfcGZuICsgcGdk YXQtPm5vZGVfc3Bhbm5lZF9wYWdlczsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBwZ2RhdF9pc19lbXB0eShwZ19kYXRhX3Qg KnBnZGF0KQp7CiByZXR1cm4gIXBnZGF0LT5ub2RlX3N0YXJ0X3BmbiAmJiAhcGdkYXQtPm5vZGVf c3Bhbm5lZF9wYWdlczsKfQoKIyAxICIuL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIg MQoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiIDEKIyA2ICIuL2luY2x1ZGUvbGlu dXgvbWVtb3J5X2hvdHBsdWcuaCIgMgoKIyAxICIuL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCIg MQojIDE2ICIuL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCIKIyAxICIuL2luY2x1ZGUvbGludXgv c3JjdS5oIiAxCiMgMjIgIi4vaW5jbHVkZS9saW51eC9zcmN1LmgiCiMgMSAiLi9pbmNsdWRlL2xp bnV4L3JjdV9zZWdjYmxpc3QuaCIgMQojIDIxICIuL2luY2x1ZGUvbGludXgvcmN1X3NlZ2NibGlz dC5oIgpzdHJ1Y3QgcmN1X2NibGlzdCB7CiBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqaGVhZDsKIHN0 cnVjdCBjYWxsYmFja19oZWFkICoqdGFpbDsKIGxvbmcgbGVuOwp9OwojIDY2ICIuL2luY2x1ZGUv bGludXgvcmN1X3NlZ2NibGlzdC5oIgpzdHJ1Y3QgcmN1X3NlZ2NibGlzdCB7CiBzdHJ1Y3QgY2Fs bGJhY2tfaGVhZCAqaGVhZDsKIHN0cnVjdCBjYWxsYmFja19oZWFkICoqdGFpbHNbNF07CiB1bnNp Z25lZCBsb25nIGdwX3NlcVs0XTsKCgoKIGxvbmcgbGVuOwoKIHU4IGVuYWJsZWQ7CiB1OCBvZmZs b2FkZWQ7Cn07CiMgMjMgIi4vaW5jbHVkZS9saW51eC9zcmN1LmgiIDIKCnN0cnVjdCBzcmN1X3N0 cnVjdDsKIyA0MSAiLi9pbmNsdWRlL2xpbnV4L3NyY3UuaCIKaW50IGluaXRfc3JjdV9zdHJ1Y3Qo c3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApOwoKCgoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvc3Jj dXRyZWUuaCIgMQojIDE0ICIuL2luY2x1ZGUvbGludXgvc3JjdXRyZWUuaCIKIyAxICIuL2luY2x1 ZGUvbGludXgvcmN1X25vZGVfdHJlZS5oIiAxCiMgMTUgIi4vaW5jbHVkZS9saW51eC9zcmN1dHJl ZS5oIiAyCgoKc3RydWN0IHNyY3Vfbm9kZTsKc3RydWN0IHNyY3Vfc3RydWN0OwoKCgoKCnN0cnVj dCBzcmN1X2RhdGEgewoKIHVuc2lnbmVkIGxvbmcgc3JjdV9sb2NrX2NvdW50WzJdOwogdW5zaWdu ZWQgbG9uZyBzcmN1X3VubG9ja19jb3VudFsyXTsKCgogc3BpbmxvY2tfdCBsb2NrIF9fYXR0cmli dXRlX18oKF9fYWxpZ25lZF9fKDEgPDwgKDYpKSkpOwogc3RydWN0IHJjdV9zZWdjYmxpc3Qgc3Jj dV9jYmxpc3Q7CiB1bnNpZ25lZCBsb25nIHNyY3VfZ3Bfc2VxX25lZWRlZDsKIHVuc2lnbmVkIGxv bmcgc3JjdV9ncF9zZXFfbmVlZGVkX2V4cDsKIGJvb2wgc3JjdV9jYmxpc3RfaW52b2tpbmc7CiBz dHJ1Y3QgdGltZXJfbGlzdCBkZWxheV93b3JrOwogc3RydWN0IHdvcmtfc3RydWN0IHdvcms7CiBz dHJ1Y3QgY2FsbGJhY2tfaGVhZCBzcmN1X2JhcnJpZXJfaGVhZDsKIHN0cnVjdCBzcmN1X25vZGUg Km15bm9kZTsKIHVuc2lnbmVkIGxvbmcgZ3JwbWFzazsKCiBpbnQgY3B1Owogc3RydWN0IHNyY3Vf c3RydWN0ICpzc3A7Cn07CgoKCgpzdHJ1Y3Qgc3JjdV9ub2RlIHsKIHNwaW5sb2NrX3QgbG9jazsK IHVuc2lnbmVkIGxvbmcgc3JjdV9oYXZlX2Nic1s0XTsKCgogdW5zaWduZWQgbG9uZyBzcmN1X2Rh dGFfaGF2ZV9jYnNbNF07CgogdW5zaWduZWQgbG9uZyBzcmN1X2dwX3NlcV9uZWVkZWRfZXhwOwog c3RydWN0IHNyY3Vfbm9kZSAqc3JjdV9wYXJlbnQ7CiBpbnQgZ3JwbG87CiBpbnQgZ3JwaGk7Cn07 CgoKCgpzdHJ1Y3Qgc3JjdV9zdHJ1Y3Qgewogc3RydWN0IHNyY3Vfbm9kZSBub2RlWzFdOwogc3Ry dWN0IHNyY3Vfbm9kZSAqbGV2ZWxbMSArIDFdOwoKIHN0cnVjdCBtdXRleCBzcmN1X2NiX211dGV4 Owogc3BpbmxvY2tfdCBsb2NrOwogc3RydWN0IG11dGV4IHNyY3VfZ3BfbXV0ZXg7CiB1bnNpZ25l ZCBpbnQgc3JjdV9pZHg7CiB1bnNpZ25lZCBsb25nIHNyY3VfZ3Bfc2VxOwogdW5zaWduZWQgbG9u ZyBzcmN1X2dwX3NlcV9uZWVkZWQ7CiB1bnNpZ25lZCBsb25nIHNyY3VfZ3Bfc2VxX25lZWRlZF9l eHA7CiB1bnNpZ25lZCBsb25nIHNyY3VfbGFzdF9ncF9lbmQ7CiBzdHJ1Y3Qgc3JjdV9kYXRhICpz ZGE7CiB1bnNpZ25lZCBsb25nIHNyY3VfYmFycmllcl9zZXE7CiBzdHJ1Y3QgbXV0ZXggc3JjdV9i YXJyaWVyX211dGV4Owogc3RydWN0IGNvbXBsZXRpb24gc3JjdV9iYXJyaWVyX2NvbXBsZXRpb247 CgogYXRvbWljX3Qgc3JjdV9iYXJyaWVyX2NwdV9jbnQ7CgoKIHN0cnVjdCBkZWxheWVkX3dvcmsg d29yazsKCgoKfTsKIyAxMzcgIi4vaW5jbHVkZS9saW51eC9zcmN1dHJlZS5oIgp2b2lkIHN5bmNo cm9uaXplX3NyY3VfZXhwZWRpdGVkKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTsKdm9pZCBzcmN1 X2JhcnJpZXIoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApOwp2b2lkIHNyY3VfdG9ydHVyZV9zdGF0 c19wcmludChzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgY2hhciAqdHQsIGNoYXIgKnRmKTsKIyA1 MCAiLi9pbmNsdWRlL2xpbnV4L3NyY3UuaCIgMgoKCgoKCgoKdm9pZCBjYWxsX3NyY3Uoc3RydWN0 IHNyY3Vfc3RydWN0ICpzc3AsIHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkLAogIHZvaWQgKCpm dW5jKShzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqaGVhZCkpOwp2b2lkIGNsZWFudXBfc3JjdV9zdHJ1 Y3Qoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApOwppbnQgX19zcmN1X3JlYWRfbG9jayhzdHJ1Y3Qg c3JjdV9zdHJ1Y3QgKnNzcCkgOwp2b2lkIF9fc3JjdV9yZWFkX3VubG9jayhzdHJ1Y3Qgc3JjdV9z dHJ1Y3QgKnNzcCwgaW50IGlkeCkgOwp2b2lkIHN5bmNocm9uaXplX3NyY3Uoc3RydWN0IHNyY3Vf c3RydWN0ICpzc3ApOwojIDkxICIuL2luY2x1ZGUvbGludXgvc3JjdS5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc3JjdV9yZWFk X2xvY2tfaGVsZChjb25zdCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkKewogcmV0dXJuIDE7Cn0K IyAxNTAgIi4vaW5jbHVkZS9saW51eC9zcmN1LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBzcmN1X3JlYWRfbG9jayhzdHJ1Y3Qg c3JjdV9zdHJ1Y3QgKnNzcCkKewogaW50IHJldHZhbDsKCiByZXR2YWwgPSBfX3NyY3VfcmVhZF9s b2NrKHNzcCk7CiBkbyB7IH0gd2hpbGUgKDApOwogcmV0dXJuIHJldHZhbDsKfQoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKc3JjdV9yZWFkX2xvY2tfbm90cmFj ZShzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkKewogaW50IHJldHZhbDsKCiByZXR2YWwgPSBfX3Ny Y3VfcmVhZF9sb2NrKHNzcCk7CiByZXR1cm4gcmV0dmFsOwp9CiMgMTc2ICIuL2luY2x1ZGUvbGlu dXgvc3JjdS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHNyY3VfcmVhZF91bmxvY2soc3RydWN0IHNyY3Vfc3RydWN0ICpzc3As IGludCBpZHgpCgp7CiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGlkeCAmIH4weDEpOyBpZiAo X19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19p bmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rp b24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0 IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQj IGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4i ICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4i ICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvc3JjdS5oIiksICJpIiAoMTc5 KSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0 cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0 IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxu XHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDE1KSk7IH0pOyB9IHdoaWxlICgwKTsgX19i dWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwogZG8geyB9IHdoaWxlICgw KTsKIF9fc3JjdV9yZWFkX3VubG9jayhzc3AsIGlkeCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApzcmN1X3JlYWRfdW5sb2NrX25vdHJhY2Uoc3RydWN0 IHNyY3Vfc3RydWN0ICpzc3AsIGludCBpZHgpCnsKIF9fc3JjdV9yZWFkX3VubG9jayhzc3AsIGlk eCk7Cn0KIyAyMDAgIi4vaW5jbHVkZS9saW51eC9zcmN1LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc21wX21iX19hZnRlcl9z cmN1X3JlYWRfdW5sb2NrKHZvaWQpCnsKCn0KIyAxNyAiLi9pbmNsdWRlL2xpbnV4L25vdGlmaWVy LmgiIDIKIyA0OSAiLi9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgiCnN0cnVjdCBub3RpZmllcl9i bG9jazsKCnR5cGVkZWYgaW50ICgqbm90aWZpZXJfZm5fdCkoc3RydWN0IG5vdGlmaWVyX2Jsb2Nr ICpuYiwKICAgdW5zaWduZWQgbG9uZyBhY3Rpb24sIHZvaWQgKmRhdGEpOwoKc3RydWN0IG5vdGlm aWVyX2Jsb2NrIHsKIG5vdGlmaWVyX2ZuX3Qgbm90aWZpZXJfY2FsbDsKIHN0cnVjdCBub3RpZmll cl9ibG9jayAqbmV4dDsKIGludCBwcmlvcml0eTsKfTsKCnN0cnVjdCBhdG9taWNfbm90aWZpZXJf aGVhZCB7CiBzcGlubG9ja190IGxvY2s7CiBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKmhlYWQ7Cn07 CgpzdHJ1Y3QgYmxvY2tpbmdfbm90aWZpZXJfaGVhZCB7CiBzdHJ1Y3Qgcndfc2VtYXBob3JlIHJ3 c2VtOwogc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpoZWFkOwp9OwoKc3RydWN0IHJhd19ub3RpZmll cl9oZWFkIHsKIHN0cnVjdCBub3RpZmllcl9ibG9jayAqaGVhZDsKfTsKCnN0cnVjdCBzcmN1X25v dGlmaWVyX2hlYWQgewogc3RydWN0IG11dGV4IG11dGV4Owogc3RydWN0IHNyY3Vfc3RydWN0IHNy Y3U7CiBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKmhlYWQ7Cn07CiMgOTMgIi4vaW5jbHVkZS9saW51 eC9ub3RpZmllci5oIgpleHRlcm4gdm9pZCBzcmN1X2luaXRfbm90aWZpZXJfaGVhZChzdHJ1Y3Qg c3JjdV9ub3RpZmllcl9oZWFkICpuaCk7CiMgMTQ0ICIuL2luY2x1ZGUvbGludXgvbm90aWZpZXIu aCIKZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoc3RydWN0IGF0b21p Y19ub3RpZmllcl9oZWFkICpuaCwKICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKZXh0ZXJu IGludCBibG9ja2luZ19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihzdHJ1Y3QgYmxvY2tpbmdfbm90 aWZpZXJfaGVhZCAqbmgsCiAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CmV4dGVybiBpbnQg cmF3X25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKHN0cnVjdCByYXdfbm90aWZpZXJfaGVhZCAqbmgs CiAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CmV4dGVybiBpbnQgc3JjdV9ub3RpZmllcl9j aGFpbl9yZWdpc3RlcihzdHJ1Y3Qgc3JjdV9ub3RpZmllcl9oZWFkICpuaCwKICBzdHJ1Y3Qgbm90 aWZpZXJfYmxvY2sgKm5iKTsKCmV4dGVybiBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVn aXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwKICBzdHJ1Y3Qgbm90aWZpZXJf YmxvY2sgKm5iKTsKZXh0ZXJuIGludCBibG9ja2luZ19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVy KHN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFkICpuaCwKICBzdHJ1Y3Qgbm90aWZpZXJfYmxv Y2sgKm5iKTsKZXh0ZXJuIGludCByYXdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3Qg cmF3X25vdGlmaWVyX2hlYWQgKm5oLAogIHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwpleHRl cm4gaW50IHNyY3Vfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3Qgc3JjdV9ub3RpZmll cl9oZWFkICpuaCwKICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKCmV4dGVybiBpbnQgYXRv bWljX25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwK ICB1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqdik7CmV4dGVybiBpbnQgX19hdG9taWNfbm90aWZp ZXJfY2FsbF9jaGFpbihzdHJ1Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgKm5oLAogdW5zaWduZWQg bG9uZyB2YWwsIHZvaWQgKnYsIGludCBucl90b19jYWxsLCBpbnQgKm5yX2NhbGxzKTsKZXh0ZXJu IGludCBibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKHN0cnVjdCBibG9ja2luZ19ub3RpZmll cl9oZWFkICpuaCwKICB1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqdik7CmV4dGVybiBpbnQgX19i bG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKHN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFk ICpuaCwKIHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICp2LCBpbnQgbnJfdG9fY2FsbCwgaW50ICpu cl9jYWxscyk7CmV4dGVybiBpbnQgcmF3X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IHJhd19u b3RpZmllcl9oZWFkICpuaCwKICB1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqdik7CmV4dGVybiBp bnQgX19yYXdfbm90aWZpZXJfY2FsbF9jaGFpbihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5o LAogdW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYsIGludCBucl90b19jYWxsLCBpbnQgKm5yX2Nh bGxzKTsKZXh0ZXJuIGludCBzcmN1X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IHNyY3Vfbm90 aWZpZXJfaGVhZCAqbmgsCiAgdW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYpOwpleHRlcm4gaW50 IF9fc3JjdV9ub3RpZmllcl9jYWxsX2NoYWluKHN0cnVjdCBzcmN1X25vdGlmaWVyX2hlYWQgKm5o LAogdW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYsIGludCBucl90b19jYWxsLCBpbnQgKm5yX2Nh bGxzKTsKIyAxOTAgIi4vaW5jbHVkZS9saW51eC9ub3RpZmllci5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgbm90aWZpZXJfZnJv bV9lcnJubyhpbnQgZXJyKQp7CiBpZiAoZXJyKQogIHJldHVybiAweDgwMDAgfCAoMHgwMDAxIC0g ZXJyKTsKCiByZXR1cm4gMHgwMDAxOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG5vdGlmaWVyX3RvX2Vycm5vKGludCByZXQp CnsKIHJldCAmPSB+MHg4MDAwOwogcmV0dXJuIHJldCA+IDB4MDAwMSA/IDB4MDAwMSAtIHJldCA6 IDA7Cn0KIyAyMzQgIi4vaW5jbHVkZS9saW51eC9ub3RpZmllci5oIgpleHRlcm4gc3RydWN0IGJs b2NraW5nX25vdGlmaWVyX2hlYWQgcmVib290X25vdGlmaWVyX2xpc3Q7CiMgOCAiLi9pbmNsdWRl L2xpbnV4L21lbW9yeV9ob3RwbHVnLmgiIDIKCgpzdHJ1Y3QgcGFnZTsKc3RydWN0IHpvbmU7CnN0 cnVjdCBwZ2xpc3RfZGF0YTsKc3RydWN0IG1lbV9zZWN0aW9uOwpzdHJ1Y3QgbWVtb3J5X2Jsb2Nr OwpzdHJ1Y3QgcmVzb3VyY2U7CnN0cnVjdCB2bWVtX2FsdG1hcDsKIyA0MCAiLi9pbmNsdWRlL2xp bnV4L21lbW9yeV9ob3RwbHVnLmgiCmVudW0gewogTUVNT1JZX0hPVFBMVUdfTUlOX0JPT1RNRU1f VFlQRSA9IDEyLAogU0VDVElPTl9JTkZPID0gTUVNT1JZX0hPVFBMVUdfTUlOX0JPT1RNRU1fVFlQ RSwKIE1JWF9TRUNUSU9OX0lORk8sCiBOT0RFX0lORk8sCiBNRU1PUllfSE9UUExVR19NQVhfQk9P VE1FTV9UWVBFID0gTk9ERV9JTkZPLAp9OwoKCmVudW0gewogTU1PUF9PRkZMSU5FID0gLTEsCiBN TU9QX09OTElORV9LRUVQLAogTU1PUF9PTkxJTkVfS0VSTkVMLAogTU1PUF9PTkxJTkVfTU9WQUJM RSwKfTsKCgoKCgoKc3RydWN0IG1ocF9yZXN0cmljdGlvbnMgewogdW5zaWduZWQgbG9uZyBmbGFn czsKIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwOwp9OwojIDczICIuL2luY2x1ZGUvbGludXgv bWVtb3J5X2hvdHBsdWcuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgem9uZV9zcGFuX3NlcWJlZ2luKHN0cnVjdCB6b25l ICp6b25lKQp7CiByZXR1cm4gcmVhZF9zZXFiZWdpbigmem9uZS0+c3Bhbl9zZXFsb2NrKTsKfQpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgem9uZV9zcGFuX3NlcXJldHJ5KHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25lZCBpdikKewog cmV0dXJuIHJlYWRfc2VxcmV0cnkoJnpvbmUtPnNwYW5fc2VxbG9jaywgaXYpOwp9CnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgem9u ZV9zcGFuX3dyaXRlbG9jayhzdHJ1Y3Qgem9uZSAqem9uZSkKewogd3JpdGVfc2VxbG9jaygmem9u ZS0+c3Bhbl9zZXFsb2NrKTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHpvbmVfc3Bhbl93cml0ZXVubG9jayhzdHJ1Y3Qgem9u ZSAqem9uZSkKewogd3JpdGVfc2VxdW5sb2NrKCZ6b25lLT5zcGFuX3NlcWxvY2spOwp9CnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg em9uZV9zZXFsb2NrX2luaXQoc3RydWN0IHpvbmUgKnpvbmUpCnsKIGRvIHsgX19zZXFjb3VudF9p bml0KCYoJnpvbmUtPnNwYW5fc2VxbG9jayktPnNlcWNvdW50LCAoKHZvaWQgKikwKSwgKCh2b2lk ICopMCkpOyBkbyB7IHNwaW5sb2NrX2NoZWNrKCYoJnpvbmUtPnNwYW5fc2VxbG9jayktPmxvY2sp OyBkbyB7ICooJigmKCZ6b25lLT5zcGFuX3NlcWxvY2spLT5sb2NrKS0+cmxvY2spID0gKHJhd19z cGlubG9ja190KSB7IC5yYXdfbG9jayA9IHsgeyAudmFsID0geyAoMCkgfSB9IH0sIH07IH0gd2hp bGUgKDApOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7Cn0KZXh0ZXJuIGludCB6b25lX2dyb3df ZnJlZV9saXN0cyhzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgbG9uZyBuZXdfbnJfcGFnZXMp OwpleHRlcm4gaW50IHpvbmVfZ3Jvd193YWl0cXVldWVzKHN0cnVjdCB6b25lICp6b25lLCB1bnNp Z25lZCBsb25nIG5yX3BhZ2VzKTsKZXh0ZXJuIGludCBhZGRfb25lX2hpZ2hwYWdlKHN0cnVjdCBw YWdlICpwYWdlLCBpbnQgcGZuLCBpbnQgYmFkX3Bwcm8pOwoKZXh0ZXJuIGludCBvbmxpbmVfcGFn ZXModW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCiAgIGludCBvbmxp bmVfdHlwZSwgaW50IG5pZCk7CmV4dGVybiBzdHJ1Y3Qgem9uZSAqdGVzdF9wYWdlc19pbl9hX3pv bmUodW5zaWduZWQgbG9uZyBzdGFydF9wZm4sCiAgICAgIHVuc2lnbmVkIGxvbmcgZW5kX3Bmbik7 CmV4dGVybiB1bnNpZ25lZCBsb25nIF9fb2ZmbGluZV9pc29sYXRlZF9wYWdlcyh1bnNpZ25lZCBs b25nIHN0YXJ0X3BmbiwKICAgICAgdW5zaWduZWQgbG9uZyBlbmRfcGZuKTsKCnR5cGVkZWYgdm9p ZCAoKm9ubGluZV9wYWdlX2NhbGxiYWNrX3QpKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBp bnQgb3JkZXIpOwoKZXh0ZXJuIHZvaWQgZ2VuZXJpY19vbmxpbmVfcGFnZShzdHJ1Y3QgcGFnZSAq cGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKTsKZXh0ZXJuIGludCBzZXRfb25saW5lX3BhZ2VfY2Fs bGJhY2sob25saW5lX3BhZ2VfY2FsbGJhY2tfdCBjYWxsYmFjayk7CmV4dGVybiBpbnQgcmVzdG9y ZV9vbmxpbmVfcGFnZV9jYWxsYmFjayhvbmxpbmVfcGFnZV9jYWxsYmFja190IGNhbGxiYWNrKTsK CmV4dGVybiBpbnQgdHJ5X29ubGluZV9ub2RlKGludCBuaWQpOwoKZXh0ZXJuIGludCBhcmNoX2Fk ZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwKICAgc3RydWN0IG1ocF9yZXN0 cmljdGlvbnMgKnJlc3RyaWN0aW9ucyk7CmV4dGVybiB1NjQgbWF4X21lbV9zaXplOwoKZXh0ZXJu IGJvb2wgbWVtaHBfYXV0b19vbmxpbmU7CgpleHRlcm4gYm9vbCBtb3ZhYmxlX25vZGVfZW5hYmxl ZDsKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCBtb3ZhYmxlX25vZGVfaXNfZW5hYmxlZCh2b2lkKQp7CiByZXR1cm4gbW92YWJsZV9u b2RlX2VuYWJsZWQ7Cn0KCmV4dGVybiB2b2lkIGFyY2hfcmVtb3ZlX21lbW9yeShpbnQgbmlkLCB1 NjQgc3RhcnQsIHU2NCBzaXplLAogICAgICAgICAgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAp OwpleHRlcm4gdm9pZCBfX3JlbW92ZV9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5z aWduZWQgbG9uZyBucl9wYWdlcywKICAgICAgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApOwoK CmV4dGVybiBpbnQgX19hZGRfcGFnZXMoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4s IHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCiAgICAgICAgIHN0cnVjdCBtaHBfcmVzdHJpY3Rpb25z ICpyZXN0cmljdGlvbnMpOwojIDE0MCAiLi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgi CmludCBhZGRfcGFnZXMoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVuc2lnbmVk IGxvbmcgbnJfcGFnZXMsCiAgICAgICBzdHJ1Y3QgbWhwX3Jlc3RyaWN0aW9ucyAqcmVzdHJpY3Rp b25zKTsKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgbWVtb3J5X2FkZF9waHlzYWRkcl90b19uaWQodTY0IHN0YXJ0KQp7CiBy ZXR1cm4gMDsKfQojIDE5OSAiLi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBnX2Rh dGFfdCAqZ2VuZXJpY19hbGxvY19ub2RlZGF0YShpbnQgbmlkKQp7CiBkbyB7IGRvIHsgYXNtIF9f aW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0 aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJc dCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0 IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxu IiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xu IiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgi KSwgImkiICgyMDEpLCAiaSIgKDApLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9 IHdoaWxlICgwKTsgZG8geyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9u IC5kaXNjYXJkLnVucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0 aW9uXG5cdCIgOiA6ICJpIiAoMTYpKTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91 bnJlYWNoYWJsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiByZXR1cm4gKCh2b2lkICop MCk7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBnZW5lcmljX2ZyZWVfbm9kZWRhdGEocGdfZGF0YV90ICpwZ2RhdCkKewp9CnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgYXJjaF9yZWZyZXNoX25vZGVkYXRhKGludCBuaWQsIHBnX2RhdGFfdCAqcGdkYXQpCnsKfQoK CgoKZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkp IF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgcmVnaXN0ZXJfcGFnZV9ib290bWVtX2luZm9fbm9k ZShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTsKCgoKCgpleHRlcm4gdm9pZCBwdXRfcGFnZV9i b290bWVtKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJuIHZvaWQgZ2V0X3BhZ2VfYm9vdG1lbSh1 bnNpZ25lZCBsb25nIGluZ28sIHN0cnVjdCBwYWdlICpwYWdlLAogICAgICAgIHVuc2lnbmVkIGxv bmcgdHlwZSk7Cgp2b2lkIGdldF9vbmxpbmVfbWVtcyh2b2lkKTsKdm9pZCBwdXRfb25saW5lX21l bXModm9pZCk7Cgp2b2lkIG1lbV9ob3RwbHVnX2JlZ2luKHZvaWQpOwp2b2lkIG1lbV9ob3RwbHVn X2RvbmUodm9pZCk7CiMgMjgzICIuL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkKdm9p ZCBwZ2RhdF9yZXNpemVfbG9jayhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCB1bnNpZ25lZCBs b25nICpmbGFncykKewogZG8geyBkbyB7ICh7IHVuc2lnbmVkIGxvbmcgX19kdW1teTsgdHlwZW9m KCpmbGFncykgX19kdW1teTI7ICh2b2lkKSgmX19kdW1teSA9PSAmX19kdW1teTIpOyAxOyB9KTsg KmZsYWdzID0gX3Jhd19zcGluX2xvY2tfaXJxc2F2ZShzcGlubG9ja19jaGVjaygmcGdkYXQtPm5v ZGVfc2l6ZV9sb2NrKSk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKfQpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKQp2b2lkIHBnZGF0X3Jl c2l6ZV91bmxvY2soc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgdW5zaWduZWQgbG9uZyAqZmxh Z3MpCnsKIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBnZGF0LT5ub2RlX3NpemVfbG9jaywgKmZs YWdzKTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKQp2b2lkIHBnZGF0X3Jlc2l6ZV9pbml0KHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQp CnsKIGRvIHsgc3BpbmxvY2tfY2hlY2soJnBnZGF0LT5ub2RlX3NpemVfbG9jayk7IGRvIHsgKigm KCZwZ2RhdC0+bm9kZV9zaXplX2xvY2spLT5ybG9jaykgPSAocmF3X3NwaW5sb2NrX3QpIHsgLnJh d19sb2NrID0geyB7IC52YWwgPSB7ICgwKSB9IH0gfSwgfTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUg KDApOwp9CiMgMzA5ICIuL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIKZXh0ZXJuIGJv b2wgaXNfbWVtX3NlY3Rpb25fcmVtb3ZhYmxlKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBs b25nIG5yX3BhZ2VzKTsKZXh0ZXJuIHZvaWQgdHJ5X29mZmxpbmVfbm9kZShpbnQgbmlkKTsKZXh0 ZXJuIGludCBvZmZsaW5lX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBs b25nIG5yX3BhZ2VzKTsKZXh0ZXJuIGludCByZW1vdmVfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFy dCwgdTY0IHNpemUpOwpleHRlcm4gdm9pZCBfX3JlbW92ZV9tZW1vcnkoaW50IG5pZCwgdTY0IHN0 YXJ0LCB1NjQgc2l6ZSk7CiMgMzM3ICIuL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIK ZXh0ZXJuIHZvaWQgc2V0X3pvbmVfY29udGlndW91cyhzdHJ1Y3Qgem9uZSAqem9uZSk7CmV4dGVy biB2b2lkIGNsZWFyX3pvbmVfY29udGlndW91cyhzdHJ1Y3Qgem9uZSAqem9uZSk7CgpleHRlcm4g dm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLnJlZi50ZXh0IikpKSBfX2F0dHJpYnV0 ZV9fKChfX25vaW5saW5lX18pKSBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoaW50IG5pZCk7 CmV4dGVybiBpbnQgX19hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUpOwpl eHRlcm4gaW50IGFkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSk7CmV4dGVy biBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291 cmNlKTsKZXh0ZXJuIHZvaWQgbW92ZV9wZm5fcmFuZ2VfdG9fem9uZShzdHJ1Y3Qgem9uZSAqem9u ZSwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sCiAgdW5zaWduZWQgbG9uZyBucl9wYWdlcywgc3Ry dWN0IHZtZW1fYWx0bWFwICphbHRtYXApOwpleHRlcm4gdm9pZCByZW1vdmVfcGZuX3JhbmdlX2Zy b21fem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwKICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0 X3BmbiwKICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTsKZXh0ZXJuIGJvb2wgaXNf bWVtYmxvY2tfb2ZmbGluZWQoc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtKTsKZXh0ZXJuIGludCBz cGFyc2VfYWRkX3NlY3Rpb24oaW50IG5pZCwgdW5zaWduZWQgbG9uZyBwZm4sCiAgdW5zaWduZWQg bG9uZyBucl9wYWdlcywgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApOwpleHRlcm4gdm9pZCBz cGFyc2VfcmVtb3ZlX3NlY3Rpb24oc3RydWN0IG1lbV9zZWN0aW9uICptcywKICB1bnNpZ25lZCBs b25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKICB1bnNpZ25lZCBsb25nIG1hcF9vZmZz ZXQsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwKTsKZXh0ZXJuIHN0cnVjdCBwYWdlICpzcGFy c2VfZGVjb2RlX21lbV9tYXAodW5zaWduZWQgbG9uZyBjb2RlZF9tZW1fbWFwLAogICAgICAgdW5z aWduZWQgbG9uZyBwbnVtKTsKZXh0ZXJuIGJvb2wgYWxsb3dfb25saW5lX3Bmbl9yYW5nZShpbnQg bmlkLCB1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKICBpbnQgb25s aW5lX3R5cGUpOwpleHRlcm4gc3RydWN0IHpvbmUgKnpvbmVfZm9yX3Bmbl9yYW5nZShpbnQgb25s aW5lX3R5cGUsIGludCBuaWQsIHVuc2lnbmVkIHN0YXJ0X3BmbiwKICB1bnNpZ25lZCBsb25nIG5y X3BhZ2VzKTsKIyA4MjQgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgoKdm9pZCBidWlsZF9h bGxfem9uZWxpc3RzKHBnX2RhdGFfdCAqcGdkYXQpOwp2b2lkIHdha2V1cF9rc3dhcGQoc3RydWN0 IHpvbmUgKnpvbmUsIGdmcF90IGdmcF9tYXNrLCBpbnQgb3JkZXIsCiAgICAgZW51bSB6b25lX3R5 cGUgY2xhc3N6b25lX2lkeCk7CmJvb2wgX196b25lX3dhdGVybWFya19vayhzdHJ1Y3Qgem9uZSAq eiwgdW5zaWduZWQgaW50IG9yZGVyLCB1bnNpZ25lZCBsb25nIG1hcmssCiAgICBpbnQgY2xhc3N6 b25lX2lkeCwgdW5zaWduZWQgaW50IGFsbG9jX2ZsYWdzLAogICAgbG9uZyBmcmVlX3BhZ2VzKTsK Ym9vbCB6b25lX3dhdGVybWFya19vayhzdHJ1Y3Qgem9uZSAqeiwgdW5zaWduZWQgaW50IG9yZGVy LAogIHVuc2lnbmVkIGxvbmcgbWFyaywgaW50IGNsYXNzem9uZV9pZHgsCiAgdW5zaWduZWQgaW50 IGFsbG9jX2ZsYWdzKTsKYm9vbCB6b25lX3dhdGVybWFya19va19zYWZlKHN0cnVjdCB6b25lICp6 LCB1bnNpZ25lZCBpbnQgb3JkZXIsCiAgdW5zaWduZWQgbG9uZyBtYXJrLCBpbnQgY2xhc3N6b25l X2lkeCk7CmVudW0gbWVtbWFwX2NvbnRleHQgewogTUVNTUFQX0VBUkxZLAogTUVNTUFQX0hPVFBM VUcsCn07CmV4dGVybiB2b2lkIGluaXRfY3VycmVudGx5X2VtcHR5X3pvbmUoc3RydWN0IHpvbmUg KnpvbmUsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLAogICAgICAgICB1bnNpZ25lZCBsb25nIHNp emUpOwoKZXh0ZXJuIHZvaWQgbHJ1dmVjX2luaXQoc3RydWN0IGxydXZlYyAqbHJ1dmVjKTsKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0 cnVjdCBwZ2xpc3RfZGF0YSAqbHJ1dmVjX3BnZGF0KHN0cnVjdCBscnV2ZWMgKmxydXZlYykKewoK IHJldHVybiBscnV2ZWMtPnBnZGF0OwoKCgp9CgpleHRlcm4gdW5zaWduZWQgbG9uZyBscnV2ZWNf bHJ1X3NpemUoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBlbnVtIGxydV9saXN0IGxydSwgaW50IHpv bmVfaWR4KTsKCgp2b2lkIG1lbW9yeV9wcmVzZW50KGludCBuaWQsIHVuc2lnbmVkIGxvbmcgc3Rh cnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKCgoKCgp2b2lkIG1lbWJsb2Nrc19wcmVzZW50KHZvaWQp OwoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IGxvY2FsX21lbW9yeV9ub2RlKGludCBub2RlX2lkKSB7IHJldHVybiBub2Rl X2lkOyB9OwojIDg4NSAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIG1hbmFnZWRfem9u ZShzdHJ1Y3Qgem9uZSAqem9uZSkKewogcmV0dXJuIHpvbmVfbWFuYWdlZF9wYWdlcyh6b25lKTsK fQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgcG9wdWxhdGVkX3pvbmUoc3RydWN0IHpvbmUgKnpvbmUpCnsKIHJldHVybiB6b25l LT5wcmVzZW50X3BhZ2VzOwp9CiMgOTA3ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB6 b25lX3RvX25pZChzdHJ1Y3Qgem9uZSAqem9uZSkKewogcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgem9uZV9z ZXRfbmlkKHN0cnVjdCB6b25lICp6b25lLCBpbnQgbmlkKSB7fQoKCmV4dGVybiBpbnQgbW92YWJs ZV96b25lOwojIDkyOCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaXNfaGlnaG1lbV9p ZHgoZW51bSB6b25lX3R5cGUgaWR4KQp7CgoKCgogcmV0dXJuIDA7Cgp9CgoKCgoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaXNf aGlnaG1lbShzdHJ1Y3Qgem9uZSAqem9uZSkKewoKCgogcmV0dXJuIDA7Cgp9CgoKc3RydWN0IGN0 bF90YWJsZTsKaW50IG1pbl9mcmVlX2tieXRlc19zeXNjdGxfaGFuZGxlcihzdHJ1Y3QgY3RsX3Rh YmxlICosIGludCwKICAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CmludCB3YXRlcm1h cmtfYm9vc3RfZmFjdG9yX3N5c2N0bF9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAog ICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKaW50IHdhdGVybWFya19zY2FsZV9mYWN0 b3Jfc3lzY3RsX2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCiAgICAgdm9pZCAqLCBz aXplX3QgKiwgbG9mZl90ICopOwpleHRlcm4gaW50IHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRp b1s0XTsKaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKHN0cnVjdCBjdGxf dGFibGUgKiwgaW50LAogICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKaW50IHBlcmNw dV9wYWdlbGlzdF9mcmFjdGlvbl9zeXNjdGxfaGFuZGxlcihzdHJ1Y3QgY3RsX3RhYmxlICosIGlu dCwKICAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CmludCBzeXNjdGxfbWluX3VubWFw cGVkX3JhdGlvX3N5c2N0bF9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAogICB2b2lk ICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CmludCBzeXNjdGxfbWluX3NsYWJfcmF0aW9fc3lzY3Rs X2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCiAgIHZvaWQgKiwgc2l6ZV90ICosIGxv ZmZfdCAqKTsKCmV4dGVybiBpbnQgbnVtYV96b25lbGlzdF9vcmRlcl9oYW5kbGVyKHN0cnVjdCBj dGxfdGFibGUgKiwgaW50LAogICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CmV4dGVybiBj aGFyIG51bWFfem9uZWxpc3Rfb3JkZXJbXTsKCgoKCmV4dGVybiBzdHJ1Y3QgcGdsaXN0X2RhdGEg Y29udGlnX3BhZ2VfZGF0YTsKIyA5ODggIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKZXh0ZXJu IHN0cnVjdCBwZ2xpc3RfZGF0YSAqZmlyc3Rfb25saW5lX3BnZGF0KHZvaWQpOwpleHRlcm4gc3Ry dWN0IHBnbGlzdF9kYXRhICpuZXh0X29ubGluZV9wZ2RhdChzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBn ZGF0KTsKZXh0ZXJuIHN0cnVjdCB6b25lICpuZXh0X3pvbmUoc3RydWN0IHpvbmUgKnpvbmUpOwoj IDEwMjAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHpvbmUgKnpvbmVsaXN0X3pv bmUoc3RydWN0IHpvbmVyZWYgKnpvbmVyZWYpCnsKIHJldHVybiB6b25lcmVmLT56b25lOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgem9uZWxpc3Rfem9uZV9pZHgoc3RydWN0IHpvbmVyZWYgKnpvbmVyZWYpCnsKIHJldHVybiB6 b25lcmVmLT56b25lX2lkeDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHpvbmVsaXN0X25vZGVfaWR4KHN0cnVjdCB6b25lcmVm ICp6b25lcmVmKQp7CiByZXR1cm4gem9uZV90b19uaWQoem9uZXJlZi0+em9uZSk7Cn0KCnN0cnVj dCB6b25lcmVmICpfX25leHRfem9uZXNfem9uZWxpc3Qoc3RydWN0IHpvbmVyZWYgKnosCiAgICAg ZW51bSB6b25lX3R5cGUgaGlnaGVzdF96b25laWR4LAogICAgIG5vZGVtYXNrX3QgKm5vZGVzKTsK IyAxMDUxICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgc3RydWN0IHpvbmVyZWYgKm5leHRfem9uZXNfem9uZWxpc3Qoc3RydWN0IHpv bmVyZWYgKnosCiAgICAgZW51bSB6b25lX3R5cGUgaGlnaGVzdF96b25laWR4LAogICAgIG5vZGVt YXNrX3QgKm5vZGVzKQp7CiBpZiAoX19idWlsdGluX2V4cGVjdCghISghbm9kZXMgJiYgem9uZWxp c3Rfem9uZV9pZHgoeikgPD0gaGlnaGVzdF96b25laWR4KSwgMSkpCiAgcmV0dXJuIHo7CiByZXR1 cm4gX19uZXh0X3pvbmVzX3pvbmVsaXN0KHosIGhpZ2hlc3Rfem9uZWlkeCwgbm9kZXMpOwp9CiMg MTA3NiAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qgem9uZXJlZiAqZmlyc3Rfem9u ZXNfem9uZWxpc3Qoc3RydWN0IHpvbmVsaXN0ICp6b25lbGlzdCwKICAgICBlbnVtIHpvbmVfdHlw ZSBoaWdoZXN0X3pvbmVpZHgsCiAgICAgbm9kZW1hc2tfdCAqbm9kZXMpCnsKIHJldHVybiBuZXh0 X3pvbmVzX3pvbmVsaXN0KHpvbmVsaXN0LT5fem9uZXJlZnMsCiAgICAgICBoaWdoZXN0X3pvbmVp ZHgsIG5vZGVzKTsKfQojIDExNjAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQg bG9uZyBwZm5fdG9fc2VjdGlvbl9ucih1bnNpZ25lZCBsb25nIHBmbikKewogcmV0dXJuIHBmbiA+ PiAoMjcgLSAxMik7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBzZWN0aW9uX25yX3RvX3Bmbih1bnNpZ25lZCBs b25nIHNlYykKewogcmV0dXJuIHNlYyA8PCAoMjcgLSAxMik7Cn0KIyAxMTg3ICIuL2luY2x1ZGUv bGludXgvbW16b25lLmgiCnN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSB7CiB1bnNpZ25lZCBsb25n IHN1YnNlY3Rpb25fbWFwWygoKCgxVUwgPDwgKDI3IC0gMjEpKSkgKyAoKHNpemVvZihsb25nKSAq IDgpKSAtIDEpIC8gKChzaXplb2YobG9uZykgKiA4KSkpXTsKCiB1bnNpZ25lZCBsb25nIHBhZ2Vi bG9ja19mbGFnc1swXTsKfTsKCnZvaWQgc3Vic2VjdGlvbl9tYXBfaW5pdCh1bnNpZ25lZCBsb25n IHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyk7CgpzdHJ1Y3QgcGFnZTsKc3RydWN0IHBhZ2Vf ZXh0OwpzdHJ1Y3QgbWVtX3NlY3Rpb24gewojIDEyMTAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUu aCIKIHVuc2lnbmVkIGxvbmcgc2VjdGlvbl9tZW1fbWFwOwoKIHN0cnVjdCBtZW1fc2VjdGlvbl91 c2FnZSAqdXNhZ2U7CgoKCgoKIHN0cnVjdCBwYWdlX2V4dCAqcGFnZV9leHQ7CiB1bnNpZ25lZCBs b25nIHBhZDsKCgoKCgp9OwojIDEyMzggIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKZXh0ZXJu IHN0cnVjdCBtZW1fc2VjdGlvbiAqKm1lbV9zZWN0aW9uOwoKCgoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyAqc2Vj dGlvbl90b191c2VtYXAoc3RydWN0IG1lbV9zZWN0aW9uICptcykKewogcmV0dXJuIG1zLT51c2Fn ZS0+cGFnZWJsb2NrX2ZsYWdzOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgbWVtX3NlY3Rpb24gKl9fbnJfdG9fc2VjdGlv bih1bnNpZ25lZCBsb25nIG5yKQp7CgogaWYgKCFtZW1fc2VjdGlvbikKICByZXR1cm4gKCh2b2lk ICopMCk7CgogaWYgKCFtZW1fc2VjdGlvblsoKG5yKSAvICgoKDFVTCkgPDwgMTIpIC8gc2l6ZW9m IChzdHJ1Y3QgbWVtX3NlY3Rpb24pKSldKQogIHJldHVybiAoKHZvaWQgKikwKTsKIHJldHVybiAm bWVtX3NlY3Rpb25bKChucikgLyAoKCgxVUwpIDw8IDEyKSAvIHNpemVvZiAoc3RydWN0IG1lbV9z ZWN0aW9uKSkpXVtuciAmICgoKCgxVUwpIDw8IDEyKSAvIHNpemVvZiAoc3RydWN0IG1lbV9zZWN0 aW9uKSkgLSAxKV07Cn0KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19zZWN0aW9uX25yKHN0cnVjdCBt ZW1fc2VjdGlvbiAqbXMpOwpleHRlcm4gc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9p ZCk7CiMgMTI4MiAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgcGFnZSAqX19zZWN0 aW9uX21lbV9tYXBfYWRkcihzdHJ1Y3QgbWVtX3NlY3Rpb24gKnNlY3Rpb24pCnsKIHVuc2lnbmVk IGxvbmcgbWFwID0gc2VjdGlvbi0+c2VjdGlvbl9tZW1fbWFwOwogbWFwICY9ICh+KCgxVUw8PDQp LTEpKTsKIHJldHVybiAoc3RydWN0IHBhZ2UgKiltYXA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwcmVzZW50X3NlY3Rpb24o c3RydWN0IG1lbV9zZWN0aW9uICpzZWN0aW9uKQp7CiByZXR1cm4gKHNlY3Rpb24gJiYgKHNlY3Rp b24tPnNlY3Rpb25fbWVtX21hcCAmICgxVUw8PDApKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwcmVzZW50X3NlY3Rpb25f bnIodW5zaWduZWQgbG9uZyBucikKewogcmV0dXJuIHByZXNlbnRfc2VjdGlvbihfX25yX3RvX3Nl Y3Rpb24obnIpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHZhbGlkX3NlY3Rpb24oc3RydWN0IG1lbV9zZWN0aW9uICpzZWN0 aW9uKQp7CiByZXR1cm4gKHNlY3Rpb24gJiYgKHNlY3Rpb24tPnNlY3Rpb25fbWVtX21hcCAmICgx VUw8PDEpKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBlYXJseV9zZWN0aW9uKHN0cnVjdCBtZW1fc2VjdGlvbiAqc2VjdGlv bikKewogcmV0dXJuIChzZWN0aW9uICYmIChzZWN0aW9uLT5zZWN0aW9uX21lbV9tYXAgJiAoMVVM PDwzKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgdmFsaWRfc2VjdGlvbl9ucih1bnNpZ25lZCBsb25nIG5yKQp7CiByZXR1 cm4gdmFsaWRfc2VjdGlvbihfX25yX3RvX3NlY3Rpb24obnIpKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG9ubGluZV9zZWN0 aW9uKHN0cnVjdCBtZW1fc2VjdGlvbiAqc2VjdGlvbikKewogcmV0dXJuIChzZWN0aW9uICYmIChz ZWN0aW9uLT5zZWN0aW9uX21lbV9tYXAgJiAoMVVMPDwyKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgb25saW5lX3NlY3Rp b25fbnIodW5zaWduZWQgbG9uZyBucikKewogcmV0dXJuIG9ubGluZV9zZWN0aW9uKF9fbnJfdG9f c2VjdGlvbihucikpOwp9CgoKdm9pZCBvbmxpbmVfbWVtX3NlY3Rpb25zKHVuc2lnbmVkIGxvbmcg c3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIGVuZF9wZm4pOwoKdm9pZCBvZmZsaW5lX21lbV9zZWN0 aW9ucyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBlbmRfcGZuKTsKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IG1lbV9zZWN0aW9uICpfX3Bmbl90b19zZWN0aW9uKHVuc2lnbmVkIGxvbmcgcGZuKQp7 CiByZXR1cm4gX19ucl90b19zZWN0aW9uKHBmbl90b19zZWN0aW9uX25yKHBmbikpOwp9CgpleHRl cm4gdW5zaWduZWQgbG9uZyBfX2hpZ2hlc3RfcHJlc2VudF9zZWN0aW9uX25yOwoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHN1YnNl Y3Rpb25fbWFwX2luZGV4KHVuc2lnbmVkIGxvbmcgcGZuKQp7CiByZXR1cm4gKHBmbiAmIH4oKH4o KDFVTCA8PCAoMjcgLSAxMikpLTEpKSkpIC8gKDFVTCA8PCAoMjEgLSAxMikpOwp9CgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHBm bl9zZWN0aW9uX3ZhbGlkKHN0cnVjdCBtZW1fc2VjdGlvbiAqbXMsIHVuc2lnbmVkIGxvbmcgcGZu KQp7CiBpbnQgaWR4ID0gc3Vic2VjdGlvbl9tYXBfaW5kZXgocGZuKTsKCiByZXR1cm4gdGVzdF9i aXQoaWR4LCBtcy0+dXNhZ2UtPnN1YnNlY3Rpb25fbWFwKTsKfQojIDEzNTggIi4vaW5jbHVkZS9s aW51eC9tbXpvbmUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHBmbl92YWxpZCh1bnNpZ25lZCBsb25nIHBmbikKewogc3RydWN0 IG1lbV9zZWN0aW9uICptczsKCiBpZiAocGZuX3RvX3NlY3Rpb25fbnIocGZuKSA+PSAoMVVMIDw8 ICgoMCA/IDUyIDogNDYpIC0gMjcpKSkKICByZXR1cm4gMDsKIG1zID0gX19ucl90b19zZWN0aW9u KHBmbl90b19zZWN0aW9uX25yKHBmbikpOwogaWYgKCF2YWxpZF9zZWN0aW9uKG1zKSkKICByZXR1 cm4gMDsKCgoKCiByZXR1cm4gZWFybHlfc2VjdGlvbihtcykgfHwgcGZuX3NlY3Rpb25fdmFsaWQo bXMsIHBmbik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgcGZuX3ByZXNlbnQodW5zaWduZWQgbG9uZyBwZm4pCnsKIGlmIChw Zm5fdG9fc2VjdGlvbl9ucihwZm4pID49ICgxVUwgPDwgKCgwID8gNTIgOiA0NikgLSAyNykpKQog IHJldHVybiAwOwogcmV0dXJuIHByZXNlbnRfc2VjdGlvbihfX25yX3RvX3NlY3Rpb24ocGZuX3Rv X3NlY3Rpb25fbnIocGZuKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIG5leHRfcHJlc2VudF9zZWN0aW9u X25yKHVuc2lnbmVkIGxvbmcgc2VjdGlvbl9ucikKewogd2hpbGUgKCsrc2VjdGlvbl9uciA8PSBf X2hpZ2hlc3RfcHJlc2VudF9zZWN0aW9uX25yKSB7CiAgaWYgKHByZXNlbnRfc2VjdGlvbl9ucihz ZWN0aW9uX25yKSkKICAgcmV0dXJuIHNlY3Rpb25fbnI7CiB9CgogcmV0dXJuIC0xOwp9CiMgMTQw OCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgp2b2lkIHNwYXJzZV9pbml0KHZvaWQpOwojIDE0 MjEgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RydWN0IG1taW5pdF9wZm5uaWRfY2FjaGUg ewogdW5zaWduZWQgbG9uZyBsYXN0X3N0YXJ0OwogdW5zaWduZWQgbG9uZyBsYXN0X2VuZDsKIGlu dCBsYXN0X25pZDsKfTsKCgoKCgp2b2lkIG1lbW9yeV9wcmVzZW50KGludCBuaWQsIHVuc2lnbmVk IGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKIyAxNDY5ICIuL2luY2x1ZGUvbGludXgv bW16b25lLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGJvb2wgbWVtbWFwX3ZhbGlkX3dpdGhpbih1bnNpZ25lZCBsb25nIHBmbiwKICAg ICBzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHpvbmUgKnpvbmUpCnsKIHJldHVybiB0cnVlOwp9 CiMgNyAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIiAyCgoKIyAxICIuL2luY2x1ZGUvbGludXgvdG9w b2xvZ3kuaCIgMQojIDMwICIuL2luY2x1ZGUvbGludXgvdG9wb2xvZ3kuaCIKIyAxICIuL2luY2x1 ZGUvbGludXgvYXJjaF90b3BvbG9neS5oIiAxCiMgOSAiLi9pbmNsdWRlL2xpbnV4L2FyY2hfdG9w b2xvZ3kuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LmgiIDEKCgoKCgoKIyAxICIuL2lu Y2x1ZGUvbGludXgvc21wLmgiIDEKIyAxNSAiLi9pbmNsdWRlL2xpbnV4L3NtcC5oIgojIDEgIi4v aW5jbHVkZS9saW51eC9sbGlzdC5oIiAxCiMgNTQgIi4vaW5jbHVkZS9saW51eC9sbGlzdC5oIgpz dHJ1Y3QgbGxpc3RfaGVhZCB7CiBzdHJ1Y3QgbGxpc3Rfbm9kZSAqZmlyc3Q7Cn07CgpzdHJ1Y3Qg bGxpc3Rfbm9kZSB7CiBzdHJ1Y3QgbGxpc3Rfbm9kZSAqbmV4dDsKfTsKIyA2OSAiLi9pbmNsdWRl L2xpbnV4L2xsaXN0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgaW5pdF9sbGlzdF9oZWFkKHN0cnVjdCBsbGlzdF9oZWFkICps aXN0KQp7CiBsaXN0LT5maXJzdCA9ICgodm9pZCAqKTApOwp9CiMgMTg3ICIuL2luY2x1ZGUvbGlu dXgvbGxpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBsbGlzdF9lbXB0eShjb25zdCBzdHJ1Y3QgbGxpc3RfaGVhZCAqaGVh ZCkKewogcmV0dXJuICh7IHVuaW9uIHsgdHlwZW9mKGhlYWQtPmZpcnN0KSBfX3ZhbDsgY2hhciBf X2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKGhlYWQtPmZpcnN0KSwgX191 Ll9fYywgc2l6ZW9mKGhlYWQtPmZpcnN0KSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNr KCYoaGVhZC0+Zmlyc3QpLCBfX3UuX19jLCBzaXplb2YoaGVhZC0+Zmlyc3QpKTsgZG8geyB9IHdo aWxlICgwKTsgX191Ll9fdmFsOyB9KSA9PSAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGxsaXN0X25v ZGUgKmxsaXN0X25leHQoc3RydWN0IGxsaXN0X25vZGUgKm5vZGUpCnsKIHJldHVybiBub2RlLT5u ZXh0Owp9CgpleHRlcm4gYm9vbCBsbGlzdF9hZGRfYmF0Y2goc3RydWN0IGxsaXN0X25vZGUgKm5l d19maXJzdCwKICAgICAgIHN0cnVjdCBsbGlzdF9ub2RlICpuZXdfbGFzdCwKICAgICAgIHN0cnVj dCBsbGlzdF9oZWFkICpoZWFkKTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgbGxpc3RfYWRkKHN0cnVjdCBsbGlzdF9u b2RlICpuZXcsIHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKQp7CiByZXR1cm4gbGxpc3RfYWRkX2Jh dGNoKG5ldywgbmV3LCBoZWFkKTsKfQojIDIyMCAiLi9pbmNsdWRlL2xpbnV4L2xsaXN0LmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0 cnVjdCBsbGlzdF9ub2RlICpsbGlzdF9kZWxfYWxsKHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKQp7 CiByZXR1cm4gKHsgdHlwZW9mKCZoZWFkLT5maXJzdCkgX19haV9wdHIgPSAoJmhlYWQtPmZpcnN0 KTsga2FzYW5fY2hlY2tfd3JpdGUoX19haV9wdHIsIHNpemVvZigqX19haV9wdHIpKTsgKHsgX190 eXBlb2ZfXyAoKigoX19haV9wdHIpKSkgX19yZXQgPSAoKCgodm9pZCAqKTApKSk7IHN3aXRjaCAo c2l6ZW9mKCooKF9fYWlfcHRyKSkpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgiIiAieGNoZyIg ImIgJWIwLCAlMVxuIiA6ICIrcSIgKF9fcmV0KSwgIittIiAoKigoX19haV9wdHIpKSkgOiA6ICJt ZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgiIiAieGNoZyIgIncg JXcwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoX19haV9wdHIpKSkgOiA6ICJtZW1v cnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgiIiAieGNoZyIgImwgJTAs ICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKChfX2FpX3B0cikpKSA6IDogIm1lbW9yeSIs ICJjYyIpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAicSAlcTAsICUx XG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKChfX2FpX3B0cikpKSA6IDogIm1lbW9yeSIsICJj YyIpOyBicmVhazsgZGVmYXVsdDogX194Y2hnX3dyb25nX3NpemUoKTsgfSBfX3JldDsgfSk7IH0p Owp9CgpleHRlcm4gc3RydWN0IGxsaXN0X25vZGUgKmxsaXN0X2RlbF9maXJzdChzdHJ1Y3QgbGxp c3RfaGVhZCAqaGVhZCk7CgpzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxpc3RfcmV2ZXJzZV9vcmRlcihz dHJ1Y3QgbGxpc3Rfbm9kZSAqaGVhZCk7CiMgMTYgIi4vaW5jbHVkZS9saW51eC9zbXAuaCIgMgoK dHlwZWRlZiB2b2lkICgqc21wX2NhbGxfZnVuY190KSh2b2lkICppbmZvKTsKdHlwZWRlZiBib29s ICgqc21wX2NvbmRfZnVuY190KShpbnQgY3B1LCB2b2lkICppbmZvKTsKc3RydWN0IF9fY2FsbF9z aW5nbGVfZGF0YSB7CiBzdHJ1Y3QgbGxpc3Rfbm9kZSBsbGlzdDsKIHNtcF9jYWxsX2Z1bmNfdCBm dW5jOwogdm9pZCAqaW5mbzsKIHVuc2lnbmVkIGludCBmbGFnczsKfTsKCgp0eXBlZGVmIHN0cnVj dCBfX2NhbGxfc2luZ2xlX2RhdGEgY2FsbF9zaW5nbGVfZGF0YV90CiBfX2F0dHJpYnV0ZV9fKChf X2FsaWduZWRfXyhzaXplb2Yoc3RydWN0IF9fY2FsbF9zaW5nbGVfZGF0YSkpKSk7CgoKZXh0ZXJu IHVuc2lnbmVkIGludCB0b3RhbF9jcHVzOwoKaW50IHNtcF9jYWxsX2Z1bmN0aW9uX3NpbmdsZShp bnQgY3B1aWQsIHNtcF9jYWxsX2Z1bmNfdCBmdW5jLCB2b2lkICppbmZvLAogICAgICAgIGludCB3 YWl0KTsKCgoKCnZvaWQgb25fZWFjaF9jcHUoc21wX2NhbGxfZnVuY190IGZ1bmMsIHZvaWQgKmlu Zm8sIGludCB3YWl0KTsKCgoKCgp2b2lkIG9uX2VhY2hfY3B1X21hc2soY29uc3Qgc3RydWN0IGNw dW1hc2sgKm1hc2ssIHNtcF9jYWxsX2Z1bmNfdCBmdW5jLAogIHZvaWQgKmluZm8sIGJvb2wgd2Fp dCk7CgoKCgoKCnZvaWQgb25fZWFjaF9jcHVfY29uZChzbXBfY29uZF9mdW5jX3QgY29uZF9mdW5j LCBzbXBfY2FsbF9mdW5jX3QgZnVuYywKICAgICAgICB2b2lkICppbmZvLCBib29sIHdhaXQpOwoK dm9pZCBvbl9lYWNoX2NwdV9jb25kX21hc2soc21wX2NvbmRfZnVuY190IGNvbmRfZnVuYywgc21w X2NhbGxfZnVuY190IGZ1bmMsCiAgICAgIHZvaWQgKmluZm8sIGJvb2wgd2FpdCwgY29uc3Qgc3Ry dWN0IGNwdW1hc2sgKm1hc2spOwoKaW50IHNtcF9jYWxsX2Z1bmN0aW9uX3NpbmdsZV9hc3luYyhp bnQgY3B1LCBjYWxsX3NpbmdsZV9kYXRhX3QgKmNzZCk7CgoKCgoKCgojIDEgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vc21wLmgiIDEKIyAxMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zbXAuaCIK IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3BlYy5oIiAxCgoKCgoKIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL21wc3BlY19kZWYuaCIgMQojIDIyICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL21wc3BlY19kZWYuaCIKc3RydWN0IG1wZl9pbnRlbCB7CiBjaGFyIHNpZ25hdHVyZVs0XTsK IHVuc2lnbmVkIGludCBwaHlzcHRyOwogdW5zaWduZWQgY2hhciBsZW5ndGg7CiB1bnNpZ25lZCBj aGFyIHNwZWNpZmljYXRpb247CiB1bnNpZ25lZCBjaGFyIGNoZWNrc3VtOwogdW5zaWduZWQgY2hh ciBmZWF0dXJlMTsKIHVuc2lnbmVkIGNoYXIgZmVhdHVyZTI7CiB1bnNpZ25lZCBjaGFyIGZlYXR1 cmUzOwogdW5zaWduZWQgY2hhciBmZWF0dXJlNDsKIHVuc2lnbmVkIGNoYXIgZmVhdHVyZTU7Cn07 CgoKCnN0cnVjdCBtcGNfdGFibGUgewogY2hhciBzaWduYXR1cmVbNF07CiB1bnNpZ25lZCBzaG9y dCBsZW5ndGg7CiBjaGFyIHNwZWM7CiBjaGFyIGNoZWNrc3VtOwogY2hhciBvZW1bOF07CiBjaGFy IHByb2R1Y3RpZFsxMl07CiB1bnNpZ25lZCBpbnQgb2VtcHRyOwogdW5zaWduZWQgc2hvcnQgb2Vt c2l6ZTsKIHVuc2lnbmVkIHNob3J0IG9lbWNvdW50OwogdW5zaWduZWQgaW50IGxhcGljOwogdW5z aWduZWQgaW50IHJlc2VydmVkOwp9OwojIDY4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3Bl Y19kZWYuaCIKc3RydWN0IG1wY19jcHUgewogdW5zaWduZWQgY2hhciB0eXBlOwogdW5zaWduZWQg Y2hhciBhcGljaWQ7CiB1bnNpZ25lZCBjaGFyIGFwaWN2ZXI7CiB1bnNpZ25lZCBjaGFyIGNwdWZs YWc7CiB1bnNpZ25lZCBpbnQgY3B1ZmVhdHVyZTsKIHVuc2lnbmVkIGludCBmZWF0dXJlZmxhZzsK IHVuc2lnbmVkIGludCByZXNlcnZlZFsyXTsKfTsKCnN0cnVjdCBtcGNfYnVzIHsKIHVuc2lnbmVk IGNoYXIgdHlwZTsKIHVuc2lnbmVkIGNoYXIgYnVzaWQ7CiB1bnNpZ25lZCBjaGFyIGJ1c3R5cGVb Nl07Cn07CiMgMTA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3BlY19kZWYuaCIKc3RydWN0 IG1wY19pb2FwaWMgewogdW5zaWduZWQgY2hhciB0eXBlOwogdW5zaWduZWQgY2hhciBhcGljaWQ7 CiB1bnNpZ25lZCBjaGFyIGFwaWN2ZXI7CiB1bnNpZ25lZCBjaGFyIGZsYWdzOwogdW5zaWduZWQg aW50IGFwaWNhZGRyOwp9OwoKc3RydWN0IG1wY19pbnRzcmMgewogdW5zaWduZWQgY2hhciB0eXBl OwogdW5zaWduZWQgY2hhciBpcnF0eXBlOwogdW5zaWduZWQgc2hvcnQgaXJxZmxhZzsKIHVuc2ln bmVkIGNoYXIgc3JjYnVzOwogdW5zaWduZWQgY2hhciBzcmNidXNpcnE7CiB1bnNpZ25lZCBjaGFy IGRzdGFwaWM7CiB1bnNpZ25lZCBjaGFyIGRzdGlycTsKfTsKCmVudW0gbXBfaXJxX3NvdXJjZV90 eXBlcyB7CiBtcF9JTlQgPSAwLAogbXBfTk1JID0gMSwKIG1wX1NNSSA9IDIsCiBtcF9FeHRJTlQg PSAzCn07CiMgMTQ1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3BlY19kZWYuaCIKc3RydWN0 IG1wY19saW50c3JjIHsKIHVuc2lnbmVkIGNoYXIgdHlwZTsKIHVuc2lnbmVkIGNoYXIgaXJxdHlw ZTsKIHVuc2lnbmVkIHNob3J0IGlycWZsYWc7CiB1bnNpZ25lZCBjaGFyIHNyY2J1c2lkOwogdW5z aWduZWQgY2hhciBzcmNidXNpcnE7CiB1bnNpZ25lZCBjaGFyIGRlc3RhcGljOwogdW5zaWduZWQg Y2hhciBkZXN0YXBpY2xpbnQ7Cn07CgoKCnN0cnVjdCBtcGNfb2VtdGFibGUgewogY2hhciBzaWdu YXR1cmVbNF07CiB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CiBjaGFyIHJldjsKIGNoYXIgY2hlY2tz dW07CiBjaGFyIG1wY1s4XTsKfTsKIyAxNzcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVj X2RlZi5oIgplbnVtIG1wX2J1c3R5cGUgewogTVBfQlVTX0lTQSA9IDEsCiBNUF9CVVNfRUlTQSwK IE1QX0JVU19QQ0ksCn07CiMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tcHNwZWMuaCIgMgoj IDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20veDg2X2luaXQuaCIgMQoKCgoKCgpzdHJ1Y3QgbXBj X2J1czsKc3RydWN0IG1wY19jcHU7CnN0cnVjdCBtcGNfdGFibGU7CnN0cnVjdCBjcHVpbmZvX3g4 NjsKIyAyMyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgpzdHJ1Y3QgeDg2X2lu aXRfbXBwYXJzZSB7CiB2b2lkICgqbXBjX3JlY29yZCkodW5zaWduZWQgaW50IG1vZGUpOwogdm9p ZCAoKnNldHVwX2lvYXBpY19pZHMpKHZvaWQpOwogaW50ICgqbXBjX2FwaWNfaWQpKHN0cnVjdCBt cGNfY3B1ICptKTsKIHZvaWQgKCpzbXBfcmVhZF9tcGNfb2VtKShzdHJ1Y3QgbXBjX3RhYmxlICpt cGMpOwogdm9pZCAoKm1wY19vZW1fcGNpX2J1cykoc3RydWN0IG1wY19idXMgKm0pOwogdm9pZCAo Km1wY19vZW1fYnVzX2luZm8pKHN0cnVjdCBtcGNfYnVzICptLCBjaGFyICpuYW1lKTsKIHZvaWQg KCpmaW5kX3NtcF9jb25maWcpKHZvaWQpOwogdm9pZCAoKmdldF9zbXBfY29uZmlnKSh1bnNpZ25l ZCBpbnQgZWFybHkpOwp9OwojIDQyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0Lmgi CnN0cnVjdCB4ODZfaW5pdF9yZXNvdXJjZXMgewogdm9pZCAoKnByb2JlX3JvbXMpKHZvaWQpOwog dm9pZCAoKnJlc2VydmVfcmVzb3VyY2VzKSh2b2lkKTsKIGNoYXIgKigqbWVtb3J5X3NldHVwKSh2 b2lkKTsKfTsKIyA1NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgpzdHJ1Y3Qg eDg2X2luaXRfaXJxcyB7CiB2b2lkICgqcHJlX3ZlY3Rvcl9pbml0KSh2b2lkKTsKIHZvaWQgKCpp bnRyX2luaXQpKHZvaWQpOwogdm9pZCAoKnRyYXBfaW5pdCkodm9pZCk7CiB2b2lkICgqaW50cl9t b2RlX3NlbGVjdCkodm9pZCk7CiB2b2lkICgqaW50cl9tb2RlX2luaXQpKHZvaWQpOwp9OwoKCgoK CgpzdHJ1Y3QgeDg2X2luaXRfb2VtIHsKIHZvaWQgKCphcmNoX3NldHVwKSh2b2lkKTsKIHZvaWQg KCpiYW5uZXIpKHZvaWQpOwp9OwojIDgyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0 LmgiCnN0cnVjdCB4ODZfaW5pdF9wYWdpbmcgewogdm9pZCAoKnBhZ2V0YWJsZV9pbml0KSh2b2lk KTsKfTsKIyA5MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgpzdHJ1Y3QgeDg2 X2luaXRfdGltZXJzIHsKIHZvaWQgKCpzZXR1cF9wZXJjcHVfY2xvY2tldikodm9pZCk7CiB2b2lk ICgqdGltZXJfaW5pdCkodm9pZCk7CiB2b2lkICgqd2FsbGNsb2NrX2luaXQpKHZvaWQpOwp9OwoK CgoKCnN0cnVjdCB4ODZfaW5pdF9pb21tdSB7CiBpbnQgKCppb21tdV9pbml0KSh2b2lkKTsKfTsK IyAxMTQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20veDg2X2luaXQuaCIKc3RydWN0IHg4Nl9pbml0 X3BjaSB7CiBpbnQgKCphcmNoX2luaXQpKHZvaWQpOwogaW50ICgqaW5pdCkodm9pZCk7CiB2b2lk ICgqaW5pdF9pcnEpKHZvaWQpOwogdm9pZCAoKmZpeHVwX2lycXMpKHZvaWQpOwp9OwojIDEyOSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgpzdHJ1Y3QgeDg2X2h5cGVyX2luaXQg ewogdm9pZCAoKmluaXRfcGxhdGZvcm0pKHZvaWQpOwogdm9pZCAoKmd1ZXN0X2xhdGVfaW5pdCko dm9pZCk7CiBib29sICgqeDJhcGljX2F2YWlsYWJsZSkodm9pZCk7CiB2b2lkICgqaW5pdF9tZW1f bWFwcGluZykodm9pZCk7CiB2b2lkICgqaW5pdF9hZnRlcl9ib290bWVtKSh2b2lkKTsKfTsKCgoK CgoKCnN0cnVjdCB4ODZfaW5pdF9hY3BpIHsKIHZvaWQgKCpzZXRfcm9vdF9wb2ludGVyKSh1NjQg YWRkcik7CiB1NjQgKCpnZXRfcm9vdF9wb2ludGVyKSh2b2lkKTsKIHZvaWQgKCpyZWR1Y2VkX2h3 X2Vhcmx5X2luaXQpKHZvaWQpOwp9OwoKCgoKCnN0cnVjdCB4ODZfaW5pdF9vcHMgewogc3RydWN0 IHg4Nl9pbml0X3Jlc291cmNlcyByZXNvdXJjZXM7CiBzdHJ1Y3QgeDg2X2luaXRfbXBwYXJzZSBt cHBhcnNlOwogc3RydWN0IHg4Nl9pbml0X2lycXMgaXJxczsKIHN0cnVjdCB4ODZfaW5pdF9vZW0g b2VtOwogc3RydWN0IHg4Nl9pbml0X3BhZ2luZyBwYWdpbmc7CiBzdHJ1Y3QgeDg2X2luaXRfdGlt ZXJzIHRpbWVyczsKIHN0cnVjdCB4ODZfaW5pdF9pb21tdSBpb21tdTsKIHN0cnVjdCB4ODZfaW5p dF9wY2kgcGNpOwogc3RydWN0IHg4Nl9oeXBlcl9pbml0IGh5cGVyOwogc3RydWN0IHg4Nl9pbml0 X2FjcGkgYWNwaTsKfTsKCgoKCgoKc3RydWN0IHg4Nl9jcHVpbml0X29wcyB7CiB2b2lkICgqc2V0 dXBfcGVyY3B1X2Nsb2NrZXYpKHZvaWQpOwogdm9pZCAoKmVhcmx5X3BlcmNwdV9jbG9ja19pbml0 KSh2b2lkKTsKIHZvaWQgKCpmaXh1cF9jcHVfaWQpKHN0cnVjdCBjcHVpbmZvX3g4NiAqYywgaW50 IG5vZGUpOwp9OwoKc3RydWN0IHRpbWVzcGVjNjQ7CiMgMTk4ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL3g4Nl9pbml0LmgiCnN0cnVjdCB4ODZfbGVnYWN5X2RldmljZXMgewogaW50IHBucGJpb3M7 Cn07CiMgMjExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0LmgiCmVudW0geDg2X2xl Z2FjeV9pODA0Ml9zdGF0ZSB7CiBYODZfTEVHQUNZX0k4MDQyX1BMQVRGT1JNX0FCU0VOVCwKIFg4 Nl9MRUdBQ1lfSTgwNDJfRklSTVdBUkVfQUJTRU5ULAogWDg2X0xFR0FDWV9JODA0Ml9FWFBFQ1RF RF9QUkVTRU5ULAp9OwojIDIyOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgpz dHJ1Y3QgeDg2X2xlZ2FjeV9mZWF0dXJlcyB7CiBlbnVtIHg4Nl9sZWdhY3lfaTgwNDJfc3RhdGUg aTgwNDI7CiBpbnQgcnRjOwogaW50IHdhcm1fcmVzZXQ7CiBpbnQgbm9fdmdhOwogaW50IHJlc2Vy dmVfYmlvc19yZWdpb25zOwogc3RydWN0IHg4Nl9sZWdhY3lfZGV2aWNlcyBkZXZpY2VzOwp9OwoK CgoKCgpzdHJ1Y3QgeDg2X2h5cGVyX3J1bnRpbWUgewogdm9pZCAoKnBpbl92Y3B1KShpbnQgY3B1 KTsKfTsKIyAyNjggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20veDg2X2luaXQuaCIKc3RydWN0IHg4 Nl9wbGF0Zm9ybV9vcHMgewogdW5zaWduZWQgbG9uZyAoKmNhbGlicmF0ZV9jcHUpKHZvaWQpOwog dW5zaWduZWQgbG9uZyAoKmNhbGlicmF0ZV90c2MpKHZvaWQpOwogdm9pZCAoKmdldF93YWxsY2xv Y2spKHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CiBpbnQgKCpzZXRfd2FsbGNsb2NrKShjb25zdCBz dHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwogdm9pZCAoKmlvbW11X3NodXRkb3duKSh2b2lkKTsKIGJv b2wgKCppc191bnRyYWNrZWRfcGF0X3JhbmdlKSh1NjQgc3RhcnQsIHU2NCBlbmQpOwogdm9pZCAo Km5taV9pbml0KSh2b2lkKTsKIHVuc2lnbmVkIGNoYXIgKCpnZXRfbm1pX3JlYXNvbikodm9pZCk7 CiB2b2lkICgqc2F2ZV9zY2hlZF9jbG9ja19zdGF0ZSkodm9pZCk7CiB2b2lkICgqcmVzdG9yZV9z Y2hlZF9jbG9ja19zdGF0ZSkodm9pZCk7CiB2b2lkICgqYXBpY19wb3N0X2luaXQpKHZvaWQpOwog c3RydWN0IHg4Nl9sZWdhY3lfZmVhdHVyZXMgbGVnYWN5Owogdm9pZCAoKnNldF9sZWdhY3lfZmVh dHVyZXMpKHZvaWQpOwogc3RydWN0IHg4Nl9oeXBlcl9ydW50aW1lIGh5cGVyOwp9OwoKc3RydWN0 IHBjaV9kZXY7CgpzdHJ1Y3QgeDg2X21zaV9vcHMgewogaW50ICgqc2V0dXBfbXNpX2lycXMpKHN0 cnVjdCBwY2lfZGV2ICpkZXYsIGludCBudmVjLCBpbnQgdHlwZSk7CiB2b2lkICgqdGVhcmRvd25f bXNpX2lycSkodW5zaWduZWQgaW50IGlycSk7CiB2b2lkICgqdGVhcmRvd25fbXNpX2lycXMpKHN0 cnVjdCBwY2lfZGV2ICpkZXYpOwogdm9pZCAoKnJlc3RvcmVfbXNpX2lycXMpKHN0cnVjdCBwY2lf ZGV2ICpkZXYpOwp9OwoKc3RydWN0IHg4Nl9hcGljX29wcyB7CiB1bnNpZ25lZCBpbnQgKCppb19h cGljX3JlYWQpICh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZyk7CiB2b2lkICgq cmVzdG9yZSkodm9pZCk7Cn07CgpleHRlcm4gc3RydWN0IHg4Nl9pbml0X29wcyB4ODZfaW5pdDsK ZXh0ZXJuIHN0cnVjdCB4ODZfY3B1aW5pdF9vcHMgeDg2X2NwdWluaXQ7CmV4dGVybiBzdHJ1Y3Qg eDg2X3BsYXRmb3JtX29wcyB4ODZfcGxhdGZvcm07CmV4dGVybiBzdHJ1Y3QgeDg2X21zaV9vcHMg eDg2X21zaTsKZXh0ZXJuIHN0cnVjdCB4ODZfYXBpY19vcHMgeDg2X2FwaWNfb3BzOwoKZXh0ZXJu IHZvaWQgeDg2X2Vhcmx5X2luaXRfcGxhdGZvcm1fcXVpcmtzKHZvaWQpOwpleHRlcm4gdm9pZCB4 ODZfaW5pdF9ub29wKHZvaWQpOwpleHRlcm4gdm9pZCB4ODZfaW5pdF91aW50X25vb3AodW5zaWdu ZWQgaW50IHVudXNlZCk7CmV4dGVybiBib29sIGJvb2xfeDg2X2luaXRfbm9vcCh2b2lkKTsKZXh0 ZXJuIHZvaWQgeDg2X29wX2ludF9ub29wKGludCBjcHUpOwpleHRlcm4gYm9vbCB4ODZfcG5wYmlv c19kaXNhYmxlZCh2b2lkKTsKIyA4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3BlYy5oIiAy CiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljZGVmLmgiIDEKIyAxNzkgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vYXBpY2RlZi5oIgpzdHJ1Y3QgbG9jYWxfYXBpYyB7CgogICAgICAgIHN0 cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDE7CgogICAg ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDI7 CgogICAgICAgIHN0cnVjdCB7CiAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAogICBw aHlzX2FwaWNfaWQgOiA0LAogICBfX3Jlc2VydmVkXzIgOiA0OwogIHVuc2lnbmVkIGludCBfX3Jl c2VydmVkWzNdOwogfSBpZDsKCiAgICAgICAgY29uc3QKIHN0cnVjdCB7CiAgdW5zaWduZWQgaW50 IHZlcnNpb24gOiA4LAogICBfX3Jlc2VydmVkXzEgOiA4LAogICBtYXhfbHZ0IDogOCwKICAgX19y ZXNlcnZlZF8yIDogODsKICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKIH0gdmVyc2lvbjsK CiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZl ZF8wMzsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y ZXNlcnZlZF8wNDsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07 IH0gX19yZXNlcnZlZF8wNTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2 ZWRbNF07IH0gX19yZXNlcnZlZF8wNjsKCiAgICAgICAgc3RydWN0IHsKICB1bnNpZ25lZCBpbnQg cHJpb3JpdHkgOiA4LAogICBfX3Jlc2VydmVkXzEgOiAyNDsKICB1bnNpZ25lZCBpbnQgX19yZXNl cnZlZF8yWzNdOwogfSB0cHI7CgogICAgICAgIGNvbnN0CiBzdHJ1Y3QgewogIHVuc2lnbmVkIGlu dCBwcmlvcml0eSA6IDgsCiAgIF9fcmVzZXJ2ZWRfMSA6IDI0OwogIHVuc2lnbmVkIGludCBfX3Jl c2VydmVkXzJbM107CiB9IGFwcjsKCiAgICAgICAgY29uc3QKIHN0cnVjdCB7CiAgdW5zaWduZWQg aW50IHByaW9yaXR5IDogOCwKICAgX19yZXNlcnZlZF8xIDogMjQ7CiAgdW5zaWduZWQgaW50IF9f cmVzZXJ2ZWRfMlszXTsKIH0gcHByOwoKICAgICAgICBzdHJ1Y3QgewogIHVuc2lnbmVkIGludCBl b2k7CiAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiB9IGVvaTsKCiAgICAgICAgc3RydWN0 IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wNzsKCiAgICAgICAg c3RydWN0IHsKICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjQsCiAgIGxvZ2ljYWxfZGVz dCA6IDg7CiAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKIH0gbGRyOwoKICAgICAgICBz dHJ1Y3QgewogIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyOCwKICAgbW9kZWwgOiA0Owog IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiB9IGRmcjsKCiAgICAgICAgc3RydWN0IHsK ICB1bnNpZ25lZCBpbnQgc3B1cmlvdXNfdmVjdG9yIDogOCwKICAgYXBpY19lbmFibGVkIDogMSwK ICAgZm9jdXNfY3B1IDogMSwKICAgX19yZXNlcnZlZF8yIDogMjI7CiAgdW5zaWduZWQgaW50IF9f cmVzZXJ2ZWRfM1szXTsKIH0gc3ZyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICB1bnNpZ25l ZCBpbnQgYml0ZmllbGQ7CiAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiB9IGlzciBbOF07 CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgIHVuc2lnbmVkIGludCBiaXRmaWVsZDsKICB1bnNp Z25lZCBpbnQgX19yZXNlcnZlZFszXTsKIH0gdG1yIFs4XTsKCiAgICAgICAgc3RydWN0IHsKICAg ICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwogIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNd OwogfSBpcnIgWzhdOwoKICAgICAgICB1bmlvbiB7CiAgc3RydWN0IHsKICAgdW5zaWduZWQgaW50 IHNlbmRfY3NfZXJyb3IgOiAxLAogICAgcmVjZWl2ZV9jc19lcnJvciA6IDEsCiAgICBzZW5kX2Fj Y2VwdF9lcnJvciA6IDEsCiAgICByZWNlaXZlX2FjY2VwdF9lcnJvciA6IDEsCiAgICBfX3Jlc2Vy dmVkXzEgOiAxLAogICAgc2VuZF9pbGxlZ2FsX3ZlY3RvciA6IDEsCiAgICByZWNlaXZlX2lsbGVn YWxfdmVjdG9yIDogMSwKICAgIGlsbGVnYWxfcmVnaXN0ZXJfYWRkcmVzcyA6IDEsCiAgICBfX3Jl c2VydmVkXzIgOiAyNDsKICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICB9IGVycm9y X2JpdHM7CiAgc3RydWN0IHsKICAgdW5zaWduZWQgaW50IGVycm9yczsKICAgdW5zaWduZWQgaW50 IF9fcmVzZXJ2ZWRfM1szXTsKICB9IGFsbF9lcnJvcnM7CiB9IGVzcjsKCiAgICAgICAgc3RydWN0 IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wODsKCiAgICAgICAg c3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wOTsKCiAg ICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8x MDsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNl cnZlZF8xMTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0g X19yZXNlcnZlZF8xMjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRb NF07IH0gX19yZXNlcnZlZF8xMzsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVz ZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNDsKCiAgICAgICAgc3RydWN0IHsKICB1bnNpZ25lZCBp bnQgdmVjdG9yIDogOCwKICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgIGRlc3RpbmF0aW9uX21vZGUg OiAxLAogICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICBfX3Jlc2VydmVkXzEgOiAxLAogICBsZXZl bCA6IDEsCiAgIHRyaWdnZXIgOiAxLAogICBfX3Jlc2VydmVkXzIgOiAyLAogICBzaG9ydGhhbmQg OiAyLAogICBfX3Jlc2VydmVkXzMgOiAxMjsKICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNd OwogfSBpY3IxOwoKICAgICAgICBzdHJ1Y3QgewogIHVuaW9uIHsKICAgdW5zaWduZWQgaW50IF9f cmVzZXJ2ZWRfMSA6IDI0LAogICAgcGh5c19kZXN0IDogNCwKICAgIF9fcmVzZXJ2ZWRfMiA6IDQ7 CiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzMgOiAyNCwKICAgIGxvZ2ljYWxfZGVzdCA6IDg7 CiAgfSBkZXN0OwogIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CiB9IGljcjI7CgogICAg ICAgIHN0cnVjdCB7CiAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgIF9fcmVzZXJ2ZWRfMSA6 IDQsCiAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgIF9fcmVzZXJ2ZWRfMiA6IDMsCiAgIG1hc2sg OiAxLAogICB0aW1lcl9tb2RlIDogMSwKICAgX19yZXNlcnZlZF8zIDogMTQ7CiAgdW5zaWduZWQg aW50IF9fcmVzZXJ2ZWRfNFszXTsKIH0gbHZ0X3RpbWVyOwoKICAgICAgICBzdHJ1Y3QgewogIHVu c2lnbmVkIGludCB2ZWN0b3IgOiA4LAogICBkZWxpdmVyeV9tb2RlIDogMywKICAgX19yZXNlcnZl ZF8xIDogMSwKICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgX19yZXNlcnZlZF8yIDogMywKICAg bWFzayA6IDEsCiAgIF9fcmVzZXJ2ZWRfMyA6IDE1OwogIHVuc2lnbmVkIGludCBfX3Jlc2VydmVk XzRbM107CiB9IGx2dF90aGVybWFsOwoKICAgICAgICBzdHJ1Y3QgewogIHVuc2lnbmVkIGludCB2 ZWN0b3IgOiA4LAogICBkZWxpdmVyeV9tb2RlIDogMywKICAgX19yZXNlcnZlZF8xIDogMSwKICAg ZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgX19yZXNlcnZlZF8yIDogMywKICAgbWFzayA6IDEsCiAg IF9fcmVzZXJ2ZWRfMyA6IDE1OwogIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CiB9IGx2 dF9wYzsKCiAgICAgICAgc3RydWN0IHsKICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgZGVs aXZlcnlfbW9kZSA6IDMsCiAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgIGRlbGl2ZXJ5X3N0YXR1cyA6 IDEsCiAgIHBvbGFyaXR5IDogMSwKICAgcmVtb3RlX2lyciA6IDEsCiAgIHRyaWdnZXIgOiAxLAog ICBtYXNrIDogMSwKICAgX19yZXNlcnZlZF8yIDogMTU7CiAgdW5zaWduZWQgaW50IF9fcmVzZXJ2 ZWRfM1szXTsKIH0gbHZ0X2xpbnQwOwoKICAgICAgICBzdHJ1Y3QgewogIHVuc2lnbmVkIGludCB2 ZWN0b3IgOiA4LAogICBkZWxpdmVyeV9tb2RlIDogMywKICAgX19yZXNlcnZlZF8xIDogMSwKICAg ZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgcG9sYXJpdHkgOiAxLAogICByZW1vdGVfaXJyIDogMSwK ICAgdHJpZ2dlciA6IDEsCiAgIG1hc2sgOiAxLAogICBfX3Jlc2VydmVkXzIgOiAxNTsKICB1bnNp Z25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogfSBsdnRfbGludDE7CgogICAgICAgIHN0cnVjdCB7 CiAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgIF9fcmVzZXJ2ZWRfMSA6IDQsCiAgIGRlbGl2 ZXJ5X3N0YXR1cyA6IDEsCiAgIF9fcmVzZXJ2ZWRfMiA6IDMsCiAgIG1hc2sgOiAxLAogICBfX3Jl c2VydmVkXzMgOiAxNTsKICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwogfSBsdnRfZXJy b3I7CgogICAgICAgIHN0cnVjdCB7CiAgdW5zaWduZWQgaW50IGluaXRpYWxfY291bnQ7CiAgdW5z aWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKIH0gdGltZXJfaWNyOwoKICAgICAgICBjb25zdAog c3RydWN0IHsKICB1bnNpZ25lZCBpbnQgY3Vycl9jb3VudDsKICB1bnNpZ25lZCBpbnQgX19yZXNl cnZlZF8yWzNdOwogfSB0aW1lcl9jY3I7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTY7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVk IGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTc7CgogICAgICAgIHN0cnVjdCB7IHVu c2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTg7CgogICAgICAgIHN0cnVj dCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTk7CgogICAgICAg IHN0cnVjdCB7CiAgdW5zaWduZWQgaW50IGRpdmlzb3IgOiA0LAogICBfX3Jlc2VydmVkXzEgOiAy ODsKICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogfSB0aW1lcl9kY3I7CgogICAgICAg IHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMjA7Cgp9 IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIyA0MzUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v YXBpY2RlZi5oIgplbnVtIGlvYXBpY19pcnFfZGVzdGluYXRpb25fdHlwZXMgewogZGVzdF9GaXhl ZCA9IDAsCiBkZXN0X0xvd2VzdFByaW8gPSAxLAogZGVzdF9TTUkgPSAyLAogZGVzdF9fcmVzZXJ2 ZWRfMSA9IDMsCiBkZXN0X05NSSA9IDQsCiBkZXN0X0lOSVQgPSA1LAogZGVzdF9fcmVzZXJ2ZWRf MiA9IDYsCiBkZXN0X0V4dElOVCA9IDcKfTsKIyA5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21w c3BlYy5oIiAyCgpleHRlcm4gaW50IHBpY19tb2RlOwojIDQwICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL21wc3BlYy5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBtcF9idXNfbm90X3BjaVsoKCgyNTYp ICsgKChzaXplb2YobG9uZykgKiA4KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkpKV07Cgpl eHRlcm4gdW5zaWduZWQgaW50IGJvb3RfY3B1X3BoeXNpY2FsX2FwaWNpZDsKZXh0ZXJuIHU4IGJv b3RfY3B1X2FwaWNfdmVyc2lvbjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbXBfbGFwaWNfYWRkcjsK CgpleHRlcm4gaW50IHNtcF9mb3VuZF9jb25maWc7CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGdldF9zbXBfY29uZmlnKHZv aWQpCnsKIHg4Nl9pbml0Lm1wcGFyc2UuZ2V0X3NtcF9jb25maWcoMCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZWFybHlf Z2V0X3NtcF9jb25maWcodm9pZCkKewogeDg2X2luaXQubXBwYXJzZS5nZXRfc21wX2NvbmZpZygx KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBmaW5kX3NtcF9jb25maWcodm9pZCkKewogeDg2X2luaXQubXBwYXJzZS5maW5k X3NtcF9jb25maWcoKTsKfQoKCmV4dGVybiB2b2lkIGU4MjBfX21lbWJsb2NrX2FsbG9jX3Jlc2Vy dmVkX21wY19uZXcodm9pZCk7CmV4dGVybiBpbnQgZW5hYmxlX3VwZGF0ZV9tcHRhYmxlOwpleHRl cm4gaW50IGRlZmF1bHRfbXBjX2FwaWNfaWQoc3RydWN0IG1wY19jcHUgKm0pOwpleHRlcm4gdm9p ZCBkZWZhdWx0X3NtcF9yZWFkX21wY19vZW0oc3RydWN0IG1wY190YWJsZSAqbXBjKTsKCmV4dGVy biB2b2lkIGRlZmF1bHRfbXBjX29lbV9idXNfaW5mbyhzdHJ1Y3QgbXBjX2J1cyAqbSwgY2hhciAq c3RyKTsKCgoKZXh0ZXJuIHZvaWQgZGVmYXVsdF9maW5kX3NtcF9jb25maWcodm9pZCk7CmV4dGVy biB2b2lkIGRlZmF1bHRfZ2V0X3NtcF9jb25maWcodW5zaWduZWQgaW50IGVhcmx5KTsKIyA4OSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tcHNwZWMuaCIKaW50IGdlbmVyaWNfcHJvY2Vzc29yX2lu Zm8oaW50IGFwaWNpZCwgaW50IHZlcnNpb24pOwoKCgpzdHJ1Y3QgcGh5c2lkX21hc2sgewogdW5z aWduZWQgbG9uZyBtYXNrWygoKDMyNzY4KSArICgoc2l6ZW9mKGxvbmcpICogOCkpIC0gMSkgLyAo KHNpemVvZihsb25nKSAqIDgpKSldOwp9OwoKdHlwZWRlZiBzdHJ1Y3QgcGh5c2lkX21hc2sgcGh5 c2lkX21hc2tfdDsKIyAxMzIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVjLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGxvbmcgcGh5c2lkc19jb2VyY2UocGh5c2lkX21hc2tfdCAqbWFwKQp7CiByZXR1cm4gbWFw LT5tYXNrWzBdOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHBoeXNpZHNfcHJvbW90ZSh1bnNpZ25lZCBsb25nIHBoeXNpZHMs IHBoeXNpZF9tYXNrX3QgKm1hcCkKewogYml0bWFwX3plcm8oKCptYXApLm1hc2ssIDMyNzY4KTsK IG1hcC0+bWFza1swXSA9IHBoeXNpZHM7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGh5c2lkX3NldF9tYXNrX29mX3BoeXNp ZChpbnQgcGh5c2lkLCBwaHlzaWRfbWFza190ICptYXApCnsKIGJpdG1hcF96ZXJvKCgqbWFwKS5t YXNrLCAzMjc2OCk7CiBzZXRfYml0KHBoeXNpZCwgKCptYXApLm1hc2spOwp9CgoKCgpleHRlcm4g cGh5c2lkX21hc2tfdCBwaHlzX2NwdV9wcmVzZW50X21hcDsKIyAxMyAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9zbXAuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXBpYy5oIiAxCiMg MTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXBpYy5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vZml4bWFwLmgiIDEKIyAyOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIK IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FjcGkuaCIgMQojIDkgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vYWNwaS5oIgojIDEgIi4vaW5jbHVkZS9hY3BpL3BkY19pbnRlbC5oIiAxCiMgMTAg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vYWNwaS5oIiAyCgojIDEgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vbnVtYS5oIiAxCgoKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90b3BvbG9n eS5oIiAxCiMgODUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG51bWFf bm9kZV9pZCh2b2lkKQp7CiByZXR1cm4gMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBlYXJseV9jcHVfdG9fbm9kZShp bnQgY3B1KQp7CiByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzZXR1cF9ub2RlX3RvX2NwdW1hc2tfbWFwKHZv aWQpIHsgfQoKCgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy90b3BvbG9neS5oIiAxCiMgMTA0 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RvcG9sb2d5LmgiIDIKCmV4dGVybiBjb25zdCBzdHJ1 Y3QgY3B1bWFzayAqY3B1X2NvcmVncm91cF9tYXNrKGludCBjcHUpOwojIDExOCAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS90b3BvbG9neS5oIgpleHRlcm4gdW5zaWduZWQgaW50IF9fbWF4X2xvZ2lj YWxfcGFja2FnZXM7CgoKZXh0ZXJuIHVuc2lnbmVkIGludCBfX21heF9kaWVfcGVyX3BhY2thZ2U7 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgdG9wb2xvZ3lfbWF4X2RpZV9wZXJfcGFja2FnZSh2b2lkKQp7CiByZXR1cm4gX19tYXhf ZGllX3Blcl9wYWNrYWdlOwp9CgpleHRlcm4gaW50IF9fbWF4X3NtdF90aHJlYWRzOwoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHRv cG9sb2d5X21heF9zbXRfdGhyZWFkcyh2b2lkKQp7CiByZXR1cm4gX19tYXhfc210X3RocmVhZHM7 Cn0KCmludCB0b3BvbG9neV91cGRhdGVfcGFja2FnZV9tYXAodW5zaWduZWQgaW50IGFwaWNpZCwg dW5zaWduZWQgaW50IGNwdSk7CmludCB0b3BvbG9neV91cGRhdGVfZGllX21hcCh1bnNpZ25lZCBp bnQgZGllaWQsIHVuc2lnbmVkIGludCBjcHUpOwppbnQgdG9wb2xvZ3lfcGh5c190b19sb2dpY2Fs X3BrZyh1bnNpZ25lZCBpbnQgcGtnKTsKaW50IHRvcG9sb2d5X3BoeXNfdG9fbG9naWNhbF9kaWUo dW5zaWduZWQgaW50IGRpZSwgdW5zaWduZWQgaW50IGNwdSk7CmJvb2wgdG9wb2xvZ3lfaXNfcHJp bWFyeV90aHJlYWQodW5zaWduZWQgaW50IGNwdSk7CmJvb2wgdG9wb2xvZ3lfc210X3N1cHBvcnRl ZCh2b2lkKTsKIyAxNTYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBh cmNoX2ZpeF9waHlzX3BhY2thZ2VfaWQoaW50IG51bSwgdTMyIHNsb3QpCnsKfQoKc3RydWN0IHBj aV9idXM7CmludCB4ODZfcGNpX3Jvb3RfYnVzX25vZGUoaW50IGJ1cyk7CnZvaWQgeDg2X3BjaV9y b290X2J1c19yZXNvdXJjZXMoaW50IGJ1cywgc3RydWN0IGxpc3RfaGVhZCAqcmVzb3VyY2VzKTsK CmV4dGVybiBib29sIHg4Nl90b3BvbG9neV91cGRhdGU7CgoKCgpleHRlcm4gX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIi4ucmVhZF9tb3N0bHkiKSkpIF9fdHlwZW9mX18o aW50KSBzY2hlZF9jb3JlX3ByaW9yaXR5OwpleHRlcm4gdW5zaWduZWQgaW50IF9fYXR0cmlidXRl X18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHN5c2N0bF9zY2hlZF9pdG10 X2VuYWJsZWQ7CgoKdm9pZCBzY2hlZF9zZXRfaXRtdF9jb3JlX3ByaW8oaW50IHByaW8sIGludCBj b3JlX2NwdSk7CgoKaW50IHNjaGVkX3NldF9pdG10X3N1cHBvcnQodm9pZCk7CgoKdm9pZCBzY2hl ZF9jbGVhcl9pdG10X3N1cHBvcnQodm9pZCk7CiMgOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9u dW1hLmgiIDIKIyA0NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9udW1hLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X2Fw aWNpZF90b19ub2RlKGludCBhcGljaWQsIHMxNiBub2RlKQp7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBudW1hX2NwdV9ub2Rl KGludCBjcHUpCnsKIHJldHVybiAoLTEpOwp9CiMgNjYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v bnVtYS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIG51bWFfc2V0X25vZGUoaW50IGNwdSwgaW50IG5vZGUpIHsgfQpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG51 bWFfY2xlYXJfbm9kZShpbnQgY3B1KSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbml0X2NwdV90b19ub2RlKHZvaWQpIHsg fQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIG51bWFfYWRkX2NwdShpbnQgY3B1KSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBudW1hX3JlbW92ZV9jcHUoaW50 IGNwdSkgeyB9CiMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYWNwaS5oIiAyCiMgMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMQojIDEzICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL2FjcGkuaCIgMgojIDIzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FjcGkuaCIKZXh0ZXJu IGludCBhY3BpX2xhcGljOwpleHRlcm4gaW50IGFjcGlfaW9hcGljOwpleHRlcm4gaW50IGFjcGlf bm9pcnE7CmV4dGVybiBpbnQgYWNwaV9zdHJpY3Q7CmV4dGVybiBpbnQgYWNwaV9kaXNhYmxlZDsK ZXh0ZXJuIGludCBhY3BpX3BjaV9kaXNhYmxlZDsKZXh0ZXJuIGludCBhY3BpX3NraXBfdGltZXJf b3ZlcnJpZGU7CmV4dGVybiBpbnQgYWNwaV91c2VfdGltZXJfb3ZlcnJpZGU7CmV4dGVybiBpbnQg YWNwaV9maXhfcGluMl9wb2xhcml0eTsKZXh0ZXJuIGludCBhY3BpX2Rpc2FibGVfY21jZmY7Cgpl eHRlcm4gdTggYWNwaV9zY2lfZmxhZ3M7CmV4dGVybiB1MzIgYWNwaV9zY2lfb3ZlcnJpZGVfZ3Np Owp2b2lkIGFjcGlfcGljX3NjaV9zZXRfdHJpZ2dlcih1bnNpZ25lZCBpbnQsIHUxNik7CgpzdHJ1 Y3QgZGV2aWNlOwoKZXh0ZXJuIGludCAoKl9fYWNwaV9yZWdpc3Rlcl9nc2kpKHN0cnVjdCBkZXZp Y2UgKmRldiwgdTMyIGdzaSwKICAgICAgaW50IHRyaWdnZXIsIGludCBwb2xhcml0eSk7CmV4dGVy biB2b2lkICgqX19hY3BpX3VucmVnaXN0ZXJfZ3NpKSh1MzIgZ3NpKTsKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZGlzYWJsZV9h Y3BpKHZvaWQpCnsKIGFjcGlfZGlzYWJsZWQgPSAxOwogYWNwaV9wY2lfZGlzYWJsZWQgPSAxOwog YWNwaV9ub2lycSA9IDE7Cn0KCmV4dGVybiBpbnQgYWNwaV9nc2lfdG9faXJxKHUzMiBnc2ksIHVu c2lnbmVkIGludCAqaXJxKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYWNwaV9ub2lycV9zZXQodm9pZCkgeyBhY3BpX25vaXJx ID0gMTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGFjcGlfZGlzYWJsZV9wY2kodm9pZCkKewogYWNwaV9wY2lfZGlzYWJsZWQg PSAxOwogYWNwaV9ub2lycV9zZXQoKTsKfQoKCmV4dGVybiBpbnQgKCphY3BpX3N1c3BlbmRfbG93 bGV2ZWwpKHZvaWQpOwoKCnVuc2lnbmVkIGxvbmcgYWNwaV9nZXRfd2FrZXVwX2FkZHJlc3Modm9p ZCk7CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB1bnNpZ25lZCBpbnQgYWNwaV9wcm9jZXNzb3JfY3N0YXRlX2NoZWNrKHVuc2lnbmVk IGludCBtYXhfY3N0YXRlKQp7CgoKCgoKCiBpZiAoYm9vdF9jcHVfZGF0YS54ODYgPT0gMHgwRiAm JgogICAgIGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvciA9PSAyICYmCiAgICAgYm9vdF9jcHVfZGF0 YS54ODZfbW9kZWwgPD0gMHgwNSAmJgogICAgIGJvb3RfY3B1X2RhdGEueDg2X3N0ZXBwaW5nIDwg MHgwQSkKICByZXR1cm4gMTsKIGVsc2UgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcCgoMTkqMzIg KyAoNCkpKSAmJiAoICgoKCgxOSozMiArICg0KSkpPj41KT09KDApICYmICgxVUw8PCgoKDE5KjMy ICsgKDQpKSkmMzEpICYgKCgxPDwoKCAwKjMyKyAwKSAmIDMxKSl8MHwoMTw8KCggMCozMisgNSkg JiAzMSkpfCgxPDwoKCAwKjMyKyA2KSAmIDMxKSl8ICgxPDwoKCAwKjMyKyA4KSAmIDMxKSl8MHwo MTw8KCggMCozMisyNCkgJiAzMSkpfCgxPDwoKCAwKjMyKzE1KSAmIDMxKSl8ICgxPDwoKCAwKjMy KzI1KSAmIDMxKSl8KDE8PCgoIDAqMzIrMjYpICYgMzEpKSkgKSkgfHwgKCgoKDE5KjMyICsgKDQp KSk+PjUpPT0oMSkgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAoKDE8PCgoIDEqMzIr MjkpICYgMzEpKXwwKSApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+NSk9PSgyKSAmJiAoMVVMPDwo KCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oMykg JiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAoKDE8PCgoIDMqMzIrMjApICYgMzEpKSkg KSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oNCkgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkp KSYzMSkgJiAoMCkgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oNSkgJiYgKDFVTDw8KCgo MTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09KDYpICYm ICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEpICYgMCApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+ NSk9PSg3KSAmJiAoMVVMPDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMy ICsgKDQpKSk+PjUpPT0oOCkgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8 ICgoKCgxOSozMiArICg0KSkpPj41KT09KDkpICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEp ICYgMCApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+NSk9PSgxMCkgJiYgKDFVTDw8KCgoMTkqMzIg KyAoNCkpKSYzMSkgJiAwICkpIHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09KDExKSAmJiAoMVVM PDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0o MTIpICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEpICYgMCApKSB8fCAoKCgoMTkqMzIgKyAo NCkpKT4+NSk9PSgxMykgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8ICgo KCgxOSozMiArICg0KSkpPj41KT09KDE0KSAmJiAoMVVMPDwoKCgxOSozMiArICg0KSkpJjMxKSAm IDAgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oMTUpICYmICgxVUw8PCgoKDE5KjMyICsg KDQpKSkmMzEpICYgMCApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+NSk9PSgxNikgJiYgKDFVTDw8 KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09KDE3 KSAmJiAoMVVMPDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMyICsgKDQp KSk+PjUpPT0oMTgpICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEpICYgMCApKSB8fCAoKGlu dCkoc2l6ZW9mKHN0cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0pKSkgfHwgKChpbnQpKHNp emVvZihzdHJ1Y3QgeyBpbnQ6KC0hISgxOSAhPSAxOSkpOyB9KSkpKSA/IDEgOiB0ZXN0X2JpdCgo MTkqMzIgKyAoNCkpLCAodW5zaWduZWQgbG9uZyAqKSgoJmJvb3RfY3B1X2RhdGEpLT54ODZfY2Fw YWJpbGl0eSkpKSkKICByZXR1cm4gMTsKIGVsc2UKICByZXR1cm4gbWF4X2NzdGF0ZTsKfQoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCBhcmNoX2hhc19hY3BpX3BkYyh2b2lkKQp7CiBzdHJ1Y3QgY3B1aW5mb194ODYgKmMgPSAmKCoo eyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X2luZm8pKSAr IDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNp Z25lZCBsb25nIF9fcHRyOyBfX2FzbV9fICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2Yo KigoJihjcHVfaW5mbykpKSkgKikoKCYoY3B1X2luZm8pKSkpKTsgKHR5cGVvZigodHlwZW9mKCoo KCYoY3B1X2luZm8pKSkpICopKCgmKGNwdV9pbmZvKSkpKSkgKF9fcHRyICsgKCgoX19wZXJfY3B1 X29mZnNldFsoMCldKSkpKTsgfSk7IH0pKTsKIHJldHVybiAoYy0+eDg2X3ZlbmRvciA9PSAwIHx8 CiAgYy0+eDg2X3ZlbmRvciA9PSA1KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcmNoX2FjcGlfc2V0X3BkY19iaXRzKHUz MiAqYnVmKQp7CiBzdHJ1Y3QgY3B1aW5mb194ODYgKmMgPSAmKCooeyBkbyB7IGNvbnN0IHZvaWQg Kl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X2luZm8pKSArIDApKSgodm9pZCAqKTApOyAo dm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25lZCBsb25nIF9fcHRyOyBf X2FzbV9fICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigoJihjcHVfaW5mbykpKSkg KikoKCYoY3B1X2luZm8pKSkpKTsgKHR5cGVvZigodHlwZW9mKCooKCYoY3B1X2luZm8pKSkpICop KCgmKGNwdV9pbmZvKSkpKSkgKF9fcHRyICsgKCgoX19wZXJfY3B1X29mZnNldFsoMCldKSkpKTsg fSk7IH0pKTsKCiBidWZbMl0gfD0gKCgweDAwMTApIHwgKDB4MDAwOCkgfCAoMHgwMDAyKSB8ICgw eDAxMDApIHwgKDB4MDIwMCkpOwoKIGlmICgoX19idWlsdGluX2NvbnN0YW50X3AoKCA0KjMyKyA3 KSkgJiYgKCAoKCgoIDQqMzIrIDcpKT4+NSk9PSgwKSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMx KSAmICgoMTw8KCggMCozMisgMCkgJiAzMSkpfDB8KDE8PCgoIDAqMzIrIDUpICYgMzEpKXwoMTw8 KCggMCozMisgNikgJiAzMSkpfCAoMTw8KCggMCozMisgOCkgJiAzMSkpfDB8KDE8PCgoIDAqMzIr MjQpICYgMzEpKXwoMTw8KCggMCozMisxNSkgJiAzMSkpfCAoMTw8KCggMCozMisyNSkgJiAzMSkp fCgxPDwoKCAwKjMyKzI2KSAmIDMxKSkpICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDEpICYm ICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgKCgxPDwoKCAxKjMyKzI5KSAmIDMxKSl8MCkgKSkg fHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oMikgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYzMSkgJiAw ICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDMpICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEp ICYgKCgxPDwoKCAzKjMyKzIwKSAmIDMxKSkpICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDQp ICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgKDApICkpIHx8ICgoKCggNCozMisgNykpPj41 KT09KDUpICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDcp KT4+NSk9PSg2KSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMy KyA3KSk+PjUpPT0oNykgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYzMSkgJiAwICkpIHx8ICgoKCgg NCozMisgNykpPj41KT09KDgpICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgMCApKSB8fCAo KCgoIDQqMzIrIDcpKT4+NSk9PSg5KSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkg fHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oMTApICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYg MCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSgxMSkgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYz MSkgJiAwICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDEyKSAmJiAoMVVMPDwoKCggNCozMisg NykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oMTMpICYmICgxVUw8PCgoKCA0 KjMyKyA3KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSgxNCkgJiYgKDFVTDw8 KCgoIDQqMzIrIDcpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDE1KSAmJiAo MVVMPDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oMTYp ICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9 PSgxNykgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgNykp Pj41KT09KDE4KSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkgfHwgKChpbnQpKHNp emVvZihzdHJ1Y3QgeyBpbnQ6KC0hISgxOSAhPSAxOSkpOyB9KSkpIHx8ICgoaW50KShzaXplb2Yo c3RydWN0IHsgaW50OigtISEoMTkgIT0gMTkpKTsgfSkpKSkgPyAxIDogdGVzdF9iaXQoKCA0KjMy KyA3KSwgKHVuc2lnbmVkIGxvbmcgKikoKGMpLT54ODZfY2FwYWJpbGl0eSkpKSkKICBidWZbMl0g fD0gKCgweDAwMDgpIHwgKDB4MDAwMikgfCAoMHgwMDIwKSB8ICgweDA4MDApIHwgKDB4MDAwMSkp OwoKIGlmICgoX19idWlsdGluX2NvbnN0YW50X3AoKCAwKjMyKzIyKSkgJiYgKCAoKCgoIDAqMzIr MjIpKT4+NSk9PSgwKSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmICgoMTw8KCggMCozMisg MCkgJiAzMSkpfDB8KDE8PCgoIDAqMzIrIDUpICYgMzEpKXwoMTw8KCggMCozMisgNikgJiAzMSkp fCAoMTw8KCggMCozMisgOCkgJiAzMSkpfDB8KDE8PCgoIDAqMzIrMjQpICYgMzEpKXwoMTw8KCgg MCozMisxNSkgJiAzMSkpfCAoMTw8KCggMCozMisyNSkgJiAzMSkpfCgxPDwoKCAwKjMyKzI2KSAm IDMxKSkpICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDEpICYmICgxVUw8PCgoKCAwKjMyKzIy KSkmMzEpICYgKCgxPDwoKCAxKjMyKzI5KSAmIDMxKSl8MCkgKSkgfHwgKCgoKCAwKjMyKzIyKSk+ PjUpPT0oMikgJiYgKDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8ICgoKCggMCozMisy MikpPj41KT09KDMpICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgKCgxPDwoKCAzKjMyKzIw KSAmIDMxKSkpICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDQpICYmICgxVUw8PCgoKCAwKjMy KzIyKSkmMzEpICYgKDApICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDUpICYmICgxVUw8PCgo KCAwKjMyKzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSg2KSAmJiAoMVVM PDwoKCggMCozMisyMikpJjMxKSAmIDAgKSkgfHwgKCgoKCAwKjMyKzIyKSk+PjUpPT0oNykgJiYg KDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDgp ICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9 PSg5KSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmIDAgKSkgfHwgKCgoKCAwKjMyKzIyKSk+ PjUpPT0oMTApICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIr MjIpKT4+NSk9PSgxMSkgJiYgKDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8ICgoKCgg MCozMisyMikpPj41KT09KDEyKSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmIDAgKSkgfHwg KCgoKCAwKjMyKzIyKSk+PjUpPT0oMTMpICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgMCAp KSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSgxNCkgJiYgKDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkg JiAwICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDE1KSAmJiAoMVVMPDwoKCggMCozMisyMikp JjMxKSAmIDAgKSkgfHwgKCgoKCAwKjMyKzIyKSk+PjUpPT0oMTYpICYmICgxVUw8PCgoKCAwKjMy KzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSgxNykgJiYgKDFVTDw8KCgo IDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDE4KSAmJiAoMVVM PDwoKCggMCozMisyMikpJjMxKSAmIDAgKSkgfHwgKChpbnQpKHNpemVvZihzdHJ1Y3QgeyBpbnQ6 KC0hISgxOSAhPSAxOSkpOyB9KSkpIHx8ICgoaW50KShzaXplb2Yoc3RydWN0IHsgaW50OigtISEo MTkgIT0gMTkpKTsgfSkpKSkgPyAxIDogdGVzdF9iaXQoKCAwKjMyKzIyKSwgKHVuc2lnbmVkIGxv bmcgKikoKGMpLT54ODZfY2FwYWJpbGl0eSkpKSkKICBidWZbMl0gfD0gKDB4MDAwNCk7CgoKCgog aWYgKCEoX19idWlsdGluX2NvbnN0YW50X3AoKCA0KjMyKyAzKSkgJiYgKCAoKCgoIDQqMzIrIDMp KT4+NSk9PSgwKSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmICgoMTw8KCggMCozMisgMCkg JiAzMSkpfDB8KDE8PCgoIDAqMzIrIDUpICYgMzEpKXwoMTw8KCggMCozMisgNikgJiAzMSkpfCAo MTw8KCggMCozMisgOCkgJiAzMSkpfDB8KDE8PCgoIDAqMzIrMjQpICYgMzEpKXwoMTw8KCggMCoz MisxNSkgJiAzMSkpfCAoMTw8KCggMCozMisyNSkgJiAzMSkpfCgxPDwoKCAwKjMyKzI2KSAmIDMx KSkpICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDEpICYmICgxVUw8PCgoKCA0KjMyKyAzKSkm MzEpICYgKCgxPDwoKCAxKjMyKzI5KSAmIDMxKSl8MCkgKSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUp PT0oMikgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgMykp Pj41KT09KDMpICYmICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgKCgxPDwoKCAzKjMyKzIwKSAm IDMxKSkpICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDQpICYmICgxVUw8PCgoKCA0KjMyKyAz KSkmMzEpICYgKDApICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDUpICYmICgxVUw8PCgoKCA0 KjMyKyAzKSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSg2KSAmJiAoMVVMPDwo KCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUpPT0oNykgJiYgKDFV TDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDgpICYm ICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSg5 KSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUp PT0oMTApICYmICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMp KT4+NSk9PSgxMSkgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgoKCggNCoz MisgMykpPj41KT09KDEyKSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKCgo KCA0KjMyKyAzKSk+PjUpPT0oMTMpICYmICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgMCApKSB8 fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSgxNCkgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAw ICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDE1KSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMx KSAmIDAgKSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUpPT0oMTYpICYmICgxVUw8PCgoKCA0KjMyKyAz KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSgxNykgJiYgKDFVTDw8KCgoIDQq MzIrIDMpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDE4KSAmJiAoMVVMPDwo KCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKChpbnQpKHNpemVvZihzdHJ1Y3QgeyBpbnQ6KC0h ISgxOSAhPSAxOSkpOyB9KSkpIHx8ICgoaW50KShzaXplb2Yoc3RydWN0IHsgaW50OigtISEoMTkg IT0gMTkpKTsgfSkpKSkgPyAxIDogdGVzdF9iaXQoKCA0KjMyKyAzKSwgKHVuc2lnbmVkIGxvbmcg KikoKGMpLT54ODZfY2FwYWJpbGl0eSkpKSkKICBidWZbMl0gJj0gfigoMHgwMjAwKSk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgYWNwaV9oYXNfY3B1X2luX21hZHQodm9pZCkKewogcmV0dXJuICEhYWNwaV9sYXBpYzsKfQoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgYWNwaV9hcmNoX3NldF9yb290X3BvaW50ZXIodTY0IGFkZHIpCnsKIHg4Nl9pbml0LmFj cGkuc2V0X3Jvb3RfcG9pbnRlcihhZGRyKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBhY3BpX2FyY2hfZ2V0X3Jvb3RfcG9p bnRlcih2b2lkKQp7CiByZXR1cm4geDg2X2luaXQuYWNwaS5nZXRfcm9vdF9wb2ludGVyKCk7Cn0K CnZvaWQgYWNwaV9nZW5lcmljX3JlZHVjZWRfaHdfaW5pdCh2b2lkKTsKCnZvaWQgeDg2X2RlZmF1 bHRfc2V0X3Jvb3RfcG9pbnRlcih1NjQgYWRkcik7CnU2NCB4ODZfZGVmYXVsdF9nZXRfcm9vdF9w b2ludGVyKHZvaWQpOwojIDE2NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hY3BpLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBncHJv dF90IGFyY2hfYXBlaV9nZXRfbWVtX2F0dHJpYnV0ZShwaHlzX2FkZHJfdCBhZGRyKQp7CiMgMTgw ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FjcGkuaCIKIHJldHVybiAoKHBncHJvdF90KSB7ICgo KCgoKHB0ZXZhbF90KSgxKSkgPDwgMCl8KCgocHRldmFsX3QpKDEpKSA8PCAxKXwgMHwoKChwdGV2 YWxfdCkoMSkpIDw8IDUpfCgoKHB0ZXZhbF90KSgxKSkgPDwgNjMpfCgoKHB0ZXZhbF90KSgxKSkg PDwgNil8IDB8KCgocHRldmFsX3QpKDEpKSA8PCA4KSkgfCAwKSAmIF9fZGVmYXVsdF9rZXJuZWxf cHRlX21hc2spIH0gKTsKfQojIDMwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAy CgoKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3ZzeXNjYWxsLmgiIDEKCgoK CmVudW0gdnN5c2NhbGxfbnVtIHsKIF9fTlJfdmdldHRpbWVvZmRheSwKIF9fTlJfdnRpbWUsCiBf X05SX3ZnZXRjcHUsCn07CiMgMzcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZml4bWFwLmgiIDIK IyA3NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIKZW51bSBmaXhlZF9hZGRyZXNz ZXMgewoKCgoKIFZTWVNDQUxMX1BBR0UgPSAoKCgoKCgoLTEwVUwgPDwgMjApICsgKCgxVUwpIDw8 IDEyKSktMSkgfCAoKF9fdHlwZW9mX18oKC0xMFVMIDw8IDIwKSArICgoMVVMKSA8PCAxMikpKSgo MTw8MjEpLTEpKSkrMSkgLSAoKDFVTCkgPDwgMTIpKSAtICgtMTBVTCA8PCAyMCkpID4+IDEyLAoK CiBGSVhfREJHUF9CQVNFLAogRklYX0VBUkxZQ09OX01FTV9CQVNFLAoKCgoKIEZJWF9BUElDX0JB U0UsCgoKIEZJWF9JT19BUElDX0JBU0VfMCwKIEZJWF9JT19BUElDX0JBU0VfRU5EID0gRklYX0lP X0FQSUNfQkFTRV8wICsgMTI4IC0gMSwKIyAxMDMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZml4 bWFwLmgiCiBGSVhfUEFSQVZJUlRfQk9PVE1BUCwKCgoKCgoKCiBGSVhfQVBFSV9HSEVTX0lSUSwK IEZJWF9BUEVJX0dIRVNfTk1JLAoKCiBfX2VuZF9vZl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2Vz LAojIDEyNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIKIEZJWF9CVE1BUF9FTkQg PQogIChfX2VuZF9vZl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2VzIF4KICAgKF9fZW5kX29mX3Bl cm1hbmVudF9maXhlZF9hZGRyZXNzZXMgKyAoNjQgKiA4KSAtIDEpKSAmCiAgLTUxMgogID8gX19l bmRfb2ZfcGVybWFuZW50X2ZpeGVkX2FkZHJlc3NlcyArICg2NCAqIDgpIC0KICAgIChfX2VuZF9v Zl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2VzICYgKCg2NCAqIDgpIC0gMSkpCiAgOiBfX2VuZF9v Zl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2VzLAogRklYX0JUTUFQX0JFR0lOID0gRklYX0JUTUFQ X0VORCArICg2NCAqIDgpIC0gMSwKCgoKCgoKIF9fZW5kX29mX2ZpeGVkX2FkZHJlc3Nlcwp9OwoK CmV4dGVybiB2b2lkIHJlc2VydmVfdG9wX2FkZHJlc3ModW5zaWduZWQgbG9uZyByZXNlcnZlKTsK CgoKCgoKZXh0ZXJuIGludCBmaXhtYXBzX3NldDsKCmV4dGVybiBwdGVfdCAqa21hcF9wdGU7Cgpl eHRlcm4gcHRlX3QgKnBrbWFwX3BhZ2VfdGFibGU7Cgp2b2lkIF9fbmF0aXZlX3NldF9maXhtYXAo ZW51bSBmaXhlZF9hZGRyZXNzZXMgaWR4LCBwdGVfdCBwdGUpOwp2b2lkIG5hdGl2ZV9zZXRfZml4 bWFwKHVuc2lnbmVkIGlkeCwKICAgICAgICAgcGh5c19hZGRyX3QgcGh5cywgcGdwcm90X3QgZmxh Z3MpOwoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgX19zZXRfZml4bWFwKGVudW0gZml4ZWRfYWRkcmVzc2VzIGlkeCwKICAgIHBo eXNfYWRkcl90IHBoeXMsIHBncHJvdF90IGZsYWdzKQp7CiBuYXRpdmVfc2V0X2ZpeG1hcChpZHgs IHBoeXMsIGZsYWdzKTsKfQojIDE4MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIK dm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1 dGVfXygoX19jb2xkX18pKSAqZWFybHlfbWVtcmVtYXBfZW5jcnlwdGVkKHJlc291cmNlX3NpemVf dCBwaHlzX2FkZHIsCiAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOwp2b2lkIF9fYXR0cmli dXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRf XykpICplYXJseV9tZW1yZW1hcF9lbmNyeXB0ZWRfd3AocmVzb3VyY2Vfc2l6ZV90IHBoeXNfYWRk ciwKICAgICAgdW5zaWduZWQgbG9uZyBzaXplKTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rp b25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSAqZWFybHlfbWVt cmVtYXBfZGVjcnlwdGVkKHJlc291cmNlX3NpemVfdCBwaHlzX2FkZHIsCiAgICAgICAgICB1bnNp Z25lZCBsb25nIHNpemUpOwp2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50 ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpICplYXJseV9tZW1yZW1hcF9kZWNyeXB0 ZWRfd3AocmVzb3VyY2Vfc2l6ZV90IHBoeXNfYWRkciwKICAgICAgdW5zaWduZWQgbG9uZyBzaXpl KTsKCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2ZpeG1hcC5oIiAxCiMgMzAgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9maXhtYXAuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB1bnNpZ25lZCBsb25nIGZpeF90b192aXJ0KGNvbnN0IHVuc2lnbmVkIGludCBpZHgpCnsKIGRv IHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMzIodm9pZCkgX19hdHRyaWJ1dGVf XygoX19lcnJvcl9fKCJCVUlMRF9CVUdfT04gZmFpbGVkOiAiICJpZHggPj0gX19lbmRfb2ZfZml4 ZWRfYWRkcmVzc2VzIikpKTsgaWYgKCEoIShpZHggPj0gX19lbmRfb2ZfZml4ZWRfYWRkcmVzc2Vz KSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzMyKCk7IH0gd2hpbGUgKDApOwogcmV0dXJuICgoKCgo KCgtMTBVTCA8PCAyMCkgKyAoKDFVTCkgPDwgMTIpKS0xKSB8ICgoX190eXBlb2ZfXygoLTEwVUwg PDwgMjApICsgKCgxVUwpIDw8IDEyKSkpKCgxPDwyMSktMSkpKSsxKSAtICgoMVVMKSA8PCAxMikp IC0gKChpZHgpIDw8IDEyKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgdmlydF90b19maXgoY29uc3QgdW5z aWduZWQgbG9uZyB2YWRkcikKewogZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCghISh2YWRkciA+ PSAoKCgoKCgtMTBVTCA8PCAyMCkgKyAoKDFVTCkgPDwgMTIpKS0xKSB8ICgoX190eXBlb2ZfXygo LTEwVUwgPDwgMjApICsgKCgxVUwpIDw8IDEyKSkpKCgxPDwyMSktMSkpKSsxKSAtICgoMVVMKSA8 PCAxMikpIHx8IHZhZGRyIDwgKCgoKCgoKC0xMFVMIDw8IDIwKSArICgoMVVMKSA8PCAxMikpLTEp IHwgKChfX3R5cGVvZl9fKCgtMTBVTCA8PCAyMCkgKyAoKDFVTCkgPDwgMTIpKSkoKDE8PDIxKS0x KSkpKzEpIC0gKCgxVUwpIDw8IDEyKSkgLSAoX19lbmRfb2ZfcGVybWFuZW50X2ZpeGVkX2FkZHJl c3NlcyA8PCAxMikpKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQi ICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wi XG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRy XG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAi XHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBi dWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJp IiAoImluY2x1ZGUvYXNtLWdlbmVyaWMvZml4bWFwLmgiKSwgImkiICgzOCksICJpIiAoMCksICJp IiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyBkbyB7ICh7IGFzbSB2 b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQudW5yZWFjaGFibGVcblx0 IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgxNykpOyB9 KTsgYXNtIHZvbGF0aWxlKCIiKTsgX19idWlsdGluX3VucmVhY2hhYmxlKCk7IH0gd2hpbGUgKDAp OyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiByZXR1cm4gKCgoKCgoKCgtMTBVTCA8PCAyMCkg KyAoKDFVTCkgPDwgMTIpKS0xKSB8ICgoX190eXBlb2ZfXygoLTEwVUwgPDwgMjApICsgKCgxVUwp IDw8IDEyKSkpKCgxPDwyMSktMSkpKSsxKSAtICgoMVVMKSA8PCAxMikpIC0gKCh2YWRkcikmKH4o KCgxVUwpIDw8IDEyKS0xKSkpKSA+PiAxMik7Cn0KIyAxOTEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vZml4bWFwLmgiIDIKCgoKCnZvaWQgX19lYXJseV9zZXRfZml4bWFwKGVudW0gZml4ZWRfYWRk cmVzc2VzIGlkeCwKICAgcGh5c19hZGRyX3QgcGh5cywgcGdwcm90X3QgZmxhZ3MpOwojIDEyICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL2FwaWMuaCIgMgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9oYXJkaXJxLmgiIDEKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogdTE2IF9fc29mdGlycV9w ZW5kaW5nOwoKCgogdW5zaWduZWQgaW50IF9fbm1pX2NvdW50OwoKIHVuc2lnbmVkIGludCBhcGlj X3RpbWVyX2lycXM7CiB1bnNpZ25lZCBpbnQgaXJxX3NwdXJpb3VzX2NvdW50OwogdW5zaWduZWQg aW50IGljcl9yZWFkX3JldHJ5X2NvdW50OwoKCiB1bnNpZ25lZCBpbnQga3ZtX3Bvc3RlZF9pbnRy X2lwaXM7CiB1bnNpZ25lZCBpbnQga3ZtX3Bvc3RlZF9pbnRyX3dha2V1cF9pcGlzOwogdW5zaWdu ZWQgaW50IGt2bV9wb3N0ZWRfaW50cl9uZXN0ZWRfaXBpczsKCiB1bnNpZ25lZCBpbnQgeDg2X3Bs YXRmb3JtX2lwaXM7CiB1bnNpZ25lZCBpbnQgYXBpY19wZXJmX2lycXM7CiB1bnNpZ25lZCBpbnQg YXBpY19pcnFfd29ya19pcnFzOwoKIHVuc2lnbmVkIGludCBpcnFfcmVzY2hlZF9jb3VudDsKIHVu c2lnbmVkIGludCBpcnFfY2FsbF9jb3VudDsKCiB1bnNpZ25lZCBpbnQgaXJxX3RsYl9jb3VudDsK CiB1bnNpZ25lZCBpbnQgaXJxX3RoZXJtYWxfY291bnQ7CgoKIHVuc2lnbmVkIGludCBpcnFfdGhy ZXNob2xkX2NvdW50OwoKCiB1bnNpZ25lZCBpbnQgaXJxX2RlZmVycmVkX2Vycm9yX2NvdW50OwoK CiB1bnNpZ25lZCBpbnQgaXJxX2h2X2NhbGxiYWNrX2NvdW50OwoKCiB1bnNpZ25lZCBpbnQgaXJx X2h2X3JlZW5saWdodGVubWVudF9jb3VudDsKIHVuc2lnbmVkIGludCBoeXBlcnZfc3RpbWVyMF9j b3VudDsKCn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKDYpKSkpKSBpcnFfY3B1 c3RhdF90OwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIi KSkpIF9fdHlwZW9mX18oaXJxX2NwdXN0YXRfdCkgaXJxX3N0YXQgX19hdHRyaWJ1dGVfXygoX19h bGlnbmVkX18oKDEgPDwgKDYpKSkpKTsKCgoKCgpleHRlcm4gdm9pZCBhY2tfYmFkX2lycSh1bnNp Z25lZCBpbnQgaXJxKTsKCmV4dGVybiB1NjQgYXJjaF9pcnFfc3RhdF9jcHUodW5zaWduZWQgaW50 IGNwdSk7CgoKZXh0ZXJuIHU2NCBhcmNoX2lycV9zdGF0KHZvaWQpOwojIDgwICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrdm1fc2V0X2NwdV9sMXRmX2ZsdXNoX2wxZCh2 b2lkKSB7IH0KIyAxNSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiIDIKIyA0NSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZ2VuZXJpY19hcGljX3Byb2JlKHZvaWQp CnsKfQoKCgoKZXh0ZXJuIGludCBhcGljX3ZlcmJvc2l0eTsKZXh0ZXJuIGludCBsb2NhbF9hcGlj X3RpbWVyX2MyX29rOwoKZXh0ZXJuIGludCBkaXNhYmxlX2FwaWM7CmV4dGVybiB1bnNpZ25lZCBp bnQgbGFwaWNfdGltZXJfcGVyaW9kOwoKZXh0ZXJuIGVudW0gYXBpY19pbnRyX21vZGVfaWQgYXBp Y19pbnRyX21vZGU7CmVudW0gYXBpY19pbnRyX21vZGVfaWQgewogQVBJQ19QSUMsCiBBUElDX1ZJ UlRVQUxfV0lSRSwKIEFQSUNfVklSVFVBTF9XSVJFX05PX0NPTkZJRywKIEFQSUNfU1lNTUVUUklD X0lPLAogQVBJQ19TWU1NRVRSSUNfSU9fTk9fUk9VVElORwp9OwoKCmV4dGVybiB2b2lkIF9faW5x dWlyZV9yZW1vdGVfYXBpYyhpbnQgYXBpY2lkKTsKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZWZhdWx0X2lucXVpcmVf cmVtb3RlX2FwaWMoaW50IGFwaWNpZCkKewogaWYgKGFwaWNfdmVyYm9zaXR5ID49IDIpCiAgX19p bnF1aXJlX3JlbW90ZV9hcGljKGFwaWNpZCk7Cn0KIyA4OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9hcGljLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGJvb2wgYXBpY19mcm9tX3NtcF9jb25maWcodm9pZCkKewogcmV0dXJuIHNtcF9m b3VuZF9jb25maWcgJiYgIWRpc2FibGVfYXBpYzsKfQojIDEwMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9hcGljLmgiCmV4dGVybiBpbnQgc2V0dXBfcHJvZmlsaW5nX3RpbWVyKHVuc2lnbmVkIGlu dCk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIG5hdGl2ZV9hcGljX21lbV93cml0ZSh1MzIgcmVnLCB1MzIgdikKewogdm9sYXRp bGUgdTMyICphZGRyID0gKHZvbGF0aWxlIHUzMiAqKSgoZml4X3RvX3ZpcnQoRklYX0FQSUNfQkFT RSkpICsgcmVnKTsKCiBhc20gX19pbmxpbmUgdm9sYXRpbGUgKCIjIEFMVDogb2xkbnN0clxuIiAi NjYxOlxuXHQiICJtb3ZsICUwLCAlUDEiICJcbjY2MjpcbiIgIiMgQUxUOiBwYWRkaW5nXG4iICIu c2tpcCAtKCgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKS0oIiAiNjYyYi02NjFiIiAiKSkg PiAwKSAqICIgIigoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKS0oIiAiNjYyYi02NjFiIiAi KSksMHg5MFxuIiAiNjYzIiAiOlxuIiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMsXCJh XCJcbiIgIiAubG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIgIjY2NCIiMSIiZiAtIC5cbiIgIiAu d29yZCAiICIoMTkqMzIgKyAoNSkpIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MWIiICJcbiIg IiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICJcbiIgIiAuYnl0ZSAiICI2NjMiImIt NjYyYiIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFj ZW1lbnQsIFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxhY2VtZW50ICIgIjEiICJcbiIgIjY2NCIiMSIi OlxuXHQiICJ4Y2hnbCAlMCwgJVAxIiAiXG4iICI2NjUiIjEiICI6XG4iICIucG9wc2VjdGlvblxu IiA6ICI9ciIgKHYpLCAiPW0iICgqYWRkcikgOiAiaSIgKDApLCAiMCIgKHYpLCAibSIgKCphZGRy KSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHUzMiBu YXRpdmVfYXBpY19tZW1fcmVhZCh1MzIgcmVnKQp7CiByZXR1cm4gKigodm9sYXRpbGUgdTMyICop KChmaXhfdG9fdmlydChGSVhfQVBJQ19CQVNFKSkgKyByZWcpKTsKfQoKZXh0ZXJuIHZvaWQgbmF0 aXZlX2FwaWNfd2FpdF9pY3JfaWRsZSh2b2lkKTsKZXh0ZXJuIHUzMiBuYXRpdmVfc2FmZV9hcGlj X3dhaXRfaWNyX2lkbGUodm9pZCk7CmV4dGVybiB2b2lkIG5hdGl2ZV9hcGljX2ljcl93cml0ZSh1 MzIgbG93LCB1MzIgaWQpOwpleHRlcm4gdTY0IG5hdGl2ZV9hcGljX2ljcl9yZWFkKHZvaWQpOwoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBhcGljX2lzX3gyYXBpY19lbmFibGVkKHZvaWQpCnsKIHU2NCBtc3I7CgogaWYgKHJkbXNy bF9zYWZlKDB4MDAwMDAwMWIsICZtc3IpKQogIHJldHVybiBmYWxzZTsKIHJldHVybiBtc3IgJiAo MVVMIDw8IDEwKTsKfQoKZXh0ZXJuIHZvaWQgZW5hYmxlX0lSX3gyYXBpYyh2b2lkKTsKCmV4dGVy biBpbnQgZ2V0X3BoeXNpY2FsX2Jyb2FkY2FzdCh2b2lkKTsKCmV4dGVybiBpbnQgbGFwaWNfZ2V0 X21heGx2dCh2b2lkKTsKZXh0ZXJuIHZvaWQgY2xlYXJfbG9jYWxfQVBJQyh2b2lkKTsKZXh0ZXJu IHZvaWQgZGlzY29ubmVjdF9ic3BfQVBJQyhpbnQgdmlydF93aXJlX3NldHVwKTsKZXh0ZXJuIHZv aWQgZGlzYWJsZV9sb2NhbF9BUElDKHZvaWQpOwpleHRlcm4gdm9pZCBhcGljX3NvZnRfZGlzYWJs ZSh2b2lkKTsKZXh0ZXJuIHZvaWQgbGFwaWNfc2h1dGRvd24odm9pZCk7CmV4dGVybiB2b2lkIHN5 bmNfQXJiX0lEcyh2b2lkKTsKZXh0ZXJuIHZvaWQgaW5pdF9ic3BfQVBJQyh2b2lkKTsKZXh0ZXJu IHZvaWQgYXBpY19pbnRyX21vZGVfc2VsZWN0KHZvaWQpOwpleHRlcm4gdm9pZCBhcGljX2ludHJf bW9kZV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBpbml0X2FwaWNfbWFwcGluZ3Modm9pZCk7CnZv aWQgcmVnaXN0ZXJfbGFwaWNfYWRkcmVzcyh1bnNpZ25lZCBsb25nIGFkZHJlc3MpOwpleHRlcm4g dm9pZCBzZXR1cF9ib290X0FQSUNfY2xvY2sodm9pZCk7CmV4dGVybiB2b2lkIHNldHVwX3NlY29u ZGFyeV9BUElDX2Nsb2NrKHZvaWQpOwpleHRlcm4gdm9pZCBsYXBpY191cGRhdGVfdHNjX2ZyZXEo dm9pZCk7CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IGFwaWNfZm9yY2VfZW5hYmxlKHVuc2lnbmVkIGxvbmcgYWRkcikKewogcmV0 dXJuIC0xOwp9CgoKCgpleHRlcm4gdm9pZCBhcGljX2FwX3NldHVwKHZvaWQpOwoKCgoKCmV4dGVy biBpbnQgYXBpY19pc19jbHVzdGVyZWRfYm94KHZvaWQpOwoKCgoKCgoKZXh0ZXJuIGludCBzZXR1 cF9BUElDX2VpbHZ0KHU4IGx2dF9vZmYsIHU4IHZlY3RvciwgdTggbXNnX3R5cGUsIHU4IG1hc2sp OwpleHRlcm4gdm9pZCBsYXBpY19hc3NpZ25fc3lzdGVtX3ZlY3RvcnModm9pZCk7CmV4dGVybiB2 b2lkIGxhcGljX2Fzc2lnbl9sZWdhY3lfdmVjdG9yKHVuc2lnbmVkIGludCBpc2FpcnEsIGJvb2wg cmVwbGFjZSk7CmV4dGVybiB2b2lkIGxhcGljX29ubGluZSh2b2lkKTsKZXh0ZXJuIHZvaWQgbGFw aWNfb2ZmbGluZSh2b2lkKTsKZXh0ZXJuIGJvb2wgYXBpY19uZWVkc19waXQodm9pZCk7CgpleHRl cm4gdm9pZCBhcGljX3NlbmRfSVBJX2FsbGJ1dHNlbGYodW5zaWduZWQgaW50IHZlY3Rvcik7CiMg MjcxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FwaWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjaGVja194MmFwaWModm9p ZCkgeyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgeDJhcGljX3NldHVwKHZvaWQpIHsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgeDJhcGljX2VuYWJsZWQodm9p ZCkgeyByZXR1cm4gMDsgfQoKCgoKCnN0cnVjdCBpcnFfZGF0YTsKIyAyOTAgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYXBpYy5oIgpzdHJ1Y3QgYXBpYyB7Cgogdm9pZCAoKmVvaV93cml0ZSkodTMy IHJlZywgdTMyIHYpOwogdm9pZCAoKm5hdGl2ZV9lb2lfd3JpdGUpKHUzMiByZWcsIHUzMiB2KTsK IHZvaWQgKCp3cml0ZSkodTMyIHJlZywgdTMyIHYpOwogdTMyICgqcmVhZCkodTMyIHJlZyk7CgoK IHZvaWQgKCp3YWl0X2ljcl9pZGxlKSh2b2lkKTsKIHUzMiAoKnNhZmVfd2FpdF9pY3JfaWRsZSko dm9pZCk7Cgogdm9pZCAoKnNlbmRfSVBJKShpbnQgY3B1LCBpbnQgdmVjdG9yKTsKIHZvaWQgKCpz ZW5kX0lQSV9tYXNrKShjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaywgaW50IHZlY3Rvcik7CiB2 b2lkICgqc2VuZF9JUElfbWFza19hbGxidXRzZWxmKShjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbXNr LCBpbnQgdmVjKTsKIHZvaWQgKCpzZW5kX0lQSV9hbGxidXRzZWxmKShpbnQgdmVjdG9yKTsKIHZv aWQgKCpzZW5kX0lQSV9hbGwpKGludCB2ZWN0b3IpOwogdm9pZCAoKnNlbmRfSVBJX3NlbGYpKGlu dCB2ZWN0b3IpOwoKCiB1MzIgZGVzdF9sb2dpY2FsOwogdTMyIGRpc2FibGVfZXNyOwogdTMyIGly cV9kZWxpdmVyeV9tb2RlOwogdTMyIGlycV9kZXN0X21vZGU7CgogdTMyICgqY2FsY19kZXN0X2Fw aWNpZCkodW5zaWduZWQgaW50IGNwdSk7CgoKIHU2NCAoKmljcl9yZWFkKSh2b2lkKTsKIHZvaWQg KCppY3Jfd3JpdGUpKHUzMiBsb3csIHUzMiBoaWdoKTsKCgogaW50ICgqcHJvYmUpKHZvaWQpOwog aW50ICgqYWNwaV9tYWR0X29lbV9jaGVjaykoY2hhciAqb2VtX2lkLCBjaGFyICpvZW1fdGFibGVf aWQpOwogaW50ICgqYXBpY19pZF92YWxpZCkodTMyIGFwaWNpZCk7CiBpbnQgKCphcGljX2lkX3Jl Z2lzdGVyZWQpKHZvaWQpOwoKIGJvb2wgKCpjaGVja19hcGljaWRfdXNlZCkocGh5c2lkX21hc2tf dCAqbWFwLCBpbnQgYXBpY2lkKTsKIHZvaWQgKCppbml0X2FwaWNfbGRyKSh2b2lkKTsKIHZvaWQg KCppb2FwaWNfcGh5c19pZF9tYXApKHBoeXNpZF9tYXNrX3QgKnBoeXNfbWFwLCBwaHlzaWRfbWFz a190ICpyZXRtYXApOwogdm9pZCAoKnNldHVwX2FwaWNfcm91dGluZykodm9pZCk7CiBpbnQgKCpj cHVfcHJlc2VudF90b19hcGljaWQpKGludCBtcHNfY3B1KTsKIHZvaWQgKCphcGljaWRfdG9fY3B1 X3ByZXNlbnQpKGludCBwaHlzX2FwaWNpZCwgcGh5c2lkX21hc2tfdCAqcmV0bWFwKTsKIGludCAo KmNoZWNrX3BoeXNfYXBpY2lkX3ByZXNlbnQpKGludCBwaHlzX2FwaWNpZCk7CiBpbnQgKCpwaHlz X3BrZ19pZCkoaW50IGNwdWlkX2FwaWMsIGludCBpbmRleF9tc2IpOwoKIHUzMiAoKmdldF9hcGlj X2lkKSh1bnNpZ25lZCBsb25nIHgpOwogdTMyICgqc2V0X2FwaWNfaWQpKHVuc2lnbmVkIGludCBp ZCk7CgoKIGludCAoKndha2V1cF9zZWNvbmRhcnlfY3B1KShpbnQgYXBpY2lkLCB1bnNpZ25lZCBs b25nIHN0YXJ0X2VpcCk7Cgogdm9pZCAoKmlucXVpcmVfcmVtb3RlX2FwaWMpKGludCBhcGljaWQp OwojIDM1NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiCiBjaGFyICpuYW1lOwp9OwoK CgoKCgpleHRlcm4gc3RydWN0IGFwaWMgKmFwaWM7CiMgMzg0ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL2FwaWMuaCIKZXh0ZXJuIHN0cnVjdCBhcGljICpfX2FwaWNkcml2ZXJzW10sICpfX2FwaWNk cml2ZXJzX2VuZFtdOwoKCgoKCmV4dGVybiBpbnQgd2FrZXVwX3NlY29uZGFyeV9jcHVfdmlhX25t aShpbnQgYXBpY2lkLCB1bnNpZ25lZCBsb25nIHN0YXJ0X2VpcCk7CmV4dGVybiBpbnQgbGFwaWNf Y2FuX3VucGx1Z19jcHUodm9pZCk7CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgYXBpY19yZWFkKHUzMiByZWcpCnsKIHJldHVy biBhcGljLT5yZWFkKHJlZyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXBpY193cml0ZSh1MzIgcmVnLCB1MzIgdmFsKQp7 CiBhcGljLT53cml0ZShyZWcsIHZhbCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXBpY19lb2kodm9pZCkKewogYXBpYy0+ ZW9pX3dyaXRlKDB4QjAsIDB4MCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBhcGljX2ljcl9yZWFkKHZvaWQpCnsKIHJldHVy biBhcGljLT5pY3JfcmVhZCgpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFwaWNfaWNyX3dyaXRlKHUzMiBsb3csIHUzMiBo aWdoKQp7CiBhcGljLT5pY3Jfd3JpdGUobG93LCBoaWdoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcGljX3dhaXRfaWNy X2lkbGUodm9pZCkKewogYXBpYy0+d2FpdF9pY3JfaWRsZSgpOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgc2FmZV9hcGljX3dh aXRfaWNyX2lkbGUodm9pZCkKewogcmV0dXJuIGFwaWMtPnNhZmVfd2FpdF9pY3JfaWRsZSgpOwp9 CgpleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkg X19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBhcGljX3NldF9lb2lfd3JpdGUodm9pZCAoKmVvaV93 cml0ZSkodTMyIHJlZywgdTMyIHYpKTsKIyA0NDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXBp Yy5oIgpleHRlcm4gdm9pZCBhcGljX2Fja19pcnEoc3RydWN0IGlycV9kYXRhICpkYXRhKTsKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgYWNrX0FQSUNfaXJxKHZvaWQpCnsKCgoKCiBhcGljX2VvaSgpOwp9CgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBsYXBpY192 ZWN0b3Jfc2V0X2luX2lycih1bnNpZ25lZCBpbnQgdmVjdG9yKQp7CiB1MzIgaXJyID0gYXBpY19y ZWFkKDB4MjAwICsgKHZlY3RvciAvIDMyICogMHgxMCkpOwoKIHJldHVybiAhIShpcnIgJiAoMVUg PDwgKHZlY3RvciAlIDMyKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBkZWZhdWx0X2dldF9hcGljX2lkKHVuc2ln bmVkIGxvbmcgeCkKewogdW5zaWduZWQgaW50IHZlciA9ICgoYXBpY19yZWFkKDB4MzApKSAmIDB4 RkZ1KTsKCiBpZiAoKCh2ZXIpID49IDB4MTQpIHx8IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoIDMq MzIrMjYpKSAmJiAoICgoKCggMyozMisyNikpPj41KT09KDApICYmICgxVUw8PCgoKCAzKjMyKzI2 KSkmMzEpICYgKCgxPDwoKCAwKjMyKyAwKSAmIDMxKSl8MHwoMTw8KCggMCozMisgNSkgJiAzMSkp fCgxPDwoKCAwKjMyKyA2KSAmIDMxKSl8ICgxPDwoKCAwKjMyKyA4KSAmIDMxKSl8MHwoMTw8KCgg MCozMisyNCkgJiAzMSkpfCgxPDwoKCAwKjMyKzE1KSAmIDMxKSl8ICgxPDwoKCAwKjMyKzI1KSAm IDMxKSl8KDE8PCgoIDAqMzIrMjYpICYgMzEpKSkgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0o MSkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAoKDE8PCgoIDEqMzIrMjkpICYgMzEpKXww KSApKSB8fCAoKCgoIDMqMzIrMjYpKT4+NSk9PSgyKSAmJiAoMVVMPDwoKCggMyozMisyNikpJjMx KSAmIDAgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oMykgJiYgKDFVTDw8KCgoIDMqMzIrMjYp KSYzMSkgJiAoKDE8PCgoIDMqMzIrMjApICYgMzEpKSkgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUp PT0oNCkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAoMCkgKSkgfHwgKCgoKCAzKjMyKzI2 KSk+PjUpPT0oNSkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8ICgoKCggMyoz MisyNikpPj41KT09KDYpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKCgo IDMqMzIrMjYpKT4+NSk9PSg3KSAmJiAoMVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAgKSkgfHwg KCgoKCAzKjMyKzI2KSk+PjUpPT0oOCkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkp IHx8ICgoKCggMyozMisyNikpPj41KT09KDkpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYg MCApKSB8fCAoKCgoIDMqMzIrMjYpKT4+NSk9PSgxMCkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYz MSkgJiAwICkpIHx8ICgoKCggMyozMisyNikpPj41KT09KDExKSAmJiAoMVVMPDwoKCggMyozMisy NikpJjMxKSAmIDAgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oMTIpICYmICgxVUw8PCgoKCAz KjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKCgoIDMqMzIrMjYpKT4+NSk9PSgxMykgJiYgKDFVTDw8 KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8ICgoKCggMyozMisyNikpPj41KT09KDE0KSAmJiAo MVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oMTUp ICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKCgoIDMqMzIrMjYpKT4+NSk9 PSgxNikgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8ICgoKCggMyozMisyNikp Pj41KT09KDE3KSAmJiAoMVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAgKSkgfHwgKCgoKCAzKjMy KzI2KSk+PjUpPT0oMTgpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKGlu dCkoc2l6ZW9mKHN0cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0pKSkgfHwgKChpbnQpKHNp emVvZihzdHJ1Y3QgeyBpbnQ6KC0hISgxOSAhPSAxOSkpOyB9KSkpKSA/IDEgOiB0ZXN0X2JpdCgo IDMqMzIrMjYpLCAodW5zaWduZWQgbG9uZyAqKSgoJmJvb3RfY3B1X2RhdGEpLT54ODZfY2FwYWJp bGl0eSkpKSkKICByZXR1cm4gKHggPj4gMjQpICYgMHhGRjsKIGVsc2UKICByZXR1cm4gKHggPj4g MjQpICYgMHgwRjsKfQoKCgoKCgoKZXh0ZXJuIHZvaWQgZ2VuZXJpY19iaWdzbXBfcHJvYmUodm9p ZCk7CgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zbXAuaCIgMQojIDQ4NiAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiIDIKCgoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHNlY3Rp b24oIi5kYXRhLi5wZXJjcHUiICIuLnJlYWRfbW9zdGx5IikpKSBfX3R5cGVvZl9fKHUxNikgeDg2 X2Jpb3NfY3B1X2FwaWNpZDsgZXh0ZXJuIF9fdHlwZW9mX18odTE2KSAqeDg2X2Jpb3NfY3B1X2Fw aWNpZF9lYXJseV9wdHI7IGV4dGVybiBfX3R5cGVvZl9fKHUxNikgeDg2X2Jpb3NfY3B1X2FwaWNp ZF9lYXJseV9tYXBbXTsKCmV4dGVybiBzdHJ1Y3QgYXBpYyBhcGljX25vb3A7CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBp bnQgcmVhZF9hcGljX2lkKHZvaWQpCnsKIHVuc2lnbmVkIGludCByZWcgPSBhcGljX3JlYWQoMHgy MCk7CgogcmV0dXJuIGFwaWMtPmdldF9hcGljX2lkKHJlZyk7Cn0KCmV4dGVybiBpbnQgZGVmYXVs dF9hcGljX2lkX3ZhbGlkKHUzMiBhcGljaWQpOwpleHRlcm4gaW50IGRlZmF1bHRfYWNwaV9tYWR0 X29lbV9jaGVjayhjaGFyICosIGNoYXIgKik7CmV4dGVybiB2b2lkIGRlZmF1bHRfc2V0dXBfYXBp Y19yb3V0aW5nKHZvaWQpOwoKZXh0ZXJuIHUzMiBhcGljX2RlZmF1bHRfY2FsY19hcGljaWQodW5z aWduZWQgaW50IGNwdSk7CmV4dGVybiB1MzIgYXBpY19mbGF0X2NhbGNfYXBpY2lkKHVuc2lnbmVk IGludCBjcHUpOwoKZXh0ZXJuIGJvb2wgZGVmYXVsdF9jaGVja19hcGljaWRfdXNlZChwaHlzaWRf bWFza190ICptYXAsIGludCBhcGljaWQpOwpleHRlcm4gdm9pZCBkZWZhdWx0X2lvYXBpY19waHlz X2lkX21hcChwaHlzaWRfbWFza190ICpwaHlzX21hcCwgcGh5c2lkX21hc2tfdCAqcmV0bWFwKTsK ZXh0ZXJuIGludCBkZWZhdWx0X2NwdV9wcmVzZW50X3RvX2FwaWNpZChpbnQgbXBzX2NwdSk7CmV4 dGVybiBpbnQgZGVmYXVsdF9jaGVja19waHlzX2FwaWNpZF9wcmVzZW50KGludCBwaHlzX2FwaWNp ZCk7CgoKCgpib29sIGFwaWNfaWRfaXNfcHJpbWFyeV90aHJlYWQodW5zaWduZWQgaW50IGlkKTsK dm9pZCBhcGljX3NtdF91cGRhdGUodm9pZCk7CgoKCgoKZXh0ZXJuIHZvaWQgaXJxX2VudGVyKHZv aWQpOwpleHRlcm4gdm9pZCBpcnFfZXhpdCh2b2lkKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZW50ZXJpbmdfaXJxKHZvaWQp CnsKIGlycV9lbnRlcigpOwoga3ZtX3NldF9jcHVfbDF0Zl9mbHVzaF9sMWQoKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBl bnRlcmluZ19hY2tfaXJxKHZvaWQpCnsKIGVudGVyaW5nX2lycSgpOwogYWNrX0FQSUNfaXJxKCk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgaXBpX2VudGVyaW5nX2Fja19pcnEodm9pZCkKewogaXJxX2VudGVyKCk7CiBhY2tf QVBJQ19pcnEoKTsKIGt2bV9zZXRfY3B1X2wxdGZfZmx1c2hfbDFkKCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZXhpdGlu Z19pcnEodm9pZCkKewogaXJxX2V4aXQoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBleGl0aW5nX2Fja19pcnEodm9pZCkK ewogYWNrX0FQSUNfaXJxKCk7CiBpcnFfZXhpdCgpOwp9CgpleHRlcm4gdm9pZCBpb2FwaWNfemFw X2xvY2tzKHZvaWQpOwojIDE0ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NtcC5oIiAyCgojIDEg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vaW9fYXBpYy5oIiAxCgoKCgoKCgojIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vaXJxX3ZlY3RvcnMuaCIgMQojIDkgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vaW9fYXBpYy5oIiAyCiMgMjggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vaW9fYXBpYy5oIgp1 bmlvbiBJT19BUElDX3JlZ18wMCB7CiB1MzIgcmF3Owogc3RydWN0IHsKICB1MzIgX19yZXNlcnZl ZF8yIDogMTQsCiAgIExUUyA6IDEsCiAgIGRlbGl2ZXJ5X3R5cGUgOiAxLAogICBfX3Jlc2VydmVk XzEgOiA4LAogICBJRCA6IDg7CiB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBiaXRzOwp9OwoK dW5pb24gSU9fQVBJQ19yZWdfMDEgewogdTMyIHJhdzsKIHN0cnVjdCB7CiAgdTMyIHZlcnNpb24g OiA4LAogICBfX3Jlc2VydmVkXzIgOiA3LAogICBQUlEgOiAxLAogICBlbnRyaWVzIDogOCwKICAg X19yZXNlcnZlZF8xIDogODsKIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGJpdHM7Cn07Cgp1 bmlvbiBJT19BUElDX3JlZ18wMiB7CiB1MzIgcmF3Owogc3RydWN0IHsKICB1MzIgX19yZXNlcnZl ZF8yIDogMjQsCiAgIGFyYml0cmF0aW9uIDogNCwKICAgX19yZXNlcnZlZF8xIDogNDsKIH0gX19h dHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGJpdHM7Cn07Cgp1bmlvbiBJT19BUElDX3JlZ18wMyB7CiB1 MzIgcmF3Owogc3RydWN0IHsKICB1MzIgYm9vdF9EVCA6IDEsCiAgIF9fcmVzZXJ2ZWRfMSA6IDMx OwogfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgYml0czsKfTsKCnN0cnVjdCBJT19BUElDX3Jv dXRlX2VudHJ5IHsKIF9fdTMyIHZlY3RvciA6IDgsCiAgZGVsaXZlcnlfbW9kZSA6IDMsCgoKCiAg ZGVzdF9tb2RlIDogMSwKICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogIHBvbGFyaXR5IDogMSwKICBp cnIgOiAxLAogIHRyaWdnZXIgOiAxLAogIG1hc2sgOiAxLAogIF9fcmVzZXJ2ZWRfMiA6IDE1OwoK IF9fdTMyIF9fcmVzZXJ2ZWRfMyA6IDI0LAogIGRlc3QgOiA4Owp9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKTsKCnN0cnVjdCBJUl9JT19BUElDX3JvdXRlX2VudHJ5IHsKIF9fdTY0IHZlY3RvciA6 IDgsCiAgemVybyA6IDMsCiAgaW5kZXgyIDogMSwKICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogIHBv bGFyaXR5IDogMSwKICBpcnIgOiAxLAogIHRyaWdnZXIgOiAxLAogIG1hc2sgOiAxLAogIHJlc2Vy dmVkIDogMzEsCiAgZm9ybWF0IDogMSwKICBpbmRleCA6IDE1Owp9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKTsKCnN0cnVjdCBpcnFfYWxsb2NfaW5mbzsKc3RydWN0IGlvYXBpY19kb21haW5fY2Zn OwojIDEyMyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pb19hcGljLmgiCmV4dGVybiBpbnQgbnJf aW9hcGljczsKCmV4dGVybiBpbnQgbXBjX2lvYXBpY19pZChpbnQgaW9hcGljKTsKZXh0ZXJuIHVu c2lnbmVkIGludCBtcGNfaW9hcGljX2FkZHIoaW50IGlvYXBpYyk7CgoKZXh0ZXJuIGludCBtcF9p cnFfZW50cmllczsKCgpleHRlcm4gc3RydWN0IG1wY19pbnRzcmMgbXBfaXJxc1soMjU2ICogNCld OwoKCmV4dGVybiBpbnQgc2tpcF9pb2FwaWNfc2V0dXA7CgoKZXh0ZXJuIGludCBub2lvYXBpY3F1 aXJrOwoKCmV4dGVybiBpbnQgbm9pb2FwaWNyZXJvdXRlOwoKZXh0ZXJuIHUzMiBnc2lfdG9wOwoK ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW9fYXBpY19pcnFzOwojIDE1NiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9pb19hcGljLmgiCnN0cnVjdCBpcnFfY2ZnOwpleHRlcm4gdm9pZCBpb2FwaWNfaW5z ZXJ0X3Jlc291cmNlcyh2b2lkKTsKZXh0ZXJuIGludCBhcmNoX2Vhcmx5X2lvYXBpY19pbml0KHZv aWQpOwoKZXh0ZXJuIGludCBzYXZlX2lvYXBpY19lbnRyaWVzKHZvaWQpOwpleHRlcm4gdm9pZCBt YXNrX2lvYXBpY19lbnRyaWVzKHZvaWQpOwpleHRlcm4gaW50IHJlc3RvcmVfaW9hcGljX2VudHJp ZXModm9pZCk7CgpleHRlcm4gdm9pZCBzZXR1cF9pb2FwaWNfaWRzX2Zyb21fbXBjKHZvaWQpOwpl eHRlcm4gdm9pZCBzZXR1cF9pb2FwaWNfaWRzX2Zyb21fbXBjX25vY2hlY2sodm9pZCk7CgpleHRl cm4gaW50IG1wX2ZpbmRfaW9hcGljKHUzMiBnc2kpOwpleHRlcm4gaW50IG1wX2ZpbmRfaW9hcGlj X3BpbihpbnQgaW9hcGljLCB1MzIgZ3NpKTsKZXh0ZXJuIGludCBtcF9tYXBfZ3NpX3RvX2lycSh1 MzIgZ3NpLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAgICAgICAgc3RydWN0IGlycV9hbGxvY19pbmZv ICppbmZvKTsKZXh0ZXJuIHZvaWQgbXBfdW5tYXBfaXJxKGludCBpcnEpOwpleHRlcm4gaW50IG1w X3JlZ2lzdGVyX2lvYXBpYyhpbnQgaWQsIHUzMiBhZGRyZXNzLCB1MzIgZ3NpX2Jhc2UsCiAgICAg ICAgIHN0cnVjdCBpb2FwaWNfZG9tYWluX2NmZyAqY2ZnKTsKZXh0ZXJuIGludCBtcF91bnJlZ2lz dGVyX2lvYXBpYyh1MzIgZ3NpX2Jhc2UpOwpleHRlcm4gaW50IG1wX2lvYXBpY19yZWdpc3RlcmVk KHUzMiBnc2lfYmFzZSk7CgpleHRlcm4gdm9pZCBpb2FwaWNfc2V0X2FsbG9jX2F0dHIoc3RydWN0 IGlycV9hbGxvY19pbmZvICppbmZvLAogICAgICBpbnQgbm9kZSwgaW50IHRyaWdnZXIsIGludCBw b2xhcml0eSk7CgpleHRlcm4gdm9pZCBtcF9zYXZlX2lycShzdHJ1Y3QgbXBjX2ludHNyYyAqbSk7 CgpleHRlcm4gdm9pZCBkaXNhYmxlX2lvYXBpY19zdXBwb3J0KHZvaWQpOwoKZXh0ZXJuIHZvaWQg X19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18o KF9fY29sZF9fKSkgaW9fYXBpY19pbml0X21hcHBpbmdzKHZvaWQpOwpleHRlcm4gdW5zaWduZWQg aW50IG5hdGl2ZV9pb19hcGljX3JlYWQodW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCBy ZWcpOwpleHRlcm4gdm9pZCBuYXRpdmVfcmVzdG9yZV9ib290X2lycV9tb2RlKHZvaWQpOwoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5z aWduZWQgaW50IGlvX2FwaWNfcmVhZCh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJl ZykKewogcmV0dXJuIHg4Nl9hcGljX29wcy5pb19hcGljX3JlYWQoYXBpYywgcmVnKTsKfQoKZXh0 ZXJuIHZvaWQgc2V0dXBfSU9fQVBJQyh2b2lkKTsKZXh0ZXJuIHZvaWQgZW5hYmxlX0lPX0FQSUMo dm9pZCk7CmV4dGVybiB2b2lkIGNsZWFyX0lPX0FQSUModm9pZCk7CmV4dGVybiB2b2lkIHJlc3Rv cmVfYm9vdF9pcnFfbW9kZSh2b2lkKTsKZXh0ZXJuIGludCBJT19BUElDX2dldF9QQ0lfaXJxX3Zl Y3RvcihpbnQgYnVzLCBpbnQgZGV2Zm4sIGludCBwaW4pOwpleHRlcm4gdm9pZCBwcmludF9JT19B UElDcyh2b2lkKTsKIyAxNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zbXAuaCIgMgoKCgoKCmV4 dGVybiBpbnQgc21wX251bV9zaWJsaW5nczsKZXh0ZXJuIHVuc2lnbmVkIGludCBudW1fcHJvY2Vz c29yczsKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5y ZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyhjcHVtYXNrX3Zhcl90KSBjcHVfc2libGluZ19tYXA7 CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21v c3RseSIpKSkgX190eXBlb2ZfXyhjcHVtYXNrX3Zhcl90KSBjcHVfY29yZV9tYXA7CmV4dGVybiBf X2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkg X190eXBlb2ZfXyhjcHVtYXNrX3Zhcl90KSBjcHVfZGllX21hcDsKCmV4dGVybiBfX2F0dHJpYnV0 ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2Zf XyhjcHVtYXNrX3Zhcl90KSBjcHVfbGxjX3NoYXJlZF9tYXA7CmV4dGVybiBfX2F0dHJpYnV0ZV9f KChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyh1 MTYpIGNwdV9sbGNfaWQ7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVy Y3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyhpbnQpIGNwdV9udW1iZXI7CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1 Y3QgY3B1bWFzayAqY3B1X2xsY19zaGFyZWRfbWFzayhpbnQgY3B1KQp7CiByZXR1cm4gKCooeyBk byB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X2xsY19zaGFyZWRf bWFwKSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsg KHsgdW5zaWduZWQgbG9uZyBfX3B0cjsgX19hc21fXyAoIiIgOiAiPXIiKF9fcHRyKSA6ICIwIigo dHlwZW9mKCooKCYoY3B1X2xsY19zaGFyZWRfbWFwKSkpKSAqKSgoJihjcHVfbGxjX3NoYXJlZF9t YXApKSkpKTsgKHR5cGVvZigodHlwZW9mKCooKCYoY3B1X2xsY19zaGFyZWRfbWFwKSkpKSAqKSgo JihjcHVfbGxjX3NoYXJlZF9tYXApKSkpKSAoX19wdHIgKyAoKChfX3Blcl9jcHVfb2Zmc2V0Wyhj cHUpXSkpKSk7IH0pOyB9KSk7Cn0KCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0 YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyh1MTYpIHg4Nl9jcHVfdG9f YXBpY2lkOyBleHRlcm4gX190eXBlb2ZfXyh1MTYpICp4ODZfY3B1X3RvX2FwaWNpZF9lYXJseV9w dHI7IGV4dGVybiBfX3R5cGVvZl9fKHUxNikgeDg2X2NwdV90b19hcGljaWRfZWFybHlfbWFwW107 CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21v c3RseSIpKSkgX190eXBlb2ZfXyh1MzIpIHg4Nl9jcHVfdG9fYWNwaWlkOyBleHRlcm4gX190eXBl b2ZfXyh1MzIpICp4ODZfY3B1X3RvX2FjcGlpZF9lYXJseV9wdHI7IGV4dGVybiBfX3R5cGVvZl9f KHUzMikgeDg2X2NwdV90b19hY3BpaWRfZWFybHlfbWFwW107CmV4dGVybiBfX2F0dHJpYnV0ZV9f KChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyh1 MTYpIHg4Nl9iaW9zX2NwdV9hcGljaWQ7IGV4dGVybiBfX3R5cGVvZl9fKHUxNikgKng4Nl9iaW9z X2NwdV9hcGljaWRfZWFybHlfcHRyOyBleHRlcm4gX190eXBlb2ZfXyh1MTYpIHg4Nl9iaW9zX2Nw dV9hcGljaWRfZWFybHlfbWFwW107CgoKCgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CgpzdHJ1Y3Qgc21w X29wcyB7CiB2b2lkICgqc21wX3ByZXBhcmVfYm9vdF9jcHUpKHZvaWQpOwogdm9pZCAoKnNtcF9w cmVwYXJlX2NwdXMpKHVuc2lnbmVkIG1heF9jcHVzKTsKIHZvaWQgKCpzbXBfY3B1c19kb25lKSh1 bnNpZ25lZCBtYXhfY3B1cyk7Cgogdm9pZCAoKnN0b3Bfb3RoZXJfY3B1cykoaW50IHdhaXQpOwog dm9pZCAoKmNyYXNoX3N0b3Bfb3RoZXJfY3B1cykodm9pZCk7CiB2b2lkICgqc21wX3NlbmRfcmVz Y2hlZHVsZSkoaW50IGNwdSk7CgogaW50ICgqY3B1X3VwKSh1bnNpZ25lZCBjcHUsIHN0cnVjdCB0 YXNrX3N0cnVjdCAqdGlkbGUpOwogaW50ICgqY3B1X2Rpc2FibGUpKHZvaWQpOwogdm9pZCAoKmNw dV9kaWUpKHVuc2lnbmVkIGludCBjcHUpOwogdm9pZCAoKnBsYXlfZGVhZCkodm9pZCk7Cgogdm9p ZCAoKnNlbmRfY2FsbF9mdW5jX2lwaSkoY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1hc2spOwogdm9p ZCAoKnNlbmRfY2FsbF9mdW5jX3NpbmdsZV9pcGkpKGludCBjcHUpOwp9OwoKCmV4dGVybiB2b2lk IHNldF9jcHVfc2libGluZ19tYXAoaW50IGNwdSk7CgoKZXh0ZXJuIHN0cnVjdCBzbXBfb3BzIHNt cF9vcHM7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHNtcF9zZW5kX3N0b3Aodm9pZCkKewogc21wX29wcy5zdG9wX290aGVyX2Nw dXMoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgc3RvcF9vdGhlcl9jcHVzKHZvaWQpCnsKIHNtcF9vcHMuc3RvcF9vdGhl cl9jcHVzKDEpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHNtcF9wcmVwYXJlX2Jvb3RfY3B1KHZvaWQpCnsKIHNtcF9vcHMu c21wX3ByZXBhcmVfYm9vdF9jcHUoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzbXBfcHJlcGFyZV9jcHVzKHVuc2lnbmVk IGludCBtYXhfY3B1cykKewogc21wX29wcy5zbXBfcHJlcGFyZV9jcHVzKG1heF9jcHVzKTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBzbXBfY3B1c19kb25lKHVuc2lnbmVkIGludCBtYXhfY3B1cykKewogc21wX29wcy5zbXBf Y3B1c19kb25lKG1heF9jcHVzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fY3B1X3VwKHVuc2lnbmVkIGludCBjcHUsIHN0 cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpCnsKIHJldHVybiBzbXBfb3BzLmNwdV91cChjcHUsIHRp ZGxlKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IF9fY3B1X2Rpc2FibGUodm9pZCkKewogcmV0dXJuIHNtcF9vcHMuY3B1X2Rp c2FibGUoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBfX2NwdV9kaWUodW5zaWduZWQgaW50IGNwdSkKewogc21wX29wcy5j cHVfZGllKGNwdSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcGxheV9kZWFkKHZvaWQpCnsKIHNtcF9vcHMucGxheV9kZWFk KCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgc21wX3NlbmRfcmVzY2hlZHVsZShpbnQgY3B1KQp7CiBzbXBfb3BzLnNtcF9z ZW5kX3Jlc2NoZWR1bGUoY3B1KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcmNoX3NlbmRfY2FsbF9mdW5jdGlvbl9zaW5n bGVfaXBpKGludCBjcHUpCnsKIHNtcF9vcHMuc2VuZF9jYWxsX2Z1bmNfc2luZ2xlX2lwaShjcHUp Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGFyY2hfc2VuZF9jYWxsX2Z1bmN0aW9uX2lwaV9tYXNrKGNvbnN0IHN0cnVjdCBj cHVtYXNrICptYXNrKQp7CiBzbXBfb3BzLnNlbmRfY2FsbF9mdW5jX2lwaShtYXNrKTsKfQoKdm9p ZCBjcHVfZGlzYWJsZV9jb21tb24odm9pZCk7CnZvaWQgbmF0aXZlX3NtcF9wcmVwYXJlX2Jvb3Rf Y3B1KHZvaWQpOwp2b2lkIG5hdGl2ZV9zbXBfcHJlcGFyZV9jcHVzKHVuc2lnbmVkIGludCBtYXhf Y3B1cyk7CnZvaWQgY2FsY3VsYXRlX21heF9sb2dpY2FsX3BhY2thZ2VzKHZvaWQpOwp2b2lkIG5h dGl2ZV9zbXBfY3B1c19kb25lKHVuc2lnbmVkIGludCBtYXhfY3B1cyk7CmludCBjb21tb25fY3B1 X3VwKHVuc2lnbmVkIGludCBjcHVudW0sIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpOwppbnQg bmF0aXZlX2NwdV91cCh1bnNpZ25lZCBpbnQgY3B1bnVtLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRp ZGxlKTsKaW50IG5hdGl2ZV9jcHVfZGlzYWJsZSh2b2lkKTsKaW50IGNvbW1vbl9jcHVfZGllKHVu c2lnbmVkIGludCBjcHUpOwp2b2lkIG5hdGl2ZV9jcHVfZGllKHVuc2lnbmVkIGludCBjcHUpOwp2 b2lkIGhsdF9wbGF5X2RlYWQodm9pZCk7CnZvaWQgbmF0aXZlX3BsYXlfZGVhZCh2b2lkKTsKdm9p ZCBwbGF5X2RlYWRfY29tbW9uKHZvaWQpOwp2b2lkIHdiaW52ZF9vbl9jcHUoaW50IGNwdSk7Cmlu dCB3YmludmRfb25fYWxsX2NwdXModm9pZCk7Cgp2b2lkIG5hdGl2ZV9zbXBfc2VuZF9yZXNjaGVk dWxlKGludCBjcHUpOwp2b2lkIG5hdGl2ZV9zZW5kX2NhbGxfZnVuY19pcGkoY29uc3Qgc3RydWN0 IGNwdW1hc2sgKm1hc2spOwp2b2lkIG5hdGl2ZV9zZW5kX2NhbGxfZnVuY19zaW5nbGVfaXBpKGlu dCBjcHUpOwp2b2lkIHg4Nl9pZGxlX3RocmVhZF9pbml0KHVuc2lnbmVkIGludCBjcHUsIHN0cnVj dCB0YXNrX3N0cnVjdCAqaWRsZSk7Cgp2b2lkIHNtcF9zdG9yZV9ib290X2NwdV9pbmZvKHZvaWQp Owp2b2lkIHNtcF9zdG9yZV9jcHVfaW5mbyhpbnQgaWQpOwoKIF9fYXR0cmlidXRlX18oKF9fZXh0 ZXJuYWxseV92aXNpYmxlX18pKSB2b2lkIHNtcF9yZWJvb3RfaW50ZXJydXB0KHZvaWQpOwpfX2F0 dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSkgdm9pZCBzbXBfcmVzY2hlZHVsZV9p bnRlcnJ1cHQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwpfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFs bHlfdmlzaWJsZV9fKSkgdm9pZCBzbXBfY2FsbF9mdW5jdGlvbl9pbnRlcnJ1cHQoc3RydWN0IHB0 X3JlZ3MgKnJlZ3MpOwpfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSkgdm9p ZCBzbXBfY2FsbF9mdW5jdGlvbl9zaW5nbGVfaW50ZXJydXB0KHN0cnVjdCBwdF9yZWdzICpyKTsK IyAxODUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmgiCmV4dGVybiB1bnNpZ25lZCBkaXNh YmxlZF9jcHVzOwoKCmV4dGVybiBpbnQgaGFyZF9zbXBfcHJvY2Vzc29yX2lkKHZvaWQpOwojIDY4 ICIuL2luY2x1ZGUvbGludXgvc21wLmgiIDIKIyA3NyAiLi9pbmNsdWRlL2xpbnV4L3NtcC5oIgpl eHRlcm4gdm9pZCBzbXBfc2VuZF9zdG9wKHZvaWQpOwoKCgoKZXh0ZXJuIHZvaWQgc21wX3NlbmRf cmVzY2hlZHVsZShpbnQgY3B1KTsKCgoKCgpleHRlcm4gdm9pZCBzbXBfcHJlcGFyZV9jcHVzKHVu c2lnbmVkIGludCBtYXhfY3B1cyk7CgoKCgpleHRlcm4gaW50IF9fY3B1X3VwKHVuc2lnbmVkIGlu dCBjcHVudW0sIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpOwoKCgoKZXh0ZXJuIHZvaWQgc21w X2NwdXNfZG9uZSh1bnNpZ25lZCBpbnQgbWF4X2NwdXMpOwoKCgoKdm9pZCBzbXBfY2FsbF9mdW5j dGlvbihzbXBfY2FsbF9mdW5jX3QgZnVuYywgdm9pZCAqaW5mbywgaW50IHdhaXQpOwp2b2lkIHNt cF9jYWxsX2Z1bmN0aW9uX21hbnkoY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1hc2ssCiAgICAgICBz bXBfY2FsbF9mdW5jX3QgZnVuYywgdm9pZCAqaW5mbywgYm9vbCB3YWl0KTsKCmludCBzbXBfY2Fs bF9mdW5jdGlvbl9hbnkoY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1hc2ssCiAgICAgc21wX2NhbGxf ZnVuY190IGZ1bmMsIHZvaWQgKmluZm8sIGludCB3YWl0KTsKCnZvaWQga2lja19hbGxfY3B1c19z eW5jKHZvaWQpOwp2b2lkIHdha2VfdXBfYWxsX2lkbGVfY3B1cyh2b2lkKTsKCgoKCnZvaWQgX19h dHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9f Y29sZF9fKSkgY2FsbF9mdW5jdGlvbl9pbml0KHZvaWQpOwp2b2lkIGdlbmVyaWNfc21wX2NhbGxf ZnVuY3Rpb25fc2luZ2xlX2ludGVycnVwdCh2b2lkKTsKCgoKCgoKCnZvaWQgc21wX3ByZXBhcmVf Ym9vdF9jcHUodm9pZCk7CgpleHRlcm4gdW5zaWduZWQgaW50IHNldHVwX21heF9jcHVzOwpleHRl cm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRy aWJ1dGVfXygoX19jb2xkX18pKSBzZXR1cF9ucl9jcHVfaWRzKHZvaWQpOwpleHRlcm4gdm9pZCBf X2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygo X19jb2xkX18pKSBzbXBfaW5pdCh2b2lkKTsKCmV4dGVybiBpbnQgX19ib290X2NwdV9pZDsKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBnZXRfYm9vdF9jcHVfaWQodm9pZCkKewogcmV0dXJuIF9fYm9vdF9jcHVfaWQ7Cn0KIyAyMjgg Ii4vaW5jbHVkZS9saW51eC9zbXAuaCIKZXh0ZXJuIHZvaWQgYXJjaF9kaXNhYmxlX3NtcF9zdXBw b3J0KHZvaWQpOwoKZXh0ZXJuIHZvaWQgYXJjaF9lbmFibGVfbm9uYm9vdF9jcHVzX2JlZ2luKHZv aWQpOwpleHRlcm4gdm9pZCBhcmNoX2VuYWJsZV9ub25ib290X2NwdXNfZW5kKHZvaWQpOwoKdm9p ZCBzbXBfc2V0dXBfcHJvY2Vzc29yX2lkKHZvaWQpOwoKaW50IHNtcF9jYWxsX29uX2NwdSh1bnNp Z25lZCBpbnQgY3B1LCBpbnQgKCpmdW5jKSh2b2lkICopLCB2b2lkICpwYXIsCiAgICAgIGJvb2wg cGh5cyk7CgoKaW50IHNtcGNmZF9wcmVwYXJlX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKaW50IHNt cGNmZF9kZWFkX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKaW50IHNtcGNmZF9keWluZ19jcHUodW5z aWduZWQgaW50IGNwdSk7CiMgOCAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS5oIiAyCiMgNjUgIi4v aW5jbHVkZS9saW51eC9wZXJjcHUuaCIKZXh0ZXJuIHZvaWQgKnBjcHVfYmFzZV9hZGRyOwpleHRl cm4gY29uc3QgdW5zaWduZWQgbG9uZyAqcGNwdV91bml0X29mZnNldHM7CgpzdHJ1Y3QgcGNwdV9n cm91cF9pbmZvIHsKIGludCBucl91bml0czsKIHVuc2lnbmVkIGxvbmcgYmFzZV9vZmZzZXQ7CiB1 bnNpZ25lZCBpbnQgKmNwdV9tYXA7Cgp9OwoKc3RydWN0IHBjcHVfYWxsb2NfaW5mbyB7CiBzaXpl X3Qgc3RhdGljX3NpemU7CiBzaXplX3QgcmVzZXJ2ZWRfc2l6ZTsKIHNpemVfdCBkeW5fc2l6ZTsK IHNpemVfdCB1bml0X3NpemU7CiBzaXplX3QgYXRvbV9zaXplOwogc2l6ZV90IGFsbG9jX3NpemU7 CiBzaXplX3QgX19haV9zaXplOwogaW50IG5yX2dyb3VwczsKIHN0cnVjdCBwY3B1X2dyb3VwX2lu Zm8gZ3JvdXBzW107Cn07CgplbnVtIHBjcHVfZmMgewogUENQVV9GQ19BVVRPLAogUENQVV9GQ19F TUJFRCwKIFBDUFVfRkNfUEFHRSwKCiBQQ1BVX0ZDX05SLAp9OwpleHRlcm4gY29uc3QgY2hhciAq IGNvbnN0IHBjcHVfZmNfbmFtZXNbUENQVV9GQ19OUl07CgpleHRlcm4gZW51bSBwY3B1X2ZjIHBj cHVfY2hvc2VuX2ZjOwoKdHlwZWRlZiB2b2lkICogKCpwY3B1X2ZjX2FsbG9jX2ZuX3QpKHVuc2ln bmVkIGludCBjcHUsIHNpemVfdCBzaXplLAogICAgICAgICBzaXplX3QgYWxpZ24pOwp0eXBlZGVm IHZvaWQgKCpwY3B1X2ZjX2ZyZWVfZm5fdCkodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CnR5cGVk ZWYgdm9pZCAoKnBjcHVfZmNfcG9wdWxhdGVfcHRlX2ZuX3QpKHVuc2lnbmVkIGxvbmcgYWRkcik7 CnR5cGVkZWYgaW50IChwY3B1X2ZjX2NwdV9kaXN0YW5jZV9mbl90KSh1bnNpZ25lZCBpbnQgZnJv bSwgdW5zaWduZWQgaW50IHRvKTsKCmV4dGVybiBzdHJ1Y3QgcGNwdV9hbGxvY19pbmZvICogX19h dHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9f Y29sZF9fKSkgcGNwdV9hbGxvY19hbGxvY19pbmZvKGludCBucl9ncm91cHMsCiAgICAgICAgICAg IGludCBucl91bml0cyk7CmV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIu aW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHBjcHVfZnJlZV9hbGxvY19p bmZvKHN0cnVjdCBwY3B1X2FsbG9jX2luZm8gKmFpKTsKCmV4dGVybiB2b2lkIF9fYXR0cmlidXRl X18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykp IHBjcHVfc2V0dXBfZmlyc3RfY2h1bmsoY29uc3Qgc3RydWN0IHBjcHVfYWxsb2NfaW5mbyAqYWks CiAgICAgIHZvaWQgKmJhc2VfYWRkcik7CgoKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3Nl Y3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBwY3B1X2Vt YmVkX2ZpcnN0X2NodW5rKHNpemVfdCByZXNlcnZlZF9zaXplLCBzaXplX3QgZHluX3NpemUsCiAg ICBzaXplX3QgYXRvbV9zaXplLAogICAgcGNwdV9mY19jcHVfZGlzdGFuY2VfZm5fdCBjcHVfZGlz dGFuY2VfZm4sCiAgICBwY3B1X2ZjX2FsbG9jX2ZuX3QgYWxsb2NfZm4sCiAgICBwY3B1X2ZjX2Zy ZWVfZm5fdCBmcmVlX2ZuKTsKCgoKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25f XygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBwY3B1X3BhZ2VfZmly c3RfY2h1bmsoc2l6ZV90IHJlc2VydmVkX3NpemUsCiAgICBwY3B1X2ZjX2FsbG9jX2ZuX3QgYWxs b2NfZm4sCiAgICBwY3B1X2ZjX2ZyZWVfZm5fdCBmcmVlX2ZuLAogICAgcGNwdV9mY19wb3B1bGF0 ZV9wdGVfZm5fdCBwb3B1bGF0ZV9wdGVfZm4pOwoKCmV4dGVybiB2b2lkICpfX2FsbG9jX3Jlc2Vy dmVkX3BlcmNwdShzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWduKTsKZXh0ZXJuIGJvb2wgX19pc19r ZXJuZWxfcGVyY3B1X2FkZHJlc3ModW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nICpj YW5fYWRkcik7CmV4dGVybiBib29sIGlzX2tlcm5lbF9wZXJjcHVfYWRkcmVzcyh1bnNpZ25lZCBs b25nIGFkZHIpOwoKCgoKCmV4dGVybiB2b2lkICpfX2FsbG9jX3BlcmNwdV9nZnAoc2l6ZV90IHNp emUsIHNpemVfdCBhbGlnbiwgZ2ZwX3QgZ2ZwKTsKZXh0ZXJuIHZvaWQgKl9fYWxsb2NfcGVyY3B1 KHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ24pOwpleHRlcm4gdm9pZCBmcmVlX3BlcmNwdSh2b2lk ICpfX3BkYXRhKTsKZXh0ZXJuIHBoeXNfYWRkcl90IHBlcl9jcHVfcHRyX3RvX3BoeXModm9pZCAq YWRkcik7CiMgMTQ2ICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LmgiCmV4dGVybiB1bnNpZ25lZCBs b25nIHBjcHVfbnJfcGFnZXModm9pZCk7CiMgMTAgIi4vaW5jbHVkZS9saW51eC9hcmNoX3RvcG9s b2d5LmgiIDIKCnZvaWQgdG9wb2xvZ3lfbm9ybWFsaXplX2NwdV9zY2FsZSh2b2lkKTsKaW50IHRv cG9sb2d5X3VwZGF0ZV9jcHVfdG9wb2xvZ3kodm9pZCk7CgpzdHJ1Y3QgZGV2aWNlX25vZGU7CmJv b2wgdG9wb2xvZ3lfcGFyc2VfY3B1X2NhcGFjaXR5KHN0cnVjdCBkZXZpY2Vfbm9kZSAqY3B1X25v ZGUsIGludCBjcHUpOwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJj cHUiICIiKSkpIF9fdHlwZW9mX18odW5zaWduZWQgbG9uZykgY3B1X3NjYWxlOwoKc3RydWN0IHNj aGVkX2RvbWFpbjsKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkKdW5zaWduZWQgbG9uZyB0b3BvbG9neV9nZXRfY3B1X3NjYWxlKGludCBjcHUp CnsKIHJldHVybiAoKih7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigo JihjcHVfc2NhbGUpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hp bGUgKDApOyAoeyB1bnNpZ25lZCBsb25nIF9fcHRyOyBfX2FzbV9fICgiIiA6ICI9ciIoX19wdHIp IDogIjAiKCh0eXBlb2YoKigoJihjcHVfc2NhbGUpKSkpICopKCgmKGNwdV9zY2FsZSkpKSkpOyAo dHlwZW9mKCh0eXBlb2YoKigoJihjcHVfc2NhbGUpKSkpICopKCgmKGNwdV9zY2FsZSkpKSkpIChf X3B0ciArICgoKF9fcGVyX2NwdV9vZmZzZXRbKGNwdSldKSkpKTsgfSk7IH0pKTsKfQoKdm9pZCB0 b3BvbG9neV9zZXRfY3B1X3NjYWxlKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGxvbmcgY2Fw YWNpdHkpOwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIi KSkpIF9fdHlwZW9mX18odW5zaWduZWQgbG9uZykgZnJlcV9zY2FsZTsKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpCnVuc2lnbmVkIGxvbmcg dG9wb2xvZ3lfZ2V0X2ZyZXFfc2NhbGUoaW50IGNwdSkKewogcmV0dXJuICgqKHsgZG8geyBjb25z dCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKGZyZXFfc2NhbGUpKSArIDApKSgodm9p ZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25lZCBsb25n IF9fcHRyOyBfX2FzbV9fICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigoJihmcmVx X3NjYWxlKSkpKSAqKSgoJihmcmVxX3NjYWxlKSkpKSk7ICh0eXBlb2YoKHR5cGVvZigqKCgmKGZy ZXFfc2NhbGUpKSkpICopKCgmKGZyZXFfc2NhbGUpKSkpKSAoX19wdHIgKyAoKChfX3Blcl9jcHVf b2Zmc2V0WyhjcHUpXSkpKSk7IH0pOyB9KSk7Cn0KCnN0cnVjdCBjcHVfdG9wb2xvZ3kgewogaW50 IHRocmVhZF9pZDsKIGludCBjb3JlX2lkOwogaW50IHBhY2thZ2VfaWQ7CiBpbnQgbGxjX2lkOwog Y3B1bWFza190IHRocmVhZF9zaWJsaW5nOwogY3B1bWFza190IGNvcmVfc2libGluZzsKIGNwdW1h c2tfdCBsbGNfc2libGluZzsKfTsKIyAzMSAiLi9pbmNsdWRlL2xpbnV4L3RvcG9sb2d5LmgiIDIK IyA0NiAiLi9pbmNsdWRlL2xpbnV4L3RvcG9sb2d5LmgiCmludCBhcmNoX3VwZGF0ZV9jcHVfdG9w b2xvZ3kodm9pZCk7CiMgNzUgIi4vaW5jbHVkZS9saW51eC90b3BvbG9neS5oIgpleHRlcm4gaW50 IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIG5vZGVf cmVjbGFpbV9kaXN0YW5jZTsKIyAxNzcgIi4vaW5jbHVkZS9saW51eC90b3BvbG9neS5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg bnVtYV9tZW1faWQodm9pZCkKewogcmV0dXJuIG51bWFfbm9kZV9pZCgpOwp9CgoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBub2Rl X3RvX21lbV9ub2RlKGludCBub2RlKQp7CiByZXR1cm4gbm9kZTsKfQojIDIxOSAiLi9pbmNsdWRl L2xpbnV4L3RvcG9sb2d5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfc210X21hc2soaW50 IGNwdSkKewogcmV0dXJuICgoKih7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5 cGVvZigoJihjcHVfc2libGluZ19tYXApKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92 ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25lZCBsb25nIF9fcHRyOyBfX2FzbV9fICgiIiA6 ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigoJihjcHVfc2libGluZ19tYXApKSkpICopKCgm KGNwdV9zaWJsaW5nX21hcCkpKSkpOyAodHlwZW9mKCh0eXBlb2YoKigoJihjcHVfc2libGluZ19t YXApKSkpICopKCgmKGNwdV9zaWJsaW5nX21hcCkpKSkpIChfX3B0ciArICgoKF9fcGVyX2NwdV9v ZmZzZXRbKGNwdSldKSkpKTsgfSk7IH0pKSk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1 X2NwdV9tYXNrKGludCBjcHUpCnsKIHJldHVybiAoKHZvaWQpKCh2b2lkKShjcHUpLDApLCAoKGNv bnN0IHN0cnVjdCBjcHVtYXNrICopJl9fY3B1X29ubGluZV9tYXNrKSk7Cn0KIyAxMCAiLi9pbmNs dWRlL2xpbnV4L2dmcC5oIiAyCgpzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7CiMgMzA4ICIuL2luY2x1 ZGUvbGludXgvZ2ZwLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBnZnBmbGFnc190b19taWdyYXRldHlwZShjb25zdCBnZnBfdCBn ZnBfZmxhZ3MpCnsKICgodm9pZCkoc2l6ZW9mKCggbG9uZykoKGdmcF9mbGFncyAmICgoKCBnZnBf dCkweDEwdSl8KCggZ2ZwX3QpMHgwOHUpKSkgPT0gKCgoIGdmcF90KTB4MTB1KXwoKCBnZnBfdCkw eDA4dSkpKSkpKTsKIGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMzExKHZv aWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDogIiAiKDFV TCA8PCBHRlBfTU9WQUJMRV9TSElGVCkgIT0gX19fR0ZQX01PVkFCTEUiKSkpOyBpZiAoISghKCgx VUwgPDwgMykgIT0gMHgwOHUpKSkgX19jb21waWxldGltZV9hc3NlcnRfMzExKCk7IH0gd2hpbGUg KDApOwogZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8zMTIodm9pZCkgX19h dHRyaWJ1dGVfXygoX19lcnJvcl9fKCJCVUlMRF9CVUdfT04gZmFpbGVkOiAiICIoX19fR0ZQX01P VkFCTEUgPj4gR0ZQX01PVkFCTEVfU0hJRlQpICE9IE1JR1JBVEVfTU9WQUJMRSIpKSk7IGlmICgh KCEoKDB4MDh1ID4+IDMpICE9IE1JR1JBVEVfTU9WQUJMRSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2Vy dF8zMTIoKTsgfSB3aGlsZSAoMCk7CgogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEocGFnZV9ncm91 cF9ieV9tb2JpbGl0eV9kaXNhYmxlZCksIDApKQogIHJldHVybiBNSUdSQVRFX1VOTU9WQUJMRTsK CgogcmV0dXJuIChnZnBfZmxhZ3MgJiAoKCggZ2ZwX3QpMHgxMHUpfCgoIGdmcF90KTB4MDh1KSkp ID4+IDM7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBnZnBmbGFnc19hbGxvd19ibG9ja2luZyhjb25zdCBnZnBfdCBnZnBf ZmxhZ3MpCnsKIHJldHVybiAhIShnZnBfZmxhZ3MgJiAoKCBnZnBfdCkweDQwMHUpKTsKfQojIDM0 NSAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGdmcGZsYWdzX25vcm1hbF9jb250ZXh0KGNv bnN0IGdmcF90IGdmcF9mbGFncykKewogcmV0dXJuIChnZnBfZmxhZ3MgJiAoKCggZ2ZwX3QpMHg0 MDB1KSB8ICgoIGdmcF90KTB4MjAwMDB1KSkpID09CiAgKCggZ2ZwX3QpMHg0MDB1KTsKfQojIDQ0 MSAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBlbnVtIHpvbmVfdHlwZSBnZnBfem9uZShnZnBfdCBm bGFncykKewogZW51bSB6b25lX3R5cGUgejsKIGludCBiaXQgPSAoIGludCkgKGZsYWdzICYgKCgo IGdmcF90KTB4MDF1KXwoKCBnZnBfdCkweDAydSl8KCggZ2ZwX3QpMHgwNHUpfCgoIGdmcF90KTB4 MDh1KSkpOwoKIHogPSAoKCAoWk9ORV9OT1JNQUwgPDwgMCAqIDIpIHwgKFpPTkVfRE1BIDw8IDB4 MDF1ICogMikgfCAoWk9ORV9OT1JNQUwgPDwgMHgwMnUgKiAyKSB8IChaT05FX0RNQTMyIDw8IDB4 MDR1ICogMikgfCAoWk9ORV9OT1JNQUwgPDwgMHgwOHUgKiAyKSB8IChaT05FX0RNQSA8PCAoMHgw OHUgfCAweDAxdSkgKiAyKSB8IChaT05FX01PVkFCTEUgPDwgKDB4MDh1IHwgMHgwMnUpICogMikg fCAoWk9ORV9ETUEzMiA8PCAoMHgwOHUgfCAweDA0dSkgKiAyKSkgPj4gKGJpdCAqIDIpKSAmCiAg ICAgICgoMSA8PCAyKSAtIDEpOwogKCh2b2lkKShzaXplb2YoKCBsb25nKSgoKCAxIDw8ICgweDAx dSB8IDB4MDJ1KSB8IDEgPDwgKDB4MDF1IHwgMHgwNHUpIHwgMSA8PCAoMHgwNHUgfCAweDAydSkg fCAxIDw8ICgweDAxdSB8IDB4MDR1IHwgMHgwMnUpIHwgMSA8PCAoMHgwOHUgfCAweDAydSB8IDB4 MDF1KSB8IDEgPDwgKDB4MDh1IHwgMHgwNHUgfCAweDAxdSkgfCAxIDw8ICgweDA4dSB8IDB4MDR1 IHwgMHgwMnUpIHwgMSA8PCAoMHgwOHUgfCAweDA0dSB8IDB4MDF1IHwgMHgwMnUpICkgPj4gYml0 KSAmIDEpKSkpOwogcmV0dXJuIHo7Cn0KIyA0NTkgIi4vaW5jbHVkZS9saW51eC9nZnAuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50 IGdmcF96b25lbGlzdChnZnBfdCBmbGFncykKewoKCgoKIHJldHVybiBaT05FTElTVF9GQUxMQkFD SzsKfQojIDQ3NyAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qgem9uZWxpc3QgKm5vZGVf em9uZWxpc3QoaW50IG5pZCwgZ2ZwX3QgZmxhZ3MpCnsKIHJldHVybiAoJmNvbnRpZ19wYWdlX2Rh dGEpLT5ub2RlX3pvbmVsaXN0cyArIGdmcF96b25lbGlzdChmbGFncyk7Cn0KCgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hf ZnJlZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgb3JkZXIpIHsgfQoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXJjaF9h bGxvY19wYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgb3JkZXIpIHsgfQoKCnN0cnVjdCBwYWdl ICoKX19hbGxvY19wYWdlc19ub2RlbWFzayhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9y ZGVyLCBpbnQgcHJlZmVycmVkX25pZCwKICAgICAgIG5vZGVtYXNrX3QgKm5vZGVtYXNrKTsKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0 cnVjdCBwYWdlICoKX19hbGxvY19wYWdlcyhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9y ZGVyLCBpbnQgcHJlZmVycmVkX25pZCkKewogcmV0dXJuIF9fYWxsb2NfcGFnZXNfbm9kZW1hc2so Z2ZwX21hc2ssIG9yZGVyLCBwcmVmZXJyZWRfbmlkLCAoKHZvaWQgKikwKSk7Cn0KCgoKCgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1 Y3QgcGFnZSAqCl9fYWxsb2NfcGFnZXNfbm9kZShpbnQgbmlkLCBnZnBfdCBnZnBfbWFzaywgdW5z aWduZWQgaW50IG9yZGVyKQp7CiAoKHZvaWQpKHNpemVvZigoIGxvbmcpKG5pZCA8IDAgfHwgbmlk ID49ICgxIDw8IDApKSkpKTsKICgodm9pZCkoc2l6ZW9mKCggbG9uZykoKGdmcF9tYXNrICYgKCgg Z2ZwX3QpMHgyMDAwMDB1KSkgJiYgIW5vZGVfc3RhdGUoKG5pZCksIE5fT05MSU5FKSkpKSk7Cgog cmV0dXJuIF9fYWxsb2NfcGFnZXMoZ2ZwX21hc2ssIG9yZGVyLCBuaWQpOwp9CgoKCgoKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVj dCBwYWdlICphbGxvY19wYWdlc19ub2RlKGludCBuaWQsIGdmcF90IGdmcF9tYXNrLAogICAgICB1 bnNpZ25lZCBpbnQgb3JkZXIpCnsKIGlmIChuaWQgPT0gKC0xKSkKICBuaWQgPSBudW1hX21lbV9p ZCgpOwoKIHJldHVybiBfX2FsbG9jX3BhZ2VzX25vZGUobmlkLCBnZnBfbWFzaywgb3JkZXIpOwp9 CiMgNTUzICIuL2luY2x1ZGUvbGludXgvZ2ZwLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIF9fZ2V0 X2ZyZWVfcGFnZXMoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcik7CmV4dGVybiB1 bnNpZ25lZCBsb25nIGdldF96ZXJvZWRfcGFnZShnZnBfdCBnZnBfbWFzayk7Cgp2b2lkICphbGxv Y19wYWdlc19leGFjdChzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwX21hc2spOwp2b2lkIGZyZWVfcGFn ZXNfZXhhY3Qodm9pZCAqdmlydCwgc2l6ZV90IHNpemUpOwp2b2lkICogX19hdHRyaWJ1dGVfXygo X19zZWN0aW9uX18oIi5tZW1pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGFsbG9jX3BhZ2VzX2V4YWN0 X25pZChpbnQgbmlkLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwX21hc2spOwoKCgoKCgoKZXh0ZXJu IHZvaWQgX19mcmVlX3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIp OwpleHRlcm4gdm9pZCBmcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgaW50 IG9yZGVyKTsKZXh0ZXJuIHZvaWQgZnJlZV91bnJlZl9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKTsK ZXh0ZXJuIHZvaWQgZnJlZV91bnJlZl9wYWdlX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCk7 CgpzdHJ1Y3QgcGFnZV9mcmFnX2NhY2hlOwpleHRlcm4gdm9pZCBfX3BhZ2VfZnJhZ19jYWNoZV9k cmFpbihzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IGNvdW50KTsKZXh0ZXJuIHZvaWQg KnBhZ2VfZnJhZ19hbGxvYyhzdHJ1Y3QgcGFnZV9mcmFnX2NhY2hlICpuYywKICAgICAgICB1bnNp Z25lZCBpbnQgZnJhZ3N6LCBnZnBfdCBnZnBfbWFzayk7CmV4dGVybiB2b2lkIHBhZ2VfZnJhZ19m cmVlKHZvaWQgKmFkZHIpOwoKCgoKdm9pZCBwYWdlX2FsbG9jX2luaXQodm9pZCk7CnZvaWQgZHJh aW5fem9uZV9wYWdlcyhzdHJ1Y3Qgem9uZSAqem9uZSwgc3RydWN0IHBlcl9jcHVfcGFnZXMgKnBj cCk7CnZvaWQgZHJhaW5fYWxsX3BhZ2VzKHN0cnVjdCB6b25lICp6b25lKTsKdm9pZCBkcmFpbl9s b2NhbF9wYWdlcyhzdHJ1Y3Qgem9uZSAqem9uZSk7Cgp2b2lkIHBhZ2VfYWxsb2NfaW5pdF9sYXRl KHZvaWQpOwojIDU5NCAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIgpleHRlcm4gZ2ZwX3QgZ2ZwX2Fs bG93ZWRfbWFzazsKCgpib29sIGdmcF9wZm1lbWFsbG9jX2FsbG93ZWQoZ2ZwX3QgZ2ZwX21hc2sp OwoKZXh0ZXJuIHZvaWQgcG1fcmVzdHJpY3RfZ2ZwX21hc2sodm9pZCk7CmV4dGVybiB2b2lkIHBt X3Jlc3RvcmVfZ2ZwX21hc2sodm9pZCk7CgoKZXh0ZXJuIGJvb2wgcG1fc3VzcGVuZGVkX3N0b3Jh Z2Uodm9pZCk7CiMgNjEzICIuL2luY2x1ZGUvbGludXgvZ2ZwLmgiCmV4dGVybiBpbnQgYWxsb2Nf Y29udGlnX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAogICAg ICAgICB1bnNpZ25lZCBtaWdyYXRldHlwZSwgZ2ZwX3QgZ2ZwX21hc2spOwpleHRlcm4gc3RydWN0 IHBhZ2UgKmFsbG9jX2NvbnRpZ19wYWdlcyh1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBnZnBfdCBn ZnBfbWFzaywKICAgICAgICAgICBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzayk7Cgp2b2lk IGZyZWVfY29udGlnX3JhbmdlKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBpbnQgbnJfcGFn ZXMpOwojIDE2ICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4 L292ZXJmbG93LmgiIDEKIyAyNTMgIi4vaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgc2l6ZV90IGFycmF5X3NpemUoc2l6ZV90 IGEsIHNpemVfdCBiKQp7CiBzaXplX3QgYnl0ZXM7CgogaWYgKCh7IHR5cGVvZihhKSBfX2EgPSAo YSk7IHR5cGVvZihiKSBfX2IgPSAoYik7IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAo dm9pZCkgKCZfX2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fbXVs X292ZXJmbG93KF9fYSwgX19iLCBfX2QpOyB9KSkKICByZXR1cm4gKH4oc2l6ZV90KTApOwoKIHJl dHVybiBieXRlczsKfQojIDI3NSAiLi9pbmNsdWRlL2xpbnV4L292ZXJmbG93LmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzaXplX3QgYXJyYXkzX3NpemUoc2l6ZV90 IGEsIHNpemVfdCBiLCBzaXplX3QgYykKewogc2l6ZV90IGJ5dGVzOwoKIGlmICgoeyB0eXBlb2Yo YSkgX19hID0gKGEpOyB0eXBlb2YoYikgX19iID0gKGIpOyB0eXBlb2YoJmJ5dGVzKSBfX2QgPSAo JmJ5dGVzKTsgKHZvaWQpICgmX19hID09ICZfX2IpOyAodm9pZCkgKCZfX2EgPT0gX19kKTsgX19i dWlsdGluX211bF9vdmVyZmxvdyhfX2EsIF9fYiwgX19kKTsgfSkpCiAgcmV0dXJuICh+KHNpemVf dCkwKTsKIGlmICgoeyB0eXBlb2YoYnl0ZXMpIF9fYSA9IChieXRlcyk7IHR5cGVvZihjKSBfX2Ig PSAoYyk7IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAodm9pZCkgKCZfX2EgPT0gJl9f Yik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fbXVsX292ZXJmbG93KF9fYSwgX19i LCBfX2QpOyB9KSkKICByZXR1cm4gKH4oc2l6ZV90KTApOwoKIHJldHVybiBieXRlczsKfQoKCgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzaXplX3QgX19hYl9jX3Np emUoc2l6ZV90IGEsIHNpemVfdCBiLCBzaXplX3QgYykKewogc2l6ZV90IGJ5dGVzOwoKIGlmICgo eyB0eXBlb2YoYSkgX19hID0gKGEpOyB0eXBlb2YoYikgX19iID0gKGIpOyB0eXBlb2YoJmJ5dGVz KSBfX2QgPSAoJmJ5dGVzKTsgKHZvaWQpICgmX19hID09ICZfX2IpOyAodm9pZCkgKCZfX2EgPT0g X19kKTsgX19idWlsdGluX211bF9vdmVyZmxvdyhfX2EsIF9fYiwgX19kKTsgfSkpCiAgcmV0dXJu ICh+KHNpemVfdCkwKTsKIGlmICgoeyB0eXBlb2YoYnl0ZXMpIF9fYSA9IChieXRlcyk7IHR5cGVv ZihjKSBfX2IgPSAoYyk7IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAodm9pZCkgKCZf X2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fYWRkX292ZXJmbG93 KF9fYSwgX19iLCBfX2QpOyB9KSkKICByZXR1cm4gKH4oc2l6ZV90KTApOwoKIHJldHVybiBieXRl czsKfQojIDE3ICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIiAyCgoKIyAxICIuL2luY2x1ZGUvbGlu dXgvcGVyY3B1LXJlZmNvdW50LmgiIDEKIyA1OSAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZj b3VudC5oIgpzdHJ1Y3QgcGVyY3B1X3JlZjsKdHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNf dCkoc3RydWN0IHBlcmNwdV9yZWYgKik7CgoKZW51bSB7CiBfX1BFUkNQVV9SRUZfQVRPTUlDID0g MUxVIDw8IDAsCiBfX1BFUkNQVV9SRUZfREVBRCA9IDFMVSA8PCAxLAogX19QRVJDUFVfUkVGX0FU T01JQ19ERUFEID0gX19QRVJDUFVfUkVGX0FUT01JQyB8IF9fUEVSQ1BVX1JFRl9ERUFELAoKIF9f UEVSQ1BVX1JFRl9GTEFHX0JJVFMgPSAyLAp9OwoKCmVudW0gewoKCgoKCgoKIFBFUkNQVV9SRUZf SU5JVF9BVE9NSUMgPSAxIDw8IDAsCgoKCgoKCiBQRVJDUFVfUkVGX0lOSVRfREVBRCA9IDEgPDwg MSwKCgoKCiBQRVJDUFVfUkVGX0FMTE9XX1JFSU5JVCA9IDEgPDwgMiwKfTsKCnN0cnVjdCBwZXJj cHVfcmVmIHsKIGF0b21pY19sb25nX3QgY291bnQ7CgoKCgogdW5zaWduZWQgbG9uZyBwZXJjcHVf Y291bnRfcHRyOwogcGVyY3B1X3JlZl9mdW5jX3QgKnJlbGVhc2U7CiBwZXJjcHVfcmVmX2Z1bmNf dCAqY29uZmlybV9zd2l0Y2g7CiBib29sIGZvcmNlX2F0b21pYzoxOwogYm9vbCBhbGxvd19yZWlu aXQ6MTsKIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKfTsKCmludCBfX2F0dHJpYnV0ZV9fKChf X3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgcGVyY3B1X3JlZl9pbml0KHN0cnVjdCBwZXJjcHVfcmVm ICpyZWYsCiAgICAgcGVyY3B1X3JlZl9mdW5jX3QgKnJlbGVhc2UsIHVuc2lnbmVkIGludCBmbGFn cywKICAgICBnZnBfdCBnZnApOwp2b2lkIHBlcmNwdV9yZWZfZXhpdChzdHJ1Y3QgcGVyY3B1X3Jl ZiAqcmVmKTsKdm9pZCBwZXJjcHVfcmVmX3N3aXRjaF90b19hdG9taWMoc3RydWN0IHBlcmNwdV9y ZWYgKnJlZiwKICAgICBwZXJjcHVfcmVmX2Z1bmNfdCAqY29uZmlybV9zd2l0Y2gpOwp2b2lkIHBl cmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpOwp2 b2lkIHBlcmNwdV9yZWZfc3dpdGNoX3RvX3BlcmNwdShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKTsK dm9pZCBwZXJjcHVfcmVmX2tpbGxfYW5kX2NvbmZpcm0oc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwK ICAgICBwZXJjcHVfcmVmX2Z1bmNfdCAqY29uZmlybV9raWxsKTsKdm9pZCBwZXJjcHVfcmVmX3Jl c3VycmVjdChzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKTsKdm9pZCBwZXJjcHVfcmVmX3JlaW5pdChz dHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKTsKIyAxMzQgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcmVm Y291bnQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBwZXJjcHVfcmVmX2tpbGwoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikKewog cGVyY3B1X3JlZl9raWxsX2FuZF9jb25maXJtKHJlZiwgKCh2b2lkICopMCkpOwp9CgoKCgoKCgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIF9fcmVmX2lzX3BlcmNwdShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLAogICAgICAgdW5zaWdu ZWQgbG9uZyAqKnBlcmNwdV9jb3VudHApCnsKIHVuc2lnbmVkIGxvbmcgcGVyY3B1X3B0cjsKIyAx NjEgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCIKIHBlcmNwdV9wdHIgPSAoeyB1 bmlvbiB7IHR5cGVvZihyZWYtPnBlcmNwdV9jb3VudF9wdHIpIF9fdmFsOyBjaGFyIF9fY1sxXTsg fSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYocmVmLT5wZXJjcHVfY291bnRfcHRyKSwg X191Ll9fYywgc2l6ZW9mKHJlZi0+cGVyY3B1X2NvdW50X3B0cikpOyBlbHNlIF9fcmVhZF9vbmNl X3NpemVfbm9jaGVjaygmKHJlZi0+cGVyY3B1X2NvdW50X3B0ciksIF9fdS5fX2MsIHNpemVvZihy ZWYtPnBlcmNwdV9jb3VudF9wdHIpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsK CgoKCgoKCiBpZiAoX19idWlsdGluX2V4cGVjdCghIShwZXJjcHVfcHRyICYgX19QRVJDUFVfUkVG X0FUT01JQ19ERUFEKSwgMCkpCiAgcmV0dXJuIGZhbHNlOwoKICpwZXJjcHVfY291bnRwID0gKHVu c2lnbmVkIGxvbmcgKilwZXJjcHVfcHRyOwogcmV0dXJuIHRydWU7Cn0KIyAxODUgIi4vaW5jbHVk ZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZXJjcHVfcmVmX2dldF9tYW55KHN0cnVj dCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpCnsKIHVuc2lnbmVkIGxvbmcgKnBl cmNwdV9jb3VudDsKCiByY3VfcmVhZF9sb2NrKCk7CgogaWYgKF9fcmVmX2lzX3BlcmNwdShyZWYs ICZwZXJjcHVfY291bnQpKQogIGRvIHsgZG8geyBjb25zdCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAo dHlwZW9mKCgmKCpwZXJjcHVfY291bnQpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92 ZXJpZnk7IH0gd2hpbGUgKDApOyBzd2l0Y2goc2l6ZW9mKCpwZXJjcHVfY291bnQpKSB7IGNhc2Ug MTogZG8geyB0eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9jb3VudCkpIHBhb19UX187IGNvbnN0IGlu dCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcChucikgJiYgKChucikgPT0gMSB8fCAo bnIpID09IC0xKSkgPyAoaW50KShucikgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsg cGFvX3RtcF9fID0gKG5yKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqcGVy Y3B1X2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgi aW5jYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNl IGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGIg JTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJxaSIg KChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2 b2xhdGlsZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3cgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRp bGUgKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkgOiAicmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9 PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpw ZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJk ZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2Ug YXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSA4OiBpZiAo cGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZv bGF0aWxlICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGRl ZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgMjog ZG8geyB0eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBw YW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcChucikgJiYgKChucikgPT0gMSB8fCAobnIp ID09IC0xKSkgPyAoaW50KShucikgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFv X3RtcF9fID0gKG5yKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqcGVyY3B1 X2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5j YiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlm IChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGIgJTEs ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJxaSIgKChw YW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xh dGlsZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp KTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3cgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUg KCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkg OiAicmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAx KSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJj cHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNs ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNt IHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFv X0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0 aWxlICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkp OyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGRlZmF1 bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgNDogZG8g eyB0eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9f SURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcChucikgJiYgKChucikgPT0gMSB8fCAobnIpID09 IC0xKSkgPyAoaW50KShucikgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3Rt cF9fID0gKG5yKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqcGVyY3B1X2Nv dW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jYiAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChw YW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGIgJTEsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJxaSIgKChwYW9f VF9fKShucikpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGls ZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsg ZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3cgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJh ZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAi cmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBh c20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVf Y291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZv bGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpIDogInJpIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFvX0lE X18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxl ICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBl bHNlIGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGRlZmF1bHQ6 IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgODogZG8geyB0 eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURf XyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcChucikgJiYgKChucikgPT0gMSB8fCAobnIpID09IC0x KSkgPyAoaW50KShucikgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9f ID0gKG5yKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqcGVyY3B1X2NvdW50 KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jYiAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9f SURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGIgJTEsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJxaSIgKChwYW9fVF9f KShucikpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAo ImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3cgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGR3 ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmki ICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20g dm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0 aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpIDogInJpIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFvX0lEX18g PT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq cGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgi ZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNl IGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpw ZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGRlZmF1bHQ6IF9f YmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3Np emVfY2FsbF9wYXJhbWV0ZXIoKTticmVhazsgfSB9IHdoaWxlICgwKTsKIGVsc2UKICBhdG9taWNf bG9uZ19hZGQobnIsICZyZWYtPmNvdW50KTsKCiByY3VfcmVhZF91bmxvY2soKTsKfQojIDIwNyAi Li9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBlcmNwdV9yZWZfZ2V0KHN0 cnVjdCBwZXJjcHVfcmVmICpyZWYpCnsKIHBlcmNwdV9yZWZfZ2V0X21hbnkocmVmLCAxKTsKfQoj IDIyMiAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHBlcmNwdV9yZWZf dHJ5Z2V0X21hbnkoc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwKICAgICAgIHVuc2lnbmVkIGxvbmcg bnIpCnsKIHVuc2lnbmVkIGxvbmcgKnBlcmNwdV9jb3VudDsKIGJvb2wgcmV0OwoKIHJjdV9yZWFk X2xvY2soKTsKCiBpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgJnBlcmNwdV9jb3VudCkpIHsKICBk byB7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJigqcGVyY3B1X2Nv dW50KSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsg c3dpdGNoKHNpemVvZigqcGVyY3B1X2NvdW50KSkgeyBjYXNlIDE6IGRvIHsgdHlwZWRlZiB0eXBl b2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWls dGluX2NvbnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8gKGludCko bnIpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChucik7ICh2 b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2Ug MTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEp IGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIpKSk7IGJy ZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19J RF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18p KG5yKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgi aW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNl IGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwg JTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIg KChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2 b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3EgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRp bGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkgOiAicmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVf c2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDI6IGRvIHsgdHlwZWRlZiB0eXBlb2Yo KCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGlu X2NvbnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8gKGludCkobnIp IDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChucik7ICh2b2lk KXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2UgMTog aWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFz bSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIpKSk7IGJyZWFr OyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9f ID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKG5y KSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5j bCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlm IChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwgJTEs ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChw YW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xh dGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp KTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3EgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUg KCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkg OiAicmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6 ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDQ6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpw ZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2Nv bnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8gKGludCkobnIpIDog MDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChucik7ICh2b2lkKXBh b190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2UgMTogaWYg KHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2 b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBj YXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09 IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpw ZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKG5yKSkp OyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jbCAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChw YW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwgJTEsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChwYW9f VF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGls ZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsg ZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3EgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJh ZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAi cmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgp OyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDg6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJj cHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0 YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8gKGludCkobnIpIDogMDsg aWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChucik7ICh2b2lkKXBhb190 bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBh b19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xh dGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp KTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNl IDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0x KSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJj cHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKG5yKSkpOyBi cmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jbCAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9f SURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwgJTEsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChwYW9fVF9f KShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAo ImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3EgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRx ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmUi ICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9 IH0gd2hpbGUgKDApO2JyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7 YnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAgcmV0ID0gdHJ1ZTsKIH0gZWxzZSB7CiAgcmV0ID0gYXRv bWljX2xvbmdfYWRkX3VubGVzcygmcmVmLT5jb3VudCwgbnIsIDApOwogfQoKIHJjdV9yZWFkX3Vu bG9jaygpOwoKIHJldHVybiByZXQ7Cn0KIyAyNTEgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcmVm Y291bnQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBwZXJjcHVfcmVmX3RyeWdldChzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKQp7 CiByZXR1cm4gcGVyY3B1X3JlZl90cnlnZXRfbWFueShyZWYsIDEpOwp9CiMgMjcxICIuL2luY2x1 ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcGVyY3B1X3JlZl90cnlnZXRfbGl2ZShz dHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKQp7CiB1bnNpZ25lZCBsb25nICpwZXJjcHVfY291bnQ7CiBi b29sIHJldCA9IGZhbHNlOwoKIHJjdV9yZWFkX2xvY2soKTsKCiBpZiAoX19yZWZfaXNfcGVyY3B1 KHJlZiwgJnBlcmNwdV9jb3VudCkpIHsKICBkbyB7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVy aWZ5ID0gKHR5cGVvZigoJigqcGVyY3B1X2NvdW50KSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQp X192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsgc3dpdGNoKHNpemVvZigqcGVyY3B1X2NvdW50KSkg eyBjYXNlIDE6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBj b25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAx IHx8ICgxKSA9PSAtMSkpID8gKGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBf XzsgcGFvX3RtcF9fID0gKDEpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpw ZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUg KCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVs c2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRk YiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFp IiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20g dm9sYXRpbGUgKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0 aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9 PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpw ZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJk ZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2Ug YXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChw YW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9s YXRpbGUgKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnBlcmNwdV9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZh dWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDI6IGRv IHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFv X0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAt MSkpID8gKGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9f ID0gKDEpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpwZXJjcHVfY291bnQp KSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNiICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19J RF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkYiAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFpIiAoKHBhb19UX18p KDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJp bmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2Ug aWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAl MSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAo KHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9s YXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNsICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxl ICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp IDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAx KSBhc20gdm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJj cHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNx ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNt IHZvbGF0aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9w ZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDQ6IGRvIHsgdHlwZWRlZiB0 eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19i dWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCko MSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9p ZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpwZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6 IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNiICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBh c20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVf Y291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFr OyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9f ID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEp KSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNs ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkbCAlMSwg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBh b19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRp bGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7 IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNxICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgi YWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDog InJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgp OyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDg6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJj cHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0 YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCkoMSkgOiAwOyBpZiAo MCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9pZClwYW9fdG1wX187 IH0gc3dpdGNoIChzaXplb2YoKCpwZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURf XyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUg KCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVs c2UgYXNtIHZvbGF0aWxlICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlm IChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20g dm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBj YXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09 IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpw ZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7 IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNxICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkcSAlMSwgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJlIiAoKHBhb19U X18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUg KDApO2JyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7YnJlYWs7IH0g fSB3aGlsZSAoMCk7CiAgcmV0ID0gdHJ1ZTsKIH0gZWxzZSBpZiAoIShyZWYtPnBlcmNwdV9jb3Vu dF9wdHIgJiBfX1BFUkNQVV9SRUZfREVBRCkpIHsKICByZXQgPSBhdG9taWNfbG9uZ19pbmNfbm90 X3plcm8oJnJlZi0+Y291bnQpOwogfQoKIHJjdV9yZWFkX3VubG9jaygpOwoKIHJldHVybiByZXQ7 Cn0KIyAzMDAgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZXJjcHVf cmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpCnsK IHVuc2lnbmVkIGxvbmcgKnBlcmNwdV9jb3VudDsKCiByY3VfcmVhZF9sb2NrKCk7CgogaWYgKF9f cmVmX2lzX3BlcmNwdShyZWYsICZwZXJjcHVfY291bnQpKQogIGRvIHsgZG8geyBjb25zdCB2b2lk ICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKCpwZXJjcHVfY291bnQpKSArIDApKSgodm9pZCAq KTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyBzd2l0Y2goc2l6ZW9mKCpwZXJj cHVfY291bnQpKSB7IGNhc2UgMTogZG8geyB0eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9jb3VudCkp IHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgtKHR5 cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSAmJiAoKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShu cikpID09IDEgfHwgKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpID09IC0xKSkgPyAoaW50 KSgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFv X3RtcF9fOyBwYW9fdG1wX18gPSAoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSk7ICh2b2lk KXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2UgMTog aWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFz bSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoLSh0eXBlb2YoKnBl cmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFz bSB2b2xhdGlsZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3cgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9s YXRpbGUgKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2Nv dW50KSkgOiAicmkiICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsg YnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2wgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFv X0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRsICUxLCAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmkiICgocGFvX1Rf XykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBh b19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xh dGlsZSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp KTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9j b3VudCkpKG5yKSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3 aGlsZSAoMCk7YnJlYWs7IGNhc2UgMjogZG8geyB0eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9jb3Vu dCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgt KHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSAmJiAoKC0odHlwZW9mKCpwZXJjcHVfY291bnQp KShucikpID09IDEgfHwgKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpID09IC0xKSkgPyAo aW50KSgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA6IDA7IGlmICgwKSB7IHBhb19UX18g cGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSk7ICh2 b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2Ug MTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEp IGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoLSh0eXBlb2Yo KnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEp IGFzbSB2b2xhdGlsZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3cg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20g dm9sYXRpbGUgKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1 X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkp KTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2wg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAo cGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRsICUxLCAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmkiICgocGFv X1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgODogaWYg KHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2 b2xhdGlsZSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNw dV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0g fSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgNDogZG8geyB0eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9j b3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRf cCgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSAmJiAoKC0odHlwZW9mKCpwZXJjcHVfY291 bnQpKShucikpID09IDEgfHwgKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpID09IC0xKSkg PyAoaW50KSgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA6IDA7IGlmICgwKSB7IHBhb19U X18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSk7 ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNh c2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0g LTEpIGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoLSh0eXBl b2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09 IDEpIGFzbSB2b2xhdGlsZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRl Y3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBh c20gdm9sYXRpbGUgKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVy Y3B1X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5y KSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImlu Y2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBp ZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRsICUx LCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmkiICgo cGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgODog aWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFz bSB2b2xhdGlsZSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLSh0eXBlb2YoKnBl cmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7 IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgODogZG8geyB0eXBlZGVmIHR5cGVvZigoKnBlcmNw dV9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3Rh bnRfcCgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSAmJiAoKC0odHlwZW9mKCpwZXJjcHVf Y291bnQpKShucikpID09IDEgfHwgKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpID09IC0x KSkgPyAoaW50KSgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA6IDA7IGlmICgwKSB7IHBh b19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5y KSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7 IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18g PT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoLSh0 eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9f ID09IDEpIGFzbSB2b2xhdGlsZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAo ImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxz ZSBhc20gdm9sYXRpbGUgKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq cGVyY3B1X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkp KG5yKSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAo ImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2wgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRs ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmki ICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2Ug ODogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEp IGFzbSB2b2xhdGlsZSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLSh0eXBlb2Yo KnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXpl KCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3NpemVfY2FsbF9wYXJhbWV0 ZXIoKTticmVhazsgfSB9IHdoaWxlICgwKTsKIGVsc2UgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEo YXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCAmcmVmLT5jb3VudCkpLCAwKSkKICByZWYtPnJl bGVhc2UocmVmKTsKCiByY3VfcmVhZF91bmxvY2soKTsKfQojIDMyMyAiLi9pbmNsdWRlL2xpbnV4 L3BlcmNwdS1yZWZjb3VudC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBlcmNwdV9yZWZfcHV0KHN0cnVjdCBwZXJjcHVfcmVm ICpyZWYpCnsKIHBlcmNwdV9yZWZfcHV0X21hbnkocmVmLCAxKTsKfQojIDMzNyAiLi9pbmNsdWRl L2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHBlcmNwdV9yZWZfaXNfZHlpbmcoc3RydWN0 IHBlcmNwdV9yZWYgKnJlZikKewogcmV0dXJuIHJlZi0+cGVyY3B1X2NvdW50X3B0ciAmIF9fUEVS Q1BVX1JFRl9ERUFEOwp9CiMgMzUwICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50Lmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgcGVyY3B1X3JlZl9pc196ZXJvKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpCnsKIHVuc2ln bmVkIGxvbmcgKnBlcmNwdV9jb3VudDsKCiBpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgJnBlcmNw dV9jb3VudCkpCiAgcmV0dXJuIGZhbHNlOwogcmV0dXJuICFhdG9taWNfbG9uZ19yZWFkKCZyZWYt PmNvdW50KTsKfQojIDIwICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIiAyCiMgMTM2ICIuL2luY2x1 ZGUvbGludXgvc2xhYi5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9rYXNhbi5oIiAxCgoKCgoKCnN0 cnVjdCBrbWVtX2NhY2hlOwpzdHJ1Y3QgcGFnZTsKc3RydWN0IHZtX3N0cnVjdDsKc3RydWN0IHRh c2tfc3RydWN0OwojIDEwMSAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fdW5w b2lzb25fc2hhZG93KGNvbnN0IHZvaWQgKmFkZHJlc3MsIHNpemVfdCBzaXplKSB7fQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBr YXNhbl91bnBvaXNvbl90YXNrX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykge30Kc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBrYXNhbl91bnBvaXNvbl9zdGFja19hYm92ZV9zcF90byhjb25zdCB2b2lkICp3YXRlcm1hcmsp IHt9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGthc2FuX2VuYWJsZV9jdXJyZW50KHZvaWQpIHt9CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fZGlzYWJs ZV9jdXJyZW50KHZvaWQpIHt9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX2FsbG9jX3BhZ2VzKHN0cnVjdCBwYWdlICpw YWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpIHt9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fZnJlZV9wYWdlcyhzdHJ1Y3Qg cGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKSB7fQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl9jYWNoZV9jcmVh dGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLAogICAgICAgICAgdW5zaWduZWQgaW50ICpzaXpl LAogICAgICAgICAgc2xhYl9mbGFnc190ICpmbGFncykge30KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fcG9pc29uX3Ns YWIoc3RydWN0IHBhZ2UgKnBhZ2UpIHt9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fdW5wb2lzb25fb2JqZWN0X2RhdGEo c3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLAogICAgIHZvaWQgKm9iamVjdCkge30Kc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNh bl9wb2lzb25fb2JqZWN0X2RhdGEoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLAogICAgIHZvaWQg Km9iamVjdCkge30Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCAqa2FzYW5faW5pdF9zbGFiX29iaihzdHJ1Y3Qga21lbV9jYWNoZSAq Y2FjaGUsCiAgICBjb25zdCB2b2lkICpvYmplY3QpCnsKIHJldHVybiAodm9pZCAqKW9iamVjdDsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCAqa2FzYW5fa21hbGxvY19sYXJnZSh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBnZnBf dCBmbGFncykKewogcmV0dXJuIHB0cjsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX2tmcmVlX2xhcmdlKHZvaWQgKnB0 ciwgdW5zaWduZWQgbG9uZyBpcCkge30Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl9wb2lzb25fa2ZyZWUodm9pZCAqcHRy LCB1bnNpZ25lZCBsb25nIGlwKSB7fQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICprYXNhbl9rbWFsbG9jKHN0cnVjdCBrbWVtX2Nh Y2hlICpzLCBjb25zdCB2b2lkICpvYmplY3QsCiAgICBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3Mp CnsKIHJldHVybiAodm9pZCAqKW9iamVjdDsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICprYXNhbl9rcmVhbGxvYyhjb25zdCB2 b2lkICpvYmplY3QsIHNpemVfdCBuZXdfc2l6ZSwKICAgICBnZnBfdCBmbGFncykKewogcmV0dXJu ICh2b2lkICopb2JqZWN0Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICprYXNhbl9zbGFiX2FsbG9jKHN0cnVjdCBrbWVtX2Nh Y2hlICpzLCB2b2lkICpvYmplY3QsCiAgICAgICBnZnBfdCBmbGFncykKewogcmV0dXJuIG9iamVj dDsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIGthc2FuX3NsYWJfZnJlZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2Jq ZWN0LAogICAgICAgdW5zaWduZWQgbG9uZyBpcCkKewogcmV0dXJuIGZhbHNlOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQga2Fz YW5fbW9kdWxlX2FsbG9jKHZvaWQgKmFkZHIsIHNpemVfdCBzaXplKSB7IHJldHVybiAwOyB9CnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQga2FzYW5fZnJlZV9zaGFkb3coY29uc3Qgc3RydWN0IHZtX3N0cnVjdCAqdm0pIHt9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg a2FzYW5fYWRkX3plcm9fc2hhZG93KHZvaWQgKnN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUpCnsK IHJldHVybiAwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQga2FzYW5fcmVtb3ZlX3plcm9fc2hhZG93KHZvaWQgKnN0YXJ0LAog ICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSkKe30KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fdW5wb2lzb25fc2xhYihjb25z dCB2b2lkICpwdHIpIHsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzaXplX3Qga2FzYW5fbWV0YWRhdGFfc2l6ZShzdHJ1Y3Qga21lbV9j YWNoZSAqY2FjaGUpIHsgcmV0dXJuIDA7IH0KIyAxODAgIi4vaW5jbHVkZS9saW51eC9rYXNhbi5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHt9CnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQga2FzYW5fY2FjaGVfc2h1dGRvd24oc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKSB7fQojIDE5 OCAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5faW5pdF90YWdzKHZvaWQpIHsg fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCAqa2FzYW5fcmVzZXRfdGFnKGNvbnN0IHZvaWQgKmFkZHIpCnsKIHJldHVybiAodm9p ZCAqKWFkZHI7Cn0KIyAyMTUgIi4vaW5jbHVkZS9saW51eC9rYXNhbi5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQga2FzYW5fcG9w dWxhdGVfdm1hbGxvYyh1bnNpZ25lZCBsb25nIHN0YXJ0LAogICAgIHVuc2lnbmVkIGxvbmcgc2l6 ZSkKewogcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fcG9pc29uX3ZtYWxsb2MoY29uc3Qgdm9pZCAq c3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKeyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fdW5wb2lzb25fdm1hbGxv Yyhjb25zdCB2b2lkICpzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplKQp7IH0Kc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl9y ZWxlYXNlX3ZtYWxsb2ModW5zaWduZWQgbG9uZyBzdGFydCwKICAgICAgdW5zaWduZWQgbG9uZyBl bmQsCiAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9yZWdpb25fc3RhcnQsCiAgICAgIHVuc2lnbmVk IGxvbmcgZnJlZV9yZWdpb25fZW5kKSB7fQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fbm9uX2Nhbm9uaWNhbF9o b29rKHVuc2lnbmVkIGxvbmcgYWRkcikgeyB9CiMgMTM3ICIuL2luY2x1ZGUvbGludXgvc2xhYi5o IiAyCgpzdHJ1Y3QgbWVtX2Nncm91cDsKCgoKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25f XygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBrbWVtX2NhY2hlX2lu aXQodm9pZCk7CmJvb2wgc2xhYl9pc19hdmFpbGFibGUodm9pZCk7CgpleHRlcm4gYm9vbCB1c2Vy Y29weV9mYWxsYmFjazsKCnN0cnVjdCBrbWVtX2NhY2hlICprbWVtX2NhY2hlX2NyZWF0ZShjb25z dCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgc2l6ZSwKICAgdW5zaWduZWQgaW50IGFsaWduLCBz bGFiX2ZsYWdzX3QgZmxhZ3MsCiAgIHZvaWQgKCpjdG9yKSh2b2lkICopKTsKc3RydWN0IGttZW1f Y2FjaGUgKmttZW1fY2FjaGVfY3JlYXRlX3VzZXJjb3B5KGNvbnN0IGNoYXIgKm5hbWUsCiAgIHVu c2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBpbnQgYWxpZ24sCiAgIHNsYWJfZmxhZ3NfdCBmbGFn cywKICAgdW5zaWduZWQgaW50IHVzZXJvZmZzZXQsIHVuc2lnbmVkIGludCB1c2Vyc2l6ZSwKICAg dm9pZCAoKmN0b3IpKHZvaWQgKikpOwp2b2lkIGttZW1fY2FjaGVfZGVzdHJveShzdHJ1Y3Qga21l bV9jYWNoZSAqKTsKaW50IGttZW1fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICopOwoK dm9pZCBtZW1jZ19jcmVhdGVfa21lbV9jYWNoZShzdHJ1Y3QgbWVtX2Nncm91cCAqLCBzdHJ1Y3Qg a21lbV9jYWNoZSAqKTsKdm9pZCBtZW1jZ19kZWFjdGl2YXRlX2ttZW1fY2FjaGVzKHN0cnVjdCBt ZW1fY2dyb3VwICosIHN0cnVjdCBtZW1fY2dyb3VwICopOwojIDE4NyAiLi9pbmNsdWRlL2xpbnV4 L3NsYWIuaCIKdm9pZCAqIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBr cmVhbGxvYyhjb25zdCB2b2lkICosIHNpemVfdCwgZ2ZwX3QpOwp2b2lkIGtmcmVlKGNvbnN0IHZv aWQgKik7CnZvaWQga3pmcmVlKGNvbnN0IHZvaWQgKik7CnNpemVfdCBfX2tzaXplKGNvbnN0IHZv aWQgKik7CnNpemVfdCBrc2l6ZShjb25zdCB2b2lkICopOwoKCnZvaWQgX19jaGVja19oZWFwX29i amVjdChjb25zdCB2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgbiwgc3RydWN0IHBhZ2UgKnBhZ2Us CiAgIGJvb2wgdG9fdXNlcik7CiMgMzA4ICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIgplbnVtIGtt YWxsb2NfY2FjaGVfdHlwZSB7CiBLTUFMTE9DX05PUk1BTCA9IDAsCiBLTUFMTE9DX1JFQ0xBSU0s CgogS01BTExPQ19ETUEsCgogTlJfS01BTExPQ19UWVBFUwp9OwoKCmV4dGVybiBzdHJ1Y3Qga21l bV9jYWNoZSAqCmttYWxsb2NfY2FjaGVzW05SX0tNQUxMT0NfVFlQRVNdWygoMTEgKyAxMiAtIDEp IDw9IDI1ID8gKDExICsgMTIgLSAxKSA6IDI1KSArIDFdOwoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSBlbnVtIGttYWxsb2NfY2FjaGVfdHlwZSBrbWFsbG9jX3R5cGUoZ2ZwX3Qg ZmxhZ3MpCnsKCgoKCgogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoKGZsYWdzICYgKCgoIGdmcF90 KTB4MDF1KSB8ICgoIGdmcF90KTB4MTB1KSkpID09IDApLCAxKSkKICByZXR1cm4gS01BTExPQ19O T1JNQUw7CgoKCgoKIHJldHVybiBmbGFncyAmICgoIGdmcF90KTB4MDF1KSA/IEtNQUxMT0NfRE1B IDogS01BTExPQ19SRUNMQUlNOwoKCgp9CiMgMzQ5ICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGludCBrbWFsbG9jX2lu ZGV4KHNpemVfdCBzaXplKQp7CiBpZiAoIXNpemUpCiAgcmV0dXJuIDA7CgogaWYgKHNpemUgPD0g KDEgPDwgNSkpCiAgcmV0dXJuIDU7CgogaWYgKCgxIDw8IDUpIDw9IDMyICYmIHNpemUgPiA2NCAm JiBzaXplIDw9IDk2KQogIHJldHVybiAxOwogaWYgKCgxIDw8IDUpIDw9IDY0ICYmIHNpemUgPiAx MjggJiYgc2l6ZSA8PSAxOTIpCiAgcmV0dXJuIDI7CiBpZiAoc2l6ZSA8PSA4KSByZXR1cm4gMzsK IGlmIChzaXplIDw9IDE2KSByZXR1cm4gNDsKIGlmIChzaXplIDw9IDMyKSByZXR1cm4gNTsKIGlm IChzaXplIDw9IDY0KSByZXR1cm4gNjsKIGlmIChzaXplIDw9IDEyOCkgcmV0dXJuIDc7CiBpZiAo c2l6ZSA8PSAyNTYpIHJldHVybiA4OwogaWYgKHNpemUgPD0gNTEyKSByZXR1cm4gOTsKIGlmIChz aXplIDw9IDEwMjQpIHJldHVybiAxMDsKIGlmIChzaXplIDw9IDIgKiAxMDI0KSByZXR1cm4gMTE7 CiBpZiAoc2l6ZSA8PSA0ICogMTAyNCkgcmV0dXJuIDEyOwogaWYgKHNpemUgPD0gOCAqIDEwMjQp IHJldHVybiAxMzsKIGlmIChzaXplIDw9IDE2ICogMTAyNCkgcmV0dXJuIDE0OwogaWYgKHNpemUg PD0gMzIgKiAxMDI0KSByZXR1cm4gMTU7CiBpZiAoc2l6ZSA8PSA2NCAqIDEwMjQpIHJldHVybiAx NjsKIGlmIChzaXplIDw9IDEyOCAqIDEwMjQpIHJldHVybiAxNzsKIGlmIChzaXplIDw9IDI1NiAq IDEwMjQpIHJldHVybiAxODsKIGlmIChzaXplIDw9IDUxMiAqIDEwMjQpIHJldHVybiAxOTsKIGlm IChzaXplIDw9IDEwMjQgKiAxMDI0KSByZXR1cm4gMjA7CiBpZiAoc2l6ZSA8PSAyICogMTAyNCAq IDEwMjQpIHJldHVybiAyMTsKIGlmIChzaXplIDw9IDQgKiAxMDI0ICogMTAyNCkgcmV0dXJuIDIy OwogaWYgKHNpemUgPD0gOCAqIDEwMjQgKiAxMDI0KSByZXR1cm4gMjM7CiBpZiAoc2l6ZSA8PSAx NiAqIDEwMjQgKiAxMDI0KSByZXR1cm4gMjQ7CiBpZiAoc2l6ZSA8PSAzMiAqIDEwMjQgKiAxMDI0 KSByZXR1cm4gMjU7CiBpZiAoc2l6ZSA8PSA2NCAqIDEwMjQgKiAxMDI0KSByZXR1cm4gMjY7CiBk byB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIg IlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIg IjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIl YzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1 Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAi XHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3Ns YWIuaCIpLCAiaSIgKDM4NSksICJpIiAoMCksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkp KSk7IH0gd2hpbGUgKDApOyBkbyB7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNl Y3Rpb24gLmRpc2NhcmQudW5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBv cHNlY3Rpb25cblx0IiA6IDogImkiICgxOCkpOyB9KTsgYXNtIHZvbGF0aWxlKCIiKTsgX19idWls dGluX3VucmVhY2hhYmxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKCgogcmV0dXJuIC0x Owp9CgoKdm9pZCAqX19rbWFsbG9jKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncykgX19hdHRyaWJ1 dGVfXygoX19hc3N1bWVfYWxpZ25lZF9fKF9fYWxpZ25vZl9fKHVuc2lnbmVkIGxvbmcgbG9uZykp KSkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpOwp2b2lkICprbWVtX2NhY2hlX2FsbG9jKHN0 cnVjdCBrbWVtX2NhY2hlICosIGdmcF90IGZsYWdzKSBfX2F0dHJpYnV0ZV9fKChfX2Fzc3VtZV9h bGlnbmVkX18oX19hbGlnbm9mX18odW5zaWduZWQgbG9uZyBsb25nKSkpKSBfX2F0dHJpYnV0ZV9f KChfX21hbGxvY19fKSk7CnZvaWQga21lbV9jYWNoZV9mcmVlKHN0cnVjdCBrbWVtX2NhY2hlICos IHZvaWQgKik7CiMgNDAzICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIgp2b2lkIGttZW1fY2FjaGVf ZnJlZV9idWxrKHN0cnVjdCBrbWVtX2NhY2hlICosIHNpemVfdCwgdm9pZCAqKik7CmludCBrbWVt X2NhY2hlX2FsbG9jX2J1bGsoc3RydWN0IGttZW1fY2FjaGUgKiwgZ2ZwX3QsIHNpemVfdCwgdm9p ZCAqKik7CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGtmcmVl X2J1bGsoc2l6ZV90IHNpemUsIHZvaWQgKipwKQp7CiBrbWVtX2NhY2hlX2ZyZWVfYnVsaygoKHZv aWQgKikwKSwgc2l6ZSwgcCk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgKl9fa21hbGxvY19ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5v ZGUpCnsKIHJldHVybiBfX2ttYWxsb2Moc2l6ZSwgZmxhZ3MpOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgKmttZW1fY2FjaGVfYWxsb2Nfbm9kZShzdHJ1Y3Qga21l bV9jYWNoZSAqcywgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKQp7CiByZXR1cm4ga21lbV9jYWNoZV9h bGxvYyhzLCBmbGFncyk7Cn0KCgoKZXh0ZXJuIHZvaWQgKmttZW1fY2FjaGVfYWxsb2NfdHJhY2Uo c3RydWN0IGttZW1fY2FjaGUgKiwgZ2ZwX3QsIHNpemVfdCkgX19hdHRyaWJ1dGVfXygoX19hc3N1 bWVfYWxpZ25lZF9fKF9fYWxpZ25vZl9fKHVuc2lnbmVkIGxvbmcgbG9uZykpKSkgX19hdHRyaWJ1 dGVfXygoX19tYWxsb2NfXykpOwoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgKgprbWVtX2NhY2hlX2FsbG9jX25vZGVfdHJhY2Uoc3RydWN0IGttZW1fY2FjaGUg KnMsCiAgICAgICAgIGdmcF90IGdmcGZsYWdzLAogICAgICAgICBpbnQgbm9kZSwgc2l6ZV90IHNp emUpCnsKIHJldHVybiBrbWVtX2NhY2hlX2FsbG9jX3RyYWNlKHMsIGdmcGZsYWdzLCBzaXplKTsK fQojIDQ2OSAiLi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKZXh0ZXJuIHZvaWQgKmttYWxsb2Nfb3Jk ZXIoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmli dXRlX18oKF9fYXNzdW1lX2FsaWduZWRfXygoKDFVTCkgPDwgMTIpKSkpIF9fYXR0cmlidXRlX18o KF9fbWFsbG9jX18pKTsKCgpleHRlcm4gdm9pZCAqa21hbGxvY19vcmRlcl90cmFjZShzaXplX3Qg c2l6ZSwgZ2ZwX3QgZmxhZ3MsIHVuc2lnbmVkIGludCBvcmRlcikgX19hdHRyaWJ1dGVfXygoX19h c3N1bWVfYWxpZ25lZF9fKCgoMVVMKSA8PCAxMikpKSkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2Nf XykpOwojIDQ4MSAiLi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkICprbWFsbG9jX2xhcmdlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFn cykKewogdW5zaWduZWQgaW50IG9yZGVyID0gZ2V0X29yZGVyKHNpemUpOwogcmV0dXJuIGttYWxs b2Nfb3JkZXJfdHJhY2Uoc2l6ZSwgZmxhZ3MsIG9yZGVyKTsKfQojIDU0MSAiLi9pbmNsdWRlL2xp bnV4L3NsYWIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkICprbWFs bG9jKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncykKewogaWYgKF9fYnVpbHRpbl9jb25zdGFudF9w KHNpemUpKSB7CgogIHVuc2lnbmVkIGludCBpbmRleDsKCiAgaWYgKHNpemUgPiAoMVVMIDw8ICgo MTEgKyAxMiAtIDEpIDw9IDI1ID8gKDExICsgMTIgLSAxKSA6IDI1KSkpCiAgIHJldHVybiBrbWFs bG9jX2xhcmdlKHNpemUsIGZsYWdzKTsKCiAgaW5kZXggPSBrbWFsbG9jX2luZGV4KHNpemUpOwoK ICBpZiAoIWluZGV4KQogICByZXR1cm4gKCh2b2lkICopMTYpOwoKICByZXR1cm4ga21lbV9jYWNo ZV9hbGxvY190cmFjZSgKICAgIGttYWxsb2NfY2FjaGVzW2ttYWxsb2NfdHlwZShmbGFncyldW2lu ZGV4XSwKICAgIGZsYWdzLCBzaXplKTsKCiB9CiByZXR1cm4gX19rbWFsbG9jKHNpemUsIGZsYWdz KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkICprbWFsbG9jX25v ZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSkKewoKIGlmIChfX2J1aWx0aW5f Y29uc3RhbnRfcChzaXplKSAmJgogIHNpemUgPD0gKDFVTCA8PCAoKDExICsgMTIgLSAxKSA8PSAy NSA/ICgxMSArIDEyIC0gMSkgOiAyNSkpKSB7CiAgdW5zaWduZWQgaW50IGkgPSBrbWFsbG9jX2lu ZGV4KHNpemUpOwoKICBpZiAoIWkpCiAgIHJldHVybiAoKHZvaWQgKikxNik7CgogIHJldHVybiBr bWVtX2NhY2hlX2FsbG9jX25vZGVfdHJhY2UoCiAgICBrbWFsbG9jX2NhY2hlc1trbWFsbG9jX3R5 cGUoZmxhZ3MpXVtpXSwKICAgICAgZmxhZ3MsIG5vZGUsIHNpemUpOwogfQoKIHJldHVybiBfX2tt YWxsb2Nfbm9kZShzaXplLCBmbGFncywgbm9kZSk7Cn0KCmludCBtZW1jZ191cGRhdGVfYWxsX2Nh Y2hlcyhpbnQgbnVtX21lbWNncyk7CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICprbWFsbG9jX2FycmF5KHNpemVfdCBu LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCnsKIHNpemVfdCBieXRlczsKCiBpZiAoX19idWls dGluX2V4cGVjdCghISgoeyB0eXBlb2YobikgX19hID0gKG4pOyB0eXBlb2Yoc2l6ZSkgX19iID0g KHNpemUpOyB0eXBlb2YoJmJ5dGVzKSBfX2QgPSAoJmJ5dGVzKTsgKHZvaWQpICgmX19hID09ICZf X2IpOyAodm9pZCkgKCZfX2EgPT0gX19kKTsgX19idWlsdGluX211bF9vdmVyZmxvdyhfX2EsIF9f YiwgX19kKTsgfSkpLCAwKSkKICByZXR1cm4gKCh2b2lkICopMCk7CiBpZiAoX19idWlsdGluX2Nv bnN0YW50X3AobikgJiYgX19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZSkpCiAgcmV0dXJuIGttYWxs b2MoYnl0ZXMsIGZsYWdzKTsKIHJldHVybiBfX2ttYWxsb2MoYnl0ZXMsIGZsYWdzKTsKfQoKCgoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCAqa2NhbGxvYyhzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKQp7CiBy ZXR1cm4ga21hbGxvY19hcnJheShuLCBzaXplLCBmbGFncyB8ICgoIGdmcF90KTB4MTAwdSkpOwp9 CiMgNjE5ICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIgpleHRlcm4gdm9pZCAqX19rbWFsbG9jX3Ry YWNrX2NhbGxlcihzaXplX3QsIGdmcF90LCB1bnNpZ25lZCBsb25nKTsKCgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqa21hbGxv Y19hcnJheV9ub2RlKHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsCiAgICAgICAg ICAgaW50IG5vZGUpCnsKIHNpemVfdCBieXRlczsKCiBpZiAoX19idWlsdGluX2V4cGVjdCghISgo eyB0eXBlb2YobikgX19hID0gKG4pOyB0eXBlb2Yoc2l6ZSkgX19iID0gKHNpemUpOyB0eXBlb2Yo JmJ5dGVzKSBfX2QgPSAoJmJ5dGVzKTsgKHZvaWQpICgmX19hID09ICZfX2IpOyAodm9pZCkgKCZf X2EgPT0gX19kKTsgX19idWlsdGluX211bF9vdmVyZmxvdyhfX2EsIF9fYiwgX19kKTsgfSkpLCAw KSkKICByZXR1cm4gKCh2b2lkICopMCk7CiBpZiAoX19idWlsdGluX2NvbnN0YW50X3AobikgJiYg X19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZSkpCiAgcmV0dXJuIGttYWxsb2Nfbm9kZShieXRlcywg ZmxhZ3MsIG5vZGUpOwogcmV0dXJuIF9fa21hbGxvY19ub2RlKGJ5dGVzLCBmbGFncywgbm9kZSk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgKmtjYWxsb2Nfbm9kZShzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdz LCBpbnQgbm9kZSkKewogcmV0dXJuIGttYWxsb2NfYXJyYXlfbm9kZShuLCBzaXplLCBmbGFncyB8 ICgoIGdmcF90KTB4MTAwdSksIG5vZGUpOwp9CiMgNjU3ICIuL2luY2x1ZGUvbGludXgvc2xhYi5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkICprbWVtX2NhY2hlX3phbGxvYyhzdHJ1Y3Qga21lbV9jYWNoZSAqaywgZ2ZwX3QgZmxh Z3MpCnsKIHJldHVybiBrbWVtX2NhY2hlX2FsbG9jKGssIGZsYWdzIHwgKCggZ2ZwX3QpMHgxMDB1 KSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCAqa3phbGxvYyhzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCnsKIHJl dHVybiBrbWFsbG9jKHNpemUsIGZsYWdzIHwgKCggZ2ZwX3QpMHgxMDB1KSk7Cn0KCgoKCgoKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgKmt6YWxsb2Nfbm9kZShzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKQp7CiBy ZXR1cm4ga21hbGxvY19ub2RlKHNpemUsIGZsYWdzIHwgKCggZ2ZwX3QpMHgxMDB1KSwgbm9kZSk7 Cn0KCnVuc2lnbmVkIGludCBrbWVtX2NhY2hlX3NpemUoc3RydWN0IGttZW1fY2FjaGUgKnMpOwp2 b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbGRfXykpIGttZW1fY2FjaGVfaW5pdF9sYXRlKHZvaWQpOwoKCmludCBzbGFiX3By ZXBhcmVfY3B1KHVuc2lnbmVkIGludCBjcHUpOwppbnQgc2xhYl9kZWFkX2NwdSh1bnNpZ25lZCBp bnQgY3B1KTsKIyAzNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L29zX3R5cGVzLmgiIDIKCgoKIyAxICIuL2luY2x1ZGUvZHJtL2RybV9wcmludC5oIiAxCiMgMzEg Ii4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NlcV9maWxl LmgiIDEKIyAxMSAiLi9pbmNsdWRlL2xpbnV4L3NlcV9maWxlLmgiCiMgMSAiLi9pbmNsdWRlL2xp bnV4L2ZzLmgiIDEKCgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC93YWl0X2JpdC5oIiAxCiMgMTAg Ii4vaW5jbHVkZS9saW51eC93YWl0X2JpdC5oIgpzdHJ1Y3Qgd2FpdF9iaXRfa2V5IHsKIHZvaWQg KmZsYWdzOwogaW50IGJpdF9ucjsKIHVuc2lnbmVkIGxvbmcgdGltZW91dDsKfTsKCnN0cnVjdCB3 YWl0X2JpdF9xdWV1ZV9lbnRyeSB7CiBzdHJ1Y3Qgd2FpdF9iaXRfa2V5IGtleTsKIHN0cnVjdCB3 YWl0X3F1ZXVlX2VudHJ5IHdxX2VudHJ5Owp9OwoKCgoKdHlwZWRlZiBpbnQgd2FpdF9iaXRfYWN0 aW9uX2Yoc3RydWN0IHdhaXRfYml0X2tleSAqa2V5LCBpbnQgbW9kZSk7Cgp2b2lkIF9fd2FrZV91 cF9iaXQoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgdm9pZCAqd29yZCwgaW50IGJp dCk7CmludCBfX3dhaXRfb25fYml0KHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHN0 cnVjdCB3YWl0X2JpdF9xdWV1ZV9lbnRyeSAqd2JxX2VudHJ5LCB3YWl0X2JpdF9hY3Rpb25fZiAq YWN0aW9uLCB1bnNpZ25lZCBpbnQgbW9kZSk7CmludCBfX3dhaXRfb25fYml0X2xvY2soc3RydWN0 IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfYml0X3F1ZXVlX2VudHJ5ICp3 YnFfZW50cnksIHdhaXRfYml0X2FjdGlvbl9mICphY3Rpb24sIHVuc2lnbmVkIGludCBtb2RlKTsK dm9pZCB3YWtlX3VwX2JpdCh2b2lkICp3b3JkLCBpbnQgYml0KTsKaW50IG91dF9vZl9saW5lX3dh aXRfb25fYml0KHZvaWQgKndvcmQsIGludCwgd2FpdF9iaXRfYWN0aW9uX2YgKmFjdGlvbiwgdW5z aWduZWQgaW50IG1vZGUpOwppbnQgb3V0X29mX2xpbmVfd2FpdF9vbl9iaXRfdGltZW91dCh2b2lk ICp3b3JkLCBpbnQsIHdhaXRfYml0X2FjdGlvbl9mICphY3Rpb24sIHVuc2lnbmVkIGludCBtb2Rl LCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwppbnQgb3V0X29mX2xpbmVfd2FpdF9vbl9iaXRfbG9j ayh2b2lkICp3b3JkLCBpbnQsIHdhaXRfYml0X2FjdGlvbl9mICphY3Rpb24sIHVuc2lnbmVkIGlu dCBtb2RlKTsKc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqYml0X3dhaXRxdWV1ZSh2b2lkICp3b3Jk LCBpbnQgYml0KTsKZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0 LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgd2FpdF9iaXRfaW5pdCh2b2lkKTsK CmludCB3YWtlX2JpdF9mdW5jdGlvbihzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnks IHVuc2lnbmVkIG1vZGUsIGludCBzeW5jLCB2b2lkICprZXkpOwojIDQ5ICIuL2luY2x1ZGUvbGlu dXgvd2FpdF9iaXQuaCIKZXh0ZXJuIGludCBiaXRfd2FpdChzdHJ1Y3Qgd2FpdF9iaXRfa2V5ICpr ZXksIGludCBtb2RlKTsKZXh0ZXJuIGludCBiaXRfd2FpdF9pbyhzdHJ1Y3Qgd2FpdF9iaXRfa2V5 ICprZXksIGludCBtb2RlKTsKZXh0ZXJuIGludCBiaXRfd2FpdF90aW1lb3V0KHN0cnVjdCB3YWl0 X2JpdF9rZXkgKmtleSwgaW50IG1vZGUpOwpleHRlcm4gaW50IGJpdF93YWl0X2lvX3RpbWVvdXQo c3RydWN0IHdhaXRfYml0X2tleSAqa2V5LCBpbnQgbW9kZSk7CiMgNzAgIi4vaW5jbHVkZS9saW51 eC93YWl0X2JpdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQKd2FpdF9vbl9iaXQodW5zaWduZWQgbG9uZyAqd29yZCwgaW50IGJp dCwgdW5zaWduZWQgbW9kZSkKewogZG8geyBkbyB7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsK IGlmICghdGVzdF9iaXQoYml0LCB3b3JkKSkKICByZXR1cm4gMDsKIHJldHVybiBvdXRfb2ZfbGlu ZV93YWl0X29uX2JpdCh3b3JkLCBiaXQsCiAgICAgICAgICAgYml0X3dhaXQsCiAgICAgICAgICAg bW9kZSk7Cn0KIyA5NSAiLi9pbmNsdWRlL2xpbnV4L3dhaXRfYml0LmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAp3YWl0X29uX2Jp dF9pbyh1bnNpZ25lZCBsb25nICp3b3JkLCBpbnQgYml0LCB1bnNpZ25lZCBtb2RlKQp7CiBkbyB7 IGRvIHsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogaWYgKCF0ZXN0X2JpdChiaXQsIHdvcmQp KQogIHJldHVybiAwOwogcmV0dXJuIG91dF9vZl9saW5lX3dhaXRfb25fYml0KHdvcmQsIGJpdCwK ICAgICAgICAgICBiaXRfd2FpdF9pbywKICAgICAgICAgICBtb2RlKTsKfQojIDEyMSAiLi9pbmNs dWRlL2xpbnV4L3dhaXRfYml0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAp3YWl0X29uX2JpdF90aW1lb3V0KHVuc2lnbmVkIGxv bmcgKndvcmQsIGludCBiaXQsIHVuc2lnbmVkIG1vZGUsCiAgICAgIHVuc2lnbmVkIGxvbmcgdGlt ZW91dCkKewogZG8geyBkbyB7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIGlmICghdGVzdF9i aXQoYml0LCB3b3JkKSkKICByZXR1cm4gMDsKIHJldHVybiBvdXRfb2ZfbGluZV93YWl0X29uX2Jp dF90aW1lb3V0KHdvcmQsIGJpdCwKICAgICAgICAgICAgYml0X3dhaXRfdGltZW91dCwKICAgICAg ICAgICAgbW9kZSwgdGltZW91dCk7Cn0KIyAxNDkgIi4vaW5jbHVkZS9saW51eC93YWl0X2JpdC5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQKd2FpdF9vbl9iaXRfYWN0aW9uKHVuc2lnbmVkIGxvbmcgKndvcmQsIGludCBiaXQsIHdh aXRfYml0X2FjdGlvbl9mICphY3Rpb24sCiAgICAgdW5zaWduZWQgbW9kZSkKewogZG8geyBkbyB7 IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIGlmICghdGVzdF9iaXQoYml0LCB3b3JkKSkKICBy ZXR1cm4gMDsKIHJldHVybiBvdXRfb2ZfbGluZV93YWl0X29uX2JpdCh3b3JkLCBiaXQsIGFjdGlv biwgbW9kZSk7Cn0KIyAxNzggIi4vaW5jbHVkZS9saW51eC93YWl0X2JpdC5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKd2FpdF9v bl9iaXRfbG9jayh1bnNpZ25lZCBsb25nICp3b3JkLCBpbnQgYml0LCB1bnNpZ25lZCBtb2RlKQp7 CiBkbyB7IGRvIHsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogaWYgKCF0ZXN0X2FuZF9zZXRf Yml0KGJpdCwgd29yZCkpCiAgcmV0dXJuIDA7CiByZXR1cm4gb3V0X29mX2xpbmVfd2FpdF9vbl9i aXRfbG9jayh3b3JkLCBiaXQsIGJpdF93YWl0LCBtb2RlKTsKfQojIDIwMiAiLi9pbmNsdWRlL2xp bnV4L3dhaXRfYml0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludAp3YWl0X29uX2JpdF9sb2NrX2lvKHVuc2lnbmVkIGxvbmcgKndv cmQsIGludCBiaXQsIHVuc2lnbmVkIG1vZGUpCnsKIGRvIHsgZG8geyB9IHdoaWxlICgwKTsgfSB3 aGlsZSAoMCk7CiBpZiAoIXRlc3RfYW5kX3NldF9iaXQoYml0LCB3b3JkKSkKICByZXR1cm4gMDsK IHJldHVybiBvdXRfb2ZfbGluZV93YWl0X29uX2JpdF9sb2NrKHdvcmQsIGJpdCwgYml0X3dhaXRf aW8sIG1vZGUpOwp9CiMgMjI4ICIuL2luY2x1ZGUvbGludXgvd2FpdF9iaXQuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CndhaXRf b25fYml0X2xvY2tfYWN0aW9uKHVuc2lnbmVkIGxvbmcgKndvcmQsIGludCBiaXQsIHdhaXRfYml0 X2FjdGlvbl9mICphY3Rpb24sCiAgIHVuc2lnbmVkIG1vZGUpCnsKIGRvIHsgZG8geyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7CiBpZiAoIXRlc3RfYW5kX3NldF9iaXQoYml0LCB3b3JkKSkKICBy ZXR1cm4gMDsKIHJldHVybiBvdXRfb2ZfbGluZV93YWl0X29uX2JpdF9sb2NrKHdvcmQsIGJpdCwg YWN0aW9uLCBtb2RlKTsKfQoKZXh0ZXJuIHZvaWQgaW5pdF93YWl0X3Zhcl9lbnRyeShzdHJ1Y3Qg d2FpdF9iaXRfcXVldWVfZW50cnkgKndicV9lbnRyeSwgdm9pZCAqdmFyLCBpbnQgZmxhZ3MpOwpl eHRlcm4gdm9pZCB3YWtlX3VwX3Zhcih2b2lkICp2YXIpOwpleHRlcm4gd2FpdF9xdWV1ZV9oZWFk X3QgKl9fdmFyX3dhaXRxdWV1ZSh2b2lkICpwKTsKIyAzMzAgIi4vaW5jbHVkZS9saW51eC93YWl0 X2JpdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGNsZWFyX2FuZF93YWtlX3VwX2JpdChpbnQgYml0LCB2b2lkICp3b3JkKQp7 CiBjbGVhcl9iaXRfdW5sb2NrKGJpdCwgd29yZCk7CgogZG8geyB9IHdoaWxlICgwKTsKIHdha2Vf dXBfYml0KHdvcmQsIGJpdCk7Cn0KIyA3ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi4v aW5jbHVkZS9saW51eC9rZGV2X3QuaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9r ZGV2X3QuaCIgMQojIDYgIi4vaW5jbHVkZS9saW51eC9rZGV2X3QuaCIgMgojIDI0ICIuL2luY2x1 ZGUvbGludXgva2Rldl90LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgb2xkX3ZhbGlkX2RldihkZXZfdCBkZXYpCnsKIHJldHVy biAoKHVuc2lnbmVkIGludCkgKChkZXYpID4+IDIwKSkgPCAyNTYgJiYgKCh1bnNpZ25lZCBpbnQp ICgoZGV2KSAmICgoMVUgPDwgMjApIC0gMSkpKSA8IDI1NjsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTE2IG9sZF9lbmNvZGVfZGV2 KGRldl90IGRldikKewogcmV0dXJuICgoKHVuc2lnbmVkIGludCkgKChkZXYpID4+IDIwKSkgPDwg OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8PCAyMCkgLSAxKSkpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBkZXZf dCBvbGRfZGVjb2RlX2Rldih1MTYgdmFsKQp7CiByZXR1cm4gKCgoKHZhbCA+PiA4KSAmIDI1NSkg PDwgMjApIHwgKHZhbCAmIDI1NSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgbmV3X2VuY29kZV9kZXYoZGV2X3QgZGV2KQp7 CiB1bnNpZ25lZCBtYWpvciA9ICgodW5zaWduZWQgaW50KSAoKGRldikgPj4gMjApKTsKIHVuc2ln bmVkIG1pbm9yID0gKCh1bnNpZ25lZCBpbnQpICgoZGV2KSAmICgoMVUgPDwgMjApIC0gMSkpKTsK IHJldHVybiAobWlub3IgJiAweGZmKSB8IChtYWpvciA8PCA4KSB8ICgobWlub3IgJiB+MHhmZikg PDwgMTIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBkZXZfdCBuZXdfZGVjb2RlX2Rldih1MzIgZGV2KQp7CiB1bnNpZ25lZCBtYWpv ciA9IChkZXYgJiAweGZmZjAwKSA+PiA4OwogdW5zaWduZWQgbWlub3IgPSAoZGV2ICYgMHhmZikg fCAoKGRldiA+PiAxMikgJiAweGZmZjAwKTsKIHJldHVybiAoKChtYWpvcikgPDwgMjApIHwgKG1p bm9yKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHU2NCBodWdlX2VuY29kZV9kZXYoZGV2X3QgZGV2KQp7CiByZXR1cm4gbmV3X2Vu Y29kZV9kZXYoZGV2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgZGV2X3QgaHVnZV9kZWNvZGVfZGV2KHU2NCBkZXYpCnsKIHJldHVy biBuZXdfZGVjb2RlX2RldihkZXYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc3lzdl92YWxpZF9kZXYoZGV2X3QgZGV2KQp7 CiByZXR1cm4gKCh1bnNpZ25lZCBpbnQpICgoZGV2KSA+PiAyMCkpIDwgKDE8PDE0KSAmJiAoKHVu c2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8PCAyMCkgLSAxKSkpIDwgKDE8PDE4KTsKfQoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMy IHN5c3ZfZW5jb2RlX2RldihkZXZfdCBkZXYpCnsKIHJldHVybiAoKHVuc2lnbmVkIGludCkgKChk ZXYpICYgKCgxVSA8PCAyMCkgLSAxKSkpIHwgKCgodW5zaWduZWQgaW50KSAoKGRldikgPj4gMjAp KSA8PCAxOCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHVuc2lnbmVkIHN5c3ZfbWFqb3IodTMyIGRldikKewogcmV0dXJuIChkZXYg Pj4gMTgpICYgMHgzZmZmOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBzeXN2X21pbm9yKHUzMiBkZXYpCnsKIHJldHVy biBkZXYgJiAweDNmZmZmOwp9CiMgOCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIuL2lu Y2x1ZGUvbGludXgvZGNhY2hlLmgiIDEKCgoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvcmN1bGlz dC5oIiAxCiMgMzEgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0LmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgSU5JVF9MSVNUX0hF QURfUkNVKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCnsKICh7IHVuaW9uIHsgdHlwZW9mKGxpc3Qt Pm5leHQpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKGxp c3QtPm5leHQpKSAobGlzdCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihsaXN0LT5uZXh0KSwgX191 Ll9fYywgc2l6ZW9mKGxpc3QtPm5leHQpKTsgX191Ll9fdmFsOyB9KTsKICh7IHVuaW9uIHsgdHlw ZW9mKGxpc3QtPnByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICgg dHlwZW9mKGxpc3QtPnByZXYpKSAobGlzdCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihsaXN0LT5w cmV2KSwgX191Ll9fYywgc2l6ZW9mKGxpc3QtPnByZXYpKTsgX191Ll9fdmFsOyB9KTsKfQojIDc3 ICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbGlzdF9hZGRfcmN1KHN0cnVjdCBs aXN0X2hlYWQgKm5ldywKICBzdHJ1Y3QgbGlzdF9oZWFkICpwcmV2LCBzdHJ1Y3QgbGlzdF9oZWFk ICpuZXh0KQp7CiBpZiAoIV9fbGlzdF9hZGRfdmFsaWQobmV3LCBwcmV2LCBuZXh0KSkKICByZXR1 cm47CgogbmV3LT5uZXh0ID0gbmV4dDsKIG5ldy0+cHJldiA9IHByZXY7CiBkbyB7IHVpbnRwdHJf dCBfcl9hX3BfX3YgPSAodWludHB0cl90KShuZXcpOyA7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRf cChuZXcpICYmIChfcl9hX3BfX3YpID09ICh1aW50cHRyX3QpKCh2b2lkICopMCkpICh7IHVuaW9u IHsgdHlwZW9mKCgoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpIF9f dmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCgoKigoc3RydWN0 IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpKSAoKHR5cGVvZigoKigoc3RydWN0IGxp c3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25j ZV9zaXplKCYoKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSksIF9f dS5fX2MsIHNpemVvZigoKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkp KSk7IF9fdS5fX3ZhbDsgfSk7IGVsc2UgZG8geyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRp bWVfYXNzZXJ0Xzg1KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUg d29yZCBzaXplZCBzdG9yZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9m KComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVvZihj aGFyKSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkp KSkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKiko JihwcmV2KS0+bmV4dCkpKSkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBs aXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVvZihsb25nKSkpKSBfX2NvbXBp bGV0aW1lX2Fzc2VydF84NSgpOyB9IHdoaWxlICgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6 IDogOiJtZW1vcnkiKTsgKHsgdW5pb24geyB0eXBlb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAq KikoJihwcmV2KS0+bmV4dCkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFs ID0gKCB0eXBlb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkp ICgodHlwZW9mKCooKHR5cGVvZigoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4 dCkpKSkpX3JfYV9wX192KSkgKikoKHR5cGVvZigoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihw cmV2KS0+bmV4dCkpKSkpX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJigqKChz dHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSwgX191Ll9fYywgc2l6ZW9mKCom KCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpKTsgX191Ll9fdmFsOyB9 KTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogbmV4dC0+cHJldiA9IG5ldzsKfQojIDEwNSAi Li9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X2FkZF9yY3Uoc3RydWN0IGxpc3Rf aGVhZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiBfX2xpc3RfYWRkX3JjdShuZXcs IGhlYWQsIGhlYWQtPm5leHQpOwp9CiMgMTI2ICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGxpc3RfYWRkX3RhaWxfcmN1KHN0cnVjdCBsaXN0X2hlYWQgKm5ldywKICAgICBzdHJ1Y3Qg bGlzdF9oZWFkICpoZWFkKQp7CiBfX2xpc3RfYWRkX3JjdShuZXcsIGhlYWQtPnByZXYsIGhlYWQp Owp9CiMgMTU2ICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxpc3RfZGVsX3JjdShz dHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKewogX19saXN0X2RlbF9lbnRyeShlbnRyeSk7CiBlbnRy eS0+cHJldiA9ICgodm9pZCAqKSAweDEyMiArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpOwp9CiMg MTgyICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2RlbF9pbml0X3JjdShz dHJ1Y3QgaGxpc3Rfbm9kZSAqbikKewogaWYgKCFobGlzdF91bmhhc2hlZChuKSkgewogIF9faGxp c3RfZGVsKG4pOwogICh7IHVuaW9uIHsgdHlwZW9mKG4tPnBwcmV2KSBfX3ZhbDsgY2hhciBfX2Nb MV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5wcHJldikpICgoKHZvaWQgKikwKSkg fTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihuLT5wcHJl dikpOyBfX3UuX192YWw7IH0pOwogfQp9CiMgMTk4ICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGxpc3RfcmVwbGFjZV9yY3Uoc3RydWN0IGxpc3RfaGVhZCAqb2xkLAogICAgc3RydWN0 IGxpc3RfaGVhZCAqbmV3KQp7CiBuZXctPm5leHQgPSBvbGQtPm5leHQ7CiBuZXctPnByZXYgPSBv bGQtPnByZXY7CiBkbyB7IHVpbnRwdHJfdCBfcl9hX3BfX3YgPSAodWludHB0cl90KShuZXcpOyA7 IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChuZXcpICYmIChfcl9hX3BfX3YpID09ICh1aW50cHRy X3QpKCh2b2lkICopMCkpICh7IHVuaW9uIHsgdHlwZW9mKCgoKigoc3RydWN0IGxpc3RfaGVhZCAq KikoJihuZXctPnByZXYpLT5uZXh0KSkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsg Ll9fdmFsID0gKCB0eXBlb2YoKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKG5ldy0+cHJldikt Pm5leHQpKSkpKSkgKCh0eXBlb2YoKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYobmV3LT5wcmV2 KS0+bmV4dCkpKSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKCgqKChzdHJ1 Y3QgbGlzdF9oZWFkICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpKSwgX191Ll9fYywgc2l6ZW9m KCgoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSkpOyBfX3Uu X192YWw7IH0pOyBlbHNlIGRvIHsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2Vy dF8yMDModm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNp emVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXplb2YoKiYoKigo c3RydWN0IGxpc3RfaGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YoY2hh cikgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYobmV3LT5wcmV2KS0+bmV4 dCkpKSkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAq KikoJihuZXctPnByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYoKigo c3RydWN0IGxpc3RfaGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YobG9u ZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfMjAzKCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9f dm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJigqKChzdHJ1 Y3QgbGlzdF9oZWFkICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpIF9fdmFsOyBjaGFyIF9fY1sx XTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiop KCYobmV3LT5wcmV2KS0+bmV4dCkpKSkpICgodHlwZW9mKCooKHR5cGVvZigoKigoc3RydWN0IGxp c3RfaGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSlfcl9hX3BfX3YpKSAqKSgodHlwZW9m KCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpKV9yX2FfcF9f dikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihu ZXctPnByZXYpLT5uZXh0KSkpKSwgX191Ll9fYywgc2l6ZW9mKComKCooKHN0cnVjdCBsaXN0X2hl YWQgKiopKCYobmV3LT5wcmV2KS0+bmV4dCkpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgw KTsgfSB3aGlsZSAoMCk7CiBuZXctPm5leHQtPnByZXYgPSBuZXc7CiBvbGQtPnByZXYgPSAoKHZv aWQgKikgMHgxMjIgKyAoMHhkZWFkMDAwMDAwMDAwMDAwVUwpKTsKfQojIDIyNyAiLi9pbmNsdWRl L2xpbnV4L3JjdWxpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2xpc3Rfc3BsaWNlX2luaXRfcmN1KHN0cnVjdCBsaXN0 X2hlYWQgKmxpc3QsCiAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwcmV2LAogICAgICAgc3RydWN0 IGxpc3RfaGVhZCAqbmV4dCwKICAgICAgIHZvaWQgKCpzeW5jKSh2b2lkKSkKewogc3RydWN0IGxp c3RfaGVhZCAqZmlyc3QgPSBsaXN0LT5uZXh0Owogc3RydWN0IGxpc3RfaGVhZCAqbGFzdCA9IGxp c3QtPnByZXY7CgoKCgoKCgogSU5JVF9MSVNUX0hFQURfUkNVKGxpc3QpOwojIDI1MCAiLi9pbmNs dWRlL2xpbnV4L3JjdWxpc3QuaCIKIHN5bmMoKTsKIyAyNjAgIi4vaW5jbHVkZS9saW51eC9yY3Vs aXN0LmgiCiBsYXN0LT5uZXh0ID0gbmV4dDsKIGRvIHsgdWludHB0cl90IF9yX2FfcF9fdiA9ICh1 aW50cHRyX3QpKGZpcnN0KTsgOyBpZiAoX19idWlsdGluX2NvbnN0YW50X3AoZmlyc3QpICYmIChf cl9hX3BfX3YpID09ICh1aW50cHRyX3QpKCh2b2lkICopMCkpICh7IHVuaW9uIHsgdHlwZW9mKCgo Kigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCgoKigoc3RydWN0IGxpc3RfaGVhZCAq KikoJihwcmV2KS0+bmV4dCkpKSkpKSAoKHR5cGVvZigoKigoc3RydWN0IGxpc3RfaGVhZCAqKiko JihwcmV2KS0+bmV4dCkpKSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKCgq KChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSksIF9fdS5fX2MsIHNpemVv ZigoKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpKSk7IF9fdS5fX3Zh bDsgfSk7IGVsc2UgZG8geyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzI2 MSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQg c3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikpKTsgaWYgKCEoKHNpemVvZigqJigqKChzdHJ1 Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6 ZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVv ZihzaG9ydCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5l eHQpKSkpID09IHNpemVvZihpbnQpIHx8IHNpemVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoq KSgmKHByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3Nl cnRfMjYxKCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9y eSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYp LT5uZXh0KSkpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVv ZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSkgKCh0eXBlb2Yo KigodHlwZW9mKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSlfcl9h X3BfX3YpKSAqKSgodHlwZW9mKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0 KSkpKSlfcl9hX3BfX3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKComKCooKHN0cnVjdCBsaXN0 X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpLCBfX3UuX19jLCBzaXplb2YoKiYoKigoc3RydWN0 IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7CiBmaXJzdC0+cHJldiA9IHByZXY7CiBuZXh0LT5wcmV2ID0gbGFz dDsKfQojIDI3MyAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3NwbGljZV9p bml0X3JjdShzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAogICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhl YWQsCiAgICAgdm9pZCAoKnN5bmMpKHZvaWQpKQp7CiBpZiAoIWxpc3RfZW1wdHkobGlzdCkpCiAg X19saXN0X3NwbGljZV9pbml0X3JjdShsaXN0LCBoZWFkLCBoZWFkLT5uZXh0LCBzeW5jKTsKfQoj IDI4OCAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3NwbGljZV90YWlsX2lu aXRfcmN1KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCiAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk ICpoZWFkLAogICAgICAgICAgdm9pZCAoKnN5bmMpKHZvaWQpKQp7CiBpZiAoIWxpc3RfZW1wdHko bGlzdCkpCiAgX19saXN0X3NwbGljZV9pbml0X3JjdShsaXN0LCBoZWFkLT5wcmV2LCBoZWFkLCBz eW5jKTsKfQojIDQ4MyAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9kZWxf cmN1KHN0cnVjdCBobGlzdF9ub2RlICpuKQp7CiBfX2hsaXN0X2RlbChuKTsKICh7IHVuaW9uIHsg dHlwZW9mKG4tPnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAo IHR5cGVvZihuLT5wcHJldikpICgoKHZvaWQgKikgMHgxMjIgKyAoMHhkZWFkMDAwMDAwMDAwMDAw VUwpKSkgfTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihu LT5wcHJldikpOyBfX3UuX192YWw7IH0pOwp9CiMgNDk2ICIuL2luY2x1ZGUvbGludXgvcmN1bGlz dC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGhsaXN0X3JlcGxhY2VfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpvbGQsCiAgICAg c3RydWN0IGhsaXN0X25vZGUgKm5ldykKewogc3RydWN0IGhsaXN0X25vZGUgKm5leHQgPSBvbGQt Pm5leHQ7CgogbmV3LT5uZXh0ID0gbmV4dDsKICh7IHVuaW9uIHsgdHlwZW9mKG5ldy0+cHByZXYp IF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG5ldy0+cHBy ZXYpKSAob2xkLT5wcHJldikgfTsgX193cml0ZV9vbmNlX3NpemUoJihuZXctPnBwcmV2KSwgX191 Ll9fYywgc2l6ZW9mKG5ldy0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKIGRvIHsgdWludHB0cl90 IF9yX2FfcF9fdiA9ICh1aW50cHRyX3QpKG5ldyk7IDsgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9w KG5ldykgJiYgKF9yX2FfcF9fdikgPT0gKHVpbnRwdHJfdCkoKHZvaWQgKikwKSkgKHsgdW5pb24g eyB0eXBlb2YoKCooc3RydWN0IGhsaXN0X25vZGUgKiopbmV3LT5wcHJldikpIF9fdmFsOyBjaGFy IF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCgqKHN0cnVjdCBobGlzdF9ub2Rl ICoqKW5ldy0+cHByZXYpKSkgKCh0eXBlb2YoKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiluZXctPnBw cmV2KSkoX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigoKihzdHJ1Y3QgaGxpc3Rf bm9kZSAqKiluZXctPnBwcmV2KSksIF9fdS5fX2MsIHNpemVvZigoKihzdHJ1Y3QgaGxpc3Rfbm9k ZSAqKiluZXctPnBwcmV2KSkpOyBfX3UuX192YWw7IH0pOyBlbHNlIGRvIHsgZG8geyBleHRlcm4g dm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF81MDModm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJv cl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIp KSk7IGlmICghKChzaXplb2YoKiYqKHN0cnVjdCBobGlzdF9ub2RlICoqKW5ldy0+cHByZXYpID09 IHNpemVvZihjaGFyKSB8fCBzaXplb2YoKiYqKHN0cnVjdCBobGlzdF9ub2RlICoqKW5ldy0+cHBy ZXYpID09IHNpemVvZihzaG9ydCkgfHwgc2l6ZW9mKComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKilu ZXctPnBwcmV2KSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYqKHN0cnVjdCBobGlzdF9ub2Rl ICoqKW5ldy0+cHByZXYpID09IHNpemVvZihsb25nKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF81 MDMoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7 ICh7IHVuaW9uIHsgdHlwZW9mKComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiluZXctPnBwcmV2KSBf X3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqJiooc3RydWN0 IGhsaXN0X25vZGUgKiopbmV3LT5wcHJldikpICgodHlwZW9mKCooKHR5cGVvZigqKHN0cnVjdCBo bGlzdF9ub2RlICoqKW5ldy0+cHByZXYpKV9yX2FfcF9fdikpICopKCh0eXBlb2YoKihzdHJ1Y3Qg aGxpc3Rfbm9kZSAqKiluZXctPnBwcmV2KSlfcl9hX3BfX3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6 ZSgmKComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiluZXctPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9m KComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiluZXctPnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7IH0g d2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIGlmIChuZXh0KQogICh7IHVuaW9uIHsgdHlwZW9mKG5l dy0+bmV4dC0+cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICgg dHlwZW9mKG5ldy0+bmV4dC0+cHByZXYpKSAoJm5ldy0+bmV4dCkgfTsgX193cml0ZV9vbmNlX3Np emUoJihuZXctPm5leHQtPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG5ldy0+bmV4dC0+cHByZXYp KTsgX191Ll9fdmFsOyB9KTsKICh7IHVuaW9uIHsgdHlwZW9mKG9sZC0+cHByZXYpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG9sZC0+cHByZXYpKSAoKCh2 b2lkICopIDB4MTIyICsgKDB4ZGVhZDAwMDAwMDAwMDAwMFVMKSkpIH07IF9fd3JpdGVfb25jZV9z aXplKCYob2xkLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihvbGQtPnBwcmV2KSk7IF9fdS5fX3Zh bDsgfSk7Cn0KIyA1MzUgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0LmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3RfYWRk X2hlYWRfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpuLAogICAgIHN0cnVjdCBobGlzdF9oZWFkICpo KQp7CiBzdHJ1Y3QgaGxpc3Rfbm9kZSAqZmlyc3QgPSBoLT5maXJzdDsKCiBuLT5uZXh0ID0gZmly c3Q7CiAoeyB1bmlvbiB7IHR5cGVvZihuLT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+cHByZXYpKSAoJmgtPmZpcnN0KSB9OyBfX3dyaXRl X29uY2Vfc2l6ZSgmKG4tPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG4tPnBwcmV2KSk7IF9fdS5f X3ZhbDsgfSk7CiBkbyB7IHVpbnRwdHJfdCBfcl9hX3BfX3YgPSAodWludHB0cl90KShuKTsgOyBp ZiAoX19idWlsdGluX2NvbnN0YW50X3AobikgJiYgKF9yX2FfcF9fdikgPT0gKHVpbnRwdHJfdCko KHZvaWQgKikwKSkgKHsgdW5pb24geyB0eXBlb2YoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiko JihoKS0+Zmlyc3QpKSkpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAo IHR5cGVvZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkpKSkpKSAoKHR5 cGVvZigoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYoaCktPmZpcnN0KSkpKSkoX3JfYV9wX192 KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGgp LT5maXJzdCkpKSkpLCBfX3UuX19jLCBzaXplb2YoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiko JihoKS0+Zmlyc3QpKSkpKSk7IF9fdS5fX3ZhbDsgfSk7IGVsc2UgZG8geyBkbyB7IGV4dGVybiB2 b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzU0Mih2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9y X18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikp KTsgaWYgKCEoKHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihoKS0+Zmlyc3Qp KSkpID09IHNpemVvZihjaGFyKSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiop KCYoaCktPmZpcnN0KSkpKSA9PSBzaXplb2Yoc2hvcnQpIHx8IHNpemVvZigqJigqKChzdHJ1Y3Qg aGxpc3Rfbm9kZSAqKikoJihoKS0+Zmlyc3QpKSkpID09IHNpemVvZihpbnQpIHx8IHNpemVvZigq JigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihoKS0+Zmlyc3QpKSkpID09IHNpemVvZihsb25n KSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF81NDIoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192 b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7ICh7IHVuaW9uIHsgdHlwZW9mKComKCooKHN0cnVj dCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYoaCkt PmZpcnN0KSkpKSkgKCh0eXBlb2YoKigodHlwZW9mKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiko JihoKS0+Zmlyc3QpKSkpKV9yX2FfcF9fdikpICopKCh0eXBlb2YoKCooKHN0cnVjdCBobGlzdF9u b2RlICoqKSgmKGgpLT5maXJzdCkpKSkpX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUo JigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihoKS0+Zmlyc3QpKSkpLCBfX3UuX19jLCBz aXplb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYoaCktPmZpcnN0KSkpKSk7IF9fdS5f X3ZhbDsgfSk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIGlmIChmaXJzdCkKICAoeyB1bmlv biB7IHR5cGVvZihmaXJzdC0+cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5f X3ZhbCA9ICggdHlwZW9mKGZpcnN0LT5wcHJldikpICgmbi0+bmV4dCkgfTsgX193cml0ZV9vbmNl X3NpemUoJihmaXJzdC0+cHByZXYpLCBfX3UuX19jLCBzaXplb2YoZmlyc3QtPnBwcmV2KSk7IF9f dS5fX3ZhbDsgfSk7Cn0KIyA1NjYgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0LmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxp c3RfYWRkX3RhaWxfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpuLAogICAgICAgICAgc3RydWN0IGhs aXN0X2hlYWQgKmgpCnsKIHN0cnVjdCBobGlzdF9ub2RlICppLCAqbGFzdCA9ICgodm9pZCAqKTAp OwoKCiBmb3IgKGkgPSBoLT5maXJzdDsgaTsgaSA9IGktPm5leHQpCiAgbGFzdCA9IGk7CgogaWYg KGxhc3QpIHsKICBuLT5uZXh0ID0gbGFzdC0+bmV4dDsKICAoeyB1bmlvbiB7IHR5cGVvZihuLT5w cHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+ cHByZXYpKSAoJmxhc3QtPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobi0+cHByZXYpLCBf X3UuX19jLCBzaXplb2Yobi0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKICBkbyB7IHVpbnRwdHJf dCBfcl9hX3BfX3YgPSAodWludHB0cl90KShuKTsgOyBpZiAoX19idWlsdGluX2NvbnN0YW50X3Ao bikgJiYgKF9yX2FfcF9fdikgPT0gKHVpbnRwdHJfdCkoKHZvaWQgKikwKSkgKHsgdW5pb24geyB0 eXBlb2YoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4dCkpKSkpIF9fdmFs OyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCgoKigoc3RydWN0IGhs aXN0X25vZGUgKiopKCYobGFzdCktPm5leHQpKSkpKSkgKCh0eXBlb2YoKCooKHN0cnVjdCBobGlz dF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSkoX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNl X3NpemUoJigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSksIF9f dS5fX2MsIHNpemVvZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkp KSkpOyBfX3UuX192YWw7IH0pOyBlbHNlIGRvIHsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0 aW1lX2Fzc2VydF81Nzgodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2 ZSB3b3JkIHNpemVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXpl b2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYobGFzdCktPm5leHQpKSkpID09IHNpemVv ZihjaGFyKSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYobGFzdCktPm5l eHQpKSkpID09IHNpemVvZihzaG9ydCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2Rl ICoqKSgmKGxhc3QpLT5uZXh0KSkpKSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYoKigoc3Ry dWN0IGhsaXN0X25vZGUgKiopKCYobGFzdCktPm5leHQpKSkpID09IHNpemVvZihsb25nKSkpKSBf X2NvbXBpbGV0aW1lX2Fzc2VydF81NzgoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7ICh7IHVuaW9uIHsgdHlwZW9mKComKCooKHN0cnVjdCBobGlz dF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0g eyAuX192YWwgPSAoIHR5cGVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+ bmV4dCkpKSkpICgodHlwZW9mKCooKHR5cGVvZigoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYo bGFzdCktPm5leHQpKSkpKV9yX2FfcF9fdikpICopKCh0eXBlb2YoKCooKHN0cnVjdCBobGlzdF9u b2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSlfcl9hX3BfX3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6 ZSgmKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSwgX191Ll9f Yywgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSk7 IF9fdS5fX3ZhbDsgfSk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIH0gZWxzZSB7CiAgaGxp c3RfYWRkX2hlYWRfcmN1KG4sIGgpOwogfQp9CiMgNjAyICIuL2luY2x1ZGUvbGludXgvcmN1bGlz dC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGhsaXN0X2FkZF9iZWZvcmVfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpuLAogICAg IHN0cnVjdCBobGlzdF9ub2RlICpuZXh0KQp7CiAoeyB1bmlvbiB7IHR5cGVvZihuLT5wcHJldikg X192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+cHByZXYp KSAobmV4dC0+cHByZXYpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobi0+cHByZXYpLCBfX3UuX19j LCBzaXplb2Yobi0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKIG4tPm5leHQgPSBuZXh0OwogZG8g eyB1aW50cHRyX3QgX3JfYV9wX192ID0gKHVpbnRwdHJfdCkobik7IDsgaWYgKF9fYnVpbHRpbl9j b25zdGFudF9wKG4pICYmIChfcl9hX3BfX3YpID09ICh1aW50cHRyX3QpKCh2b2lkICopMCkpICh7 IHVuaW9uIHsgdHlwZW9mKCgoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKChuKS0+cHByZXYpKSkp KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigoKCooKHN0 cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSkpICgodHlwZW9mKCgqKChzdHJ1Y3Qg aGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25j ZV9zaXplKCYoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpLCBfX3Uu X19jLCBzaXplb2YoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpKTsg X191Ll9fdmFsOyB9KTsgZWxzZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9h c3NlcnRfNjA3KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29y ZCBzaXplZCBzdG9yZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKCom KCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSA9PSBzaXplb2YoY2hhcikg fHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSA9PSBz aXplb2Yoc2hvcnQpIHx8IHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5w cHJldikpKSkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2Rl ICoqKSgobiktPnBwcmV2KSkpKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3Nl cnRfNjA3KCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9y eSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5w cHJldikpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yo KiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKChuKS0+cHByZXYpKSkpKSAoKHR5cGVvZigqKCh0 eXBlb2YoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSlfcl9hX3BfX3Yp KSAqKSgodHlwZW9mKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpX3Jf YV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAq KikoKG4pLT5wcHJldikpKSksIF9fdS5fX2MsIHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9k ZSAqKikoKG4pLT5wcHJldikpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGls ZSAoMCk7CiAoeyB1bmlvbiB7IHR5cGVvZihuZXh0LT5wcHJldikgX192YWw7IGNoYXIgX19jWzFd OyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YobmV4dC0+cHByZXYpKSAoJm4tPm5leHQpIH07 IF9fd3JpdGVfb25jZV9zaXplKCYobmV4dC0+cHByZXYpLCBfX3UuX19jLCBzaXplb2YobmV4dC0+ cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKfQojIDYyOSAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3Qu aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBobGlzdF9hZGRfYmVoaW5kX3JjdShzdHJ1Y3QgaGxpc3Rfbm9kZSAqbiwKICAgICBz dHJ1Y3QgaGxpc3Rfbm9kZSAqcHJldikKewogbi0+bmV4dCA9IHByZXYtPm5leHQ7CiAoeyB1bmlv biB7IHR5cGVvZihuLT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFs ID0gKCB0eXBlb2Yobi0+cHByZXYpKSAoJnByZXYtPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXpl KCYobi0+cHByZXYpLCBfX3UuX19jLCBzaXplb2Yobi0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsK IGRvIHsgdWludHB0cl90IF9yX2FfcF9fdiA9ICh1aW50cHRyX3QpKG4pOyA7IGlmIChfX2J1aWx0 aW5fY29uc3RhbnRfcChuKSAmJiAoX3JfYV9wX192KSA9PSAodWludHB0cl90KSgodm9pZCAqKTAp KSAoeyB1bmlvbiB7IHR5cGVvZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKHByZXYpLT5u ZXh0KSkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yo KCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4dCkpKSkpKSAoKHR5cGVvZigo Kigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpKShfcl9hX3BfX3YpKSB9 OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKCgoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldikt Pm5leHQpKSkpKSwgX191Ll9fYywgc2l6ZW9mKCgoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYo cHJldiktPm5leHQpKSkpKSk7IF9fdS5fX3ZhbDsgfSk7IGVsc2UgZG8geyBkbyB7IGV4dGVybiB2 b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzYzNCh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9y X18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikp KTsgaWYgKCEoKHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4 dCkpKSkgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAq KikoJihwcmV2KS0+bmV4dCkpKSkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYoKigoc3Ry dWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVvZihpbnQpIHx8IHNp emVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4dCkpKSkgPT0gc2l6 ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzYzNCgpOyB9IHdoaWxlICgwKTsgX19h c21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgKHsgdW5pb24geyB0eXBlb2YoKiYo Kigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2Rl ICoqKSgmKHByZXYpLT5uZXh0KSkpKSkgKCh0eXBlb2YoKigodHlwZW9mKCgqKChzdHJ1Y3QgaGxp c3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4dCkpKSkpX3JfYV9wX192KSkgKikoKHR5cGVvZigoKigo c3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpKV9yX2FfcF9fdikpIH07IF9f d3JpdGVfb25jZV9zaXplKCYoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5l eHQpKSkpLCBfX3UuX19jLCBzaXplb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJl diktPm5leHQpKSkpKTsgX191Ll9fdmFsOyB9KTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwog aWYgKG4tPm5leHQpCiAgKHsgdW5pb24geyB0eXBlb2Yobi0+bmV4dC0+cHByZXYpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4tPm5leHQtPnBwcmV2KSkg KCZuLT5uZXh0KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKG4tPm5leHQtPnBwcmV2KSwgX191Ll9f Yywgc2l6ZW9mKG4tPm5leHQtPnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7Cn0KIyA4ICIuL2luY2x1 ZGUvbGludXgvZGNhY2hlLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdF9ibC5oIiAx CgoKCgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9saXN0X2JsLmgiIDEKCgoKCgojIDEgIi4vaW5j bHVkZS9saW51eC9iaXRfc3BpbmxvY2suaCIgMQojIDE2ICIuL2luY2x1ZGUvbGludXgvYml0X3Nw aW5sb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgYml0X3NwaW5fbG9jayhpbnQgYml0bnVtLCB1bnNpZ25lZCBsb25nICph ZGRyKQp7CgoKCgoKCgogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKCiB3 aGlsZSAoX19idWlsdGluX2V4cGVjdCghISh0ZXN0X2FuZF9zZXRfYml0X2xvY2soYml0bnVtLCBh ZGRyKSksIDApKSB7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICBk byB7CiAgIGNwdV9yZWxheCgpOwogIH0gd2hpbGUgKHRlc3RfYml0KGJpdG51bSwgYWRkcikpOwog IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiB9CgogKHZvaWQpMDsKfQoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IGJpdF9zcGluX3RyeWxvY2soaW50IGJpdG51bSwgdW5zaWduZWQgbG9uZyAqYWRkcikK ewogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKCiBpZiAoX19idWlsdGlu X2V4cGVjdCghISh0ZXN0X2FuZF9zZXRfYml0X2xvY2soYml0bnVtLCBhZGRyKSksIDApKSB7CiAg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICByZXR1cm4gMDsKIH0KCiAo dm9pZCkwOwogcmV0dXJuIDE7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYml0X3NwaW5fdW5sb2NrKGludCBiaXRudW0s IHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKCgoKCiBjbGVhcl9iaXRfdW5sb2NrKGJpdG51bSwgYWRk cik7CgogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICh2b2lkKTA7Cn0K CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBfX2JpdF9zcGluX3VubG9jayhpbnQgYml0bnVtLCB1bnNpZ25lZCBsb25nICph ZGRyKQp7CgoKCgogX19jbGVhcl9iaXRfdW5sb2NrKGJpdG51bSwgYWRkcik7CgogX19hc21fXyBf X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICh2b2lkKTA7Cn0KCgoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRfc3Bp bl9pc19sb2NrZWQoaW50IGJpdG51bSwgdW5zaWduZWQgbG9uZyAqYWRkcikKewoKIHJldHVybiB0 ZXN0X2JpdChiaXRudW0sIGFkZHIpOwoKCgoKCn0KIyA3ICIuL2luY2x1ZGUvbGludXgvbGlzdF9i bC5oIiAyCiMgMzQgIi4vaW5jbHVkZS9saW51eC9saXN0X2JsLmgiCnN0cnVjdCBobGlzdF9ibF9o ZWFkIHsKIHN0cnVjdCBobGlzdF9ibF9ub2RlICpmaXJzdDsKfTsKCnN0cnVjdCBobGlzdF9ibF9u b2RlIHsKIHN0cnVjdCBobGlzdF9ibF9ub2RlICpuZXh0LCAqKnBwcmV2Owp9OwoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIElO SVRfSExJU1RfQkxfTk9ERShzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqaCkKewogaC0+bmV4dCA9ICgo dm9pZCAqKTApOwogaC0+cHByZXYgPSAoKHZvaWQgKikwKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGhsaXN0X2JsX3Vu aGFzaGVkKGNvbnN0IHN0cnVjdCBobGlzdF9ibF9ub2RlICpoKQp7CiByZXR1cm4gIWgtPnBwcmV2 Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqaGxpc3RfYmxfZmlyc3Qoc3RydWN0IGhsaXN0X2Js X2hlYWQgKmgpCnsKIHJldHVybiAoc3RydWN0IGhsaXN0X2JsX25vZGUgKikKICAoKHVuc2lnbmVk IGxvbmcpaC0+Zmlyc3QgJiB+MVVMKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9ibF9zZXRfZmlyc3Qoc3RydWN0 IGhsaXN0X2JsX2hlYWQgKmgsCiAgICAgc3RydWN0IGhsaXN0X2JsX25vZGUgKm4pCnsKIGRvIHsg aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoKHVuc2lnbmVkIGxvbmcpbiAmIDFVTCksIDApKSBkbyB7 IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxu IiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFi IiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAi ICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19l bnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQu b3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L2xpc3Rf YmwuaCIpLCAiaSIgKDY2KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkp KTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2Vj dGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9w c2VjdGlvblxuXHQiIDogOiAiaSIgKDE5KSk7IH0pOyBhc20gdm9sYXRpbGUoIiIpOyBfX2J1aWx0 aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsK IGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoKCh1bnNpZ25lZCBsb25nKWgtPmZpcnN0ICYg MVVMKSAhPSAxVUwpLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIg Ii5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJc biIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJc biIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJc dC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1 Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImki ICgiaW5jbHVkZS9saW51eC9saXN0X2JsLmgiKSwgImkiICg2NyksICJpIiAoMCksICJpIiAoc2l6 ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyBkbyB7ICh7IGFzbSB2b2xhdGls ZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQudW5yZWFjaGFibGVcblx0IiAiLmxv bmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgyMCkpOyB9KTsgYXNt IHZvbGF0aWxlKCIiKTsgX19idWlsdGluX3VucmVhY2hhYmxlKCk7IH0gd2hpbGUgKDApOyB9IHdo aWxlICgwKTsgfSB3aGlsZSAoMCkKICAgICAgICAgICAgICAgICAgICAgICAgOwogaC0+Zmlyc3Qg PSAoc3RydWN0IGhsaXN0X2JsX25vZGUgKikoKHVuc2lnbmVkIGxvbmcpbiB8IDFVTCk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgaGxpc3RfYmxfZW1wdHkoY29uc3Qgc3RydWN0IGhsaXN0X2JsX2hlYWQgKmgpCnsKIHJldHVy biAhKCh1bnNpZ25lZCBsb25nKSh7IHVuaW9uIHsgdHlwZW9mKGgtPmZpcnN0KSBfX3ZhbDsgY2hh ciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKGgtPmZpcnN0KSwgX191 Ll9fYywgc2l6ZW9mKGgtPmZpcnN0KSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYo aC0+Zmlyc3QpLCBfX3UuX19jLCBzaXplb2YoaC0+Zmlyc3QpKTsgZG8geyB9IHdoaWxlICgwKTsg X191Ll9fdmFsOyB9KSAmIH4xVUwpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2JsX2FkZF9oZWFkKHN0cnVjdCBo bGlzdF9ibF9ub2RlICpuLAogICAgIHN0cnVjdCBobGlzdF9ibF9oZWFkICpoKQp7CiBzdHJ1Y3Qg aGxpc3RfYmxfbm9kZSAqZmlyc3QgPSBobGlzdF9ibF9maXJzdChoKTsKCiBuLT5uZXh0ID0gZmly c3Q7CiBpZiAoZmlyc3QpCiAgZmlyc3QtPnBwcmV2ID0gJm4tPm5leHQ7CiBuLT5wcHJldiA9ICZo LT5maXJzdDsKIGhsaXN0X2JsX3NldF9maXJzdChoLCBuKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9ibF9hZGRf YmVmb3JlKHN0cnVjdCBobGlzdF9ibF9ub2RlICpuLAogICAgICAgICAgIHN0cnVjdCBobGlzdF9i bF9ub2RlICpuZXh0KQp7CiBzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqKnBwcmV2ID0gbmV4dC0+cHBy ZXY7Cgogbi0+cHByZXYgPSBwcHJldjsKIG4tPm5leHQgPSBuZXh0OwogbmV4dC0+cHByZXYgPSAm bi0+bmV4dDsKCgogKHsgdW5pb24geyB0eXBlb2YoKnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqcHByZXYpKSAoKHN0cnVjdCBobGlzdF9ibF9u b2RlICopICgodWludHB0cl90KW4gfCAoKHVpbnRwdHJfdCkqcHByZXYgJiAxVUwpKSkgfTsgX193 cml0ZV9vbmNlX3NpemUoJigqcHByZXYpLCBfX3UuX19jLCBzaXplb2YoKnBwcmV2KSk7IF9fdS5f X3ZhbDsgfSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2JsX2FkZF9iZWhpbmQoc3RydWN0IGhsaXN0X2Js X25vZGUgKm4sCiAgICAgICAgICAgc3RydWN0IGhsaXN0X2JsX25vZGUgKnByZXYpCnsKIG4tPm5l eHQgPSBwcmV2LT5uZXh0Owogbi0+cHByZXYgPSAmcHJldi0+bmV4dDsKIHByZXYtPm5leHQgPSBu OwoKIGlmIChuLT5uZXh0KQogIG4tPm5leHQtPnBwcmV2ID0gJm4tPm5leHQ7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19o bGlzdF9ibF9kZWwoc3RydWN0IGhsaXN0X2JsX25vZGUgKm4pCnsKIHN0cnVjdCBobGlzdF9ibF9u b2RlICpuZXh0ID0gbi0+bmV4dDsKIHN0cnVjdCBobGlzdF9ibF9ub2RlICoqcHByZXYgPSBuLT5w cHJldjsKCiBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCh1bnNpZ25lZCBsb25nKW4gJiAx VUwpLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4 MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQi ICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAi LmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVj MSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6 ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVk ZS9saW51eC9saXN0X2JsLmgiKSwgImkiICgxMjApLCAiaSIgKDApLCAiaSIgKHNpemVvZihzdHJ1 Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAoeyBhc20gdm9sYXRpbGUoIiVjMDpc blx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIg LSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMjEpKTsgfSk7IGFzbSB2b2xhdGls ZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7 IH0gd2hpbGUgKDApOwoKCiAoeyB1bmlvbiB7IHR5cGVvZigqcHByZXYpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCpwcHJldikpICgoc3RydWN0IGhsaXN0 X2JsX25vZGUgKikgKCh1bnNpZ25lZCBsb25nKW5leHQgfCAoKHVuc2lnbmVkIGxvbmcpKnBwcmV2 ICYgMVVMKSkpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKnBwcmV2KSwgX191Ll9fYywgc2l6ZW9m KCpwcHJldikpOyBfX3UuX192YWw7IH0pCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOwogaWYgKG5leHQpCiAgbmV4dC0+cHByZXYgPSBwcHJldjsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBobGlzdF9ibF9kZWwoc3RydWN0IGhsaXN0X2JsX25vZGUgKm4pCnsKIF9faGxpc3RfYmxf ZGVsKG4pOwogbi0+bmV4dCA9ICgodm9pZCAqKSAweDEwMCArICgweGRlYWQwMDAwMDAwMDAwMDBV TCkpOwogbi0+cHByZXYgPSAoKHZvaWQgKikgMHgxMjIgKyAoMHhkZWFkMDAwMDAwMDAwMDAwVUwp KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBobGlzdF9ibF9kZWxfaW5pdChzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqbikKewog aWYgKCFobGlzdF9ibF91bmhhc2hlZChuKSkgewogIF9faGxpc3RfYmxfZGVsKG4pOwogIElOSVRf SExJU1RfQkxfTk9ERShuKTsKIH0KfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9ibF9sb2NrKHN0cnVjdCBobGlzdF9i bF9oZWFkICpiKQp7CiBiaXRfc3Bpbl9sb2NrKDAsICh1bnNpZ25lZCBsb25nICopYik7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgaGxpc3RfYmxfdW5sb2NrKHN0cnVjdCBobGlzdF9ibF9oZWFkICpiKQp7CiBfX2JpdF9zcGlu X3VubG9jaygwLCAodW5zaWduZWQgbG9uZyAqKWIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGhsaXN0X2JsX2lzX2xvY2tl ZChzdHJ1Y3QgaGxpc3RfYmxfaGVhZCAqYikKewogcmV0dXJuIGJpdF9zcGluX2lzX2xvY2tlZCgw LCAodW5zaWduZWQgbG9uZyAqKWIpOwp9CiMgOSAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3RfYmwu aCIgMgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgaGxpc3RfYmxfc2V0X2ZpcnN0X3JjdShzdHJ1Y3QgaGxpc3RfYmxfaGVhZCAq aCwKICAgICBzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqbikKewogZG8geyBpZiAoX19idWlsdGluX2V4 cGVjdCghISgodW5zaWduZWQgbG9uZyluICYgMVVMKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxp bmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24g X19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBi dWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1 Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJc dC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIu cG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvcmN1bGlzdF9ibC5oIiksICJpIiAo MTQpLCAiaSIgKDApLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgw KTsgZG8geyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJk LnVucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIg OiA6ICJpIiAoMjIpKTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJs ZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogZG8geyBpZiAoX19i dWlsdGluX2V4cGVjdCghISgoKHVuc2lnbmVkIGxvbmcpaC0+Zmlyc3QgJiAxVUwpICE9IDFVTCks IDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwg MHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5s b25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9u ZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAi XHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFn c1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xp bnV4L3JjdWxpc3RfYmwuaCIpLCAiaSIgKDE1KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0 IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5c dCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0g LlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDIzKSk7IH0pOyBhc20gdm9sYXRpbGUo IiIpOyBfX2J1aWx0aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9 IHdoaWxlICgwKQogICAgICAgICAgICAgICAgICAgICAgICA7CiBkbyB7IHVpbnRwdHJfdCBfcl9h X3BfX3YgPSAodWludHB0cl90KSgoc3RydWN0IGhsaXN0X2JsX25vZGUgKikoKHVuc2lnbmVkIGxv bmcpbiB8IDFVTCkpOyA7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc3RydWN0IGhsaXN0X2Js X25vZGUgKikoKHVuc2lnbmVkIGxvbmcpbiB8IDFVTCkpICYmIChfcl9hX3BfX3YpID09ICh1aW50 cHRyX3QpKCh2b2lkICopMCkpICh7IHVuaW9uIHsgdHlwZW9mKChoLT5maXJzdCkpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKChoLT5maXJzdCkpKSAoKHR5 cGVvZihoLT5maXJzdCkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKGgtPmZp cnN0KSksIF9fdS5fX2MsIHNpemVvZigoaC0+Zmlyc3QpKSk7IF9fdS5fX3ZhbDsgfSk7IGVsc2Ug ZG8geyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzE3KHZvaWQpIF9fYXR0 cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9yZXMvbG9hZHMg Zm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKComaC0+Zmlyc3QpID09IHNpemVvZihj aGFyKSB8fCBzaXplb2YoKiZoLT5maXJzdCkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiZo LT5maXJzdCkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComaC0+Zmlyc3QpID09IHNpemVvZihs b25nKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNygpOyB9IHdoaWxlICgwKTsgX19hc21fXyBf X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgKHsgdW5pb24geyB0eXBlb2YoKiZoLT5maXJz dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKiZoLT5m aXJzdCkpICgodHlwZW9mKCooKHR5cGVvZihoLT5maXJzdCkpX3JfYV9wX192KSkgKikoKHR5cGVv ZihoLT5maXJzdCkpX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJmgtPmZpcnN0 KSwgX191Ll9fYywgc2l6ZW9mKComaC0+Zmlyc3QpKTsgX191Ll9fdmFsOyB9KTsgfSB3aGlsZSAo MCk7IH0gd2hpbGUgKDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBobGlzdF9ibF9ub2RlICpobGlzdF9i bF9maXJzdF9yY3Uoc3RydWN0IGhsaXN0X2JsX2hlYWQgKmgpCnsKIHJldHVybiAoc3RydWN0IGhs aXN0X2JsX25vZGUgKikKICAoKHVuc2lnbmVkIGxvbmcpKHsgdHlwZW9mKCooaC0+Zmlyc3QpKSAq X19fX19fX19wMSA9ICh0eXBlb2YoKihoLT5maXJzdCkpICopKHsgdW5pb24geyB0eXBlb2YoKGgt PmZpcnN0KSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3Np emUoJigoaC0+Zmlyc3QpKSwgX191Ll9fYywgc2l6ZW9mKChoLT5maXJzdCkpKTsgZWxzZSBfX3Jl YWRfb25jZV9zaXplX25vY2hlY2soJigoaC0+Zmlyc3QpKSwgX191Ll9fYywgc2l6ZW9mKChoLT5m aXJzdCkpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsgZG8geyB9IHdoaWxlICgw KTsgOyAoKHR5cGVvZigqKGgtPmZpcnN0KSkgKikoX19fX19fX19wMSkpOyB9KSAmIH4xVUwpOwp9 CiMgNDYgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0X2JsLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3RfYmxfZGVsX3Jj dShzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqbikKewogX19obGlzdF9ibF9kZWwobik7CiBuLT5wcHJl diA9ICgodm9pZCAqKSAweDEyMiArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpOwp9CiMgNzEgIi4v aW5jbHVkZS9saW51eC9yY3VsaXN0X2JsLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3RfYmxfYWRkX2hlYWRfcmN1KHN0 cnVjdCBobGlzdF9ibF9ub2RlICpuLAogICAgIHN0cnVjdCBobGlzdF9ibF9oZWFkICpoKQp7CiBz dHJ1Y3QgaGxpc3RfYmxfbm9kZSAqZmlyc3Q7CgoKIGZpcnN0ID0gaGxpc3RfYmxfZmlyc3QoaCk7 Cgogbi0+bmV4dCA9IGZpcnN0OwogaWYgKGZpcnN0KQogIGZpcnN0LT5wcHJldiA9ICZuLT5uZXh0 Owogbi0+cHByZXYgPSAmaC0+Zmlyc3Q7CgoKIGhsaXN0X2JsX3NldF9maXJzdF9yY3UoaCwgbik7 Cn0KIyA5ICIuL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiIDIKCgoKCiMgMSAiLi9pbmNsdWRlL2xp bnV4L2xvY2tyZWYuaCIgMQojIDI1ICIuL2luY2x1ZGUvbGludXgvbG9ja3JlZi5oIgpzdHJ1Y3Qg bG9ja3JlZiB7CiB1bmlvbiB7CgogIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBs b2NrX2NvdW50OwoKICBzdHJ1Y3QgewogICBzcGlubG9ja190IGxvY2s7CiAgIGludCBjb3VudDsK ICB9OwogfTsKfTsKCmV4dGVybiB2b2lkIGxvY2tyZWZfZ2V0KHN0cnVjdCBsb2NrcmVmICopOwpl eHRlcm4gaW50IGxvY2tyZWZfcHV0X3JldHVybihzdHJ1Y3QgbG9ja3JlZiAqKTsKZXh0ZXJuIGlu dCBsb2NrcmVmX2dldF9ub3RfemVybyhzdHJ1Y3QgbG9ja3JlZiAqKTsKZXh0ZXJuIGludCBsb2Nr cmVmX3B1dF9ub3RfemVybyhzdHJ1Y3QgbG9ja3JlZiAqKTsKZXh0ZXJuIGludCBsb2NrcmVmX2dl dF9vcl9sb2NrKHN0cnVjdCBsb2NrcmVmICopOwpleHRlcm4gaW50IGxvY2tyZWZfcHV0X29yX2xv Y2soc3RydWN0IGxvY2tyZWYgKik7CgpleHRlcm4gdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1 Y3QgbG9ja3JlZiAqKTsKZXh0ZXJuIGludCBsb2NrcmVmX2dldF9ub3RfZGVhZChzdHJ1Y3QgbG9j a3JlZiAqKTsKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIF9fbG9ja3JlZl9pc19kZWFkKGNvbnN0IHN0cnVjdCBsb2NrcmVmICps KQp7CiByZXR1cm4gKChpbnQpbC0+Y291bnQgPCAwKTsKfQojIDE0ICIuL2luY2x1ZGUvbGludXgv ZGNhY2hlLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvc3RyaW5naGFzaC5oIiAxCgoKCgoKCiMg MSAiLi9pbmNsdWRlL2xpbnV4L2hhc2guaCIgMQoKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2dlbmVyYXRlZC91YXBpL2FzbS90eXBlcy5oIiAxCiMgNyAiLi9pbmNsdWRlL2xpbnV4L2hhc2gu aCIgMgojIDYwICIuL2luY2x1ZGUvbGludXgvaGFzaC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgX19oYXNoXzMyX2dlbmVyaWMo dTMyIHZhbCkKewogcmV0dXJuIHZhbCAqIDB4NjFDODg2NDc7Cn0KCgoKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHUzMiBoYXNoXzMyX2dl bmVyaWModTMyIHZhbCwgdW5zaWduZWQgaW50IGJpdHMpCnsKCiByZXR1cm4gX19oYXNoXzMyX2dl bmVyaWModmFsKSA+PiAoMzIgLSBiaXRzKTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB1MzIgaGFzaF82NF9nZW5lcmljKHU2NCB2YWwsIHVuc2lnbmVkIGludCBiaXRz KQp7CgoKIHJldHVybiB2YWwgKiAweDYxQzg4NjQ2ODBCNTgzRUJ1bGwgPj4gKDY0IC0gYml0cyk7 CgoKCgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB1MzIgaGFzaF9wdHIoY29uc3Qgdm9pZCAqcHRyLCB1bnNpZ25lZCBpbnQgYml0cykK ewogcmV0dXJuIGhhc2hfNjRfZ2VuZXJpYygodW5zaWduZWQgbG9uZylwdHIsIGJpdHMpOwp9CgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dTMyIGhhc2gzMl9wdHIoY29uc3Qgdm9pZCAqcHRyKQp7CiB1bnNpZ25lZCBsb25nIHZhbCA9ICh1 bnNpZ25lZCBsb25nKXB0cjsKCgogdmFsIF49ICh2YWwgPj4gMzIpOwoKIHJldHVybiAodTMyKXZh bDsKfQojIDggIi4vaW5jbHVkZS9saW51eC9zdHJpbmdoYXNoLmgiIDIKIyA0MiAiLi9pbmNsdWRl L2xpbnV4L3N0cmluZ2hhc2guaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZwpwYXJ0aWFsX25hbWVfaGFzaCh1bnNp Z25lZCBsb25nIGMsIHVuc2lnbmVkIGxvbmcgcHJldmhhc2gpCnsKIHJldHVybiAocHJldmhhc2gg KyAoYyA8PCA0KSArIChjID4+IDQpKSAqIDExOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBlbmRfbmFt ZV9oYXNoKHVuc2lnbmVkIGxvbmcgaGFzaCkKewogcmV0dXJuIGhhc2hfNjRfZ2VuZXJpYyhoYXNo LCAzMik7Cn0KIyA2NiAiLi9pbmNsdWRlL2xpbnV4L3N0cmluZ2hhc2guaCIKZXh0ZXJuIHVuc2ln bmVkIGludCBfX2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpIGZ1bGxfbmFtZV9oYXNoKGNvbnN0IHZv aWQgKnNhbHQsIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50KTsKIyA3NyAiLi9pbmNsdWRlL2xp bnV4L3N0cmluZ2hhc2guaCIKZXh0ZXJuIHU2NCBfX2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpIGhh c2hsZW5fc3RyaW5nKGNvbnN0IHZvaWQgKnNhbHQsIGNvbnN0IGNoYXIgKm5hbWUpOwojIDE1ICIu L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiIDIKCgpzdHJ1Y3QgcGF0aDsKc3RydWN0IHZmc21vdW50 OwojIDQ3ICIuL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0cnVjdCBxc3RyIHsKIHVuaW9uIHsK ICBzdHJ1Y3QgewogICB1MzIgaGFzaDsgdTMyIGxlbjsKICB9OwogIHU2NCBoYXNoX2xlbjsKIH07 CiBjb25zdCB1bnNpZ25lZCBjaGFyICpuYW1lOwp9OwoKCgpleHRlcm4gY29uc3Qgc3RydWN0IHFz dHIgZW1wdHlfbmFtZTsKZXh0ZXJuIGNvbnN0IHN0cnVjdCBxc3RyIHNsYXNoX25hbWU7CgpzdHJ1 Y3QgZGVudHJ5X3N0YXRfdCB7CiBsb25nIG5yX2RlbnRyeTsKIGxvbmcgbnJfdW51c2VkOwogbG9u ZyBhZ2VfbGltaXQ7CiBsb25nIHdhbnRfcGFnZXM7CiBsb25nIG5yX25lZ2F0aXZlOwogbG9uZyBk dW1teTsKfTsKZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3RhdF90IGRlbnRyeV9zdGF0OwojIDg5ICIu L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0cnVjdCBkZW50cnkgewoKIHVuc2lnbmVkIGludCBk X2ZsYWdzOwogc2VxY291bnRfdCBkX3NlcTsKIHN0cnVjdCBobGlzdF9ibF9ub2RlIGRfaGFzaDsK IHN0cnVjdCBkZW50cnkgKmRfcGFyZW50Owogc3RydWN0IHFzdHIgZF9uYW1lOwogc3RydWN0IGlu b2RlICpkX2lub2RlOwoKIHVuc2lnbmVkIGNoYXIgZF9pbmFtZVszMl07CgoKIHN0cnVjdCBsb2Nr cmVmIGRfbG9ja3JlZjsKIGNvbnN0IHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyAqZF9vcDsKIHN0 cnVjdCBzdXBlcl9ibG9jayAqZF9zYjsKIHVuc2lnbmVkIGxvbmcgZF90aW1lOwogdm9pZCAqZF9m c2RhdGE7CgogdW5pb24gewogIHN0cnVjdCBsaXN0X2hlYWQgZF9scnU7CiAgd2FpdF9xdWV1ZV9o ZWFkX3QgKmRfd2FpdDsKIH07CiBzdHJ1Y3QgbGlzdF9oZWFkIGRfY2hpbGQ7CiBzdHJ1Y3QgbGlz dF9oZWFkIGRfc3ViZGlyczsKCgoKIHVuaW9uIHsKICBzdHJ1Y3QgaGxpc3Rfbm9kZSBkX2FsaWFz OwogIHN0cnVjdCBobGlzdF9ibF9ub2RlIGRfaW5fbG9va3VwX2hhc2g7CiAgIHN0cnVjdCBjYWxs YmFja19oZWFkIGRfcmN1OwogfSBkX3U7Cn0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2lu aXRfXykpOwoKCgoKCgoKZW51bSBkZW50cnlfZF9sb2NrX2NsYXNzCnsKIERFTlRSWV9EX0xPQ0tf Tk9STUFMLAogREVOVFJZX0RfTE9DS19ORVNURUQKfTsKCnN0cnVjdCBkZW50cnlfb3BlcmF0aW9u cyB7CiBpbnQgKCpkX3JldmFsaWRhdGUpKHN0cnVjdCBkZW50cnkgKiwgdW5zaWduZWQgaW50KTsK IGludCAoKmRfd2Vha19yZXZhbGlkYXRlKShzdHJ1Y3QgZGVudHJ5ICosIHVuc2lnbmVkIGludCk7 CiBpbnQgKCpkX2hhc2gpKGNvbnN0IHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CiBp bnQgKCpkX2NvbXBhcmUpKGNvbnN0IHN0cnVjdCBkZW50cnkgKiwKICAgdW5zaWduZWQgaW50LCBj b25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCBxc3RyICopOwogaW50ICgqZF9kZWxldGUpKGNvbnN0 IHN0cnVjdCBkZW50cnkgKik7CiBpbnQgKCpkX2luaXQpKHN0cnVjdCBkZW50cnkgKik7CiB2b2lk ICgqZF9yZWxlYXNlKShzdHJ1Y3QgZGVudHJ5ICopOwogdm9pZCAoKmRfcHJ1bmUpKHN0cnVjdCBk ZW50cnkgKik7CiB2b2lkICgqZF9pcHV0KShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAq KTsKIGNoYXIgKigqZF9kbmFtZSkoc3RydWN0IGRlbnRyeSAqLCBjaGFyICosIGludCk7CiBzdHJ1 Y3QgdmZzbW91bnQgKigqZF9hdXRvbW91bnQpKHN0cnVjdCBwYXRoICopOwogaW50ICgqZF9tYW5h Z2UpKGNvbnN0IHN0cnVjdCBwYXRoICosIGJvb2wpOwogc3RydWN0IGRlbnRyeSAqKCpkX3JlYWwp KHN0cnVjdCBkZW50cnkgKiwgY29uc3Qgc3RydWN0IGlub2RlICopOwp9IF9fYXR0cmlidXRlX18o KF9fYWxpZ25lZF9fKCgxIDw8ICg2KSkpKSk7CiMgMjIxICIuL2luY2x1ZGUvbGludXgvZGNhY2hl LmgiCmV4dGVybiBzZXFsb2NrX3QgcmVuYW1lX2xvY2s7CgoKCgpleHRlcm4gdm9pZCBkX2luc3Rh bnRpYXRlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBkX2lu c3RhbnRpYXRlX25ldyhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0 cnVjdCBkZW50cnkgKiBkX2luc3RhbnRpYXRlX3VuaXF1ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVj dCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2luc3RhbnRpYXRlX2Fub24oc3Ry dWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIF9fZF9kcm9wKHN0cnVj dCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiB2b2lkIGRfZHJvcChzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpOwpleHRlcm4gdm9pZCBkX2RlbGV0ZShzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gdm9pZCBk X3NldF9kX29wKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3Qgc3RydWN0IGRlbnRyeV9vcGVy YXRpb25zICpvcCk7CgoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2FsbG9jKHN0cnVjdCBkZW50 cnkgKiwgY29uc3Qgc3RydWN0IHFzdHIgKik7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9hbGxv Y19hbm9uKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2Fs bG9jX3BhcmFsbGVsKHN0cnVjdCBkZW50cnkgKiwgY29uc3Qgc3RydWN0IHFzdHIgKiwKICAgICB3 YWl0X3F1ZXVlX2hlYWRfdCAqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX3NwbGljZV9hbGlh cyhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkg KiBkX2FkZF9jaShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcXN0ciAq KTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2V4YWN0X2FsaWFzKHN0cnVjdCBkZW50cnkgKiwg c3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IGRlbnRyeSAqZF9maW5kX2FueV9hbGlhcyhz dHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX29idGFpbl9hbGlh cyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9vYnRhaW5fcm9vdChz dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfc2Ioc3RydWN0IHN1cGVy X2Jsb2NrICopOwpleHRlcm4gdm9pZCBzaHJpbmtfZGNhY2hlX3BhcmVudChzdHJ1Y3QgZGVudHJ5 ICopOwpleHRlcm4gdm9pZCBzaHJpbmtfZGNhY2hlX2Zvcl91bW91bnQoc3RydWN0IHN1cGVyX2Js b2NrICopOwpleHRlcm4gdm9pZCBkX2ludmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqKTsKCgpleHRl cm4gc3RydWN0IGRlbnRyeSAqIGRfbWFrZV9yb290KHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4g dm9pZCBkX2dlbm9jaWRlKHN0cnVjdCBkZW50cnkgKik7CgpleHRlcm4gdm9pZCBkX3RtcGZpbGUo c3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CgpleHRlcm4gc3RydWN0IGRlbnRyeSAq ZF9maW5kX2FsaWFzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZF9wcnVuZV9hbGlhc2Vz KHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gaW50IHBhdGhfaGFzX3N1Ym1vdW50cyhjb25zdCBz dHJ1Y3QgcGF0aCAqKTsKCgoKCmV4dGVybiB2b2lkIGRfcmVoYXNoKHN0cnVjdCBkZW50cnkgKik7 CgpleHRlcm4gdm9pZCBkX2FkZChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsKCgpl eHRlcm4gdm9pZCBkX21vdmUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRl cm4gdm9pZCBkX2V4Y2hhbmdlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0 ZXJuIHN0cnVjdCBkZW50cnkgKmRfYW5jZXN0b3Ioc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVu dHJ5ICopOwoKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpkX2xvb2t1cChjb25zdCBzdHJ1Y3QgZGVu dHJ5ICosIGNvbnN0IHN0cnVjdCBxc3RyICopOwpleHRlcm4gc3RydWN0IGRlbnRyeSAqZF9oYXNo X2FuZF9sb29rdXAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsKZXh0ZXJuIHN0cnVj dCBkZW50cnkgKl9fZF9sb29rdXAoY29uc3Qgc3RydWN0IGRlbnRyeSAqLCBjb25zdCBzdHJ1Y3Qg cXN0ciAqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKl9fZF9sb29rdXBfcmN1KGNvbnN0IHN0cnVj dCBkZW50cnkgKnBhcmVudCwKICAgIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lLCB1bnNpZ25lZCAq c2VxKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGRfY291bnQoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiBy ZXR1cm4gZGVudHJ5LT5kX2xvY2tyZWYuY291bnQ7Cn0KCgoKCmV4dGVybiBfX2F0dHJpYnV0ZV9f KChfX2Zvcm1hdF9fKHByaW50ZiwgNCwgNSkpKQpjaGFyICpkeW5hbWljX2RuYW1lKHN0cnVjdCBk ZW50cnkgKiwgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBjaGFyICpf X2RfcGF0aChjb25zdCBzdHJ1Y3QgcGF0aCAqLCBjb25zdCBzdHJ1Y3QgcGF0aCAqLCBjaGFyICos IGludCk7CmV4dGVybiBjaGFyICpkX2Fic29sdXRlX3BhdGgoY29uc3Qgc3RydWN0IHBhdGggKiwg Y2hhciAqLCBpbnQpOwpleHRlcm4gY2hhciAqZF9wYXRoKGNvbnN0IHN0cnVjdCBwYXRoICosIGNo YXIgKiwgaW50KTsKZXh0ZXJuIGNoYXIgKmRlbnRyeV9wYXRoX3JhdyhzdHJ1Y3QgZGVudHJ5ICos IGNoYXIgKiwgaW50KTsKZXh0ZXJuIGNoYXIgKmRlbnRyeV9wYXRoKHN0cnVjdCBkZW50cnkgKiwg Y2hhciAqLCBpbnQpOwojIDMxMSAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGVu dHJ5ICpkZ2V0X2Rsb2NrKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogaWYgKGRlbnRyeSkKICBk ZW50cnktPmRfbG9ja3JlZi5jb3VudCsrOwogcmV0dXJuIGRlbnRyeTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRlbnRy eSAqZGdldChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKIGlmIChkZW50cnkpCiAgbG9ja3JlZl9n ZXQoJmRlbnRyeS0+ZF9sb2NrcmVmKTsKIHJldHVybiBkZW50cnk7Cn0KCmV4dGVybiBzdHJ1Y3Qg ZGVudHJ5ICpkZ2V0X3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwojIDMzNCAiLi9pbmNs dWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZF91bmhhc2hlZChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpk ZW50cnkpCnsKIHJldHVybiBobGlzdF9ibF91bmhhc2hlZCgmZGVudHJ5LT5kX2hhc2gpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgZF91bmxpbmtlZChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKIHJldHVybiBkX3Vu aGFzaGVkKGRlbnRyeSkgJiYgISgoZGVudHJ5KSA9PSAoZGVudHJ5KS0+ZF9wYXJlbnQpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgY2FudF9tb3VudChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKIHJldHVybiAoZGVu dHJ5LT5kX2ZsYWdzICYgMHgwMDAwMDEwMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZG9udF9tb3VudChzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkpCnsKIHNwaW5fbG9jaygmZGVudHJ5LT5kX2xvY2tyZWYubG9jayk7CiBkZW50 cnktPmRfZmxhZ3MgfD0gMHgwMDAwMDEwMDsKIHNwaW5fdW5sb2NrKCZkZW50cnktPmRfbG9ja3Jl Zi5sb2NrKTsKfQoKZXh0ZXJuIHZvaWQgX19kX2xvb2t1cF9kb25lKHN0cnVjdCBkZW50cnkgKik7 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgZF9pbl9sb29rdXAoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiByZXR1cm4g ZGVudHJ5LT5kX2ZsYWdzICYgMHgxMDAwMDAwMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkX2xvb2t1cF9kb25lKHN0cnVj dCBkZW50cnkgKmRlbnRyeSkKewogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoZF9pbl9sb29rdXAo ZGVudHJ5KSksIDApKSB7CiAgc3Bpbl9sb2NrKCZkZW50cnktPmRfbG9ja3JlZi5sb2NrKTsKICBf X2RfbG9va3VwX2RvbmUoZGVudHJ5KTsKICBzcGluX3VubG9jaygmZGVudHJ5LT5kX2xvY2tyZWYu bG9jayk7CiB9Cn0KCmV4dGVybiB2b2lkIGRwdXQoc3RydWN0IGRlbnRyeSAqKTsKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZF9t YW5hZ2VkKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIGRlbnRyeS0+ZF9m bGFncyAmICgweDAwMDEwMDAwfDB4MDAwMjAwMDB8MHgwMDA0MDAwMCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZF9tb3Vu dHBvaW50KGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIGRlbnRyeS0+ZF9m bGFncyAmIDB4MDAwMTAwMDA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIF9fZF9lbnRyeV90eXBlKGNvbnN0IHN0 cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIGRlbnRyeS0+ZF9mbGFncyAmIDB4MDA3MDAw MDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgZF9pc19taXNzKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0 dXJuIF9fZF9lbnRyeV90eXBlKGRlbnRyeSkgPT0gMHgwMDAwMDAwMDsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX3do aXRlb3V0KGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIF9fZF9lbnRyeV90 eXBlKGRlbnRyeSkgPT0gMHgwMDEwMDAwMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2Nhbl9sb29rdXAoY29uc3Qgc3Ry dWN0IGRlbnRyeSAqZGVudHJ5KQp7CiByZXR1cm4gX19kX2VudHJ5X3R5cGUoZGVudHJ5KSA9PSAw eDAwMjAwMDAwOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sIGRfaXNfYXV0b2Rpcihjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpCnsKIHJldHVybiBfX2RfZW50cnlfdHlwZShkZW50cnkpID09IDB4MDAzMDAwMDA7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgZF9pc19kaXIoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiByZXR1cm4gZF9jYW5f bG9va3VwKGRlbnRyeSkgfHwgZF9pc19hdXRvZGlyKGRlbnRyeSk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZF9pc19zeW1s aW5rKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIF9fZF9lbnRyeV90eXBl KGRlbnRyeSkgPT0gMHgwMDYwMDAwMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX3JlZyhjb25zdCBzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkpCnsKIHJldHVybiBfX2RfZW50cnlfdHlwZShkZW50cnkpID09IDB4MDA0MDAw MDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgZF9pc19zcGVjaWFsKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewog cmV0dXJuIF9fZF9lbnRyeV90eXBlKGRlbnRyeSkgPT0gMHgwMDUwMDAwMDsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lz X2ZpbGUoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiByZXR1cm4gZF9pc19yZWcoZGVu dHJ5KSB8fCBkX2lzX3NwZWNpYWwoZGVudHJ5KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX25lZ2F0aXZlKGNvbnN0 IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewoKIHJldHVybiBkX2lzX21pc3MoZGVudHJ5KTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBkX2ZsYWdzX25lZ2F0aXZlKHVuc2lnbmVkIGZsYWdzKQp7CiByZXR1cm4gKGZsYWdzICYg MHgwMDcwMDAwMCkgPT0gMHgwMDAwMDAwMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX3Bvc2l0aXZlKGNvbnN0IHN0 cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuICFkX2lzX25lZ2F0aXZlKGRlbnRyeSk7Cn0K IyA0NjggIi4vaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX3JlYWxseV9pc19uZWdhdGl2 ZShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKIHJldHVybiBkZW50cnktPmRfaW5vZGUg PT0gKCh2b2lkICopMCk7Cn0KIyA0ODYgIi4vaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBk X3JlYWxseV9pc19wb3NpdGl2ZShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKIHJldHVy biBkZW50cnktPmRfaW5vZGUgIT0gKCh2b2lkICopMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBzaW1wbGVfcG9zaXRpdmUo Y29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiByZXR1cm4gZF9yZWFsbHlfaXNfcG9zaXRp dmUoZGVudHJ5KSAmJiAhZF91bmhhc2hlZChkZW50cnkpOwp9CgpleHRlcm4gdm9pZCBkX3NldF9m YWxsdGhydShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX2ZhbGx0aHJ1KGNvbnN0 IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIGRlbnRyeS0+ZF9mbGFncyAmIDB4MDEw MDAwMDA7Cn0KCgpleHRlcm4gaW50IHN5c2N0bF92ZnNfY2FjaGVfcHJlc3N1cmU7CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25l ZCBsb25nIHZmc19wcmVzc3VyZV9yYXRpbyh1bnNpZ25lZCBsb25nIHZhbCkKewogcmV0dXJuICgg eyB0eXBlb2YodmFsKSBxdW90ID0gKHZhbCkgLyAoMTAwKTsgdHlwZW9mKHZhbCkgcmVtID0gKHZh bCkgJSAoMTAwKTsgKHF1b3QgKiAoc3lzY3RsX3Zmc19jYWNoZV9wcmVzc3VyZSkpICsgKChyZW0g KiAoc3lzY3RsX3Zmc19jYWNoZV9wcmVzc3VyZSkpIC8gKDEwMCkpOyB9ICk7Cn0KIyA1MTggIi4v aW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGlub2RlICpkX2lub2RlKGNvbnN0IHN0cnVj dCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIGRlbnRyeS0+ZF9pbm9kZTsKfQojIDUzMCAiLi9p bmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgaW5vZGUgKmRfaW5vZGVfcmN1KGNvbnN0IHN0 cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuICh7IHVuaW9uIHsgdHlwZW9mKGRlbnRyeS0+ ZF9pbm9kZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3Np emUoJihkZW50cnktPmRfaW5vZGUpLCBfX3UuX19jLCBzaXplb2YoZGVudHJ5LT5kX2lub2RlKSk7 IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoZGVudHJ5LT5kX2lub2RlKSwgX191Ll9f Yywgc2l6ZW9mKGRlbnRyeS0+ZF9pbm9kZSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7 IH0pOwp9CiMgNTQ1ICIuL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBpbm9kZSAqZF9i YWNraW5nX2lub2RlKGNvbnN0IHN0cnVjdCBkZW50cnkgKnVwcGVyKQp7CiBzdHJ1Y3QgaW5vZGUg Kmlub2RlID0gdXBwZXItPmRfaW5vZGU7CgogcmV0dXJuIGlub2RlOwp9CiMgNTYyICIuL2luY2x1 ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZW50cnkgKmRfYmFja2luZ19kZW50cnkoc3RydWN0 IGRlbnRyeSAqdXBwZXIpCnsKIHJldHVybiB1cHBlcjsKfQojIDU3NyAiLi9pbmNsdWRlL2xpbnV4 L2RjYWNoZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzdHJ1Y3QgZGVudHJ5ICpkX3JlYWwoc3RydWN0IGRlbnRyeSAqZGVudHJ5LAog ICAgICAgIGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIGlmIChfX2J1aWx0aW5fZXhwZWN0 KCEhKGRlbnRyeS0+ZF9mbGFncyAmIDB4MDQwMDAwMDApLCAwKSkKICByZXR1cm4gZGVudHJ5LT5k X29wLT5kX3JlYWwoZGVudHJ5LCBpbm9kZSk7CiBlbHNlCiAgcmV0dXJuIGRlbnRyeTsKfQojIDU5 MyAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgaW5vZGUgKmRfcmVhbF9pbm9kZShj b25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKCiByZXR1cm4gZF9iYWNraW5nX2lub2RlKGRf cmVhbCgoc3RydWN0IGRlbnRyeSAqKSBkZW50cnksICgodm9pZCAqKTApKSk7Cn0KCnN0cnVjdCBu YW1lX3NuYXBzaG90IHsKIHN0cnVjdCBxc3RyIG5hbWU7CiB1bnNpZ25lZCBjaGFyIGlubGluZV9u YW1lWzMyXTsKfTsKdm9pZCB0YWtlX2RlbnRyeV9uYW1lX3NuYXBzaG90KHN0cnVjdCBuYW1lX3Nu YXBzaG90ICosIHN0cnVjdCBkZW50cnkgKik7CnZvaWQgcmVsZWFzZV9kZW50cnlfbmFtZV9zbmFw c2hvdChzdHJ1Y3QgbmFtZV9zbmFwc2hvdCAqKTsKIyA5ICIuL2luY2x1ZGUvbGludXgvZnMuaCIg MgojIDEgIi4vaW5jbHVkZS9saW51eC9wYXRoLmgiIDEKCgoKCnN0cnVjdCBkZW50cnk7CnN0cnVj dCB2ZnNtb3VudDsKCnN0cnVjdCBwYXRoIHsKIHN0cnVjdCB2ZnNtb3VudCAqbW50Owogc3RydWN0 IGRlbnRyeSAqZGVudHJ5Owp9IF9fYXR0cmlidXRlX18oKF9fZGVzaWduYXRlZF9pbml0X18pKTsK CmV4dGVybiB2b2lkIHBhdGhfZ2V0KGNvbnN0IHN0cnVjdCBwYXRoICopOwpleHRlcm4gdm9pZCBw YXRoX3B1dChjb25zdCBzdHJ1Y3QgcGF0aCAqKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwYXRoX2VxdWFsKGNvbnN0IHN0cnVj dCBwYXRoICpwYXRoMSwgY29uc3Qgc3RydWN0IHBhdGggKnBhdGgyKQp7CiByZXR1cm4gcGF0aDEt Pm1udCA9PSBwYXRoMi0+bW50ICYmIHBhdGgxLT5kZW50cnkgPT0gcGF0aDItPmRlbnRyeTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBwYXRoX3B1dF9pbml0KHN0cnVjdCBwYXRoICpwYXRoKQp7CiBwYXRoX3B1dChwYXRoKTsK ICpwYXRoID0gKHN0cnVjdCBwYXRoKSB7IH07Cn0KIyAxMCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgi IDIKIyAxICIuL2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCgoKCgoKIyAxICIuL2FyY2gveDg2L2lu Y2x1ZGUvdWFwaS9hc20vc3RhdC5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v cG9zaXhfdHlwZXMuaCIgMQojIDYgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zdGF0Lmgi IDIKIyA4MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3N0YXQuaCIKc3RydWN0IHN0YXQg ewogX19rZXJuZWxfdWxvbmdfdCBzdF9kZXY7CiBfX2tlcm5lbF91bG9uZ190IHN0X2lubzsKIF9f a2VybmVsX3Vsb25nX3Qgc3Rfbmxpbms7CgogdW5zaWduZWQgaW50IHN0X21vZGU7CiB1bnNpZ25l ZCBpbnQgc3RfdWlkOwogdW5zaWduZWQgaW50IHN0X2dpZDsKIHVuc2lnbmVkIGludCBfX3BhZDA7 CiBfX2tlcm5lbF91bG9uZ190IHN0X3JkZXY7CiBfX2tlcm5lbF9sb25nX3Qgc3Rfc2l6ZTsKIF9f a2VybmVsX2xvbmdfdCBzdF9ibGtzaXplOwogX19rZXJuZWxfbG9uZ190IHN0X2Jsb2NrczsKCiBf X2tlcm5lbF91bG9uZ190IHN0X2F0aW1lOwogX19rZXJuZWxfdWxvbmdfdCBzdF9hdGltZV9uc2Vj OwogX19rZXJuZWxfdWxvbmdfdCBzdF9tdGltZTsKIF9fa2VybmVsX3Vsb25nX3Qgc3RfbXRpbWVf bnNlYzsKIF9fa2VybmVsX3Vsb25nX3Qgc3RfY3RpbWU7CiBfX2tlcm5lbF91bG9uZ190IHN0X2N0 aW1lX25zZWM7CiBfX2tlcm5lbF9sb25nX3QgX191bnVzZWRbM107Cn07CiMgMTE3ICIuL2FyY2gv eDg2L2luY2x1ZGUvdWFwaS9hc20vc3RhdC5oIgpzdHJ1Y3QgX19vbGRfa2VybmVsX3N0YXQgewog dW5zaWduZWQgc2hvcnQgc3RfZGV2OwogdW5zaWduZWQgc2hvcnQgc3RfaW5vOwogdW5zaWduZWQg c2hvcnQgc3RfbW9kZTsKIHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogdW5zaWduZWQgc2hvcnQg c3RfdWlkOwogdW5zaWduZWQgc2hvcnQgc3RfZ2lkOwogdW5zaWduZWQgc2hvcnQgc3RfcmRldjsK CgoKCgoKIHVuc2lnbmVkIGludCBzdF9zaXplOwogdW5zaWduZWQgaW50IHN0X2F0aW1lOwogdW5z aWduZWQgaW50IHN0X210aW1lOwogdW5zaWduZWQgaW50IHN0X2N0aW1lOwoKfTsKIyA3ICIuL2lu Y2x1ZGUvbGludXgvc3RhdC5oIiAyCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3RhdC5oIiAx CiMgNTYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3N0YXQuaCIKc3RydWN0IHN0YXR4X3RpbWVzdGFt cCB7CiBfX3M2NCB0dl9zZWM7CiBfX3UzMiB0dl9uc2VjOwogX19zMzIgX19yZXNlcnZlZDsKfTsK IyA5OSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3RhdC5oIgpzdHJ1Y3Qgc3RhdHggewoKIF9fdTMy IHN0eF9tYXNrOwogX191MzIgc3R4X2Jsa3NpemU7CiBfX3U2NCBzdHhfYXR0cmlidXRlczsKCiBf X3UzMiBzdHhfbmxpbms7CiBfX3UzMiBzdHhfdWlkOwogX191MzIgc3R4X2dpZDsKIF9fdTE2IHN0 eF9tb2RlOwogX191MTYgX19zcGFyZTBbMV07CgogX191NjQgc3R4X2lubzsKIF9fdTY0IHN0eF9z aXplOwogX191NjQgc3R4X2Jsb2NrczsKIF9fdTY0IHN0eF9hdHRyaWJ1dGVzX21hc2s7Cgogc3Ry dWN0IHN0YXR4X3RpbWVzdGFtcCBzdHhfYXRpbWU7CiBzdHJ1Y3Qgc3RhdHhfdGltZXN0YW1wIHN0 eF9idGltZTsKIHN0cnVjdCBzdGF0eF90aW1lc3RhbXAgc3R4X2N0aW1lOwogc3RydWN0IHN0YXR4 X3RpbWVzdGFtcCBzdHhfbXRpbWU7CgogX191MzIgc3R4X3JkZXZfbWFqb3I7CiBfX3UzMiBzdHhf cmRldl9taW5vcjsKIF9fdTMyIHN0eF9kZXZfbWFqb3I7CiBfX3UzMiBzdHhfZGV2X21pbm9yOwoK IF9fdTY0IF9fc3BhcmUyWzE0XTsKCn07CiMgOCAiLi9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMgoj IDIwICIuL2luY2x1ZGUvbGludXgvc3RhdC5oIgojIDEgIi4vaW5jbHVkZS9saW51eC91aWRnaWQu aCIgMQojIDE2ICIuL2luY2x1ZGUvbGludXgvdWlkZ2lkLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4 L2hpZ2h1aWQuaCIgMQojIDM1ICIuL2luY2x1ZGUvbGludXgvaGlnaHVpZC5oIgpleHRlcm4gaW50 IG92ZXJmbG93dWlkOwpleHRlcm4gaW50IG92ZXJmbG93Z2lkOwoKZXh0ZXJuIHZvaWQgX19iYWRf dWlkKHZvaWQpOwpleHRlcm4gdm9pZCBfX2JhZF9naWQodm9pZCk7CiMgODIgIi4vaW5jbHVkZS9s aW51eC9oaWdodWlkLmgiCmV4dGVybiBpbnQgZnNfb3ZlcmZsb3d1aWQ7CmV4dGVybiBpbnQgZnNf b3ZlcmZsb3dnaWQ7CiMgMTcgIi4vaW5jbHVkZS9saW51eC91aWRnaWQuaCIgMgoKc3RydWN0IHVz ZXJfbmFtZXNwYWNlOwpleHRlcm4gc3RydWN0IHVzZXJfbmFtZXNwYWNlIGluaXRfdXNlcl9uczsK CnR5cGVkZWYgc3RydWN0IHsKIHVpZF90IHZhbDsKfSBrdWlkX3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qg ewogZ2lkX3QgdmFsOwp9IGtnaWRfdDsKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1aWRfdCBfX2t1aWRfdmFsKGt1aWRfdCB1aWQp CnsKIHJldHVybiB1aWQudmFsOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBnaWRfdCBfX2tnaWRfdmFsKGtnaWRfdCBnaWQpCnsKIHJl dHVybiBnaWQudmFsOwp9CiMgNjEgIi4vaW5jbHVkZS9saW51eC91aWRnaWQuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1aWRf ZXEoa3VpZF90IGxlZnQsIGt1aWRfdCByaWdodCkKewogcmV0dXJuIF9fa3VpZF92YWwobGVmdCkg PT0gX19rdWlkX3ZhbChyaWdodCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZ2lkX2VxKGtnaWRfdCBsZWZ0LCBrZ2lkX3Qg cmlnaHQpCnsKIHJldHVybiBfX2tnaWRfdmFsKGxlZnQpID09IF9fa2dpZF92YWwocmlnaHQpOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIHVpZF9ndChrdWlkX3QgbGVmdCwga3VpZF90IHJpZ2h0KQp7CiByZXR1cm4gX19rdWlk X3ZhbChsZWZ0KSA+IF9fa3VpZF92YWwocmlnaHQpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGdpZF9ndChrZ2lkX3QgbGVm dCwga2dpZF90IHJpZ2h0KQp7CiByZXR1cm4gX19rZ2lkX3ZhbChsZWZ0KSA+IF9fa2dpZF92YWwo cmlnaHQpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIHVpZF9ndGUoa3VpZF90IGxlZnQsIGt1aWRfdCByaWdodCkKewogcmV0 dXJuIF9fa3VpZF92YWwobGVmdCkgPj0gX19rdWlkX3ZhbChyaWdodCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZ2lkX2d0 ZShrZ2lkX3QgbGVmdCwga2dpZF90IHJpZ2h0KQp7CiByZXR1cm4gX19rZ2lkX3ZhbChsZWZ0KSA+ PSBfX2tnaWRfdmFsKHJpZ2h0KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1aWRfbHQoa3VpZF90IGxlZnQsIGt1aWRfdCBy aWdodCkKewogcmV0dXJuIF9fa3VpZF92YWwobGVmdCkgPCBfX2t1aWRfdmFsKHJpZ2h0KTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBnaWRfbHQoa2dpZF90IGxlZnQsIGtnaWRfdCByaWdodCkKewogcmV0dXJuIF9fa2dpZF92 YWwobGVmdCkgPCBfX2tnaWRfdmFsKHJpZ2h0KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1aWRfbHRlKGt1aWRfdCBsZWZ0 LCBrdWlkX3QgcmlnaHQpCnsKIHJldHVybiBfX2t1aWRfdmFsKGxlZnQpIDw9IF9fa3VpZF92YWwo cmlnaHQpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIGdpZF9sdGUoa2dpZF90IGxlZnQsIGtnaWRfdCByaWdodCkKewogcmV0 dXJuIF9fa2dpZF92YWwobGVmdCkgPD0gX19rZ2lkX3ZhbChyaWdodCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdWlkX3Zh bGlkKGt1aWRfdCB1aWQpCnsKIHJldHVybiBfX2t1aWRfdmFsKHVpZCkgIT0gKHVpZF90KSAtMTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCBnaWRfdmFsaWQoa2dpZF90IGdpZCkKewogcmV0dXJuIF9fa2dpZF92YWwoZ2lkKSAh PSAoZ2lkX3QpIC0xOwp9CgoKCmV4dGVybiBrdWlkX3QgbWFrZV9rdWlkKHN0cnVjdCB1c2VyX25h bWVzcGFjZSAqZnJvbSwgdWlkX3QgdWlkKTsKZXh0ZXJuIGtnaWRfdCBtYWtlX2tnaWQoc3RydWN0 IHVzZXJfbmFtZXNwYWNlICpmcm9tLCBnaWRfdCBnaWQpOwoKZXh0ZXJuIHVpZF90IGZyb21fa3Vp ZChzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnRvLCBrdWlkX3QgdWlkKTsKZXh0ZXJuIGdpZF90IGZy b21fa2dpZChzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnRvLCBrZ2lkX3QgZ2lkKTsKZXh0ZXJuIHVp ZF90IGZyb21fa3VpZF9tdW5nZWQoc3RydWN0IHVzZXJfbmFtZXNwYWNlICp0bywga3VpZF90IHVp ZCk7CmV4dGVybiBnaWRfdCBmcm9tX2tnaWRfbXVuZ2VkKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAq dG8sIGtnaWRfdCBnaWQpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBrdWlkX2hhc19tYXBwaW5nKHN0cnVjdCB1c2VyX25hbWVz cGFjZSAqbnMsIGt1aWRfdCB1aWQpCnsKIHJldHVybiBmcm9tX2t1aWQobnMsIHVpZCkgIT0gKHVp ZF90KSAtMTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBrZ2lkX2hhc19tYXBwaW5nKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAq bnMsIGtnaWRfdCBnaWQpCnsKIHJldHVybiBmcm9tX2tnaWQobnMsIGdpZCkgIT0gKGdpZF90KSAt MTsKfQojIDIxICIuL2luY2x1ZGUvbGludXgvc3RhdC5oIiAyCgoKCnN0cnVjdCBrc3RhdCB7CiB1 MzIgcmVzdWx0X21hc2s7CiB1bW9kZV90IG1vZGU7CiB1bnNpZ25lZCBpbnQgbmxpbms7CiB1aW50 MzJfdCBibGtzaXplOwogdTY0IGF0dHJpYnV0ZXM7CiB1NjQgYXR0cmlidXRlc19tYXNrOwojIDM5 ICIuL2luY2x1ZGUvbGludXgvc3RhdC5oIgogdTY0IGlubzsKIGRldl90IGRldjsKIGRldl90IHJk ZXY7CiBrdWlkX3QgdWlkOwoga2dpZF90IGdpZDsKIGxvZmZfdCBzaXplOwogc3RydWN0IHRpbWVz cGVjNjQgYXRpbWU7CiBzdHJ1Y3QgdGltZXNwZWM2NCBtdGltZTsKIHN0cnVjdCB0aW1lc3BlYzY0 IGN0aW1lOwogc3RydWN0IHRpbWVzcGVjNjQgYnRpbWU7CiB1NjQgYmxvY2tzOwp9OwojIDExICIu L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1Lmgi IDEKIyAxMyAiLi9pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1LmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4 L3Nocmlua2VyLmgiIDEKIyAxMiAiLi9pbmNsdWRlL2xpbnV4L3Nocmlua2VyLmgiCnN0cnVjdCBz aHJpbmtfY29udHJvbCB7CiBnZnBfdCBnZnBfbWFzazsKCgogaW50IG5pZDsKCgoKCgoKIHVuc2ln bmVkIGxvbmcgbnJfdG9fc2NhbjsKCgoKCgoKIHVuc2lnbmVkIGxvbmcgbnJfc2Nhbm5lZDsKCgog c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnOwp9OwojIDYwICIuL2luY2x1ZGUvbGludXgvc2hyaW5r ZXIuaCIKc3RydWN0IHNocmlua2VyIHsKIHVuc2lnbmVkIGxvbmcgKCpjb3VudF9vYmplY3RzKShz dHJ1Y3Qgc2hyaW5rZXIgKiwKICAgICAgICAgICBzdHJ1Y3Qgc2hyaW5rX2NvbnRyb2wgKnNjKTsK IHVuc2lnbmVkIGxvbmcgKCpzY2FuX29iamVjdHMpKHN0cnVjdCBzaHJpbmtlciAqLAogICAgICAg ICAgc3RydWN0IHNocmlua19jb250cm9sICpzYyk7CgogbG9uZyBiYXRjaDsKIGludCBzZWVrczsK IHVuc2lnbmVkIGZsYWdzOwoKCiBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CgoKIGludCBpZDsKCgog YXRvbWljX2xvbmdfdCAqbnJfZGVmZXJyZWQ7Cn07CiMgOTAgIi4vaW5jbHVkZS9saW51eC9zaHJp bmtlci5oIgpleHRlcm4gaW50IHByZWFsbG9jX3Nocmlua2VyKHN0cnVjdCBzaHJpbmtlciAqc2hy aW5rZXIpOwpleHRlcm4gdm9pZCByZWdpc3Rlcl9zaHJpbmtlcl9wcmVwYXJlZChzdHJ1Y3Qgc2hy aW5rZXIgKnNocmlua2VyKTsKZXh0ZXJuIGludCByZWdpc3Rlcl9zaHJpbmtlcihzdHJ1Y3Qgc2hy aW5rZXIgKnNocmlua2VyKTsKZXh0ZXJuIHZvaWQgdW5yZWdpc3Rlcl9zaHJpbmtlcihzdHJ1Y3Qg c2hyaW5rZXIgKnNocmlua2VyKTsKZXh0ZXJuIHZvaWQgZnJlZV9wcmVhbGxvY2VkX3Nocmlua2Vy KHN0cnVjdCBzaHJpbmtlciAqc2hyaW5rZXIpOwojIDE0ICIuL2luY2x1ZGUvbGludXgvbGlzdF9s cnUuaCIgMgoKc3RydWN0IG1lbV9jZ3JvdXA7CgoKZW51bSBscnVfc3RhdHVzIHsKIExSVV9SRU1P VkVELAogTFJVX1JFTU9WRURfUkVUUlksCgogTFJVX1JPVEFURSwKIExSVV9TS0lQLAogTFJVX1JF VFJZLAoKfTsKCnN0cnVjdCBsaXN0X2xydV9vbmUgewogc3RydWN0IGxpc3RfaGVhZCBsaXN0OwoK IGxvbmcgbnJfaXRlbXM7Cn07CgpzdHJ1Y3QgbGlzdF9scnVfbWVtY2cgewogc3RydWN0IGNhbGxi YWNrX2hlYWQgcmN1OwoKIHN0cnVjdCBsaXN0X2xydV9vbmUgKmxydVswXTsKfTsKCnN0cnVjdCBs aXN0X2xydV9ub2RlIHsKCiBzcGlubG9ja190IGxvY2s7Cgogc3RydWN0IGxpc3RfbHJ1X29uZSBs cnU7CgoKIHN0cnVjdCBsaXN0X2xydV9tZW1jZyAqbWVtY2dfbHJ1czsKCiBsb25nIG5yX2l0ZW1z Owp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICg2KSkpKSk7CgpzdHJ1Y3QgbGlz dF9scnUgewogc3RydWN0IGxpc3RfbHJ1X25vZGUgKm5vZGU7Cgogc3RydWN0IGxpc3RfaGVhZCBs aXN0OwogaW50IHNocmlua2VyX2lkOwogYm9vbCBtZW1jZ19hd2FyZTsKCn07Cgp2b2lkIGxpc3Rf bHJ1X2Rlc3Ryb3koc3RydWN0IGxpc3RfbHJ1ICpscnUpOwppbnQgX19saXN0X2xydV9pbml0KHN0 cnVjdCBsaXN0X2xydSAqbHJ1LCBib29sIG1lbWNnX2F3YXJlLAogICAgICBzdHJ1Y3QgbG9ja19j bGFzc19rZXkgKmtleSwgc3RydWN0IHNocmlua2VyICpzaHJpbmtlcik7CiMgNzIgIi4vaW5jbHVk ZS9saW51eC9saXN0X2xydS5oIgppbnQgbWVtY2dfdXBkYXRlX2FsbF9saXN0X2xydXMoaW50IG51 bV9tZW1jZ3MpOwp2b2lkIG1lbWNnX2RyYWluX2FsbF9saXN0X2xydXMoaW50IHNyY19pZHgsIHN0 cnVjdCBtZW1fY2dyb3VwICpkc3RfbWVtY2cpOwojIDkxICIuL2luY2x1ZGUvbGludXgvbGlzdF9s cnUuaCIKYm9vbCBsaXN0X2xydV9hZGQoc3RydWN0IGxpc3RfbHJ1ICpscnUsIHN0cnVjdCBsaXN0 X2hlYWQgKml0ZW0pOwojIDEwNCAiLi9pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1LmgiCmJvb2wgbGlz dF9scnVfZGVsKHN0cnVjdCBsaXN0X2xydSAqbHJ1LCBzdHJ1Y3QgbGlzdF9oZWFkICppdGVtKTsK IyAxMTYgIi4vaW5jbHVkZS9saW51eC9saXN0X2xydS5oIgp1bnNpZ25lZCBsb25nIGxpc3RfbHJ1 X2NvdW50X29uZShzdHJ1Y3QgbGlzdF9scnUgKmxydSwKICAgICBpbnQgbmlkLCBzdHJ1Y3QgbWVt X2Nncm91cCAqbWVtY2cpOwp1bnNpZ25lZCBsb25nIGxpc3RfbHJ1X2NvdW50X25vZGUoc3RydWN0 IGxpc3RfbHJ1ICpscnUsIGludCBuaWQpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBsaXN0X2xydV9zaHJpbmtf Y291bnQoc3RydWN0IGxpc3RfbHJ1ICpscnUsCiAgICAgICAgc3RydWN0IHNocmlua19jb250cm9s ICpzYykKewogcmV0dXJuIGxpc3RfbHJ1X2NvdW50X29uZShscnUsIHNjLT5uaWQsIHNjLT5tZW1j Zyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGxvbmcgbGlzdF9scnVfY291bnQoc3RydWN0IGxpc3RfbHJ1ICpscnUp CnsKIGxvbmcgY291bnQgPSAwOwogaW50IG5pZDsKCiBmb3IgKCAobmlkKSA9IDA7IChuaWQpID09 IDA7IChuaWQpID0gMSkKICBjb3VudCArPSBsaXN0X2xydV9jb3VudF9ub2RlKGxydSwgbmlkKTsK CiByZXR1cm4gY291bnQ7Cn0KCnZvaWQgbGlzdF9scnVfaXNvbGF0ZShzdHJ1Y3QgbGlzdF9scnVf b25lICpsaXN0LCBzdHJ1Y3QgbGlzdF9oZWFkICppdGVtKTsKdm9pZCBsaXN0X2xydV9pc29sYXRl X21vdmUoc3RydWN0IGxpc3RfbHJ1X29uZSAqbGlzdCwgc3RydWN0IGxpc3RfaGVhZCAqaXRlbSwK ICAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCk7Cgp0eXBlZGVmIGVudW0gbHJ1X3N0YXR1cyAo Kmxpc3RfbHJ1X3dhbGtfY2IpKHN0cnVjdCBsaXN0X2hlYWQgKml0ZW0sCiAgc3RydWN0IGxpc3Rf bHJ1X29uZSAqbGlzdCwgc3BpbmxvY2tfdCAqbG9jaywgdm9pZCAqY2JfYXJnKTsKIyAxNjYgIi4v aW5jbHVkZS9saW51eC9saXN0X2xydS5oIgp1bnNpZ25lZCBsb25nIGxpc3RfbHJ1X3dhbGtfb25l KHN0cnVjdCBsaXN0X2xydSAqbHJ1LAogICAgaW50IG5pZCwgc3RydWN0IG1lbV9jZ3JvdXAgKm1l bWNnLAogICAgbGlzdF9scnVfd2Fsa19jYiBpc29sYXRlLCB2b2lkICpjYl9hcmcsCiAgICB1bnNp Z25lZCBsb25nICpucl90b193YWxrKTsKIyAxODMgIi4vaW5jbHVkZS9saW51eC9saXN0X2xydS5o Igp1bnNpZ25lZCBsb25nIGxpc3RfbHJ1X3dhbGtfb25lX2lycShzdHJ1Y3QgbGlzdF9scnUgKmxy dSwKICAgICAgICBpbnQgbmlkLCBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csCiAgICAgICAgbGlz dF9scnVfd2Fsa19jYiBpc29sYXRlLCB2b2lkICpjYl9hcmcsCiAgICAgICAgdW5zaWduZWQgbG9u ZyAqbnJfdG9fd2Fsayk7CnVuc2lnbmVkIGxvbmcgbGlzdF9scnVfd2Fsa19ub2RlKHN0cnVjdCBs aXN0X2xydSAqbHJ1LCBpbnQgbmlkLAogICAgIGxpc3RfbHJ1X3dhbGtfY2IgaXNvbGF0ZSwgdm9p ZCAqY2JfYXJnLAogICAgIHVuc2lnbmVkIGxvbmcgKm5yX3RvX3dhbGspOwoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9u ZwpsaXN0X2xydV9zaHJpbmtfd2FsayhzdHJ1Y3QgbGlzdF9scnUgKmxydSwgc3RydWN0IHNocmlu a19jb250cm9sICpzYywKICAgICAgIGxpc3RfbHJ1X3dhbGtfY2IgaXNvbGF0ZSwgdm9pZCAqY2Jf YXJnKQp7CiByZXR1cm4gbGlzdF9scnVfd2Fsa19vbmUobHJ1LCBzYy0+bmlkLCBzYy0+bWVtY2cs IGlzb2xhdGUsIGNiX2FyZywKICAgICAmc2MtPm5yX3RvX3NjYW4pOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25n Cmxpc3RfbHJ1X3Nocmlua193YWxrX2lycShzdHJ1Y3QgbGlzdF9scnUgKmxydSwgc3RydWN0IHNo cmlua19jb250cm9sICpzYywKICAgIGxpc3RfbHJ1X3dhbGtfY2IgaXNvbGF0ZSwgdm9pZCAqY2Jf YXJnKQp7CiByZXR1cm4gbGlzdF9scnVfd2Fsa19vbmVfaXJxKGxydSwgc2MtPm5pZCwgc2MtPm1l bWNnLCBpc29sYXRlLCBjYl9hcmcsCiAgICAgICAgICZzYy0+bnJfdG9fc2Nhbik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGxvbmcKbGlzdF9scnVfd2FsayhzdHJ1Y3QgbGlzdF9scnUgKmxydSwgbGlzdF9scnVfd2Fs a19jYiBpc29sYXRlLAogICAgICAgdm9pZCAqY2JfYXJnLCB1bnNpZ25lZCBsb25nIG5yX3RvX3dh bGspCnsKIGxvbmcgaXNvbGF0ZWQgPSAwOwogaW50IG5pZDsKCiBmb3IgKCAobmlkKSA9IDA7IChu aWQpID09IDA7IChuaWQpID0gMSkgewogIGlzb2xhdGVkICs9IGxpc3RfbHJ1X3dhbGtfbm9kZShs cnUsIG5pZCwgaXNvbGF0ZSwKICAgICAgICAgICAgY2JfYXJnLCAmbnJfdG9fd2Fsayk7CiAgaWYg KG5yX3RvX3dhbGsgPD0gMCkKICAgYnJlYWs7CiB9CiByZXR1cm4gaXNvbGF0ZWQ7Cn0KIyAxNCAi Li9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUu aCIgMQojIDE4ICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgojIDEgIi4vaW5jbHVkZS9s aW51eC94YXJyYXkuaCIgMQojIDE1ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCiMgMSAiLi9p bmNsdWRlL2xpbnV4L2tjb25maWcuaCIgMQojIDE2ICIuL2luY2x1ZGUvbGludXgveGFycmF5Lmgi IDIKIyA1MiAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICp4YV9ta192YWx1ZSh1bnNp Z25lZCBsb25nIHYpCnsKICh7IGludCBfX3JldF93YXJuX29uID0gISEoKGxvbmcpdiA8IDApOyBp ZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20g X19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNl Y3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIg Ilx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAi XHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5l XG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMz XG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgveGFycmF5LmgiKSwgImki ICg1NCksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1 Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVz aHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5w b3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMjQpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5f ZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CiByZXR1cm4gKHZvaWQgKikoKHYgPDwg MSkgfCAxKTsKfQojIDY1ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcg eGFfdG9fdmFsdWUoY29uc3Qgdm9pZCAqZW50cnkpCnsKIHJldHVybiAodW5zaWduZWQgbG9uZyll bnRyeSA+PiAxOwp9CiMgNzcgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4YV9pc192 YWx1ZShjb25zdCB2b2lkICplbnRyeSkKewogcmV0dXJuICh1bnNpZ25lZCBsb25nKWVudHJ5ICYg MTsKfQojIDk1ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX3RhZ19wb2ludGVy KHZvaWQgKnAsIHVuc2lnbmVkIGxvbmcgdGFnKQp7CiByZXR1cm4gKHZvaWQgKikoKHVuc2lnbmVk IGxvbmcpcCB8IHRhZyk7Cn0KIyAxMTAgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAq eGFfdW50YWdfcG9pbnRlcih2b2lkICplbnRyeSkKewogcmV0dXJuICh2b2lkICopKCh1bnNpZ25l ZCBsb25nKWVudHJ5ICYgfjNVTCk7Cn0KIyAxMjUgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dW5zaWduZWQgaW50IHhhX3BvaW50ZXJfdGFnKHZvaWQgKmVudHJ5KQp7CiByZXR1cm4gKHVuc2ln bmVkIGxvbmcpZW50cnkgJiAzVUw7Cn0KIyAxNDMgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCAqeGFfbWtfaW50ZXJuYWwodW5zaWduZWQgbG9uZyB2KQp7CiByZXR1cm4gKHZvaWQgKiko KHYgPDwgMikgfCAyKTsKfQojIDE1NSAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25l ZCBsb25nIHhhX3RvX2ludGVybmFsKGNvbnN0IHZvaWQgKmVudHJ5KQp7CiByZXR1cm4gKHVuc2ln bmVkIGxvbmcpZW50cnkgPj4gMjsKfQojIDE2NyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIHhhX2lzX2ludGVybmFsKGNvbnN0IHZvaWQgKmVudHJ5KQp7CiByZXR1cm4gKCh1bnNpZ25l ZCBsb25nKWVudHJ5ICYgMykgPT0gMjsKfQojIDE4MyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIHhhX2lzX3plcm8oY29uc3Qgdm9pZCAqZW50cnkpCnsKIHJldHVybiBfX2J1aWx0aW5f ZXhwZWN0KCEhKGVudHJ5ID09IHhhX21rX2ludGVybmFsKDI1NykpLCAwKTsKfQojIDE5OSAiLi9p bmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhX2lzX2Vycihjb25zdCB2b2lkICplbnRyeSkK ewogcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoISEoeGFfaXNfaW50ZXJuYWwoZW50cnkpICYmIGVu dHJ5ID49IHhhX21rX2ludGVybmFsKC00MDk1KSksIDApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDsKfQojIDIxNyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg eGFfZXJyKHZvaWQgKmVudHJ5KQp7CgogaWYgKHhhX2lzX2VycihlbnRyeSkpCiAgcmV0dXJuIChs b25nKWVudHJ5ID4+IDI7CiByZXR1cm4gMDsKfQojIDIzNiAiLi9pbmNsdWRlL2xpbnV4L3hhcnJh eS5oIgpzdHJ1Y3QgeGFfbGltaXQgewogdTMyIG1heDsKIHUzMiBtaW47Cn07CgoKCgoKCnR5cGVk ZWYgdW5zaWduZWQgeGFfbWFya190OwoKCgoKCgoKZW51bSB4YV9sb2NrX3R5cGUgewogWEFfTE9D S19JUlEgPSAxLAogWEFfTE9DS19CSCA9IDIsCn07CiMgMjkyICIuL2luY2x1ZGUvbGludXgveGFy cmF5LmgiCnN0cnVjdCB4YXJyYXkgewogc3BpbmxvY2tfdCB4YV9sb2NrOwoKIGdmcF90IHhhX2Zs YWdzOwogdm9pZCAqIHhhX2hlYWQ7Cn07CiMgMzQ3ICIuL2luY2x1ZGUvbGludXgveGFycmF5Lmgi CnZvaWQgKnhhX2xvYWQoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKdm9p ZCAqeGFfc3RvcmUoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4LCB2b2lkICpl bnRyeSwgZ2ZwX3QpOwp2b2lkICp4YV9lcmFzZShzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxv bmcgaW5kZXgpOwp2b2lkICp4YV9zdG9yZV9yYW5nZShzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVk IGxvbmcgZmlyc3QsIHVuc2lnbmVkIGxvbmcgbGFzdCwKICAgdm9pZCAqZW50cnksIGdmcF90KTsK Ym9vbCB4YV9nZXRfbWFyayhzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgsIHhh X21hcmtfdCk7CnZvaWQgeGFfc2V0X21hcmsoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25n IGluZGV4LCB4YV9tYXJrX3QpOwp2b2lkIHhhX2NsZWFyX21hcmsoc3RydWN0IHhhcnJheSAqLCB1 bnNpZ25lZCBsb25nIGluZGV4LCB4YV9tYXJrX3QpOwp2b2lkICp4YV9maW5kKHN0cnVjdCB4YXJy YXkgKnhhLCB1bnNpZ25lZCBsb25nICppbmRleCwKICB1bnNpZ25lZCBsb25nIG1heCwgeGFfbWFy a190KSBfX2F0dHJpYnV0ZV9fKChub25udWxsKDIpKSk7CnZvaWQgKnhhX2ZpbmRfYWZ0ZXIoc3Ry dWN0IHhhcnJheSAqeGEsIHVuc2lnbmVkIGxvbmcgKmluZGV4LAogIHVuc2lnbmVkIGxvbmcgbWF4 LCB4YV9tYXJrX3QpIF9fYXR0cmlidXRlX18oKG5vbm51bGwoMikpKTsKdW5zaWduZWQgaW50IHhh X2V4dHJhY3Qoc3RydWN0IHhhcnJheSAqLCB2b2lkICoqZHN0LCB1bnNpZ25lZCBsb25nIHN0YXJ0 LAogIHVuc2lnbmVkIGxvbmcgbWF4LCB1bnNpZ25lZCBpbnQgbiwgeGFfbWFya190KTsKdm9pZCB4 YV9kZXN0cm95KHN0cnVjdCB4YXJyYXkgKik7CiMgMzc0ICIuL2luY2x1ZGUvbGludXgveGFycmF5 LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgeGFfaW5pdF9mbGFncyhzdHJ1Y3QgeGFycmF5ICp4YSwgZ2ZwX3QgZmxhZ3MpCnsK IGRvIHsgc3BpbmxvY2tfY2hlY2soJnhhLT54YV9sb2NrKTsgZG8geyAqKCYoJnhhLT54YV9sb2Nr KS0+cmxvY2spID0gKHJhd19zcGlubG9ja190KSB7IC5yYXdfbG9jayA9IHsgeyAudmFsID0geyAo MCkgfSB9IH0sIH07IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIHhhLT54YV9mbGFncyA9IGZs YWdzOwogeGEtPnhhX2hlYWQgPSAoKHZvaWQgKikwKTsKfQojIDM4OSAiLi9pbmNsdWRlL2xpbnV4 L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHhhX2luaXQoc3RydWN0IHhhcnJheSAqeGEpCnsKIHhhX2luaXRfZmxh Z3MoeGEsIDApOwp9CiMgNDAxICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgeGFfZW1w dHkoY29uc3Qgc3RydWN0IHhhcnJheSAqeGEpCnsKIHJldHVybiB4YS0+eGFfaGVhZCA9PSAoKHZv aWQgKikwKTsKfQojIDQxNCAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhX21hcmtl ZChjb25zdCBzdHJ1Y3QgeGFycmF5ICp4YSwgeGFfbWFya190IG1hcmspCnsKIHJldHVybiB4YS0+ eGFfZmxhZ3MgJiAoKCBnZnBfdCkoKDFVIDw8ICgyMyArIDApKSA8PCAoIHVuc2lnbmVkKShtYXJr KSkpOwp9CiMgNTU0ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnZvaWQgKl9feGFfZXJhc2Uo c3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKdm9pZCAqX194YV9zdG9yZShz dHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgsIHZvaWQgKmVudHJ5LCBnZnBfdCk7 CnZvaWQgKl9feGFfY21weGNoZyhzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgs IHZvaWQgKm9sZCwKICB2b2lkICplbnRyeSwgZ2ZwX3QpOwppbnQgX19hdHRyaWJ1dGVfXygoX193 YXJuX3VudXNlZF9yZXN1bHRfXykpIF9feGFfaW5zZXJ0KHN0cnVjdCB4YXJyYXkgKiwgdW5zaWdu ZWQgbG9uZyBpbmRleCwKICB2b2lkICplbnRyeSwgZ2ZwX3QpOwppbnQgX19hdHRyaWJ1dGVfXygo X193YXJuX3VudXNlZF9yZXN1bHRfXykpIF9feGFfYWxsb2Moc3RydWN0IHhhcnJheSAqLCB1MzIg KmlkLCB2b2lkICplbnRyeSwKICBzdHJ1Y3QgeGFfbGltaXQsIGdmcF90KTsKaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBfX3hhX2FsbG9jX2N5Y2xpYyhzdHJ1Y3Qg eGFycmF5ICosIHUzMiAqaWQsIHZvaWQgKmVudHJ5LAogIHN0cnVjdCB4YV9saW1pdCwgdTMyICpu ZXh0LCBnZnBfdCk7CnZvaWQgX194YV9zZXRfbWFyayhzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVk IGxvbmcgaW5kZXgsIHhhX21hcmtfdCk7CnZvaWQgX194YV9jbGVhcl9tYXJrKHN0cnVjdCB4YXJy YXkgKiwgdW5zaWduZWQgbG9uZyBpbmRleCwgeGFfbWFya190KTsKIyA1ODEgIi4vaW5jbHVkZS9s aW51eC94YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFfc3RvcmVfYmgoc3RydWN0IHhhcnJheSAqeGEsIHVuc2ln bmVkIGxvbmcgaW5kZXgsCiAgdm9pZCAqZW50cnksIGdmcF90IGdmcCkKewogdm9pZCAqY3VycjsK CiBzcGluX2xvY2tfYmgoJih4YSktPnhhX2xvY2spOwogY3VyciA9IF9feGFfc3RvcmUoeGEsIGlu ZGV4LCBlbnRyeSwgZ2ZwKTsKIHNwaW5fdW5sb2NrX2JoKCYoeGEpLT54YV9sb2NrKTsKCiByZXR1 cm4gY3VycjsKfQojIDYwNyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICp4YV9zdG9y ZV9pcnEoc3RydWN0IHhhcnJheSAqeGEsIHVuc2lnbmVkIGxvbmcgaW5kZXgsCiAgdm9pZCAqZW50 cnksIGdmcF90IGdmcCkKewogdm9pZCAqY3VycjsKCiBzcGluX2xvY2tfaXJxKCYoeGEpLT54YV9s b2NrKTsKIGN1cnIgPSBfX3hhX3N0b3JlKHhhLCBpbmRleCwgZW50cnksIGdmcCk7CiBzcGluX3Vu bG9ja19pcnEoJih4YSktPnhhX2xvY2spOwoKIHJldHVybiBjdXJyOwp9CiMgNjMyICIuL2luY2x1 ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX2VyYXNlX2JoKHN0cnVjdCB4YXJyYXkgKnhhLCB1 bnNpZ25lZCBsb25nIGluZGV4KQp7CiB2b2lkICplbnRyeTsKCiBzcGluX2xvY2tfYmgoJih4YSkt PnhhX2xvY2spOwogZW50cnkgPSBfX3hhX2VyYXNlKHhhLCBpbmRleCk7CiBzcGluX3VubG9ja19i aCgmKHhhKS0+eGFfbG9jayk7CgogcmV0dXJuIGVudHJ5Owp9CiMgNjU2ICIuL2luY2x1ZGUvbGlu dXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgKnhhX2VyYXNlX2lycShzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWdu ZWQgbG9uZyBpbmRleCkKewogdm9pZCAqZW50cnk7Cgogc3Bpbl9sb2NrX2lycSgmKHhhKS0+eGFf bG9jayk7CiBlbnRyeSA9IF9feGFfZXJhc2UoeGEsIGluZGV4KTsKIHNwaW5fdW5sb2NrX2lycSgm KHhhKS0+eGFfbG9jayk7CgogcmV0dXJuIGVudHJ5Owp9CiMgNjgyICIuL2luY2x1ZGUvbGludXgv eGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgKnhhX2NtcHhjaGcoc3RydWN0IHhhcnJheSAqeGEsIHVuc2lnbmVkIGxv bmcgaW5kZXgsCiAgIHZvaWQgKm9sZCwgdm9pZCAqZW50cnksIGdmcF90IGdmcCkKewogdm9pZCAq Y3VycjsKCiBzcGluX2xvY2soJih4YSktPnhhX2xvY2spOwogY3VyciA9IF9feGFfY21weGNoZyh4 YSwgaW5kZXgsIG9sZCwgZW50cnksIGdmcCk7CiBzcGluX3VubG9jaygmKHhhKS0+eGFfbG9jayk7 CgogcmV0dXJuIGN1cnI7Cn0KIyA3MDkgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAq eGFfY21weGNoZ19iaChzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCwKICAg dm9pZCAqb2xkLCB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQp7CiB2b2lkICpjdXJyOwoKIHNwaW5f bG9ja19iaCgmKHhhKS0+eGFfbG9jayk7CiBjdXJyID0gX194YV9jbXB4Y2hnKHhhLCBpbmRleCwg b2xkLCBlbnRyeSwgZ2ZwKTsKIHNwaW5fdW5sb2NrX2JoKCYoeGEpLT54YV9sb2NrKTsKCiByZXR1 cm4gY3VycjsKfQojIDczNiAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICp4YV9jbXB4 Y2hnX2lycShzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCwKICAgdm9pZCAq b2xkLCB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQp7CiB2b2lkICpjdXJyOwoKIHNwaW5fbG9ja19p cnEoJih4YSktPnhhX2xvY2spOwogY3VyciA9IF9feGFfY21weGNoZyh4YSwgaW5kZXgsIG9sZCwg ZW50cnksIGdmcCk7CiBzcGluX3VubG9ja19pcnEoJih4YSktPnhhX2xvY2spOwoKIHJldHVybiBj dXJyOwp9CiMgNzY1ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9f KChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgeGFfaW5zZXJ0KHN0cnVjdCB4YXJyYXkgKnhhLAog IHVuc2lnbmVkIGxvbmcgaW5kZXgsIHZvaWQgKmVudHJ5LCBnZnBfdCBnZnApCnsKIGludCBlcnI7 Cgogc3Bpbl9sb2NrKCYoeGEpLT54YV9sb2NrKTsKIGVyciA9IF9feGFfaW5zZXJ0KHhhLCBpbmRl eCwgZW50cnksIGdmcCk7CiBzcGluX3VubG9jaygmKHhhKS0+eGFfbG9jayk7CgogcmV0dXJuIGVy cjsKfQojIDc5NCAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygo X193YXJuX3VudXNlZF9yZXN1bHRfXykpIHhhX2luc2VydF9iaChzdHJ1Y3QgeGFycmF5ICp4YSwK ICB1bnNpZ25lZCBsb25nIGluZGV4LCB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQp7CiBpbnQgZXJy OwoKIHNwaW5fbG9ja19iaCgmKHhhKS0+eGFfbG9jayk7CiBlcnIgPSBfX3hhX2luc2VydCh4YSwg aW5kZXgsIGVudHJ5LCBnZnApOwogc3Bpbl91bmxvY2tfYmgoJih4YSktPnhhX2xvY2spOwoKIHJl dHVybiBlcnI7Cn0KIyA4MjMgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSB4YV9pbnNlcnRfaXJxKHN0cnVjdCB4YXJy YXkgKnhhLAogIHVuc2lnbmVkIGxvbmcgaW5kZXgsIHZvaWQgKmVudHJ5LCBnZnBfdCBnZnApCnsK IGludCBlcnI7Cgogc3Bpbl9sb2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CiBlcnIgPSBfX3hhX2lu c2VydCh4YSwgaW5kZXgsIGVudHJ5LCBnZnApOwogc3Bpbl91bmxvY2tfaXJxKCYoeGEpLT54YV9s b2NrKTsKCiByZXR1cm4gZXJyOwp9CiMgODUyICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBpbnQgeGFfYWxsb2Moc3RydWN0 IHhhcnJheSAqeGEsIHUzMiAqaWQsCiAgdm9pZCAqZW50cnksIHN0cnVjdCB4YV9saW1pdCBsaW1p dCwgZ2ZwX3QgZ2ZwKQp7CiBpbnQgZXJyOwoKIHNwaW5fbG9jaygmKHhhKS0+eGFfbG9jayk7CiBl cnIgPSBfX3hhX2FsbG9jKHhhLCBpZCwgZW50cnksIGxpbWl0LCBnZnApOwogc3Bpbl91bmxvY2so Jih4YSktPnhhX2xvY2spOwoKIHJldHVybiBlcnI7Cn0KIyA4ODEgIi4vaW5jbHVkZS9saW51eC94 YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSB4YV9h bGxvY19iaChzdHJ1Y3QgeGFycmF5ICp4YSwgdTMyICppZCwKICB2b2lkICplbnRyeSwgc3RydWN0 IHhhX2xpbWl0IGxpbWl0LCBnZnBfdCBnZnApCnsKIGludCBlcnI7Cgogc3Bpbl9sb2NrX2JoKCYo eGEpLT54YV9sb2NrKTsKIGVyciA9IF9feGFfYWxsb2MoeGEsIGlkLCBlbnRyeSwgbGltaXQsIGdm cCk7CiBzcGluX3VubG9ja19iaCgmKHhhKS0+eGFfbG9jayk7CgogcmV0dXJuIGVycjsKfQojIDkx MCAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIHhhX2FsbG9jX2lycShzdHJ1Y3QgeGFycmF5ICp4YSwgdTMyICppZCwK ICB2b2lkICplbnRyeSwgc3RydWN0IHhhX2xpbWl0IGxpbWl0LCBnZnBfdCBnZnApCnsKIGludCBl cnI7Cgogc3Bpbl9sb2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CiBlcnIgPSBfX3hhX2FsbG9jKHhh LCBpZCwgZW50cnksIGxpbWl0LCBnZnApOwogc3Bpbl91bmxvY2tfaXJxKCYoeGEpLT54YV9sb2Nr KTsKCiByZXR1cm4gZXJyOwp9CiMgOTQzICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB4 YV9hbGxvY19jeWNsaWMoc3RydWN0IHhhcnJheSAqeGEsIHUzMiAqaWQsIHZvaWQgKmVudHJ5LAog IHN0cnVjdCB4YV9saW1pdCBsaW1pdCwgdTMyICpuZXh0LCBnZnBfdCBnZnApCnsKIGludCBlcnI7 Cgogc3Bpbl9sb2NrKCYoeGEpLT54YV9sb2NrKTsKIGVyciA9IF9feGFfYWxsb2NfY3ljbGljKHhh LCBpZCwgZW50cnksIGxpbWl0LCBuZXh0LCBnZnApOwogc3Bpbl91bmxvY2soJih4YSktPnhhX2xv Y2spOwoKIHJldHVybiBlcnI7Cn0KIyA5NzYgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50 IHhhX2FsbG9jX2N5Y2xpY19iaChzdHJ1Y3QgeGFycmF5ICp4YSwgdTMyICppZCwgdm9pZCAqZW50 cnksCiAgc3RydWN0IHhhX2xpbWl0IGxpbWl0LCB1MzIgKm5leHQsIGdmcF90IGdmcCkKewogaW50 IGVycjsKCiBzcGluX2xvY2tfYmgoJih4YSktPnhhX2xvY2spOwogZXJyID0gX194YV9hbGxvY19j eWNsaWMoeGEsIGlkLCBlbnRyeSwgbGltaXQsIG5leHQsIGdmcCk7CiBzcGluX3VubG9ja19iaCgm KHhhKS0+eGFfbG9jayk7CgogcmV0dXJuIGVycjsKfQojIDEwMDkgIi4vaW5jbHVkZS9saW51eC94 YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IHhhX2FsbG9jX2N5Y2xpY19pcnEoc3RydWN0IHhhcnJheSAqeGEsIHUzMiAq aWQsIHZvaWQgKmVudHJ5LAogIHN0cnVjdCB4YV9saW1pdCBsaW1pdCwgdTMyICpuZXh0LCBnZnBf dCBnZnApCnsKIGludCBlcnI7Cgogc3Bpbl9sb2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CiBlcnIg PSBfX3hhX2FsbG9jX2N5Y2xpYyh4YSwgaWQsIGVudHJ5LCBsaW1pdCwgbmV4dCwgZ2ZwKTsKIHNw aW5fdW5sb2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CgogcmV0dXJuIGVycjsKfQojIDEwMzkgIi4v aW5jbHVkZS9saW51eC94YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1 bHRfXykpCmludCB4YV9yZXNlcnZlKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGlu ZGV4LCBnZnBfdCBnZnApCnsKIHJldHVybiB4YV9lcnIoeGFfY21weGNoZyh4YSwgaW5kZXgsICgo dm9pZCAqKTApLCB4YV9ta19pbnRlcm5hbCgyNTcpLCBnZnApKTsKfQojIDEwNTcgIi4vaW5jbHVk ZS9saW51eC94YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp CmludCB4YV9yZXNlcnZlX2JoKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGluZGV4 LCBnZnBfdCBnZnApCnsKIHJldHVybiB4YV9lcnIoeGFfY21weGNoZ19iaCh4YSwgaW5kZXgsICgo dm9pZCAqKTApLCB4YV9ta19pbnRlcm5hbCgyNTcpLCBnZnApKTsKfQojIDEwNzUgIi4vaW5jbHVk ZS9saW51eC94YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp CmludCB4YV9yZXNlcnZlX2lycShzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRl eCwgZ2ZwX3QgZ2ZwKQp7CiByZXR1cm4geGFfZXJyKHhhX2NtcHhjaGdfaXJxKHhhLCBpbmRleCwg KCh2b2lkICopMCksIHhhX21rX2ludGVybmFsKDI1NyksIGdmcCkpOwp9CiMgMTA5MCAiLi9pbmNs dWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHhhX3JlbGVhc2Uoc3RydWN0IHhhcnJheSAqeGEsIHVu c2lnbmVkIGxvbmcgaW5kZXgpCnsKIHhhX2NtcHhjaGcoeGEsIGluZGV4LCB4YV9ta19pbnRlcm5h bCgyNTcpLCAoKHZvaWQgKikwKSwgMCk7Cn0KIyAxMTIyICIuL2luY2x1ZGUvbGludXgveGFycmF5 LmgiCnN0cnVjdCB4YV9ub2RlIHsKIHVuc2lnbmVkIGNoYXIgc2hpZnQ7CiB1bnNpZ25lZCBjaGFy IG9mZnNldDsKIHVuc2lnbmVkIGNoYXIgY291bnQ7CiB1bnNpZ25lZCBjaGFyIG5yX3ZhbHVlczsK IHN0cnVjdCB4YV9ub2RlICpwYXJlbnQ7CiBzdHJ1Y3QgeGFycmF5ICphcnJheTsKIHVuaW9uIHsK ICBzdHJ1Y3QgbGlzdF9oZWFkIHByaXZhdGVfbGlzdDsKICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCBj YWxsYmFja19oZWFkOwogfTsKIHZvaWQgKnNsb3RzWygxVUwgPDwgKDAgPyA0IDogNikpXTsKIHVu aW9uIHsKICB1bnNpZ25lZCBsb25nIHRhZ3NbM11bKCgoKDFVTCA8PCAoMCA/IDQgOiA2KSkpICsg KDY0KSAtIDEpIC8gKDY0KSldOwogIHVuc2lnbmVkIGxvbmcgbWFya3NbM11bKCgoKDFVTCA8PCAo MCA/IDQgOiA2KSkpICsgKDY0KSAtIDEpIC8gKDY0KSldOwogfTsKfTsKCnZvaWQgeGFfZHVtcChj b25zdCBzdHJ1Y3QgeGFycmF5ICopOwp2b2lkIHhhX2R1bXBfbm9kZShjb25zdCBzdHJ1Y3QgeGFf bm9kZSAqKTsKIyAxMTYyICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX2hlYWQo Y29uc3Qgc3RydWN0IHhhcnJheSAqeGEpCnsKIHJldHVybiAoeyB0eXBlb2YoKih4YS0+eGFfaGVh ZCkpICpfX19fX19fX3AxID0gKHR5cGVvZigqKHhhLT54YV9oZWFkKSkgKikoeyB1bmlvbiB7IHR5 cGVvZigoeGEtPnhhX2hlYWQpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19y ZWFkX29uY2Vfc2l6ZSgmKCh4YS0+eGFfaGVhZCkpLCBfX3UuX19jLCBzaXplb2YoKHhhLT54YV9o ZWFkKSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKCh4YS0+eGFfaGVhZCkpLCBf X3UuX19jLCBzaXplb2YoKHhhLT54YV9oZWFkKSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192 YWw7IH0pOyBkbyB7IH0gd2hpbGUgKDApOyA7ICgodHlwZW9mKCooeGEtPnhhX2hlYWQpKSAqKShf X19fX19fX3AxKSk7IH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgKnhhX2hlYWRfbG9ja2VkKGNvbnN0IHN0cnVjdCB4YXJyYXkgKnhhKQp7CiByZXR1cm4g KHsgZG8geyB9IHdoaWxlICgwKTsgOyAoKHR5cGVvZigqKHhhLT54YV9oZWFkKSkgKikoKHhhLT54 YV9oZWFkKSkpOyB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cn0KCgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkICp4YV9lbnRyeShjb25zdCBzdHJ1Y3QgeGFycmF5ICp4YSwKICAgIGNvbnN0IHN0cnVjdCB4 YV9ub2RlICpub2RlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQp7CiBkbyB7IH0gd2hpbGUgKDApOwog cmV0dXJuICh7IHR5cGVvZigqKG5vZGUtPnNsb3RzW29mZnNldF0pKSAqX19fX19fX19wMSA9ICh0 eXBlb2YoKihub2RlLT5zbG90c1tvZmZzZXRdKSkgKikoeyB1bmlvbiB7IHR5cGVvZigobm9kZS0+ c2xvdHNbb2Zmc2V0XSkpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRf b25jZV9zaXplKCYoKG5vZGUtPnNsb3RzW29mZnNldF0pKSwgX191Ll9fYywgc2l6ZW9mKChub2Rl LT5zbG90c1tvZmZzZXRdKSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKChub2Rl LT5zbG90c1tvZmZzZXRdKSksIF9fdS5fX2MsIHNpemVvZigobm9kZS0+c2xvdHNbb2Zmc2V0XSkp KTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsgZG8geyB9IHdoaWxlICgwKTsgOyAo KHR5cGVvZigqKG5vZGUtPnNsb3RzW29mZnNldF0pKSAqKShfX19fX19fX3AxKSk7IH0pCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX2VudHJ5X2xvY2tl ZChjb25zdCBzdHJ1Y3QgeGFycmF5ICp4YSwKICAgIGNvbnN0IHN0cnVjdCB4YV9ub2RlICpub2Rl LCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQp7CiBkbyB7IH0gd2hpbGUgKDApOwogcmV0dXJuICh7IGRv IHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBlb2YoKihub2RlLT5zbG90c1tvZmZzZXRdKSkgKikoKG5v ZGUtPnNsb3RzW29mZnNldF0pKSk7IH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHN0cnVjdCB4YV9ub2RlICp4YV9wYXJlbnQoY29uc3Qgc3RydWN0IHhhcnJheSAq eGEsCiAgICAgY29uc3Qgc3RydWN0IHhhX25vZGUgKm5vZGUpCnsKIHJldHVybiAoeyB0eXBlb2Yo Kihub2RlLT5wYXJlbnQpKSAqX19fX19fX19wMSA9ICh0eXBlb2YoKihub2RlLT5wYXJlbnQpKSAq KSh7IHVuaW9uIHsgdHlwZW9mKChub2RlLT5wYXJlbnQpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0g X191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKChub2RlLT5wYXJlbnQpKSwgX191Ll9fYywg c2l6ZW9mKChub2RlLT5wYXJlbnQpKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYo KG5vZGUtPnBhcmVudCkpLCBfX3UuX19jLCBzaXplb2YoKG5vZGUtPnBhcmVudCkpKTsgZG8geyB9 IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsgZG8geyB9IHdoaWxlICgwKTsgOyAoKHR5cGVvZigq KG5vZGUtPnBhcmVudCkpICopKF9fX19fX19fcDEpKTsgfSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHhhX25vZGUgKnhhX3BhcmVudF9sb2NrZWQoY29u c3Qgc3RydWN0IHhhcnJheSAqeGEsCiAgICAgY29uc3Qgc3RydWN0IHhhX25vZGUgKm5vZGUpCnsK IHJldHVybiAoeyBkbyB7IH0gd2hpbGUgKDApOyA7ICgodHlwZW9mKCoobm9kZS0+cGFyZW50KSkg KikoKG5vZGUtPnBhcmVudCkpKTsgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCAqeGFfbWtfbm9kZShjb25zdCBzdHJ1Y3QgeGFfbm9kZSAqbm9kZSkKewog cmV0dXJuICh2b2lkICopKCh1bnNpZ25lZCBsb25nKW5vZGUgfCAyKTsKfQoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB4YV9u b2RlICp4YV90b19ub2RlKGNvbnN0IHZvaWQgKmVudHJ5KQp7CiByZXR1cm4gKHN0cnVjdCB4YV9u b2RlICopKCh1bnNpZ25lZCBsb25nKWVudHJ5IC0gMik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhX2lzX25vZGUoY29u c3Qgdm9pZCAqZW50cnkpCnsKIHJldHVybiB4YV9pc19pbnRlcm5hbChlbnRyeSkgJiYgKHVuc2ln bmVkIGxvbmcpZW50cnkgPiA0MDk2Owp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFfbWtfc2libGluZyh1bnNpZ25lZCBp bnQgb2Zmc2V0KQp7CiByZXR1cm4geGFfbWtfaW50ZXJuYWwob2Zmc2V0KTsKfQoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVk IGxvbmcgeGFfdG9fc2libGluZyhjb25zdCB2b2lkICplbnRyeSkKewogcmV0dXJuIHhhX3RvX2lu dGVybmFsKGVudHJ5KTsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4YV9pc19zaWJsaW5nKGNvbnN0IHZvaWQgKmVu dHJ5KQp7CiByZXR1cm4gMSAmJiB4YV9pc19pbnRlcm5hbChlbnRyeSkgJiYKICAoZW50cnkgPCB4 YV9ta19zaWJsaW5nKCgxVUwgPDwgKDAgPyA0IDogNikpIC0gMSkpOwp9CiMgMTI1OSAiLi9pbmNs dWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhX2lzX3JldHJ5KGNvbnN0IHZvaWQgKmVudHJ5KQp7 CiByZXR1cm4gX19idWlsdGluX2V4cGVjdCghIShlbnRyeSA9PSB4YV9ta19pbnRlcm5hbCgyNTYp KSwgMCk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgeGFfaXNfYWR2YW5jZWQoY29uc3Qgdm9pZCAqZW50cnkpCnsK IHJldHVybiB4YV9pc19pbnRlcm5hbChlbnRyeSkgJiYgKGVudHJ5IDw9IHhhX21rX2ludGVybmFs KDI1NikpOwp9CiMgMTI4NyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgp0eXBlZGVmIHZvaWQg KCp4YV91cGRhdGVfbm9kZV90KShzdHJ1Y3QgeGFfbm9kZSAqbm9kZSk7CiMgMTMwNiAiLi9pbmNs dWRlL2xpbnV4L3hhcnJheS5oIgpzdHJ1Y3QgeGFfc3RhdGUgewogc3RydWN0IHhhcnJheSAqeGE7 CiB1bnNpZ25lZCBsb25nIHhhX2luZGV4OwogdW5zaWduZWQgY2hhciB4YV9zaGlmdDsKIHVuc2ln bmVkIGNoYXIgeGFfc2liczsKIHVuc2lnbmVkIGNoYXIgeGFfb2Zmc2V0OwogdW5zaWduZWQgY2hh ciB4YV9wYWQ7CiBzdHJ1Y3QgeGFfbm9kZSAqeGFfbm9kZTsKIHN0cnVjdCB4YV9ub2RlICp4YV9h bGxvYzsKIHhhX3VwZGF0ZV9ub2RlX3QgeGFfdXBkYXRlOwp9OwojIDEzODUgIi4vaW5jbHVkZS9s aW51eC94YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHhhc19lcnJvcihjb25zdCBzdHJ1Y3QgeGFfc3RhdGUgKnhhcykK ewogcmV0dXJuIHhhX2Vycih4YXMtPnhhX25vZGUpOwp9CiMgMTM5OSAiLi9pbmNsdWRlL2xpbnV4 L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHhhc19zZXRfZXJyKHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCBsb25nIGVy cikKewogeGFzLT54YV9ub2RlID0gKChzdHJ1Y3QgeGFfbm9kZSAqKSgoKHVuc2lnbmVkIGxvbmcp ZXJyIDw8IDIpIHwgMlVMKSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgeGFzX2ludmFsaWQoY29uc3Qgc3RydWN0 IHhhX3N0YXRlICp4YXMpCnsKIHJldHVybiAodW5zaWduZWQgbG9uZyl4YXMtPnhhX25vZGUgJiAz Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIHhhc192YWxpZChjb25zdCBzdHJ1Y3QgeGFfc3RhdGUgKnhhcykKewog cmV0dXJuICF4YXNfaW52YWxpZCh4YXMpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhc19pc19ub2RlKGNvbnN0 IHN0cnVjdCB4YV9zdGF0ZSAqeGFzKQp7CiByZXR1cm4geGFzX3ZhbGlkKHhhcykgJiYgeGFzLT54 YV9ub2RlOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCB4YXNfbm90X25vZGUoc3RydWN0IHhhX25vZGUgKm5vZGUpCnsKIHJl dHVybiAoKHVuc2lnbmVkIGxvbmcpbm9kZSAmIDMpIHx8ICFub2RlOwp9CgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4YXNfZnJv emVuKHN0cnVjdCB4YV9ub2RlICpub2RlKQp7CiByZXR1cm4gKHVuc2lnbmVkIGxvbmcpbm9kZSAm IDI7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIHhhc190b3Aoc3RydWN0IHhhX25vZGUgKm5vZGUpCnsKIHJldHVybiBub2Rl IDw9ICgoc3RydWN0IHhhX25vZGUgKikzVUwpOwp9CiMgMTQ2NSAiLi9pbmNsdWRlL2xpbnV4L3hh cnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHhhc19yZXNldChzdHJ1Y3QgeGFfc3RhdGUgKnhhcykKewogeGFzLT54YV9u b2RlID0gKChzdHJ1Y3QgeGFfbm9kZSAqKTNVTCk7Cn0KIyAxNDgyICIuL2luY2x1ZGUvbGludXgv eGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGJvb2wgeGFzX3JldHJ5KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCBjb25zdCB2b2lk ICplbnRyeSkKewogaWYgKHhhX2lzX3plcm8oZW50cnkpKQogIHJldHVybiB0cnVlOwogaWYgKCF4 YV9pc19yZXRyeShlbnRyeSkpCiAgcmV0dXJuIGZhbHNlOwogeGFzX3Jlc2V0KHhhcyk7CiByZXR1 cm4gdHJ1ZTsKfQoKdm9pZCAqeGFzX2xvYWQoc3RydWN0IHhhX3N0YXRlICopOwp2b2lkICp4YXNf c3RvcmUoc3RydWN0IHhhX3N0YXRlICosIHZvaWQgKmVudHJ5KTsKdm9pZCAqeGFzX2ZpbmQoc3Ry dWN0IHhhX3N0YXRlICosIHVuc2lnbmVkIGxvbmcgbWF4KTsKdm9pZCAqeGFzX2ZpbmRfY29uZmxp Y3Qoc3RydWN0IHhhX3N0YXRlICopOwoKYm9vbCB4YXNfZ2V0X21hcmsoY29uc3Qgc3RydWN0IHhh X3N0YXRlICosIHhhX21hcmtfdCk7CnZvaWQgeGFzX3NldF9tYXJrKGNvbnN0IHN0cnVjdCB4YV9z dGF0ZSAqLCB4YV9tYXJrX3QpOwp2b2lkIHhhc19jbGVhcl9tYXJrKGNvbnN0IHN0cnVjdCB4YV9z dGF0ZSAqLCB4YV9tYXJrX3QpOwp2b2lkICp4YXNfZmluZF9tYXJrZWQoc3RydWN0IHhhX3N0YXRl ICosIHVuc2lnbmVkIGxvbmcgbWF4LCB4YV9tYXJrX3QpOwp2b2lkIHhhc19pbml0X21hcmtzKGNv bnN0IHN0cnVjdCB4YV9zdGF0ZSAqKTsKCmJvb2wgeGFzX25vbWVtKHN0cnVjdCB4YV9zdGF0ZSAq LCBnZnBfdCk7CnZvaWQgeGFzX3BhdXNlKHN0cnVjdCB4YV9zdGF0ZSAqKTsKCnZvaWQgeGFzX2Ny ZWF0ZV9yYW5nZShzdHJ1Y3QgeGFfc3RhdGUgKik7CiMgMTUyMiAiLi9pbmNsdWRlL2xpbnV4L3hh cnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkICp4YXNfcmVsb2FkKHN0cnVjdCB4YV9zdGF0ZSAqeGFzKQp7CiBzdHJ1Y3Qg eGFfbm9kZSAqbm9kZSA9IHhhcy0+eGFfbm9kZTsKCiBpZiAobm9kZSkKICByZXR1cm4geGFfZW50 cnkoeGFzLT54YSwgbm9kZSwgeGFzLT54YV9vZmZzZXQpOwogcmV0dXJuIHhhX2hlYWQoeGFzLT54 YSk7Cn0KIyAxNTQwICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgeGFzX3NldChzdHJ1 Y3QgeGFfc3RhdGUgKnhhcywgdW5zaWduZWQgbG9uZyBpbmRleCkKewogeGFzLT54YV9pbmRleCA9 IGluZGV4OwogeGFzLT54YV9ub2RlID0gKChzdHJ1Y3QgeGFfbm9kZSAqKTNVTCk7Cn0KCgoKCgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgeGFzX3NldF9vcmRlcihzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdW5zaWduZWQgbG9uZyBp bmRleCwKICAgICB1bnNpZ25lZCBpbnQgb3JkZXIpCnsKCiB4YXMtPnhhX2luZGV4ID0gb3JkZXIg PCA2NCA/IChpbmRleCA+PiBvcmRlcikgPDwgb3JkZXIgOiAwOwogeGFzLT54YV9zaGlmdCA9IG9y ZGVyIC0gKG9yZGVyICUgKDAgPyA0IDogNikpOwogeGFzLT54YV9zaWJzID0gKDEgPDwgKG9yZGVy ICUgKDAgPyA0IDogNikpKSAtIDE7CiB4YXMtPnhhX25vZGUgPSAoKHN0cnVjdCB4YV9ub2RlICop M1VMKTsKCgoKCn0KIyAxNTc0ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgeGFzX3Nl dF91cGRhdGUoc3RydWN0IHhhX3N0YXRlICp4YXMsIHhhX3VwZGF0ZV9ub2RlX3QgdXBkYXRlKQp7 CiB4YXMtPnhhX3VwZGF0ZSA9IHVwZGF0ZTsKfQojIDE1OTAgIi4vaW5jbHVkZS9saW51eC94YXJy YXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCAqeGFzX25leHRfZW50cnkoc3RydWN0IHhhX3N0YXRlICp4YXMsIHVuc2lnbmVk IGxvbmcgbWF4KQp7CiBzdHJ1Y3QgeGFfbm9kZSAqbm9kZSA9IHhhcy0+eGFfbm9kZTsKIHZvaWQg KmVudHJ5OwoKIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHhhc19ub3Rfbm9kZShub2RlKSB8fCBu b2RlLT5zaGlmdCB8fCB4YXMtPnhhX29mZnNldCAhPSAoeGFzLT54YV9pbmRleCAmICgoMVVMIDw8 ICgwID8gNCA6IDYpKSAtIDEpKSksIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKQogIHJldHVybiB4YXNfZmluZCh4YXMsIG1heCk7CgogZG8g ewogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHhhcy0+eGFfaW5kZXggPj0gbWF4KSwgMCkpCiAg IHJldHVybiB4YXNfZmluZCh4YXMsIG1heCk7CiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoeGFz LT54YV9vZmZzZXQgPT0gKCgxVUwgPDwgKDAgPyA0IDogNikpIC0gMSkpLCAwKSkKICAgcmV0dXJu IHhhc19maW5kKHhhcywgbWF4KTsKICBlbnRyeSA9IHhhX2VudHJ5KHhhcy0+eGEsIG5vZGUsIHhh cy0+eGFfb2Zmc2V0ICsgMSk7CiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoeGFfaXNfaW50ZXJu YWwoZW50cnkpKSwgMCkpCiAgIHJldHVybiB4YXNfZmluZCh4YXMsIG1heCk7CiAgeGFzLT54YV9v ZmZzZXQrKzsKICB4YXMtPnhhX2luZGV4Kys7CiB9IHdoaWxlICghZW50cnkpOwoKIHJldHVybiBl bnRyeTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHVuc2lnbmVkIGludCB4YXNfZmluZF9jaHVuayhzdHJ1Y3QgeGFfc3RhdGUgKnhh cywgYm9vbCBhZHZhbmNlLAogIHhhX21hcmtfdCBtYXJrKQp7CiB1bnNpZ25lZCBsb25nICphZGRy ID0geGFzLT54YV9ub2RlLT5tYXJrc1soIHVuc2lnbmVkKW1hcmtdOwogdW5zaWduZWQgaW50IG9m ZnNldCA9IHhhcy0+eGFfb2Zmc2V0OwoKIGlmIChhZHZhbmNlKQogIG9mZnNldCsrOwogaWYgKCgx VUwgPDwgKDAgPyA0IDogNikpID09IDY0KSB7CiAgaWYgKG9mZnNldCA8ICgxVUwgPDwgKDAgPyA0 IDogNikpKSB7CiAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9ICphZGRyICYgKH4wVUwgPDwgb2Zmc2V0 KTsKICAgaWYgKGRhdGEpCiAgICByZXR1cm4gX19mZnMoZGF0YSk7CiAgfQogIHJldHVybiAoMVVM IDw8ICgwID8gNCA6IDYpKTsKIH0KCiByZXR1cm4gZmluZF9uZXh0X2JpdChhZGRyLCAoMVVMIDw8 ICgwID8gNCA6IDYpKSwgb2Zmc2V0KTsKfQojIDE2NDcgIi4vaW5jbHVkZS9saW51eC94YXJyYXku aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCAqeGFzX25leHRfbWFya2VkKHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB1bnNpZ25lZCBs b25nIG1heCwKICAgICAgICB4YV9tYXJrX3QgbWFyaykKewogc3RydWN0IHhhX25vZGUgKm5vZGUg PSB4YXMtPnhhX25vZGU7CiB1bnNpZ25lZCBpbnQgb2Zmc2V0OwoKIGlmIChfX2J1aWx0aW5fZXhw ZWN0KCEhKHhhc19ub3Rfbm9kZShub2RlKSB8fCBub2RlLT5zaGlmdCksIDApKQogIHJldHVybiB4 YXNfZmluZF9tYXJrZWQoeGFzLCBtYXgsIG1hcmspOwogb2Zmc2V0ID0geGFzX2ZpbmRfY2h1bmso eGFzLCB0cnVlLCBtYXJrKTsKIHhhcy0+eGFfb2Zmc2V0ID0gb2Zmc2V0OwogeGFzLT54YV9pbmRl eCA9ICh4YXMtPnhhX2luZGV4ICYgfigoMVVMIDw8ICgwID8gNCA6IDYpKSAtIDEpKSArIG9mZnNl dDsKIGlmICh4YXMtPnhhX2luZGV4ID4gbWF4KQogIHJldHVybiAoKHZvaWQgKikwKTsKIGlmIChv ZmZzZXQgPT0gKDFVTCA8PCAoMCA/IDQgOiA2KSkpCiAgcmV0dXJuIHhhc19maW5kX21hcmtlZCh4 YXMsIG1heCwgbWFyayk7CiByZXR1cm4geGFfZW50cnkoeGFzLT54YSwgbm9kZSwgb2Zmc2V0KTsK fQoKCgoKCmVudW0gewogWEFfQ0hFQ0tfU0NIRUQgPSA0MDk2LAp9OwojIDE3MjQgIi4vaW5jbHVk ZS9saW51eC94YXJyYXkuaCIKdm9pZCAqX194YXNfbmV4dChzdHJ1Y3QgeGFfc3RhdGUgKik7CnZv aWQgKl9feGFzX3ByZXYoc3RydWN0IHhhX3N0YXRlICopOwojIDE3NDMgIi4vaW5jbHVkZS9saW51 eC94YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCAqeGFzX3ByZXYoc3RydWN0IHhhX3N0YXRlICp4YXMpCnsKIHN0cnVj dCB4YV9ub2RlICpub2RlID0geGFzLT54YV9ub2RlOwoKIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEh KHhhc19ub3Rfbm9kZShub2RlKSB8fCBub2RlLT5zaGlmdCB8fCB4YXMtPnhhX29mZnNldCA9PSAw KSwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgKQogIHJldHVybiBfX3hhc19wcmV2KHhhcyk7 CgogeGFzLT54YV9pbmRleC0tOwogeGFzLT54YV9vZmZzZXQtLTsKIHJldHVybiB4YV9lbnRyeSh4 YXMtPnhhLCBub2RlLCB4YXMtPnhhX29mZnNldCk7Cn0KIyAxNzcyICIuL2luY2x1ZGUvbGludXgv eGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgKnhhc19uZXh0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzKQp7CiBzdHJ1Y3Qg eGFfbm9kZSAqbm9kZSA9IHhhcy0+eGFfbm9kZTsKCiBpZiAoX19idWlsdGluX2V4cGVjdCghISh4 YXNfbm90X25vZGUobm9kZSkgfHwgbm9kZS0+c2hpZnQgfHwgeGFzLT54YV9vZmZzZXQgPT0gKCgx VUwgPDwgKDAgPyA0IDogNikpIC0gMSkpLCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApCiAgcmV0dXJuIF9feGFzX25leHQoeGFzKTsKCiB4YXMtPnhhX2luZGV4Kys7CiB4 YXMtPnhhX29mZnNldCsrOwogcmV0dXJuIHhhX2VudHJ5KHhhcy0+eGEsIG5vZGUsIHhhcy0+eGFf b2Zmc2V0KTsKfQojIDE5ICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIiAyCiMgNDMgIi4v aW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcmFkaXhfdHJlZV9pc19pbnRlcm5hbF9u b2RlKHZvaWQgKnB0cikKewogcmV0dXJuICgodW5zaWduZWQgbG9uZylwdHIgJiAzVUwpID09CiAg ICAyVUw7Cn0KIyA3NCAiLi9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCByYWRpeF90 cmVlX2VtcHR5KGNvbnN0IHN0cnVjdCB4YXJyYXkgKnJvb3QpCnsKIHJldHVybiByb290LT54YV9o ZWFkID09ICgodm9pZCAqKTApOwp9CiMgOTQgIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgi CnN0cnVjdCByYWRpeF90cmVlX2l0ZXIgewogdW5zaWduZWQgbG9uZyBpbmRleDsKIHVuc2lnbmVk IGxvbmcgbmV4dF9pbmRleDsKIHVuc2lnbmVkIGxvbmcgdGFnczsKIHN0cnVjdCB4YV9ub2RlICpu b2RlOwp9OwojIDE2NSAiLi9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqcmFkaXhf dHJlZV9kZXJlZl9zbG90KHZvaWQgKipzbG90KQp7CiByZXR1cm4gKHsgdHlwZW9mKCooKnNsb3Qp KSAqX19fX19fX19wMSA9ICh0eXBlb2YoKigqc2xvdCkpICopKHsgdW5pb24geyB0eXBlb2YoKCpz bG90KSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUo JigoKnNsb3QpKSwgX191Ll9fYywgc2l6ZW9mKCgqc2xvdCkpKTsgZWxzZSBfX3JlYWRfb25jZV9z aXplX25vY2hlY2soJigoKnNsb3QpKSwgX191Ll9fYywgc2l6ZW9mKCgqc2xvdCkpKTsgZG8geyB9 IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsgZG8geyB9IHdoaWxlICgwKTsgOyAoKHR5cGVvZigq KCpzbG90KSkgKikoX19fX19fX19wMSkpOyB9KTsKfQojIDE3OSAiLi9pbmNsdWRlL2xpbnV4L3Jh ZGl4LXRyZWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCAqcmFkaXhfdHJlZV9kZXJlZl9zbG90X3Byb3RlY3RlZCh2b2lkICoq c2xvdCwKICAgICAgIHNwaW5sb2NrX3QgKnRyZWVsb2NrKQp7CiByZXR1cm4gKHsgZG8geyB9IHdo aWxlICgwKTsgOyAoKHR5cGVvZigqKCpzbG90KSkgKikoKCpzbG90KSkpOyB9KTsKfQojIDE5MiAi Li9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJhZGl4X3RyZWVfZGVyZWZfcmV0cnko dm9pZCAqYXJnKQp7CiByZXR1cm4gX19idWlsdGluX2V4cGVjdCghIShyYWRpeF90cmVlX2lzX2lu dGVybmFsX25vZGUoYXJnKSksIDApOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCByYWRpeF90cmVlX2V4Y2VwdGlvbih2 b2lkICphcmcpCnsKIHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KCEhKCh1bnNpZ25lZCBsb25nKWFy ZyAmIDNVTCksIDApOwp9CgppbnQgcmFkaXhfdHJlZV9pbnNlcnQoc3RydWN0IHhhcnJheSAqLCB1 bnNpZ25lZCBsb25nIGluZGV4LAogICB2b2lkICopOwp2b2lkICpfX3JhZGl4X3RyZWVfbG9va3Vw KGNvbnN0IHN0cnVjdCB4YXJyYXkgKiwgdW5zaWduZWQgbG9uZyBpbmRleCwKICAgICBzdHJ1Y3Qg eGFfbm9kZSAqKm5vZGVwLCB2b2lkICoqKnNsb3RwKTsKdm9pZCAqcmFkaXhfdHJlZV9sb29rdXAo Y29uc3Qgc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nKTsKdm9pZCAqKnJhZGl4X3RyZWVf bG9va3VwX3Nsb3QoY29uc3Qgc3RydWN0IHhhcnJheSAqLAogICAgIHVuc2lnbmVkIGxvbmcgaW5k ZXgpOwp2b2lkIF9fcmFkaXhfdHJlZV9yZXBsYWNlKHN0cnVjdCB4YXJyYXkgKiwgc3RydWN0IHhh X25vZGUgKiwKICAgICB2b2lkICoqc2xvdCwgdm9pZCAqZW50cnkpOwp2b2lkIHJhZGl4X3RyZWVf aXRlcl9yZXBsYWNlKHN0cnVjdCB4YXJyYXkgKiwKICBjb25zdCBzdHJ1Y3QgcmFkaXhfdHJlZV9p dGVyICosIHZvaWQgKipzbG90LCB2b2lkICplbnRyeSk7CnZvaWQgcmFkaXhfdHJlZV9yZXBsYWNl X3Nsb3Qoc3RydWN0IHhhcnJheSAqLAogICAgICAgIHZvaWQgKipzbG90LCB2b2lkICplbnRyeSk7 CnZvaWQgcmFkaXhfdHJlZV9pdGVyX2RlbGV0ZShzdHJ1Y3QgeGFycmF5ICosCiAgIHN0cnVjdCBy YWRpeF90cmVlX2l0ZXIgKml0ZXIsIHZvaWQgKipzbG90KTsKdm9pZCAqcmFkaXhfdHJlZV9kZWxl dGVfaXRlbShzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CnZvaWQgKnJh ZGl4X3RyZWVfZGVsZXRlKHN0cnVjdCB4YXJyYXkgKiwgdW5zaWduZWQgbG9uZyk7CnVuc2lnbmVk IGludCByYWRpeF90cmVlX2dhbmdfbG9va3VwKGNvbnN0IHN0cnVjdCB4YXJyYXkgKiwKICAgdm9p ZCAqKnJlc3VsdHMsIHVuc2lnbmVkIGxvbmcgZmlyc3RfaW5kZXgsCiAgIHVuc2lnbmVkIGludCBt YXhfaXRlbXMpOwppbnQgcmFkaXhfdHJlZV9wcmVsb2FkKGdmcF90IGdmcF9tYXNrKTsKaW50IHJh ZGl4X3RyZWVfbWF5YmVfcHJlbG9hZChnZnBfdCBnZnBfbWFzayk7CnZvaWQgcmFkaXhfdHJlZV9p bml0KHZvaWQpOwp2b2lkICpyYWRpeF90cmVlX3RhZ19zZXQoc3RydWN0IHhhcnJheSAqLAogICB1 bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBpbnQgdGFnKTsKdm9pZCAqcmFkaXhfdHJlZV90 YWdfY2xlYXIoc3RydWN0IHhhcnJheSAqLAogICB1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25l ZCBpbnQgdGFnKTsKaW50IHJhZGl4X3RyZWVfdGFnX2dldChjb25zdCBzdHJ1Y3QgeGFycmF5ICos CiAgIHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGludCB0YWcpOwp2b2lkIHJhZGl4X3Ry ZWVfaXRlcl90YWdfY2xlYXIoc3RydWN0IHhhcnJheSAqLAogIGNvbnN0IHN0cnVjdCByYWRpeF90 cmVlX2l0ZXIgKml0ZXIsIHVuc2lnbmVkIGludCB0YWcpOwp1bnNpZ25lZCBpbnQgcmFkaXhfdHJl ZV9nYW5nX2xvb2t1cF90YWcoY29uc3Qgc3RydWN0IHhhcnJheSAqLAogIHZvaWQgKipyZXN1bHRz LCB1bnNpZ25lZCBsb25nIGZpcnN0X2luZGV4LAogIHVuc2lnbmVkIGludCBtYXhfaXRlbXMsIHVu c2lnbmVkIGludCB0YWcpOwp1bnNpZ25lZCBpbnQgcmFkaXhfdHJlZV9nYW5nX2xvb2t1cF90YWdf c2xvdChjb25zdCBzdHJ1Y3QgeGFycmF5ICosCiAgdm9pZCAqKipyZXN1bHRzLCB1bnNpZ25lZCBs b25nIGZpcnN0X2luZGV4LAogIHVuc2lnbmVkIGludCBtYXhfaXRlbXMsIHVuc2lnbmVkIGludCB0 YWcpOwppbnQgcmFkaXhfdHJlZV90YWdnZWQoY29uc3Qgc3RydWN0IHhhcnJheSAqLCB1bnNpZ25l ZCBpbnQgdGFnKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgcmFkaXhfdHJlZV9wcmVsb2FkX2VuZCh2b2lkKQp7CiBfX2FzbV9f IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9Cgp2b2lkICoqaWRyX2dldF9mcmVlKHN0 cnVjdCB4YXJyYXkgKnJvb3QsCiAgICAgICAgIHN0cnVjdCByYWRpeF90cmVlX2l0ZXIgKml0ZXIs IGdmcF90IGdmcCwKICAgICAgICAgdW5zaWduZWQgbG9uZyBtYXgpOwoKZW51bSB7CiBSQURJWF9U UkVFX0lURVJfVEFHX01BU0sgPSAweDBmLAogUkFESVhfVFJFRV9JVEVSX1RBR0dFRCA9IDB4MTAs CiBSQURJWF9UUkVFX0lURVJfQ09OVElHID0gMHgyMCwKfTsKIyAyNjggIi4vaW5jbHVkZS9saW51 eC9yYWRpeC10cmVlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCAq KgpyYWRpeF90cmVlX2l0ZXJfaW5pdChzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVyICppdGVyLCB1bnNp Z25lZCBsb25nIHN0YXJ0KQp7CiMgMjc5ICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgog aXRlci0+aW5kZXggPSAwOwogaXRlci0+bmV4dF9pbmRleCA9IHN0YXJ0OwogcmV0dXJuICgodm9p ZCAqKTApOwp9CiMgMjk3ICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgp2b2lkICoqcmFk aXhfdHJlZV9uZXh0X2NodW5rKGNvbnN0IHN0cnVjdCB4YXJyYXkgKiwKICAgICAgICBzdHJ1Y3Qg cmFkaXhfdHJlZV9pdGVyICppdGVyLCB1bnNpZ25lZCBmbGFncyk7CiMgMzEwICIuL2luY2x1ZGUv bGludXgvcmFkaXgtdHJlZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICoqCnJhZGl4X3RyZWVfaXRlcl9sb29rdXAoY29uc3Qg c3RydWN0IHhhcnJheSAqcm9vdCwKICAgc3RydWN0IHJhZGl4X3RyZWVfaXRlciAqaXRlciwgdW5z aWduZWQgbG9uZyBpbmRleCkKewogcmFkaXhfdHJlZV9pdGVyX2luaXQoaXRlciwgaW5kZXgpOwog cmV0dXJuIHJhZGl4X3RyZWVfbmV4dF9jaHVuayhyb290LCBpdGVyLCBSQURJWF9UUkVFX0lURVJf Q09OVElHKTsKfQojIDMyNyAiLi9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpCnZvaWQgKipyYWRpeF90cmVlX2l0ZXJfcmV0 cnkoc3RydWN0IHJhZGl4X3RyZWVfaXRlciAqaXRlcikKewogaXRlci0+bmV4dF9pbmRleCA9IGl0 ZXItPmluZGV4OwogaXRlci0+dGFncyA9IDA7CiByZXR1cm4gKCh2b2lkICopMCk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGxvbmcKX19yYWRpeF90cmVlX2l0ZXJfYWRkKHN0cnVjdCByYWRpeF90cmVlX2l0ZXIgKml0 ZXIsIHVuc2lnbmVkIGxvbmcgc2xvdHMpCnsKIHJldHVybiBpdGVyLT5pbmRleCArIHNsb3RzOwp9 CiMgMzUxICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgp2b2lkICoqX19hdHRyaWJ1dGVf XygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHJhZGl4X3RyZWVfaXRlcl9yZXN1bWUodm9pZCAq KnNsb3QsCiAgICAgc3RydWN0IHJhZGl4X3RyZWVfaXRlciAqaXRlcik7CgoKCgoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGxvbmcKcmFkaXhfdHJlZV9jaHVua19zaXplKHN0 cnVjdCByYWRpeF90cmVlX2l0ZXIgKml0ZXIpCnsKIHJldHVybiBpdGVyLT5uZXh0X2luZGV4IC0g aXRlci0+aW5kZXg7Cn0KIyAzODUgIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCAqKnJhZGl4X3RyZWVfbmV4dF9zbG90 KHZvaWQgKipzbG90LAogICAgc3RydWN0IHJhZGl4X3RyZWVfaXRlciAqaXRlciwgdW5zaWduZWQg ZmxhZ3MpCnsKIGlmIChmbGFncyAmIFJBRElYX1RSRUVfSVRFUl9UQUdHRUQpIHsKICBpdGVyLT50 YWdzID4+PSAxOwogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFpdGVyLT50YWdzKSwgMCkpCiAg IHJldHVybiAoKHZvaWQgKikwKTsKICBpZiAoX19idWlsdGluX2V4cGVjdCghIShpdGVyLT50YWdz ICYgMXVsKSwgMSkpIHsKICAgaXRlci0+aW5kZXggPSBfX3JhZGl4X3RyZWVfaXRlcl9hZGQoaXRl ciwgMSk7CiAgIHNsb3QrKzsKICAgZ290byBmb3VuZDsKICB9CiAgaWYgKCEoZmxhZ3MgJiBSQURJ WF9UUkVFX0lURVJfQ09OVElHKSkgewogICB1bnNpZ25lZCBvZmZzZXQgPSBfX2ZmcyhpdGVyLT50 YWdzKTsKCiAgIGl0ZXItPnRhZ3MgPj49IG9mZnNldCsrOwogICBpdGVyLT5pbmRleCA9IF9fcmFk aXhfdHJlZV9pdGVyX2FkZChpdGVyLCBvZmZzZXQpOwogICBzbG90ICs9IG9mZnNldDsKICAgZ290 byBmb3VuZDsKICB9CiB9IGVsc2UgewogIGxvbmcgY291bnQgPSByYWRpeF90cmVlX2NodW5rX3Np emUoaXRlcik7CgogIHdoaWxlICgtLWNvdW50ID4gMCkgewogICBzbG90Kys7CiAgIGl0ZXItPmlu ZGV4ID0gX19yYWRpeF90cmVlX2l0ZXJfYWRkKGl0ZXIsIDEpOwoKICAgaWYgKF9fYnVpbHRpbl9l eHBlY3QoISEoKnNsb3QpLCAxKSkKICAgIGdvdG8gZm91bmQ7CiAgIGlmIChmbGFncyAmIFJBRElY X1RSRUVfSVRFUl9DT05USUcpIHsKCiAgICBpdGVyLT5uZXh0X2luZGV4ID0gMDsKICAgIGJyZWFr OwogICB9CiAgfQogfQogcmV0dXJuICgodm9pZCAqKTApOwoKIGZvdW5kOgogcmV0dXJuIHNsb3Q7 Cn0KIyAxNiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCgoKIyAxICIuL2luY2x1ZGUvbGludXgv cGlkLmgiIDEKIyA5ICIuL2luY2x1ZGUvbGludXgvcGlkLmgiCmVudW0gcGlkX3R5cGUKewogUElE VFlQRV9QSUQsCiBQSURUWVBFX1RHSUQsCiBQSURUWVBFX1BHSUQsCiBQSURUWVBFX1NJRCwKIFBJ RFRZUEVfTUFYLAp9OwojIDU0ICIuL2luY2x1ZGUvbGludXgvcGlkLmgiCnN0cnVjdCB1cGlkIHsK IGludCBucjsKIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpuczsKfTsKCnN0cnVjdCBwaWQKewogcmVm Y291bnRfdCBjb3VudDsKIHVuc2lnbmVkIGludCBsZXZlbDsKCiBzdHJ1Y3QgaGxpc3RfaGVhZCB0 YXNrc1tQSURUWVBFX01BWF07Cgogd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9waWRmZDsKIHN0cnVj dCBjYWxsYmFja19oZWFkIHJjdTsKIHN0cnVjdCB1cGlkIG51bWJlcnNbMV07Cn07CgpleHRlcm4g c3RydWN0IHBpZCBpbml0X3N0cnVjdF9waWQ7CgpleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3Bl cmF0aW9ucyBwaWRmZF9mb3BzOwoKc3RydWN0IGZpbGU7CgpleHRlcm4gc3RydWN0IHBpZCAqcGlk ZmRfcGlkKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBwaWQgKmdldF9waWQoc3Ry dWN0IHBpZCAqcGlkKQp7CiBpZiAocGlkKQogIHJlZmNvdW50X2luYygmcGlkLT5jb3VudCk7CiBy ZXR1cm4gcGlkOwp9CgpleHRlcm4gdm9pZCBwdXRfcGlkKHN0cnVjdCBwaWQgKnBpZCk7CmV4dGVy biBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpZF90YXNrKHN0cnVjdCBwaWQgKnBpZCwgZW51bSBwaWRf dHlwZSk7CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgcGlkX2hhc190YXNrKHN0cnVjdCBwaWQgKnBpZCwgZW51bSBwaWRfdHlwZSB0 eXBlKQp7CiByZXR1cm4gIWhsaXN0X2VtcHR5KCZwaWQtPnRhc2tzW3R5cGVdKTsKfQpleHRlcm4g c3RydWN0IHRhc2tfc3RydWN0ICpnZXRfcGlkX3Rhc2soc3RydWN0IHBpZCAqcGlkLCBlbnVtIHBp ZF90eXBlKTsKCmV4dGVybiBzdHJ1Y3QgcGlkICpnZXRfdGFza19waWQoc3RydWN0IHRhc2tfc3Ry dWN0ICp0YXNrLCBlbnVtIHBpZF90eXBlIHR5cGUpOwoKCgoKZXh0ZXJuIHZvaWQgYXR0YWNoX3Bp ZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGVudW0gcGlkX3R5cGUpOwpleHRlcm4gdm9pZCBk ZXRhY2hfcGlkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgZW51bSBwaWRfdHlwZSk7CmV4dGVy biB2b2lkIGNoYW5nZV9waWQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBlbnVtIHBpZF90eXBl LAogICBzdHJ1Y3QgcGlkICpwaWQpOwpleHRlcm4gdm9pZCB0cmFuc2Zlcl9waWQoc3RydWN0IHRh c2tfc3RydWN0ICpvbGQsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV3LAogICAgZW51bSBwaWRfdHlw ZSk7CgpzdHJ1Y3QgcGlkX25hbWVzcGFjZTsKZXh0ZXJuIHN0cnVjdCBwaWRfbmFtZXNwYWNlIGlu aXRfcGlkX25zOwojIDExOCAiLi9pbmNsdWRlL2xpbnV4L3BpZC5oIgpleHRlcm4gc3RydWN0IHBp ZCAqZmluZF9waWRfbnMoaW50IG5yLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMpOwpleHRlcm4g c3RydWN0IHBpZCAqZmluZF92cGlkKGludCBucik7CgoKCgpleHRlcm4gc3RydWN0IHBpZCAqZmlu ZF9nZXRfcGlkKGludCBucik7CmV4dGVybiBzdHJ1Y3QgcGlkICpmaW5kX2dlX3BpZChpbnQgbnIs IHN0cnVjdCBwaWRfbmFtZXNwYWNlICopOwoKZXh0ZXJuIHN0cnVjdCBwaWQgKmFsbG9jX3BpZChz dHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsIHBpZF90ICpzZXRfdGlkLAogICAgICAgIHNpemVfdCBz ZXRfdGlkX3NpemUpOwpleHRlcm4gdm9pZCBmcmVlX3BpZChzdHJ1Y3QgcGlkICpwaWQpOwpleHRl cm4gdm9pZCBkaXNhYmxlX3BpZF9hbGxvY2F0aW9uKHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyk7 CiMgMTQyICIuL2luY2x1ZGUvbGludXgvcGlkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpuc19v Zl9waWQoc3RydWN0IHBpZCAqcGlkKQp7CiBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMgPSAoKHZv aWQgKikwKTsKIGlmIChwaWQpCiAgbnMgPSBwaWQtPm51bWJlcnNbcGlkLT5sZXZlbF0ubnM7CiBy ZXR1cm4gbnM7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaXNfY2hpbGRfcmVhcGVyKHN0cnVjdCBwaWQgKnBpZCkK ewogcmV0dXJuIHBpZC0+bnVtYmVyc1twaWQtPmxldmVsXS5uciA9PSAxOwp9CiMgMTcyICIuL2lu Y2x1ZGUvbGludXgvcGlkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHBpZF90IHBpZF9ucihzdHJ1Y3QgcGlkICpwaWQpCnsKIHBpZF90 IG5yID0gMDsKIGlmIChwaWQpCiAgbnIgPSBwaWQtPm51bWJlcnNbMF0ubnI7CiByZXR1cm4gbnI7 Cn0KCnBpZF90IHBpZF9ucl9ucyhzdHJ1Y3QgcGlkICpwaWQsIHN0cnVjdCBwaWRfbmFtZXNwYWNl ICpucyk7CnBpZF90IHBpZF92bnIoc3RydWN0IHBpZCAqcGlkKTsKIyAyMCAiLi9pbmNsdWRlL2xp bnV4L2ZzLmgiIDIKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIgMQojIDE2 ICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4 L2NhcGFiaWxpdHkuaCIgMQojIDM5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9jYXBhYmlsaXR5Lmgi CnR5cGVkZWYgc3RydWN0IF9fdXNlcl9jYXBfaGVhZGVyX3N0cnVjdCB7CiBfX3UzMiB2ZXJzaW9u OwogaW50IHBpZDsKfSAqY2FwX3VzZXJfaGVhZGVyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBfX3VzZXJf Y2FwX2RhdGFfc3RydWN0IHsKICAgICAgICBfX3UzMiBlZmZlY3RpdmU7CiAgICAgICAgX191MzIg cGVybWl0dGVkOwogICAgICAgIF9fdTMyIGluaGVyaXRhYmxlOwp9ICpjYXBfdXNlcl9kYXRhX3Q7 CiMgNzIgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2NhcGFiaWxpdHkuaCIKc3RydWN0IHZmc19jYXBf ZGF0YSB7CiBfX2xlMzIgbWFnaWNfZXRjOwogc3RydWN0IHsKICBfX2xlMzIgcGVybWl0dGVkOwog IF9fbGUzMiBpbmhlcml0YWJsZTsKIH0gZGF0YVsyXTsKfTsKCgoKCnN0cnVjdCB2ZnNfbnNfY2Fw X2RhdGEgewogX19sZTMyIG1hZ2ljX2V0YzsKIHN0cnVjdCB7CiAgX19sZTMyIHBlcm1pdHRlZDsK ICBfX2xlMzIgaW5oZXJpdGFibGU7CiB9IGRhdGFbMl07CiBfX2xlMzIgcm9vdGlkOwp9OwojIDE3 ICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAyCgoKCgoKZXh0ZXJuIGludCBmaWxlX2Nh cHNfZW5hYmxlZDsKCnR5cGVkZWYgc3RydWN0IGtlcm5lbF9jYXBfc3RydWN0IHsKIF9fdTMyIGNh cFsyXTsKfSBrZXJuZWxfY2FwX3Q7CgoKc3RydWN0IGNwdV92ZnNfY2FwX2RhdGEgewogX191MzIg bWFnaWNfZXRjOwoga2VybmVsX2NhcF90IHBlcm1pdHRlZDsKIGtlcm5lbF9jYXBfdCBpbmhlcml0 YWJsZTsKIGt1aWRfdCByb290aWQ7Cn07CgoKCgoKc3RydWN0IGZpbGU7CnN0cnVjdCBpbm9kZTsK c3RydWN0IGRlbnRyeTsKc3RydWN0IHRhc2tfc3RydWN0OwpzdHJ1Y3QgdXNlcl9uYW1lc3BhY2U7 CgpleHRlcm4gY29uc3Qga2VybmVsX2NhcF90IF9fY2FwX2VtcHR5X3NldDsKZXh0ZXJuIGNvbnN0 IGtlcm5lbF9jYXBfdCBfX2NhcF9pbml0X2VmZl9zZXQ7CiMgMTE4ICIuL2luY2x1ZGUvbGludXgv Y2FwYWJpbGl0eS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBrZXJuZWxfY2FwX3QgY2FwX2NvbWJpbmUoY29uc3Qga2VybmVsX2NhcF90 IGEsCiAgICAgICAgICAgY29uc3Qga2VybmVsX2NhcF90IGIpCnsKIGtlcm5lbF9jYXBfdCBkZXN0 OwogZG8geyB1bnNpZ25lZCBfX2NhcGk7IGZvciAoX19jYXBpID0gMDsgX19jYXBpIDwgMjsgKytf X2NhcGkpIHsgZGVzdC5jYXBbX19jYXBpXSA9IGEuY2FwW19fY2FwaV0gfCBiLmNhcFtfX2NhcGld OyB9IH0gd2hpbGUgKDApOwogcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGtlcm5lbF9jYXBfdCBjYXBfaW50ZXJz ZWN0KGNvbnN0IGtlcm5lbF9jYXBfdCBhLAogICAgICBjb25zdCBrZXJuZWxfY2FwX3QgYikKewog a2VybmVsX2NhcF90IGRlc3Q7CiBkbyB7IHVuc2lnbmVkIF9fY2FwaTsgZm9yIChfX2NhcGkgPSAw OyBfX2NhcGkgPCAyOyArK19fY2FwaSkgeyBkZXN0LmNhcFtfX2NhcGldID0gYS5jYXBbX19jYXBp XSAmIGIuY2FwW19fY2FwaV07IH0gfSB3aGlsZSAoMCk7CiByZXR1cm4gZGVzdDsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga2VybmVs X2NhcF90IGNhcF9kcm9wKGNvbnN0IGtlcm5lbF9jYXBfdCBhLAogICAgICAgIGNvbnN0IGtlcm5l bF9jYXBfdCBkcm9wKQp7CiBrZXJuZWxfY2FwX3QgZGVzdDsKIGRvIHsgdW5zaWduZWQgX19jYXBp OyBmb3IgKF9fY2FwaSA9IDA7IF9fY2FwaSA8IDI7ICsrX19jYXBpKSB7IGRlc3QuY2FwW19fY2Fw aV0gPSBhLmNhcFtfX2NhcGldICZ+IGRyb3AuY2FwW19fY2FwaV07IH0gfSB3aGlsZSAoMCk7CiBy ZXR1cm4gZGVzdDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkga2VybmVsX2NhcF90IGNhcF9pbnZlcnQoY29uc3Qga2VybmVsX2NhcF90 IGMpCnsKIGtlcm5lbF9jYXBfdCBkZXN0OwogZG8geyB1bnNpZ25lZCBfX2NhcGk7IGZvciAoX19j YXBpID0gMDsgX19jYXBpIDwgMjsgKytfX2NhcGkpIHsgZGVzdC5jYXBbX19jYXBpXSA9IH4gYy5j YXBbX19jYXBpXTsgfSB9IHdoaWxlICgwKTsKIHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGNhcF9pc2Ns ZWFyKGNvbnN0IGtlcm5lbF9jYXBfdCBhKQp7CiB1bnNpZ25lZCBfX2NhcGk7CiBmb3IgKF9fY2Fw aSA9IDA7IF9fY2FwaSA8IDI7ICsrX19jYXBpKSB7CiAgaWYgKGEuY2FwW19fY2FwaV0gIT0gMCkK ICAgcmV0dXJuIGZhbHNlOwogfQogcmV0dXJuIHRydWU7Cn0KIyAxNjYgIi4vaW5jbHVkZS9saW51 eC9jYXBhYmlsaXR5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgY2FwX2lzc3Vic2V0KGNvbnN0IGtlcm5lbF9jYXBfdCBhLCBj b25zdCBrZXJuZWxfY2FwX3Qgc2V0KQp7CiBrZXJuZWxfY2FwX3QgZGVzdDsKIGRlc3QgPSBjYXBf ZHJvcChhLCBzZXQpOwogcmV0dXJuIGNhcF9pc2NsZWFyKGRlc3QpOwp9CgoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGtlcm5lbF9jYXBf dCBjYXBfZHJvcF9mc19zZXQoY29uc3Qga2VybmVsX2NhcF90IGEpCnsKIGNvbnN0IGtlcm5lbF9j YXBfdCBfX2NhcF9mc19zZXQgPSAoKGtlcm5lbF9jYXBfdCl7eyAoKDEgPDwgKCgwKSAmIDMxKSkg fCAoMSA8PCAoKDI3KSAmIDMxKSkgfCAoMSA8PCAoKDEpICYgMzEpKSB8ICgxIDw8ICgoMikgJiAz MSkpIHwgKDEgPDwgKCgzKSAmIDMxKSkgfCAoMSA8PCAoKDQpICYgMzEpKSkgfCAoMSA8PCAoKDkp ICYgMzEpKSwgKCgxIDw8ICgoMzIpICYgMzEpKSkgfSB9KTsKIHJldHVybiBjYXBfZHJvcChhLCBf X2NhcF9mc19zZXQpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBrZXJuZWxfY2FwX3QgY2FwX3JhaXNlX2ZzX3NldChjb25zdCBrZXJu ZWxfY2FwX3QgYSwKICAgICAgICAgY29uc3Qga2VybmVsX2NhcF90IHBlcm1pdHRlZCkKewogY29u c3Qga2VybmVsX2NhcF90IF9fY2FwX2ZzX3NldCA9ICgoa2VybmVsX2NhcF90KXt7ICgoMSA8PCAo KDApICYgMzEpKSB8ICgxIDw8ICgoMjcpICYgMzEpKSB8ICgxIDw8ICgoMSkgJiAzMSkpIHwgKDEg PDwgKCgyKSAmIDMxKSkgfCAoMSA8PCAoKDMpICYgMzEpKSB8ICgxIDw8ICgoNCkgJiAzMSkpKSB8 ICgxIDw8ICgoOSkgJiAzMSkpLCAoKDEgPDwgKCgzMikgJiAzMSkpKSB9IH0pOwogcmV0dXJuIGNh cF9jb21iaW5lKGEsCiAgICAgIGNhcF9pbnRlcnNlY3QocGVybWl0dGVkLCBfX2NhcF9mc19zZXQp KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkga2VybmVsX2NhcF90IGNhcF9kcm9wX25mc2Rfc2V0KGNvbnN0IGtlcm5lbF9jYXBfdCBh KQp7CiBjb25zdCBrZXJuZWxfY2FwX3QgX19jYXBfZnNfc2V0ID0gKChrZXJuZWxfY2FwX3Qpe3sg KCgxIDw8ICgoMCkgJiAzMSkpIHwgKDEgPDwgKCgyNykgJiAzMSkpIHwgKDEgPDwgKCgxKSAmIDMx KSkgfCAoMSA8PCAoKDIpICYgMzEpKSB8ICgxIDw8ICgoMykgJiAzMSkpIHwgKDEgPDwgKCg0KSAm IDMxKSkpIHwgKDEgPDwgKCgyNCkgJiAzMSkpLCAoKDEgPDwgKCgzMikgJiAzMSkpKSB9IH0pOwog cmV0dXJuIGNhcF9kcm9wKGEsIF9fY2FwX2ZzX3NldCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGtlcm5lbF9jYXBfdCBjYXBfcmFp c2VfbmZzZF9zZXQoY29uc3Qga2VybmVsX2NhcF90IGEsCiAgICAgICAgICAgY29uc3Qga2VybmVs X2NhcF90IHBlcm1pdHRlZCkKewogY29uc3Qga2VybmVsX2NhcF90IF9fY2FwX25mc2Rfc2V0ID0g KChrZXJuZWxfY2FwX3Qpe3sgKCgxIDw8ICgoMCkgJiAzMSkpIHwgKDEgPDwgKCgyNykgJiAzMSkp IHwgKDEgPDwgKCgxKSAmIDMxKSkgfCAoMSA8PCAoKDIpICYgMzEpKSB8ICgxIDw8ICgoMykgJiAz MSkpIHwgKDEgPDwgKCg0KSAmIDMxKSkpIHwgKDEgPDwgKCgyNCkgJiAzMSkpLCAoKDEgPDwgKCgz MikgJiAzMSkpKSB9IH0pOwogcmV0dXJuIGNhcF9jb21iaW5lKGEsCiAgICAgIGNhcF9pbnRlcnNl Y3QocGVybWl0dGVkLCBfX2NhcF9uZnNkX3NldCkpOwp9CgoKZXh0ZXJuIGJvb2wgaGFzX2NhcGFi aWxpdHkoc3RydWN0IHRhc2tfc3RydWN0ICp0LCBpbnQgY2FwKTsKZXh0ZXJuIGJvb2wgaGFzX25z X2NhcGFiaWxpdHkoc3RydWN0IHRhc2tfc3RydWN0ICp0LAogICAgICAgICBzdHJ1Y3QgdXNlcl9u YW1lc3BhY2UgKm5zLCBpbnQgY2FwKTsKZXh0ZXJuIGJvb2wgaGFzX2NhcGFiaWxpdHlfbm9hdWRp dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIGludCBjYXApOwpleHRlcm4gYm9vbCBoYXNfbnNfY2Fw YWJpbGl0eV9ub2F1ZGl0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwKICAgICAgICAgIHN0cnVjdCB1 c2VyX25hbWVzcGFjZSAqbnMsIGludCBjYXApOwpleHRlcm4gYm9vbCBjYXBhYmxlKGludCBjYXAp OwpleHRlcm4gYm9vbCBuc19jYXBhYmxlKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqbnMsIGludCBj YXApOwpleHRlcm4gYm9vbCBuc19jYXBhYmxlX25vYXVkaXQoc3RydWN0IHVzZXJfbmFtZXNwYWNl ICpucywgaW50IGNhcCk7CmV4dGVybiBib29sIG5zX2NhcGFibGVfc2V0aWQoc3RydWN0IHVzZXJf bmFtZXNwYWNlICpucywgaW50IGNhcCk7CiMgMjUwICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0 eS5oIgpleHRlcm4gYm9vbCBwcml2aWxlZ2VkX3dydF9pbm9kZV91aWRnaWQoc3RydWN0IHVzZXJf bmFtZXNwYWNlICpucywgY29uc3Qgc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBib29sIGNh cGFibGVfd3J0X2lub2RlX3VpZGdpZChjb25zdCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgY2Fw KTsKZXh0ZXJuIGJvb2wgZmlsZV9uc19jYXBhYmxlKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlLCBz dHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm5zLCBpbnQgY2FwKTsKZXh0ZXJuIGJvb2wgcHRyYWNlcl9j YXBhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm5z KTsKCgpleHRlcm4gaW50IGdldF92ZnNfY2Fwc19mcm9tX2Rpc2soY29uc3Qgc3RydWN0IGRlbnRy eSAqZGVudHJ5LCBzdHJ1Y3QgY3B1X3Zmc19jYXBfZGF0YSAqY3B1X2NhcHMpOwoKZXh0ZXJuIGlu dCBjYXBfY29udmVydF9uc2NhcChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHZvaWQgKippdmFsdWUs IHNpemVfdCBzaXplKTsKIyAyNSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIuL2luY2x1 ZGUvbGludXgvc2VtYXBob3JlLmgiIDEKIyAxNSAiLi9pbmNsdWRlL2xpbnV4L3NlbWFwaG9yZS5o IgpzdHJ1Y3Qgc2VtYXBob3JlIHsKIHJhd19zcGlubG9ja190IGxvY2s7CiB1bnNpZ25lZCBpbnQg Y291bnQ7CiBzdHJ1Y3QgbGlzdF9oZWFkIHdhaXRfbGlzdDsKfTsKIyAzMSAiLi9pbmNsdWRlL2xp bnV4L3NlbWFwaG9yZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNlbWFfaW5pdChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0sIGlu dCB2YWwpCnsKIHN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgX19rZXk7CiAqc2VtID0gKHN0 cnVjdCBzZW1hcGhvcmUpIHsgLmxvY2sgPSAocmF3X3NwaW5sb2NrX3QpIHsgLnJhd19sb2NrID0g eyB7IC52YWwgPSB7ICgwKSB9IH0gfSwgfSwgLmNvdW50ID0gdmFsLCAud2FpdF9saXN0ID0geyAm KCgqc2VtKS53YWl0X2xpc3QpLCAmKCgqc2VtKS53YWl0X2xpc3QpIH0sIH07CiBkbyB7ICh2b2lk KSgic2VtYXBob3JlLT5sb2NrIik7ICh2b2lkKSgmX19rZXkpOyB9IHdoaWxlICgwKTsKfQoKZXh0 ZXJuIHZvaWQgZG93bihzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pOwpleHRlcm4gaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkb3duX2ludGVycnVwdGlibGUoc3RydWN0 IHNlbWFwaG9yZSAqc2VtKTsKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2Vk X3Jlc3VsdF9fKSkgZG93bl9raWxsYWJsZShzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pOwpleHRlcm4g aW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkb3duX3RyeWxvY2so c3RydWN0IHNlbWFwaG9yZSAqc2VtKTsKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkgZG93bl90aW1lb3V0KHN0cnVjdCBzZW1hcGhvcmUgKnNlbSwgbG9u ZyBqaWZmaWVzKTsKZXh0ZXJuIHZvaWQgdXAoc3RydWN0IHNlbWFwaG9yZSAqc2VtKTsKIyAyNiAi Li9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvZmNudGwuaCIgMQoK CgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZmNudGwuaCIgMQoKCgoKIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2ZjbnRsLmgiIDEKIyAxICIuL2luY2x1ZGUv dWFwaS9hc20tZ2VuZXJpYy9mY250bC5oIiAxCiMgMTU2ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2Vu ZXJpYy9mY250bC5oIgpzdHJ1Y3QgZl9vd25lcl9leCB7CiBpbnQgdHlwZTsKIF9fa2VybmVsX3Bp ZF90IHBpZDsKfTsKIyAxOTYgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2ZjbnRsLmgiCnN0 cnVjdCBmbG9jayB7CiBzaG9ydCBsX3R5cGU7CiBzaG9ydCBsX3doZW5jZTsKIF9fa2VybmVsX29m Zl90IGxfc3RhcnQ7CiBfX2tlcm5lbF9vZmZfdCBsX2xlbjsKIF9fa2VybmVsX3BpZF90IGxfcGlk OwoKfTsKCgoKCgoKCnN0cnVjdCBmbG9jazY0IHsKIHNob3J0IGxfdHlwZTsKIHNob3J0IGxfd2hl bmNlOwogX19rZXJuZWxfbG9mZl90IGxfc3RhcnQ7CiBfX2tlcm5lbF9sb2ZmX3QgbF9sZW47CiBf X2tlcm5lbF9waWRfdCBsX3BpZDsKCn07CiMgMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRl ZC91YXBpL2FzbS9mY250bC5oIiAyCiMgNiAiLi9pbmNsdWRlL3VhcGkvbGludXgvZmNudGwuaCIg MgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L29wZW5hdDIuaCIgMQojIDE5ICIuL2luY2x1ZGUv dWFwaS9saW51eC9vcGVuYXQyLmgiCnN0cnVjdCBvcGVuX2hvdyB7CiBfX3U2NCBmbGFnczsKIF9f dTY0IG1vZGU7CiBfX3U2NCByZXNvbHZlOwp9OwojIDcgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2Zj bnRsLmgiIDIKIyA3ICIuL2luY2x1ZGUvbGludXgvZmNudGwuaCIgMgojIDI3ICIuL2luY2x1ZGUv bGludXgvZnMuaCIgMgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2ZpZW1hcC5oIiAxCiMgMTcg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L2ZpZW1hcC5oIgpzdHJ1Y3QgZmllbWFwX2V4dGVudCB7CiBf X3U2NCBmZV9sb2dpY2FsOwoKIF9fdTY0IGZlX3BoeXNpY2FsOwoKIF9fdTY0IGZlX2xlbmd0aDsK IF9fdTY0IGZlX3Jlc2VydmVkNjRbMl07CiBfX3UzMiBmZV9mbGFnczsKIF9fdTMyIGZlX3Jlc2Vy dmVkWzNdOwp9OwoKc3RydWN0IGZpZW1hcCB7CiBfX3U2NCBmbV9zdGFydDsKCiBfX3U2NCBmbV9s ZW5ndGg7CgogX191MzIgZm1fZmxhZ3M7CiBfX3UzMiBmbV9tYXBwZWRfZXh0ZW50czsKIF9fdTMy IGZtX2V4dGVudF9jb3VudDsKIF9fdTMyIGZtX3Jlc2VydmVkOwogc3RydWN0IGZpZW1hcF9leHRl bnQgZm1fZXh0ZW50c1swXTsKfTsKIyAyOCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCgoKIyAx ICIuL2luY2x1ZGUvbGludXgvbWlncmF0ZV9tb2RlLmgiIDEKIyAxNSAiLi9pbmNsdWRlL2xpbnV4 L21pZ3JhdGVfbW9kZS5oIgplbnVtIG1pZ3JhdGVfbW9kZSB7CiBNSUdSQVRFX0FTWU5DLAogTUlH UkFURV9TWU5DX0xJR0hULAogTUlHUkFURV9TWU5DLAogTUlHUkFURV9TWU5DX05PX0NPUFksCn07 CiMgMzIgIi4vaW5jbHVkZS9saW51eC9mcy5oIiAyCgoKIyAxICIuL2luY2x1ZGUvbGludXgvcGVy Y3B1LXJ3c2VtLmgiIDEKCgoKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3JjdXdhaXQuaCIgMQoj IDE1ICIuL2luY2x1ZGUvbGludXgvcmN1d2FpdC5oIgpzdHJ1Y3QgcmN1d2FpdCB7CiBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRhc2s7Cn07CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJjdXdhaXRfaW5pdChzdHJ1Y3QgcmN1d2Fp dCAqdykKewogdy0+dGFzayA9ICgodm9pZCAqKTApOwp9CgpleHRlcm4gdm9pZCByY3V3YWl0X3dh a2VfdXAoc3RydWN0IHJjdXdhaXQgKncpOwojIDkgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcndz ZW0uaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9yY3Vfc3luYy5oIiAxCiMgMTcgIi4vaW5jbHVk ZS9saW51eC9yY3Vfc3luYy5oIgpzdHJ1Y3QgcmN1X3N5bmMgewogaW50IGdwX3N0YXRlOwogaW50 IGdwX2NvdW50Owogd2FpdF9xdWV1ZV9oZWFkX3QgZ3Bfd2FpdDsKCiBzdHJ1Y3QgY2FsbGJhY2tf aGVhZCBjYl9oZWFkOwp9OwojIDMyICIuL2luY2x1ZGUvbGludXgvcmN1X3N5bmMuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBy Y3Vfc3luY19pc19pZGxlKHN0cnVjdCByY3Vfc3luYyAqcnNwKQp7CiBkbyB7IH0gd2hpbGUgKDAp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKIHJldHVybiAhKHsg dW5pb24geyB0eXBlb2YocnNwLT5ncF9zdGF0ZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsg aWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihyc3AtPmdwX3N0YXRlKSwgX191Ll9fYywgc2l6ZW9m KHJzcC0+Z3Bfc3RhdGUpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihyc3AtPmdw X3N0YXRlKSwgX191Ll9fYywgc2l6ZW9mKHJzcC0+Z3Bfc3RhdGUpKTsgZG8geyB9IHdoaWxlICgw KTsgX191Ll9fdmFsOyB9KTsKfQoKZXh0ZXJuIHZvaWQgcmN1X3N5bmNfaW5pdChzdHJ1Y3QgcmN1 X3N5bmMgKik7CmV4dGVybiB2b2lkIHJjdV9zeW5jX2VudGVyX3N0YXJ0KHN0cnVjdCByY3Vfc3lu YyAqKTsKZXh0ZXJuIHZvaWQgcmN1X3N5bmNfZW50ZXIoc3RydWN0IHJjdV9zeW5jICopOwpleHRl cm4gdm9pZCByY3Vfc3luY19leGl0KHN0cnVjdCByY3Vfc3luYyAqKTsKZXh0ZXJuIHZvaWQgcmN1 X3N5bmNfZHRvcihzdHJ1Y3QgcmN1X3N5bmMgKik7CiMgMTAgIi4vaW5jbHVkZS9saW51eC9wZXJj cHUtcndzZW0uaCIgMgoKCnN0cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlIHsKIHN0cnVjdCByY3Vf c3luYyByc3M7CiB1bnNpZ25lZCBpbnQgKnJlYWRfY291bnQ7CiBzdHJ1Y3Qgcndfc2VtYXBob3Jl IHJ3X3NlbTsKIHN0cnVjdCByY3V3YWl0IHdyaXRlcjsKIGludCByZWFkZXJzX2Jsb2NrOwp9Owoj IDMzICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LXJ3c2VtLmgiCmV4dGVybiBpbnQgX19wZXJjcHVf ZG93bl9yZWFkKHN0cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlICosIGludCk7CmV4dGVybiB2b2lk IF9fcGVyY3B1X3VwX3JlYWQoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKik7CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBl cmNwdV9kb3duX3JlYWQoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKnNlbSkKewogZG8geyBk byB7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKCiBkbyB7IH0gd2hpbGUgKDApOwoKIF9fYXNt X18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiMgNTEgIi4vaW5jbHVkZS9saW51eC9w ZXJjcHUtcndzZW0uaCIKICh7IF9fdGhpc19jcHVfcHJlZW1wdF9jaGVjaygiYWRkIik7IGRvIHsg ZG8geyBjb25zdCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKCpzZW0tPnJlYWRfY291 bnQpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyBz d2l0Y2goc2l6ZW9mKCpzZW0tPnJlYWRfY291bnQpKSB7IGNhc2UgMTogZG8geyB0eXBlZGVmIHR5 cGVvZigoKnNlbS0+cmVhZF9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChf X2J1aWx0aW5fY29uc3RhbnRfcCgxKSAmJiAoKDEpID09IDEgfHwgKDEpID09IC0xKSkgPyAoaW50 KSgxKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoMSk7ICh2 b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNh c2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFz bSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp KTsgZWxzZSBhc20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2Vt LT5yZWFkX2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgMjogaWYg KHBhb19JRF9fID09IDEpIGFzbSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3cg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBh c20gKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2Nv dW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9f ID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRs ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAi cmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFz bSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp KTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFv X1RfXykoMSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGls ZSAoMCk7YnJlYWs7IGNhc2UgMjogZG8geyB0eXBlZGVmIHR5cGVvZigoKnNlbS0+cmVhZF9jb3Vu dCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgx KSAmJiAoKDEpID09IDEgfHwgKDEpID09IC0xKSkgPyAoaW50KSgxKSA6IDA7IGlmICgwKSB7IHBh b19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoMSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0 Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09 IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUx LCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWki ICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSAo ImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsg ZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGR3ICUxLCAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1Rf XykoMSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAo cGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsg YnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18g PT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGRl ZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgNDog ZG8geyB0eXBlZGVmIHR5cGVvZigoKnNlbS0+cmVhZF9jb3VudCkpIHBhb19UX187IGNvbnN0IGlu dCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgxKSAmJiAoKDEpID09IDEgfHwgKDEp ID09IC0xKSkgPyAoaW50KSgxKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9f dG1wX18gPSAoMSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVh ZF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFv X0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNl bS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoMSkpKTsgYnJl YWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3cgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0g LTEpIGFzbSAoImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpKTsgZWxzZSBhc20gKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2Ug NDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAo ImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsg ZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5y ZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBh b19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNl bS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20g KCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50 KSkgOiAicmUiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9z aXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgODogZG8geyB0eXBlZGVmIHR5cGVvZigo KnNlbS0+cmVhZF9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0 aW5fY29uc3RhbnRfcCgxKSAmJiAoKDEpID09IDEgfHwgKDEpID09IC0xKSkgPyAoaW50KSgxKSA6 IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoMSk7ICh2b2lkKXBh b190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTog aWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRl Y2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBhc20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFk X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19J RF9fID09IDEpIGFzbSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3cgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJh ZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkg OiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEp IGFzbSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3Vu dCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgo cGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImlu Y3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1RfXyko MSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7 YnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3NpemVfY2FsbF9wYXJhbWV0ZXIoKTticmVhazsgfSB9IHdo aWxlICgwKTsgfSk7CiBpZiAoX19idWlsdGluX2V4cGVjdCghISghcmN1X3N5bmNfaXNfaWRsZSgm c2VtLT5yc3MpKSwgMCkpCiAgX19wZXJjcHVfZG93bl9yZWFkKHNlbSwgZmFsc2UpOwoKCgoKIF9f YXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwZXJjcHVfZG93bl9y ZWFkX3RyeWxvY2soc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKnNlbSkKewogaW50IHJldCA9 IDE7CgogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKCgoKICh7IF9fdGhp c19jcHVfcHJlZW1wdF9jaGVjaygiYWRkIik7IGRvIHsgZG8geyBjb25zdCB2b2lkICpfX3ZwcF92 ZXJpZnkgPSAodHlwZW9mKCgmKCpzZW0tPnJlYWRfY291bnQpKSArIDApKSgodm9pZCAqKTApOyAo dm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyBzd2l0Y2goc2l6ZW9mKCpzZW0tPnJlYWRf Y291bnQpKSB7IGNhc2UgMTogZG8geyB0eXBlZGVmIHR5cGVvZigoKnNlbS0+cmVhZF9jb3VudCkp IHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgxKSAm JiAoKDEpID09IDEgfHwgKDEpID09IC0xKSkgPyAoaW50KSgxKSA6IDA7IGlmICgwKSB7IHBhb19U X18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoMSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2gg KHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEp IGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3Vu dCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUxLCAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWkiICgo cGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImlu Y3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGR3ICUxLCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXyko MSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFv X0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNl bS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJl YWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0g LTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGRlZmF1 bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgMjogZG8g eyB0eXBlZGVmIHR5cGVvZigoKnNlbS0+cmVhZF9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBw YW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgxKSAmJiAoKDEpID09IDEgfHwgKDEpID09 IC0xKSkgPyAoaW50KSgxKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1w X18gPSAoMSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9j b3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lE X18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7 IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEp IGFzbSAoImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3Vu dCkpKTsgZWxzZSBhc20gKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq c2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgNDog aWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRl Y2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFk X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19J RF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJh ZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkg OiAicmUiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXpl KCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgNDogZG8geyB0eXBlZGVmIHR5cGVvZigoKnNl bS0+cmVhZF9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5f Y29uc3RhbnRfcCgxKSAmJiAoKDEpID09IDEgfHwgKDEpID09IC0xKSkgPyAoaW50KSgxKSA6IDA7 IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoMSk7ICh2b2lkKXBhb190 bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYg KHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2Ig IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBh c20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2Nv dW50KSkgOiAicWkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9f ID09IDEpIGFzbSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3cgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGR3 ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAi cmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFz bSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp KTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFv X1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3Eg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBp ZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoMSkp KTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJl YWs7IGNhc2UgODogZG8geyB0eXBlZGVmIHR5cGVvZigoKnNlbS0+cmVhZF9jb3VudCkpIHBhb19U X187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgxKSAmJiAoKDEp ID09IDEgfHwgKDEpID09IC0xKSkgPyAoaW50KSgxKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFv X3RtcF9fOyBwYW9fdG1wX18gPSAoMSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVv ZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAo ImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsg ZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUxLCAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWkiICgocGFvX1Rf XykoMSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3cgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAo cGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsg YnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18g PT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNh c2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFz bSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp KTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2Vt LT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9f YmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3Np emVfY2FsbF9wYXJhbWV0ZXIoKTticmVhazsgfSB9IHdoaWxlICgwKTsgfSk7CiBpZiAoX19idWls dGluX2V4cGVjdCghISghcmN1X3N5bmNfaXNfaWRsZSgmc2VtLT5yc3MpKSwgMCkpCiAgcmV0ID0g X19wZXJjcHVfZG93bl9yZWFkKHNlbSwgdHJ1ZSk7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjog OiA6Im1lbW9yeSIpOwoKCgoKCiBpZiAocmV0KQogIGRvIHsgfSB3aGlsZSAoMCk7CgogcmV0dXJu IHJldDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBwZXJjcHVfdXBfcmVhZChzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFwaG9yZSAq c2VtKQp7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoKCgogaWYgKF9f YnVpbHRpbl9leHBlY3QoISEocmN1X3N5bmNfaXNfaWRsZSgmc2VtLT5yc3MpKSwgMSkpCiAgKHsg X190aGlzX2NwdV9wcmVlbXB0X2NoZWNrKCJhZGQiKTsgZG8geyBkbyB7IGNvbnN0IHZvaWQgKl9f dnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoKnNlbS0+cmVhZF9jb3VudCkpICsgMCkpKCh2b2lkICop MCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoKnNlbS0+ cmVhZF9jb3VudCkpIHsgY2FzZSAxOiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqc2VtLT5yZWFkX2Nv dW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9w KC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgJiYgKCgtKHR5cGVvZigqc2VtLT5yZWFk X2NvdW50KSkoMSkpID09IDEgfHwgKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgPT0g LTEpKSA/IChpbnQpKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgOiAwOyBpZiAoMCkg eyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKC0odHlwZW9mKCpzZW0tPnJlYWRfY291 bnQpKSgxKSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9j b3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lE X18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoLSh0eXBlb2YoKnNl bS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkg YXNtICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50 KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjdyAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZHcgJTEsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6ICJyaSIgKChw YW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFrOyBjYXNlIDQ6 IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJk ZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVs c2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgx KSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFv X0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNl bS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLSh0eXBlb2Yo KnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3Np emUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSAyOiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgq c2VtLT5yZWFkX2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19JRF9fID0gKF9fYnVpbHRp bl9jb25zdGFudF9wKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgJiYgKCgtKHR5cGVv Zigqc2VtLT5yZWFkX2NvdW50KSkoMSkpID09IDEgfHwgKC0odHlwZW9mKCpzZW0tPnJlYWRfY291 bnQpKSgxKSkgPT0gLTEpKSA/IChpbnQpKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkg OiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKC0odHlwZW9mKCpz ZW0tPnJlYWRfY291bnQpKSgxKSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigo KnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImlu Y2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUxLCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWkiICgocGFvX1RfXyko LSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFv X0lEX18gPT0gMSkgYXNtICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2Vt LT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjdyAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAo ImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQp KSA6ICJyaSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJy ZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09 IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRf Y291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpzZW0tPnJl YWRfY291bnQpKSgxKSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAo ImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsg ZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1Rf XykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgZGVmYXVsdDogX19i YWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSA0OiBkbyB7IHR5cGVk ZWYgdHlwZW9mKCgqc2VtLT5yZWFkX2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19JRF9f ID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkg JiYgKCgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpID09IDEgfHwgKC0odHlwZW9mKCpz ZW0tPnJlYWRfY291bnQpKSgxKSkgPT0gLTEpKSA/IChpbnQpKC0odHlwZW9mKCpzZW0tPnJlYWRf Y291bnQpKSgxKSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0g KC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0 Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09 IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUx LCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWki ICgocGFvX1RfXykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgY2Fz ZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNt ICgiZGVjdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkp OyBlbHNlIGFzbSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0t PnJlYWRfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50 KSkoMSkpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlw ZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9f ID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRx ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAi cmUiICgocGFvX1RfXykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsg ZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSA4 OiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqc2VtLT5yZWFkX2NvdW50KSkgcGFvX1RfXzsgY29uc3Qg aW50IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKC0odHlwZW9mKCpzZW0tPnJlYWRf Y291bnQpKSgxKSkgJiYgKCgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpID09IDEgfHwg KC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgPT0gLTEpKSA/IChpbnQpKC0odHlwZW9m KCpzZW0tPnJlYWRfY291bnQpKSgxKSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsg cGFvX3RtcF9fID0gKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSk7ICh2b2lkKXBhb190 bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYg KHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2Ig IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBh c20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2Nv dW50KSkgOiAicWkiICgocGFvX1RfXykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkp OyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jdyAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURf XyA9PSAtMSkgYXNtICgiZGVjdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5y ZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2Vt LT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBh c20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQp KSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBh b19UX18pKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkpKTsgYnJlYWs7IGNhc2UgODog aWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRl Y3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFk X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEp KSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTti cmVhazsgZGVmYXVsdDogX19iYWRfc2l6ZV9jYWxsX3BhcmFtZXRlcigpO2JyZWFrOyB9IH0gd2hp bGUgKDApOyB9KTsKIGVsc2UKICBfX3BlcmNwdV91cF9yZWFkKHNlbSk7CiBfX2FzbV9fIF9fdm9s YXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoKIGRvIHsgfSB3aGlsZSAoMCk7Cn0KCmV4dGVybiB2 b2lkIHBlcmNwdV9kb3duX3dyaXRlKHN0cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlICopOwpleHRl cm4gdm9pZCBwZXJjcHVfdXBfd3JpdGUoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKik7Cgpl eHRlcm4gaW50IF9fcGVyY3B1X2luaXRfcndzZW0oc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUg KiwKICAgIGNvbnN0IGNoYXIgKiwgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICopOwoKZXh0ZXJuIHZv aWQgcGVyY3B1X2ZyZWVfcndzZW0oc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKik7CiMgMTE4 ICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LXJ3c2VtLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X3J3c2VtX3JlbGVh c2Uoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKnNlbSwKICAgICBib29sIHJlYWQsIHVuc2ln bmVkIGxvbmcgaXApCnsKIGRvIHsgfSB3aGlsZSAoMCk7CgogaWYgKCFyZWFkKQogIGF0b21pY19s b25nX3NldCgmc2VtLT5yd19zZW0ub3duZXIsICgtMkwpKTsKCn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X3J3c2Vt X2FjcXVpcmUoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKnNlbSwKICAgICBib29sIHJlYWQs IHVuc2lnbmVkIGxvbmcgaXApCnsKIGRvIHsgfSB3aGlsZSAoMCk7CgogaWYgKCFyZWFkKQogIGF0 b21pY19sb25nX3NldCgmc2VtLT5yd19zZW0ub3duZXIsIChsb25nKWdldF9jdXJyZW50KCkpOwoK fQojIDM1ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgoKIyAxICIuL2luY2x1ZGUvbGludXgvZGVs YXllZF9jYWxsLmgiIDEKIyAxMCAiLi9pbmNsdWRlL2xpbnV4L2RlbGF5ZWRfY2FsbC5oIgpzdHJ1 Y3QgZGVsYXllZF9jYWxsIHsKIHZvaWQgKCpmbikodm9pZCAqKTsKIHZvaWQgKmFyZzsKfTsKCgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgc2V0X2RlbGF5ZWRfY2FsbChzdHJ1Y3QgZGVsYXllZF9jYWxsICpjYWxsLAogIHZvaWQg KCpmbikodm9pZCAqKSwgdm9pZCAqYXJnKQp7CiBjYWxsLT5mbiA9IGZuOwogY2FsbC0+YXJnID0g YXJnOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGRvX2RlbGF5ZWRfY2FsbChzdHJ1Y3QgZGVsYXllZF9jYWxsICpjYWxsKQp7 CiBpZiAoY2FsbC0+Zm4pCiAgY2FsbC0+Zm4oY2FsbC0+YXJnKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGVhcl9kZWxh eWVkX2NhbGwoc3RydWN0IGRlbGF5ZWRfY2FsbCAqY2FsbCkKewogY2FsbC0+Zm4gPSAoKHZvaWQg KikwKTsKfQojIDM3ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51 eC91dWlkLmgiIDEKIyAxMSAiLi9pbmNsdWRlL2xpbnV4L3V1aWQuaCIKIyAxICIuL2luY2x1ZGUv dWFwaS9saW51eC91dWlkLmgiIDEKIyAyMyAiLi9pbmNsdWRlL3VhcGkvbGludXgvdXVpZC5oIgp0 eXBlZGVmIHN0cnVjdCB7CiBfX3U4IGJbMTZdOwp9IGd1aWRfdDsKIyAzNSAiLi9pbmNsdWRlL3Vh cGkvbGludXgvdXVpZC5oIgp0eXBlZGVmIGd1aWRfdCB1dWlkX2xlOwojIDEyICIuL2luY2x1ZGUv bGludXgvdXVpZC5oIiAyCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiBfX3U4IGJbMTZdOwp9IHV1aWRf dDsKIyAzMyAiLi9pbmNsdWRlL2xpbnV4L3V1aWQuaCIKZXh0ZXJuIGNvbnN0IGd1aWRfdCBndWlk X251bGw7CmV4dGVybiBjb25zdCB1dWlkX3QgdXVpZF9udWxsOwoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBndWlkX2VxdWFsKGNv bnN0IGd1aWRfdCAqdTEsIGNvbnN0IGd1aWRfdCAqdTIpCnsKIHJldHVybiBtZW1jbXAodTEsIHUy LCBzaXplb2YoZ3VpZF90KSkgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBndWlkX2NvcHkoZ3VpZF90ICpkc3QsIGNv bnN0IGd1aWRfdCAqc3JjKQp7CiBtZW1jcHkoZHN0LCBzcmMsIHNpemVvZihndWlkX3QpKTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBndWlkX2lzX251bGwoY29uc3QgZ3VpZF90ICpndWlkKQp7CiByZXR1cm4gZ3VpZF9lcXVh bChndWlkLCAmZ3VpZF9udWxsKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1dWlkX2VxdWFsKGNvbnN0IHV1aWRfdCAqdTEs IGNvbnN0IHV1aWRfdCAqdTIpCnsKIHJldHVybiBtZW1jbXAodTEsIHUyLCBzaXplb2YodXVpZF90 KSkgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCB1dWlkX2NvcHkodXVpZF90ICpkc3QsIGNvbnN0IHV1aWRfdCAqc3Jj KQp7CiBtZW1jcHkoZHN0LCBzcmMsIHNpemVvZih1dWlkX3QpKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1dWlkX2lzX251 bGwoY29uc3QgdXVpZF90ICp1dWlkKQp7CiByZXR1cm4gdXVpZF9lcXVhbCh1dWlkLCAmdXVpZF9u dWxsKTsKfQoKdm9pZCBnZW5lcmF0ZV9yYW5kb21fdXVpZCh1bnNpZ25lZCBjaGFyIHV1aWRbMTZd KTsKCmV4dGVybiB2b2lkIGd1aWRfZ2VuKGd1aWRfdCAqdSk7CmV4dGVybiB2b2lkIHV1aWRfZ2Vu KHV1aWRfdCAqdSk7Cgpib29sIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p KSB1dWlkX2lzX3ZhbGlkKGNvbnN0IGNoYXIgKnV1aWQpOwoKZXh0ZXJuIGNvbnN0IHU4IGd1aWRf aW5kZXhbMTZdOwpleHRlcm4gY29uc3QgdTggdXVpZF9pbmRleFsxNl07CgppbnQgZ3VpZF9wYXJz ZShjb25zdCBjaGFyICp1dWlkLCBndWlkX3QgKnUpOwppbnQgdXVpZF9wYXJzZShjb25zdCBjaGFy ICp1dWlkLCB1dWlkX3QgKnUpOwoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB1dWlkX2xlX2NtcChjb25zdCBndWlkX3QgdTEs IGNvbnN0IGd1aWRfdCB1MikKewogcmV0dXJuIG1lbWNtcCgmdTEsICZ1Miwgc2l6ZW9mKGd1aWRf dCkpOwp9CiMgMzggIi4vaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4 L2VycnNlcS5oIiAxCgoKCgoKCgp0eXBlZGVmIHUzMiBlcnJzZXFfdDsKCmVycnNlcV90IGVycnNl cV9zZXQoZXJyc2VxX3QgKmVzZXEsIGludCBlcnIpOwplcnJzZXFfdCBlcnJzZXFfc2FtcGxlKGVy cnNlcV90ICplc2VxKTsKaW50IGVycnNlcV9jaGVjayhlcnJzZXFfdCAqZXNlcSwgZXJyc2VxX3Qg c2luY2UpOwppbnQgZXJyc2VxX2NoZWNrX2FuZF9hZHZhbmNlKGVycnNlcV90ICplc2VxLCBlcnJz ZXFfdCAqc2luY2UpOwojIDM5ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi4vaW5jbHVk ZS9saW51eC9pb3ByaW8uaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMQoj IDEwICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9z Y2hlZC5oIiAxCiMgODkgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NjaGVkLmgiCnN0cnVjdCBjbG9u ZV9hcmdzIHsKIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBmbGFnczsKIF9fdTY0 IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBwaWRmZDsKIF9fdTY0IF9fYXR0cmlidXRlX18o KGFsaWduZWQoOCkpKSBjaGlsZF90aWQ7CiBfX3U2NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgp KSkgcGFyZW50X3RpZDsKIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBleGl0X3Np Z25hbDsKIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBzdGFjazsKIF9fdTY0IF9f YXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBzdGFja19zaXplOwogX191NjQgX19hdHRyaWJ1dGVf XygoYWxpZ25lZCg4KSkpIHRsczsKIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBz ZXRfdGlkOwogX191NjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpIHNldF90aWRfc2l6ZTsK fTsKIyAxMSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCgoKCiMgMSAiLi9pbmNsdWRlL2xp bnV4L3NlbS5oIiAxCgoKCgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NlbS5oIiAxCgoKCgoj IDEgIi4vaW5jbHVkZS9saW51eC9pcGMuaCIgMQoKCgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9y aGFzaHRhYmxlLXR5cGVzLmgiIDEKIyAxNyAiLi9pbmNsdWRlL2xpbnV4L3JoYXNodGFibGUtdHlw ZXMuaCIKc3RydWN0IHJoYXNoX2hlYWQgewogc3RydWN0IHJoYXNoX2hlYWQgKm5leHQ7Cn07Cgpz dHJ1Y3QgcmhsaXN0X2hlYWQgewogc3RydWN0IHJoYXNoX2hlYWQgcmhlYWQ7CiBzdHJ1Y3Qgcmhs aXN0X2hlYWQgKm5leHQ7Cn07CgpzdHJ1Y3QgYnVja2V0X3RhYmxlOwoKCgoKCgpzdHJ1Y3Qgcmhh c2h0YWJsZV9jb21wYXJlX2FyZyB7CiBzdHJ1Y3Qgcmhhc2h0YWJsZSAqaHQ7CiBjb25zdCB2b2lk ICprZXk7Cn07Cgp0eXBlZGVmIHUzMiAoKnJodF9oYXNoZm5fdCkoY29uc3Qgdm9pZCAqZGF0YSwg dTMyIGxlbiwgdTMyIHNlZWQpOwp0eXBlZGVmIHUzMiAoKnJodF9vYmpfaGFzaGZuX3QpKGNvbnN0 IHZvaWQgKmRhdGEsIHUzMiBsZW4sIHUzMiBzZWVkKTsKdHlwZWRlZiBpbnQgKCpyaHRfb2JqX2Nt cGZuX3QpKHN0cnVjdCByaGFzaHRhYmxlX2NvbXBhcmVfYXJnICphcmcsCiAgICAgICAgICBjb25z dCB2b2lkICpvYmopOwojIDU2ICIuL2luY2x1ZGUvbGludXgvcmhhc2h0YWJsZS10eXBlcy5oIgpz dHJ1Y3Qgcmhhc2h0YWJsZV9wYXJhbXMgewogdTE2IG5lbGVtX2hpbnQ7CiB1MTYga2V5X2xlbjsK IHUxNiBrZXlfb2Zmc2V0OwogdTE2IGhlYWRfb2Zmc2V0OwogdW5zaWduZWQgaW50IG1heF9zaXpl OwogdTE2IG1pbl9zaXplOwogYm9vbCBhdXRvbWF0aWNfc2hyaW5raW5nOwogcmh0X2hhc2hmbl90 IGhhc2hmbjsKIHJodF9vYmpfaGFzaGZuX3Qgb2JqX2hhc2hmbjsKIHJodF9vYmpfY21wZm5fdCBv YmpfY21wZm47Cn07CiMgODEgIi4vaW5jbHVkZS9saW51eC9yaGFzaHRhYmxlLXR5cGVzLmgiCnN0 cnVjdCByaGFzaHRhYmxlIHsKIHN0cnVjdCBidWNrZXRfdGFibGUgKnRibDsKIHVuc2lnbmVkIGlu dCBrZXlfbGVuOwogdW5zaWduZWQgaW50IG1heF9lbGVtczsKIHN0cnVjdCByaGFzaHRhYmxlX3Bh cmFtcyBwOwogYm9vbCByaGxpc3Q7CiBzdHJ1Y3Qgd29ya19zdHJ1Y3QgcnVuX3dvcms7CiBzdHJ1 Y3QgbXV0ZXggbXV0ZXg7CiBzcGlubG9ja190IGxvY2s7CiBhdG9taWNfdCBuZWxlbXM7Cn07CgoK CgoKc3RydWN0IHJobHRhYmxlIHsKIHN0cnVjdCByaGFzaHRhYmxlIGh0Owp9OwoKCgoKCgpzdHJ1 Y3Qgcmhhc2h0YWJsZV93YWxrZXIgewogc3RydWN0IGxpc3RfaGVhZCBsaXN0Owogc3RydWN0IGJ1 Y2tldF90YWJsZSAqdGJsOwp9OwojIDEyMCAiLi9pbmNsdWRlL2xpbnV4L3JoYXNodGFibGUtdHlw ZXMuaCIKc3RydWN0IHJoYXNodGFibGVfaXRlciB7CiBzdHJ1Y3Qgcmhhc2h0YWJsZSAqaHQ7CiBz dHJ1Y3Qgcmhhc2hfaGVhZCAqcDsKIHN0cnVjdCByaGxpc3RfaGVhZCAqbGlzdDsKIHN0cnVjdCBy aGFzaHRhYmxlX3dhbGtlciB3YWxrZXI7CiB1bnNpZ25lZCBpbnQgc2xvdDsKIHVuc2lnbmVkIGlu dCBza2lwOwogYm9vbCBlbmRfb2ZfdGFibGU7Cn07CgppbnQgcmhhc2h0YWJsZV9pbml0KHN0cnVj dCByaGFzaHRhYmxlICpodCwKICAgICAgY29uc3Qgc3RydWN0IHJoYXNodGFibGVfcGFyYW1zICpw YXJhbXMpOwppbnQgcmhsdGFibGVfaW5pdChzdHJ1Y3QgcmhsdGFibGUgKmhsdCwKICAgIGNvbnN0 IHN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyAqcGFyYW1zKTsKIyA4ICIuL2luY2x1ZGUvbGludXgv aXBjLmgiIDIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9pcGMuaCIgMQojIDEwICIuL2luY2x1 ZGUvdWFwaS9saW51eC9pcGMuaCIKc3RydWN0IGlwY19wZXJtCnsKIF9fa2VybmVsX2tleV90IGtl eTsKIF9fa2VybmVsX3VpZF90IHVpZDsKIF9fa2VybmVsX2dpZF90IGdpZDsKIF9fa2VybmVsX3Vp ZF90IGN1aWQ7CiBfX2tlcm5lbF9naWRfdCBjZ2lkOwogX19rZXJuZWxfbW9kZV90IG1vZGU7CiB1 bnNpZ25lZCBzaG9ydCBzZXE7Cn07CgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVk L3VhcGkvYXNtL2lwY2J1Zi5oIiAxCiMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvaXBj YnVmLmgiIDEKIyAyMiAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvaXBjYnVmLmgiCnN0cnVj dCBpcGM2NF9wZXJtIHsKIF9fa2VybmVsX2tleV90IGtleTsKIF9fa2VybmVsX3VpZDMyX3QgdWlk OwogX19rZXJuZWxfZ2lkMzJfdCBnaWQ7CiBfX2tlcm5lbF91aWQzMl90IGN1aWQ7CiBfX2tlcm5l bF9naWQzMl90IGNnaWQ7CiBfX2tlcm5lbF9tb2RlX3QgbW9kZTsKCiB1bnNpZ25lZCBjaGFyIF9f cGFkMVs0IC0gc2l6ZW9mKF9fa2VybmVsX21vZGVfdCldOwogdW5zaWduZWQgc2hvcnQgc2VxOwog dW5zaWduZWQgc2hvcnQgX19wYWQyOwogX19rZXJuZWxfdWxvbmdfdCBfX3VudXNlZDE7CiBfX2tl cm5lbF91bG9uZ190IF9fdW51c2VkMjsKfTsKIyAyICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJh dGVkL3VhcGkvYXNtL2lwY2J1Zi5oIiAyCiMgMjMgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2lwYy5o IiAyCiMgNTggIi4vaW5jbHVkZS91YXBpL2xpbnV4L2lwYy5oIgpzdHJ1Y3QgaXBjX2tsdWRnZSB7 CiBzdHJ1Y3QgbXNnYnVmICptc2dwOwogbG9uZyBtc2d0eXA7Cn07CiMgOSAiLi9pbmNsdWRlL2xp bnV4L2lwYy5oIiAyCgoKCnN0cnVjdCBrZXJuX2lwY19wZXJtIHsKIHNwaW5sb2NrX3QgbG9jazsK IGJvb2wgZGVsZXRlZDsKIGludCBpZDsKIGtleV90IGtleTsKIGt1aWRfdCB1aWQ7CiBrZ2lkX3Qg Z2lkOwoga3VpZF90IGN1aWQ7CiBrZ2lkX3QgY2dpZDsKIHVtb2RlX3QgbW9kZTsKIHVuc2lnbmVk IGxvbmcgc2VxOwogdm9pZCAqc2VjdXJpdHk7Cgogc3RydWN0IHJoYXNoX2hlYWQga2h0bm9kZTsK CiBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCByY3U7CiByZWZjb3VudF90IHJlZmNvdW50Owp9IF9fYXR0 cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICg2KSkpKSkgX19hdHRyaWJ1dGVfXygoX19kZXNp Z25hdGVkX2luaXRfXykpOwojIDYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NlbS5oIiAyCiMgMjUg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L3NlbS5oIgpzdHJ1Y3Qgc2VtaWRfZHMgewogc3RydWN0IGlw Y19wZXJtIHNlbV9wZXJtOwogX19rZXJuZWxfb2xkX3RpbWVfdCBzZW1fb3RpbWU7CiBfX2tlcm5l bF9vbGRfdGltZV90IHNlbV9jdGltZTsKIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwogc3RydWN0IHNl bV9xdWV1ZSAqc2VtX3BlbmRpbmc7CiBzdHJ1Y3Qgc2VtX3F1ZXVlICoqc2VtX3BlbmRpbmdfbGFz dDsKIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsKIHVuc2lnbmVkIHNob3J0IHNlbV9uc2VtczsKfTsK CgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zZW1idWYuaCIgMQoKCgoKIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2lwY2J1Zi5oIiAxCiMgNiAiLi9h cmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3NlbWJ1Zi5oIiAyCiMgMTggIi4vYXJjaC94ODYvaW5j bHVkZS91YXBpL2FzbS9zZW1idWYuaCIKc3RydWN0IHNlbWlkNjRfZHMgewogc3RydWN0IGlwYzY0 X3Blcm0gc2VtX3Blcm07CgoKCgoKCiBfX2tlcm5lbF9sb25nX3Qgc2VtX290aW1lOwogX19rZXJu ZWxfdWxvbmdfdCBfX3VudXNlZDE7CiBfX2tlcm5lbF9sb25nX3Qgc2VtX2N0aW1lOwogX19rZXJu ZWxfdWxvbmdfdCBfX3VudXNlZDI7CgogX19rZXJuZWxfdWxvbmdfdCBzZW1fbnNlbXM7CiBfX2tl cm5lbF91bG9uZ190IF9fdW51c2VkMzsKIF9fa2VybmVsX3Vsb25nX3QgX191bnVzZWQ0Owp9Owoj IDM4ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zZW0uaCIgMgoKCnN0cnVjdCBzZW1idWYgewogdW5z aWduZWQgc2hvcnQgc2VtX251bTsKIHNob3J0IHNlbV9vcDsKIHNob3J0IHNlbV9mbGc7Cn07CgoK dW5pb24gc2VtdW4gewogaW50IHZhbDsKIHN0cnVjdCBzZW1pZF9kcyAqYnVmOwogdW5zaWduZWQg c2hvcnQgKmFycmF5Owogc3RydWN0IHNlbWluZm8gKl9fYnVmOwogdm9pZCAqX19wYWQ7Cn07Cgpz dHJ1Y3Qgc2VtaW5mbyB7CiBpbnQgc2VtbWFwOwogaW50IHNlbW1uaTsKIGludCBzZW1tbnM7CiBp bnQgc2VtbW51OwogaW50IHNlbW1zbDsKIGludCBzZW1vcG07CiBpbnQgc2VtdW1lOwogaW50IHNl bXVzejsKIGludCBzZW12bXg7CiBpbnQgc2VtYWVtOwp9OwojIDYgIi4vaW5jbHVkZS9saW51eC9z ZW0uaCIgMgoKc3RydWN0IHRhc2tfc3RydWN0OwpzdHJ1Y3Qgc2VtX3VuZG9fbGlzdDsKCgoKc3Ry dWN0IHN5c3Zfc2VtIHsKIHN0cnVjdCBzZW1fdW5kb19saXN0ICp1bmRvX2xpc3Q7Cn07CgpleHRl cm4gaW50IGNvcHlfc2VtdW5kbyh1bnNpZ25lZCBsb25nIGNsb25lX2ZsYWdzLCBzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnRzayk7CmV4dGVybiB2b2lkIGV4aXRfc2VtKHN0cnVjdCB0YXNrX3N0cnVjdCAq dHNrKTsKIyAxNiAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIuL2luY2x1ZGUvbGlu dXgvc2htLmgiIDEKCgoKCgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zaG0uaCIgMQoKCgoK CgojIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2h1Z2V0bGJfZW5jb2RlLmgiIDEKIyA4 ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zaG0uaCIgMgojIDI4ICIuL2luY2x1ZGUvdWFwaS9saW51 eC9zaG0uaCIKc3RydWN0IHNobWlkX2RzIHsKIHN0cnVjdCBpcGNfcGVybSBzaG1fcGVybTsKIGlu dCBzaG1fc2Vnc3o7CiBfX2tlcm5lbF9vbGRfdGltZV90IHNobV9hdGltZTsKIF9fa2VybmVsX29s ZF90aW1lX3Qgc2htX2R0aW1lOwogX19rZXJuZWxfb2xkX3RpbWVfdCBzaG1fY3RpbWU7CiBfX2tl cm5lbF9pcGNfcGlkX3Qgc2htX2NwaWQ7CiBfX2tlcm5lbF9pcGNfcGlkX3Qgc2htX2xwaWQ7CiB1 bnNpZ25lZCBzaG9ydCBzaG1fbmF0dGNoOwogdW5zaWduZWQgc2hvcnQgc2htX3VudXNlZDsKIHZv aWQgKnNobV91bnVzZWQyOwogdm9pZCAqc2htX3VudXNlZDM7Cn07CgoKIyAxICIuL2FyY2gveDg2 L2luY2x1ZGUvdWFwaS9hc20vc2htYnVmLmgiIDEKCgoKCgojIDEgIi4vaW5jbHVkZS91YXBpL2Fz bS1nZW5lcmljL3NobWJ1Zi5oIiAxCiMgMjUgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3No bWJ1Zi5oIgpzdHJ1Y3Qgc2htaWQ2NF9kcyB7CiBzdHJ1Y3QgaXBjNjRfcGVybSBzaG1fcGVybTsK IHNpemVfdCBzaG1fc2Vnc3o7CgogbG9uZyBzaG1fYXRpbWU7CiBsb25nIHNobV9kdGltZTsKIGxv bmcgc2htX2N0aW1lOwojIDQwICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9zaG1idWYuaCIK IF9fa2VybmVsX3BpZF90IHNobV9jcGlkOwogX19rZXJuZWxfcGlkX3Qgc2htX2xwaWQ7CiB1bnNp Z25lZCBsb25nIHNobV9uYXR0Y2g7CiB1bnNpZ25lZCBsb25nIF9fdW51c2VkNDsKIHVuc2lnbmVk IGxvbmcgX191bnVzZWQ1Owp9OwoKc3RydWN0IHNobWluZm82NCB7CiB1bnNpZ25lZCBsb25nIHNo bW1heDsKIHVuc2lnbmVkIGxvbmcgc2htbWluOwogdW5zaWduZWQgbG9uZyBzaG1tbmk7CiB1bnNp Z25lZCBsb25nIHNobXNlZzsKIHVuc2lnbmVkIGxvbmcgc2htYWxsOwogdW5zaWduZWQgbG9uZyBf X3VudXNlZDE7CiB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKIHVuc2lnbmVkIGxvbmcgX191bnVz ZWQzOwogdW5zaWduZWQgbG9uZyBfX3VudXNlZDQ7Cn07CiMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRl L3VhcGkvYXNtL3NobWJ1Zi5oIiAyCiMgNDQgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NobS5oIiAy CiMgOTMgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NobS5oIgpzdHJ1Y3Qgc2htaW5mbyB7CiBpbnQg c2htbWF4OwogaW50IHNobW1pbjsKIGludCBzaG1tbmk7CiBpbnQgc2htc2VnOwogaW50IHNobWFs bDsKfTsKCnN0cnVjdCBzaG1faW5mbyB7CiBpbnQgdXNlZF9pZHM7CiBfX2tlcm5lbF91bG9uZ190 IHNobV90b3Q7CiBfX2tlcm5lbF91bG9uZ190IHNobV9yc3M7CiBfX2tlcm5lbF91bG9uZ190IHNo bV9zd3A7CiBfX2tlcm5lbF91bG9uZ190IHN3YXBfYXR0ZW1wdHM7CiBfX2tlcm5lbF91bG9uZ190 IHN3YXBfc3VjY2Vzc2VzOwp9OwojIDggIi4vaW5jbHVkZS9saW51eC9zaG0uaCIgMgojIDEgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vc2htcGFyYW0uaCIgMQojIDkgIi4vaW5jbHVkZS9saW51eC9z aG0uaCIgMgoKc3RydWN0IGZpbGU7CgoKc3RydWN0IHN5c3Zfc2htIHsKIHN0cnVjdCBsaXN0X2hl YWQgc2htX2NsaXN0Owp9OwoKbG9uZyBkb19zaG1hdChpbnQgc2htaWQsIGNoYXIgKnNobWFkZHIs IGludCBzaG1mbGcsIHVuc2lnbmVkIGxvbmcgKmFkZHIsCiAgICAgICB1bnNpZ25lZCBsb25nIHNo bWxiYSk7CmJvb2wgaXNfZmlsZV9zaG1faHVnZXBhZ2VzKHN0cnVjdCBmaWxlICpmaWxlKTsKdm9p ZCBleGl0X3NobShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spOwojIDE3ICIuL2luY2x1ZGUvbGlu dXgvc2NoZWQuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9rY292LmgiIDEKCgoKCiMgMSAiLi9p bmNsdWRlL3VhcGkvbGludXgva2Nvdi5oIiAxCiMgMTEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2tj b3YuaCIKc3RydWN0IGtjb3ZfcmVtb3RlX2FyZyB7CiBfX3UzMiB0cmFjZV9tb2RlOwogX191MzIg YXJlYV9zaXplOwogX191MzIgbnVtX2hhbmRsZXM7CiBfX3U2NCBfX2F0dHJpYnV0ZV9fKChhbGln bmVkKDgpKSkgY29tbW9uX2hhbmRsZTsKIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkp KSBoYW5kbGVzWzBdOwp9OwojIDI2ICIuL2luY2x1ZGUvdWFwaS9saW51eC9rY292LmgiCmVudW0g ewojIDM1ICIuL2luY2x1ZGUvdWFwaS9saW51eC9rY292LmgiCiBLQ09WX1RSQUNFX1BDID0gMCwK CiBLQ09WX1RSQUNFX0NNUCA9IDEsCn07CiMgNTYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2tjb3Yu aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX191NjQga2Nvdl9yZW1vdGVfaGFuZGxlKF9fdTY0IHN1YnN5cywgX191NjQgaW5zdCkKewog aWYgKHN1YnN5cyAmIH4oMHhmZnVsbCA8PCA1NikgfHwgaW5zdCAmIH4oMHhmZmZmZmZmZnVsbCkp CiAgcmV0dXJuIDA7CiByZXR1cm4gc3Vic3lzIHwgaW5zdDsKfQojIDYgIi4vaW5jbHVkZS9saW51 eC9rY292LmgiIDIKCnN0cnVjdCB0YXNrX3N0cnVjdDsKIyA1NyAiLi9pbmNsdWRlL2xpbnV4L2tj b3YuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBrY292X3Rhc2tfaW5pdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpIHt9CnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg a2Nvdl90YXNrX2V4aXQoc3RydWN0IHRhc2tfc3RydWN0ICp0KSB7fQpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGtjb3ZfcHJlcGFy ZV9zd2l0Y2goc3RydWN0IHRhc2tfc3RydWN0ICp0KSB7fQpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGtjb3ZfZmluaXNoX3N3aXRj aChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpIHt9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2Nvdl9yZW1vdGVfc3RhcnQodTY0IGhh bmRsZSkge30Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBrY292X3JlbW90ZV9zdG9wKHZvaWQpIHt9CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrY292X2NvbW1vbl9o YW5kbGUodm9pZCkKewogcmV0dXJuIDA7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrY292X3JlbW90ZV9zdGFydF9jb21tb24o dTY0IGlkKSB7fQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGtjb3ZfcmVtb3RlX3N0YXJ0X3VzYih1NjQgaWQpIHt9CiMgMTggIi4v aW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgojIDEgIi4vaW5jbHVkZS9saW51eC9wbGlzdC5oIiAx CiMgNzkgIi4vaW5jbHVkZS9saW51eC9wbGlzdC5oIgpzdHJ1Y3QgcGxpc3RfaGVhZCB7CiBzdHJ1 Y3QgbGlzdF9oZWFkIG5vZGVfbGlzdDsKfTsKCnN0cnVjdCBwbGlzdF9ub2RlIHsKIGludCBwcmlv Owogc3RydWN0IGxpc3RfaGVhZCBwcmlvX2xpc3Q7CiBzdHJ1Y3QgbGlzdF9oZWFkIG5vZGVfbGlz dDsKfTsKIyAxMjEgIi4vaW5jbHVkZS9saW51eC9wbGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCnBsaXN0X2hlYWRfaW5p dChzdHJ1Y3QgcGxpc3RfaGVhZCAqaGVhZCkKewogSU5JVF9MSVNUX0hFQUQoJmhlYWQtPm5vZGVf bGlzdCk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBwbGlzdF9ub2RlX2luaXQoc3RydWN0IHBsaXN0X25vZGUgKm5v ZGUsIGludCBwcmlvKQp7CiBub2RlLT5wcmlvID0gcHJpbzsKIElOSVRfTElTVF9IRUFEKCZub2Rl LT5wcmlvX2xpc3QpOwogSU5JVF9MSVNUX0hFQUQoJm5vZGUtPm5vZGVfbGlzdCk7Cn0KCmV4dGVy biB2b2lkIHBsaXN0X2FkZChzdHJ1Y3QgcGxpc3Rfbm9kZSAqbm9kZSwgc3RydWN0IHBsaXN0X2hl YWQgKmhlYWQpOwpleHRlcm4gdm9pZCBwbGlzdF9kZWwoc3RydWN0IHBsaXN0X25vZGUgKm5vZGUs IHN0cnVjdCBwbGlzdF9oZWFkICpoZWFkKTsKCmV4dGVybiB2b2lkIHBsaXN0X3JlcXVldWUoc3Ry dWN0IHBsaXN0X25vZGUgKm5vZGUsIHN0cnVjdCBwbGlzdF9oZWFkICpoZWFkKTsKIyAyMTAgIi4v aW5jbHVkZS9saW51eC9wbGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGxpc3RfaGVhZF9lbXB0eShjb25zdCBzdHJ1Y3Qg cGxpc3RfaGVhZCAqaGVhZCkKewogcmV0dXJuIGxpc3RfZW1wdHkoJmhlYWQtPm5vZGVfbGlzdCk7 Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgcGxpc3Rfbm9kZV9lbXB0eShjb25zdCBzdHJ1Y3QgcGxpc3Rfbm9kZSAqbm9k ZSkKewogcmV0dXJuIGxpc3RfZW1wdHkoJm5vZGUtPm5vZGVfbGlzdCk7Cn0KIyAyODAgIi4vaW5j bHVkZS9saW51eC9wbGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgcGxpc3Rfbm9kZSAqcGxpc3RfZmlyc3QoY29uc3Qg c3RydWN0IHBsaXN0X2hlYWQgKmhlYWQpCnsKIHJldHVybiAoeyB2b2lkICpfX21wdHIgPSAodm9p ZCAqKShoZWFkLT5ub2RlX2xpc3QubmV4dCk7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGlt ZV9hc3NlcnRfMjgyKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygicG9pbnRlciB0eXBl IG1pc21hdGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISghX19idWlsdGluX3R5cGVz X2NvbXBhdGlibGVfcCh0eXBlb2YoKihoZWFkLT5ub2RlX2xpc3QubmV4dCkpLCB0eXBlb2YoKChz dHJ1Y3QgcGxpc3Rfbm9kZSAqKTApLT5ub2RlX2xpc3QpKSAmJiAhX19idWlsdGluX3R5cGVzX2Nv bXBhdGlibGVfcCh0eXBlb2YoKihoZWFkLT5ub2RlX2xpc3QubmV4dCkpLCB0eXBlb2Yodm9pZCkp KSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzI4MigpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgcGxp c3Rfbm9kZSAqKShfX21wdHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBsaXN0X25vZGUs IG5vZGVfbGlzdCkpKTsgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoK CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgc3RydWN0IHBsaXN0X25vZGUgKnBsaXN0X2xhc3QoY29uc3Qgc3RydWN0IHBsaXN0X2hl YWQgKmhlYWQpCnsKIHJldHVybiAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAqKShoZWFkLT5ub2Rl X2xpc3QucHJldik7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMjk0KHZv aWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygicG9pbnRlciB0eXBlIG1pc21hdGNoIGluIGNv bnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISghX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0 eXBlb2YoKihoZWFkLT5ub2RlX2xpc3QucHJldikpLCB0eXBlb2YoKChzdHJ1Y3QgcGxpc3Rfbm9k ZSAqKTApLT5ub2RlX2xpc3QpKSAmJiAhX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBl b2YoKihoZWFkLT5ub2RlX2xpc3QucHJldikpLCB0eXBlb2Yodm9pZCkpKSkpIF9fY29tcGlsZXRp bWVfYXNzZXJ0XzI5NCgpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgcGxpc3Rfbm9kZSAqKShfX21w dHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBsaXN0X25vZGUsIG5vZGVfbGlzdCkpKTsg fSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQojIDIwICIuL2luY2x1ZGUv bGludXgvc2NoZWQuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9ocnRpbWVyLmgiIDEKIyAxNSAi Li9pbmNsdWRlL2xpbnV4L2hydGltZXIuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvaHJ0aW1lcl9k ZWZzLmgiIDEKIyAxNiAiLi9pbmNsdWRlL2xpbnV4L2hydGltZXIuaCIgMgoKCgoKCiMgMSAiLi9p bmNsdWRlL2xpbnV4L3RpbWVycXVldWUuaCIgMQojIDkgIi4vaW5jbHVkZS9saW51eC90aW1lcnF1 ZXVlLmgiCnN0cnVjdCB0aW1lcnF1ZXVlX25vZGUgewogc3RydWN0IHJiX25vZGUgbm9kZTsKIGt0 aW1lX3QgZXhwaXJlczsKfTsKCnN0cnVjdCB0aW1lcnF1ZXVlX2hlYWQgewogc3RydWN0IHJiX3Jv b3RfY2FjaGVkIHJiX3Jvb3Q7Cn07CgoKZXh0ZXJuIGJvb2wgdGltZXJxdWV1ZV9hZGQoc3RydWN0 IHRpbWVycXVldWVfaGVhZCAqaGVhZCwKICAgICAgc3RydWN0IHRpbWVycXVldWVfbm9kZSAqbm9k ZSk7CmV4dGVybiBib29sIHRpbWVycXVldWVfZGVsKHN0cnVjdCB0aW1lcnF1ZXVlX2hlYWQgKmhl YWQsCiAgICAgIHN0cnVjdCB0aW1lcnF1ZXVlX25vZGUgKm5vZGUpOwpleHRlcm4gc3RydWN0IHRp bWVycXVldWVfbm9kZSAqdGltZXJxdWV1ZV9pdGVyYXRlX25leHQoCiAgICAgIHN0cnVjdCB0aW1l cnF1ZXVlX25vZGUgKm5vZGUpOwojIDMzICIuL2luY2x1ZGUvbGludXgvdGltZXJxdWV1ZS5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKQpz dHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICp0aW1lcnF1ZXVlX2dldG5leHQoc3RydWN0IHRpbWVycXVl dWVfaGVhZCAqaGVhZCkKewogc3RydWN0IHJiX25vZGUgKmxlZnRtb3N0ID0gKCZoZWFkLT5yYl9y b290KS0+cmJfbGVmdG1vc3Q7CgogcmV0dXJuICh7IHZvaWQgKl9fbXB0ciA9ICh2b2lkICopKGxl ZnRtb3N0KTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8zOCh2b2lkKSBf X2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oInBvaW50ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb250YWlu ZXJfb2YoKSIpKSk7IGlmICghKCEoIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9m KCoobGVmdG1vc3QpKSwgdHlwZW9mKCgoc3RydWN0IHRpbWVycXVldWVfbm9kZSAqKTApLT5ub2Rl KSkgJiYgIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCoobGVmdG1vc3QpKSwg dHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF8zOCgpOyB9IHdoaWxlICgwKTsg KChzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICopKF9fbXB0ciAtIF9fYnVpbHRpbl9vZmZzZXRvZihz dHJ1Y3QgdGltZXJxdWV1ZV9ub2RlLCBub2RlKSkpOyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0aW1lcnF1ZXVlX2lu aXQoc3RydWN0IHRpbWVycXVldWVfbm9kZSAqbm9kZSkKewogKCgmbm9kZS0+bm9kZSktPl9fcmJf cGFyZW50X2NvbG9yID0gKHVuc2lnbmVkIGxvbmcpKCZub2RlLT5ub2RlKSk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGlt ZXJxdWV1ZV9ub2RlX3F1ZXVlZChzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICpub2RlKQp7CiByZXR1 cm4gISgoJm5vZGUtPm5vZGUpLT5fX3JiX3BhcmVudF9jb2xvciA9PSAodW5zaWduZWQgbG9uZyko Jm5vZGUtPm5vZGUpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0aW1lcnF1ZXVlX25vZGVfZXhwaXJlcyhzdHJ1Y3QgdGlt ZXJxdWV1ZV9ub2RlICpub2RlKQp7CiByZXR1cm4gbm9kZS0+ZXhwaXJlczsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0aW1l cnF1ZXVlX2luaXRfaGVhZChzdHJ1Y3QgdGltZXJxdWV1ZV9oZWFkICpoZWFkKQp7CiBoZWFkLT5y Yl9yb290ID0gKHN0cnVjdCByYl9yb290X2NhY2hlZCkgeyB7KCh2b2lkICopMCksIH0sICgodm9p ZCAqKTApIH07Cn0KIyAyMiAiLi9pbmNsdWRlL2xpbnV4L2hydGltZXIuaCIgMgoKc3RydWN0IGhy dGltZXJfY2xvY2tfYmFzZTsKc3RydWN0IGhydGltZXJfY3B1X2Jhc2U7CiMgMzggIi4vaW5jbHVk ZS9saW51eC9ocnRpbWVyLmgiCmVudW0gaHJ0aW1lcl9tb2RlIHsKIEhSVElNRVJfTU9ERV9BQlMg PSAweDAwLAogSFJUSU1FUl9NT0RFX1JFTCA9IDB4MDEsCiBIUlRJTUVSX01PREVfUElOTkVEID0g MHgwMiwKIEhSVElNRVJfTU9ERV9TT0ZUID0gMHgwNCwKIEhSVElNRVJfTU9ERV9IQVJEID0gMHgw OCwKCiBIUlRJTUVSX01PREVfQUJTX1BJTk5FRCA9IEhSVElNRVJfTU9ERV9BQlMgfCBIUlRJTUVS X01PREVfUElOTkVELAogSFJUSU1FUl9NT0RFX1JFTF9QSU5ORUQgPSBIUlRJTUVSX01PREVfUkVM IHwgSFJUSU1FUl9NT0RFX1BJTk5FRCwKCiBIUlRJTUVSX01PREVfQUJTX1NPRlQgPSBIUlRJTUVS X01PREVfQUJTIHwgSFJUSU1FUl9NT0RFX1NPRlQsCiBIUlRJTUVSX01PREVfUkVMX1NPRlQgPSBI UlRJTUVSX01PREVfUkVMIHwgSFJUSU1FUl9NT0RFX1NPRlQsCgogSFJUSU1FUl9NT0RFX0FCU19Q SU5ORURfU09GVCA9IEhSVElNRVJfTU9ERV9BQlNfUElOTkVEIHwgSFJUSU1FUl9NT0RFX1NPRlQs CiBIUlRJTUVSX01PREVfUkVMX1BJTk5FRF9TT0ZUID0gSFJUSU1FUl9NT0RFX1JFTF9QSU5ORUQg fCBIUlRJTUVSX01PREVfU09GVCwKCiBIUlRJTUVSX01PREVfQUJTX0hBUkQgPSBIUlRJTUVSX01P REVfQUJTIHwgSFJUSU1FUl9NT0RFX0hBUkQsCiBIUlRJTUVSX01PREVfUkVMX0hBUkQgPSBIUlRJ TUVSX01PREVfUkVMIHwgSFJUSU1FUl9NT0RFX0hBUkQsCgogSFJUSU1FUl9NT0RFX0FCU19QSU5O RURfSEFSRCA9IEhSVElNRVJfTU9ERV9BQlNfUElOTkVEIHwgSFJUSU1FUl9NT0RFX0hBUkQsCiBI UlRJTUVSX01PREVfUkVMX1BJTk5FRF9IQVJEID0gSFJUSU1FUl9NT0RFX1JFTF9QSU5ORUQgfCBI UlRJTUVSX01PREVfSEFSRCwKfTsKCgoKCmVudW0gaHJ0aW1lcl9yZXN0YXJ0IHsKIEhSVElNRVJf Tk9SRVNUQVJULAogSFJUSU1FUl9SRVNUQVJULAp9OwojIDExNyAiLi9pbmNsdWRlL2xpbnV4L2hy dGltZXIuaCIKc3RydWN0IGhydGltZXIgewogc3RydWN0IHRpbWVycXVldWVfbm9kZSBub2RlOwog a3RpbWVfdCBfc29mdGV4cGlyZXM7CiBlbnVtIGhydGltZXJfcmVzdGFydCAoKmZ1bmN0aW9uKShz dHJ1Y3QgaHJ0aW1lciAqKTsKIHN0cnVjdCBocnRpbWVyX2Nsb2NrX2Jhc2UgKmJhc2U7CiB1OCBz dGF0ZTsKIHU4IGlzX3JlbDsKIHU4IGlzX3NvZnQ7CiB1OCBpc19oYXJkOwp9OwojIDEzNSAiLi9p bmNsdWRlL2xpbnV4L2hydGltZXIuaCIKc3RydWN0IGhydGltZXJfc2xlZXBlciB7CiBzdHJ1Y3Qg aHJ0aW1lciB0aW1lcjsKIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKfTsKIyAxNTggIi4vaW5j bHVkZS9saW51eC9ocnRpbWVyLmgiCnN0cnVjdCBocnRpbWVyX2Nsb2NrX2Jhc2Ugewogc3RydWN0 IGhydGltZXJfY3B1X2Jhc2UgKmNwdV9iYXNlOwogdW5zaWduZWQgaW50IGluZGV4OwogY2xvY2tp ZF90IGNsb2NraWQ7CiBzZXFjb3VudF90IHNlcTsKIHN0cnVjdCBocnRpbWVyICpydW5uaW5nOwog c3RydWN0IHRpbWVycXVldWVfaGVhZCBhY3RpdmU7CiBrdGltZV90ICgqZ2V0X3RpbWUpKHZvaWQp Owoga3RpbWVfdCBvZmZzZXQ7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKDYp KSkpKTsKCmVudW0gaHJ0aW1lcl9iYXNlX3R5cGUgewogSFJUSU1FUl9CQVNFX01PTk9UT05JQywK IEhSVElNRVJfQkFTRV9SRUFMVElNRSwKIEhSVElNRVJfQkFTRV9CT09UVElNRSwKIEhSVElNRVJf QkFTRV9UQUksCiBIUlRJTUVSX0JBU0VfTU9OT1RPTklDX1NPRlQsCiBIUlRJTUVSX0JBU0VfUkVB TFRJTUVfU09GVCwKIEhSVElNRVJfQkFTRV9CT09UVElNRV9TT0ZULAogSFJUSU1FUl9CQVNFX1RB SV9TT0ZULAogSFJUSU1FUl9NQVhfQ0xPQ0tfQkFTRVMsCn07CiMgMjEzICIuL2luY2x1ZGUvbGlu dXgvaHJ0aW1lci5oIgpzdHJ1Y3QgaHJ0aW1lcl9jcHVfYmFzZSB7CiByYXdfc3BpbmxvY2tfdCBs b2NrOwogdW5zaWduZWQgaW50IGNwdTsKIHVuc2lnbmVkIGludCBhY3RpdmVfYmFzZXM7CiB1bnNp Z25lZCBpbnQgY2xvY2tfd2FzX3NldF9zZXE7CiB1bnNpZ25lZCBpbnQgaHJlc19hY3RpdmUgOiAx LAogICAgIGluX2hydGlycSA6IDEsCiAgICAgaGFuZ19kZXRlY3RlZCA6IDEsCiAgICAgc29mdGly cV9hY3RpdmF0ZWQgOiAxOwoKIHVuc2lnbmVkIGludCBucl9ldmVudHM7CiB1bnNpZ25lZCBzaG9y dCBucl9yZXRyaWVzOwogdW5zaWduZWQgc2hvcnQgbnJfaGFuZ3M7CiB1bnNpZ25lZCBpbnQgbWF4 X2hhbmdfdGltZTsKCgoKCgoga3RpbWVfdCBleHBpcmVzX25leHQ7CiBzdHJ1Y3QgaHJ0aW1lciAq bmV4dF90aW1lcjsKIGt0aW1lX3Qgc29mdGlycV9leHBpcmVzX25leHQ7CiBzdHJ1Y3QgaHJ0aW1l ciAqc29mdGlycV9uZXh0X3RpbWVyOwogc3RydWN0IGhydGltZXJfY2xvY2tfYmFzZSBjbG9ja19i YXNlW0hSVElNRVJfTUFYX0NMT0NLX0JBU0VTXTsKfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRf XygoMSA8PCAoNikpKSkpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBocnRpbWVyX3NldF9leHBpcmVzKHN0cnVjdCBocnRpbWVy ICp0aW1lciwga3RpbWVfdCB0aW1lKQp7CiB0aW1lci0+bm9kZS5leHBpcmVzID0gdGltZTsKIHRp bWVyLT5fc29mdGV4cGlyZXMgPSB0aW1lOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhydGltZXJfc2V0X2V4cGlyZXNfcmFu Z2Uoc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90IHRpbWUsIGt0aW1lX3QgZGVsdGEpCnsK IHRpbWVyLT5fc29mdGV4cGlyZXMgPSB0aW1lOwogdGltZXItPm5vZGUuZXhwaXJlcyA9IGt0aW1l X2FkZF9zYWZlKHRpbWUsIGRlbHRhKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBocnRpbWVyX3NldF9leHBpcmVzX3Jhbmdl X25zKHN0cnVjdCBocnRpbWVyICp0aW1lciwga3RpbWVfdCB0aW1lLCB1NjQgZGVsdGEpCnsKIHRp bWVyLT5fc29mdGV4cGlyZXMgPSB0aW1lOwogdGltZXItPm5vZGUuZXhwaXJlcyA9IGt0aW1lX2Fk ZF9zYWZlKHRpbWUsIG5zX3RvX2t0aW1lKGRlbHRhKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaHJ0aW1lcl9zZXRfZXhw aXJlc190djY0KHN0cnVjdCBocnRpbWVyICp0aW1lciwgczY0IHR2NjQpCnsKIHRpbWVyLT5ub2Rl LmV4cGlyZXMgPSB0djY0OwogdGltZXItPl9zb2Z0ZXhwaXJlcyA9IHR2NjQ7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaHJ0 aW1lcl9hZGRfZXhwaXJlcyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsIGt0aW1lX3QgdGltZSkKewog dGltZXItPm5vZGUuZXhwaXJlcyA9IGt0aW1lX2FkZF9zYWZlKHRpbWVyLT5ub2RlLmV4cGlyZXMs IHRpbWUpOwogdGltZXItPl9zb2Z0ZXhwaXJlcyA9IGt0aW1lX2FkZF9zYWZlKHRpbWVyLT5fc29m dGV4cGlyZXMsIHRpbWUpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhydGltZXJfYWRkX2V4cGlyZXNfbnMoc3RydWN0IGhy dGltZXIgKnRpbWVyLCB1NjQgbnMpCnsKIHRpbWVyLT5ub2RlLmV4cGlyZXMgPSAoKHRpbWVyLT5u b2RlLmV4cGlyZXMpICsgKG5zKSk7CiB0aW1lci0+X3NvZnRleHBpcmVzID0gKCh0aW1lci0+X3Nv ZnRleHBpcmVzKSArIChucykpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGhydGltZXJfZ2V0X2V4cGlyZXMoY29uc3Qg c3RydWN0IGhydGltZXIgKnRpbWVyKQp7CiByZXR1cm4gdGltZXItPm5vZGUuZXhwaXJlczsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg a3RpbWVfdCBocnRpbWVyX2dldF9zb2Z0ZXhwaXJlcyhjb25zdCBzdHJ1Y3QgaHJ0aW1lciAqdGlt ZXIpCnsKIHJldHVybiB0aW1lci0+X3NvZnRleHBpcmVzOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQgaHJ0aW1lcl9nZXRfZXhw aXJlc190djY0KGNvbnN0IHN0cnVjdCBocnRpbWVyICp0aW1lcikKewogcmV0dXJuIHRpbWVyLT5u b2RlLmV4cGlyZXM7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgczY0IGhydGltZXJfZ2V0X3NvZnRleHBpcmVzX3R2NjQoY29uc3Qgc3Ry dWN0IGhydGltZXIgKnRpbWVyKQp7CiByZXR1cm4gdGltZXItPl9zb2Z0ZXhwaXJlczsKfQoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0 IGhydGltZXJfZ2V0X2V4cGlyZXNfbnMoY29uc3Qgc3RydWN0IGhydGltZXIgKnRpbWVyKQp7CiBy ZXR1cm4ga3RpbWVfdG9fbnModGltZXItPm5vZGUuZXhwaXJlcyk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3QgaHJ0aW1l cl9leHBpcmVzX3JlbWFpbmluZyhjb25zdCBzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCnsKIHJldHVy biAoKHRpbWVyLT5ub2RlLmV4cGlyZXMpIC0gKHRpbWVyLT5iYXNlLT5nZXRfdGltZSgpKSk7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGt0aW1lX3QgaHJ0aW1lcl9jYl9nZXRfdGltZShzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCnsKIHJl dHVybiB0aW1lci0+YmFzZS0+Z2V0X3RpbWUoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGhydGltZXJfaXNfaHJlc19hY3Rp dmUoc3RydWN0IGhydGltZXIgKnRpbWVyKQp7CiByZXR1cm4gMSA/CiAgdGltZXItPmJhc2UtPmNw dV9iYXNlLT5ocmVzX2FjdGl2ZSA6IDA7Cn0KCgpzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlOwoK ZXh0ZXJuIHZvaWQgaHJ0aW1lcl9pbnRlcnJ1cHQoc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAq ZGV2KTsKCmV4dGVybiB2b2lkIGNsb2NrX3dhc19zZXRfZGVsYXllZCh2b2lkKTsKCmV4dGVybiB1 bnNpZ25lZCBpbnQgaHJ0aW1lcl9yZXNvbHV0aW9uOwojIDMzMiAiLi9pbmNsdWRlL2xpbnV4L2hy dGltZXIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkga3RpbWVfdApfX2hydGltZXJfZXhwaXJlc19yZW1haW5pbmdfYWRqdXN0ZWQoY29u c3Qgc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90IG5vdykKewoga3RpbWVfdCByZW0gPSAo KHRpbWVyLT5ub2RlLmV4cGlyZXMpIC0gKG5vdykpOwoKCgoKCiBpZiAoMCAmJiB0aW1lci0+aXNf cmVsKQogIHJlbSAtPSBocnRpbWVyX3Jlc29sdXRpb247CiByZXR1cm4gcmVtOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90 CmhydGltZXJfZXhwaXJlc19yZW1haW5pbmdfYWRqdXN0ZWQoY29uc3Qgc3RydWN0IGhydGltZXIg KnRpbWVyKQp7CiByZXR1cm4gX19ocnRpbWVyX2V4cGlyZXNfcmVtYWluaW5nX2FkanVzdGVkKHRp bWVyLAogICAgICAgICAgdGltZXItPmJhc2UtPmdldF90aW1lKCkpOwp9CgpleHRlcm4gdm9pZCBj bG9ja193YXNfc2V0KHZvaWQpOwoKZXh0ZXJuIHZvaWQgdGltZXJmZF9jbG9ja193YXNfc2V0KHZv aWQpOwoKCgpleHRlcm4gdm9pZCBocnRpbWVyc19yZXN1bWUodm9pZCk7CgpleHRlcm4gX19hdHRy aWJ1dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIiIpKSkgX190eXBlb2ZfXyhzdHJ1Y3Qg dGlja19kZXZpY2UpIHRpY2tfY3B1X2RldmljZTsKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaHJ0aW1lcl9jYW5jZWxfd2Fp dF9ydW5uaW5nKHN0cnVjdCBocnRpbWVyICp0aW1lcikKewogY3B1X3JlbGF4KCk7Cn0KCgoKCgpl eHRlcm4gdm9pZCBocnRpbWVyX2luaXQoc3RydWN0IGhydGltZXIgKnRpbWVyLCBjbG9ja2lkX3Qg d2hpY2hfY2xvY2ssCiAgICBlbnVtIGhydGltZXJfbW9kZSBtb2RlKTsKZXh0ZXJuIHZvaWQgaHJ0 aW1lcl9pbml0X3NsZWVwZXIoc3RydWN0IGhydGltZXJfc2xlZXBlciAqc2wsIGNsb2NraWRfdCBj bG9ja19pZCwKICAgICBlbnVtIGhydGltZXJfbW9kZSBtb2RlKTsKIyAzODkgIi4vaW5jbHVkZS9s aW51eC9ocnRpbWVyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgaHJ0aW1lcl9pbml0X29uX3N0YWNrKHN0cnVjdCBocnRpbWVy ICp0aW1lciwKICAgICAgY2xvY2tpZF90IHdoaWNoX2Nsb2NrLAogICAgICBlbnVtIGhydGltZXJf bW9kZSBtb2RlKQp7CiBocnRpbWVyX2luaXQodGltZXIsIHdoaWNoX2Nsb2NrLCBtb2RlKTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBocnRpbWVyX2luaXRfc2xlZXBlcl9vbl9zdGFjayhzdHJ1Y3QgaHJ0aW1lcl9zbGVlcGVy ICpzbCwKICAgICAgIGNsb2NraWRfdCBjbG9ja19pZCwKICAgICAgIGVudW0gaHJ0aW1lcl9tb2Rl IG1vZGUpCnsKIGhydGltZXJfaW5pdF9zbGVlcGVyKHNsLCBjbG9ja19pZCwgbW9kZSk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgZGVzdHJveV9ocnRpbWVyX29uX3N0YWNrKHN0cnVjdCBocnRpbWVyICp0aW1lcikgeyB9CgoK CmV4dGVybiB2b2lkIGhydGltZXJfc3RhcnRfcmFuZ2VfbnMoc3RydWN0IGhydGltZXIgKnRpbWVy LCBrdGltZV90IHRpbSwKICAgICAgIHU2NCByYW5nZV9ucywgY29uc3QgZW51bSBocnRpbWVyX21v ZGUgbW9kZSk7CiMgNDE4ICIuL2luY2x1ZGUvbGludXgvaHJ0aW1lci5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhydGltZXJf c3RhcnQoc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90IHRpbSwKICAgICBjb25zdCBlbnVt IGhydGltZXJfbW9kZSBtb2RlKQp7CiBocnRpbWVyX3N0YXJ0X3JhbmdlX25zKHRpbWVyLCB0aW0s IDAsIG1vZGUpOwp9CgpleHRlcm4gaW50IGhydGltZXJfY2FuY2VsKHN0cnVjdCBocnRpbWVyICp0 aW1lcik7CmV4dGVybiBpbnQgaHJ0aW1lcl90cnlfdG9fY2FuY2VsKHN0cnVjdCBocnRpbWVyICp0 aW1lcik7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGhydGltZXJfc3RhcnRfZXhwaXJlcyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIs CiAgICAgIGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpCnsKIHU2NCBkZWx0YTsKIGt0aW1lX3Qgc29m dCwgaGFyZDsKIHNvZnQgPSBocnRpbWVyX2dldF9zb2Z0ZXhwaXJlcyh0aW1lcik7CiBoYXJkID0g aHJ0aW1lcl9nZXRfZXhwaXJlcyh0aW1lcik7CiBkZWx0YSA9IGt0aW1lX3RvX25zKCgoaGFyZCkg LSAoc29mdCkpKTsKIGhydGltZXJfc3RhcnRfcmFuZ2VfbnModGltZXIsIHNvZnQsIGRlbHRhLCBt b2RlKTsKfQoKdm9pZCBocnRpbWVyX3NsZWVwZXJfc3RhcnRfZXhwaXJlcyhzdHJ1Y3QgaHJ0aW1l cl9zbGVlcGVyICpzbCwKICAgICAgIGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpOwoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBocnRp bWVyX3Jlc3RhcnQoc3RydWN0IGhydGltZXIgKnRpbWVyKQp7CiBocnRpbWVyX3N0YXJ0X2V4cGly ZXModGltZXIsIEhSVElNRVJfTU9ERV9BQlMpOwp9CgoKZXh0ZXJuIGt0aW1lX3QgX19ocnRpbWVy X2dldF9yZW1haW5pbmcoY29uc3Qgc3RydWN0IGhydGltZXIgKnRpbWVyLCBib29sIGFkanVzdCk7 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBrdGltZV90IGhydGltZXJfZ2V0X3JlbWFpbmluZyhjb25zdCBzdHJ1Y3QgaHJ0aW1lciAqdGlt ZXIpCnsKIHJldHVybiBfX2hydGltZXJfZ2V0X3JlbWFpbmluZyh0aW1lciwgZmFsc2UpOwp9Cgpl eHRlcm4gdTY0IGhydGltZXJfZ2V0X25leHRfZXZlbnQodm9pZCk7CmV4dGVybiB1NjQgaHJ0aW1l cl9uZXh0X2V2ZW50X3dpdGhvdXQoY29uc3Qgc3RydWN0IGhydGltZXIgKmV4Y2x1ZGUpOwoKZXh0 ZXJuIGJvb2wgaHJ0aW1lcl9hY3RpdmUoY29uc3Qgc3RydWN0IGhydGltZXIgKnRpbWVyKTsKIyA0 NjcgIi4vaW5jbHVkZS9saW51eC9ocnRpbWVyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaHJ0aW1lcl9pc19xdWV1ZWQoc3Ry dWN0IGhydGltZXIgKnRpbWVyKQp7CgogcmV0dXJuICEhKCh7IHVuaW9uIHsgdHlwZW9mKHRpbWVy LT5zdGF0ZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3Np emUoJih0aW1lci0+c3RhdGUpLCBfX3UuX19jLCBzaXplb2YodGltZXItPnN0YXRlKSk7IGVsc2Ug X19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYodGltZXItPnN0YXRlKSwgX191Ll9fYywgc2l6ZW9m KHRpbWVyLT5zdGF0ZSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pICYgMHgwMSk7 Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgaHJ0aW1lcl9jYWxsYmFja19ydW5uaW5nKHN0cnVjdCBocnRpbWVyICp0aW1l cikKewogcmV0dXJuIHRpbWVyLT5iYXNlLT5ydW5uaW5nID09IHRpbWVyOwp9CgoKZXh0ZXJuIHU2 NApocnRpbWVyX2ZvcndhcmQoc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90IG5vdywga3Rp bWVfdCBpbnRlcnZhbCk7CiMgNTAyICIuL2luY2x1ZGUvbGludXgvaHJ0aW1lci5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQgaHJ0 aW1lcl9mb3J3YXJkX25vdyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsCiAgICAgICAgICBrdGltZV90 IGludGVydmFsKQp7CiByZXR1cm4gaHJ0aW1lcl9mb3J3YXJkKHRpbWVyLCB0aW1lci0+YmFzZS0+ Z2V0X3RpbWUoKSwgaW50ZXJ2YWwpOwp9CgoKCmV4dGVybiBpbnQgbmFub3NsZWVwX2NvcHlvdXQo c3RydWN0IHJlc3RhcnRfYmxvY2sgKiwgc3RydWN0IHRpbWVzcGVjNjQgKik7CmV4dGVybiBsb25n IGhydGltZXJfbmFub3NsZWVwKGt0aW1lX3QgcnF0cCwgY29uc3QgZW51bSBocnRpbWVyX21vZGUg bW9kZSwKICAgICAgICAgY29uc3QgY2xvY2tpZF90IGNsb2NraWQpOwoKZXh0ZXJuIGludCBzY2hl ZHVsZV9ocnRpbWVvdXRfcmFuZ2Uoa3RpbWVfdCAqZXhwaXJlcywgdTY0IGRlbHRhLAogICAgICAg IGNvbnN0IGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpOwpleHRlcm4gaW50IHNjaGVkdWxlX2hydGlt ZW91dF9yYW5nZV9jbG9jayhrdGltZV90ICpleHBpcmVzLAogICAgICAgdTY0IGRlbHRhLAogICAg ICAgY29uc3QgZW51bSBocnRpbWVyX21vZGUgbW9kZSwKICAgICAgIGNsb2NraWRfdCBjbG9ja19p ZCk7CmV4dGVybiBpbnQgc2NoZWR1bGVfaHJ0aW1lb3V0KGt0aW1lX3QgKmV4cGlyZXMsIGNvbnN0 IGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpOwoKCmV4dGVybiB2b2lkIGhydGltZXJfcnVuX3F1ZXVl cyh2b2lkKTsKCgpleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQu dGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBocnRpbWVyc19pbml0KHZvaWQpOwoK CmV4dGVybiB2b2lkIHN5c3JxX3RpbWVyX2xpc3Rfc2hvdyh2b2lkKTsKCmludCBocnRpbWVyc19w cmVwYXJlX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKCmludCBocnRpbWVyc19kZWFkX2NwdSh1bnNp Z25lZCBpbnQgY3B1KTsKIyAyMSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIuL2lu Y2x1ZGUvbGludXgvc2VjY29tcC5oIiAxCgoKCgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3Nl Y2NvbXAuaCIgMQojIDU5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zZWNjb21wLmgiCnN0cnVjdCBz ZWNjb21wX2RhdGEgewogaW50IG5yOwogX191MzIgYXJjaDsKIF9fdTY0IGluc3RydWN0aW9uX3Bv aW50ZXI7CiBfX3U2NCBhcmdzWzZdOwp9OwoKc3RydWN0IHNlY2NvbXBfbm90aWZfc2l6ZXMgewog X191MTYgc2VjY29tcF9ub3RpZjsKIF9fdTE2IHNlY2NvbXBfbm90aWZfcmVzcDsKIF9fdTE2IHNl Y2NvbXBfZGF0YTsKfTsKCnN0cnVjdCBzZWNjb21wX25vdGlmIHsKIF9fdTY0IGlkOwogX191MzIg cGlkOwogX191MzIgZmxhZ3M7CiBzdHJ1Y3Qgc2VjY29tcF9kYXRhIGRhdGE7Cn07CiMgMTA4ICIu L2luY2x1ZGUvdWFwaS9saW51eC9zZWNjb21wLmgiCnN0cnVjdCBzZWNjb21wX25vdGlmX3Jlc3Ag ewogX191NjQgaWQ7CiBfX3M2NCB2YWw7CiBfX3MzMiBlcnJvcjsKIF9fdTMyIGZsYWdzOwp9Owoj IDYgIi4vaW5jbHVkZS9saW51eC9zZWNjb21wLmgiIDIKIyAxNSAiLi9pbmNsdWRlL2xpbnV4L3Nl Y2NvbXAuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NlY2NvbXAuaCIgMQoKCgoKIyAx ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VuaXN0ZC5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS91bmlzdGQuaCIgMQojIDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v dW5pc3RkLmgiIDIKIyAxOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91bmlzdGQuaCIKIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3VuaXN0ZF82NC5oIiAxCiMgMTkg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vdW5pc3RkLmgiIDIKIyAxICIuL2FyY2gveDg2L2luY2x1 ZGUvZ2VuZXJhdGVkL2FzbS91bmlzdGRfNjRfeDMyLmgiIDEKIyAyMCAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS91bmlzdGQuaCIgMgojIDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc2VjY29tcC5o IiAyCiMgMTkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc2VjY29tcC5oIgojIDEgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9zZWNjb21wLmgiIDEKIyAxMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3Nl Y2NvbXAuaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC91bmlzdGQuaCIgMQojIDEyICIuL2lu Y2x1ZGUvYXNtLWdlbmVyaWMvc2VjY29tcC5oIiAyCiMgMjAgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vc2VjY29tcC5oIiAyCiMgMTYgIi4vaW5jbHVkZS9saW51eC9zZWNjb21wLmgiIDIKCnN0cnVj dCBzZWNjb21wX2ZpbHRlcjsKIyAyOSAiLi9pbmNsdWRlL2xpbnV4L3NlY2NvbXAuaCIKc3RydWN0 IHNlY2NvbXAgewogaW50IG1vZGU7CiBzdHJ1Y3Qgc2VjY29tcF9maWx0ZXIgKmZpbHRlcjsKfTsK CgpleHRlcm4gaW50IF9fc2VjdXJlX2NvbXB1dGluZyhjb25zdCBzdHJ1Y3Qgc2VjY29tcF9kYXRh ICpzZCk7CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludCBzZWN1cmVfY29tcHV0aW5nKHZvaWQpCnsKIGlmIChfX2J1aWx0aW5fZXhwZWN0 KCEhKHRlc3RfdGlfdGhyZWFkX2ZsYWcoKChzdHJ1Y3QgdGhyZWFkX2luZm8gKilnZXRfY3VycmVu dCgpKSwgOCkpLCAwKSkKICByZXR1cm4gX19zZWN1cmVfY29tcHV0aW5nKCgodm9pZCAqKTApKTsK IHJldHVybiAwOwp9CgoKCgpleHRlcm4gbG9uZyBwcmN0bF9nZXRfc2VjY29tcCh2b2lkKTsKZXh0 ZXJuIGxvbmcgcHJjdGxfc2V0X3NlY2NvbXAodW5zaWduZWQgbG9uZywgdm9pZCAqKTsKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBz ZWNjb21wX21vZGUoc3RydWN0IHNlY2NvbXAgKnMpCnsKIHJldHVybiBzLT5tb2RlOwp9CiMgODQg Ii4vaW5jbHVkZS9saW51eC9zZWNjb21wLmgiCmV4dGVybiB2b2lkIHB1dF9zZWNjb21wX2ZpbHRl cihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7CmV4dGVybiB2b2lkIGdldF9zZWNjb21wX2ZpbHRl cihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7CiMgOTggIi4vaW5jbHVkZS9saW51eC9zZWNjb21w LmgiCmV4dGVybiBsb25nIHNlY2NvbXBfZ2V0X2ZpbHRlcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2ssCiAgICAgICAgICB1bnNpZ25lZCBsb25nIGZpbHRlcl9vZmYsIHZvaWQgKmRhdGEpOwpleHRl cm4gbG9uZyBzZWNjb21wX2dldF9tZXRhZGF0YShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssCiAg ICAgdW5zaWduZWQgbG9uZyBmaWx0ZXJfb2ZmLCB2b2lkICpkYXRhKTsKIyAyMiAiLi9pbmNsdWRl L2xpbnV4L3NjaGVkLmgiIDIKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIgMQoK CgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9yZXNvdXJjZS5oIiAxCiMgMjQgIi4vaW5jbHVk ZS91YXBpL2xpbnV4L3Jlc291cmNlLmgiCnN0cnVjdCBydXNhZ2Ugewogc3RydWN0IF9fa2VybmVs X29sZF90aW1ldmFsIHJ1X3V0aW1lOwogc3RydWN0IF9fa2VybmVsX29sZF90aW1ldmFsIHJ1X3N0 aW1lOwogX19rZXJuZWxfbG9uZ190IHJ1X21heHJzczsKIF9fa2VybmVsX2xvbmdfdCBydV9peHJz czsKIF9fa2VybmVsX2xvbmdfdCBydV9pZHJzczsKIF9fa2VybmVsX2xvbmdfdCBydV9pc3JzczsK IF9fa2VybmVsX2xvbmdfdCBydV9taW5mbHQ7CiBfX2tlcm5lbF9sb25nX3QgcnVfbWFqZmx0Owog X19rZXJuZWxfbG9uZ190IHJ1X25zd2FwOwogX19rZXJuZWxfbG9uZ190IHJ1X2luYmxvY2s7CiBf X2tlcm5lbF9sb25nX3QgcnVfb3VibG9jazsKIF9fa2VybmVsX2xvbmdfdCBydV9tc2dzbmQ7CiBf X2tlcm5lbF9sb25nX3QgcnVfbXNncmN2OwogX19rZXJuZWxfbG9uZ190IHJ1X25zaWduYWxzOwog X19rZXJuZWxfbG9uZ190IHJ1X252Y3N3OwogX19rZXJuZWxfbG9uZ190IHJ1X25pdmNzdzsKfTsK CnN0cnVjdCBybGltaXQgewogX19rZXJuZWxfdWxvbmdfdCBybGltX2N1cjsKIF9fa2VybmVsX3Vs b25nX3QgcmxpbV9tYXg7Cn07CgoKCnN0cnVjdCBybGltaXQ2NCB7CiBfX3U2NCBybGltX2N1cjsK IF9fdTY0IHJsaW1fbWF4Owp9OwojIDc4ICIuL2luY2x1ZGUvdWFwaS9saW51eC9yZXNvdXJjZS5o IgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vcmVzb3VyY2UuaCIg MQojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9yZXNvdXJjZS5oIiAxCgoKCgojIDEgIi4vaW5j bHVkZS91YXBpL2FzbS1nZW5lcmljL3Jlc291cmNlLmgiIDEKIyA2ICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvcmVzb3VyY2UuaCIgMgojIDIgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFw aS9hc20vcmVzb3VyY2UuaCIgMgojIDc5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9yZXNvdXJjZS5o IiAyCiMgNiAiLi9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIKCgpzdHJ1Y3QgdGFza19zdHJ1 Y3Q7Cgp2b2lkIGdldHJ1c2FnZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCB3aG8sIHN0cnVj dCBydXNhZ2UgKnJ1KTsKaW50IGRvX3BybGltaXQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVu c2lnbmVkIGludCByZXNvdXJjZSwKICBzdHJ1Y3QgcmxpbWl0ICpuZXdfcmxpbSwgc3RydWN0IHJs aW1pdCAqb2xkX3JsaW0pOwojIDI2ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi4v aW5jbHVkZS9saW51eC9sYXRlbmN5dG9wLmgiIDEKIyAxNCAiLi9pbmNsdWRlL2xpbnV4L2xhdGVu Y3l0b3AuaCIKc3RydWN0IHRhc2tfc3RydWN0OwoKCgoKCgpzdHJ1Y3QgbGF0ZW5jeV9yZWNvcmQg ewogdW5zaWduZWQgbG9uZyBiYWNrdHJhY2VbMTJdOwogdW5zaWduZWQgaW50IGNvdW50OwogdW5z aWduZWQgbG9uZyB0aW1lOwogdW5zaWduZWQgbG9uZyBtYXg7Cn07CgoKCmV4dGVybiBpbnQgbGF0 ZW5jeXRvcF9lbmFibGVkOwp2b2lkIF9fYWNjb3VudF9zY2hlZHVsZXJfbGF0ZW5jeShzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRhc2ssIGludCB1c2VjcywgaW50IGludGVyKTsKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAphY2NvdW50X3Nj aGVkdWxlcl9sYXRlbmN5KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgaW50IHVzZWNzLCBpbnQg aW50ZXIpCnsKIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGxhdGVuY3l0b3BfZW5hYmxlZCksIDAp KQogIF9fYWNjb3VudF9zY2hlZHVsZXJfbGF0ZW5jeSh0YXNrLCB1c2VjcywgaW50ZXIpOwp9Cgp2 b2lkIGNsZWFyX3Rza19sYXRlbmN5X3RyYWNpbmcoc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKCmV4 dGVybiBpbnQgc3lzY3RsX2xhdGVuY3l0b3Aoc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3 cml0ZSwKICAgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqcHBvcyk7CiMgMjcg Ii4vaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkL3By aW8uaCIgMQojIDQ4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQvcHJpby5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nIG5pY2VfdG9f cmxpbWl0KGxvbmcgbmljZSkKewogcmV0dXJuICgxOSAtIG5pY2UgKyAxKTsKfQoKCgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZyBy bGltaXRfdG9fbmljZShsb25nIHByaW8pCnsKIHJldHVybiAoMTkgLSBwcmlvICsgMSk7Cn0KIyAy OCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvc2NoZWQv dHlwZXMuaCIgMQojIDE3ICIuL2luY2x1ZGUvbGludXgvc2NoZWQvdHlwZXMuaCIKc3RydWN0IHRh c2tfY3B1dGltZSB7CiB1NjQgc3RpbWU7CiB1NjQgdXRpbWU7CiB1bnNpZ25lZCBsb25nIGxvbmcg c3VtX2V4ZWNfcnVudGltZTsKfTsKIyAyOSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAx ICIuL2luY2x1ZGUvbGludXgvc2lnbmFsX3R5cGVzLmgiIDEKIyAxMCAiLi9pbmNsdWRlL2xpbnV4 L3NpZ25hbF90eXBlcy5oIgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NpZ25hbC5oIiAxCgoK CgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc2lnbmFsLmgiIDEKIyAyMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9zaWduYWwuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIG9sZF9zaWdzZXRf dDsKCnR5cGVkZWYgc3RydWN0IHsKIHVuc2lnbmVkIGxvbmcgc2lnWyg2NCAvIDY0KV07Cn0gc2ln c2V0X3Q7CgoKCgoKCnR5cGVkZWYgc2lnc2V0X3QgY29tcGF0X3NpZ3NldF90OwoKCgojIDEgIi4v YXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaWduYWwuaCIgMQojIDExICIuL2FyY2gveDg2L2lu Y2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgiCnN0cnVjdCBzaWdpbmZvOwojIDk0ICIuL2FyY2gveDg2 L2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgiCiMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVy aWMvc2lnbmFsLWRlZnMuaCIgMQojIDE4ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9zaWdu YWwtZGVmcy5oIgp0eXBlZGVmIHZvaWQgX19zaWduYWxmbl90KGludCk7CnR5cGVkZWYgX19zaWdu YWxmbl90ICpfX3NpZ2hhbmRsZXJfdDsKCnR5cGVkZWYgdm9pZCBfX3Jlc3RvcmVmbl90KHZvaWQp Owp0eXBlZGVmIF9fcmVzdG9yZWZuX3QgKl9fc2lncmVzdG9yZV90OwojIDk1ICIuL2FyY2gveDg2 L2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgiIDIKIyAxMjggIi4vYXJjaC94ODYvaW5jbHVkZS91 YXBpL2FzbS9zaWduYWwuaCIKdHlwZWRlZiBzdHJ1Y3Qgc2lnYWx0c3RhY2sgewogdm9pZCAqc3Nf c3A7CiBpbnQgc3NfZmxhZ3M7CiBzaXplX3Qgc3Nfc2l6ZTsKfSBzdGFja190OwojIDM3ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3NpZ25hbC5oIiAyCgpleHRlcm4gdm9pZCBkb19zaWduYWwoc3Ry dWN0IHB0X3JlZ3MgKnJlZ3MpOwojIDYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NpZ25hbC5oIiAy CiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3NpZ2luZm8uaCIgMQojIDEzICIuL2Fy Y2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnaW5mby5oIgojIDEgIi4vaW5jbHVkZS91YXBpL2Fz bS1nZW5lcmljL3NpZ2luZm8uaCIgMQoKCgoKCgoKdHlwZWRlZiB1bmlvbiBzaWd2YWwgewogaW50 IHNpdmFsX2ludDsKIHZvaWQgKnNpdmFsX3B0cjsKfSBzaWd2YWxfdDsKIyAzMiAiLi9pbmNsdWRl L3VhcGkvYXNtLWdlbmVyaWMvc2lnaW5mby5oIgp1bmlvbiBfX3NpZmllbGRzIHsKCiBzdHJ1Y3Qg ewogIF9fa2VybmVsX3BpZF90IF9waWQ7CiAgX19rZXJuZWxfdWlkMzJfdCBfdWlkOwogfSBfa2ls bDsKCgogc3RydWN0IHsKICBfX2tlcm5lbF90aW1lcl90IF90aWQ7CiAgaW50IF9vdmVycnVuOwog IHNpZ3ZhbF90IF9zaWd2YWw7CiAgaW50IF9zeXNfcHJpdmF0ZTsKIH0gX3RpbWVyOwoKCiBzdHJ1 Y3QgewogIF9fa2VybmVsX3BpZF90IF9waWQ7CiAgX19rZXJuZWxfdWlkMzJfdCBfdWlkOwogIHNp Z3ZhbF90IF9zaWd2YWw7CiB9IF9ydDsKCgogc3RydWN0IHsKICBfX2tlcm5lbF9waWRfdCBfcGlk OwogIF9fa2VybmVsX3VpZDMyX3QgX3VpZDsKICBpbnQgX3N0YXR1czsKICBfX2tlcm5lbF9jbG9j a190IF91dGltZTsKICBfX2tlcm5lbF9jbG9ja190IF9zdGltZTsKIH0gX3NpZ2NobGQ7CgoKIHN0 cnVjdCB7CiAgdm9pZCAqX2FkZHI7CiMgNzcgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3Np Z2luZm8uaCIKICB1bmlvbiB7CgoKCgogICBzaG9ydCBfYWRkcl9sc2I7CgogICBzdHJ1Y3Qgewog ICAgY2hhciBfZHVtbXlfYm5kWyhfX2FsaWdub2ZfXyh2b2lkICopIDwgc2l6ZW9mKHNob3J0KSA/ IHNpemVvZihzaG9ydCkgOiBfX2FsaWdub2ZfXyh2b2lkICopKV07CiAgICB2b2lkICpfbG93ZXI7 CiAgICB2b2lkICpfdXBwZXI7CiAgIH0gX2FkZHJfYm5kOwoKICAgc3RydWN0IHsKICAgIGNoYXIg X2R1bW15X3BrZXlbKF9fYWxpZ25vZl9fKHZvaWQgKikgPCBzaXplb2Yoc2hvcnQpID8gc2l6ZW9m KHNob3J0KSA6IF9fYWxpZ25vZl9fKHZvaWQgKikpXTsKICAgIF9fdTMyIF9wa2V5OwogICB9IF9h ZGRyX3BrZXk7CiAgfTsKIH0gX3NpZ2ZhdWx0OwoKCiBzdHJ1Y3QgewogIGxvbmcgX2JhbmQ7CiAg aW50IF9mZDsKIH0gX3NpZ3BvbGw7CgoKIHN0cnVjdCB7CiAgdm9pZCAqX2NhbGxfYWRkcjsKICBp bnQgX3N5c2NhbGw7CiAgdW5zaWduZWQgaW50IF9hcmNoOwogfSBfc2lnc3lzOwp9OwojIDEyOSAi Li9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvc2lnaW5mby5oIgp0eXBlZGVmIHN0cnVjdCBzaWdp bmZvIHsKIHVuaW9uIHsKICBzdHJ1Y3QgeyBpbnQgc2lfc2lnbm87IGludCBzaV9lcnJubzsgaW50 IHNpX2NvZGU7IHVuaW9uIF9fc2lmaWVsZHMgX3NpZmllbGRzOyB9OwogIGludCBfc2lfcGFkWzEy OC9zaXplb2YoaW50KV07CiB9Owp9IHNpZ2luZm9fdDsKIyAzMjAgIi4vaW5jbHVkZS91YXBpL2Fz bS1nZW5lcmljL3NpZ2luZm8uaCIKdHlwZWRlZiBzdHJ1Y3Qgc2lnZXZlbnQgewogc2lndmFsX3Qg c2lnZXZfdmFsdWU7CiBpbnQgc2lnZXZfc2lnbm87CiBpbnQgc2lnZXZfbm90aWZ5OwogdW5pb24g ewogIGludCBfcGFkWygoNjQgLSAoc2l6ZW9mKGludCkgKiAyICsgc2l6ZW9mKHNpZ3ZhbF90KSkp IC8gc2l6ZW9mKGludCkpXTsKICAgaW50IF90aWQ7CgogIHN0cnVjdCB7CiAgIHZvaWQgKCpfZnVu Y3Rpb24pKHNpZ3ZhbF90KTsKICAgdm9pZCAqX2F0dHJpYnV0ZTsKICB9IF9zaWdldl90aHJlYWQ7 CiB9IF9zaWdldl91bjsKfSBzaWdldmVudF90OwojIDE0ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFw aS9hc20vc2lnaW5mby5oIiAyCiMgNyAiLi9pbmNsdWRlL3VhcGkvbGludXgvc2lnbmFsLmgiIDIK IyAxMSAiLi9pbmNsdWRlL2xpbnV4L3NpZ25hbF90eXBlcy5oIiAyCgp0eXBlZGVmIHN0cnVjdCBr ZXJuZWxfc2lnaW5mbyB7CiBzdHJ1Y3QgeyBpbnQgc2lfc2lnbm87IGludCBzaV9lcnJubzsgaW50 IHNpX2NvZGU7IHVuaW9uIF9fc2lmaWVsZHMgX3NpZmllbGRzOyB9Owp9IGtlcm5lbF9zaWdpbmZv X3Q7CgoKCgoKc3RydWN0IHNpZ3F1ZXVlIHsKIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKIGludCBm bGFnczsKIGtlcm5lbF9zaWdpbmZvX3QgaW5mbzsKIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcjsK fTsKCgoKCnN0cnVjdCBzaWdwZW5kaW5nIHsKIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKIHNpZ3Nl dF90IHNpZ25hbDsKfTsKCnN0cnVjdCBzaWdhY3Rpb24gewoKIF9fc2lnaGFuZGxlcl90IHNhX2hh bmRsZXI7CiB1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwoKCgoKCiBfX3NpZ3Jlc3RvcmVfdCBzYV9y ZXN0b3JlcjsKCiBzaWdzZXRfdCBzYV9tYXNrOwp9OwoKc3RydWN0IGtfc2lnYWN0aW9uIHsKIHN0 cnVjdCBzaWdhY3Rpb24gc2E7CgoKCn07CiMgNjUgIi4vaW5jbHVkZS9saW51eC9zaWduYWxfdHlw ZXMuaCIKc3RydWN0IGtzaWduYWwgewogc3RydWN0IGtfc2lnYWN0aW9uIGthOwoga2VybmVsX3Np Z2luZm9fdCBpbmZvOwogaW50IHNpZzsKfTsKIyAzMCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi IDIKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3Rhc2tfaW9fYWNjb3VudGluZy5oIiAxCiMgMTIgIi4v aW5jbHVkZS9saW51eC90YXNrX2lvX2FjY291bnRpbmcuaCIKc3RydWN0IHRhc2tfaW9fYWNjb3Vu dGluZyB7CgoKIHU2NCByY2hhcjsKCiB1NjQgd2NoYXI7CgogdTY0IHN5c2NyOwoKIHU2NCBzeXNj dzsKCgoKCgoKCiB1NjQgcmVhZF9ieXRlczsKCgoKCgogdTY0IHdyaXRlX2J5dGVzOwojIDQ0ICIu L2luY2x1ZGUvbGludXgvdGFza19pb19hY2NvdW50aW5nLmgiCiB1NjQgY2FuY2VsbGVkX3dyaXRl X2J5dGVzOwoKfTsKIyAzMiAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIuL2luY2x1 ZGUvbGludXgvcG9zaXgtdGltZXJzLmgiIDEKCgoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvYWxh cm10aW1lci5oIiAxCiMgOSAiLi9pbmNsdWRlL2xpbnV4L2FsYXJtdGltZXIuaCIKc3RydWN0IHJ0 Y19kZXZpY2U7CgplbnVtIGFsYXJtdGltZXJfdHlwZSB7CiBBTEFSTV9SRUFMVElNRSwKIEFMQVJN X0JPT1RUSU1FLAoKCiBBTEFSTV9OVU1UWVBFLAoKCiBBTEFSTV9SRUFMVElNRV9GUkVFWkVSLAog QUxBUk1fQk9PVFRJTUVfRlJFRVpFUiwKfTsKCmVudW0gYWxhcm10aW1lcl9yZXN0YXJ0IHsKIEFM QVJNVElNRVJfTk9SRVNUQVJULAogQUxBUk1USU1FUl9SRVNUQVJULAp9OwojIDQyICIuL2luY2x1 ZGUvbGludXgvYWxhcm10aW1lci5oIgpzdHJ1Y3QgYWxhcm0gewogc3RydWN0IHRpbWVycXVldWVf bm9kZSBub2RlOwogc3RydWN0IGhydGltZXIgdGltZXI7CiBlbnVtIGFsYXJtdGltZXJfcmVzdGFy dCAoKmZ1bmN0aW9uKShzdHJ1Y3QgYWxhcm0gKiwga3RpbWVfdCBub3cpOwogZW51bSBhbGFybXRp bWVyX3R5cGUgdHlwZTsKIGludCBzdGF0ZTsKIHZvaWQgKmRhdGE7Cn07Cgp2b2lkIGFsYXJtX2lu aXQoc3RydWN0IGFsYXJtICphbGFybSwgZW51bSBhbGFybXRpbWVyX3R5cGUgdHlwZSwKICBlbnVt IGFsYXJtdGltZXJfcmVzdGFydCAoKmZ1bmN0aW9uKShzdHJ1Y3QgYWxhcm0gKiwga3RpbWVfdCkp Owp2b2lkIGFsYXJtX3N0YXJ0KHN0cnVjdCBhbGFybSAqYWxhcm0sIGt0aW1lX3Qgc3RhcnQpOwp2 b2lkIGFsYXJtX3N0YXJ0X3JlbGF0aXZlKHN0cnVjdCBhbGFybSAqYWxhcm0sIGt0aW1lX3Qgc3Rh cnQpOwp2b2lkIGFsYXJtX3Jlc3RhcnQoc3RydWN0IGFsYXJtICphbGFybSk7CmludCBhbGFybV90 cnlfdG9fY2FuY2VsKHN0cnVjdCBhbGFybSAqYWxhcm0pOwppbnQgYWxhcm1fY2FuY2VsKHN0cnVj dCBhbGFybSAqYWxhcm0pOwoKdTY0IGFsYXJtX2ZvcndhcmQoc3RydWN0IGFsYXJtICphbGFybSwg a3RpbWVfdCBub3csIGt0aW1lX3QgaW50ZXJ2YWwpOwp1NjQgYWxhcm1fZm9yd2FyZF9ub3coc3Ry dWN0IGFsYXJtICphbGFybSwga3RpbWVfdCBpbnRlcnZhbCk7Cmt0aW1lX3QgYWxhcm1fZXhwaXJl c19yZW1haW5pbmcoY29uc3Qgc3RydWN0IGFsYXJtICphbGFybSk7CgoKCnN0cnVjdCBydGNfZGV2 aWNlICphbGFybXRpbWVyX2dldF9ydGNkZXYodm9pZCk7CiMgOCAiLi9pbmNsdWRlL2xpbnV4L3Bv c2l4LXRpbWVycy5oIiAyCgoKc3RydWN0IGtlcm5lbF9zaWdpbmZvOwpzdHJ1Y3QgdGFza19zdHJ1 Y3Q7CiMgMzggIi4vaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY2xvY2tpZF90IG1ha2Vf cHJvY2Vzc19jcHVjbG9jayhjb25zdCB1bnNpZ25lZCBpbnQgcGlkLAogIGNvbnN0IGNsb2NraWRf dCBjbG9jaykKewogcmV0dXJuICgofnBpZCkgPDwgMykgfCBjbG9jazsKfQpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjbG9ja2lkX3QgbWFr ZV90aHJlYWRfY3B1Y2xvY2soY29uc3QgdW5zaWduZWQgaW50IHRpZCwKICBjb25zdCBjbG9ja2lk X3QgY2xvY2spCnsKIHJldHVybiBtYWtlX3Byb2Nlc3NfY3B1Y2xvY2sodGlkLCBjbG9jayB8IDQp Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBjbG9ja2lkX3QgZmRfdG9fY2xvY2tpZChjb25zdCBpbnQgZmQpCnsKIHJldHVybiBtYWtl X3Byb2Nlc3NfY3B1Y2xvY2soKHVuc2lnbmVkIGludCkgZmQsIDMpOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY2xvY2tpZF90 b19mZChjb25zdCBjbG9ja2lkX3QgY2xrKQp7CiByZXR1cm4gfihjbGsgPj4gMyk7Cn0KIyA2OSAi Li9pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oIgpzdHJ1Y3QgY3B1X3RpbWVyIHsKIHN0cnVj dCB0aW1lcnF1ZXVlX25vZGUgbm9kZTsKIHN0cnVjdCB0aW1lcnF1ZXVlX2hlYWQgKmhlYWQ7CiBz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CiBzdHJ1Y3QgbGlzdF9oZWFkIGVsaXN0OwogaW50IGZp cmluZzsKfTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGJvb2wgY3B1X3RpbWVyX2VucXVldWUoc3RydWN0IHRpbWVycXVldWVfaGVhZCAq aGVhZCwKICAgICAgICAgc3RydWN0IGNwdV90aW1lciAqY3RtcikKewogY3Rtci0+aGVhZCA9IGhl YWQ7CiByZXR1cm4gdGltZXJxdWV1ZV9hZGQoaGVhZCwgJmN0bXItPm5vZGUpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNw dV90aW1lcl9kZXF1ZXVlKHN0cnVjdCBjcHVfdGltZXIgKmN0bXIpCnsKIGlmIChjdG1yLT5oZWFk KSB7CiAgdGltZXJxdWV1ZV9kZWwoY3Rtci0+aGVhZCwgJmN0bXItPm5vZGUpOwogIGN0bXItPmhl YWQgPSAoKHZvaWQgKikwKTsKIH0KfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0IGNwdV90aW1lcl9nZXRleHBpcmVzKHN0cnVjdCBj cHVfdGltZXIgKmN0bXIpCnsKIHJldHVybiBjdG1yLT5ub2RlLmV4cGlyZXM7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1 X3RpbWVyX3NldGV4cGlyZXMoc3RydWN0IGNwdV90aW1lciAqY3RtciwgdTY0IGV4cCkKewogY3Rt ci0+bm9kZS5leHBpcmVzID0gZXhwOwp9CgoKCgoKCnN0cnVjdCBwb3NpeF9jcHV0aW1lcl9iYXNl IHsKIHU2NCBuZXh0ZXZ0Owogc3RydWN0IHRpbWVycXVldWVfaGVhZCB0cWhlYWQ7Cn07CiMgMTIy ICIuL2luY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmgiCnN0cnVjdCBwb3NpeF9jcHV0aW1lcnMg ewogc3RydWN0IHBvc2l4X2NwdXRpbWVyX2Jhc2UgYmFzZXNbM107CiB1bnNpZ25lZCBpbnQgdGlt ZXJzX2FjdGl2ZTsKIHVuc2lnbmVkIGludCBleHBpcnlfYWN0aXZlOwp9OwoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwb3NpeF9j cHV0aW1lcnNfaW5pdChzdHJ1Y3QgcG9zaXhfY3B1dGltZXJzICpwY3QpCnsKIG1lbXNldChwY3Qs IDAsIHNpemVvZigqcGN0KSk7CiBwY3QtPmJhc2VzWzBdLm5leHRldnQgPSAoKHU2NCl+MFVMTCk7 CiBwY3QtPmJhc2VzWzFdLm5leHRldnQgPSAoKHU2NCl+MFVMTCk7CiBwY3QtPmJhc2VzWzJdLm5l eHRldnQgPSAoKHU2NCl+MFVMTCk7Cn0KCnZvaWQgcG9zaXhfY3B1dGltZXJzX2dyb3VwX2luaXQo c3RydWN0IHBvc2l4X2NwdXRpbWVycyAqcGN0LCB1NjQgY3B1X2xpbWl0KTsKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcG9zaXhf Y3B1dGltZXJzX3J0X3dhdGNoZG9nKHN0cnVjdCBwb3NpeF9jcHV0aW1lcnMgKnBjdCwKICAgICAg ICAgICAgdTY0IHJ1bnRpbWUpCnsKIHBjdC0+YmFzZXNbMl0ubmV4dGV2dCA9IHJ1bnRpbWU7Cn0K IyAxOTMgIi4vaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaCIKc3RydWN0IGtfaXRpbWVyIHsK IHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKIHN0cnVjdCBobGlzdF9ub2RlIHRfaGFzaDsKIHNwaW5s b2NrX3QgaXRfbG9jazsKIGNvbnN0IHN0cnVjdCBrX2Nsb2NrICprY2xvY2s7CiBjbG9ja2lkX3Qg aXRfY2xvY2s7CiB0aW1lcl90IGl0X2lkOwogaW50IGl0X2FjdGl2ZTsKIHM2NCBpdF9vdmVycnVu OwogczY0IGl0X292ZXJydW5fbGFzdDsKIGludCBpdF9yZXF1ZXVlX3BlbmRpbmc7CiBpbnQgaXRf c2lnZXZfbm90aWZ5Owoga3RpbWVfdCBpdF9pbnRlcnZhbDsKIHN0cnVjdCBzaWduYWxfc3RydWN0 ICppdF9zaWduYWw7CiB1bmlvbiB7CiAgc3RydWN0IHBpZCAqaXRfcGlkOwogIHN0cnVjdCB0YXNr X3N0cnVjdCAqaXRfcHJvY2VzczsKIH07CiBzdHJ1Y3Qgc2lncXVldWUgKnNpZ3E7CiB1bmlvbiB7 CiAgc3RydWN0IHsKICAgc3RydWN0IGhydGltZXIgdGltZXI7CiAgfSByZWFsOwogIHN0cnVjdCBj cHVfdGltZXIgY3B1OwogIHN0cnVjdCB7CiAgIHN0cnVjdCBhbGFybSBhbGFybXRpbWVyOwogIH0g YWxhcm07CiB9IGl0Owogc3RydWN0IGNhbGxiYWNrX2hlYWQgcmN1Owp9OwoKdm9pZCBydW5fcG9z aXhfY3B1X3RpbWVycyh2b2lkKTsKdm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXQoc3RydWN0IHRh c2tfc3RydWN0ICp0YXNrKTsKdm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAoc3RydWN0 IHRhc2tfc3RydWN0ICp0YXNrKTsKdm9pZCBzZXRfcHJvY2Vzc19jcHVfdGltZXIoc3RydWN0IHRh c2tfc3RydWN0ICp0YXNrLCB1bnNpZ25lZCBpbnQgY2xvY2tfaWR4LAogICAgICB1NjQgKm5ld3Zh bCwgdTY0ICpvbGR2YWwpOwoKdm9pZCB1cGRhdGVfcmxpbWl0X2NwdShzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRhc2ssIHVuc2lnbmVkIGxvbmcgcmxpbV9uZXcpOwoKdm9pZCBwb3NpeHRpbWVyX3JlYXJt KHN0cnVjdCBrZXJuZWxfc2lnaW5mbyAqaW5mbyk7CiMgMzMgIi4vaW5jbHVkZS9saW51eC9zY2hl ZC5oIiAyCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5oIiAxCiMgMTYgIi4vaW5jbHVk ZS91YXBpL2xpbnV4L3JzZXEuaCIKZW51bSByc2VxX2NwdV9pZF9zdGF0ZSB7CiBSU0VRX0NQVV9J RF9VTklOSVRJQUxJWkVEID0gLTEsCiBSU0VRX0NQVV9JRF9SRUdJU1RSQVRJT05fRkFJTEVEID0g LTIsCn07CgplbnVtIHJzZXFfZmxhZ3MgewogUlNFUV9GTEFHX1VOUkVHSVNURVIgPSAoMSA8PCAw KSwKfTsKCmVudW0gcnNlcV9jc19mbGFnc19iaXQgewogUlNFUV9DU19GTEFHX05PX1JFU1RBUlRf T05fUFJFRU1QVF9CSVQgPSAwLAogUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fU0lHTkFMX0JJ VCA9IDEsCiBSU0VRX0NTX0ZMQUdfTk9fUkVTVEFSVF9PTl9NSUdSQVRFX0JJVCA9IDIsCn07Cgpl bnVtIHJzZXFfY3NfZmxhZ3MgewogUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fUFJFRU1QVCA9 CiAgKDFVIDw8IFJTRVFfQ1NfRkxBR19OT19SRVNUQVJUX09OX1BSRUVNUFRfQklUKSwKIFJTRVFf Q1NfRkxBR19OT19SRVNUQVJUX09OX1NJR05BTCA9CiAgKDFVIDw8IFJTRVFfQ1NfRkxBR19OT19S RVNUQVJUX09OX1NJR05BTF9CSVQpLAogUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fTUlHUkFU RSA9CiAgKDFVIDw8IFJTRVFfQ1NfRkxBR19OT19SRVNUQVJUX09OX01JR1JBVEVfQklUKSwKfTsK CgoKCgoKc3RydWN0IHJzZXFfY3MgewoKIF9fdTMyIHZlcnNpb247CgogX191MzIgZmxhZ3M7CiBf X3U2NCBzdGFydF9pcDsKCiBfX3U2NCBwb3N0X2NvbW1pdF9vZmZzZXQ7CiBfX3U2NCBhYm9ydF9p cDsKfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDQgKiBzaXplb2YoX191NjQpKSkpOwoKCgoKCgoK c3RydWN0IHJzZXEgewojIDc1ICIuL2luY2x1ZGUvdWFwaS9saW51eC9yc2VxLmgiCiBfX3UzMiBj cHVfaWRfc3RhcnQ7CiMgOTAgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3JzZXEuaCIKIF9fdTMyIGNw dV9pZDsKIyAxMDkgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3JzZXEuaCIKIHVuaW9uIHsKICBfX3U2 NCBwdHI2NDsKCiAgX191NjQgcHRyOwojIDEyNCAiLi9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5o IgogfSByc2VxX2NzOwojIDE0NCAiLi9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5oIgogX191MzIg ZmxhZ3M7Cn0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg0ICogc2l6ZW9mKF9fdTY0KSkpKTsKIyAz NCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCgpzdHJ1Y3QgYXVkaXRfY29udGV4dDsKc3Ry dWN0IGJhY2tpbmdfZGV2X2luZm87CnN0cnVjdCBiaW9fbGlzdDsKc3RydWN0IGJsa19wbHVnOwpz dHJ1Y3QgY2FwdHVyZV9jb250cm9sOwpzdHJ1Y3QgY2ZzX3JxOwpzdHJ1Y3QgZnNfc3RydWN0Owpz dHJ1Y3QgZnV0ZXhfcGlfc3RhdGU7CnN0cnVjdCBpb19jb250ZXh0OwpzdHJ1Y3QgbWVtcG9saWN5 OwpzdHJ1Y3QgbmFtZWlkYXRhOwpzdHJ1Y3QgbnNwcm94eTsKc3RydWN0IHBlcmZfZXZlbnRfY29u dGV4dDsKc3RydWN0IHBpZF9uYW1lc3BhY2U7CnN0cnVjdCBwaXBlX2lub2RlX2luZm87CnN0cnVj dCByY3Vfbm9kZTsKc3RydWN0IHJlY2xhaW1fc3RhdGU7CnN0cnVjdCByb2J1c3RfbGlzdF9oZWFk OwpzdHJ1Y3Qgcm9vdF9kb21haW47CnN0cnVjdCBycTsKc3RydWN0IHNjaGVkX2F0dHI7CnN0cnVj dCBzY2hlZF9wYXJhbTsKc3RydWN0IHNlcV9maWxlOwpzdHJ1Y3Qgc2lnaGFuZF9zdHJ1Y3Q7CnN0 cnVjdCBzaWduYWxfc3RydWN0OwpzdHJ1Y3QgdGFza19kZWxheV9pbmZvOwpzdHJ1Y3QgdGFza19n cm91cDsKIyAyMTUgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gdm9pZCBzY2hlZHVs ZXJfdGljayh2b2lkKTsKCgoKZXh0ZXJuIGxvbmcgc2NoZWR1bGVfdGltZW91dChsb25nIHRpbWVv dXQpOwpleHRlcm4gbG9uZyBzY2hlZHVsZV90aW1lb3V0X2ludGVycnVwdGlibGUobG9uZyB0aW1l b3V0KTsKZXh0ZXJuIGxvbmcgc2NoZWR1bGVfdGltZW91dF9raWxsYWJsZShsb25nIHRpbWVvdXQp OwpleHRlcm4gbG9uZyBzY2hlZHVsZV90aW1lb3V0X3VuaW50ZXJydXB0aWJsZShsb25nIHRpbWVv dXQpOwpleHRlcm4gbG9uZyBzY2hlZHVsZV90aW1lb3V0X2lkbGUobG9uZyB0aW1lb3V0KTsKIHZv aWQgc2NoZWR1bGUodm9pZCk7CmV4dGVybiB2b2lkIHNjaGVkdWxlX3ByZWVtcHRfZGlzYWJsZWQo dm9pZCk7CiB2b2lkIHByZWVtcHRfc2NoZWR1bGVfaXJxKHZvaWQpOwoKZXh0ZXJuIGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgaW9fc2NoZWR1bGVfcHJlcGFyZSh2 b2lkKTsKZXh0ZXJuIHZvaWQgaW9fc2NoZWR1bGVfZmluaXNoKGludCB0b2tlbik7CmV4dGVybiBs b25nIGlvX3NjaGVkdWxlX3RpbWVvdXQobG9uZyB0aW1lb3V0KTsKZXh0ZXJuIHZvaWQgaW9fc2No ZWR1bGUodm9pZCk7CiMgMjQyICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IHByZXZf Y3B1dGltZSB7CgogdTY0IHV0aW1lOwogdTY0IHN0aW1lOwogcmF3X3NwaW5sb2NrX3QgbG9jazsK Cn07CgplbnVtIHZ0aW1lX3N0YXRlIHsKCiBWVElNRV9JTkFDVElWRSA9IDAsCgogVlRJTUVfSURM RSwKCiBWVElNRV9TWVMsCgogVlRJTUVfVVNFUiwKCiBWVElNRV9HVUVTVCwKfTsKCnN0cnVjdCB2 dGltZSB7CiBzZXFjb3VudF90IHNlcWNvdW50OwogdW5zaWduZWQgbG9uZyBsb25nIHN0YXJ0dGlt ZTsKIGVudW0gdnRpbWVfc3RhdGUgc3RhdGU7CiB1bnNpZ25lZCBpbnQgY3B1OwogdTY0IHV0aW1l OwogdTY0IHN0aW1lOwogdTY0IGd0aW1lOwp9OwoKCgoKCgoKZW51bSB1Y2xhbXBfaWQgewogVUNM QU1QX01JTiA9IDAsCiBVQ0xBTVBfTUFYLAogVUNMQU1QX0NOVAp9OwoKCmV4dGVybiBzdHJ1Y3Qg cm9vdF9kb21haW4gZGVmX3Jvb3RfZG9tYWluOwpleHRlcm4gc3RydWN0IG11dGV4IHNjaGVkX2Rv bWFpbnNfbXV0ZXg7CgoKc3RydWN0IHNjaGVkX2luZm8gewoKCgoKIHVuc2lnbmVkIGxvbmcgcGNv dW50OwoKCiB1bnNpZ25lZCBsb25nIGxvbmcgcnVuX2RlbGF5OwoKCgoKIHVuc2lnbmVkIGxvbmcg bG9uZyBsYXN0X2Fycml2YWw7CgoKIHVuc2lnbmVkIGxvbmcgbG9uZyBsYXN0X3F1ZXVlZDsKCgp9 OwojIDMyNSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0cnVjdCBsb2FkX3dlaWdodCB7CiB1 bnNpZ25lZCBsb25nIHdlaWdodDsKIHUzMiBpbnZfd2VpZ2h0Owp9OwojIDM1MiAiLi9pbmNsdWRl L2xpbnV4L3NjaGVkLmgiCnN0cnVjdCB1dGlsX2VzdCB7CiB1bnNpZ25lZCBpbnQgZW5xdWV1ZWQ7 CiB1bnNpZ25lZCBpbnQgZXdtYTsKCn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oc2l6ZW9m KHU2NCkpKSk7CiMgNDAxICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IHNjaGVkX2F2 ZyB7CiB1NjQgbGFzdF91cGRhdGVfdGltZTsKIHU2NCBsb2FkX3N1bTsKIHU2NCBydW5uYWJsZV9s b2FkX3N1bTsKIHUzMiB1dGlsX3N1bTsKIHUzMiBwZXJpb2RfY29udHJpYjsKIHVuc2lnbmVkIGxv bmcgbG9hZF9hdmc7CiB1bnNpZ25lZCBsb25nIHJ1bm5hYmxlX2xvYWRfYXZnOwogdW5zaWduZWQg bG9uZyB1dGlsX2F2ZzsKIHN0cnVjdCB1dGlsX2VzdCB1dGlsX2VzdDsKfSBfX2F0dHJpYnV0ZV9f KChfX2FsaWduZWRfXygoMSA8PCAoNikpKSkpOwoKc3RydWN0IHNjaGVkX3N0YXRpc3RpY3MgewoK IHU2NCB3YWl0X3N0YXJ0OwogdTY0IHdhaXRfbWF4OwogdTY0IHdhaXRfY291bnQ7CiB1NjQgd2Fp dF9zdW07CiB1NjQgaW93YWl0X2NvdW50OwogdTY0IGlvd2FpdF9zdW07CgogdTY0IHNsZWVwX3N0 YXJ0OwogdTY0IHNsZWVwX21heDsKIHM2NCBzdW1fc2xlZXBfcnVudGltZTsKCiB1NjQgYmxvY2tf c3RhcnQ7CiB1NjQgYmxvY2tfbWF4OwogdTY0IGV4ZWNfbWF4OwogdTY0IHNsaWNlX21heDsKCiB1 NjQgbnJfbWlncmF0aW9uc19jb2xkOwogdTY0IG5yX2ZhaWxlZF9taWdyYXRpb25zX2FmZmluZTsK IHU2NCBucl9mYWlsZWRfbWlncmF0aW9uc19ydW5uaW5nOwogdTY0IG5yX2ZhaWxlZF9taWdyYXRp b25zX2hvdDsKIHU2NCBucl9mb3JjZWRfbWlncmF0aW9uczsKCiB1NjQgbnJfd2FrZXVwczsKIHU2 NCBucl93YWtldXBzX3N5bmM7CiB1NjQgbnJfd2FrZXVwc19taWdyYXRlOwogdTY0IG5yX3dha2V1 cHNfbG9jYWw7CiB1NjQgbnJfd2FrZXVwc19yZW1vdGU7CiB1NjQgbnJfd2FrZXVwc19hZmZpbmU7 CiB1NjQgbnJfd2FrZXVwc19hZmZpbmVfYXR0ZW1wdHM7CiB1NjQgbnJfd2FrZXVwc19wYXNzaXZl OwogdTY0IG5yX3dha2V1cHNfaWRsZTsKCn07CgpzdHJ1Y3Qgc2NoZWRfZW50aXR5IHsKCiBzdHJ1 Y3QgbG9hZF93ZWlnaHQgbG9hZDsKIHVuc2lnbmVkIGxvbmcgcnVubmFibGVfd2VpZ2h0Owogc3Ry dWN0IHJiX25vZGUgcnVuX25vZGU7CiBzdHJ1Y3QgbGlzdF9oZWFkIGdyb3VwX25vZGU7CiB1bnNp Z25lZCBpbnQgb25fcnE7CgogdTY0IGV4ZWNfc3RhcnQ7CiB1NjQgc3VtX2V4ZWNfcnVudGltZTsK IHU2NCB2cnVudGltZTsKIHU2NCBwcmV2X3N1bV9leGVjX3J1bnRpbWU7CgogdTY0IG5yX21pZ3Jh dGlvbnM7Cgogc3RydWN0IHNjaGVkX3N0YXRpc3RpY3Mgc3RhdGlzdGljczsKCgogaW50IGRlcHRo Owogc3RydWN0IHNjaGVkX2VudGl0eSAqcGFyZW50OwoKIHN0cnVjdCBjZnNfcnEgKmNmc19ycTsK CiBzdHJ1Y3QgY2ZzX3JxICpteV9xOwojIDQ4MiAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBz dHJ1Y3Qgc2NoZWRfYXZnIGF2ZzsKCn07CgpzdHJ1Y3Qgc2NoZWRfcnRfZW50aXR5IHsKIHN0cnVj dCBsaXN0X2hlYWQgcnVuX2xpc3Q7CiB1bnNpZ25lZCBsb25nIHRpbWVvdXQ7CiB1bnNpZ25lZCBs b25nIHdhdGNoZG9nX3N0YW1wOwogdW5zaWduZWQgaW50IHRpbWVfc2xpY2U7CiB1bnNpZ25lZCBz aG9ydCBvbl9ycTsKIHVuc2lnbmVkIHNob3J0IG9uX2xpc3Q7Cgogc3RydWN0IHNjaGVkX3J0X2Vu dGl0eSAqYmFjazsKCgoKCgoKCn0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRfXykp OwoKc3RydWN0IHNjaGVkX2RsX2VudGl0eSB7CiBzdHJ1Y3QgcmJfbm9kZSByYl9ub2RlOwoKCgoK CgogdTY0IGRsX3J1bnRpbWU7CiB1NjQgZGxfZGVhZGxpbmU7CiB1NjQgZGxfcGVyaW9kOwogdTY0 IGRsX2J3OwogdTY0IGRsX2RlbnNpdHk7CgoKCgoKCiBzNjQgcnVudGltZTsKIHU2NCBkZWFkbGlu ZTsKIHVuc2lnbmVkIGludCBmbGFnczsKIyA1NTEgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgog dW5zaWduZWQgaW50IGRsX3Rocm90dGxlZCA6IDE7CiB1bnNpZ25lZCBpbnQgZGxfYm9vc3RlZCA6 IDE7CiB1bnNpZ25lZCBpbnQgZGxfeWllbGRlZCA6IDE7CiB1bnNpZ25lZCBpbnQgZGxfbm9uX2Nv bnRlbmRpbmcgOiAxOwogdW5zaWduZWQgaW50IGRsX292ZXJydW4gOiAxOwoKCgoKCiBzdHJ1Y3Qg aHJ0aW1lciBkbF90aW1lcjsKIyA1NzAgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgogc3RydWN0 IGhydGltZXIgaW5hY3RpdmVfdGltZXI7Cn07CiMgNjA4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQu aCIKdW5pb24gcmN1X3NwZWNpYWwgewogc3RydWN0IHsKICB1OCBibG9ja2VkOwogIHU4IG5lZWRf cXM7CiAgdTggZXhwX2hpbnQ7CiAgdTggZGVmZXJyZWRfcXM7CiB9IGI7CiB1MzIgczsKfTsKCmVu dW0gcGVyZl9ldmVudF90YXNrX2NvbnRleHQgewogcGVyZl9pbnZhbGlkX2NvbnRleHQgPSAtMSwK IHBlcmZfaHdfY29udGV4dCA9IDAsCiBwZXJmX3N3X2NvbnRleHQsCiBwZXJmX25yX3Rhc2tfY29u dGV4dHMsCn07CgpzdHJ1Y3Qgd2FrZV9xX25vZGUgewogc3RydWN0IHdha2VfcV9ub2RlICpuZXh0 Owp9OwoKc3RydWN0IHRhc2tfc3RydWN0IHsKCgoKCgogc3RydWN0IHRocmVhZF9pbmZvIHRocmVh ZF9pbmZvOwoKCiB2b2xhdGlsZSBsb25nIHN0YXRlOwoKCgoKCgoKIHZvaWQgKnN0YWNrOwogcmVm Y291bnRfdCB1c2FnZTsKCiB1bnNpZ25lZCBpbnQgZmxhZ3M7CiB1bnNpZ25lZCBpbnQgcHRyYWNl OwoKCiBzdHJ1Y3QgbGxpc3Rfbm9kZSB3YWtlX2VudHJ5OwogaW50IG9uX2NwdTsKCgogdW5zaWdu ZWQgaW50IGNwdTsKCiB1bnNpZ25lZCBpbnQgd2FrZWVfZmxpcHM7CiB1bnNpZ25lZCBsb25nIHdh a2VlX2ZsaXBfZGVjYXlfdHM7CiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmxhc3Rfd2FrZWU7CiMgNjcw ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKIGludCByZWNlbnRfdXNlZF9jcHU7CiBpbnQgd2Fr ZV9jcHU7CgogaW50IG9uX3JxOwoKIGludCBwcmlvOwogaW50IHN0YXRpY19wcmlvOwogaW50IG5v cm1hbF9wcmlvOwogdW5zaWduZWQgaW50IHJ0X3ByaW9yaXR5OwoKIGNvbnN0IHN0cnVjdCBzY2hl ZF9jbGFzcyAqc2NoZWRfY2xhc3M7CiBzdHJ1Y3Qgc2NoZWRfZW50aXR5IHNlOwogc3RydWN0IHNj aGVkX3J0X2VudGl0eSBydDsKCiBzdHJ1Y3QgdGFza19ncm91cCAqc2NoZWRfdGFza19ncm91cDsK CiBzdHJ1Y3Qgc2NoZWRfZGxfZW50aXR5IGRsOwojIDY5NyAiLi9pbmNsdWRlL2xpbnV4L3NjaGVk LmgiCiBzdHJ1Y3QgaGxpc3RfaGVhZCBwcmVlbXB0X25vdGlmaWVyczsKCgoKIHVuc2lnbmVkIGlu dCBidHJhY2Vfc2VxOwoKCiB1bnNpZ25lZCBpbnQgcG9saWN5OwogaW50IG5yX2NwdXNfYWxsb3dl ZDsKIGNvbnN0IGNwdW1hc2tfdCAqY3B1c19wdHI7CiBjcHVtYXNrX3QgY3B1c19tYXNrOwojIDcy NCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBzdHJ1Y3Qgc2NoZWRfaW5mbyBzY2hlZF9pbmZv OwoKIHN0cnVjdCBsaXN0X2hlYWQgdGFza3M7Cgogc3RydWN0IHBsaXN0X25vZGUgcHVzaGFibGVf dGFza3M7CiBzdHJ1Y3QgcmJfbm9kZSBwdXNoYWJsZV9kbF90YXNrczsKCgogc3RydWN0IG1tX3N0 cnVjdCAqbW07CiBzdHJ1Y3QgbW1fc3RydWN0ICphY3RpdmVfbW07CgoKIHN0cnVjdCB2bWFjYWNo ZSB2bWFjYWNoZTsKCgogc3RydWN0IHRhc2tfcnNzX3N0YXQgcnNzX3N0YXQ7CgogaW50IGV4aXRf c3RhdGU7CiBpbnQgZXhpdF9jb2RlOwogaW50IGV4aXRfc2lnbmFsOwoKIGludCBwZGVhdGhfc2ln bmFsOwoKIHVuc2lnbmVkIGxvbmcgam9iY3RsOwoKCiB1bnNpZ25lZCBpbnQgcGVyc29uYWxpdHk7 CgoKIHVuc2lnbmVkIHNjaGVkX3Jlc2V0X29uX2Zvcms6MTsKIHVuc2lnbmVkIHNjaGVkX2NvbnRy aWJ1dGVzX3RvX2xvYWQ6MTsKIHVuc2lnbmVkIHNjaGVkX21pZ3JhdGVkOjE7CiB1bnNpZ25lZCBz Y2hlZF9yZW1vdGVfd2FrZXVwOjE7CgoKCgoKIHVuc2lnbmVkIDowOwoKCgoKIHVuc2lnbmVkIGlu X2V4ZWN2ZToxOwogdW5zaWduZWQgaW5faW93YWl0OjE7CgogdW5zaWduZWQgcmVzdG9yZV9zaWdt YXNrOjE7CgoKIHVuc2lnbmVkIGluX3VzZXJfZmF1bHQ6MTsKCgoKCgoKIHVuc2lnbmVkIG5vX2Nn cm91cF9taWdyYXRpb246MTsKCiB1bnNpZ25lZCBmcm96ZW46MTsKCgoKIHVuc2lnbmVkIHVzZV9t ZW1kZWxheToxOwoKCiB1bnNpZ25lZCBsb25nIGF0b21pY19mbGFnczsKCiBzdHJ1Y3QgcmVzdGFy dF9ibG9jayByZXN0YXJ0X2Jsb2NrOwoKIHBpZF90IHBpZDsKIHBpZF90IHRnaWQ7CgoKCiB1bnNp Z25lZCBsb25nIHN0YWNrX2NhbmFyeTsKIyA4MDcgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgog c3RydWN0IHRhc2tfc3RydWN0ICpyZWFsX3BhcmVudDsKCgogc3RydWN0IHRhc2tfc3RydWN0ICpw YXJlbnQ7CgoKCgogc3RydWN0IGxpc3RfaGVhZCBjaGlsZHJlbjsKIHN0cnVjdCBsaXN0X2hlYWQg c2libGluZzsKIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ3JvdXBfbGVhZGVyOwoKCgoKCgoKIHN0cnVj dCBsaXN0X2hlYWQgcHRyYWNlZDsKIHN0cnVjdCBsaXN0X2hlYWQgcHRyYWNlX2VudHJ5OwoKCiBz dHJ1Y3QgcGlkICp0aHJlYWRfcGlkOwogc3RydWN0IGhsaXN0X25vZGUgcGlkX2xpbmtzW1BJRFRZ UEVfTUFYXTsKIHN0cnVjdCBsaXN0X2hlYWQgdGhyZWFkX2dyb3VwOwogc3RydWN0IGxpc3RfaGVh ZCB0aHJlYWRfbm9kZTsKCiBzdHJ1Y3QgY29tcGxldGlvbiAqdmZvcmtfZG9uZTsKCgogaW50ICpz ZXRfY2hpbGRfdGlkOwoKCiBpbnQgKmNsZWFyX2NoaWxkX3RpZDsKCiB1NjQgdXRpbWU7CiB1NjQg c3RpbWU7CgoKCgogdTY0IGd0aW1lOwogc3RydWN0IHByZXZfY3B1dGltZSBwcmV2X2NwdXRpbWU7 CiMgODU4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKIHVuc2lnbmVkIGxvbmcgbnZjc3c7CiB1 bnNpZ25lZCBsb25nIG5pdmNzdzsKCgogdTY0IHN0YXJ0X3RpbWU7CgoKIHU2NCBzdGFydF9ib290 dGltZTsKCgogdW5zaWduZWQgbG9uZyBtaW5fZmx0OwogdW5zaWduZWQgbG9uZyBtYWpfZmx0OwoK CiBzdHJ1Y3QgcG9zaXhfY3B1dGltZXJzIHBvc2l4X2NwdXRpbWVyczsKCgoKCiBjb25zdCBzdHJ1 Y3QgY3JlZCAqcHRyYWNlcl9jcmVkOwoKCiBjb25zdCBzdHJ1Y3QgY3JlZCAqcmVhbF9jcmVkOwoK CiBjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZDsKCgoKIHN0cnVjdCBrZXkgKmNhY2hlZF9yZXF1ZXN0 ZWRfa2V5OwojIDg5NyAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBjaGFyIGNvbW1bMTZdOwoK IHN0cnVjdCBuYW1laWRhdGEgKm5hbWVpZGF0YTsKCgogc3RydWN0IHN5c3Zfc2VtIHN5c3ZzZW07 CiBzdHJ1Y3Qgc3lzdl9zaG0gc3lzdnNobTsKCgogdW5zaWduZWQgbG9uZyBsYXN0X3N3aXRjaF9j b3VudDsKIHVuc2lnbmVkIGxvbmcgbGFzdF9zd2l0Y2hfdGltZTsKCgogc3RydWN0IGZzX3N0cnVj dCAqZnM7CgoKIHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZpbGVzOwoKCiBzdHJ1Y3QgbnNwcm94eSAq bnNwcm94eTsKCgogc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZ25hbDsKIHN0cnVjdCBzaWdoYW5k X3N0cnVjdCAqc2lnaGFuZDsKIHNpZ3NldF90IGJsb2NrZWQ7CiBzaWdzZXRfdCByZWFsX2Jsb2Nr ZWQ7Cgogc2lnc2V0X3Qgc2F2ZWRfc2lnbWFzazsKIHN0cnVjdCBzaWdwZW5kaW5nIHBlbmRpbmc7 CiB1bnNpZ25lZCBsb25nIHNhc19zc19zcDsKIHNpemVfdCBzYXNfc3Nfc2l6ZTsKIHVuc2lnbmVk IGludCBzYXNfc3NfZmxhZ3M7Cgogc3RydWN0IGNhbGxiYWNrX2hlYWQgKnRhc2tfd29ya3M7CgoK CiBzdHJ1Y3QgYXVkaXRfY29udGV4dCAqYXVkaXRfY29udGV4dDsKCiBrdWlkX3QgbG9naW51aWQ7 CiB1bnNpZ25lZCBpbnQgc2Vzc2lvbmlkOwoKIHN0cnVjdCBzZWNjb21wIHNlY2NvbXA7CgoKIHUz MiBwYXJlbnRfZXhlY19pZDsKIHUzMiBzZWxmX2V4ZWNfaWQ7CgoKIHNwaW5sb2NrX3QgYWxsb2Nf bG9jazsKCgogcmF3X3NwaW5sb2NrX3QgcGlfbG9jazsKCiBzdHJ1Y3Qgd2FrZV9xX25vZGUgd2Fr ZV9xOwoKCgogc3RydWN0IHJiX3Jvb3RfY2FjaGVkIHBpX3dhaXRlcnM7Cgogc3RydWN0IHRhc2tf c3RydWN0ICpwaV90b3BfdGFzazsKCiBzdHJ1Y3QgcnRfbXV0ZXhfd2FpdGVyICpwaV9ibG9ja2Vk X29uOwojIDEwMDAgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgogdm9pZCAqam91cm5hbF9pbmZv OwoKCiBzdHJ1Y3QgYmlvX2xpc3QgKmJpb19saXN0OwoKCgogc3RydWN0IGJsa19wbHVnICpwbHVn OwoKCgogc3RydWN0IHJlY2xhaW1fc3RhdGUgKnJlY2xhaW1fc3RhdGU7Cgogc3RydWN0IGJhY2tp bmdfZGV2X2luZm8gKmJhY2tpbmdfZGV2X2luZm87Cgogc3RydWN0IGlvX2NvbnRleHQgKmlvX2Nv bnRleHQ7CgoKIHN0cnVjdCBjYXB0dXJlX2NvbnRyb2wgKmNhcHR1cmVfY29udHJvbDsKCgogdW5z aWduZWQgbG9uZyBwdHJhY2VfbWVzc2FnZTsKIGtlcm5lbF9zaWdpbmZvX3QgKmxhc3Rfc2lnaW5m bzsKCiBzdHJ1Y3QgdGFza19pb19hY2NvdW50aW5nIGlvYWM7CgoKCgoKCiB1NjQgYWNjdF9yc3Nf bWVtMTsKCiB1NjQgYWNjdF92bV9tZW0xOwoKIHU2NCBhY2N0X3RpbWV4cGQ7CgoKCiBub2RlbWFz a190IG1lbXNfYWxsb3dlZDsKCiBzZXFjb3VudF90IG1lbXNfYWxsb3dlZF9zZXE7CiBpbnQgY3B1 c2V0X21lbV9zcHJlYWRfcm90b3I7CiBpbnQgY3B1c2V0X3NsYWJfc3ByZWFkX3JvdG9yOwoKCgog c3RydWN0IGNzc19zZXQgKmNncm91cHM7Cgogc3RydWN0IGxpc3RfaGVhZCBjZ19saXN0OwoKCgoK Cgogc3RydWN0IHJvYnVzdF9saXN0X2hlYWQgKnJvYnVzdF9saXN0OwoKCgogc3RydWN0IGxpc3Rf aGVhZCBwaV9zdGF0ZV9saXN0Owogc3RydWN0IGZ1dGV4X3BpX3N0YXRlICpwaV9zdGF0ZV9jYWNo ZTsKIHN0cnVjdCBtdXRleCBmdXRleF9leGl0X211dGV4OwogdW5zaWduZWQgaW50IGZ1dGV4X3N0 YXRlOwoKCiBzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpwZXJmX2V2ZW50X2N0eHBbcGVyZl9u cl90YXNrX2NvbnRleHRzXTsKIHN0cnVjdCBtdXRleCBwZXJmX2V2ZW50X211dGV4Owogc3RydWN0 IGxpc3RfaGVhZCBwZXJmX2V2ZW50X2xpc3Q7CiMgMTEzMCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVk LmgiCiBzdHJ1Y3QgcnNlcSAqcnNlcTsKIHUzMiByc2VxX3NpZzsKCgoKCiB1bnNpZ25lZCBsb25n IHJzZXFfZXZlbnRfbWFzazsKCgogc3RydWN0IHRsYmZsdXNoX3VubWFwX2JhdGNoIHRsYl91YmM7 CgogdW5pb24gewogIHJlZmNvdW50X3QgcmN1X3VzZXJzOwogIHN0cnVjdCBjYWxsYmFja19oZWFk IHJjdTsKIH07CgoKIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnNwbGljZV9waXBlOwoKIHN0cnVj dCBwYWdlX2ZyYWcgdGFza19mcmFnOwoKCiBzdHJ1Y3QgdGFza19kZWxheV9pbmZvICpkZWxheXM7 CiMgMTE2MyAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBpbnQgbnJfZGlydGllZDsKIGludCBu cl9kaXJ0aWVkX3BhdXNlOwoKIHVuc2lnbmVkIGxvbmcgZGlydHlfcGF1c2VkX3doZW47CgoKIGlu dCBsYXRlbmN5X3JlY29yZF9jb3VudDsKIHN0cnVjdCBsYXRlbmN5X3JlY29yZCBsYXRlbmN5X3Jl Y29yZFszMl07CgoKCgoKIHU2NCB0aW1lcl9zbGFja19uczsKIHU2NCBkZWZhdWx0X3RpbWVyX3Ns YWNrX25zOwoKCgoKCgoKIGludCBjdXJyX3JldF9zdGFjazsKIGludCBjdXJyX3JldF9kZXB0aDsK Cgogc3RydWN0IGZ0cmFjZV9yZXRfc3RhY2sgKnJldF9zdGFjazsKCgogdW5zaWduZWQgbG9uZyBs b25nIGZ0cmFjZV90aW1lc3RhbXA7CgoKCgoKIGF0b21pY190IHRyYWNlX292ZXJydW47CgoKIGF0 b21pY190IHRyYWNpbmdfZ3JhcGhfcGF1c2U7CgoKCgogdW5zaWduZWQgbG9uZyB0cmFjZTsKCgog dW5zaWduZWQgbG9uZyB0cmFjZV9yZWN1cnNpb247CiMgMTIzNSAiLi9pbmNsdWRlL2xpbnV4L3Nj aGVkLmgiCiBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2dfaW5fb29tOwogZ2ZwX3QgbWVtY2dfb29t X2dmcF9tYXNrOwogaW50IG1lbWNnX29vbV9vcmRlcjsKCgogdW5zaWduZWQgaW50IG1lbWNnX25y X3BhZ2VzX292ZXJfaGlnaDsKCgogc3RydWN0IG1lbV9jZ3JvdXAgKmFjdGl2ZV9tZW1jZzsKCgoK IHN0cnVjdCByZXF1ZXN0X3F1ZXVlICp0aHJvdHRsZV9xdWV1ZTsKCgoKCgoKIHVuc2lnbmVkIGlu dCBzZXF1ZW50aWFsX2lvOwogdW5zaWduZWQgaW50IHNlcXVlbnRpYWxfaW9fYXZnOwoKCgoKIGlu dCBwYWdlZmF1bHRfZGlzYWJsZWQ7Cgogc3RydWN0IHRhc2tfc3RydWN0ICpvb21fcmVhcGVyX2xp c3Q7CgoKIHN0cnVjdCB2bV9zdHJ1Y3QgKnN0YWNrX3ZtX2FyZWE7CgoKCiByZWZjb3VudF90IHN0 YWNrX3JlZmNvdW50OwoKCgoKCgogdm9pZCAqc2VjdXJpdHk7CiMgMTI4OCAiLi9pbmNsdWRlL2xp bnV4L3NjaGVkLmgiCgoKCiBzdHJ1Y3QgdGhyZWFkX3N0cnVjdCB0aHJlYWQ7CgoKCgoKCgp9OwoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IHBpZCAqdGFza19waWQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQp7CiByZXR1cm4g dGFzay0+dGhyZWFkX3BpZDsKfQojIDEzMTcgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgpwaWRf dCBfX3Rhc2tfcGlkX25yX25zKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgZW51bSBwaWRfdHlw ZSB0eXBlLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMpOwoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19waWRfbnIoc3Ry dWN0IHRhc2tfc3RydWN0ICp0c2spCnsKIHJldHVybiB0c2stPnBpZDsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19w aWRfbnJfbnMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpu cykKewogcmV0dXJuIF9fdGFza19waWRfbnJfbnModHNrLCBQSURUWVBFX1BJRCwgbnMpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBw aWRfdCB0YXNrX3BpZF92bnIoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCnsKIHJldHVybiBfX3Rh c2tfcGlkX25yX25zKHRzaywgUElEVFlQRV9QSUQsICgodm9pZCAqKTApKTsKfQoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBpZF90IHRh c2tfdGdpZF9ucihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKewogcmV0dXJuIHRzay0+dGdpZDsK fQojIDEzNTAgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGlkX2FsaXZlKGNvbnN0IHN0 cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogcmV0dXJuIHAtPnRocmVhZF9waWQgIT0gKCh2b2lkICop MCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHBpZF90IHRhc2tfcGdycF9ucl9ucyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3Ry dWN0IHBpZF9uYW1lc3BhY2UgKm5zKQp7CiByZXR1cm4gX190YXNrX3BpZF9ucl9ucyh0c2ssIFBJ RFRZUEVfUEdJRCwgbnMpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0YXNrX3BncnBfdm5yKHN0cnVjdCB0YXNrX3N0cnVj dCAqdHNrKQp7CiByZXR1cm4gX190YXNrX3BpZF9ucl9ucyh0c2ssIFBJRFRZUEVfUEdJRCwgKCh2 b2lkICopMCkpOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19zZXNzaW9uX25yX25zKHN0cnVjdCB0YXNrX3N0cnVj dCAqdHNrLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMpCnsKIHJldHVybiBfX3Rhc2tfcGlkX25y X25zKHRzaywgUElEVFlQRV9TSUQsIG5zKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19zZXNzaW9uX3ZucihzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRzaykKewogcmV0dXJuIF9fdGFza19waWRfbnJfbnModHNrLCBQSURU WVBFX1NJRCwgKCh2b2lkICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0YXNrX3RnaWRfbnJfbnMoc3RydWN0IHRh c2tfc3RydWN0ICp0c2ssIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucykKewogcmV0dXJuIF9fdGFz a19waWRfbnJfbnModHNrLCBQSURUWVBFX1RHSUQsIG5zKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza190Z2lkX3Zu cihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKewogcmV0dXJuIF9fdGFza19waWRfbnJfbnModHNr LCBQSURUWVBFX1RHSUQsICgodm9pZCAqKTApKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19wcGlkX25yX25zKGNv bnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMpCnsK IHBpZF90IHBpZCA9IDA7CgogcmN1X3JlYWRfbG9jaygpOwogaWYgKHBpZF9hbGl2ZSh0c2spKQog IHBpZCA9IHRhc2tfdGdpZF9ucl9ucygoeyB0eXBlb2YoKih0c2stPnJlYWxfcGFyZW50KSkgKl9f X19fX19fcDEgPSAodHlwZW9mKCoodHNrLT5yZWFsX3BhcmVudCkpICopKHsgdW5pb24geyB0eXBl b2YoKHRzay0+cmVhbF9wYXJlbnQpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkg X19yZWFkX29uY2Vfc2l6ZSgmKCh0c2stPnJlYWxfcGFyZW50KSksIF9fdS5fX2MsIHNpemVvZigo dHNrLT5yZWFsX3BhcmVudCkpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigodHNr LT5yZWFsX3BhcmVudCkpLCBfX3UuX19jLCBzaXplb2YoKHRzay0+cmVhbF9wYXJlbnQpKSk7IGRv IHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBl b2YoKih0c2stPnJlYWxfcGFyZW50KSkgKikoX19fX19fX19wMSkpOyB9KSwgbnMpOwogcmN1X3Jl YWRfdW5sb2NrKCk7CgogcmV0dXJuIHBpZDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19wcGlkX25yKGNvbnN0IHN0 cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQp7CiByZXR1cm4gdGFza19wcGlkX25yX25zKHRzaywgJmlu aXRfcGlkX25zKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHBpZF90IHRhc2tfcGdycF9ucihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRz aykKewogcmV0dXJuIHRhc2tfcGdycF9ucl9ucyh0c2ssICZpbml0X3BpZF9ucyk7Cn0KCgoKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVu c2lnbmVkIGludCB0YXNrX3N0YXRlX2luZGV4KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQp7CiB1 bnNpZ25lZCBpbnQgdHNrX3N0YXRlID0gKHsgdW5pb24geyB0eXBlb2YodHNrLT5zdGF0ZSkgX192 YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJih0c2stPnN0 YXRlKSwgX191Ll9fYywgc2l6ZW9mKHRzay0+c3RhdGUpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXpl X25vY2hlY2soJih0c2stPnN0YXRlKSwgX191Ll9fYywgc2l6ZW9mKHRzay0+c3RhdGUpKTsgZG8g eyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsKIHVuc2lnbmVkIGludCBzdGF0ZSA9ICh0c2tf c3RhdGUgfCB0c2stPmV4aXRfc3RhdGUpICYgKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4 MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCk7CgogZG8geyBleHRlcm4g dm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNDE3KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJy b3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDogIiAiKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAw MiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAx KSkgPT0gMCB8fCAoKCgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAw MDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKCgoKCgweDAwMDAg fCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAw eDAwNDApICsgMSkgPDwgMSkpIC0gMSkpICE9IDApIikpKTsgaWYgKCEoISgoKCgoMHgwMDAwIHwg MHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgw MDQwKSArIDEpIDw8IDEpKSA9PSAwIHx8ICgoKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8 IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkg JiAoKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAx MCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgLSAxKSkgIT0gMCkpKSkgX19jb21waWxl dGltZV9hc3NlcnRfMTQxNygpOyB9IHdoaWxlICgwKTsKCiBpZiAodHNrX3N0YXRlID09ICgweDAw MDIgfCAweDA0MDApKQogIHN0YXRlID0gKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAw MDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSk7CgogcmV0dXJuIGZs cyhzdGF0ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGNoYXIgdGFza19pbmRleF90b19jaGFyKHVuc2lnbmVkIGludCBzdGF0ZSkK ewogc3RhdGljIGNvbnN0IGNoYXIgc3RhdGVfY2hhcltdID0gIlJTRFR0WFpQSSI7CgogZG8geyBl eHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNDI5KHZvaWQpIF9fYXR0cmlidXRlX18o KF9fZXJyb3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDogIiAiMSArIGlsb2cyKFRBU0tfUkVQT1JU X01BWCkgIT0gc2l6ZW9mKHN0YXRlX2NoYXIpIC0gMSIpKSk7IGlmICghKCEoMSArICggX19idWls dGluX2NvbnN0YW50X3AoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgw MDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA/ICggX19idWlsdGlu X2NvbnN0YW50X3AoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4 IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA/ICggKCgoKDB4MDAwMCB8 IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4 MDA0MCkgKyAxKSA8PCAxKSkgPCAyID8gMCA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIg fCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkp ICYgKDFVTEwgPDwgNjMpID8gNjMgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgw MDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgx VUxMIDw8IDYyKSA/IDYyIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8 IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8 PCA2MSkgPyA2MSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAw MDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNjAp ID8gNjAgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwg MHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDU5KSA/IDU5 IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAx MCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA1OCkgPyA1OCA6ICgo KCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAw eDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNTcpID8gNTcgOiAoKCgoMHgw MDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIw IHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDU2KSA/IDU2IDogKCgoKDB4MDAwMCB8 IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4 MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA1NSkgPyA1NSA6ICgoKCgweDAwMDAgfCAweDAw MDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDAp ICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNTQpID8gNTQgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwg MHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEp IDw8IDEpKSAmICgxVUxMIDw8IDUzKSA/IDUzIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAw MiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAx KSkgJiAoMVVMTCA8PCA1MikgPyA1MiA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAw eDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYg KDFVTEwgPDwgNTEpID8gNTEgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0 IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxM IDw8IDUwKSA/IDUwIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4 MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA0 OSkgPyA0OSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDgg fCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNDgpID8g NDggOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgw MDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDQ3KSA/IDQ3IDog KCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8 IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA0NikgPyA0NiA6ICgoKCgw eDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAw MjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNDUpID8gNDUgOiAoKCgoMHgwMDAw IHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwg MHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDQ0KSA/IDQ0IDogKCgoKDB4MDAwMCB8IDB4 MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0 MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA0MykgPyA0MyA6ICgoKCgweDAwMDAgfCAweDAwMDEg fCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsg MSkgPDwgMSkpICYgKDFVTEwgPDwgNDIpID8gNDIgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgw MDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8 IDEpKSAmICgxVUxMIDw8IDQxKSA/IDQxIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8 IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkg JiAoMVVMTCA8PCA0MCkgPyA0MCA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAw MDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFV TEwgPDwgMzkpID8gMzkgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwg MHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8 IDM4KSA/IDM4IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAw OCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAzNykg PyAzNyA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAw eDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMzYpID8gMzYg OiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEw IHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDM1KSA/IDM1IDogKCgo KDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4 MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAzNCkgPyAzNCA6ICgoKCgweDAw MDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAg fCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMzMpID8gMzMgOiAoKCgoMHgwMDAwIHwg MHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgw MDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDMyKSA/IDMyIDogKCgoKDB4MDAwMCB8IDB4MDAw MSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkg KyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAzMSkgPyAzMSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAw eDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkg PDwgMSkpICYgKDFVTEwgPDwgMzApID8gMzAgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAy IHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEp KSAmICgxVUxMIDw8IDI5KSA/IDI5IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4 MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAo MVVMTCA8PCAyOCkgPyAyOCA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQg fCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwg PDwgMjcpID8gMjcgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgw MDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDI2 KSA/IDI2IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8 IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAyNSkgPyAy NSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAw MTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMjQpID8gMjQgOiAo KCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwg MHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDIzKSA/IDIzIDogKCgoKDB4 MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAy MCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAyMikgPyAyMiA6ICgoKCgweDAwMDAg fCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAw eDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMjEpID8gMjEgOiAoKCgoMHgwMDAwIHwgMHgw MDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQw KSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDIwKSA/IDIwIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8 IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAx KSA8PCAxKSkgJiAoMVVMTCA8PCAxOSkgPyAxOSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAw MDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwg MSkpICYgKDFVTEwgPDwgMTgpID8gMTggOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwg MHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAm ICgxVUxMIDw8IDE3KSA/IDE3IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAw NCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVM TCA8PCAxNikgPyAxNiA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAw eDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwg MTUpID8gMTUgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4 IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDE0KSA/ IDE0IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4 MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAxMykgPyAxMyA6 ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAg fCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMTIpID8gMTIgOiAoKCgo MHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgw MDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDExKSA/IDExIDogKCgoKDB4MDAw MCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8 IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAxMCkgPyAxMCA6ICgoKCgweDAwMDAgfCAw eDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAw NDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgOSkgPyA5IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8 IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAx KSA8PCAxKSkgJiAoMVVMTCA8PCA4KSA/IDggOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAy IHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEp KSAmICgxVUxMIDw8IDcpID8gNyA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAw MDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFV TEwgPDwgNikgPyA2IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4 MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA1 KSA/IDUgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwg MHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDQpID8gNCA6 ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAg fCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMykgPyAzIDogKCgoKDB4 MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAy MCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAyKSA/IDIgOiAxKSA6IC0xKSA6IChz aXplb2YoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgw MDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA8PSA0KSA/IF9faWxvZzJfdTMyKCgo KDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4 MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgOiBfX2lsb2cyX3U2NCgoKCgweDAwMDAgfCAweDAw MDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDAp ICsgMSkgPDwgMSkpICkgIT0gc2l6ZW9mKHN0YXRlX2NoYXIpIC0gMSkpKSBfX2NvbXBpbGV0aW1l X2Fzc2VydF8xNDI5KCk7IH0gd2hpbGUgKDApOwoKIHJldHVybiBzdGF0ZV9jaGFyW3N0YXRlXTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgY2hhciB0YXNrX3N0YXRlX3RvX2NoYXIoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCnsKIHJl dHVybiB0YXNrX2luZGV4X3RvX2NoYXIodGFza19zdGF0ZV9pbmRleCh0c2spKTsKfQojIDE0NDgg Ii4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaXNfZ2xvYmFsX2luaXQoc3RydWN0IHRhc2tf c3RydWN0ICp0c2spCnsKIHJldHVybiB0YXNrX3RnaWRfbnIodHNrKSA9PSAxOwp9CgpleHRlcm4g c3RydWN0IHBpZCAqY2FkX3BpZDsKIyAxNTE3ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCBpc19wZXJjcHVfdGhyZWFkKHZvaWQpCnsKCiByZXR1cm4gKGdldF9jdXJyZW50KCktPmZsYWdz ICYgMHgwNDAwMDAwMCkgJiYKICAoZ2V0X2N1cnJlbnQoKS0+bnJfY3B1c19hbGxvd2VkID09IDEp OwoKCgp9CiMgMTU0OSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGFza19ub19uZXdf cHJpdnMoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0ZXN0X2JpdCgwLCAmcC0+YXRv bWljX2ZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfc2V0X25vX25ld19wcml2cyhzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnApIHsgc2V0X2JpdCgwLCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3NwcmVh ZF9wYWdlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyByZXR1cm4gdGVzdF9iaXQoMSwgJnAtPmF0 b21pY19mbGFncyk7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCB0YXNrX3NldF9zcHJlYWRfcGFnZShzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnApIHsgc2V0X2JpdCgxLCAmcC0+YXRvbWljX2ZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfY2xlYXJf c3ByZWFkX3BhZ2Uoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IGNsZWFyX2JpdCgxLCAmcC0+YXRv bWljX2ZsYWdzKTsgfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3NwcmVhZF9zbGFiKHN0cnVjdCB0YXNrX3N0cnVjdCAq cCkgeyByZXR1cm4gdGVzdF9iaXQoMiwgJnAtPmF0b21pY19mbGFncyk7IH0Kc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0YXNrX3Nl dF9zcHJlYWRfc2xhYihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgc2V0X2JpdCgyLCAmcC0+YXRv bWljX2ZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfY2xlYXJfc3ByZWFkX3NsYWIoc3RydWN0IHRhc2tfc3Ry dWN0ICpwKSB7IGNsZWFyX2JpdCgyLCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3Nw ZWNfc3NiX2Rpc2FibGUoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0ZXN0X2JpdCgz LCAmcC0+YXRvbWljX2ZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfc2V0X3NwZWNfc3NiX2Rpc2FibGUoc3Ry dWN0IHRhc2tfc3RydWN0ICpwKSB7IHNldF9iaXQoMywgJnAtPmF0b21pY19mbGFncyk7IH0Kc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCB0YXNrX2NsZWFyX3NwZWNfc3NiX2Rpc2FibGUoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IGNs ZWFyX2JpdCgzLCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3NwZWNfc3NiX25vZXhl YyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgcmV0dXJuIHRlc3RfYml0KDcsICZwLT5hdG9taWNf ZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgdGFza19zZXRfc3BlY19zc2Jfbm9leGVjKHN0cnVjdCB0YXNrX3N0cnVj dCAqcCkgeyBzZXRfYml0KDcsICZwLT5hdG9taWNfZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdGFza19jbGVhcl9z cGVjX3NzYl9ub2V4ZWMoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IGNsZWFyX2JpdCg3LCAmcC0+ YXRvbWljX2ZsYWdzKTsgfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3NwZWNfc3NiX2ZvcmNlX2Rpc2FibGUoc3RydWN0 IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0ZXN0X2JpdCg0LCAmcC0+YXRvbWljX2ZsYWdzKTsg fQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHRhc2tfc2V0X3NwZWNfc3NiX2ZvcmNlX2Rpc2FibGUoc3RydWN0IHRhc2tfc3RydWN0 ICpwKSB7IHNldF9iaXQoNCwgJnAtPmF0b21pY19mbGFncyk7IH0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGFza19zcGVjX2li X2Rpc2FibGUoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0ZXN0X2JpdCg1LCAmcC0+ YXRvbWljX2ZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfc2V0X3NwZWNfaWJfZGlzYWJsZShzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnApIHsgc2V0X2JpdCg1LCAmcC0+YXRvbWljX2ZsYWdzKTsgfQpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tf Y2xlYXJfc3BlY19pYl9kaXNhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyBjbGVhcl9iaXQo NSwgJnAtPmF0b21pY19mbGFncyk7IH0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGFza19zcGVjX2liX2ZvcmNlX2Rpc2FibGUo c3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0ZXN0X2JpdCg2LCAmcC0+YXRvbWljX2Zs YWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHRhc2tfc2V0X3NwZWNfaWJfZm9yY2VfZGlzYWJsZShzdHJ1Y3QgdGFza19z dHJ1Y3QgKnApIHsgc2V0X2JpdCg2LCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApjdXJyZW50 X3Jlc3RvcmVfZmxhZ3ModW5zaWduZWQgbG9uZyBvcmlnX2ZsYWdzLCB1bnNpZ25lZCBsb25nIGZs YWdzKQp7CiBnZXRfY3VycmVudCgpLT5mbGFncyAmPSB+ZmxhZ3M7CiBnZXRfY3VycmVudCgpLT5m bGFncyB8PSBvcmlnX2ZsYWdzICYgZmxhZ3M7Cn0KCmV4dGVybiBpbnQgY3B1c2V0X2NwdW1hc2tf Y2FuX3Nocmluayhjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3VyLCBjb25zdCBzdHJ1Y3QgY3B1bWFz ayAqdHJpYWwpOwpleHRlcm4gaW50IHRhc2tfY2FuX2F0dGFjaChzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnAsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjc19jcHVzX2FsbG93ZWQpOwoKZXh0ZXJuIHZvaWQg ZG9fc2V0X2NwdXNfYWxsb3dlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGNvbnN0IHN0cnVjdCBj cHVtYXNrICpuZXdfbWFzayk7CmV4dGVybiBpbnQgc2V0X2NwdXNfYWxsb3dlZF9wdHIoc3RydWN0 IHRhc2tfc3RydWN0ICpwLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbmV3X21hc2spOwojIDE2MDIg Ii4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gaW50IHlpZWxkX3RvKHN0cnVjdCB0YXNr X3N0cnVjdCAqcCwgYm9vbCBwcmVlbXB0KTsKZXh0ZXJuIHZvaWQgc2V0X3VzZXJfbmljZShzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnAsIGxvbmcgbmljZSk7CmV4dGVybiBpbnQgdGFza19wcmlvKGNvbnN0 IHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGFza19uaWNlKGNvbnN0IHN0cnVj dCB0YXNrX3N0cnVjdCAqcCkKewogcmV0dXJuICgoKHApLT5zdGF0aWNfcHJpbykgLSAoMTAwICsg KDE5IC0gLTIwICsgMSkgLyAyKSk7Cn0KCmV4dGVybiBpbnQgY2FuX25pY2UoY29uc3Qgc3RydWN0 IHRhc2tfc3RydWN0ICpwLCBjb25zdCBpbnQgbmljZSk7CmV4dGVybiBpbnQgdGFza19jdXJyKGNv bnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7CmV4dGVybiBpbnQgaWRsZV9jcHUoaW50IGNwdSk7 CmV4dGVybiBpbnQgYXZhaWxhYmxlX2lkbGVfY3B1KGludCBjcHUpOwpleHRlcm4gaW50IHNjaGVk X3NldHNjaGVkdWxlcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50LCBjb25zdCBzdHJ1Y3Qgc2No ZWRfcGFyYW0gKik7CmV4dGVybiBpbnQgc2NoZWRfc2V0c2NoZWR1bGVyX25vY2hlY2soc3RydWN0 IHRhc2tfc3RydWN0ICosIGludCwgY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICopOwpleHRlcm4g aW50IHNjaGVkX3NldGF0dHIoc3RydWN0IHRhc2tfc3RydWN0ICosIGNvbnN0IHN0cnVjdCBzY2hl ZF9hdHRyICopOwpleHRlcm4gaW50IHNjaGVkX3NldGF0dHJfbm9jaGVjayhzdHJ1Y3QgdGFza19z dHJ1Y3QgKiwgY29uc3Qgc3RydWN0IHNjaGVkX2F0dHIgKik7CmV4dGVybiBzdHJ1Y3QgdGFza19z dHJ1Y3QgKmlkbGVfdGFzayhpbnQgY3B1KTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaXNfaWRsZV90YXNrKGNvbnN0 IHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogcmV0dXJuICEhKHAtPmZsYWdzICYgMHgwMDAwMDAw Mik7Cn0KCmV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnJfdGFzayhpbnQgY3B1KTsKZXh0 ZXJuIHZvaWQgaWE2NF9zZXRfY3Vycl90YXNrKGludCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAq cCk7Cgp2b2lkIHlpZWxkKHZvaWQpOwoKdW5pb24gdGhyZWFkX3VuaW9uIHsKCiBzdHJ1Y3QgdGFz a19zdHJ1Y3QgdGFzazsKCgoKCiB1bnNpZ25lZCBsb25nIHN0YWNrWygoKDFVTCkgPDwgMTIpIDw8 ICgyICsgMCkpL3NpemVvZihsb25nKV07Cn07CgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW5p dF9zdGFja1soKCgxVUwpIDw8IDEyKSA8PCAoMiArIDApKSAvIHNpemVvZih1bnNpZ25lZCBsb25n KV07CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgc3RydWN0IHRocmVhZF9pbmZvICp0YXNrX3RocmVhZF9pbmZvKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdGFzaykKewogcmV0dXJuICZ0YXNrLT50aHJlYWRfaW5mbzsKfQojIDE2NzkgIi4vaW5j bHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpmaW5kX3Rhc2tf YnlfdnBpZChwaWRfdCBucik7CmV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmZpbmRfdGFza19i eV9waWRfbnMocGlkX3QgbnIsIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyk7CgoKCgpleHRlcm4g c3RydWN0IHRhc2tfc3RydWN0ICpmaW5kX2dldF90YXNrX2J5X3ZwaWQocGlkX3QgbnIpOwoKZXh0 ZXJuIGludCB3YWtlX3VwX3N0YXRlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBp bnQgc3RhdGUpOwpleHRlcm4gaW50IHdha2VfdXBfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnRzayk7CmV4dGVybiB2b2lkIHdha2VfdXBfbmV3X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0 c2spOwoKCmV4dGVybiB2b2lkIGtpY2tfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7 CgoKCgpleHRlcm4gdm9pZCBfX3NldF90YXNrX2NvbW0oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ss IGNvbnN0IGNoYXIgKmZyb20sIGJvb2wgZXhlYyk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldF90YXNrX2NvbW0oc3RydWN0 IHRhc2tfc3RydWN0ICp0c2ssIGNvbnN0IGNoYXIgKmZyb20pCnsKIF9fc2V0X3Rhc2tfY29tbSh0 c2ssIGZyb20sIGZhbHNlKTsKfQoKZXh0ZXJuIGNoYXIgKl9fZ2V0X3Rhc2tfY29tbShjaGFyICp0 bywgc2l6ZV90IGxlbiwgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spOwoKCgoKCgp2b2lkIHNjaGVk dWxlcl9pcGkodm9pZCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHdhaXRfdGFza19pbmFjdGl2ZShz dHJ1Y3QgdGFza19zdHJ1Y3QgKiwgbG9uZyBtYXRjaF9zdGF0ZSk7CiMgMTcyNSAiLi9pbmNsdWRl L2xpbnV4L3NjaGVkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X3Rza190aHJlYWRfZmxhZyhzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRzaywgaW50IGZsYWcpCnsKIHNldF90aV90aHJlYWRfZmxhZyh0YXNrX3RocmVhZF9pbmZv KHRzayksIGZsYWcpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNsZWFyX3Rza190aHJlYWRfZmxhZyhzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRzaywgaW50IGZsYWcpCnsKIGNsZWFyX3RpX3RocmVhZF9mbGFnKHRhc2tfdGhyZWFk X2luZm8odHNrKSwgZmxhZyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdXBkYXRlX3Rza190aHJlYWRfZmxhZyhzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRzaywgaW50IGZsYWcsCiAgICAgICBib29sIHZhbHVlKQp7CiB1cGRhdGVf dGlfdGhyZWFkX2ZsYWcodGFza190aHJlYWRfaW5mbyh0c2spLCBmbGFnLCB2YWx1ZSk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCB0ZXN0X2FuZF9zZXRfdHNrX3RocmVhZF9mbGFnKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBp bnQgZmxhZykKewogcmV0dXJuIHRlc3RfYW5kX3NldF90aV90aHJlYWRfZmxhZyh0YXNrX3RocmVh ZF9pbmZvKHRzayksIGZsYWcpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGVzdF9hbmRfY2xlYXJfdHNrX3RocmVhZF9mbGFn KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBpbnQgZmxhZykKewogcmV0dXJuIHRlc3RfYW5kX2Ns ZWFyX3RpX3RocmVhZF9mbGFnKHRhc2tfdGhyZWFkX2luZm8odHNrKSwgZmxhZyk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0 ZXN0X3Rza190aHJlYWRfZmxhZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgaW50IGZsYWcpCnsK IHJldHVybiB0ZXN0X3RpX3RocmVhZF9mbGFnKHRhc2tfdGhyZWFkX2luZm8odHNrKSwgZmxhZyk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgc2V0X3Rza19uZWVkX3Jlc2NoZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCnsK IHNldF90c2tfdGhyZWFkX2ZsYWcodHNrLDMpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNsZWFyX3Rza19uZWVkX3Jlc2No ZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCnsKIGNsZWFyX3Rza190aHJlYWRfZmxhZyh0c2ss Myk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludCB0ZXN0X3Rza19uZWVkX3Jlc2NoZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2sp CnsKIHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KCEhKHRlc3RfdHNrX3RocmVhZF9mbGFnKHRzaywz KSksIDApOwp9CiMgMTc3OCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVybiBpbnQgX2Nv bmRfcmVzY2hlZCh2b2lkKTsKIyAxNzg4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJu IGludCBfX2NvbmRfcmVzY2hlZF9sb2NrKHNwaW5sb2NrX3QgKmxvY2spOwoKCgoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNv bmRfcmVzY2hlZF9yY3Uodm9pZCkKewoKIHJjdV9yZWFkX3VubG9jaygpOwogKHsgX19fbWlnaHRf c2xlZXAoImluY2x1ZGUvbGludXgvc2NoZWQuaCIsIDE3OTksIDApOyBfY29uZF9yZXNjaGVkKCk7 IH0pOwogcmN1X3JlYWRfbG9jaygpOwoKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc3Bpbl9uZWVkYnJlYWsoc3Bpbmxv Y2tfdCAqbG9jaykKewoKCgogcmV0dXJuIDA7Cgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIGJvb2wgbmVlZF9yZXNjaGVkKHZvaWQpCnsKIHJldHVybiBfX2J1aWx0aW5fZXhw ZWN0KCEhKHRlc3RfdGlfdGhyZWFkX2ZsYWcoKChzdHJ1Y3QgdGhyZWFkX2luZm8gKilnZXRfY3Vy cmVudCgpKSwgMykpLCAwKTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgdGFza19jcHUoY29uc3Qgc3Ry dWN0IHRhc2tfc3RydWN0ICpwKQp7CgogcmV0dXJuICh7IHVuaW9uIHsgdHlwZW9mKHAtPmNwdSkg X192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihwLT5j cHUpLCBfX3UuX19jLCBzaXplb2YocC0+Y3B1KSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2No ZWNrKCYocC0+Y3B1KSwgX191Ll9fYywgc2l6ZW9mKHAtPmNwdSkpOyBkbyB7IH0gd2hpbGUgKDAp OyBfX3UuX192YWw7IH0pOwoKCgp9CgpleHRlcm4gdm9pZCBzZXRfdGFza19jcHUoc3RydWN0IHRh c2tfc3RydWN0ICpwLCB1bnNpZ25lZCBpbnQgY3B1KTsKIyAxODY3ICIuL2luY2x1ZGUvbGludXgv c2NoZWQuaCIKZXh0ZXJuIGxvbmcgc2NoZWRfc2V0YWZmaW5pdHkocGlkX3QgcGlkLCBjb25zdCBz dHJ1Y3QgY3B1bWFzayAqbmV3X21hc2spOwpleHRlcm4gbG9uZyBzY2hlZF9nZXRhZmZpbml0eShw aWRfdCBwaWQsIHN0cnVjdCBjcHVtYXNrICptYXNrKTsKIyAxODgwICIuL2luY2x1ZGUvbGludXgv c2NoZWQuaCIKZW51bSByc2VxX2V2ZW50X21hc2tfYml0cyB7CiBSU0VRX0VWRU5UX1BSRUVNUFRf QklUID0gUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fUFJFRU1QVF9CSVQsCiBSU0VRX0VWRU5U X1NJR05BTF9CSVQgPSBSU0VRX0NTX0ZMQUdfTk9fUkVTVEFSVF9PTl9TSUdOQUxfQklULAogUlNF UV9FVkVOVF9NSUdSQVRFX0JJVCA9IFJTRVFfQ1NfRkxBR19OT19SRVNUQVJUX09OX01JR1JBVEVf QklULAp9OwoKZW51bSByc2VxX2V2ZW50X21hc2sgewogUlNFUV9FVkVOVF9QUkVFTVBUID0gKDFV IDw8IFJTRVFfRVZFTlRfUFJFRU1QVF9CSVQpLAogUlNFUV9FVkVOVF9TSUdOQUwgPSAoMVUgPDwg UlNFUV9FVkVOVF9TSUdOQUxfQklUKSwKIFJTRVFfRVZFTlRfTUlHUkFURSA9ICgxVSA8PCBSU0VR X0VWRU5UX01JR1JBVEVfQklUKSwKfTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcnNlcV9zZXRfbm90aWZ5X3Jlc3VtZShzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnQpCnsKIGlmICh0LT5yc2VxKQogIHNldF90c2tfdGhyZWFkX2ZsYWco dCwgMSk7Cn0KCnZvaWQgX19yc2VxX2hhbmRsZV9ub3RpZnlfcmVzdW1lKHN0cnVjdCBrc2lnbmFs ICpzaWcsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcnNlcV9oYW5kbGVfbm90aWZ5X3Jl c3VtZShzdHJ1Y3Qga3NpZ25hbCAqa3NpZywKICAgICAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWdz KQp7CiBpZiAoZ2V0X2N1cnJlbnQoKS0+cnNlcSkKICBfX3JzZXFfaGFuZGxlX25vdGlmeV9yZXN1 bWUoa3NpZywgcmVncyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcnNlcV9zaWduYWxfZGVsaXZlcihzdHJ1Y3Qga3NpZ25h bCAqa3NpZywKICAgICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncykKewogX19hc21fXyBfX3Zv bGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKIF9fc2V0X2JpdChSU0VRX0VWRU5UX1NJR05BTF9C SVQsICZnZXRfY3VycmVudCgpLT5yc2VxX2V2ZW50X21hc2spOwogX19hc21fXyBfX3ZvbGF0aWxl X18oIiI6IDogOiJtZW1vcnkiKTsKIHJzZXFfaGFuZGxlX25vdGlmeV9yZXN1bWUoa3NpZywgcmVn cyk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHJzZXFfcHJlZW1wdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpCnsKIF9fc2V0 X2JpdChSU0VRX0VWRU5UX1BSRUVNUFRfQklULCAmdC0+cnNlcV9ldmVudF9tYXNrKTsKIHJzZXFf c2V0X25vdGlmeV9yZXN1bWUodCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJzZXFfbWlncmF0ZShzdHJ1Y3QgdGFza19z dHJ1Y3QgKnQpCnsKIF9fc2V0X2JpdChSU0VRX0VWRU5UX01JR1JBVEVfQklULCAmdC0+cnNlcV9l dmVudF9tYXNrKTsKIHJzZXFfc2V0X25vdGlmeV9yZXN1bWUodCk7Cn0KCgoKCgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJzZXFf Zm9yayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIHVuc2lnbmVkIGxvbmcgY2xvbmVfZmxhZ3MpCnsK IGlmIChjbG9uZV9mbGFncyAmIDB4MDAwMDAxMDApIHsKICB0LT5yc2VxID0gKCh2b2lkICopMCk7 CiAgdC0+cnNlcV9zaWcgPSAwOwogIHQtPnJzZXFfZXZlbnRfbWFzayA9IDA7CiB9IGVsc2Ugewog IHQtPnJzZXEgPSBnZXRfY3VycmVudCgpLT5yc2VxOwogIHQtPnJzZXFfc2lnID0gZ2V0X2N1cnJl bnQoKS0+cnNlcV9zaWc7CiAgdC0+cnNlcV9ldmVudF9tYXNrID0gZ2V0X2N1cnJlbnQoKS0+cnNl cV9ldmVudF9tYXNrOwogfQp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJzZXFfZXhlY3ZlKHN0cnVjdCB0YXNrX3N0cnVjdCAq dCkKewogdC0+cnNlcSA9ICgodm9pZCAqKTApOwogdC0+cnNlcV9zaWcgPSAwOwogdC0+cnNlcV9l dmVudF9tYXNrID0gMDsKfQojIDE5ODIgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgp2b2lkIF9f ZXhpdF91bWgoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spOwoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBleGl0X3VtaChzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRzaykKewogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEodHNrLT5mbGFncyAm IDB4MDIwMDAwMDApLCAwKSkKICBfX2V4aXRfdW1oKHRzayk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcnNlcV9z eXNjYWxsKHN0cnVjdCBwdF9yZWdzICpyZWdzKQp7Cn0KCgoKY29uc3Qgc3RydWN0IHNjaGVkX2F2 ZyAqc2NoZWRfdHJhY2VfY2ZzX3JxX2F2ZyhzdHJ1Y3QgY2ZzX3JxICpjZnNfcnEpOwpjaGFyICpz Y2hlZF90cmFjZV9jZnNfcnFfcGF0aChzdHJ1Y3QgY2ZzX3JxICpjZnNfcnEsIGNoYXIgKnN0ciwg aW50IGxlbik7CmludCBzY2hlZF90cmFjZV9jZnNfcnFfY3B1KHN0cnVjdCBjZnNfcnEgKmNmc19y cSk7Cgpjb25zdCBzdHJ1Y3Qgc2NoZWRfYXZnICpzY2hlZF90cmFjZV9ycV9hdmdfcnQoc3RydWN0 IHJxICpycSk7CmNvbnN0IHN0cnVjdCBzY2hlZF9hdmcgKnNjaGVkX3RyYWNlX3JxX2F2Z19kbChz dHJ1Y3QgcnEgKnJxKTsKY29uc3Qgc3RydWN0IHNjaGVkX2F2ZyAqc2NoZWRfdHJhY2VfcnFfYXZn X2lycShzdHJ1Y3QgcnEgKnJxKTsKCmludCBzY2hlZF90cmFjZV9ycV9jcHUoc3RydWN0IHJxICpy cSk7Cgpjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc2NoZWRfdHJhY2VfcmRfc3BhbihzdHJ1Y3Qgcm9v dF9kb21haW4gKnJkKTsKIyA2ICIuL2luY2x1ZGUvbGludXgvaW9wcmlvLmgiIDIKIyAxICIuL2lu Y2x1ZGUvbGludXgvc2NoZWQvcnQuaCIgMQoKCgoKCgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg cnRfcHJpbyhpbnQgcHJpbykKewogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEocHJpbyA8IDEwMCks IDApKQogIHJldHVybiAxOwogcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBydF90YXNrKHN0cnVjdCB0YXNrX3N0 cnVjdCAqcCkKewogcmV0dXJuIHJ0X3ByaW8ocC0+cHJpbyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGFza19pc19yZWFs dGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKewogaW50IHBvbGljeSA9IHRzay0+cG9saWN5 OwoKIGlmIChwb2xpY3kgPT0gMSB8fCBwb2xpY3kgPT0gMikKICByZXR1cm4gdHJ1ZTsKIGlmIChw b2xpY3kgPT0gNikKICByZXR1cm4gdHJ1ZTsKIHJldHVybiBmYWxzZTsKfQoKCgoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB0 YXNrX3N0cnVjdCAqcnRfbXV0ZXhfZ2V0X3RvcF90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkK ewogcmV0dXJuIHAtPnBpX3RvcF90YXNrOwp9CmV4dGVybiB2b2lkIHJ0X211dGV4X3NldHByaW8o c3RydWN0IHRhc2tfc3RydWN0ICpwLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpX3Rhc2spOwpleHRl cm4gdm9pZCBydF9tdXRleF9hZGp1c3RfcGkoc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0 c2tfaXNfcGlfYmxvY2tlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKewogcmV0dXJuIHRzay0+ cGlfYmxvY2tlZF9vbiAhPSAoKHZvaWQgKikwKTsKfQojIDU4ICIuL2luY2x1ZGUvbGludXgvc2No ZWQvcnQuaCIKZXh0ZXJuIHZvaWQgbm9ybWFsaXplX3J0X3Rhc2tzKHZvaWQpOwojIDcgIi4vaW5j bHVkZS9saW51eC9pb3ByaW8uaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9pb2NvbnRleHQuaCIg MQojIDkgIi4vaW5jbHVkZS9saW51eC9pb2NvbnRleHQuaCIKZW51bSB7CiBJQ1FfRVhJVEVEID0g MSA8PCAyLAp9OwojIDcyICIuL2luY2x1ZGUvbGludXgvaW9jb250ZXh0LmgiCnN0cnVjdCBpb19j cSB7CiBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcTsKIHN0cnVjdCBpb19jb250ZXh0ICppb2M7CgoK CgoKCgogdW5pb24gewogIHN0cnVjdCBsaXN0X2hlYWQgcV9ub2RlOwogIHN0cnVjdCBrbWVtX2Nh Y2hlICpfX3JjdV9pY3FfY2FjaGU7CiB9OwogdW5pb24gewogIHN0cnVjdCBobGlzdF9ub2RlIGlv Y19ub2RlOwogIHN0cnVjdCBjYWxsYmFja19oZWFkIF9fcmN1X2hlYWQ7CiB9OwoKIHVuc2lnbmVk IGludCBmbGFnczsKfTsKCgoKCgpzdHJ1Y3QgaW9fY29udGV4dCB7CiBhdG9taWNfbG9uZ190IHJl ZmNvdW50OwogYXRvbWljX3QgYWN0aXZlX3JlZjsKIGF0b21pY190IG5yX3Rhc2tzOwoKCiBzcGlu bG9ja190IGxvY2s7CgogdW5zaWduZWQgc2hvcnQgaW9wcmlvOwoKCgoKIGludCBucl9iYXRjaF9y ZXF1ZXN0czsKIHVuc2lnbmVkIGxvbmcgbGFzdF93YWl0ZWQ7Cgogc3RydWN0IHhhcnJheSBpY3Ff dHJlZTsKIHN0cnVjdCBpb19jcSAqaWNxX2hpbnQ7CiBzdHJ1Y3QgaGxpc3RfaGVhZCBpY3FfbGlz dDsKCiBzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVsZWFzZV93b3JrOwp9OwojIDEyOSAiLi9pbmNsdWRl L2xpbnV4L2lvY29udGV4dC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGdldF9pb19jb250ZXh0X2FjdGl2ZShzdHJ1Y3QgaW9f Y29udGV4dCAqaW9jKQp7CiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGF0b21pY19sb25nX3Jl YWQoJmlvYy0+cmVmY291bnQpIDw9IDApOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93 YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0 ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIy Olx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJc dCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29y ZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50 cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImlu Y2x1ZGUvbGludXgvaW9jb250ZXh0LmgiKSwgImkiICgxMzEpLCAiaSIgKCgxIDw8IDApfCgoMSA8 PCAxKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3 aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2Nh cmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIg OiA6ICJpIiAoMjUpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0 X3dhcm5fb24pLCAwKTsgfSk7CiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGF0b21pY19yZWFk KCZpb2MtPmFjdGl2ZV9yZWYpIDw9IDApOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93 YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0 ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIy Olx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJc dCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29y ZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50 cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImlu Y2x1ZGUvbGludXgvaW9jb250ZXh0LmgiKSwgImkiICgxMzIpLCAiaSIgKCgxIDw8IDApfCgoMSA8 PCAxKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3 aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2Nh cmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIg OiA6ICJpIiAoMjYpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0 X3dhcm5fb24pLCAwKTsgfSk7CiBhdG9taWNfbG9uZ19pbmMoJmlvYy0+cmVmY291bnQpOwogYXRv bWljX2luYygmaW9jLT5hY3RpdmVfcmVmKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpb2NfdGFza19saW5rKHN0cnVjdCBp b19jb250ZXh0ICppb2MpCnsKIGdldF9pb19jb250ZXh0X2FjdGl2ZShpb2MpOwoKICh7IGludCBf X3JldF93YXJuX29uID0gISEoYXRvbWljX3JlYWQoJmlvYy0+bnJfdGFza3MpIDw9IDApOyBpZiAo X19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19p bmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rp b24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0 IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQj IGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4i ICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4i ICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvaW9jb250ZXh0LmgiKSwgImki ICgxNDEpLCAiaSIgKCgxIDw8IDApfCgoMSA8PCAxKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXpl b2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMw OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIg LSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMjcpKTsgfSk7IH0gd2hpbGUgKDAp OyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CiBhdG9taWNfaW5j KCZpb2MtPm5yX3Rhc2tzKTsKfQoKc3RydWN0IHRhc2tfc3RydWN0OwoKdm9pZCBwdXRfaW9fY29u dGV4dChzdHJ1Y3QgaW9fY29udGV4dCAqaW9jKTsKdm9pZCBwdXRfaW9fY29udGV4dF9hY3RpdmUo c3RydWN0IGlvX2NvbnRleHQgKmlvYyk7CnZvaWQgZXhpdF9pb19jb250ZXh0KHN0cnVjdCB0YXNr X3N0cnVjdCAqdGFzayk7CnN0cnVjdCBpb19jb250ZXh0ICpnZXRfdGFza19pb19jb250ZXh0KHN0 cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywKICAgICAgICAgICBnZnBfdCBnZnBfZmxhZ3MsIGludCBu b2RlKTsKIyA4ICIuL2luY2x1ZGUvbGludXgvaW9wcmlvLmgiIDIKIyAyNyAiLi9pbmNsdWRlL2xp bnV4L2lvcHJpby5oIgplbnVtIHsKIElPUFJJT19DTEFTU19OT05FLAogSU9QUklPX0NMQVNTX1JU LAogSU9QUklPX0NMQVNTX0JFLAogSU9QUklPX0NMQVNTX0lETEUsCn07CgoKCgoKCmVudW0gewog SU9QUklPX1dIT19QUk9DRVNTID0gMSwKIElPUFJJT19XSE9fUEdSUCwKIElPUFJJT19XSE9fVVNF UiwKfTsKIyA1NCAiLi9pbmNsdWRlL2xpbnV4L2lvcHJpby5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGFza19uaWNlX2lvcHJp byhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCnsKIHJldHVybiAodGFza19uaWNlKHRhc2spICsg MjApIC8gNTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCB0YXNrX25pY2VfaW9jbGFzcyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnRhc2spCnsKIGlmICh0YXNrLT5wb2xpY3kgPT0gNSkKICByZXR1cm4gSU9QUklPX0NMQVNTX0lE TEU7CiBlbHNlIGlmICh0YXNrX2lzX3JlYWx0aW1lKHRhc2spKQogIHJldHVybiBJT1BSSU9fQ0xB U1NfUlQ7CiBlbHNlCiAgcmV0dXJuIElPUFJJT19DTEFTU19CRTsKfQoKCgoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBnZXRfY3Vy cmVudF9pb3ByaW8odm9pZCkKewogc3RydWN0IGlvX2NvbnRleHQgKmlvYyA9IGdldF9jdXJyZW50 KCktPmlvX2NvbnRleHQ7CgogaWYgKGlvYykKICByZXR1cm4gaW9jLT5pb3ByaW87CiByZXR1cm4g KCgoSU9QUklPX0NMQVNTX05PTkUpIDw8ICgxMykpIHwgMCk7Cn0KCgoKCmV4dGVybiBpbnQgaW9w cmlvX2Jlc3QodW5zaWduZWQgc2hvcnQgYXByaW8sIHVuc2lnbmVkIHNob3J0IGJwcmlvKTsKCmV4 dGVybiBpbnQgc2V0X3Rhc2tfaW9wcmlvKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgaW50IGlv cHJpbyk7CgoKZXh0ZXJuIGludCBpb3ByaW9fY2hlY2tfY2FwKGludCBpb3ByaW8pOwojIDQwICIu L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9mc190eXBlcy5oIiAx CiMgNzEgIi4vaW5jbHVkZS9saW51eC9mc190eXBlcy5oIgpleHRlcm4gdW5zaWduZWQgY2hhciBm c19mdHlwZV90b19kdHlwZSh1bnNpZ25lZCBpbnQgZmlsZXR5cGUpOwpleHRlcm4gdW5zaWduZWQg Y2hhciBmc191bW9kZV90b19mdHlwZSh1bW9kZV90IG1vZGUpOwpleHRlcm4gdW5zaWduZWQgY2hh ciBmc191bW9kZV90b19kdHlwZSh1bW9kZV90IG1vZGUpOwojIDQxICIuL2luY2x1ZGUvbGludXgv ZnMuaCIgMgoKCgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9mcy5oIiAxCiMgNTQgIi4vaW5j bHVkZS91YXBpL2xpbnV4L2ZzLmgiCnN0cnVjdCBmaWxlX2Nsb25lX3JhbmdlIHsKIF9fczY0IHNy Y19mZDsKIF9fdTY0IHNyY19vZmZzZXQ7CiBfX3U2NCBzcmNfbGVuZ3RoOwogX191NjQgZGVzdF9v ZmZzZXQ7Cn07CgpzdHJ1Y3QgZnN0cmltX3JhbmdlIHsKIF9fdTY0IHN0YXJ0OwogX191NjQgbGVu OwogX191NjQgbWlubGVuOwp9OwoKCgoKCgpzdHJ1Y3QgZmlsZV9kZWR1cGVfcmFuZ2VfaW5mbyB7 CiBfX3M2NCBkZXN0X2ZkOwogX191NjQgZGVzdF9vZmZzZXQ7CiBfX3U2NCBieXRlc19kZWR1cGVk OwoKCgoKCgogX19zMzIgc3RhdHVzOwogX191MzIgcmVzZXJ2ZWQ7Cn07CgoKc3RydWN0IGZpbGVf ZGVkdXBlX3JhbmdlIHsKIF9fdTY0IHNyY19vZmZzZXQ7CiBfX3U2NCBzcmNfbGVuZ3RoOwogX191 MTYgZGVzdF9jb3VudDsKIF9fdTE2IHJlc2VydmVkMTsKIF9fdTMyIHJlc2VydmVkMjsKIHN0cnVj dCBmaWxlX2RlZHVwZV9yYW5nZV9pbmZvIGluZm9bMF07Cn07CgoKc3RydWN0IGZpbGVzX3N0YXRf c3RydWN0IHsKIHVuc2lnbmVkIGxvbmcgbnJfZmlsZXM7CiB1bnNpZ25lZCBsb25nIG5yX2ZyZWVf ZmlsZXM7CiB1bnNpZ25lZCBsb25nIG1heF9maWxlczsKfTsKCnN0cnVjdCBpbm9kZXNfc3RhdF90 IHsKIGxvbmcgbnJfaW5vZGVzOwogbG9uZyBucl91bnVzZWQ7CiBsb25nIGR1bW15WzVdOwp9OwoK CgoKCgoKc3RydWN0IGZzeGF0dHIgewogX191MzIgZnN4X3hmbGFnczsKIF9fdTMyIGZzeF9leHRz aXplOwogX191MzIgZnN4X25leHRlbnRzOwogX191MzIgZnN4X3Byb2ppZDsKIF9fdTMyIGZzeF9j b3dleHRzaXplOwogdW5zaWduZWQgY2hhciBmc3hfcGFkWzhdOwp9OwojIDI4NSAiLi9pbmNsdWRl L3VhcGkvbGludXgvZnMuaCIKdHlwZWRlZiBpbnQgX19rZXJuZWxfcndmX3Q7CiMgNDYgIi4vaW5j bHVkZS9saW51eC9mcy5oIiAyCgpzdHJ1Y3QgYmFja2luZ19kZXZfaW5mbzsKc3RydWN0IGJkaV93 cml0ZWJhY2s7CnN0cnVjdCBiaW87CnN0cnVjdCBleHBvcnRfb3BlcmF0aW9uczsKc3RydWN0IGhk X2dlb21ldHJ5OwpzdHJ1Y3QgaW92ZWM7CnN0cnVjdCBraW9jYjsKc3RydWN0IGtvYmplY3Q7CnN0 cnVjdCBwaXBlX2lub2RlX2luZm87CnN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKc3RydWN0IGtz dGF0ZnM7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKc3RydWN0IHZmc21vdW50OwpzdHJ1Y3QgY3Jl ZDsKc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3Q7CnN0cnVjdCBzZXFfZmlsZTsKc3RydWN0IHdvcmtx dWV1ZV9zdHJ1Y3Q7CnN0cnVjdCBpb3ZfaXRlcjsKc3RydWN0IGZzY3J5cHRfaW5mbzsKc3RydWN0 IGZzY3J5cHRfb3BlcmF0aW9uczsKc3RydWN0IGZzdmVyaXR5X2luZm87CnN0cnVjdCBmc3Zlcml0 eV9vcGVyYXRpb25zOwpzdHJ1Y3QgZnNfY29udGV4dDsKc3RydWN0IGZzX3BhcmFtZXRlcl9zcGVj OwoKZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkp IF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgaW5vZGVfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQg X19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18o KF9fY29sZF9fKSkgaW5vZGVfaW5pdF9lYXJseSh2b2lkKTsKZXh0ZXJuIHZvaWQgX19hdHRyaWJ1 dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9f KSkgZmlsZXNfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9u X18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgZmlsZXNfbWF4Zmls ZXNfaW5pdCh2b2lkKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZXNfc3RhdF9zdHJ1Y3QgZmlsZXNfc3Rh dDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZ2V0X21heF9maWxlcyh2b2lkKTsKZXh0ZXJuIHVuc2ln bmVkIGludCBzeXNjdGxfbnJfb3BlbjsKZXh0ZXJuIHN0cnVjdCBpbm9kZXNfc3RhdF90IGlub2Rl c19zdGF0OwpleHRlcm4gaW50IGxlYXNlc19lbmFibGUsIGxlYXNlX2JyZWFrX3RpbWU7CmV4dGVy biBpbnQgc3lzY3RsX3Byb3RlY3RlZF9zeW1saW5rczsKZXh0ZXJuIGludCBzeXNjdGxfcHJvdGVj dGVkX2hhcmRsaW5rczsKZXh0ZXJuIGludCBzeXNjdGxfcHJvdGVjdGVkX2ZpZm9zOwpleHRlcm4g aW50IHN5c2N0bF9wcm90ZWN0ZWRfcmVndWxhcjsKCnR5cGVkZWYgX19rZXJuZWxfcndmX3Qgcndm X3Q7CgpzdHJ1Y3QgYnVmZmVyX2hlYWQ7CnR5cGVkZWYgaW50IChnZXRfYmxvY2tfdCkoc3RydWN0 IGlub2RlICppbm9kZSwgc2VjdG9yX3QgaWJsb2NrLAogICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJo X3Jlc3VsdCwgaW50IGNyZWF0ZSk7CnR5cGVkZWYgaW50IChkaW9faW9kb25lX3QpKHN0cnVjdCBr aW9jYiAqaW9jYiwgbG9mZl90IG9mZnNldCwKICAgc3NpemVfdCBieXRlcywgdm9pZCAqcHJpdmF0 ZSk7CiMgMjI0ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0IGlhdHRyIHsKIHVuc2lnbmVk IGludCBpYV92YWxpZDsKIHVtb2RlX3QgaWFfbW9kZTsKIGt1aWRfdCBpYV91aWQ7CiBrZ2lkX3Qg aWFfZ2lkOwogbG9mZl90IGlhX3NpemU7CiBzdHJ1Y3QgdGltZXNwZWM2NCBpYV9hdGltZTsKIHN0 cnVjdCB0aW1lc3BlYzY0IGlhX210aW1lOwogc3RydWN0IHRpbWVzcGVjNjQgaWFfY3RpbWU7CgoK CgoKCiBzdHJ1Y3QgZmlsZSAqaWFfZmlsZTsKfTsKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3F1 b3RhLmgiIDEKIyA0MCAiLi9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCiMgMSAiLi9pbmNsdWRlL2xp bnV4L3BlcmNwdV9jb3VudGVyLmgiIDEKIyAyMCAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdV9jb3Vu dGVyLmgiCnN0cnVjdCBwZXJjcHVfY291bnRlciB7CiByYXdfc3BpbmxvY2tfdCBsb2NrOwogczY0 IGNvdW50OwoKIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKCiBzMzIgKmNvdW50ZXJzOwp9OwoKZXh0 ZXJuIGludCBwZXJjcHVfY291bnRlcl9iYXRjaDsKCmludCBfX3BlcmNwdV9jb3VudGVyX2luaXQo c3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMsIHM2NCBhbW91bnQsIGdmcF90IGdmcCwKICAgICBz dHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7CiMgNDEgIi4vaW5jbHVkZS9saW51eC9wZXJjcHVf Y291bnRlci5oIgp2b2lkIHBlcmNwdV9jb3VudGVyX2Rlc3Ryb3koc3RydWN0IHBlcmNwdV9jb3Vu dGVyICpmYmMpOwp2b2lkIHBlcmNwdV9jb3VudGVyX3NldChzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIg KmZiYywgczY0IGFtb3VudCk7CnZvaWQgcGVyY3B1X2NvdW50ZXJfYWRkX2JhdGNoKHN0cnVjdCBw ZXJjcHVfY291bnRlciAqZmJjLCBzNjQgYW1vdW50LAogICAgICAgICBzMzIgYmF0Y2gpOwpzNjQg X19wZXJjcHVfY291bnRlcl9zdW0oc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpOwppbnQgX19w ZXJjcHVfY291bnRlcl9jb21wYXJlKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjLCBzNjQgcmhz LCBzMzIgYmF0Y2gpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHBlcmNwdV9jb3VudGVyX2NvbXBhcmUoc3RydWN0IHBlcmNwdV9j b3VudGVyICpmYmMsIHM2NCByaHMpCnsKIHJldHVybiBfX3BlcmNwdV9jb3VudGVyX2NvbXBhcmUo ZmJjLCByaHMsIHBlcmNwdV9jb3VudGVyX2JhdGNoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZXJjcHVfY291bnRlcl9h ZGQoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMsIHM2NCBhbW91bnQpCnsKIHBlcmNwdV9jb3Vu dGVyX2FkZF9iYXRjaChmYmMsIGFtb3VudCwgcGVyY3B1X2NvdW50ZXJfYmF0Y2gpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQg cGVyY3B1X2NvdW50ZXJfc3VtX3Bvc2l0aXZlKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKQp7 CiBzNjQgcmV0ID0gX19wZXJjcHVfY291bnRlcl9zdW0oZmJjKTsKIHJldHVybiByZXQgPCAwID8g MCA6IHJldDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgczY0IHBlcmNwdV9jb3VudGVyX3N1bShzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIg KmZiYykKewogcmV0dXJuIF9fcGVyY3B1X2NvdW50ZXJfc3VtKGZiYyk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NCBwZXJjcHVf Y291bnRlcl9yZWFkKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKQp7CiByZXR1cm4gZmJjLT5j b3VudDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBzNjQgcGVyY3B1X2NvdW50ZXJfcmVhZF9wb3NpdGl2ZShzdHJ1Y3QgcGVy Y3B1X2NvdW50ZXIgKmZiYykKewogczY0IHJldCA9IGZiYy0+Y291bnQ7CgogX19hc21fXyBfX3Zv bGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKIGlmIChyZXQgPj0gMCkKICByZXR1cm4gcmV0Owog cmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgcGVyY3B1X2NvdW50ZXJfaW5pdGlhbGl6ZWQoc3RydWN0IHBlcmNw dV9jb3VudGVyICpmYmMpCnsKIHJldHVybiAoZmJjLT5jb3VudGVycyAhPSAoKHZvaWQgKikwKSk7 Cn0KIyAxNzcgIi4vaW5jbHVkZS9saW51eC9wZXJjcHVfY291bnRlci5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBlcmNwdV9j b3VudGVyX2luYyhzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYykKewogcGVyY3B1X2NvdW50ZXJf YWRkKGZiYywgMSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X2NvdW50ZXJfZGVjKHN0cnVjdCBwZXJjcHVfY291 bnRlciAqZmJjKQp7CiBwZXJjcHVfY291bnRlcl9hZGQoZmJjLCAtMSk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1 X2NvdW50ZXJfc3ViKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjLCBzNjQgYW1vdW50KQp7CiBw ZXJjcHVfY291bnRlcl9hZGQoZmJjLCAtYW1vdW50KTsKfQojIDQxICIuL2luY2x1ZGUvbGludXgv cXVvdGEuaCIgMgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9kcWJsa194ZnMuaCIgMQojIDUz ICIuL2luY2x1ZGUvdWFwaS9saW51eC9kcWJsa194ZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgZnNfZGlz a19xdW90YSB7CiBfX3M4IGRfdmVyc2lvbjsKIF9fczggZF9mbGFnczsKIF9fdTE2IGRfZmllbGRt YXNrOwogX191MzIgZF9pZDsKIF9fdTY0IGRfYmxrX2hhcmRsaW1pdDsKIF9fdTY0IGRfYmxrX3Nv ZnRsaW1pdDsKIF9fdTY0IGRfaW5vX2hhcmRsaW1pdDsKIF9fdTY0IGRfaW5vX3NvZnRsaW1pdDsK IF9fdTY0IGRfYmNvdW50OwogX191NjQgZF9pY291bnQ7CiBfX3MzMiBkX2l0aW1lcjsKCiBfX3Mz MiBkX2J0aW1lcjsKIF9fdTE2IGRfaXdhcm5zOwogX191MTYgZF9id2FybnM7CiBfX3MzMiBkX3Bh ZGRpbmcyOwogX191NjQgZF9ydGJfaGFyZGxpbWl0OwogX191NjQgZF9ydGJfc29mdGxpbWl0Owog X191NjQgZF9ydGJjb3VudDsKIF9fczMyIGRfcnRidGltZXI7CiBfX3UxNiBkX3J0Yndhcm5zOwog X19zMTYgZF9wYWRkaW5nMzsKIGNoYXIgZF9wYWRkaW5nNFs4XTsKfSBmc19kaXNrX3F1b3RhX3Q7 CiMgMTQ5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9kcWJsa194ZnMuaCIKdHlwZWRlZiBzdHJ1Y3Qg ZnNfcWZpbGVzdGF0IHsKIF9fdTY0IHFmc19pbm87CiBfX3U2NCBxZnNfbmJsa3M7CiBfX3UzMiBx ZnNfbmV4dGVudHM7Cn0gZnNfcWZpbGVzdGF0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBmc19xdW90YV9z dGF0IHsKIF9fczggcXNfdmVyc2lvbjsKIF9fdTE2IHFzX2ZsYWdzOwogX19zOCBxc19wYWQ7CiBm c19xZmlsZXN0YXRfdCBxc191cXVvdGE7CiBmc19xZmlsZXN0YXRfdCBxc19ncXVvdGE7CiBfX3Uz MiBxc19pbmNvcmVkcXM7CiBfX3MzMiBxc19idGltZWxpbWl0OwogX19zMzIgcXNfaXRpbWVsaW1p dDsKIF9fczMyIHFzX3J0YnRpbWVsaW1pdDsKIF9fdTE2IHFzX2J3YXJubGltaXQ7CiBfX3UxNiBx c19pd2FybmxpbWl0Owp9IGZzX3F1b3RhX3N0YXRfdDsKIyAxOTIgIi4vaW5jbHVkZS91YXBpL2xp bnV4L2RxYmxrX3hmcy5oIgpzdHJ1Y3QgZnNfcWZpbGVzdGF0diB7CiBfX3U2NCBxZnNfaW5vOwog X191NjQgcWZzX25ibGtzOwogX191MzIgcWZzX25leHRlbnRzOwogX191MzIgcWZzX3BhZDsKfTsK CnN0cnVjdCBmc19xdW90YV9zdGF0diB7CiBfX3M4IHFzX3ZlcnNpb247CiBfX3U4IHFzX3BhZDE7 CiBfX3UxNiBxc19mbGFnczsKIF9fdTMyIHFzX2luY29yZWRxczsKIHN0cnVjdCBmc19xZmlsZXN0 YXR2IHFzX3VxdW90YTsKIHN0cnVjdCBmc19xZmlsZXN0YXR2IHFzX2dxdW90YTsKIHN0cnVjdCBm c19xZmlsZXN0YXR2IHFzX3BxdW90YTsKIF9fczMyIHFzX2J0aW1lbGltaXQ7CiBfX3MzMiBxc19p dGltZWxpbWl0OwogX19zMzIgcXNfcnRidGltZWxpbWl0OwogX191MTYgcXNfYndhcm5saW1pdDsK IF9fdTE2IHFzX2l3YXJubGltaXQ7CiBfX3U2NCBxc19wYWQyWzhdOwp9OwojIDQzICIuL2luY2x1 ZGUvbGludXgvcXVvdGEuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9kcWJsa192MS5oIiAxCiMg NDQgIi4vaW5jbHVkZS9saW51eC9xdW90YS5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2RxYmxr X3YyLmgiIDEKIyA5ICIuL2luY2x1ZGUvbGludXgvZHFibGtfdjIuaCIKIyAxICIuL2luY2x1ZGUv bGludXgvZHFibGtfcXRyZWUuaCIgMQojIDE4ICIuL2luY2x1ZGUvbGludXgvZHFibGtfcXRyZWUu aCIKc3RydWN0IGRxdW90OwpzdHJ1Y3Qga3FpZDsKCgpzdHJ1Y3QgcXRyZWVfZm10X29wZXJhdGlv bnMgewogdm9pZCAoKm1lbTJkaXNrX2RxYmxrKSh2b2lkICpkaXNrLCBzdHJ1Y3QgZHF1b3QgKmRx dW90KTsKIHZvaWQgKCpkaXNrMm1lbV9kcWJsaykoc3RydWN0IGRxdW90ICpkcXVvdCwgdm9pZCAq ZGlzayk7CiBpbnQgKCppc19pZCkodm9pZCAqZGlzaywgc3RydWN0IGRxdW90ICpkcXVvdCk7Cn07 CgoKc3RydWN0IHF0cmVlX21lbV9kcWluZm8gewogc3RydWN0IHN1cGVyX2Jsb2NrICpkcWlfc2I7 CiBpbnQgZHFpX3R5cGU7CiB1bnNpZ25lZCBpbnQgZHFpX2Jsb2NrczsKIHVuc2lnbmVkIGludCBk cWlfZnJlZV9ibGs7CiB1bnNpZ25lZCBpbnQgZHFpX2ZyZWVfZW50cnk7CiB1bnNpZ25lZCBpbnQg ZHFpX2Jsb2Nrc2l6ZV9iaXRzOwogdW5zaWduZWQgaW50IGRxaV9lbnRyeV9zaXplOwogdW5zaWdu ZWQgaW50IGRxaV91c2FibGVfYnM7CiB1bnNpZ25lZCBpbnQgZHFpX3F0cmVlX2RlcHRoOwogY29u c3Qgc3RydWN0IHF0cmVlX2ZtdF9vcGVyYXRpb25zICpkcWlfb3BzOwp9OwoKaW50IHF0cmVlX3dy aXRlX2RxdW90KHN0cnVjdCBxdHJlZV9tZW1fZHFpbmZvICppbmZvLCBzdHJ1Y3QgZHF1b3QgKmRx dW90KTsKaW50IHF0cmVlX3JlYWRfZHF1b3Qoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8s IHN0cnVjdCBkcXVvdCAqZHF1b3QpOwppbnQgcXRyZWVfZGVsZXRlX2RxdW90KHN0cnVjdCBxdHJl ZV9tZW1fZHFpbmZvICppbmZvLCBzdHJ1Y3QgZHF1b3QgKmRxdW90KTsKaW50IHF0cmVlX3JlbGVh c2VfZHF1b3Qoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8sIHN0cnVjdCBkcXVvdCAqZHF1 b3QpOwppbnQgcXRyZWVfZW50cnlfdW51c2VkKHN0cnVjdCBxdHJlZV9tZW1fZHFpbmZvICppbmZv LCBjaGFyICpkaXNrKTsKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHF0cmVlX2RlcHRoKHN0cnVjdCBxdHJlZV9tZW1fZHFpbmZvICpp bmZvKQp7CiB1bnNpZ25lZCBpbnQgZXBiID0gaW5mby0+ZHFpX3VzYWJsZV9icyA+PiAyOwogdW5z aWduZWQgbG9uZyBsb25nIGVudHJpZXMgPSBlcGI7CiBpbnQgaTsKCiBmb3IgKGkgPSAxOyBlbnRy aWVzIDwgKDFVTEwgPDwgMzIpOyBpKyspCiAgZW50cmllcyAqPSBlcGI7CiByZXR1cm4gaTsKfQpp bnQgcXRyZWVfZ2V0X25leHRfaWQoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8sIHN0cnVj dCBrcWlkICpxaWQpOwojIDEwICIuL2luY2x1ZGUvbGludXgvZHFibGtfdjIuaCIgMgojIDQ1ICIu L2luY2x1ZGUvbGludXgvcXVvdGEuaCIgMgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9wcm9qaWQu aCIgMQojIDE3ICIuL2luY2x1ZGUvbGludXgvcHJvamlkLmgiCnN0cnVjdCB1c2VyX25hbWVzcGFj ZTsKZXh0ZXJuIHN0cnVjdCB1c2VyX25hbWVzcGFjZSBpbml0X3VzZXJfbnM7Cgp0eXBlZGVmIF9f a2VybmVsX3VpZDMyX3QgcHJvamlkX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiBwcm9qaWRfdCB2YWw7 Cn0ga3Byb2ppZF90OwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgcHJvamlkX3QgX19rcHJvamlkX3ZhbChrcHJvamlkX3QgcHJvamlkKQp7 CiByZXR1cm4gcHJvamlkLnZhbDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHByb2ppZF9lcShrcHJvamlkX3QgbGVm dCwga3Byb2ppZF90IHJpZ2h0KQp7CiByZXR1cm4gX19rcHJvamlkX3ZhbChsZWZ0KSA9PSBfX2tw cm9qaWRfdmFsKHJpZ2h0KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBwcm9qaWRfbHQoa3Byb2ppZF90IGxlZnQsIGtwcm9q aWRfdCByaWdodCkKewogcmV0dXJuIF9fa3Byb2ppZF92YWwobGVmdCkgPCBfX2twcm9qaWRfdmFs KHJpZ2h0KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBwcm9qaWRfdmFsaWQoa3Byb2ppZF90IHByb2ppZCkKewogcmV0dXJu ICFwcm9qaWRfZXEocHJvamlkLCAoa3Byb2ppZF90KXsgLTEgfSk7Cn0KCgoKZXh0ZXJuIGtwcm9q aWRfdCBtYWtlX2twcm9qaWQoc3RydWN0IHVzZXJfbmFtZXNwYWNlICpmcm9tLCBwcm9qaWRfdCBw cm9qaWQpOwoKZXh0ZXJuIHByb2ppZF90IGZyb21fa3Byb2ppZChzdHJ1Y3QgdXNlcl9uYW1lc3Bh Y2UgKnRvLCBrcHJvamlkX3QgcHJvamlkKTsKZXh0ZXJuIHByb2ppZF90IGZyb21fa3Byb2ppZF9t dW5nZWQoc3RydWN0IHVzZXJfbmFtZXNwYWNlICp0bywga3Byb2ppZF90IHByb2ppZCk7CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s IGtwcm9qaWRfaGFzX21hcHBpbmcoc3RydWN0IHVzZXJfbmFtZXNwYWNlICpucywga3Byb2ppZF90 IHByb2ppZCkKewogcmV0dXJuIGZyb21fa3Byb2ppZChucywgcHJvamlkKSAhPSAocHJvamlkX3Qp LTE7Cn0KIyA0OSAiLi9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiIDIKIyAxICIuL2luY2x1ZGUvdWFw aS9saW51eC9xdW90YS5oIiAxCiMgOTAgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3F1b3RhLmgiCmVu dW0gewogUUlGX0JMSU1JVFNfQiA9IDAsCiBRSUZfU1BBQ0VfQiwKIFFJRl9JTElNSVRTX0IsCiBR SUZfSU5PREVTX0IsCiBRSUZfQlRJTUVfQiwKIFFJRl9JVElNRV9CLAp9OwojIDExMCAiLi9pbmNs dWRlL3VhcGkvbGludXgvcXVvdGEuaCIKc3RydWN0IGlmX2RxYmxrIHsKIF9fdTY0IGRxYl9iaGFy ZGxpbWl0OwogX191NjQgZHFiX2Jzb2Z0bGltaXQ7CiBfX3U2NCBkcWJfY3Vyc3BhY2U7CiBfX3U2 NCBkcWJfaWhhcmRsaW1pdDsKIF9fdTY0IGRxYl9pc29mdGxpbWl0OwogX191NjQgZHFiX2N1cmlu b2RlczsKIF9fdTY0IGRxYl9idGltZTsKIF9fdTY0IGRxYl9pdGltZTsKIF9fdTMyIGRxYl92YWxp ZDsKfTsKCnN0cnVjdCBpZl9uZXh0ZHFibGsgewogX191NjQgZHFiX2JoYXJkbGltaXQ7CiBfX3U2 NCBkcWJfYnNvZnRsaW1pdDsKIF9fdTY0IGRxYl9jdXJzcGFjZTsKIF9fdTY0IGRxYl9paGFyZGxp bWl0OwogX191NjQgZHFiX2lzb2Z0bGltaXQ7CiBfX3U2NCBkcWJfY3VyaW5vZGVzOwogX191NjQg ZHFiX2J0aW1lOwogX191NjQgZHFiX2l0aW1lOwogX191MzIgZHFiX3ZhbGlkOwogX191MzIgZHFi X2lkOwp9OwojIDE0NCAiLi9pbmNsdWRlL3VhcGkvbGludXgvcXVvdGEuaCIKZW51bSB7CiBEUUZf Uk9PVF9TUVVBU0hfQiA9IDAsCiBEUUZfU1lTX0ZJTEVfQiA9IDE2LAoKIERRRl9QUklWQVRFCn07 CgoKCgoKCnN0cnVjdCBpZl9kcWluZm8gewogX191NjQgZHFpX2JncmFjZTsKIF9fdTY0IGRxaV9p Z3JhY2U7CiBfX3UzMiBkcWlfZmxhZ3M7CiBfX3UzMiBkcWlfdmFsaWQ7Cn07CiMgMTc4ICIuL2lu Y2x1ZGUvdWFwaS9saW51eC9xdW90YS5oIgplbnVtIHsKIFFVT1RBX05MX0NfVU5TUEVDLAogUVVP VEFfTkxfQ19XQVJOSU5HLAogX19RVU9UQV9OTF9DX01BWCwKfTsKCgplbnVtIHsKIFFVT1RBX05M X0FfVU5TUEVDLAogUVVPVEFfTkxfQV9RVFlQRSwKIFFVT1RBX05MX0FfRVhDRVNTX0lELAogUVVP VEFfTkxfQV9XQVJOSU5HLAogUVVPVEFfTkxfQV9ERVZfTUFKT1IsCiBRVU9UQV9OTF9BX0RFVl9N SU5PUiwKIFFVT1RBX05MX0FfQ0FVU0VEX0lELAogUVVPVEFfTkxfQV9QQUQsCiBfX1FVT1RBX05M X0FfTUFYLAp9OwojIDUwICIuL2luY2x1ZGUvbGludXgvcXVvdGEuaCIgMgoKCgoKZW51bSBxdW90 YV90eXBlIHsKIFVTUlFVT1RBID0gMCwKIEdSUFFVT1RBID0gMSwKIFBSSlFVT1RBID0gMiwKfTsK CgoKCgoKdHlwZWRlZiBfX2tlcm5lbF91aWQzMl90IHFpZF90Owp0eXBlZGVmIGxvbmcgbG9uZyBx c2l6ZV90OwoKc3RydWN0IGtxaWQgewogdW5pb24gewogIGt1aWRfdCB1aWQ7CiAga2dpZF90IGdp ZDsKICBrcHJvamlkX3QgcHJvamlkOwogfTsKIGVudW0gcXVvdGFfdHlwZSB0eXBlOwp9OwoKZXh0 ZXJuIGJvb2wgcWlkX2VxKHN0cnVjdCBrcWlkIGxlZnQsIHN0cnVjdCBrcWlkIHJpZ2h0KTsKZXh0 ZXJuIGJvb2wgcWlkX2x0KHN0cnVjdCBrcWlkIGxlZnQsIHN0cnVjdCBrcWlkIHJpZ2h0KTsKZXh0 ZXJuIHFpZF90IGZyb21fa3FpZChzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnRvLCBzdHJ1Y3Qga3Fp ZCBxaWQpOwpleHRlcm4gcWlkX3QgZnJvbV9rcWlkX211bmdlZChzdHJ1Y3QgdXNlcl9uYW1lc3Bh Y2UgKnRvLCBzdHJ1Y3Qga3FpZCBxaWQpOwpleHRlcm4gYm9vbCBxaWRfdmFsaWQoc3RydWN0IGtx aWQgcWlkKTsKIyA5NyAiLi9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrcWlkIG1ha2Vf a3FpZChzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKmZyb20sCiAgICAgICAgZW51bSBxdW90YV90eXBl IHR5cGUsIHFpZF90IHFpZCkKewogc3RydWN0IGtxaWQga3FpZDsKCiBrcWlkLnR5cGUgPSB0eXBl Owogc3dpdGNoICh0eXBlKSB7CiBjYXNlIFVTUlFVT1RBOgogIGtxaWQudWlkID0gbWFrZV9rdWlk KGZyb20sIHFpZCk7CiAgYnJlYWs7CiBjYXNlIEdSUFFVT1RBOgogIGtxaWQuZ2lkID0gbWFrZV9r Z2lkKGZyb20sIHFpZCk7CiAgYnJlYWs7CiBjYXNlIFBSSlFVT1RBOgogIGtxaWQucHJvamlkID0g bWFrZV9rcHJvamlkKGZyb20sIHFpZCk7CiAgYnJlYWs7CiBkZWZhdWx0OgogIGRvIHsgZG8geyBh c20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVz aHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAy YiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJi IiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5Ojps aW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIr JWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvcXVvdGEuaCIpLCAi aSIgKDExNCksICJpIiAoMCksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hp bGUgKDApOyBkbyB7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRp c2NhcmQudW5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25c blx0IiA6IDogImkiICgyOCkpOyB9KTsgYXNtIHZvbGF0aWxlKCIiKTsgX19idWlsdGluX3VucmVh Y2hhYmxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIH0KIHJldHVybiBrcWlkOwp9CgoK CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzdHJ1Y3Qga3FpZCBtYWtlX2txaWRfaW52YWxpZChlbnVtIHF1b3RhX3R5cGUgdHlwZSkK ewogc3RydWN0IGtxaWQga3FpZDsKCiBrcWlkLnR5cGUgPSB0eXBlOwogc3dpdGNoICh0eXBlKSB7 CiBjYXNlIFVTUlFVT1RBOgogIGtxaWQudWlkID0gKGt1aWRfdCl7IC0xIH07CiAgYnJlYWs7CiBj YXNlIEdSUFFVT1RBOgogIGtxaWQuZ2lkID0gKGtnaWRfdCl7IC0xIH07CiAgYnJlYWs7CiBjYXNl IFBSSlFVT1RBOgogIGtxaWQucHJvamlkID0gKGtwcm9qaWRfdCl7IC0xIH07CiAgYnJlYWs7CiBk ZWZhdWx0OgogIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAw eDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0 IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIg Ii5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAl YzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6 OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1 ZGUvbGludXgvcXVvdGEuaCIpLCAiaSIgKDE0MSksICJpIiAoMCksICJpIiAoc2l6ZW9mKHN0cnVj dCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyBkbyB7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxu XHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQudW5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAt IC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgyOSkpOyB9KTsgYXNtIHZvbGF0aWxl KCIiKTsgX19idWlsdGluX3VucmVhY2hhYmxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsK IH0KIHJldHVybiBrcWlkOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtxaWQgbWFrZV9rcWlkX3VpZChrdWlkX3Qg dWlkKQp7CiBzdHJ1Y3Qga3FpZCBrcWlkOwoga3FpZC50eXBlID0gVVNSUVVPVEE7CiBrcWlkLnVp ZCA9IHVpZDsKIHJldHVybiBrcWlkOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtxaWQgbWFrZV9rcWlkX2dpZChr Z2lkX3QgZ2lkKQp7CiBzdHJ1Y3Qga3FpZCBrcWlkOwoga3FpZC50eXBlID0gR1JQUVVPVEE7CiBr cWlkLmdpZCA9IGdpZDsKIHJldHVybiBrcWlkOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtxaWQgbWFrZV9rcWlk X3Byb2ppZChrcHJvamlkX3QgcHJvamlkKQp7CiBzdHJ1Y3Qga3FpZCBrcWlkOwoga3FpZC50eXBl ID0gUFJKUVVPVEE7CiBrcWlkLnByb2ppZCA9IHByb2ppZDsKIHJldHVybiBrcWlkOwp9CgoKCgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgcWlkX2hhc19tYXBwaW5nKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqbnMsIHN0cnVjdCBr cWlkIHFpZCkKewogcmV0dXJuIGZyb21fa3FpZChucywgcWlkKSAhPSAocWlkX3QpIC0xOwp9CgoK ZXh0ZXJuIHNwaW5sb2NrX3QgZHFfZGF0YV9sb2NrOwojIDIwNSAiLi9pbmNsdWRlL2xpbnV4L3F1 b3RhLmgiCnN0cnVjdCBtZW1fZHFibGsgewogcXNpemVfdCBkcWJfYmhhcmRsaW1pdDsKIHFzaXpl X3QgZHFiX2Jzb2Z0bGltaXQ7CiBxc2l6ZV90IGRxYl9jdXJzcGFjZTsKIHFzaXplX3QgZHFiX3Jz dnNwYWNlOwogcXNpemVfdCBkcWJfaWhhcmRsaW1pdDsKIHFzaXplX3QgZHFiX2lzb2Z0bGltaXQ7 CiBxc2l6ZV90IGRxYl9jdXJpbm9kZXM7CiB0aW1lNjRfdCBkcWJfYnRpbWU7CiB0aW1lNjRfdCBk cWJfaXRpbWU7Cn07CgoKCgpzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5cGU7CgpzdHJ1Y3QgbWVtX2Rx aW5mbyB7CiBzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5cGUgKmRxaV9mb3JtYXQ7CiBpbnQgZHFpX2Zt dF9pZDsKCiBzdHJ1Y3QgbGlzdF9oZWFkIGRxaV9kaXJ0eV9saXN0OwogdW5zaWduZWQgbG9uZyBk cWlfZmxhZ3M7CiB1bnNpZ25lZCBpbnQgZHFpX2JncmFjZTsKIHVuc2lnbmVkIGludCBkcWlfaWdy YWNlOwogcXNpemVfdCBkcWlfbWF4X3NwY19saW1pdDsKIHFzaXplX3QgZHFpX21heF9pbm9fbGlt aXQ7CiB2b2lkICpkcWlfcHJpdjsKfTsKCnN0cnVjdCBzdXBlcl9ibG9jazsKCgoKCgoKZW51bSB7 CiBEUUZfSU5GT19ESVJUWV9CID0gRFFGX1BSSVZBVEUsCn07CgoKZXh0ZXJuIHZvaWQgbWFya19p bmZvX2RpcnR5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB0eXBlKTsKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGluZm9fZGly dHkoc3RydWN0IG1lbV9kcWluZm8gKmluZm8pCnsKIHJldHVybiB0ZXN0X2JpdChEUUZfSU5GT19E SVJUWV9CLCAmaW5mby0+ZHFpX2ZsYWdzKTsKfQoKZW51bSB7CiBEUVNUX0xPT0tVUFMsCiBEUVNU X0RST1BTLAogRFFTVF9SRUFEUywKIERRU1RfV1JJVEVTLAogRFFTVF9DQUNIRV9ISVRTLAogRFFT VF9BTExPQ19EUVVPVFMsCiBEUVNUX0ZSRUVfRFFVT1RTLAogRFFTVF9TWU5DUywKIF9EUVNUX0RR U1RBVF9MQVNUCn07CgpzdHJ1Y3QgZHFzdGF0cyB7CiB1bnNpZ25lZCBsb25nIHN0YXRbX0RRU1Rf RFFTVEFUX0xBU1RdOwogc3RydWN0IHBlcmNwdV9jb3VudGVyIGNvdW50ZXJbX0RRU1RfRFFTVEFU X0xBU1RdOwp9OwoKZXh0ZXJuIHN0cnVjdCBkcXN0YXRzIGRxc3RhdHM7CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRxc3RhdHNf aW5jKHVuc2lnbmVkIGludCB0eXBlKQp7CiBwZXJjcHVfY291bnRlcl9pbmMoJmRxc3RhdHMuY291 bnRlclt0eXBlXSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgZHFzdGF0c19kZWModW5zaWduZWQgaW50IHR5cGUpCnsKIHBl cmNwdV9jb3VudGVyX2RlYygmZHFzdGF0cy5jb3VudGVyW3R5cGVdKTsKfQojIDI5NCAiLi9pbmNs dWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBkcXVvdCB7CiBzdHJ1Y3QgaGxpc3Rfbm9kZSBkcV9o YXNoOwogc3RydWN0IGxpc3RfaGVhZCBkcV9pbnVzZTsKIHN0cnVjdCBsaXN0X2hlYWQgZHFfZnJl ZTsKIHN0cnVjdCBsaXN0X2hlYWQgZHFfZGlydHk7CiBzdHJ1Y3QgbXV0ZXggZHFfbG9jazsKIHNw aW5sb2NrX3QgZHFfZHFiX2xvY2s7CiBhdG9taWNfdCBkcV9jb3VudDsKIHN0cnVjdCBzdXBlcl9i bG9jayAqZHFfc2I7CiBzdHJ1Y3Qga3FpZCBkcV9pZDsKIGxvZmZfdCBkcV9vZmY7CiB1bnNpZ25l ZCBsb25nIGRxX2ZsYWdzOwogc3RydWN0IG1lbV9kcWJsayBkcV9kcWI7Cn07CgoKc3RydWN0IHF1 b3RhX2Zvcm1hdF9vcHMgewogaW50ICgqY2hlY2tfcXVvdGFfZmlsZSkoc3RydWN0IHN1cGVyX2Js b2NrICpzYiwgaW50IHR5cGUpOwogaW50ICgqcmVhZF9maWxlX2luZm8pKHN0cnVjdCBzdXBlcl9i bG9jayAqc2IsIGludCB0eXBlKTsKIGludCAoKndyaXRlX2ZpbGVfaW5mbykoc3RydWN0IHN1cGVy X2Jsb2NrICpzYiwgaW50IHR5cGUpOwogaW50ICgqZnJlZV9maWxlX2luZm8pKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIGludCB0eXBlKTsKIGludCAoKnJlYWRfZHFibGspKHN0cnVjdCBkcXVvdCAq ZHF1b3QpOwogaW50ICgqY29tbWl0X2RxYmxrKShzdHJ1Y3QgZHF1b3QgKmRxdW90KTsKIGludCAo KnJlbGVhc2VfZHFibGspKHN0cnVjdCBkcXVvdCAqZHF1b3QpOwogaW50ICgqZ2V0X25leHRfaWQp KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrcWlkICpxaWQpOwp9OwoKCnN0cnVjdCBk cXVvdF9vcGVyYXRpb25zIHsKIGludCAoKndyaXRlX2RxdW90KSAoc3RydWN0IGRxdW90ICopOwog c3RydWN0IGRxdW90ICooKmFsbG9jX2RxdW90KShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50KTsK IHZvaWQgKCpkZXN0cm95X2RxdW90KShzdHJ1Y3QgZHF1b3QgKik7CiBpbnQgKCphY3F1aXJlX2Rx dW90KSAoc3RydWN0IGRxdW90ICopOwogaW50ICgqcmVsZWFzZV9kcXVvdCkgKHN0cnVjdCBkcXVv dCAqKTsKIGludCAoKm1hcmtfZGlydHkpIChzdHJ1Y3QgZHF1b3QgKik7CiBpbnQgKCp3cml0ZV9p bmZvKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCk7CgoKIHFzaXplX3QgKigqZ2V0X3Jlc2Vy dmVkX3NwYWNlKSAoc3RydWN0IGlub2RlICopOwogaW50ICgqZ2V0X3Byb2ppZCkgKHN0cnVjdCBp bm9kZSAqLCBrcHJvamlkX3QgKik7CgogaW50ICgqZ2V0X2lub2RlX3VzYWdlKSAoc3RydWN0IGlu b2RlICosIHFzaXplX3QgKik7CgogaW50ICgqZ2V0X25leHRfaWQpIChzdHJ1Y3Qgc3VwZXJfYmxv Y2sgKnNiLCBzdHJ1Y3Qga3FpZCAqcWlkKTsKfTsKCnN0cnVjdCBwYXRoOwoKCnN0cnVjdCBxY19k cWJsayB7CiBpbnQgZF9maWVsZG1hc2s7CiB1NjQgZF9zcGNfaGFyZGxpbWl0OwogdTY0IGRfc3Bj X3NvZnRsaW1pdDsKIHU2NCBkX2lub19oYXJkbGltaXQ7CiB1NjQgZF9pbm9fc29mdGxpbWl0Owog dTY0IGRfc3BhY2U7CiB1NjQgZF9pbm9fY291bnQ7CiBzNjQgZF9pbm9fdGltZXI7CgogczY0IGRf c3BjX3RpbWVyOwogaW50IGRfaW5vX3dhcm5zOwogaW50IGRfc3BjX3dhcm5zOwogdTY0IGRfcnRf c3BjX2hhcmRsaW1pdDsKIHU2NCBkX3J0X3NwY19zb2Z0bGltaXQ7CiB1NjQgZF9ydF9zcGFjZTsK IHM2NCBkX3J0X3NwY190aW1lcjsKIGludCBkX3J0X3NwY193YXJuczsKfTsKIyAzOTUgIi4vaW5j bHVkZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgcWNfdHlwZV9zdGF0ZSB7CiB1bnNpZ25lZCBpbnQg ZmxhZ3M7CiB1bnNpZ25lZCBpbnQgc3BjX3RpbWVsaW1pdDsKCiB1bnNpZ25lZCBpbnQgaW5vX3Rp bWVsaW1pdDsKIHVuc2lnbmVkIGludCBydF9zcGNfdGltZWxpbWl0OwogdW5zaWduZWQgaW50IHNw Y193YXJubGltaXQ7CiB1bnNpZ25lZCBpbnQgaW5vX3dhcm5saW1pdDsKIHVuc2lnbmVkIGludCBy dF9zcGNfd2FybmxpbWl0OwogdW5zaWduZWQgbG9uZyBsb25nIGlubzsKIGJsa2NudF90IGJsb2Nr czsKIGJsa2NudF90IG5leHRlbnRzOwp9OwoKc3RydWN0IHFjX3N0YXRlIHsKIHVuc2lnbmVkIGlu dCBzX2luY29yZWRxczsKIHN0cnVjdCBxY190eXBlX3N0YXRlIHNfc3RhdGVbM107Cn07CgoKc3Ry dWN0IHFjX2luZm8gewogaW50IGlfZmllbGRtYXNrOwogdW5zaWduZWQgaW50IGlfZmxhZ3M7CiB1 bnNpZ25lZCBpbnQgaV9zcGNfdGltZWxpbWl0OwoKIHVuc2lnbmVkIGludCBpX2lub190aW1lbGlt aXQ7CiB1bnNpZ25lZCBpbnQgaV9ydF9zcGNfdGltZWxpbWl0OwogdW5zaWduZWQgaW50IGlfc3Bj X3dhcm5saW1pdDsKIHVuc2lnbmVkIGludCBpX2lub193YXJubGltaXQ7CiB1bnNpZ25lZCBpbnQg aV9ydF9zcGNfd2FybmxpbWl0Owp9OwoKCnN0cnVjdCBxdW90YWN0bF9vcHMgewogaW50ICgqcXVv dGFfb24pKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQsIGludCwgY29uc3Qgc3RydWN0IHBhdGgg Kik7CiBpbnQgKCpxdW90YV9vZmYpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQpOwogaW50ICgq cXVvdGFfZW5hYmxlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQgaW50KTsKIGludCAo KnF1b3RhX2Rpc2FibGUpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBpbnQpOwogaW50 ICgqcXVvdGFfc3luYykoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCk7CiBpbnQgKCpzZXRfaW5m bykoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCwgc3RydWN0IHFjX2luZm8gKik7CiBpbnQgKCpn ZXRfZHFibGspKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qga3FpZCwgc3RydWN0IHFjX2Rx YmxrICopOwogaW50ICgqZ2V0X25leHRkcWJsaykoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVj dCBrcWlkICosCiAgICAgICAgc3RydWN0IHFjX2RxYmxrICopOwogaW50ICgqc2V0X2RxYmxrKShz dHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGtxaWQsIHN0cnVjdCBxY19kcWJsayAqKTsKIGlu dCAoKmdldF9zdGF0ZSkoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBxY19zdGF0ZSAqKTsK IGludCAoKnJtX3hxdW90YSkoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkIGludCk7Cn07 CgpzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5cGUgewogaW50IHFmX2ZtdF9pZDsKIGNvbnN0IHN0cnVj dCBxdW90YV9mb3JtYXRfb3BzICpxZl9vcHM7CiBzdHJ1Y3QgbW9kdWxlICpxZl9vd25lcjsKIHN0 cnVjdCBxdW90YV9mb3JtYXRfdHlwZSAqcWZfbmV4dDsKfTsKIyA0NjMgIi4vaW5jbHVkZS9saW51 eC9xdW90YS5oIgplbnVtIHsKIF9EUVVPVF9VU0FHRV9FTkFCTEVEID0gMCwKIF9EUVVPVF9MSU1J VFNfRU5BQkxFRCwKIF9EUVVPVF9TVVNQRU5ERUQsCgoKIF9EUVVPVF9TVEFURV9GTEFHUwp9Owoj IDQ5MCAiLi9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBkcXVvdF9zdGF0ZV9m bGFnKHVuc2lnbmVkIGludCBmbGFncywgaW50IHR5cGUpCnsKIHJldHVybiBmbGFncyA8PCB0eXBl Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBpbnQgZHF1b3RfZ2VuZXJpY19mbGFnKHVuc2lnbmVkIGludCBmbGFncywg aW50IHR5cGUpCnsKIHJldHVybiAoZmxhZ3MgPj4gdHlwZSkgJiAoKDEgPDwgX0RRVU9UX1VTQUdF X0VOQUJMRUQgKiAzKSB8ICgxIDw8IF9EUVVPVF9MSU1JVFNfRU5BQkxFRCAqIDMpIHwgKDEgPDwg X0RRVU9UX1NVU1BFTkRFRCAqIDMpKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdW5zaWduZWQgZHF1b3Rfc3RhdGVfdHlwZXModW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVk IGZsYWcpCnsKIGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfNTAzKHZvaWQp IF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDogIiAiKGZsYWcp ID09IDAgfHwgKCgoZmxhZykgJiAoKGZsYWcpIC0gMSkpICE9IDApIikpKTsgaWYgKCEoISgoZmxh ZykgPT0gMCB8fCAoKChmbGFnKSAmICgoZmxhZykgLSAxKSkgIT0gMCkpKSkgX19jb21waWxldGlt ZV9hc3NlcnRfNTAzKCk7IH0gd2hpbGUgKDApOwogcmV0dXJuIChmbGFncyAvIGZsYWcpICYgKCgx IDw8IDMpIC0gMSk7Cn0KCgpleHRlcm4gdm9pZCBxdW90YV9zZW5kX3dhcm5pbmcoc3RydWN0IGtx aWQgcWlkLCBkZXZfdCBkZXYsCiAgICAgICAgICBjb25zdCBjaGFyIHdhcm50eXBlKTsKIyA1MTgg Ii4vaW5jbHVkZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgcXVvdGFfaW5mbyB7CiB1bnNpZ25lZCBp bnQgZmxhZ3M7CiBzdHJ1Y3Qgcndfc2VtYXBob3JlIGRxaW9fc2VtOwogc3RydWN0IGlub2RlICpm aWxlc1szXTsKIHN0cnVjdCBtZW1fZHFpbmZvIGluZm9bM107CiBjb25zdCBzdHJ1Y3QgcXVvdGFf Zm9ybWF0X29wcyAqb3BzWzNdOwp9OwoKaW50IHJlZ2lzdGVyX3F1b3RhX2Zvcm1hdChzdHJ1Y3Qg cXVvdGFfZm9ybWF0X3R5cGUgKmZtdCk7CnZvaWQgdW5yZWdpc3Rlcl9xdW90YV9mb3JtYXQoc3Ry dWN0IHF1b3RhX2Zvcm1hdF90eXBlICpmbXQpOwoKc3RydWN0IHF1b3RhX21vZHVsZV9uYW1lIHsK IGludCBxbV9mbXRfaWQ7CiBjaGFyICpxbV9tb2RfbmFtZTsKfTsKIyAyNDYgIi4vaW5jbHVkZS9s aW51eC9mcy5oIiAyCiMgMjc5ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKZW51bSBwb3NpdGl2ZV9h b3BfcmV0dXJucyB7CiBBT1BfV1JJVEVQQUdFX0FDVElWQVRFID0gMHg4MDAwMCwKIEFPUF9UUlVO Q0FURURfUEFHRSA9IDB4ODAwMDEsCn07CiMgMjkyICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3Ry dWN0IHBhZ2U7CnN0cnVjdCBhZGRyZXNzX3NwYWNlOwpzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2w7 CgoKCgoKZW51bSByd19oaW50IHsKIFdSSVRFX0xJRkVfTk9UX1NFVCA9IDAsCiBXUklURV9MSUZF X05PTkUgPSAxLAogV1JJVEVfTElGRV9TSE9SVCA9IDIsCiBXUklURV9MSUZFX01FRElVTSA9IDMs CiBXUklURV9MSUZFX0xPTkcgPSA0LAogV1JJVEVfTElGRV9FWFRSRU1FID0gNSwKfTsKIyAzMTgg Ii4vaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3Qga2lvY2Igewogc3RydWN0IGZpbGUgKmtpX2Zp bHA7CgoKCgogbG9mZl90IGtpX3BvczsKIHZvaWQgKCpraV9jb21wbGV0ZSkoc3RydWN0IGtpb2Ni ICppb2NiLCBsb25nIHJldCwgbG9uZyByZXQyKTsKIHZvaWQgKnByaXZhdGU7CiBpbnQga2lfZmxh Z3M7CiB1MTYga2lfaGludDsKIHUxNiBraV9pb3ByaW87CiB1bnNpZ25lZCBpbnQga2lfY29va2ll OwoKCn07CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIGlzX3N5bmNfa2lvY2Ioc3RydWN0IGtpb2NiICpraW9jYikKewogcmV0dXJu IGtpb2NiLT5raV9jb21wbGV0ZSA9PSAoKHZvaWQgKikwKTsKfQojIDM0OSAiLi9pbmNsdWRlL2xp bnV4L2ZzLmgiCnR5cGVkZWYgc3RydWN0IHsKIHNpemVfdCB3cml0dGVuOwogc2l6ZV90IGNvdW50 OwogdW5pb24gewogIGNoYXIgKmJ1ZjsKICB2b2lkICpkYXRhOwogfSBhcmc7CiBpbnQgZXJyb3I7 Cn0gcmVhZF9kZXNjcmlwdG9yX3Q7Cgp0eXBlZGVmIGludCAoKnJlYWRfYWN0b3JfdCkocmVhZF9k ZXNjcmlwdG9yX3QgKiwgc3RydWN0IHBhZ2UgKiwKICB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs b25nKTsKCnN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgewogaW50ICgqd3JpdGVwYWdl KShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpOwogaW50 ICgqcmVhZHBhZ2UpKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICopOwoKCiBpbnQgKCp3cml0 ZXBhZ2VzKShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wg Kik7CgoKIGludCAoKnNldF9wYWdlX2RpcnR5KShzdHJ1Y3QgcGFnZSAqcGFnZSk7CgoKCgoKIGlu dCAoKnJlYWRwYWdlcykoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICpt YXBwaW5nLAogICBzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlcywgdW5zaWduZWQgbnJfcGFnZXMpOwoK IGludCAoKndyaXRlX2JlZ2luKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAq bWFwcGluZywKICAgIGxvZmZfdCBwb3MsIHVuc2lnbmVkIGxlbiwgdW5zaWduZWQgZmxhZ3MsCiAg ICBzdHJ1Y3QgcGFnZSAqKnBhZ2VwLCB2b2lkICoqZnNkYXRhKTsKIGludCAoKndyaXRlX2VuZCko c3RydWN0IGZpbGUgKiwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAgICBsb2ZmX3Qg cG9zLCB1bnNpZ25lZCBsZW4sIHVuc2lnbmVkIGNvcGllZCwKICAgIHN0cnVjdCBwYWdlICpwYWdl LCB2b2lkICpmc2RhdGEpOwoKCiBzZWN0b3JfdCAoKmJtYXApKHN0cnVjdCBhZGRyZXNzX3NwYWNl ICosIHNlY3Rvcl90KTsKIHZvaWQgKCppbnZhbGlkYXRlcGFnZSkgKHN0cnVjdCBwYWdlICosIHVu c2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsKIGludCAoKnJlbGVhc2VwYWdlKSAoc3RydWN0IHBh Z2UgKiwgZ2ZwX3QpOwogdm9pZCAoKmZyZWVwYWdlKShzdHJ1Y3QgcGFnZSAqKTsKIHNzaXplX3Qg KCpkaXJlY3RfSU8pKHN0cnVjdCBraW9jYiAqLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpOwoKCgoK IGludCAoKm1pZ3JhdGVwYWdlKSAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwKICAgc3RydWN0IHBh Z2UgKiwgc3RydWN0IHBhZ2UgKiwgZW51bSBtaWdyYXRlX21vZGUpOwogYm9vbCAoKmlzb2xhdGVf cGFnZSkoc3RydWN0IHBhZ2UgKiwgaXNvbGF0ZV9tb2RlX3QpOwogdm9pZCAoKnB1dGJhY2tfcGFn ZSkoc3RydWN0IHBhZ2UgKik7CiBpbnQgKCpsYXVuZGVyX3BhZ2UpIChzdHJ1Y3QgcGFnZSAqKTsK IGludCAoKmlzX3BhcnRpYWxseV91cHRvZGF0ZSkgKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxv bmcsCiAgICAgdW5zaWduZWQgbG9uZyk7CiB2b2lkICgqaXNfZGlydHlfd3JpdGViYWNrKSAoc3Ry dWN0IHBhZ2UgKiwgYm9vbCAqLCBib29sICopOwogaW50ICgqZXJyb3JfcmVtb3ZlX3BhZ2UpKHN0 cnVjdCBhZGRyZXNzX3NwYWNlICosIHN0cnVjdCBwYWdlICopOwoKCiBpbnQgKCpzd2FwX2FjdGl2 YXRlKShzdHJ1Y3Qgc3dhcF9pbmZvX3N0cnVjdCAqc2lzLCBzdHJ1Y3QgZmlsZSAqZmlsZSwKICAg IHNlY3Rvcl90ICpzcGFuKTsKIHZvaWQgKCpzd2FwX2RlYWN0aXZhdGUpKHN0cnVjdCBmaWxlICpm aWxlKTsKfTsKCmV4dGVybiBjb25zdCBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIGVt cHR5X2FvcHM7CgoKCgoKaW50IHBhZ2VjYWNoZV93cml0ZV9iZWdpbihzdHJ1Y3QgZmlsZSAqLCBz dHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKICAgIGxvZmZfdCBwb3MsIHVuc2lnbmVkIGxl biwgdW5zaWduZWQgZmxhZ3MsCiAgICBzdHJ1Y3QgcGFnZSAqKnBhZ2VwLCB2b2lkICoqZnNkYXRh KTsKCmludCBwYWdlY2FjaGVfd3JpdGVfZW5kKHN0cnVjdCBmaWxlICosIHN0cnVjdCBhZGRyZXNz X3NwYWNlICptYXBwaW5nLAogICAgbG9mZl90IHBvcywgdW5zaWduZWQgbGVuLCB1bnNpZ25lZCBj b3BpZWQsCiAgICBzdHJ1Y3QgcGFnZSAqcGFnZSwgdm9pZCAqZnNkYXRhKTsKIyA0NDUgIi4vaW5j bHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgYWRkcmVzc19zcGFjZSB7CiBzdHJ1Y3QgaW5vZGUgKmhv c3Q7CiBzdHJ1Y3QgeGFycmF5IGlfcGFnZXM7CiBnZnBfdCBnZnBfbWFzazsKIGF0b21pY190IGlf bW1hcF93cml0YWJsZTsKCgoKCiBzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgaV9tbWFwOwogc3RydWN0 IHJ3X3NlbWFwaG9yZSBpX21tYXBfcndzZW07CiB1bnNpZ25lZCBsb25nIG5ycGFnZXM7CiB1bnNp Z25lZCBsb25nIG5yZXhjZXB0aW9uYWw7CiB1bnNpZ25lZCBsb25nIHdyaXRlYmFja19pbmRleDsK IGNvbnN0IHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgKmFfb3BzOwogdW5zaWduZWQg bG9uZyBmbGFnczsKIGVycnNlcV90IHdiX2VycjsKIHNwaW5sb2NrX3QgcHJpdmF0ZV9sb2NrOwog c3RydWN0IGxpc3RfaGVhZCBwcml2YXRlX2xpc3Q7CiB2b2lkICpwcml2YXRlX2RhdGE7Cn0gX19h dHRyaWJ1dGVfXygoYWxpZ25lZChzaXplb2YobG9uZykpKSkgX19hdHRyaWJ1dGVfXygoX19kZXNp Z25hdGVkX2luaXRfXykpOwoKCgoKCnN0cnVjdCByZXF1ZXN0X3F1ZXVlOwoKc3RydWN0IGJsb2Nr X2RldmljZSB7CiBkZXZfdCBiZF9kZXY7CiBpbnQgYmRfb3BlbmVyczsKIHN0cnVjdCBpbm9kZSAq IGJkX2lub2RlOwogc3RydWN0IHN1cGVyX2Jsb2NrICogYmRfc3VwZXI7CiBzdHJ1Y3QgbXV0ZXgg YmRfbXV0ZXg7CiB2b2lkICogYmRfY2xhaW1pbmc7CiB2b2lkICogYmRfaG9sZGVyOwogaW50IGJk X2hvbGRlcnM7CiBib29sIGJkX3dyaXRlX2hvbGRlcjsKCiBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2hv bGRlcl9kaXNrczsKCiBzdHJ1Y3QgYmxvY2tfZGV2aWNlICogYmRfY29udGFpbnM7CiB1bnNpZ25l ZCBiZF9ibG9ja19zaXplOwogdTggYmRfcGFydG5vOwogc3RydWN0IGhkX3N0cnVjdCAqIGJkX3Bh cnQ7CgogdW5zaWduZWQgYmRfcGFydF9jb3VudDsKIGludCBiZF9pbnZhbGlkYXRlZDsKIHN0cnVj dCBnZW5kaXNrICogYmRfZGlzazsKIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICogYmRfcXVldWU7CiBz dHJ1Y3QgYmFja2luZ19kZXZfaW5mbyAqYmRfYmRpOwogc3RydWN0IGxpc3RfaGVhZCBiZF9saXN0 OwoKCgoKCgogdW5zaWduZWQgbG9uZyBiZF9wcml2YXRlOwoKCiBpbnQgYmRfZnNmcmVlemVfY291 bnQ7Cgogc3RydWN0IG11dGV4IGJkX2ZzZnJlZXplX211dGV4Owp9IF9fYXR0cmlidXRlX18oKF9f ZGVzaWduYXRlZF9pbml0X18pKTsKIyA1MTkgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIG1h cHBpbmdfdGFnZ2VkKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCB4YV9tYXJrX3QgdGFn KQp7CiByZXR1cm4geGFfbWFya2VkKCZtYXBwaW5nLT5pX3BhZ2VzLCB0YWcpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlf bW1hcF9sb2NrX3dyaXRlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQp7CiBkb3duX3dy aXRlKCZtYXBwaW5nLT5pX21tYXBfcndzZW0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlfbW1hcF91bmxvY2tfd3JpdGUo c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCnsKIHVwX3dyaXRlKCZtYXBwaW5nLT5pX21t YXBfcndzZW0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGlfbW1hcF9sb2NrX3JlYWQoc3RydWN0IGFkZHJlc3Nfc3BhY2Ug Km1hcHBpbmcpCnsKIGRvd25fcmVhZCgmbWFwcGluZy0+aV9tbWFwX3J3c2VtKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBp X21tYXBfdW5sb2NrX3JlYWQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCnsKIHVwX3Jl YWQoJm1hcHBpbmctPmlfbW1hcF9yd3NlbSk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBtYXBwaW5nX21hcHBlZChzdHJ1 Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZykKewogcmV0dXJuICEoKHsgdW5pb24geyB0eXBlb2Yo KCZtYXBwaW5nLT5pX21tYXAucmJfcm9vdCktPnJiX25vZGUpIF9fdmFsOyBjaGFyIF9fY1sxXTsg fSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKCZtYXBwaW5nLT5pX21tYXAucmJfcm9v dCktPnJiX25vZGUpLCBfX3UuX19jLCBzaXplb2YoKCZtYXBwaW5nLT5pX21tYXAucmJfcm9vdCkt PnJiX25vZGUpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigoJm1hcHBpbmctPmlf bW1hcC5yYl9yb290KS0+cmJfbm9kZSksIF9fdS5fX2MsIHNpemVvZigoJm1hcHBpbmctPmlfbW1h cC5yYl9yb290KS0+cmJfbm9kZSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pID09 ICgodm9pZCAqKTApKTsKfQojIDU2MSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBtYXBwaW5n X3dyaXRhYmx5X21hcHBlZChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZykKewogcmV0dXJu IGF0b21pY19yZWFkKCZtYXBwaW5nLT5pX21tYXBfd3JpdGFibGUpID4gMDsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG1hcHBp bmdfbWFwX3dyaXRhYmxlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQp7CiByZXR1cm4g YXRvbWljX2luY191bmxlc3NfbmVnYXRpdmUoJm1hcHBpbmctPmlfbW1hcF93cml0YWJsZSkgPwog IDAgOiAtMTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBtYXBwaW5nX3VubWFwX3dyaXRhYmxlKHN0cnVjdCBhZGRyZXNzX3Nw YWNlICptYXBwaW5nKQp7CiBhdG9taWNfZGVjKCZtYXBwaW5nLT5pX21tYXBfd3JpdGFibGUpOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgbWFwcGluZ19kZW55X3dyaXRhYmxlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5n KQp7CiByZXR1cm4gYXRvbWljX2RlY191bmxlc3NfcG9zaXRpdmUoJm1hcHBpbmctPmlfbW1hcF93 cml0YWJsZSkgPwogIDAgOiAtMTY7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbWFwcGluZ19hbGxvd193cml0YWJsZShzdHJ1 Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZykKewogYXRvbWljX2luYygmbWFwcGluZy0+aV9tbWFw X3dyaXRhYmxlKTsKfQojIDU5OSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0cnVjdCBwb3NpeF9h Y2w7CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHN0cnVjdCBwb3NpeF9hY2wgKgp1bmNhY2hlZF9hY2xfc2VudGluZWwoc3RydWN0IHRh c2tfc3RydWN0ICp0YXNrKQp7CiByZXR1cm4gKHZvaWQgKil0YXNrICsgMTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAppc191 bmNhY2hlZF9hY2woc3RydWN0IHBvc2l4X2FjbCAqYWNsKQp7CiByZXR1cm4gKGxvbmcpYWNsICYg MTsKfQoKCgoKCgoKc3RydWN0IGZzbm90aWZ5X21hcmtfY29ubmVjdG9yOwoKCgoKCgpzdHJ1Y3Qg aW5vZGUgewogdW1vZGVfdCBpX21vZGU7CiB1bnNpZ25lZCBzaG9ydCBpX29wZmxhZ3M7CiBrdWlk X3QgaV91aWQ7CiBrZ2lkX3QgaV9naWQ7CiB1bnNpZ25lZCBpbnQgaV9mbGFnczsKCgogc3RydWN0 IHBvc2l4X2FjbCAqaV9hY2w7CiBzdHJ1Y3QgcG9zaXhfYWNsICppX2RlZmF1bHRfYWNsOwoKCiBj b25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyAqaV9vcDsKIHN0cnVjdCBzdXBlcl9ibG9jayAq aV9zYjsKIHN0cnVjdCBhZGRyZXNzX3NwYWNlICppX21hcHBpbmc7CgoKIHZvaWQgKmlfc2VjdXJp dHk7CgoKCiB1bnNpZ25lZCBsb25nIGlfaW5vOwoKCgoKCgoKIHVuaW9uIHsKICBjb25zdCB1bnNp Z25lZCBpbnQgaV9ubGluazsKICB1bnNpZ25lZCBpbnQgX19pX25saW5rOwogfTsKIGRldl90IGlf cmRldjsKIGxvZmZfdCBpX3NpemU7CiBzdHJ1Y3QgdGltZXNwZWM2NCBpX2F0aW1lOwogc3RydWN0 IHRpbWVzcGVjNjQgaV9tdGltZTsKIHN0cnVjdCB0aW1lc3BlYzY0IGlfY3RpbWU7CiBzcGlubG9j a190IGlfbG9jazsKIHVuc2lnbmVkIHNob3J0IGlfYnl0ZXM7CiB1OCBpX2Jsa2JpdHM7CiB1OCBp X3dyaXRlX2hpbnQ7CiBibGtjbnRfdCBpX2Jsb2NrczsKCgoKCgoKIHVuc2lnbmVkIGxvbmcgaV9z dGF0ZTsKIHN0cnVjdCByd19zZW1hcGhvcmUgaV9yd3NlbTsKCiB1bnNpZ25lZCBsb25nIGRpcnRp ZWRfd2hlbjsKIHVuc2lnbmVkIGxvbmcgZGlydGllZF90aW1lX3doZW47Cgogc3RydWN0IGhsaXN0 X25vZGUgaV9oYXNoOwogc3RydWN0IGxpc3RfaGVhZCBpX2lvX2xpc3Q7Cgogc3RydWN0IGJkaV93 cml0ZWJhY2sgKmlfd2I7CgoKIGludCBpX3diX2Zybl93aW5uZXI7CiB1MTYgaV93Yl9mcm5fYXZn X3RpbWU7CiB1MTYgaV93Yl9mcm5faGlzdG9yeTsKCiBzdHJ1Y3QgbGlzdF9oZWFkIGlfbHJ1Owog c3RydWN0IGxpc3RfaGVhZCBpX3NiX2xpc3Q7CiBzdHJ1Y3QgbGlzdF9oZWFkIGlfd2JfbGlzdDsK IHVuaW9uIHsKICBzdHJ1Y3QgaGxpc3RfaGVhZCBpX2RlbnRyeTsKICBzdHJ1Y3QgY2FsbGJhY2tf aGVhZCBpX3JjdTsKIH07CiBhdG9taWM2NF90IGlfdmVyc2lvbjsKIGF0b21pYzY0X3QgaV9zZXF1 ZW5jZTsKIGF0b21pY190IGlfY291bnQ7CiBhdG9taWNfdCBpX2Rpb19jb3VudDsKIGF0b21pY190 IGlfd3JpdGVjb3VudDsKCiBhdG9taWNfdCBpX3JlYWRjb3VudDsKCiB1bmlvbiB7CiAgY29uc3Qg c3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqaV9mb3A7CiAgdm9pZCAoKmZyZWVfaW5vZGUpKHN0cnVj dCBpbm9kZSAqKTsKIH07CiBzdHJ1Y3QgZmlsZV9sb2NrX2NvbnRleHQgKmlfZmxjdHg7CiBzdHJ1 Y3QgYWRkcmVzc19zcGFjZSBpX2RhdGE7CiBzdHJ1Y3QgbGlzdF9oZWFkIGlfZGV2aWNlczsKIHVu aW9uIHsKICBzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICppX3BpcGU7CiAgc3RydWN0IGJsb2NrX2Rl dmljZSAqaV9iZGV2OwogIHN0cnVjdCBjZGV2ICppX2NkZXY7CiAgY2hhciAqaV9saW5rOwogIHVu c2lnbmVkIGlfZGlyX3NlcTsKIH07CgogX191MzIgaV9nZW5lcmF0aW9uOwoKCiBfX3UzMiBpX2Zz bm90aWZ5X21hc2s7CiBzdHJ1Y3QgZnNub3RpZnlfbWFya19jb25uZWN0b3IgKmlfZnNub3RpZnlf bWFya3M7CiMgNzM4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKIHZvaWQgKmlfcHJpdmF0ZTsKfSBf X2F0dHJpYnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CgpzdHJ1Y3QgdGltZXNwZWM2NCB0 aW1lc3RhbXBfdHJ1bmNhdGUoc3RydWN0IHRpbWVzcGVjNjQgdCwgc3RydWN0IGlub2RlICppbm9k ZSk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBpbnQgaV9ibG9ja3NpemUoY29uc3Qgc3RydWN0IGlub2RlICpub2RlKQp7 CiByZXR1cm4gKDEgPDwgbm9kZS0+aV9ibGtiaXRzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlub2RlX3VuaGFzaGVkKHN0 cnVjdCBpbm9kZSAqaW5vZGUpCnsKIHJldHVybiBobGlzdF91bmhhc2hlZCgmaW5vZGUtPmlfaGFz aCk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgaW5vZGVfZmFrZV9oYXNoKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsK IGhsaXN0X2FkZF9mYWtlKCZpbm9kZS0+aV9oYXNoKTsKfQojIDc4MCAiLi9pbmNsdWRlL2xpbnV4 L2ZzLmgiCmVudW0gaW5vZGVfaV9tdXRleF9sb2NrX2NsYXNzCnsKIElfTVVURVhfTk9STUFMLAog SV9NVVRFWF9QQVJFTlQsCiBJX01VVEVYX0NISUxELAogSV9NVVRFWF9YQVRUUiwKIElfTVVURVhf Tk9ORElSMiwKIElfTVVURVhfUEFSRU5UMiwKfTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW5vZGVfbG9jayhzdHJ1Y3QgaW5v ZGUgKmlub2RlKQp7CiBkb3duX3dyaXRlKCZpbm9kZS0+aV9yd3NlbSk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW5vZGVf dW5sb2NrKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIHVwX3dyaXRlKCZpbm9kZS0+aV9yd3NlbSk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgaW5vZGVfbG9ja19zaGFyZWQoc3RydWN0IGlub2RlICppbm9kZSkKewogZG93bl9y ZWFkKCZpbm9kZS0+aV9yd3NlbSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW5vZGVfdW5sb2NrX3NoYXJlZChzdHJ1Y3Qg aW5vZGUgKmlub2RlKQp7CiB1cF9yZWFkKCZpbm9kZS0+aV9yd3NlbSk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBpbm9kZV90 cnlsb2NrKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIHJldHVybiBkb3duX3dyaXRlX3RyeWxvY2so Jmlub2RlLT5pX3J3c2VtKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlub2RlX3RyeWxvY2tfc2hhcmVkKHN0cnVjdCBpbm9k ZSAqaW5vZGUpCnsKIHJldHVybiBkb3duX3JlYWRfdHJ5bG9jaygmaW5vZGUtPmlfcndzZW0pOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgaW5vZGVfaXNfbG9ja2VkKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIHJldHVybiByd3Nl bV9pc19sb2NrZWQoJmlub2RlLT5pX3J3c2VtKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV9sb2NrX25lc3RlZChz dHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBzdWJjbGFzcykKewogZG93bl93cml0ZSgmaW5v ZGUtPmlfcndzZW0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlub2RlX2xvY2tfc2hhcmVkX25lc3RlZChzdHJ1Y3QgaW5v ZGUgKmlub2RlLCB1bnNpZ25lZCBzdWJjbGFzcykKewogZG93bl9yZWFkKCZpbm9kZS0+aV9yd3Nl bSk7Cn0KCnZvaWQgbG9ja190d29fbm9uZGlyZWN0b3JpZXMoc3RydWN0IGlub2RlICosIHN0cnVj dCBpbm9kZSopOwp2b2lkIHVubG9ja190d29fbm9uZGlyZWN0b3JpZXMoc3RydWN0IGlub2RlICos IHN0cnVjdCBpbm9kZSopOwojIDg0OCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvZmZfdCBpX3Np emVfcmVhZChjb25zdCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiMgODY3ICIuL2luY2x1ZGUvbGlu dXgvZnMuaCIKIHJldHVybiBpbm9kZS0+aV9zaXplOwoKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlfc2l6ZV93cml0 ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgaV9zaXplKQp7CiMgODg5ICIuL2luY2x1ZGUv bGludXgvZnMuaCIKIGlub2RlLT5pX3NpemUgPSBpX3NpemU7Cgp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbWlub3Io Y29uc3Qgc3RydWN0IGlub2RlICppbm9kZSkKewogcmV0dXJuICgodW5zaWduZWQgaW50KSAoKGlu b2RlLT5pX3JkZXYpICYgKCgxVSA8PCAyMCkgLSAxKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbWFqb3IoY29u c3Qgc3RydWN0IGlub2RlICppbm9kZSkKewogcmV0dXJuICgodW5zaWduZWQgaW50KSAoKGlub2Rl LT5pX3JkZXYpID4+IDIwKSk7Cn0KCmV4dGVybiBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpJX0JERVYo c3RydWN0IGlub2RlICppbm9kZSk7CgpzdHJ1Y3QgZm93bl9zdHJ1Y3Qgewogcndsb2NrX3QgbG9j azsKIHN0cnVjdCBwaWQgKnBpZDsKIGVudW0gcGlkX3R5cGUgcGlkX3R5cGU7CiBrdWlkX3QgdWlk LCBldWlkOwogaW50IHNpZ251bTsKfTsKCgoKCnN0cnVjdCBmaWxlX3JhX3N0YXRlIHsKIHVuc2ln bmVkIGxvbmcgc3RhcnQ7CiB1bnNpZ25lZCBpbnQgc2l6ZTsKIHVuc2lnbmVkIGludCBhc3luY19z aXplOwoKCiB1bnNpZ25lZCBpbnQgcmFfcGFnZXM7CiB1bnNpZ25lZCBpbnQgbW1hcF9taXNzOwog bG9mZl90IHByZXZfcG9zOwp9OwoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJhX2hhc19pbmRleChzdHJ1Y3QgZmlsZV9yYV9z dGF0ZSAqcmEsIHVuc2lnbmVkIGxvbmcgaW5kZXgpCnsKIHJldHVybiAoaW5kZXggPj0gcmEtPnN0 YXJ0ICYmCiAgaW5kZXggPCByYS0+c3RhcnQgKyByYS0+c2l6ZSk7Cn0KCnN0cnVjdCBmaWxlIHsK IHVuaW9uIHsKICBzdHJ1Y3QgbGxpc3Rfbm9kZSBmdV9sbGlzdDsKICBzdHJ1Y3QgY2FsbGJhY2tf aGVhZCBmdV9yY3VoZWFkOwogfSBmX3U7CiBzdHJ1Y3QgcGF0aCBmX3BhdGg7CiBzdHJ1Y3QgaW5v ZGUgKmZfaW5vZGU7CiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmX29wOwoKCgoKCiBz cGlubG9ja190IGZfbG9jazsKIGVudW0gcndfaGludCBmX3dyaXRlX2hpbnQ7CiBhdG9taWNfbG9u Z190IGZfY291bnQ7CiB1bnNpZ25lZCBpbnQgZl9mbGFnczsKIGZtb2RlX3QgZl9tb2RlOwogc3Ry dWN0IG11dGV4IGZfcG9zX2xvY2s7CiBsb2ZmX3QgZl9wb3M7CiBzdHJ1Y3QgZm93bl9zdHJ1Y3Qg Zl9vd25lcjsKIGNvbnN0IHN0cnVjdCBjcmVkICpmX2NyZWQ7CiBzdHJ1Y3QgZmlsZV9yYV9zdGF0 ZSBmX3JhOwoKIHU2NCBmX3ZlcnNpb247Cgogdm9pZCAqZl9zZWN1cml0eTsKCgogdm9pZCAqcHJp dmF0ZV9kYXRhOwoKCgogc3RydWN0IGxpc3RfaGVhZCBmX2VwX2xpbmtzOwogc3RydWN0IGxpc3Rf aGVhZCBmX3RmaWxlX2xsaW5rOwoKIHN0cnVjdCBhZGRyZXNzX3NwYWNlICpmX21hcHBpbmc7CiBl cnJzZXFfdCBmX3diX2VycjsKfSBfX2F0dHJpYnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSkK ICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDQpKSk7CgpzdHJ1Y3QgZmlsZV9oYW5kbGUgewogX191 MzIgaGFuZGxlX2J5dGVzOwogaW50IGhhbmRsZV90eXBlOwoKIHVuc2lnbmVkIGNoYXIgZl9oYW5k bGVbMF07Cn07CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzdHJ1Y3QgZmlsZSAqZ2V0X2ZpbGUoc3RydWN0IGZpbGUgKmYpCnsKIGF0b21p Y19sb25nX2luYygmZi0+Zl9jb3VudCk7CiByZXR1cm4gZjsKfQojIDEwMjYgIi4vaW5jbHVkZS9s aW51eC9mcy5oIgp0eXBlZGVmIHZvaWQgKmZsX293bmVyX3Q7CgpzdHJ1Y3QgZmlsZV9sb2NrOwoK c3RydWN0IGZpbGVfbG9ja19vcGVyYXRpb25zIHsKIHZvaWQgKCpmbF9jb3B5X2xvY2spKHN0cnVj dCBmaWxlX2xvY2sgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKIHZvaWQgKCpmbF9yZWxlYXNlX3By aXZhdGUpKHN0cnVjdCBmaWxlX2xvY2sgKik7Cn07CgpzdHJ1Y3QgbG9ja19tYW5hZ2VyX29wZXJh dGlvbnMgewogZmxfb3duZXJfdCAoKmxtX2dldF9vd25lcikoZmxfb3duZXJfdCk7CiB2b2lkICgq bG1fcHV0X293bmVyKShmbF9vd25lcl90KTsKIHZvaWQgKCpsbV9ub3RpZnkpKHN0cnVjdCBmaWxl X2xvY2sgKik7CiBpbnQgKCpsbV9ncmFudCkoc3RydWN0IGZpbGVfbG9jayAqLCBpbnQpOwogYm9v bCAoKmxtX2JyZWFrKShzdHJ1Y3QgZmlsZV9sb2NrICopOwogaW50ICgqbG1fY2hhbmdlKShzdHJ1 Y3QgZmlsZV9sb2NrICosIGludCwgc3RydWN0IGxpc3RfaGVhZCAqKTsKIHZvaWQgKCpsbV9zZXR1 cCkoc3RydWN0IGZpbGVfbG9jayAqLCB2b2lkICoqKTsKfTsKCnN0cnVjdCBsb2NrX21hbmFnZXIg ewogc3RydWN0IGxpc3RfaGVhZCBsaXN0OwoKCgoKIGJvb2wgYmxvY2tfb3BlbnM7Cn07CgpzdHJ1 Y3QgbmV0Owp2b2lkIGxvY2tzX3N0YXJ0X2dyYWNlKHN0cnVjdCBuZXQgKiwgc3RydWN0IGxvY2tf bWFuYWdlciAqKTsKdm9pZCBsb2Nrc19lbmRfZ3JhY2Uoc3RydWN0IGxvY2tfbWFuYWdlciAqKTsK Ym9vbCBsb2Nrc19pbl9ncmFjZShzdHJ1Y3QgbmV0ICopOwpib29sIG9wZW5zX2luX2dyYWNlKHN0 cnVjdCBuZXQgKik7CgoKIyAxICIuL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMQoKCgoKc3Ry dWN0IG5sbV9sb2Nrb3duZXI7CgoKCgpzdHJ1Y3QgbmZzX2xvY2tfaW5mbyB7CiB1MzIgc3RhdGU7 CiBzdHJ1Y3QgbmxtX2xvY2tvd25lciAqb3duZXI7CiBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cn07 CgpzdHJ1Y3QgbmZzNF9sb2NrX3N0YXRlOwpzdHJ1Y3QgbmZzNF9sb2NrX2luZm8gewogc3RydWN0 IG5mczRfbG9ja19zdGF0ZSAqb3duZXI7Cn07CiMgMTA2MiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgi IDIKIyAxMDgwICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0IGZpbGVfbG9jayB7CiBzdHJ1 Y3QgZmlsZV9sb2NrICpmbF9ibG9ja2VyOwogc3RydWN0IGxpc3RfaGVhZCBmbF9saXN0Owogc3Ry dWN0IGhsaXN0X25vZGUgZmxfbGluazsKIHN0cnVjdCBsaXN0X2hlYWQgZmxfYmxvY2tlZF9yZXF1 ZXN0czsKCgogc3RydWN0IGxpc3RfaGVhZCBmbF9ibG9ja2VkX21lbWJlcjsKCgogZmxfb3duZXJf dCBmbF9vd25lcjsKIHVuc2lnbmVkIGludCBmbF9mbGFnczsKIHVuc2lnbmVkIGNoYXIgZmxfdHlw ZTsKIHVuc2lnbmVkIGludCBmbF9waWQ7CiBpbnQgZmxfbGlua19jcHU7CiB3YWl0X3F1ZXVlX2hl YWRfdCBmbF93YWl0Owogc3RydWN0IGZpbGUgKmZsX2ZpbGU7CiBsb2ZmX3QgZmxfc3RhcnQ7CiBs b2ZmX3QgZmxfZW5kOwoKIHN0cnVjdCBmYXN5bmNfc3RydWN0ICogZmxfZmFzeW5jOwoKIHVuc2ln bmVkIGxvbmcgZmxfYnJlYWtfdGltZTsKIHVuc2lnbmVkIGxvbmcgZmxfZG93bmdyYWRlX3RpbWU7 CgogY29uc3Qgc3RydWN0IGZpbGVfbG9ja19vcGVyYXRpb25zICpmbF9vcHM7CiBjb25zdCBzdHJ1 Y3QgbG9ja19tYW5hZ2VyX29wZXJhdGlvbnMgKmZsX2xtb3BzOwogdW5pb24gewogIHN0cnVjdCBu ZnNfbG9ja19pbmZvIG5mc19mbDsKICBzdHJ1Y3QgbmZzNF9sb2NrX2luZm8gbmZzNF9mbDsKICBz dHJ1Y3QgewogICBzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7CiAgIGludCBzdGF0ZTsKICAgdW5zaWdu ZWQgaW50IGRlYnVnX2lkOwogIH0gYWZzOwogfSBmbF91Owp9IF9fYXR0cmlidXRlX18oKF9fZGVz aWduYXRlZF9pbml0X18pKTsKCnN0cnVjdCBmaWxlX2xvY2tfY29udGV4dCB7CiBzcGlubG9ja190 IGZsY19sb2NrOwogc3RydWN0IGxpc3RfaGVhZCBmbGNfZmxvY2s7CiBzdHJ1Y3QgbGlzdF9oZWFk IGZsY19wb3NpeDsKIHN0cnVjdCBsaXN0X2hlYWQgZmxjX2xlYXNlOwp9OwojIDExMzIgIi4vaW5j bHVkZS9saW51eC9mcy5oIgpleHRlcm4gdm9pZCBzZW5kX3NpZ2lvKHN0cnVjdCBmb3duX3N0cnVj dCAqZm93biwgaW50IGZkLCBpbnQgYmFuZCk7CgoKCgpleHRlcm4gaW50IGZjbnRsX2dldGxrKHN0 cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2NrICopOwpleHRlcm4gaW50IGZj bnRsX3NldGxrKHVuc2lnbmVkIGludCwgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LAogICBz dHJ1Y3QgZmxvY2sgKik7CgoKCgoKCgpleHRlcm4gaW50IGZjbnRsX3NldGxlYXNlKHVuc2lnbmVk IGludCBmZCwgc3RydWN0IGZpbGUgKmZpbHAsIGxvbmcgYXJnKTsKZXh0ZXJuIGludCBmY250bF9n ZXRsZWFzZShzdHJ1Y3QgZmlsZSAqZmlscCk7CgoKdm9pZCBsb2Nrc19mcmVlX2xvY2tfY29udGV4 dChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKdm9pZCBsb2Nrc19mcmVlX2xvY2soc3RydWN0IGZpbGVf bG9jayAqZmwpOwpleHRlcm4gdm9pZCBsb2Nrc19pbml0X2xvY2soc3RydWN0IGZpbGVfbG9jayAq KTsKZXh0ZXJuIHN0cnVjdCBmaWxlX2xvY2sgKiBsb2Nrc19hbGxvY19sb2NrKHZvaWQpOwpleHRl cm4gdm9pZCBsb2Nrc19jb3B5X2xvY2soc3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9s b2NrICopOwpleHRlcm4gdm9pZCBsb2Nrc19jb3B5X2NvbmZsb2NrKHN0cnVjdCBmaWxlX2xvY2sg Kiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgbG9ja3NfcmVtb3ZlX3Bvc2l4KHN0 cnVjdCBmaWxlICosIGZsX293bmVyX3QpOwpleHRlcm4gdm9pZCBsb2Nrc19yZW1vdmVfZmlsZShz dHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIHZvaWQgbG9ja3NfcmVsZWFzZV9wcml2YXRlKHN0cnVjdCBm aWxlX2xvY2sgKik7CmV4dGVybiB2b2lkIHBvc2l4X3Rlc3RfbG9jayhzdHJ1Y3QgZmlsZSAqLCBz dHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50IHBvc2l4X2xvY2tfZmlsZShzdHJ1Y3QgZmls ZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiBpbnQg bG9ja3NfZGVsZXRlX2Jsb2NrKHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiBpbnQgdmZzX3Rl c3RfbG9jayhzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50IHZm c19sb2NrX2ZpbGUoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LCBzdHJ1Y3QgZmlsZV9sb2Nr ICosIHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiBpbnQgdmZzX2NhbmNlbF9sb2NrKHN0cnVj dCBmaWxlICpmaWxwLCBzdHJ1Y3QgZmlsZV9sb2NrICpmbCk7CmV4dGVybiBpbnQgbG9ja3NfbG9j a19pbm9kZV93YWl0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlX2xvY2sgKmZsKTsK ZXh0ZXJuIGludCBfX2JyZWFrX2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGlu dCBmbGFncywgdW5zaWduZWQgaW50IHR5cGUpOwpleHRlcm4gdm9pZCBsZWFzZV9nZXRfbXRpbWUo c3RydWN0IGlub2RlICosIHN0cnVjdCB0aW1lc3BlYzY0ICp0aW1lKTsKZXh0ZXJuIGludCBnZW5l cmljX3NldGxlYXNlKHN0cnVjdCBmaWxlICosIGxvbmcsIHN0cnVjdCBmaWxlX2xvY2sgKiosIHZv aWQgKipwcml2KTsKZXh0ZXJuIGludCB2ZnNfc2V0bGVhc2Uoc3RydWN0IGZpbGUgKiwgbG9uZywg c3RydWN0IGZpbGVfbG9jayAqKiwgdm9pZCAqKik7CmV4dGVybiBpbnQgbGVhc2VfbW9kaWZ5KHN0 cnVjdCBmaWxlX2xvY2sgKiwgaW50LCBzdHJ1Y3QgbGlzdF9oZWFkICopOwoKc3RydWN0IG5vdGlm aWVyX2Jsb2NrOwpleHRlcm4gaW50IGxlYXNlX3JlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3Rp Zmllcl9ibG9jayAqKTsKZXh0ZXJuIHZvaWQgbGVhc2VfdW5yZWdpc3Rlcl9ub3RpZmllcihzdHJ1 Y3Qgbm90aWZpZXJfYmxvY2sgKik7CgpzdHJ1Y3QgZmlsZXNfc3RydWN0OwpleHRlcm4gdm9pZCBz aG93X2ZkX2xvY2tzKHN0cnVjdCBzZXFfZmlsZSAqZiwKICAgIHN0cnVjdCBmaWxlICpmaWxwLCBz dHJ1Y3QgZmlsZXNfc3RydWN0ICpmaWxlcyk7CiMgMTMxNyAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHN0cnVjdCBpbm9kZSAqZmlsZV9pbm9kZShjb25zdCBzdHJ1Y3QgZmlsZSAqZikKewogcmV0dXJu IGYtPmZfaW5vZGU7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZW50cnkgKmZpbGVfZGVudHJ5KGNvbnN0IHN0cnVjdCBm aWxlICpmaWxlKQp7CiByZXR1cm4gZF9yZWFsKGZpbGUtPmZfcGF0aC5kZW50cnksIGZpbGVfaW5v ZGUoZmlsZSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgbG9ja3NfbG9ja19maWxlX3dhaXQoc3RydWN0IGZpbGUgKmZpbHAs IHN0cnVjdCBmaWxlX2xvY2sgKmZsKQp7CiByZXR1cm4gbG9ja3NfbG9ja19pbm9kZV93YWl0KGZp bGVfaW5vZGUoZmlscCksIGZsKTsKfQoKc3RydWN0IGZhc3luY19zdHJ1Y3Qgewogcndsb2NrX3Qg ZmFfbG9jazsKIGludCBtYWdpYzsKIGludCBmYV9mZDsKIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpm YV9uZXh0Owogc3RydWN0IGZpbGUgKmZhX2ZpbGU7CiBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCBmYV9y Y3U7Cn07CgoKCgpleHRlcm4gaW50IGZhc3luY19oZWxwZXIoaW50LCBzdHJ1Y3QgZmlsZSAqLCBp bnQsIHN0cnVjdCBmYXN5bmNfc3RydWN0ICoqKTsKZXh0ZXJuIHN0cnVjdCBmYXN5bmNfc3RydWN0 ICpmYXN5bmNfaW5zZXJ0X2VudHJ5KGludCwgc3RydWN0IGZpbGUgKiwgc3RydWN0IGZhc3luY19z dHJ1Y3QgKiosIHN0cnVjdCBmYXN5bmNfc3RydWN0ICopOwpleHRlcm4gaW50IGZhc3luY19yZW1v dmVfZW50cnkoc3RydWN0IGZpbGUgKiwgc3RydWN0IGZhc3luY19zdHJ1Y3QgKiopOwpleHRlcm4g c3RydWN0IGZhc3luY19zdHJ1Y3QgKmZhc3luY19hbGxvYyh2b2lkKTsKZXh0ZXJuIHZvaWQgZmFz eW5jX2ZyZWUoc3RydWN0IGZhc3luY19zdHJ1Y3QgKik7CgoKZXh0ZXJuIHZvaWQga2lsbF9mYXN5 bmMoc3RydWN0IGZhc3luY19zdHJ1Y3QgKiosIGludCwgaW50KTsKCmV4dGVybiB2b2lkIF9fZl9z ZXRvd24oc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBwaWQgKiwgZW51bSBwaWRfdHlwZSwgaW50 IGZvcmNlKTsKZXh0ZXJuIGludCBmX3NldG93bihzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQg bG9uZyBhcmcsIGludCBmb3JjZSk7CmV4dGVybiB2b2lkIGZfZGVsb3duKHN0cnVjdCBmaWxlICpm aWxwKTsKZXh0ZXJuIHBpZF90IGZfZ2V0b3duKHN0cnVjdCBmaWxlICpmaWxwKTsKZXh0ZXJuIGlu dCBzZW5kX3NpZ3VyZyhzdHJ1Y3QgZm93bl9zdHJ1Y3QgKmZvd24pOwojIDE0MDggIi4vaW5jbHVk ZS9saW51eC9mcy5oIgplbnVtIHsKIFNCX1VORlJPWkVOID0gMCwKIFNCX0ZSRUVaRV9XUklURSA9 IDEsCiBTQl9GUkVFWkVfUEFHRUZBVUxUID0gMiwKIFNCX0ZSRUVaRV9GUyA9IDMsCgogU0JfRlJF RVpFX0NPTVBMRVRFID0gNCwKfTsKCgoKc3RydWN0IHNiX3dyaXRlcnMgewogaW50IGZyb3plbjsK IHdhaXRfcXVldWVfaGVhZF90IHdhaXRfdW5mcm96ZW47CiBzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFw aG9yZSByd19zZW1bKFNCX0ZSRUVaRV9DT01QTEVURSAtIDEpXTsKfTsKCnN0cnVjdCBzdXBlcl9i bG9jayB7CiBzdHJ1Y3QgbGlzdF9oZWFkIHNfbGlzdDsKIGRldl90IHNfZGV2OwogdW5zaWduZWQg Y2hhciBzX2Jsb2Nrc2l6ZV9iaXRzOwogdW5zaWduZWQgbG9uZyBzX2Jsb2Nrc2l6ZTsKIGxvZmZf dCBzX21heGJ5dGVzOwogc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKnNfdHlwZTsKIGNvbnN0IHN0 cnVjdCBzdXBlcl9vcGVyYXRpb25zICpzX29wOwogY29uc3Qgc3RydWN0IGRxdW90X29wZXJhdGlv bnMgKmRxX29wOwogY29uc3Qgc3RydWN0IHF1b3RhY3RsX29wcyAqc19xY29wOwogY29uc3Qgc3Ry dWN0IGV4cG9ydF9vcGVyYXRpb25zICpzX2V4cG9ydF9vcDsKIHVuc2lnbmVkIGxvbmcgc19mbGFn czsKIHVuc2lnbmVkIGxvbmcgc19pZmxhZ3M7CiB1bnNpZ25lZCBsb25nIHNfbWFnaWM7CiBzdHJ1 Y3QgZGVudHJ5ICpzX3Jvb3Q7CiBzdHJ1Y3Qgcndfc2VtYXBob3JlIHNfdW1vdW50OwogaW50IHNf Y291bnQ7CiBhdG9taWNfdCBzX2FjdGl2ZTsKCiB2b2lkICpzX3NlY3VyaXR5OwoKIGNvbnN0IHN0 cnVjdCB4YXR0cl9oYW5kbGVyICoqc194YXR0cjsKCgoKCgoKCiBzdHJ1Y3QgaGxpc3RfYmxfaGVh ZCBzX3Jvb3RzOwogc3RydWN0IGxpc3RfaGVhZCBzX21vdW50czsKIHN0cnVjdCBibG9ja19kZXZp Y2UgKnNfYmRldjsKIHN0cnVjdCBiYWNraW5nX2Rldl9pbmZvICpzX2JkaTsKIHN0cnVjdCBtdGRf aW5mbyAqc19tdGQ7CiBzdHJ1Y3QgaGxpc3Rfbm9kZSBzX2luc3RhbmNlczsKIHVuc2lnbmVkIGlu dCBzX3F1b3RhX3R5cGVzOwogc3RydWN0IHF1b3RhX2luZm8gc19kcXVvdDsKCiBzdHJ1Y3Qgc2Jf d3JpdGVycyBzX3dyaXRlcnM7CgoKCgoKCiB2b2lkICpzX2ZzX2luZm87CgoKIHUzMiBzX3RpbWVf Z3JhbjsKCiB0aW1lNjRfdCBzX3RpbWVfbWluOwogdGltZTY0X3Qgc190aW1lX21heDsKCiBfX3Uz MiBzX2Zzbm90aWZ5X21hc2s7CiBzdHJ1Y3QgZnNub3RpZnlfbWFya19jb25uZWN0b3IgKnNfZnNu b3RpZnlfbWFya3M7CgoKIGNoYXIgc19pZFszMl07CiB1dWlkX3Qgc191dWlkOwoKIHVuc2lnbmVk IGludCBzX21heF9saW5rczsKIGZtb2RlX3Qgc19tb2RlOwoKCgoKCiBzdHJ1Y3QgbXV0ZXggc192 ZnNfcmVuYW1lX211dGV4OwoKCgoKCiBjb25zdCBjaGFyICpzX3N1YnR5cGU7CgogY29uc3Qgc3Ry dWN0IGRlbnRyeV9vcGVyYXRpb25zICpzX2Rfb3A7CgoKCgogaW50IGNsZWFuY2FjaGVfcG9vbGlk OwoKIHN0cnVjdCBzaHJpbmtlciBzX3NocmluazsKCgogYXRvbWljX2xvbmdfdCBzX3JlbW92ZV9j b3VudDsKCgogYXRvbWljX2xvbmdfdCBzX2Zzbm90aWZ5X2lub2RlX3JlZnM7CgoKIGludCBzX3Jl YWRvbmx5X3JlbW91bnQ7CgoKIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzX2Rpb19kb25lX3dx Owogc3RydWN0IGhsaXN0X2hlYWQgc19waW5zOwoKCgoKCgogc3RydWN0IHVzZXJfbmFtZXNwYWNl ICpzX3VzZXJfbnM7CgoKCgoKCiBzdHJ1Y3QgbGlzdF9scnUgc19kZW50cnlfbHJ1Owogc3RydWN0 IGxpc3RfbHJ1IHNfaW5vZGVfbHJ1Owogc3RydWN0IGNhbGxiYWNrX2hlYWQgcmN1Owogc3RydWN0 IHdvcmtfc3RydWN0IGRlc3Ryb3lfd29yazsKCiBzdHJ1Y3QgbXV0ZXggc19zeW5jX2xvY2s7CgoK CgogaW50IHNfc3RhY2tfZGVwdGg7CgoKIHNwaW5sb2NrX3Qgc19pbm9kZV9saXN0X2xvY2sgX19h dHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKDYpKSkpKTsKIHN0cnVjdCBsaXN0X2hlYWQg c19pbm9kZXM7Cgogc3BpbmxvY2tfdCBzX2lub2RlX3dibGlzdF9sb2NrOwogc3RydWN0IGxpc3Rf aGVhZCBzX2lub2Rlc193YjsKfSBfX2F0dHJpYnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7 CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVpZF90IGlfdWlkX3JlYWQoY29uc3Qgc3RydWN0IGlub2RlICppbm9kZSkKewogcmV0 dXJuIGZyb21fa3VpZChpbm9kZS0+aV9zYi0+c191c2VyX25zLCBpbm9kZS0+aV91aWQpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBn aWRfdCBpX2dpZF9yZWFkKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIHJldHVybiBmcm9t X2tnaWQoaW5vZGUtPmlfc2ItPnNfdXNlcl9ucywgaW5vZGUtPmlfZ2lkKTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpX3Vp ZF93cml0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1aWRfdCB1aWQpCnsKIGlub2RlLT5pX3VpZCA9 IG1ha2Vfa3VpZChpbm9kZS0+aV9zYi0+c191c2VyX25zLCB1aWQpOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlfZ2lkX3dy aXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGdpZF90IGdpZCkKewogaW5vZGUtPmlfZ2lkID0gbWFr ZV9rZ2lkKGlub2RlLT5pX3NiLT5zX3VzZXJfbnMsIGdpZCk7Cn0KCmV4dGVybiBzdHJ1Y3QgdGlt ZXNwZWM2NCBjdXJyZW50X3RpbWUoc3RydWN0IGlub2RlICppbm9kZSk7CgoKCgoKdm9pZCBfX3Ni X2VuZF93cml0ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgbGV2ZWwpOwppbnQgX19zYl9z dGFydF93cml0ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgbGV2ZWwsIGJvb2wgd2FpdCk7 CiMgMTYwMCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2JfZW5kX3dyaXRlKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IpCnsKIF9fc2JfZW5kX3dyaXRlKHNiLCBTQl9GUkVFWkVfV1JJVEUpOwp9 CiMgMTYxMiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2JfZW5kX3BhZ2VmYXVsdChzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiKQp7CiBfX3NiX2VuZF93cml0ZShzYiwgU0JfRlJFRVpFX1BBR0VG QVVMVCk7Cn0KIyAxNjI0ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzYl9lbmRfaW50d3Jp dGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKewogX19zYl9lbmRfd3JpdGUoc2IsIFNCX0ZSRUVa RV9GUyk7Cn0KIyAxNjQ4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzYl9zdGFydF93cml0 ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQp7CiBfX3NiX3N0YXJ0X3dyaXRlKHNiLCBTQl9GUkVF WkVfV1JJVEUsIHRydWUpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc2Jfc3RhcnRfd3JpdGVfdHJ5bG9jayhzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKnNiKQp7CiByZXR1cm4gX19zYl9zdGFydF93cml0ZShzYiwgU0JfRlJFRVpFX1dS SVRFLCBmYWxzZSk7Cn0KIyAxNjc3ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzYl9zdGFy dF9wYWdlZmF1bHQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKewogX19zYl9zdGFydF93cml0ZShz YiwgU0JfRlJFRVpFX1BBR0VGQVVMVCwgdHJ1ZSk7Cn0KIyAxNjk1ICIuL2luY2x1ZGUvbGludXgv ZnMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBzYl9zdGFydF9pbnR3cml0ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQp7CiBf X3NiX3N0YXJ0X3dyaXRlKHNiLCBTQl9GUkVFWkVfRlMsIHRydWUpOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc2Jfc3RhcnRf aW50d3JpdGVfdHJ5bG9jayhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQp7CiByZXR1cm4gX19zYl9z dGFydF93cml0ZShzYiwgU0JfRlJFRVpFX0ZTLCBmYWxzZSk7Cn0KCgpleHRlcm4gYm9vbCBpbm9k ZV9vd25lcl9vcl9jYXBhYmxlKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoKCgoKZXh0ZXJu IGludCB2ZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHVtb2RlX3Qs IGJvb2wpOwpleHRlcm4gaW50IHZmc19ta2RpcihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRy eSAqLCB1bW9kZV90KTsKZXh0ZXJuIGludCB2ZnNfbWtub2Qoc3RydWN0IGlub2RlICosIHN0cnVj dCBkZW50cnkgKiwgdW1vZGVfdCwgZGV2X3QpOwpleHRlcm4gaW50IHZmc19zeW1saW5rKHN0cnVj dCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZz X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBz dHJ1Y3QgaW5vZGUgKiopOwpleHRlcm4gaW50IHZmc19ybWRpcihzdHJ1Y3QgaW5vZGUgKiwgc3Ry dWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCB2ZnNfdW5saW5rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1 Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKik7CmV4dGVybiBpbnQgdmZzX3JlbmFtZShzdHJ1 Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRy eSAqLCBzdHJ1Y3QgaW5vZGUgKiosIHVuc2lnbmVkIGludCk7CmV4dGVybiBpbnQgdmZzX3doaXRl b3V0KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoKZXh0ZXJuIHN0cnVjdCBkZW50 cnkgKnZmc190bXBmaWxlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlLAogICAg ICBpbnQgb3Blbl9mbGFnKTsKCmludCB2ZnNfbWtvYmooc3RydWN0IGRlbnRyeSAqLCB1bW9kZV90 LAogIGludCAoKmYpKHN0cnVjdCBkZW50cnkgKiwgdW1vZGVfdCwgdm9pZCAqKSwKICB2b2lkICop OwoKZXh0ZXJuIGxvbmcgdmZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQg Y21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiMgMTc0MCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4 dGVybiB2b2lkIGlub2RlX2luaXRfb3duZXIoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgc3Ry dWN0IGlub2RlICpkaXIsCiAgIHVtb2RlX3QgbW9kZSk7CmV4dGVybiBib29sIG1heV9vcGVuX2Rl dihjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCk7CgoKCnN0cnVjdCBmaWVtYXBfZXh0ZW50X2luZm8g ewogdW5zaWduZWQgaW50IGZpX2ZsYWdzOwogdW5zaWduZWQgaW50IGZpX2V4dGVudHNfbWFwcGVk OwogdW5zaWduZWQgaW50IGZpX2V4dGVudHNfbWF4Owogc3RydWN0IGZpZW1hcF9leHRlbnQgKmZp X2V4dGVudHNfc3RhcnQ7Cgp9OwppbnQgZmllbWFwX2ZpbGxfbmV4dF9leHRlbnQoc3RydWN0IGZp ZW1hcF9leHRlbnRfaW5mbyAqaW5mbywgdTY0IGxvZ2ljYWwsCiAgICAgICB1NjQgcGh5cywgdTY0 IGxlbiwgdTMyIGZsYWdzKTsKaW50IGZpZW1hcF9jaGVja19mbGFncyhzdHJ1Y3QgZmllbWFwX2V4 dGVudF9pbmZvICpmaWVpbmZvLCB1MzIgZnNfZmxhZ3MpOwoKCgoKCgoKc3RydWN0IGRpcl9jb250 ZXh0Owp0eXBlZGVmIGludCAoKmZpbGxkaXJfdCkoc3RydWN0IGRpcl9jb250ZXh0ICosIGNvbnN0 IGNoYXIgKiwgaW50LCBsb2ZmX3QsIHU2NCwKICAgIHVuc2lnbmVkKTsKCnN0cnVjdCBkaXJfY29u dGV4dCB7CiBmaWxsZGlyX3QgYWN0b3I7CiBsb2ZmX3QgcG9zOwp9OwoKc3RydWN0IGJsb2NrX2Rl dmljZV9vcGVyYXRpb25zOwojIDE4MTkgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgaW92 X2l0ZXI7CgpzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHsKIHN0cnVjdCBtb2R1bGUgKm93bmVyOwog bG9mZl90ICgqbGxzZWVrKSAoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQpOwogc3NpemVfdCAo KnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogc3NpemVf dCAoKndyaXRlKSAoc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAq KTsKIHNzaXplX3QgKCpyZWFkX2l0ZXIpIChzdHJ1Y3Qga2lvY2IgKiwgc3RydWN0IGlvdl9pdGVy ICopOwogc3NpemVfdCAoKndyaXRlX2l0ZXIpIChzdHJ1Y3Qga2lvY2IgKiwgc3RydWN0IGlvdl9p dGVyICopOwogaW50ICgqaW9wb2xsKShzdHJ1Y3Qga2lvY2IgKmtpb2NiLCBib29sIHNwaW4pOwog aW50ICgqaXRlcmF0ZSkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkaXJfY29udGV4dCAqKTsKIGlu dCAoKml0ZXJhdGVfc2hhcmVkKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRpcl9jb250ZXh0ICop OwogX19wb2xsX3QgKCpwb2xsKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBvbGxfdGFibGVfc3Ry dWN0ICopOwogbG9uZyAoKnVubG9ja2VkX2lvY3RsKSAoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQg aW50LCB1bnNpZ25lZCBsb25nKTsKIGxvbmcgKCpjb21wYXRfaW9jdGwpIChzdHJ1Y3QgZmlsZSAq LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGxvbmcpOwogaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxl ICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKIHVuc2lnbmVkIGxvbmcgbW1hcF9zdXBwb3J0 ZWRfZmxhZ3M7CiBpbnQgKCpvcGVuKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwog aW50ICgqZmx1c2gpIChzdHJ1Y3QgZmlsZSAqLCBmbF9vd25lcl90IGlkKTsKIGludCAoKnJlbGVh c2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CiBpbnQgKCpmc3luYykgKHN0cnVj dCBmaWxlICosIGxvZmZfdCwgbG9mZl90LCBpbnQgZGF0YXN5bmMpOwogaW50ICgqZmFzeW5jKSAo aW50LCBzdHJ1Y3QgZmlsZSAqLCBpbnQpOwogaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICosIGlu dCwgc3RydWN0IGZpbGVfbG9jayAqKTsKIHNzaXplX3QgKCpzZW5kcGFnZSkgKHN0cnVjdCBmaWxl ICosIHN0cnVjdCBwYWdlICosIGludCwgc2l6ZV90LCBsb2ZmX3QgKiwgaW50KTsKIHVuc2lnbmVk IGxvbmcgKCpnZXRfdW5tYXBwZWRfYXJlYSkoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywg dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CiBpbnQgKCpjaGVj a19mbGFncykoaW50KTsKIGludCAoKmZsb2NrKSAoc3RydWN0IGZpbGUgKiwgaW50LCBzdHJ1Y3Qg ZmlsZV9sb2NrICopOwogc3NpemVfdCAoKnNwbGljZV93cml0ZSkoc3RydWN0IHBpcGVfaW5vZGVf aW5mbyAqLCBzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgc2l6ZV90LCB1bnNpZ25lZCBpbnQpOwog c3NpemVfdCAoKnNwbGljZV9yZWFkKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgc3RydWN0IHBp cGVfaW5vZGVfaW5mbyAqLCBzaXplX3QsIHVuc2lnbmVkIGludCk7CiBpbnQgKCpzZXRsZWFzZSko c3RydWN0IGZpbGUgKiwgbG9uZywgc3RydWN0IGZpbGVfbG9jayAqKiwgdm9pZCAqKik7CiBsb25n ICgqZmFsbG9jYXRlKShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQs CiAgICAgbG9mZl90IGxlbik7CiB2b2lkICgqc2hvd19mZGluZm8pKHN0cnVjdCBzZXFfZmlsZSAq bSwgc3RydWN0IGZpbGUgKmYpOwoKCgogc3NpemVfdCAoKmNvcHlfZmlsZV9yYW5nZSkoc3RydWN0 IGZpbGUgKiwgbG9mZl90LCBzdHJ1Y3QgZmlsZSAqLAogICBsb2ZmX3QsIHNpemVfdCwgdW5zaWdu ZWQgaW50KTsKIGxvZmZfdCAoKnJlbWFwX2ZpbGVfcmFuZ2UpKHN0cnVjdCBmaWxlICpmaWxlX2lu LCBsb2ZmX3QgcG9zX2luLAogICAgICAgc3RydWN0IGZpbGUgKmZpbGVfb3V0LCBsb2ZmX3QgcG9z X291dCwKICAgICAgIGxvZmZfdCBsZW4sIHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7CiBpbnQg KCpmYWR2aXNlKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgaW50KTsKfSBfX2F0dHJp YnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CgpzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB7 CiBzdHJ1Y3QgZGVudHJ5ICogKCpsb29rdXApIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5 ICosIHVuc2lnbmVkIGludCk7CiBjb25zdCBjaGFyICogKCpnZXRfbGluaykgKHN0cnVjdCBkZW50 cnkgKiwgc3RydWN0IGlub2RlICosIHN0cnVjdCBkZWxheWVkX2NhbGwgKik7CiBpbnQgKCpwZXJt aXNzaW9uKSAoc3RydWN0IGlub2RlICosIGludCk7CiBzdHJ1Y3QgcG9zaXhfYWNsICogKCpnZXRf YWNsKShzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKCiBpbnQgKCpyZWFkbGluaykgKHN0cnVjdCBkZW50 cnkgKiwgY2hhciAqLGludCk7CgogaW50ICgqY3JlYXRlKSAoc3RydWN0IGlub2RlICosc3RydWN0 IGRlbnRyeSAqLCB1bW9kZV90LCBib29sKTsKIGludCAoKmxpbmspIChzdHJ1Y3QgZGVudHJ5ICos c3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqKTsKIGludCAoKnVubGluaykgKHN0cnVjdCBp bm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiBpbnQgKCpzeW1saW5rKSAoc3RydWN0IGlub2RlICos c3RydWN0IGRlbnRyeSAqLGNvbnN0IGNoYXIgKik7CiBpbnQgKCpta2RpcikgKHN0cnVjdCBpbm9k ZSAqLHN0cnVjdCBkZW50cnkgKix1bW9kZV90KTsKIGludCAoKnJtZGlyKSAoc3RydWN0IGlub2Rl ICosc3RydWN0IGRlbnRyeSAqKTsKIGludCAoKm1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0 IGRlbnRyeSAqLHVtb2RlX3QsZGV2X3QpOwogaW50ICgqcmVuYW1lKSAoc3RydWN0IGlub2RlICos IHN0cnVjdCBkZW50cnkgKiwKICAgc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgdW5z aWduZWQgaW50KTsKIGludCAoKnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0 ciAqKTsKIGludCAoKmdldGF0dHIpIChjb25zdCBzdHJ1Y3QgcGF0aCAqLCBzdHJ1Y3Qga3N0YXQg KiwgdTMyLCB1bnNpZ25lZCBpbnQpOwogc3NpemVfdCAoKmxpc3R4YXR0cikgKHN0cnVjdCBkZW50 cnkgKiwgY2hhciAqLCBzaXplX3QpOwogaW50ICgqZmllbWFwKShzdHJ1Y3QgaW5vZGUgKiwgc3Ry dWN0IGZpZW1hcF9leHRlbnRfaW5mbyAqLCB1NjQgc3RhcnQsCiAgICAgICAgdTY0IGxlbik7CiBp bnQgKCp1cGRhdGVfdGltZSkoc3RydWN0IGlub2RlICosIHN0cnVjdCB0aW1lc3BlYzY0ICosIGlu dCk7CiBpbnQgKCphdG9taWNfb3Blbikoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwK ICAgICAgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgb3Blbl9mbGFnLAogICAgICB1bW9kZV90IGNy ZWF0ZV9tb2RlKTsKIGludCAoKnRtcGZpbGUpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRy eSAqLCB1bW9kZV90KTsKIGludCAoKnNldF9hY2wpKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcG9z aXhfYWNsICosIGludCk7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKDYpKSkp KTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHNzaXplX3QgY2FsbF9yZWFkX2l0ZXIoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBraW9j YiAqa2lvLAogICAgICAgICBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpCnsKIHJldHVybiBmaWxlLT5m X29wLT5yZWFkX2l0ZXIoa2lvLCBpdGVyKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3NpemVfdCBjYWxsX3dyaXRlX2l0ZXIoc3Ry dWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBraW9jYiAqa2lvLAogICAgICAgICAgc3RydWN0IGlvdl9p dGVyICppdGVyKQp7CiByZXR1cm4gZmlsZS0+Zl9vcC0+d3JpdGVfaXRlcihraW8sIGl0ZXIpOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgY2FsbF9tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSkKewogcmV0dXJuIGZpbGUtPmZfb3AtPm1tYXAoZmlsZSwgdm1hKTsKfQoKc3NpemVfdCBy d19jb3B5X2NoZWNrX3V2ZWN0b3IoaW50IHR5cGUsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqIHV2ZWN0 b3IsCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnJfc2VncywgdW5zaWduZWQgbG9uZyBmYXN0X3Nl Z3MsCiAgICAgICAgIHN0cnVjdCBpb3ZlYyAqZmFzdF9wb2ludGVyLAogICAgICAgICBzdHJ1Y3Qg aW92ZWMgKipyZXRfcG9pbnRlcik7CgpleHRlcm4gc3NpemVfdCBfX3Zmc19yZWFkKHN0cnVjdCBm aWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90IHZmc19yZWFk KHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90 IHZmc193cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICop OwpleHRlcm4gc3NpemVfdCB2ZnNfcmVhZHYoc3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IGlv dmVjICosCiAgdW5zaWduZWQgbG9uZywgbG9mZl90ICosIHJ3Zl90KTsKZXh0ZXJuIHNzaXplX3Qg dmZzX2NvcHlfZmlsZV9yYW5nZShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QgLCBzdHJ1Y3QgZmlsZSAq LAogICAgICAgbG9mZl90LCBzaXplX3QsIHVuc2lnbmVkIGludCk7CmV4dGVybiBzc2l6ZV90IGdl bmVyaWNfY29weV9maWxlX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlX2luLCBsb2ZmX3QgcG9zX2lu LAogICAgICAgICAgIHN0cnVjdCBmaWxlICpmaWxlX291dCwgbG9mZl90IHBvc19vdXQsCiAgICAg ICAgICAgc2l6ZV90IGxlbiwgdW5zaWduZWQgaW50IGZsYWdzKTsKZXh0ZXJuIGludCBnZW5lcmlj X3JlbWFwX2ZpbGVfcmFuZ2VfcHJlcChzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9mZl90IHBvc19p biwKICAgICAgc3RydWN0IGZpbGUgKmZpbGVfb3V0LCBsb2ZmX3QgcG9zX291dCwKICAgICAgbG9m Zl90ICpjb3VudCwKICAgICAgdW5zaWduZWQgaW50IHJlbWFwX2ZsYWdzKTsKZXh0ZXJuIGxvZmZf dCBkb19jbG9uZV9maWxlX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlX2luLCBsb2ZmX3QgcG9zX2lu LAogICAgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0LAogICAgICBsb2Zm X3QgbGVuLCB1bnNpZ25lZCBpbnQgcmVtYXBfZmxhZ3MpOwpleHRlcm4gbG9mZl90IHZmc19jbG9u ZV9maWxlX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlX2luLCBsb2ZmX3QgcG9zX2luLAogICAgICAg c3RydWN0IGZpbGUgKmZpbGVfb3V0LCBsb2ZmX3QgcG9zX291dCwKICAgICAgIGxvZmZfdCBsZW4s IHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7CmV4dGVybiBpbnQgdmZzX2RlZHVwZV9maWxlX3Jh bmdlKHN0cnVjdCBmaWxlICpmaWxlLAogICAgIHN0cnVjdCBmaWxlX2RlZHVwZV9yYW5nZSAqc2Ft ZSk7CmV4dGVybiBsb2ZmX3QgdmZzX2RlZHVwZV9maWxlX3JhbmdlX29uZShzdHJ1Y3QgZmlsZSAq c3JjX2ZpbGUsIGxvZmZfdCBzcmNfcG9zLAogICAgIHN0cnVjdCBmaWxlICpkc3RfZmlsZSwgbG9m Zl90IGRzdF9wb3MsCiAgICAgbG9mZl90IGxlbiwgdW5zaWduZWQgaW50IHJlbWFwX2ZsYWdzKTsK CgpzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyB7CiAgICBzdHJ1Y3QgaW5vZGUgKigqYWxsb2NfaW5v ZGUpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwogdm9pZCAoKmRlc3Ryb3lfaW5vZGUpKHN0cnVj dCBpbm9kZSAqKTsKIHZvaWQgKCpmcmVlX2lub2RlKShzdHJ1Y3QgaW5vZGUgKik7CgogICAgdm9p ZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlub2RlICosIGludCBmbGFncyk7CiBpbnQgKCp3cml0 ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYyk7 CiBpbnQgKCpkcm9wX2lub2RlKSAoc3RydWN0IGlub2RlICopOwogdm9pZCAoKmV2aWN0X2lub2Rl KSAoc3RydWN0IGlub2RlICopOwogdm9pZCAoKnB1dF9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9j ayAqKTsKIGludCAoKnN5bmNfZnMpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB3YWl0KTsK IGludCAoKmZyZWV6ZV9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKIGludCAoKmZyZWV6 ZV9mcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKIGludCAoKnRoYXdfc3VwZXIpIChzdHJ1Y3Qg c3VwZXJfYmxvY2sgKik7CiBpbnQgKCp1bmZyZWV6ZV9mcykgKHN0cnVjdCBzdXBlcl9ibG9jayAq KTsKIGludCAoKnN0YXRmcykgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGtzdGF0ZnMgKik7CiBp bnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCAqLCBjaGFyICopOwog dm9pZCAoKnVtb3VudF9iZWdpbikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKCiBpbnQgKCpzaG93 X29wdGlvbnMpKHN0cnVjdCBzZXFfZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwogaW50ICgqc2hv d19kZXZuYW1lKShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKIGludCAoKnNo b3dfcGF0aCkoc3RydWN0IHNlcV9maWxlICosIHN0cnVjdCBkZW50cnkgKik7CiBpbnQgKCpzaG93 X3N0YXRzKShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKCiBzc2l6ZV90ICgq cXVvdGFfcmVhZCkoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCwgY2hhciAqLCBzaXplX3QsIGxv ZmZfdCk7CiBzc2l6ZV90ICgqcXVvdGFfd3JpdGUpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQs IGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QpOwogc3RydWN0IGRxdW90ICoqKCpnZXRfZHF1 b3RzKShzdHJ1Y3QgaW5vZGUgKik7CgogaW50ICgqYmRldl90cnlfdG9fZnJlZV9wYWdlKShzdHJ1 Y3Qgc3VwZXJfYmxvY2sqLCBzdHJ1Y3QgcGFnZSosIGdmcF90KTsKIGxvbmcgKCpucl9jYWNoZWRf b2JqZWN0cykoc3RydWN0IHN1cGVyX2Jsb2NrICosCiAgICAgIHN0cnVjdCBzaHJpbmtfY29udHJv bCAqKTsKIGxvbmcgKCpmcmVlX2NhY2hlZF9vYmplY3RzKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwK ICAgICAgICBzdHJ1Y3Qgc2hyaW5rX2NvbnRyb2wgKik7Cn07CiMgMjAxNyAiLi9pbmNsdWRlL2xp bnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGJvb2wgc2JfcmRvbmx5KGNvbnN0IHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpIHsg cmV0dXJuIHNiLT5zX2ZsYWdzICYgMTsgfQojIDIwNDcgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIEhBU19VTk1BUFBFRF9JRChzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiByZXR1cm4gIXVpZF92 YWxpZChpbm9kZS0+aV91aWQpIHx8ICFnaWRfdmFsaWQoaW5vZGUtPmlfZ2lkKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgZW51bSBy d19oaW50IGZpbGVfd3JpdGVfaGludChzdHJ1Y3QgZmlsZSAqZmlsZSkKewogaWYgKGZpbGUtPmZf d3JpdGVfaGludCAhPSBXUklURV9MSUZFX05PVF9TRVQpCiAgcmV0dXJuIGZpbGUtPmZfd3JpdGVf aGludDsKCiByZXR1cm4gZmlsZV9pbm9kZShmaWxlKS0+aV93cml0ZV9oaW50Owp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaW9j Yl9mbGFncyhzdHJ1Y3QgZmlsZSAqZmlsZSk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MTYga2lfaGludF92YWxpZGF0ZShlbnVtIHJ3 X2hpbnQgaGludCkKewogdHlwZW9mKCgoc3RydWN0IGtpb2NiICopMCktPmtpX2hpbnQpIG1heF9o aW50ID0gLTE7CgogaWYgKGhpbnQgPD0gbWF4X2hpbnQpCiAgcmV0dXJuIGhpbnQ7CiByZXR1cm4g MDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBpbml0X3N5bmNfa2lvY2Ioc3RydWN0IGtpb2NiICpraW9jYiwgc3RydWN0IGZp bGUgKmZpbHApCnsKICpraW9jYiA9IChzdHJ1Y3Qga2lvY2IpIHsKICAua2lfZmlscCA9IGZpbHAs CiAgLmtpX2ZsYWdzID0gaW9jYl9mbGFncyhmaWxwKSwKICAua2lfaGludCA9IGtpX2hpbnRfdmFs aWRhdGUoZmlsZV93cml0ZV9oaW50KGZpbHApKSwKICAua2lfaW9wcmlvID0gZ2V0X2N1cnJlbnRf aW9wcmlvKCksCiB9Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGtpb2NiX2Nsb25lKHN0cnVjdCBraW9jYiAqa2lvY2IsIHN0 cnVjdCBraW9jYiAqa2lvY2Jfc3JjLAogICAgICAgICAgc3RydWN0IGZpbGUgKmZpbHApCnsKICpr aW9jYiA9IChzdHJ1Y3Qga2lvY2IpIHsKICAua2lfZmlscCA9IGZpbHAsCiAgLmtpX2ZsYWdzID0g a2lvY2Jfc3JjLT5raV9mbGFncywKICAua2lfaGludCA9IGtpb2NiX3NyYy0+a2lfaGludCwKICAu a2lfaW9wcmlvID0ga2lvY2Jfc3JjLT5raV9pb3ByaW8sCiAgLmtpX3BvcyA9IGtpb2NiX3NyYy0+ a2lfcG9zLAogfTsKfQojIDIxODEgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gdm9pZCBf X21hcmtfaW5vZGVfZGlydHkoc3RydWN0IGlub2RlICosIGludCk7CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbWFya19pbm9kZV9k aXJ0eShzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiBfX21hcmtfaW5vZGVfZGlydHkoaW5vZGUsICgo KDEgPDwgMCkgfCAoMSA8PCAxKSkgfCAoMSA8PCAyKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG1hcmtfaW5vZGVfZGly dHlfc3luYyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiBfX21hcmtfaW5vZGVfZGlydHkoaW5vZGUs ICgxIDw8IDApKTsKfQoKZXh0ZXJuIHZvaWQgaW5jX25saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUp OwpleHRlcm4gdm9pZCBkcm9wX25saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gdm9p ZCBjbGVhcl9ubGluayhzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZvaWQgc2V0X25saW5r KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBubGluayk7CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlub2RlX2lu Y19saW5rX2NvdW50KHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIGluY19ubGluayhpbm9kZSk7CiBt YXJrX2lub2RlX2RpcnR5KGlub2RlKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV9kZWNfbGlua19jb3VudChzdHJ1 Y3QgaW5vZGUgKmlub2RlKQp7CiBkcm9wX25saW5rKGlub2RlKTsKIG1hcmtfaW5vZGVfZGlydHko aW5vZGUpOwp9CgplbnVtIGZpbGVfdGltZV9mbGFncyB7CiBTX0FUSU1FID0gMSwKIFNfTVRJTUUg PSAyLAogU19DVElNRSA9IDQsCiBTX1ZFUlNJT04gPSA4LAp9OwoKZXh0ZXJuIGJvb2wgYXRpbWVf bmVlZHNfdXBkYXRlKGNvbnN0IHN0cnVjdCBwYXRoICosIHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJu IHZvaWQgdG91Y2hfYXRpbWUoY29uc3Qgc3RydWN0IHBhdGggKik7CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZmlsZV9hY2Nlc3Nl ZChzdHJ1Y3QgZmlsZSAqZmlsZSkKewogaWYgKCEoZmlsZS0+Zl9mbGFncyAmIDAxMDAwMDAwKSkK ICB0b3VjaF9hdGltZSgmZmlsZS0+Zl9wYXRoKTsKfQoKZXh0ZXJuIGludCBmaWxlX21vZGlmaWVk KHN0cnVjdCBmaWxlICpmaWxlKTsKCmludCBzeW5jX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKTsKaW50IHN5bmNfaW5vZGVfbWV0YWRhdGEo c3RydWN0IGlub2RlICppbm9kZSwgaW50IHdhaXQpOwoKc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUg ewogY29uc3QgY2hhciAqbmFtZTsKIGludCBmc19mbGFnczsKCgoKCgoKIGludCAoKmluaXRfZnNf Y29udGV4dCkoc3RydWN0IGZzX2NvbnRleHQgKik7CiBjb25zdCBzdHJ1Y3QgZnNfcGFyYW1ldGVy X3NwZWMgKnBhcmFtZXRlcnM7CiBzdHJ1Y3QgZGVudHJ5ICooKm1vdW50KSAoc3RydWN0IGZpbGVf c3lzdGVtX3R5cGUgKiwgaW50LAogICAgICAgICBjb25zdCBjaGFyICosIHZvaWQgKik7CiB2b2lk ICgqa2lsbF9zYikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKIHN0cnVjdCBtb2R1bGUgKm93bmVy Owogc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiBuZXh0Owogc3RydWN0IGhsaXN0X2hlYWQgZnNf c3VwZXJzOwoKIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBzX2xvY2tfa2V5Owogc3RydWN0IGxvY2tf Y2xhc3Nfa2V5IHNfdW1vdW50X2tleTsKIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBzX3Zmc19yZW5h bWVfa2V5Owogc3RydWN0IGxvY2tfY2xhc3Nfa2V5IHNfd3JpdGVyc19rZXlbKFNCX0ZSRUVaRV9D T01QTEVURSAtIDEpXTsKCiBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgaV9sb2NrX2tleTsKIHN0cnVj dCBsb2NrX2NsYXNzX2tleSBpX211dGV4X2tleTsKIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBpX211 dGV4X2Rpcl9rZXk7Cn07CgoKCgpleHRlcm4gc3RydWN0IGRlbnRyeSAqbW91bnRfYmRldihzdHJ1 Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2 X25hbWUsIHZvaWQgKmRhdGEsCiBpbnQgKCpmaWxsX3N1cGVyKShzdHJ1Y3Qgc3VwZXJfYmxvY2sg Kiwgdm9pZCAqLCBpbnQpKTsKIyAyMjcxICIuL2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHN0 cnVjdCBkZW50cnkgKm1vdW50X3NpbmdsZShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlw ZSwKIGludCBmbGFncywgdm9pZCAqZGF0YSwKIGludCAoKmZpbGxfc3VwZXIpKHN0cnVjdCBzdXBl cl9ibG9jayAqLCB2b2lkICosIGludCkpOwpleHRlcm4gc3RydWN0IGRlbnRyeSAqbW91bnRfbm9k ZXYoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCiBpbnQgZmxhZ3MsIHZvaWQgKmRh dGEsCiBpbnQgKCpmaWxsX3N1cGVyKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdm9pZCAqLCBpbnQp KTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKm1vdW50X3N1YnRyZWUoc3RydWN0IHZmc21vdW50ICpt bnQsIGNvbnN0IGNoYXIgKnBhdGgpOwp2b2lkIGdlbmVyaWNfc2h1dGRvd25fc3VwZXIoc3RydWN0 IHN1cGVyX2Jsb2NrICpzYik7Cgp2b2lkIGtpbGxfYmxvY2tfc3VwZXIoc3RydWN0IHN1cGVyX2Js b2NrICpzYik7CgoKCgoKCnZvaWQga2lsbF9hbm9uX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAq c2IpOwp2b2lkIGtpbGxfbGl0dGVyX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwp2b2lk IGRlYWN0aXZhdGVfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnZvaWQgZGVhY3RpdmF0 ZV9sb2NrZWRfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmludCBzZXRfYW5vbl9zdXBl cihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMsIHZvaWQgKmRhdGEpOwppbnQgc2V0X2Fub25fc3VwZXJf ZmMoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpOwppbnQgZ2V0 X2Fub25fYmRldihkZXZfdCAqKTsKdm9pZCBmcmVlX2Fub25fYmRldihkZXZfdCk7CnN0cnVjdCBz dXBlcl9ibG9jayAqc2dldF9mYyhzdHJ1Y3QgZnNfY29udGV4dCAqZmMsCiAgICAgICBpbnQgKCp0 ZXN0KShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGZzX2NvbnRleHQgKiksCiAgICAgICBp bnQgKCpzZXQpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3QgZnNfY29udGV4dCAqKSk7CnN0 cnVjdCBzdXBlcl9ibG9jayAqc2dldChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqdHlwZSwKICAg aW50ICgqdGVzdCkoc3RydWN0IHN1cGVyX2Jsb2NrICosdm9pZCAqKSwKICAgaW50ICgqc2V0KShz dHJ1Y3Qgc3VwZXJfYmxvY2sgKix2b2lkICopLAogICBpbnQgZmxhZ3MsIHZvaWQgKmRhdGEpOwoj IDIzMjAgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gaW50IHJlZ2lzdGVyX2ZpbGVzeXN0 ZW0oc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9maWxl c3lzdGVtKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gc3RydWN0IHZmc21vdW50 ICprZXJuX21vdW50KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gdm9pZCBrZXJu X3VubW91bnQoc3RydWN0IHZmc21vdW50ICptbnQpOwpleHRlcm4gaW50IG1heV91bW91bnRfdHJl ZShzdHJ1Y3QgdmZzbW91bnQgKik7CmV4dGVybiBpbnQgbWF5X3Vtb3VudChzdHJ1Y3QgdmZzbW91 bnQgKik7CmV4dGVybiBsb25nIGRvX21vdW50KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAog ICAgICAgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwpleHRlcm4gc3RydWN0 IHZmc21vdW50ICpjb2xsZWN0X21vdW50cyhjb25zdCBzdHJ1Y3QgcGF0aCAqKTsKZXh0ZXJuIHZv aWQgZHJvcF9jb2xsZWN0ZWRfbW91bnRzKHN0cnVjdCB2ZnNtb3VudCAqKTsKZXh0ZXJuIGludCBp dGVyYXRlX21vdW50cyhpbnQgKCopKHN0cnVjdCB2ZnNtb3VudCAqLCB2b2lkICopLCB2b2lkICos CiAgICAgc3RydWN0IHZmc21vdW50ICopOwpleHRlcm4gaW50IHZmc19zdGF0ZnMoY29uc3Qgc3Ry dWN0IHBhdGggKiwgc3RydWN0IGtzdGF0ZnMgKik7CmV4dGVybiBpbnQgdXNlcl9zdGF0ZnMoY29u c3QgY2hhciAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKZXh0ZXJuIGludCBmZF9zdGF0ZnMoaW50LCBz dHJ1Y3Qga3N0YXRmcyAqKTsKZXh0ZXJuIGludCBmcmVlemVfc3VwZXIoc3RydWN0IHN1cGVyX2Js b2NrICpzdXBlcik7CmV4dGVybiBpbnQgdGhhd19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnN1 cGVyKTsKZXh0ZXJuIGJvb2wgb3VyX21udChzdHJ1Y3QgdmZzbW91bnQgKm1udCk7CmV4dGVybiBf X2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKQppbnQgc3VwZXJfc2V0dXBf YmRpX25hbWUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciAqZm10LCAuLi4pOwpleHRlcm4g aW50IHN1cGVyX3NldHVwX2JkaShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKCmV4dGVybiBpbnQg Y3VycmVudF91bWFzayh2b2lkKTsKCmV4dGVybiB2b2lkIGlob2xkKHN0cnVjdCBpbm9kZSAqIGlu b2RlKTsKZXh0ZXJuIHZvaWQgaXB1dChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgZ2VuZXJp Y191cGRhdGVfdGltZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHRpbWVzcGVjNjQgKiwgaW50KTsK CgpleHRlcm4gc3RydWN0IGtvYmplY3QgKmZzX2tvYmo7CgoKCgpleHRlcm4gaW50IGxvY2tzX21h bmRhdG9yeV9sb2NrZWQoc3RydWN0IGZpbGUgKik7CmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0b3J5 X2FyZWEoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIGxvZmZfdCwgbG9mZl90LCB1bnNp Z25lZCBjaGFyKTsKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbWFuZGF0b3J5X2xvY2soc3RydWN0IGlub2RlICppbm8p CnsKIHJldHVybiAoaW5vLT5pX21vZGUgJiAoMDAwMjAwMCB8IDAwMDEwKSkgPT0gMDAwMjAwMDsK fQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgbWFuZGF0b3J5X2xvY2soc3RydWN0IGlub2RlICppbm8pCnsKIHJldHVybiAo KGlubyktPmlfc2ItPnNfZmxhZ3MgJiAoNjQpKSAmJiBfX21hbmRhdG9yeV9sb2NrKGlubyk7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBsb2Nrc192ZXJpZnlfbG9ja2VkKHN0cnVjdCBmaWxlICpmaWxlKQp7CiBpZiAobWFuZGF0 b3J5X2xvY2soZmlsZV9pbm9kZShmaWxlKSkpCiAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9sb2Nr ZWQoZmlsZSk7CiByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGxvY2tzX3ZlcmlmeV90cnVuY2F0ZShzdHJ1Y3Qg aW5vZGUgKmlub2RlLAogICAgICAgIHN0cnVjdCBmaWxlICpmLAogICAgICAgIGxvZmZfdCBzaXpl KQp7CiBpZiAoIWlub2RlLT5pX2ZsY3R4IHx8ICFtYW5kYXRvcnlfbG9jayhpbm9kZSkpCiAgcmV0 dXJuIDA7CgogaWYgKHNpemUgPCBpbm9kZS0+aV9zaXplKSB7CiAgcmV0dXJuIGxvY2tzX21hbmRh dG9yeV9hcmVhKGlub2RlLCBmLCBzaXplLCBpbm9kZS0+aV9zaXplIC0gMSwKICAgIDEpOwogfSBl bHNlIHsKICByZXR1cm4gbG9ja3NfbWFuZGF0b3J5X2FyZWEoaW5vZGUsIGYsIGlub2RlLT5pX3Np emUsIHNpemUgLSAxLAogICAgMSk7CiB9Cn0KIyAyNDM4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IGJyZWFrX2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBtb2RlKQp7 CgoKCgoKCiBhc20gdm9sYXRpbGUoImxvY2s7IGFkZGwgJDAsLTQoJSVyc3ApIiA6OjogIm1lbW9y eSIsICJjYyIpOwogaWYgKGlub2RlLT5pX2ZsY3R4ICYmICFsaXN0X2VtcHR5X2NhcmVmdWwoJmlu b2RlLT5pX2ZsY3R4LT5mbGNfbGVhc2UpKQogIHJldHVybiBfX2JyZWFrX2xlYXNlKGlub2RlLCBt b2RlLCAzMik7CiByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJyZWFrX2RlbGVnKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIHVuc2lnbmVkIGludCBtb2RlKQp7CgoKCgoKCiBhc20gdm9sYXRpbGUoImxvY2s7IGFkZGwg JDAsLTQoJSVyc3ApIiA6OjogIm1lbW9yeSIsICJjYyIpOwogaWYgKGlub2RlLT5pX2ZsY3R4ICYm ICFsaXN0X2VtcHR5X2NhcmVmdWwoJmlub2RlLT5pX2ZsY3R4LT5mbGNfbGVhc2UpKQogIHJldHVy biBfX2JyZWFrX2xlYXNlKGlub2RlLCBtb2RlLCA0KTsKIHJldHVybiAwOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdHJ5X2Jy ZWFrX2RlbGVnKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBpbm9kZSAqKmRlbGVnYXRlZF9p bm9kZSkKewogaW50IHJldDsKCiByZXQgPSBicmVha19kZWxlZyhpbm9kZSwgMDAwMDAwMDF8MDAw MDQwMDApOwogaWYgKHJldCA9PSAtMTEgJiYgZGVsZWdhdGVkX2lub2RlKSB7CiAgKmRlbGVnYXRl ZF9pbm9kZSA9IGlub2RlOwogIGlob2xkKGlub2RlKTsKIH0KIHJldHVybiByZXQ7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBi cmVha19kZWxlZ193YWl0KHN0cnVjdCBpbm9kZSAqKmRlbGVnYXRlZF9pbm9kZSkKewogaW50IHJl dDsKCiByZXQgPSBicmVha19kZWxlZygqZGVsZWdhdGVkX2lub2RlLCAwMDAwMDAwMSk7CiBpcHV0 KCpkZWxlZ2F0ZWRfaW5vZGUpOwogKmRlbGVnYXRlZF9pbm9kZSA9ICgodm9pZCAqKTApOwogcmV0 dXJuIHJldDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IGJyZWFrX2xheW91dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIHdh aXQpCnsKIGFzbSB2b2xhdGlsZSgibG9jazsgYWRkbCAkMCwtNCglJXJzcCkiIDo6OiAibWVtb3J5 IiwgImNjIik7CiBpZiAoaW5vZGUtPmlfZmxjdHggJiYgIWxpc3RfZW1wdHlfY2FyZWZ1bCgmaW5v ZGUtPmlfZmxjdHgtPmZsY19sZWFzZSkpCiAgcmV0dXJuIF9fYnJlYWtfbGVhc2UoaW5vZGUsCiAg ICB3YWl0ID8gMDAwMDAwMDEgOiAwMDAwMDAwMSB8IDAwMDA0MDAwLAogICAgMjA0OCk7CiByZXR1 cm4gMDsKfQojIDI1MjggIi4vaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgYXVkaXRfbmFtZXM7 CnN0cnVjdCBmaWxlbmFtZSB7CiBjb25zdCBjaGFyICpuYW1lOwogY29uc3QgY2hhciAqdXB0cjsK IGludCByZWZjbnQ7CiBzdHJ1Y3QgYXVkaXRfbmFtZXMgKmFuYW1lOwogY29uc3QgY2hhciBpbmFt ZVtdOwp9OwpfU3RhdGljX2Fzc2VydChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IGZpbGVuYW1l LCBpbmFtZSkgJSBzaXplb2YobG9uZykgPT0gMCwgIm9mZnNldG9mKHN0cnVjdCBmaWxlbmFtZSwg aW5hbWUpICUgc2l6ZW9mKGxvbmcpID09IDAiKTsKCmV4dGVybiBsb25nIHZmc190cnVuY2F0ZShj b25zdCBzdHJ1Y3QgcGF0aCAqLCBsb2ZmX3QpOwpleHRlcm4gaW50IGRvX3RydW5jYXRlKHN0cnVj dCBkZW50cnkgKiwgbG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgdGltZV9hdHRycywKICAgICAg ICAgc3RydWN0IGZpbGUgKmZpbHApOwpleHRlcm4gaW50IHZmc19mYWxsb2NhdGUoc3RydWN0IGZp bGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LAogICBsb2ZmX3QgbGVuKTsKZXh0ZXJu IGxvbmcgZG9fc3lzX29wZW4oaW50IGRmZCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmbGFn cywKICAgdW1vZGVfdCBtb2RlKTsKZXh0ZXJuIHN0cnVjdCBmaWxlICpmaWxlX29wZW5fbmFtZShz dHJ1Y3QgZmlsZW5hbWUgKiwgaW50LCB1bW9kZV90KTsKZXh0ZXJuIHN0cnVjdCBmaWxlICpmaWxw X29wZW4oY29uc3QgY2hhciAqLCBpbnQsIHVtb2RlX3QpOwpleHRlcm4gc3RydWN0IGZpbGUgKmZp bGVfb3Blbl9yb290KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHZmc21vdW50ICosCiAgICAgICBj b25zdCBjaGFyICosIGludCwgdW1vZGVfdCk7CmV4dGVybiBzdHJ1Y3QgZmlsZSAqIGRlbnRyeV9v cGVuKGNvbnN0IHN0cnVjdCBwYXRoICosIGludCwgY29uc3Qgc3RydWN0IGNyZWQgKik7CmV4dGVy biBzdHJ1Y3QgZmlsZSAqIG9wZW5fd2l0aF9mYWtlX3BhdGgoY29uc3Qgc3RydWN0IHBhdGggKiwg aW50LAogICAgICBzdHJ1Y3QgaW5vZGUqLCBjb25zdCBzdHJ1Y3QgY3JlZCAqKTsKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZp bGUgKmZpbGVfY2xvbmVfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSkKewogcmV0dXJuIGRlbnRyeV9v cGVuKCZmaWxlLT5mX3BhdGgsIGZpbGUtPmZfZmxhZ3MsIGZpbGUtPmZfY3JlZCk7Cn0KZXh0ZXJu IGludCBmaWxwX2Nsb3NlKHN0cnVjdCBmaWxlICosIGZsX293bmVyX3QgaWQpOwoKZXh0ZXJuIHN0 cnVjdCBmaWxlbmFtZSAqZ2V0bmFtZV9mbGFncyhjb25zdCBjaGFyICosIGludCwgaW50ICopOwpl eHRlcm4gc3RydWN0IGZpbGVuYW1lICpnZXRuYW1lKGNvbnN0IGNoYXIgKik7CmV4dGVybiBzdHJ1 Y3QgZmlsZW5hbWUgKmdldG5hbWVfa2VybmVsKGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIHB1 dG5hbWUoc3RydWN0IGZpbGVuYW1lICpuYW1lKTsKCmV4dGVybiBpbnQgZmluaXNoX29wZW4oc3Ry dWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKICAgaW50ICgqb3Blbikoc3Ry dWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopKTsKZXh0ZXJuIGludCBmaW5pc2hfbm9fb3Blbihz dHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKCgpleHRlcm4gdm9pZCBf X2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygo X19jb2xkX18pKSB2ZnNfY2FjaGVzX2luaXRfZWFybHkodm9pZCk7CmV4dGVybiB2b2lkIF9fYXR0 cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2Nv bGRfXykpIHZmc19jYWNoZXNfaW5pdCh2b2lkKTsKCmV4dGVybiBzdHJ1Y3Qga21lbV9jYWNoZSAq bmFtZXNfY2FjaGVwOwoKCgoKCmV4dGVybiBpbnQgcmVnaXN0ZXJfYmxrZGV2KHVuc2lnbmVkIGlu dCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgdW5yZWdpc3Rlcl9ibGtkZXYodW5zaWduZWQg aW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBiZGV2X3VuaGFzaF9pbm9kZShkZXZfdCBk ZXYpOwpleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmRnZXQoZGV2X3QpOwpleHRlcm4gc3Ry dWN0IGJsb2NrX2RldmljZSAqYmRncmFiKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpOwpleHRl cm4gdm9pZCBiZF9zZXRfc2l6ZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIGxvZmZfdCBzaXplKTsK ZXh0ZXJuIHZvaWQgYmRfZm9yZ2V0KHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gdm9pZCBi ZHB1dChzdHJ1Y3QgYmxvY2tfZGV2aWNlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2JkZXYo c3RydWN0IGJsb2NrX2RldmljZSAqKTsKZXh0ZXJuIHZvaWQgaXRlcmF0ZV9iZGV2cyh2b2lkICgq KShzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIHZvaWQgKiksIHZvaWQgKik7CmV4dGVybiBpbnQgc3lu Y19ibG9ja2RldihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KTsKZXh0ZXJuIHZvaWQga2lsbF9i ZGV2KHN0cnVjdCBibG9ja19kZXZpY2UgKik7CmV4dGVybiBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmZy ZWV6ZV9iZGV2KHN0cnVjdCBibG9ja19kZXZpY2UgKik7CmV4dGVybiB2b2lkIGVtZXJnZW5jeV90 aGF3X2FsbCh2b2lkKTsKZXh0ZXJuIHZvaWQgZW1lcmdlbmN5X3RoYXdfYmRldihzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKnNiKTsKZXh0ZXJuIGludCB0aGF3X2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAq YmRldiwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiBpbnQgZnN5bmNfYmRldihzdHJ1 Y3QgYmxvY2tfZGV2aWNlICopOwoKZXh0ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqYmxvY2tkZXZf c3VwZXJibG9jazsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgc2JfaXNfYmxrZGV2X3NiKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Ip CnsKIHJldHVybiBzYiA9PSBibG9ja2Rldl9zdXBlcmJsb2NrOwp9CiMgMjYzMSAiLi9pbmNsdWRl L2xpbnV4L2ZzLmgiCmV4dGVybiBpbnQgc3luY19maWxlc3lzdGVtKHN0cnVjdCBzdXBlcl9ibG9j ayAqKTsKZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGVmX2Jsa19mb3BzOwpl eHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZfY2hyX2ZvcHM7CgpleHRlcm4g aW50IGlvY3RsX2J5X2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAqLCB1bnNpZ25lZCwgdW5zaWdu ZWQgbG9uZyk7CmV4dGVybiBpbnQgYmxrZGV2X2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKiwg Zm1vZGVfdCwgdW5zaWduZWQsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gbG9uZyBjb21wYXRfYmxr ZGV2X2lvY3RsKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJu IGludCBibGtkZXZfZ2V0KHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGZtb2RlX3QgbW9kZSwg dm9pZCAqaG9sZGVyKTsKZXh0ZXJuIHN0cnVjdCBibG9ja19kZXZpY2UgKmJsa2Rldl9nZXRfYnlf cGF0aChjb25zdCBjaGFyICpwYXRoLCBmbW9kZV90IG1vZGUsCiAgICAgICAgICAgIHZvaWQgKmhv bGRlcik7CmV4dGVybiBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpibGtkZXZfZ2V0X2J5X2RldihkZXZf dCBkZXYsIGZtb2RlX3QgbW9kZSwKICAgICAgICAgICB2b2lkICpob2xkZXIpOwpleHRlcm4gc3Ry dWN0IGJsb2NrX2RldmljZSAqYmRfc3RhcnRfY2xhaW1pbmcoc3RydWN0IGJsb2NrX2RldmljZSAq YmRldiwKICAgICAgICAgICB2b2lkICpob2xkZXIpOwpleHRlcm4gdm9pZCBiZF9maW5pc2hfY2xh aW1pbmcoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKICAgICAgICAgIHN0cnVjdCBibG9ja19k ZXZpY2UgKndob2xlLCB2b2lkICpob2xkZXIpOwpleHRlcm4gdm9pZCBiZF9hYm9ydF9jbGFpbWlu ZyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LAogICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNl ICp3aG9sZSwgdm9pZCAqaG9sZGVyKTsKZXh0ZXJuIHZvaWQgYmxrZGV2X3B1dChzdHJ1Y3QgYmxv Y2tfZGV2aWNlICpiZGV2LCBmbW9kZV90IG1vZGUpOwoKCmV4dGVybiBpbnQgYmRfbGlua19kaXNr X2hvbGRlcihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgZ2VuZGlzayAqZGlzayk7 CmV4dGVybiB2b2lkIGJkX3VubGlua19kaXNrX2hvbGRlcihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpi ZGV2LAogICAgICBzdHJ1Y3QgZ2VuZGlzayAqZGlzayk7CiMgMjY3NiAiLi9pbmNsdWRlL2xpbnV4 L2ZzLmgiCmV4dGVybiBpbnQgYWxsb2NfY2hyZGV2X3JlZ2lvbihkZXZfdCAqLCB1bnNpZ25lZCwg dW5zaWduZWQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgcmVnaXN0ZXJfY2hyZGV2X3JlZ2lv bihkZXZfdCwgdW5zaWduZWQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgX19yZWdpc3Rlcl9j aHJkZXYodW5zaWduZWQgaW50IG1ham9yLCB1bnNpZ25lZCBpbnQgYmFzZW1pbm9yLAogICAgICAg IHVuc2lnbmVkIGludCBjb3VudCwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBjb25zdCBzdHJ1 Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzKTsKZXh0ZXJuIHZvaWQgX191bnJlZ2lzdGVyX2NocmRl dih1bnNpZ25lZCBpbnQgbWFqb3IsIHVuc2lnbmVkIGludCBiYXNlbWlub3IsCiAgICB1bnNpZ25l ZCBpbnQgY291bnQsIGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gdm9pZCB1bnJlZ2lzdGVyX2No cmRldl9yZWdpb24oZGV2X3QsIHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgY2hyZGV2X3Nob3coc3Ry dWN0IHNlcV9maWxlICosb2ZmX3QpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX2NocmRldih1bnNpZ25lZCBpbnQg bWFqb3IsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlv bnMgKmZvcHMpCnsKIHJldHVybiBfX3JlZ2lzdGVyX2NocmRldihtYWpvciwgMCwgMjU2LCBuYW1l LCBmb3BzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCB1bnJlZ2lzdGVyX2NocmRldih1bnNpZ25lZCBpbnQgbWFqb3IsIGNv bnN0IGNoYXIgKm5hbWUpCnsKIF9fdW5yZWdpc3Rlcl9jaHJkZXYobWFqb3IsIDAsIDI1NiwgbmFt ZSk7Cn0KCgoKCgoKCmV4dGVybiBjb25zdCBjaGFyICpfX2JkZXZuYW1lKGRldl90LCBjaGFyICpi dWZmZXIpOwpleHRlcm4gY29uc3QgY2hhciAqYmRldm5hbWUoc3RydWN0IGJsb2NrX2RldmljZSAq YmRldiwgY2hhciAqYnVmZmVyKTsKZXh0ZXJuIHN0cnVjdCBibG9ja19kZXZpY2UgKmxvb2t1cF9i ZGV2KGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIGJsa2Rldl9zaG93KHN0cnVjdCBzZXFfZmls ZSAqLG9mZl90KTsKCgoKCgpleHRlcm4gdm9pZCBpbml0X3NwZWNpYWxfaW5vZGUoc3RydWN0IGlu b2RlICosIHVtb2RlX3QsIGRldl90KTsKCgpleHRlcm4gdm9pZCBtYWtlX2JhZF9pbm9kZShzdHJ1 Y3QgaW5vZGUgKik7CmV4dGVybiBib29sIGlzX2JhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CgoK ZXh0ZXJuIGludCByZXZhbGlkYXRlX2Rpc2soc3RydWN0IGdlbmRpc2sgKik7CmV4dGVybiBpbnQg Y2hlY2tfZGlza19jaGFuZ2Uoc3RydWN0IGJsb2NrX2RldmljZSAqKTsKZXh0ZXJuIGludCBfX2lu dmFsaWRhdGVfZGV2aWNlKHN0cnVjdCBibG9ja19kZXZpY2UgKiwgYm9vbCk7CmV4dGVybiBpbnQg aW52YWxpZGF0ZV9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKiwgaW50KTsKCnVuc2lnbmVkIGxv bmcgaW52YWxpZGF0ZV9tYXBwaW5nX3BhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5n LAogICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW52 YWxpZGF0ZV9yZW1vdGVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkKewogaWYgKCgoKGlub2Rl LT5pX21vZGUpICYgMDAxNzAwMDApID09IDAxMDAwMDApIHx8ICgoKGlub2RlLT5pX21vZGUpICYg MDAxNzAwMDApID09IDAwNDAwMDApIHx8CiAgICAgKCgoaW5vZGUtPmlfbW9kZSkgJiAwMDE3MDAw MCkgPT0gMDEyMDAwMCkpCiAgaW52YWxpZGF0ZV9tYXBwaW5nX3BhZ2VzKGlub2RlLT5pX21hcHBp bmcsIDAsIC0xKTsKfQpleHRlcm4gaW50IGludmFsaWRhdGVfaW5vZGVfcGFnZXMyKHN0cnVjdCBh ZGRyZXNzX3NwYWNlICptYXBwaW5nKTsKZXh0ZXJuIGludCBpbnZhbGlkYXRlX2lub2RlX3BhZ2Vz Ml9yYW5nZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKICAgICAgdW5zaWduZWQgbG9u ZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOwpleHRlcm4gaW50IHdyaXRlX2lub2RlX25vdyhz dHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCBmaWxlbWFwX2ZkYXRhd3JpdGUoc3RydWN0 IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVybiBpbnQgZmlsZW1hcF9mbHVzaChzdHJ1Y3QgYWRkcmVz c19zcGFjZSAqKTsKZXh0ZXJuIGludCBmaWxlbWFwX2ZkYXRhd2FpdF9rZWVwX2Vycm9ycyhzdHJ1 Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyk7CmV4dGVybiBpbnQgZmlsZW1hcF9mZGF0YXdhaXRf cmFuZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9mZl90IGxzdGFydCwKICAgICAgIGxvZmZf dCBsZW5kKTsKZXh0ZXJuIGludCBmaWxlbWFwX2ZkYXRhd2FpdF9yYW5nZV9rZWVwX2Vycm9ycyhz dHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKICBsb2ZmX3Qgc3RhcnRfYnl0ZSwgbG9mZl90 IGVuZF9ieXRlKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBmaWxlbWFwX2ZkYXRhd2FpdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAq bWFwcGluZykKewogcmV0dXJuIGZpbGVtYXBfZmRhdGF3YWl0X3JhbmdlKG1hcHBpbmcsIDAsICgo bG9uZyBsb25nKSh+MFVMTCA+PiAxKSkpOwp9CgpleHRlcm4gYm9vbCBmaWxlbWFwX3JhbmdlX2hh c19wYWdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIGxvZmZfdCBsc3RhcnQsCiAgICAgIGxvZmZf dCBsZW5kKTsKZXh0ZXJuIGludCBmaWxlbWFwX3dyaXRlX2FuZF93YWl0X3JhbmdlKHN0cnVjdCBh ZGRyZXNzX3NwYWNlICptYXBwaW5nLAogICAgICAgICAgICBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3Qg bGVuZCk7CmV4dGVybiBpbnQgX19maWxlbWFwX2ZkYXRhd3JpdGVfcmFuZ2Uoc3RydWN0IGFkZHJl c3Nfc3BhY2UgKm1hcHBpbmcsCiAgICBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBlbmQsIGludCBzeW5j X21vZGUpOwpleHRlcm4gaW50IGZpbGVtYXBfZmRhdGF3cml0ZV9yYW5nZShzdHJ1Y3QgYWRkcmVz c19zcGFjZSAqbWFwcGluZywKICAgIGxvZmZfdCBzdGFydCwgbG9mZl90IGVuZCk7CmV4dGVybiBp bnQgZmlsZW1hcF9jaGVja19lcnJvcnMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpOwpl eHRlcm4gdm9pZCBfX2ZpbGVtYXBfc2V0X3diX2VycihzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFw cGluZywgaW50IGVycik7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQgZmlsZW1hcF93cml0ZV9hbmRfd2FpdChzdHJ1Y3QgYWRkcmVz c19zcGFjZSAqbWFwcGluZykKewogcmV0dXJuIGZpbGVtYXBfd3JpdGVfYW5kX3dhaXRfcmFuZ2Uo bWFwcGluZywgMCwgKChsb25nIGxvbmcpKH4wVUxMID4+IDEpKSk7Cn0KCmV4dGVybiBpbnQgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGZpbGVfZmRhdGF3YWl0X3Jhbmdl KHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3QgbHN0YXJ0LAogICAgICBsb2ZmX3QgbGVuZCk7CmV4 dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGZpbGVfY2hl Y2tfYW5kX2FkdmFuY2Vfd2JfZXJyKHN0cnVjdCBmaWxlICpmaWxlKTsKZXh0ZXJuIGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZmlsZV93cml0ZV9hbmRfd2FpdF9y YW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwKICAgICAgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kKTsK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBmaWxlX3dyaXRlX2FuZF93YWl0KHN0cnVjdCBmaWxlICpmaWxlKQp7CiByZXR1cm4gZmls ZV93cml0ZV9hbmRfd2FpdF9yYW5nZShmaWxlLCAwLCAoKGxvbmcgbG9uZykofjBVTEwgPj4gMSkp KTsKfQojIDI3OTEgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGZpbGVtYXBfc2V0X3diX2Vy cihzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgaW50IGVycikKewoKIGlmIChfX2J1aWx0 aW5fZXhwZWN0KCEhKGVyciksIDApKQogIF9fZmlsZW1hcF9zZXRfd2JfZXJyKG1hcHBpbmcsIGVy cik7Cn0KIyAyODA4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGZpbGVtYXBfY2hlY2tfd2Jf ZXJyKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogICAgIGVycnNlcV90IHNpbmNlKQp7 CiByZXR1cm4gZXJyc2VxX2NoZWNrKCZtYXBwaW5nLT53Yl9lcnIsIHNpbmNlKTsKfQojIDI4MjEg Ii4vaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBlcnJzZXFfdCBmaWxlbWFwX3NhbXBsZV93Yl9lcnIoc3Ry dWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCnsKIHJldHVybiBlcnJzZXFfc2FtcGxlKCZtYXBw aW5nLT53Yl9lcnIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQgZmlsZW1hcF9ucl90aHBzKHN0cnVjdCBhZGRyZXNzX3NwYWNl ICptYXBwaW5nKQp7CgoKCiByZXR1cm4gMDsKCn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZmlsZW1hcF9ucl90aHBzX2luYyhz dHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZykKewoKCgogKHsgaW50IF9fcmV0X3dhcm5fb24g PSAhISgxKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7 IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxu IiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFi IiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAi ICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19l bnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQu b3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L2ZzLmgi KSwgImkiICgyODQwKSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJp IiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRp bGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9u ZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDMwKSk7IH0pOyB9IHdo aWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwoKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBmaWxlbWFwX25yX3RocHNfZGVjKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQp7 CgoKCiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKDEpOyBpZiAoX19idWlsdGluX2V4cGVjdCgh IShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6 XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJh d1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19h ZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxu IiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0 IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6 ICJpIiAoImluY2x1ZGUvbGludXgvZnMuaCIpLCAiaSIgKDI4NDkpLCAiaSIgKCgxIDw8IDApfCgo MSA8PCAxKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsg fSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRp c2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5c dCIgOiA6ICJpIiAoMzEpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9f cmV0X3dhcm5fb24pLCAwKTsgfSk7Cgp9CgpleHRlcm4gaW50IHZmc19mc3luY19yYW5nZShzdHJ1 Y3QgZmlsZSAqZmlsZSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kLAogICAgICBpbnQgZGF0YXN5 bmMpOwpleHRlcm4gaW50IHZmc19mc3luYyhzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IGRhdGFzeW5j KTsKCmV4dGVybiBpbnQgc3luY19maWxlX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qg b2Zmc2V0LCBsb2ZmX3QgbmJ5dGVzLAogICAgdW5zaWduZWQgaW50IGZsYWdzKTsKCgoKCgoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3Np emVfdCBnZW5lcmljX3dyaXRlX3N5bmMoc3RydWN0IGtpb2NiICppb2NiLCBzc2l6ZV90IGNvdW50 KQp7CiBpZiAoaW9jYi0+a2lfZmxhZ3MgJiAoMSA8PCA0KSkgewogIGludCByZXQgPSB2ZnNfZnN5 bmNfcmFuZ2UoaW9jYi0+a2lfZmlscCwKICAgIGlvY2ItPmtpX3BvcyAtIGNvdW50LCBpb2NiLT5r aV9wb3MgLSAxLAogICAgKGlvY2ItPmtpX2ZsYWdzICYgKDEgPDwgNSkpID8gMCA6IDEpOwogIGlm IChyZXQpCiAgIHJldHVybiByZXQ7CiB9CgogcmV0dXJuIGNvdW50Owp9CgpleHRlcm4gdm9pZCBl bWVyZ2VuY3lfc3luYyh2b2lkKTsKZXh0ZXJuIHZvaWQgZW1lcmdlbmN5X3JlbW91bnQodm9pZCk7 CgoKZXh0ZXJuIGludCBibWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHNlY3Rvcl90ICpibG9jayk7 CgoKCgoKCgpleHRlcm4gaW50IG5vdGlmeV9jaGFuZ2Uoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg aWF0dHIgKiwgc3RydWN0IGlub2RlICoqKTsKZXh0ZXJuIGludCBpbm9kZV9wZXJtaXNzaW9uKHN0 cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IGdlbmVyaWNfcGVybWlzc2lvbihzdHJ1Y3Qg aW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCBfX2NoZWNrX3N0aWNreShzdHJ1Y3QgaW5vZGUgKmRp ciwgc3RydWN0IGlub2RlICppbm9kZSk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGV4ZWN1dGVfb2soc3RydWN0IGlub2RlICpp bm9kZSkKewogcmV0dXJuIChpbm9kZS0+aV9tb2RlICYgKDAwMTAwfDAwMDEwfDAwMDAxKSkgfHwg KCgoaW5vZGUtPmlfbW9kZSkgJiAwMDE3MDAwMCkgPT0gMDA0MDAwMCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZmlsZV9z dGFydF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSkKewogaWYgKCEoKChmaWxlX2lub2RlKGZpbGUp LT5pX21vZGUpICYgMDAxNzAwMDApID09IDAxMDAwMDApKQogIHJldHVybjsKIF9fc2Jfc3RhcnRf d3JpdGUoZmlsZV9pbm9kZShmaWxlKS0+aV9zYiwgU0JfRlJFRVpFX1dSSVRFLCB0cnVlKTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBmaWxlX3N0YXJ0X3dyaXRlX3RyeWxvY2soc3RydWN0IGZpbGUgKmZpbGUpCnsKIGlmICgh KCgoZmlsZV9pbm9kZShmaWxlKS0+aV9tb2RlKSAmIDAwMTcwMDAwKSA9PSAwMTAwMDAwKSkKICBy ZXR1cm4gdHJ1ZTsKIHJldHVybiBfX3NiX3N0YXJ0X3dyaXRlKGZpbGVfaW5vZGUoZmlsZSktPmlf c2IsIFNCX0ZSRUVaRV9XUklURSwgZmFsc2UpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGZpbGVfZW5kX3dyaXRlKHN0cnVj dCBmaWxlICpmaWxlKQp7CiBpZiAoISgoKGZpbGVfaW5vZGUoZmlsZSktPmlfbW9kZSkgJiAwMDE3 MDAwMCkgPT0gMDEwMDAwMCkpCiAgcmV0dXJuOwogX19zYl9lbmRfd3JpdGUoZmlsZV9pbm9kZShm aWxlKS0+aV9zYiwgU0JfRlJFRVpFX1dSSVRFKTsKfQojIDI5MzcgIi4vaW5jbHVkZS9saW51eC9m cy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgZ2V0X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiByZXR1cm4g YXRvbWljX2luY191bmxlc3NfbmVnYXRpdmUoJmlub2RlLT5pX3dyaXRlY291bnQpID8gMCA6IC0y NjsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgZGVueV93cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKmZpbGUpCnsKIHN0cnVjdCBp bm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbGUpOwogcmV0dXJuIGF0b21pY19kZWNfdW5sZXNz X3Bvc2l0aXZlKCZpbm9kZS0+aV93cml0ZWNvdW50KSA/IDAgOiAtMjY7Cn0Kc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwdXRfd3Jp dGVfYWNjZXNzKHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiBhdG9taWNfZGVjKCZpbm9kZS0+aV93 cml0ZWNvdW50KTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGFsbG93X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqZmlsZSkK ewogaWYgKGZpbGUpCiAgYXRvbWljX2luYygmZmlsZV9pbm9kZShmaWxlKS0+aV93cml0ZWNvdW50 KTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIGlub2RlX2lzX29wZW5fZm9yX3dyaXRlKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5v ZGUpCnsKIHJldHVybiBhdG9taWNfcmVhZCgmaW5vZGUtPmlfd3JpdGVjb3VudCkgPiAwOwp9CgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBpX3JlYWRjb3VudF9kZWMoc3RydWN0IGlub2RlICppbm9kZSkKewogZG8geyBpZiAoX19i dWlsdGluX2V4cGVjdCghISghYXRvbWljX3JlYWQoJmlub2RlLT5pX3JlYWRjb3VudCkpLCAwKSkg ZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIi ICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAi ICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAi JWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBi dWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIg Ilx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9m cy5oIiksICJpIiAoMjk2MyksICJpIiAoMCksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkp KSk7IH0gd2hpbGUgKDApOyBkbyB7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNl Y3Rpb24gLmRpc2NhcmQudW5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBv cHNlY3Rpb25cblx0IiA6IDogImkiICgzMikpOyB9KTsgYXNtIHZvbGF0aWxlKCIiKTsgX19idWls dGluX3VucmVhY2hhYmxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7 CiBhdG9taWNfZGVjKCZpbm9kZS0+aV9yZWFkY291bnQpOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaV9yZWFkY291bnRfaW5j KHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIGF0b21pY19pbmMoJmlub2RlLT5pX3JlYWRjb3VudCk7 Cn0KIyAyOTgwICIuL2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIGludCBkb19waXBlX2ZsYWdz KGludCAqLCBpbnQpOwojIDI5OTYgIi4vaW5jbHVkZS9saW51eC9mcy5oIgplbnVtIGtlcm5lbF9y ZWFkX2ZpbGVfaWQgewogUkVBRElOR19VTktOT1dOLCBSRUFESU5HX0ZJUk1XQVJFLCBSRUFESU5H X0ZJUk1XQVJFX1BSRUFMTE9DX0JVRkZFUiwgUkVBRElOR19NT0RVTEUsIFJFQURJTkdfS0VYRUNf SU1BR0UsIFJFQURJTkdfS0VYRUNfSU5JVFJBTUZTLCBSRUFESU5HX1BPTElDWSwgUkVBRElOR19Y NTA5X0NFUlRJRklDQVRFLCBSRUFESU5HX01BWF9JRCwKfTsKCnN0YXRpYyBjb25zdCBjaGFyICog Y29uc3Qga2VybmVsX3JlYWRfZmlsZV9zdHJbXSA9IHsKICJ1bmtub3duIiwgImZpcm13YXJlIiwg ImZpcm13YXJlIiwgImtlcm5lbC1tb2R1bGUiLCAia2V4ZWMtaW1hZ2UiLCAia2V4ZWMtaW5pdHJh bWZzIiwgInNlY3VyaXR5LXBvbGljeSIsICJ4NTA5LWNlcnRpZmljYXRlIiwgIiIsCn07CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjb25z dCBjaGFyICprZXJuZWxfcmVhZF9maWxlX2lkX3N0cihlbnVtIGtlcm5lbF9yZWFkX2ZpbGVfaWQg aWQpCnsKIGlmICgodW5zaWduZWQpaWQgPj0gUkVBRElOR19NQVhfSUQpCiAgcmV0dXJuIGtlcm5l bF9yZWFkX2ZpbGVfc3RyW1JFQURJTkdfVU5LTk9XTl07CgogcmV0dXJuIGtlcm5lbF9yZWFkX2Zp bGVfc3RyW2lkXTsKfQoKZXh0ZXJuIGludCBrZXJuZWxfcmVhZF9maWxlKHN0cnVjdCBmaWxlICos IHZvaWQgKiosIGxvZmZfdCAqLCBsb2ZmX3QsCiAgICAgICBlbnVtIGtlcm5lbF9yZWFkX2ZpbGVf aWQpOwpleHRlcm4gaW50IGtlcm5lbF9yZWFkX2ZpbGVfZnJvbV9wYXRoKGNvbnN0IGNoYXIgKiwg dm9pZCAqKiwgbG9mZl90ICosIGxvZmZfdCwKICAgICAgICAgIGVudW0ga2VybmVsX3JlYWRfZmls ZV9pZCk7CmV4dGVybiBpbnQga2VybmVsX3JlYWRfZmlsZV9mcm9tX2ZkKGludCwgdm9pZCAqKiwg bG9mZl90ICosIGxvZmZfdCwKICAgICAgICBlbnVtIGtlcm5lbF9yZWFkX2ZpbGVfaWQpOwpleHRl cm4gc3NpemVfdCBrZXJuZWxfcmVhZChzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIHNpemVfdCwgbG9m Zl90ICopOwpleHRlcm4gc3NpemVfdCBrZXJuZWxfd3JpdGUoc3RydWN0IGZpbGUgKiwgY29uc3Qg dm9pZCAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgX19rZXJuZWxfd3JpdGUo c3RydWN0IGZpbGUgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHN0 cnVjdCBmaWxlICogb3Blbl9leGVjKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGJvb2wgaXNfc3Vi ZGlyKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGJvb2wgcGF0aF9p c191bmRlcihjb25zdCBzdHJ1Y3QgcGF0aCAqLCBjb25zdCBzdHJ1Y3QgcGF0aCAqKTsKCmV4dGVy biBjaGFyICpmaWxlX3BhdGgoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBpbnQpOwoKCgoKZXh0ZXJu IGxvZmZfdCBkZWZhdWx0X2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwg aW50IHdoZW5jZSk7CgpleHRlcm4gbG9mZl90IHZmc19sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUs IGxvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpOwoKZXh0ZXJuIGludCBpbm9kZV9pbml0X2Fsd2F5 cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBpbm9k ZV9pbml0X29uY2Uoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBhZGRyZXNzX3NwYWNlX2lu aXRfb25jZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyk7CmV4dGVybiBzdHJ1Y3QgaW5v ZGUgKiBpZ3JhYihzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbm9fdCBpdW5pcXVlKHN0cnVjdCBz dXBlcl9ibG9jayAqLCBpbm9fdCk7CmV4dGVybiBpbnQgaW5vZGVfbmVlZHNfc3luYyhzdHJ1Y3Qg aW5vZGUgKmlub2RlKTsKZXh0ZXJuIGludCBnZW5lcmljX2RlbGV0ZV9pbm9kZShzdHJ1Y3QgaW5v ZGUgKmlub2RlKTsKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IGdlbmVyaWNfZHJvcF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7 CiByZXR1cm4gIWlub2RlLT5pX25saW5rIHx8IGlub2RlX3VuaGFzaGVkKGlub2RlKTsKfQoKZXh0 ZXJuIHN0cnVjdCBpbm9kZSAqaWxvb2t1cDVfbm93YWl0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is CiAgdW5zaWduZWQgbG9uZyBoYXNodmFsLCBpbnQgKCp0ZXN0KShzdHJ1Y3QgaW5vZGUgKiwgdm9p ZCAqKSwKICB2b2lkICpkYXRhKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqaWxvb2t1cDUoc3RydWN0 IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBoYXNodmFsLAogIGludCAoKnRlc3QpKHN0 cnVjdCBpbm9kZSAqLCB2b2lkICopLCB2b2lkICpkYXRhKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAq aWxvb2t1cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubyk7CgpleHRl cm4gc3RydWN0IGlub2RlICppbm9kZV9pbnNlcnQ1KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2ln bmVkIGxvbmcgaGFzaHZhbCwKICBpbnQgKCp0ZXN0KShzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSwK ICBpbnQgKCpzZXQpKHN0cnVjdCBpbm9kZSAqLCB2b2lkICopLAogIHZvaWQgKmRhdGEpOwpleHRl cm4gc3RydWN0IGlub2RlICogaWdldDVfbG9ja2VkKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNp Z25lZCBsb25nLCBpbnQgKCp0ZXN0KShzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSwgaW50ICgqc2V0 KShzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSwgdm9pZCAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAq IGlnZXRfbG9ja2VkKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJu IHN0cnVjdCBpbm9kZSAqZmluZF9pbm9kZV9ub3dhaXQoc3RydWN0IHN1cGVyX2Jsb2NrICosCiAg ICAgICAgICAgdW5zaWduZWQgbG9uZywKICAgICAgICAgICBpbnQgKCptYXRjaCkoc3RydWN0IGlu b2RlICosCiAgICAgICAgICB1bnNpZ25lZCBsb25nLCB2b2lkICopLAogICAgICAgICAgIHZvaWQg KmRhdGEpOwpleHRlcm4gaW50IGluc2VydF9pbm9kZV9sb2NrZWQ0KHN0cnVjdCBpbm9kZSAqLCB1 bnNpZ25lZCBsb25nLCBpbnQgKCp0ZXN0KShzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSwgdm9pZCAq KTsKZXh0ZXJuIGludCBpbnNlcnRfaW5vZGVfbG9ja2VkKHN0cnVjdCBpbm9kZSAqKTsKCgoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBsb2NrZGVwX2Fubm90YXRlX2lub2RlX211dGV4X2tleShzdHJ1Y3QgaW5vZGUgKmlub2RlKSB7 IH07CgpleHRlcm4gdm9pZCB1bmxvY2tfbmV3X2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJu IHZvaWQgZGlzY2FyZF9uZXdfaW5vZGUoc3RydWN0IGlub2RlICopOwpleHRlcm4gdW5zaWduZWQg aW50IGdldF9uZXh0X2lubyh2b2lkKTsKZXh0ZXJuIHZvaWQgZXZpY3RfaW5vZGVzKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IpOwoKZXh0ZXJuIHZvaWQgX19pZ2V0KHN0cnVjdCBpbm9kZSAqIGlub2Rl KTsKZXh0ZXJuIHZvaWQgaWdldF9mYWlsZWQoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBj bGVhcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIF9fZGVzdHJveV9pbm9kZShz dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKm5ld19pbm9kZV9wc2V1ZG8oc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKm5ld19pbm9kZShzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKZXh0ZXJuIHZvaWQgZnJlZV9pbm9kZV9ub25yY3Uoc3RydWN0 IGlub2RlICppbm9kZSk7CmV4dGVybiBpbnQgc2hvdWxkX3JlbW92ZV9zdWlkKHN0cnVjdCBkZW50 cnkgKik7CmV4dGVybiBpbnQgZmlsZV9yZW1vdmVfcHJpdnMoc3RydWN0IGZpbGUgKik7CgpleHRl cm4gdm9pZCBfX2luc2VydF9pbm9kZV9oYXNoKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25n IGhhc2h2YWwpOwpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGluc2VydF9pbm9kZV9oYXNoKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsK IF9faW5zZXJ0X2lub2RlX2hhc2goaW5vZGUsIGlub2RlLT5pX2lubyk7Cn0KCmV4dGVybiB2b2lk IF9fcmVtb3ZlX2lub2RlX2hhc2goc3RydWN0IGlub2RlICopOwpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlbW92ZV9pbm9kZV9o YXNoKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIGlmICghaW5vZGVfdW5oYXNoZWQoaW5vZGUpICYm ICFobGlzdF9mYWtlKCZpbm9kZS0+aV9oYXNoKSkKICBfX3JlbW92ZV9pbm9kZV9oYXNoKGlub2Rl KTsKfQoKZXh0ZXJuIHZvaWQgaW5vZGVfc2JfbGlzdF9hZGQoc3RydWN0IGlub2RlICppbm9kZSk7 CgoKZXh0ZXJuIGludCBiZGV2X3JlYWRfb25seShzdHJ1Y3QgYmxvY2tfZGV2aWNlICopOwoKZXh0 ZXJuIGludCBzZXRfYmxvY2tzaXplKHN0cnVjdCBibG9ja19kZXZpY2UgKiwgaW50KTsKZXh0ZXJu IGludCBzYl9zZXRfYmxvY2tzaXplKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQpOwpleHRlcm4g aW50IHNiX21pbl9ibG9ja3NpemUoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCk7CgpleHRlcm4g aW50IGdlbmVyaWNfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqKTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfcmVhZG9ubHlfbW1hcChzdHJ1Y3QgZmlsZSAq LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfd3JpdGVf Y2hlY2tzKHN0cnVjdCBraW9jYiAqLCBzdHJ1Y3QgaW92X2l0ZXIgKik7CmV4dGVybiBpbnQgZ2Vu ZXJpY19yZW1hcF9jaGVja3Moc3RydWN0IGZpbGUgKmZpbGVfaW4sIGxvZmZfdCBwb3NfaW4sCiAg ICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0LAogICAgbG9mZl90ICpjb3Vu dCwgdW5zaWduZWQgaW50IHJlbWFwX2ZsYWdzKTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfcndf Y2hlY2tzKHN0cnVjdCBmaWxlICpmaWxlX2luLCBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQpOwpleHRl cm4gaW50IGdlbmVyaWNfY29weV9maWxlX2NoZWNrcyhzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9m Zl90IHBvc19pbiwKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0 LAogICAgICAgIHNpemVfdCAqY291bnQsIHVuc2lnbmVkIGludCBmbGFncyk7CmV4dGVybiBzc2l6 ZV90IGdlbmVyaWNfZmlsZV9yZWFkX2l0ZXIoc3RydWN0IGtpb2NiICosIHN0cnVjdCBpb3ZfaXRl ciAqKTsKZXh0ZXJuIHNzaXplX3QgX19nZW5lcmljX2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lv Y2IgKiwgc3RydWN0IGlvdl9pdGVyICopOwpleHRlcm4gc3NpemVfdCBnZW5lcmljX2ZpbGVfd3Jp dGVfaXRlcihzdHJ1Y3Qga2lvY2IgKiwgc3RydWN0IGlvdl9pdGVyICopOwpleHRlcm4gc3NpemVf dCBnZW5lcmljX2ZpbGVfZGlyZWN0X3dyaXRlKHN0cnVjdCBraW9jYiAqLCBzdHJ1Y3QgaW92X2l0 ZXIgKik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcGVyZm9ybV93cml0ZShzdHJ1Y3QgZmlsZSAq LCBzdHJ1Y3QgaW92X2l0ZXIgKiwgbG9mZl90KTsKCnNzaXplX3QgdmZzX2l0ZXJfcmVhZChzdHJ1 Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGlvdl9pdGVyICppdGVyLCBsb2ZmX3QgKnBwb3MsCiAgcndm X3QgZmxhZ3MpOwpzc2l6ZV90IHZmc19pdGVyX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1 Y3QgaW92X2l0ZXIgKml0ZXIsIGxvZmZfdCAqcHBvcywKICByd2ZfdCBmbGFncyk7CnNzaXplX3Qg dmZzX2lvY2JfaXRlcl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga2lvY2IgKmlvY2Is CiAgICAgIHN0cnVjdCBpb3ZfaXRlciAqaXRlcik7CnNzaXplX3QgdmZzX2lvY2JfaXRlcl93cml0 ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtpb2NiICppb2NiLAogICAgICAgc3RydWN0IGlv dl9pdGVyICppdGVyKTsKCgpleHRlcm4gc3NpemVfdCBibGtkZXZfcmVhZF9pdGVyKHN0cnVjdCBr aW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0byk7CmV4dGVybiBzc2l6ZV90IGJsa2Rldl93 cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKTsKZXh0 ZXJuIGludCBibGtkZXZfZnN5bmMoc3RydWN0IGZpbGUgKmZpbHAsIGxvZmZfdCBzdGFydCwgbG9m Zl90IGVuZCwKICAgaW50IGRhdGFzeW5jKTsKZXh0ZXJuIHZvaWQgYmxvY2tfc3luY19wYWdlKHN0 cnVjdCBwYWdlICpwYWdlKTsKCgpleHRlcm4gc3NpemVfdCBnZW5lcmljX2ZpbGVfc3BsaWNlX3Jl YWQoc3RydWN0IGZpbGUgKiwgbG9mZl90ICosCiAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqLCBz aXplX3QsIHVuc2lnbmVkIGludCk7CmV4dGVybiBzc2l6ZV90IGl0ZXJfZmlsZV9zcGxpY2Vfd3Jp dGUoc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqLAogIHN0cnVjdCBmaWxlICosIGxvZmZfdCAqLCBz aXplX3QsIHVuc2lnbmVkIGludCk7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfc3BsaWNlX3NlbmRw YWdlKHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsCiAgc3RydWN0IGZpbGUgKm91dCwgbG9m Zl90ICosIHNpemVfdCBsZW4sIHVuc2lnbmVkIGludCBmbGFncyk7CmV4dGVybiBsb25nIGRvX3Nw bGljZV9kaXJlY3Qoc3RydWN0IGZpbGUgKmluLCBsb2ZmX3QgKnBwb3MsIHN0cnVjdCBmaWxlICpv dXQsCiAgbG9mZl90ICpvcG9zLCBzaXplX3QgbGVuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwoKCmV4 dGVybiB2b2lkCmZpbGVfcmFfc3RhdGVfaW5pdChzdHJ1Y3QgZmlsZV9yYV9zdGF0ZSAqcmEsIHN0 cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKTsKZXh0ZXJuIGxvZmZfdCBub29wX2xsc2Vlayhz dHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSk7CmV4dGVybiBsb2Zm X3Qgbm9fbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNl KTsKZXh0ZXJuIGxvZmZfdCB2ZnNfc2V0cG9zKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zm c2V0LCBsb2ZmX3QgbWF4c2l6ZSk7CmV4dGVybiBsb2ZmX3QgZ2VuZXJpY19maWxlX2xsc2Vlayhz dHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSk7CmV4dGVybiBsb2Zm X3QgZ2VuZXJpY19maWxlX2xsc2Vla19zaXplKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zm c2V0LAogIGludCB3aGVuY2UsIGxvZmZfdCBtYXhzaXplLCBsb2ZmX3QgZW9mKTsKZXh0ZXJuIGxv ZmZfdCBmaXhlZF9zaXplX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwK ICBpbnQgd2hlbmNlLCBsb2ZmX3Qgc2l6ZSk7CmV4dGVybiBsb2ZmX3Qgbm9fc2Vla19lbmRfbGxz ZWVrX3NpemUoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQsIGxvZmZfdCk7CmV4dGVybiBsb2Zm X3Qgbm9fc2Vla19lbmRfbGxzZWVrKHN0cnVjdCBmaWxlICosIGxvZmZfdCwgaW50KTsKZXh0ZXJu IGludCBnZW5lcmljX2ZpbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUg KiBmaWxwKTsKZXh0ZXJuIGludCBub25zZWVrYWJsZV9vcGVuKHN0cnVjdCBpbm9kZSAqIGlub2Rl LCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwpleHRlcm4gaW50IHN0cmVhbV9vcGVuKHN0cnVjdCBpbm9k ZSAqIGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwoKCnR5cGVkZWYgdm9pZCAoZGlvX3N1Ym1p dF90KShzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAgICAgICBsb2ZmX3Qg ZmlsZV9vZmZzZXQpOwoKZW51bSB7CgogRElPX0xPQ0tJTkcgPSAweDAxLAoKCiBESU9fU0tJUF9I T0xFUyA9IDB4MDIsCn07Cgp2b2lkIGRpb19lbmRfaW8oc3RydWN0IGJpbyAqYmlvKTsKCnNzaXpl X3QgX19ibG9ja2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW5vZGUg Kmlub2RlLAogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHN0cnVjdCBpb3ZfaXRl ciAqaXRlciwKICAgICAgICBnZXRfYmxvY2tfdCBnZXRfYmxvY2ssCiAgICAgICAgZGlvX2lvZG9u ZV90IGVuZF9pbywgZGlvX3N1Ym1pdF90IHN1Ym1pdF9pbywKICAgICAgICBpbnQgZmxhZ3MpOwoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3NpemVfdCBibG9ja2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLAogICAgICBzdHJ1 Y3QgaW5vZGUgKmlub2RlLAogICAgICBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsCiAgICAgIGdldF9i bG9ja190IGdldF9ibG9jaykKewogcmV0dXJuIF9fYmxvY2tkZXZfZGlyZWN0X0lPKGlvY2IsIGlu b2RlLCBpbm9kZS0+aV9zYi0+c19iZGV2LCBpdGVyLAogICBnZXRfYmxvY2ssICgodm9pZCAqKTAp LCAoKHZvaWQgKikwKSwgRElPX0xPQ0tJTkcgfCBESU9fU0tJUF9IT0xFUyk7Cn0KCgp2b2lkIGlu b2RlX2Rpb193YWl0KHN0cnVjdCBpbm9kZSAqaW5vZGUpOwojIDMyMDggIi4vaW5jbHVkZS9saW51 eC9mcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGlub2RlX2Rpb19iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiBhdG9t aWNfaW5jKCZpbm9kZS0+aV9kaW9fY291bnQpOwp9CiMgMzIyMCAiLi9pbmNsdWRlL2xpbnV4L2Zz LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgaW5vZGVfZGlvX2VuZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiBpZiAoYXRvbWlj X2RlY19hbmRfdGVzdCgmaW5vZGUtPmlfZGlvX2NvdW50KSkKICB3YWtlX3VwX2JpdCgmaW5vZGUt Pmlfc3RhdGUsIDkpOwp9CgoKCgp2b2lkIGRpb193YXJuX3N0YWxlX3BhZ2VjYWNoZShzdHJ1Y3Qg ZmlsZSAqZmlscCk7CgpleHRlcm4gdm9pZCBpbm9kZV9zZXRfZmxhZ3Moc3RydWN0IGlub2RlICpp bm9kZSwgdW5zaWduZWQgaW50IGZsYWdzLAogICAgICAgdW5zaWduZWQgaW50IG1hc2spOwoKZXh0 ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZ2VuZXJpY19yb19mb3BzOwoKCgpleHRl cm4gaW50IHJlYWRsaW5rX2NvcHkoY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBp bnQgcGFnZV9yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50KTsKZXh0ZXJuIGNv bnN0IGNoYXIgKnBhZ2VfZ2V0X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwK ICAgICBzdHJ1Y3QgZGVsYXllZF9jYWxsICopOwpleHRlcm4gdm9pZCBwYWdlX3B1dF9saW5rKHZv aWQgKik7CmV4dGVybiBpbnQgX19wYWdlX3N5bWxpbmsoc3RydWN0IGlub2RlICppbm9kZSwgY29u c3QgY2hhciAqc3ltbmFtZSwgaW50IGxlbiwKICBpbnQgbm9mcyk7CmV4dGVybiBpbnQgcGFnZV9z eW1saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKnN5bW5hbWUsIGludCBsZW4p OwpleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcGFnZV9zeW1saW5rX2lub2Rl X29wZXJhdGlvbnM7CmV4dGVybiB2b2lkIGtmcmVlX2xpbmsodm9pZCAqKTsKZXh0ZXJuIHZvaWQg Z2VuZXJpY19maWxsYXR0cihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGtzdGF0ICopOwpleHRlcm4g aW50IHZmc19nZXRhdHRyX25vc2VjKGNvbnN0IHN0cnVjdCBwYXRoICosIHN0cnVjdCBrc3RhdCAq LCB1MzIsIHVuc2lnbmVkIGludCk7CmV4dGVybiBpbnQgdmZzX2dldGF0dHIoY29uc3Qgc3RydWN0 IHBhdGggKiwgc3RydWN0IGtzdGF0ICosIHUzMiwgdW5zaWduZWQgaW50KTsKdm9pZCBfX2lub2Rl X2FkZF9ieXRlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgYnl0ZXMpOwp2b2lkIGlub2Rl X2FkZF9ieXRlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgYnl0ZXMpOwp2b2lkIF9faW5v ZGVfc3ViX2J5dGVzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBieXRlcyk7CnZvaWQgaW5v ZGVfc3ViX2J5dGVzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBieXRlcyk7CnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvZmZfdCBf X2lub2RlX2dldF9ieXRlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiByZXR1cm4gKCgobG9mZl90 KWlub2RlLT5pX2Jsb2NrcykgPDwgOSkgKyBpbm9kZS0+aV9ieXRlczsKfQpsb2ZmX3QgaW5vZGVf Z2V0X2J5dGVzKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwp2b2lkIGlub2RlX3NldF9ieXRlcyhzdHJ1 Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgYnl0ZXMpOwpjb25zdCBjaGFyICpzaW1wbGVfZ2V0X2xp bmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwKICAgICAgIHN0cnVjdCBkZWxheWVk X2NhbGwgKik7CmV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBzaW1wbGVfc3lt bGlua19pbm9kZV9vcGVyYXRpb25zOwoKZXh0ZXJuIGludCBpdGVyYXRlX2RpcihzdHJ1Y3QgZmls ZSAqLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKik7CgpleHRlcm4gaW50IHZmc19zdGF0eChpbnQsIGNv bnN0IGNoYXIgKiwgaW50LCBzdHJ1Y3Qga3N0YXQgKiwgdTMyKTsKZXh0ZXJuIGludCB2ZnNfc3Rh dHhfZmQodW5zaWduZWQgaW50LCBzdHJ1Y3Qga3N0YXQgKiwgdTMyLCB1bnNpZ25lZCBpbnQpOwoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IHZmc19zdGF0KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3Qga3N0YXQgKnN0YXQpCnsK IHJldHVybiB2ZnNfc3RhdHgoLTEwMCwgZmlsZW5hbWUsIDB4ODAwLAogICAgc3RhdCwgMHgwMDAw MDdmZlUpOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGludCB2ZnNfbHN0YXQoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGtzdGF0ICpz dGF0KQp7CiByZXR1cm4gdmZzX3N0YXR4KC0xMDAsIG5hbWUsIDB4MTAwIHwgMHg4MDAsCiAgICBz dGF0LCAweDAwMDAwN2ZmVSk7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHZmc19mc3RhdGF0KGludCBkZmQsIGNvbnN0IGNoYXIg KmZpbGVuYW1lLAogICAgICAgICBzdHJ1Y3Qga3N0YXQgKnN0YXQsIGludCBmbGFncykKewogcmV0 dXJuIHZmc19zdGF0eChkZmQsIGZpbGVuYW1lLCBmbGFncyB8IDB4ODAwLAogICAgc3RhdCwgMHgw MDAwMDdmZlUpOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCB2ZnNfZnN0YXQoaW50IGZkLCBzdHJ1Y3Qga3N0YXQgKnN0YXQpCnsK IHJldHVybiB2ZnNfc3RhdHhfZmQoZmQsIHN0YXQsIDB4MDAwMDA3ZmZVLCAwKTsKfQoKCmV4dGVy biBjb25zdCBjaGFyICp2ZnNfZ2V0X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVsYXll ZF9jYWxsICopOwpleHRlcm4gaW50IHZmc19yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICosIGNoYXIg KiwgaW50KTsKCmV4dGVybiBpbnQgX19nZW5lcmljX2Jsb2NrX2ZpZW1hcChzdHJ1Y3QgaW5vZGUg Kmlub2RlLAogICAgICBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvICpmaWVpbmZvLAogICAgICBs b2ZmX3Qgc3RhcnQsIGxvZmZfdCBsZW4sCiAgICAgIGdldF9ibG9ja190ICpnZXRfYmxvY2spOwpl eHRlcm4gaW50IGdlbmVyaWNfYmxvY2tfZmllbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAgICBz dHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvICpmaWVpbmZvLCB1NjQgc3RhcnQsCiAgICB1NjQgbGVu LCBnZXRfYmxvY2tfdCAqZ2V0X2Jsb2NrKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlw ZSAqZ2V0X2ZpbGVzeXN0ZW0oc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzKTsKZXh0ZXJuIHZv aWQgcHV0X2ZpbGVzeXN0ZW0oc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzKTsKZXh0ZXJuIHN0 cnVjdCBmaWxlX3N5c3RlbV90eXBlICpnZXRfZnNfdHlwZShjb25zdCBjaGFyICpuYW1lKTsKZXh0 ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3N1cGVyKHN0cnVjdCBibG9ja19kZXZpY2UgKik7 CmV4dGVybiBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmdldF9zdXBlcl90aGF3ZWQoc3RydWN0IGJsb2Nr X2RldmljZSAqKTsKZXh0ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3N1cGVyX2V4Y2x1c2l2 ZV90aGF3ZWQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldik7CmV4dGVybiBzdHJ1Y3Qgc3VwZXJf YmxvY2sgKmdldF9hY3RpdmVfc3VwZXIoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldik7CmV4dGVy biB2b2lkIGRyb3Bfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiB2b2lkIGRy b3Bfc3VwZXJfZXhjbHVzaXZlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpleHRlcm4gdm9pZCBp dGVyYXRlX3N1cGVycyh2b2lkICgqKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdm9pZCAqKSwgdm9p ZCAqKTsKZXh0ZXJuIHZvaWQgaXRlcmF0ZV9zdXBlcnNfdHlwZShzdHJ1Y3QgZmlsZV9zeXN0ZW1f dHlwZSAqLAogICAgICAgICAgIHZvaWQgKCopKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2b2lkICop LCB2b2lkICopOwoKZXh0ZXJuIGludCBkY2FjaGVfZGlyX29wZW4oc3RydWN0IGlub2RlICosIHN0 cnVjdCBmaWxlICopOwpleHRlcm4gaW50IGRjYWNoZV9kaXJfY2xvc2Uoc3RydWN0IGlub2RlICos IHN0cnVjdCBmaWxlICopOwpleHRlcm4gbG9mZl90IGRjYWNoZV9kaXJfbHNlZWsoc3RydWN0IGZp bGUgKiwgbG9mZl90LCBpbnQpOwpleHRlcm4gaW50IGRjYWNoZV9yZWFkZGlyKHN0cnVjdCBmaWxl ICosIHN0cnVjdCBkaXJfY29udGV4dCAqKTsKZXh0ZXJuIGludCBzaW1wbGVfc2V0YXR0cihzdHJ1 Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKZXh0ZXJuIGludCBzaW1wbGVfZ2V0YXR0cihj b25zdCBzdHJ1Y3QgcGF0aCAqLCBzdHJ1Y3Qga3N0YXQgKiwgdTMyLCB1bnNpZ25lZCBpbnQpOwpl eHRlcm4gaW50IHNpbXBsZV9zdGF0ZnMoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qga3N0YXRmcyAq KTsKZXh0ZXJuIGludCBzaW1wbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmls ZSAqZmlsZSk7CmV4dGVybiBpbnQgc2ltcGxlX2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg aW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCBzaW1wbGVfdW5saW5rKHN0cnVj dCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IHNpbXBsZV9ybWRpcihzdHJ1 Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCBzaW1wbGVfcmVuYW1lKHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosCiAgICBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0 IGRlbnRyeSAqLCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBzaW1wbGVfcmVjdXJzaXZlX3Jl bW92YWwoc3RydWN0IGRlbnRyeSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk ICgqY2FsbGJhY2spKHN0cnVjdCBkZW50cnkgKikpOwpleHRlcm4gaW50IG5vb3BfZnN5bmMoc3Ry dWN0IGZpbGUgKiwgbG9mZl90LCBsb2ZmX3QsIGludCk7CmV4dGVybiBpbnQgbm9vcF9zZXRfcGFn ZV9kaXJ0eShzdHJ1Y3QgcGFnZSAqcGFnZSk7CmV4dGVybiB2b2lkIG5vb3BfaW52YWxpZGF0ZXBh Z2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvZmZzZXQsCiAgdW5zaWduZWQgaW50 IGxlbmd0aCk7CmV4dGVybiBzc2l6ZV90IG5vb3BfZGlyZWN0X0lPKHN0cnVjdCBraW9jYiAqaW9j Yiwgc3RydWN0IGlvdl9pdGVyICppdGVyKTsKZXh0ZXJuIGludCBzaW1wbGVfZW1wdHkoc3RydWN0 IGRlbnRyeSAqKTsKZXh0ZXJuIGludCBzaW1wbGVfcmVhZHBhZ2Uoc3RydWN0IGZpbGUgKmZpbGUs IHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJuIGludCBzaW1wbGVfd3JpdGVfYmVnaW4oc3RydWN0 IGZpbGUgKmZpbGUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogICBsb2ZmX3QgcG9z LCB1bnNpZ25lZCBsZW4sIHVuc2lnbmVkIGZsYWdzLAogICBzdHJ1Y3QgcGFnZSAqKnBhZ2VwLCB2 b2lkICoqZnNkYXRhKTsKZXh0ZXJuIGludCBzaW1wbGVfd3JpdGVfZW5kKHN0cnVjdCBmaWxlICpm aWxlLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKICAgbG9mZl90IHBvcywgdW5zaWdu ZWQgbGVuLCB1bnNpZ25lZCBjb3BpZWQsCiAgIHN0cnVjdCBwYWdlICpwYWdlLCB2b2lkICpmc2Rh dGEpOwpleHRlcm4gaW50IGFsd2F5c19kZWxldGVfZGVudHJ5KGNvbnN0IHN0cnVjdCBkZW50cnkg Kik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKmFsbG9jX2Fub25faW5vZGUoc3RydWN0IHN1cGVyX2Js b2NrICopOwpleHRlcm4gaW50IHNpbXBsZV9ub3NldGxlYXNlKHN0cnVjdCBmaWxlICosIGxvbmcs IHN0cnVjdCBmaWxlX2xvY2sgKiosIHZvaWQgKiopOwpleHRlcm4gY29uc3Qgc3RydWN0IGRlbnRy eV9vcGVyYXRpb25zIHNpbXBsZV9kZW50cnlfb3BlcmF0aW9uczsKCmV4dGVybiBzdHJ1Y3QgZGVu dHJ5ICpzaW1wbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHVuc2ln bmVkIGludCBmbGFncyk7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcmVhZF9kaXIoc3RydWN0IGZp bGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxl X29wZXJhdGlvbnMgc2ltcGxlX2Rpcl9vcGVyYXRpb25zOwpleHRlcm4gY29uc3Qgc3RydWN0IGlu b2RlX29wZXJhdGlvbnMgc2ltcGxlX2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gdm9pZCBt YWtlX2VtcHR5X2Rpcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIGJvb2wgaXNf ZW1wdHlfZGlyX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpzdHJ1Y3QgdHJlZV9kZXNjciB7 IGNvbnN0IGNoYXIgKm5hbWU7IGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKm9wczsgaW50 IG1vZGU7IH07CnN0cnVjdCBkZW50cnkgKmRfYWxsb2NfbmFtZShzdHJ1Y3QgZGVudHJ5ICosIGNv bnN0IGNoYXIgKik7CmV4dGVybiBpbnQgc2ltcGxlX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Js b2NrICosIHVuc2lnbmVkIGxvbmcsCiAgICAgICAgY29uc3Qgc3RydWN0IHRyZWVfZGVzY3IgKik7 CmV4dGVybiBpbnQgc2ltcGxlX3Bpbl9mcyhzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqLCBzdHJ1 Y3QgdmZzbW91bnQgKiptb3VudCwgaW50ICpjb3VudCk7CmV4dGVybiB2b2lkIHNpbXBsZV9yZWxl YXNlX2ZzKHN0cnVjdCB2ZnNtb3VudCAqKm1vdW50LCBpbnQgKmNvdW50KTsKCmV4dGVybiBzc2l6 ZV90IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHZvaWQgKnRvLCBzaXplX3QgY291bnQsCiAgIGxv ZmZfdCAqcHBvcywgY29uc3Qgdm9pZCAqZnJvbSwgc2l6ZV90IGF2YWlsYWJsZSk7CmV4dGVybiBz c2l6ZV90IHNpbXBsZV93cml0ZV90b19idWZmZXIodm9pZCAqdG8sIHNpemVfdCBhdmFpbGFibGUs IGxvZmZfdCAqcHBvcywKICBjb25zdCB2b2lkICpmcm9tLCBzaXplX3QgY291bnQpOwoKZXh0ZXJu IGludCBfX2dlbmVyaWNfZmlsZV9mc3luYyhzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwg aW50KTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfZnN5bmMoc3RydWN0IGZpbGUgKiwgbG9mZl90 LCBsb2ZmX3QsIGludCk7CgpleHRlcm4gaW50IGdlbmVyaWNfY2hlY2tfYWRkcmVzc2FibGUodW5z aWduZWQsIHU2NCk7CgoKZXh0ZXJuIGludCBidWZmZXJfbWlncmF0ZV9wYWdlKHN0cnVjdCBhZGRy ZXNzX3NwYWNlICosCiAgICBzdHJ1Y3QgcGFnZSAqLCBzdHJ1Y3QgcGFnZSAqLAogICAgZW51bSBt aWdyYXRlX21vZGUpOwpleHRlcm4gaW50IGJ1ZmZlcl9taWdyYXRlX3BhZ2Vfbm9yZWZzKHN0cnVj dCBhZGRyZXNzX3NwYWNlICosCiAgICBzdHJ1Y3QgcGFnZSAqLCBzdHJ1Y3QgcGFnZSAqLAogICAg ZW51bSBtaWdyYXRlX21vZGUpOwoKCgoKCmV4dGVybiBpbnQgc2V0YXR0cl9wcmVwYXJlKHN0cnVj dCBkZW50cnkgKiwgc3RydWN0IGlhdHRyICopOwpleHRlcm4gaW50IGlub2RlX25ld3NpemVfb2so Y29uc3Qgc3RydWN0IGlub2RlICosIGxvZmZfdCBvZmZzZXQpOwpleHRlcm4gdm9pZCBzZXRhdHRy X2NvcHkoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgc3RydWN0IGlhdHRyICphdHRyKTsKCmV4 dGVybiBpbnQgZmlsZV91cGRhdGVfdGltZShzdHJ1Y3QgZmlsZSAqZmlsZSk7CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGlvX2lz X2RpcmVjdChzdHJ1Y3QgZmlsZSAqZmlscCkKewogcmV0dXJuIChmaWxwLT5mX2ZsYWdzICYgMDAw NDAwMDApIHx8ICgoZmlscC0+Zl9tYXBwaW5nLT5ob3N0KS0+aV9mbGFncyAmIDgxOTIpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIHZtYV9pc19kYXgoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCnsKIHJldHVybiB2bWEt PnZtX2ZpbGUgJiYgKCh2bWEtPnZtX2ZpbGUtPmZfbWFwcGluZy0+aG9zdCktPmlfZmxhZ3MgJiA4 MTkyKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCB2bWFfaXNfZnNkYXgoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCnsK IHN0cnVjdCBpbm9kZSAqaW5vZGU7CgogaWYgKCF2bWEtPnZtX2ZpbGUpCiAgcmV0dXJuIGZhbHNl OwogaWYgKCF2bWFfaXNfZGF4KHZtYSkpCiAgcmV0dXJuIGZhbHNlOwogaW5vZGUgPSBmaWxlX2lu b2RlKHZtYS0+dm1fZmlsZSk7CiBpZiAoKCgoaW5vZGUtPmlfbW9kZSkgJiAwMDE3MDAwMCkgPT0g MDAyMDAwMCkpCiAgcmV0dXJuIGZhbHNlOwogcmV0dXJuIHRydWU7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBpb2NiX2ZsYWdz KHN0cnVjdCBmaWxlICpmaWxlKQp7CiBpbnQgcmVzID0gMDsKIGlmIChmaWxlLT5mX2ZsYWdzICYg MDAwMDIwMDApCiAgcmVzIHw9ICgxIDw8IDEpOwogaWYgKGlvX2lzX2RpcmVjdChmaWxlKSkKICBy ZXMgfD0gKDEgPDwgMik7CiBpZiAoKGZpbGUtPmZfZmxhZ3MgJiAwMDAxMDAwMCkgfHwgKCgoZmls ZS0+Zl9tYXBwaW5nLT5ob3N0KS0+aV9zYi0+c19mbGFncyAmICgxNikpIHx8ICgoZmlsZS0+Zl9t YXBwaW5nLT5ob3N0KS0+aV9mbGFncyAmIDEpKSkKICByZXMgfD0gKDEgPDwgNCk7CiBpZiAoZmls ZS0+Zl9mbGFncyAmIDA0MDAwMDAwKQogIHJlcyB8PSAoMSA8PCA1KTsKIHJldHVybiByZXM7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBraW9jYl9zZXRfcndfZmxhZ3Moc3RydWN0IGtpb2NiICpraSwgcndmX3QgZmxhZ3MpCnsK IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGZsYWdzICYgfigoKCBfX2tlcm5lbF9yd2ZfdCkweDAw MDAwMDAxKSB8ICgoIF9fa2VybmVsX3J3Zl90KTB4MDAwMDAwMDIpIHwgKCggX19rZXJuZWxfcndm X3QpMHgwMDAwMDAwNCkgfCAoKCBfX2tlcm5lbF9yd2ZfdCkweDAwMDAwMDA4KSB8ICgoIF9fa2Vy bmVsX3J3Zl90KTB4MDAwMDAwMTApKSksIDApKQogIHJldHVybiAtOTU7CgogaWYgKGZsYWdzICYg KCggX19rZXJuZWxfcndmX3QpMHgwMDAwMDAwOCkpIHsKICBpZiAoIShraS0+a2lfZmlscC0+Zl9t b2RlICYgKCggZm1vZGVfdCkweDgwMDAwMDApKSkKICAgcmV0dXJuIC05NTsKICBraS0+a2lfZmxh Z3MgfD0gKDEgPDwgNyk7CiB9CiBpZiAoZmxhZ3MgJiAoKCBfX2tlcm5lbF9yd2ZfdCkweDAwMDAw MDAxKSkKICBraS0+a2lfZmxhZ3MgfD0gKDEgPDwgMyk7CiBpZiAoZmxhZ3MgJiAoKCBfX2tlcm5l bF9yd2ZfdCkweDAwMDAwMDAyKSkKICBraS0+a2lfZmxhZ3MgfD0gKDEgPDwgNCk7CiBpZiAoZmxh Z3MgJiAoKCBfX2tlcm5lbF9yd2ZfdCkweDAwMDAwMDA0KSkKICBraS0+a2lfZmxhZ3MgfD0gKCgx IDw8IDQpIHwgKDEgPDwgNSkpOwogaWYgKGZsYWdzICYgKCggX19rZXJuZWxfcndmX3QpMHgwMDAw MDAxMCkpCiAga2ktPmtpX2ZsYWdzIHw9ICgxIDw8IDEpOwogcmV0dXJuIDA7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlub190IHBh cmVudF9pbm8oc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiBpbm9fdCByZXM7CgoKCgoKIHNwaW5f bG9jaygmZGVudHJ5LT5kX2xvY2tyZWYubG9jayk7CiByZXMgPSBkZW50cnktPmRfcGFyZW50LT5k X2lub2RlLT5pX2lubzsKIHNwaW5fdW5sb2NrKCZkZW50cnktPmRfbG9ja3JlZi5sb2NrKTsKIHJl dHVybiByZXM7Cn0KCgoKCgoKCnN0cnVjdCBzaW1wbGVfdHJhbnNhY3Rpb25fYXJncmVzcCB7CiBz c2l6ZV90IHNpemU7CiBjaGFyIGRhdGFbMF07Cn07CgoKCmNoYXIgKnNpbXBsZV90cmFuc2FjdGlv bl9nZXQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKmJ1ZiwKICAgIHNpemVfdCBzaXpl KTsKc3NpemVfdCBzaW1wbGVfdHJhbnNhY3Rpb25fcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hh ciAqYnVmLAogICAgc2l6ZV90IHNpemUsIGxvZmZfdCAqcG9zKTsKaW50IHNpbXBsZV90cmFuc2Fj dGlvbl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKTsKCnZv aWQgc2ltcGxlX3RyYW5zYWN0aW9uX3NldChzdHJ1Y3QgZmlsZSAqZmlsZSwgc2l6ZV90IG4pOwoj IDM1MTUgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHBy aW50ZiwgMSwgMikpKQp2b2lkIF9fc2ltcGxlX2F0dHJfY2hlY2tfZm9ybWF0KGNvbnN0IGNoYXIg KmZtdCwgLi4uKQp7Cgp9CgppbnQgc2ltcGxlX2F0dHJfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2Rl LCBzdHJ1Y3QgZmlsZSAqZmlsZSwKICAgICAgIGludCAoKmdldCkodm9pZCAqLCB1NjQgKiksIGlu dCAoKnNldCkodm9pZCAqLCB1NjQpLAogICAgICAgY29uc3QgY2hhciAqZm10KTsKaW50IHNpbXBs ZV9hdHRyX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpOwpz c2l6ZV90IHNpbXBsZV9hdHRyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgKmJ1ZiwKICAg IHNpemVfdCBsZW4sIGxvZmZfdCAqcHBvcyk7CnNzaXplX3Qgc2ltcGxlX2F0dHJfd3JpdGUoc3Ry dWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKmJ1ZiwKICAgICBzaXplX3QgbGVuLCBsb2ZmX3Qg KnBwb3MpOwoKc3RydWN0IGN0bF90YWJsZTsKaW50IHByb2NfbnJfZmlsZXMoc3RydWN0IGN0bF90 YWJsZSAqdGFibGUsIGludCB3cml0ZSwKICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLCBs b2ZmX3QgKnBwb3MpOwppbnQgcHJvY19ucl9kZW50cnkoc3RydWN0IGN0bF90YWJsZSAqdGFibGUs IGludCB3cml0ZSwKICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLCBsb2ZmX3QgKnBwb3Mp OwppbnQgcHJvY19ucl9pbm9kZXMoc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSwK ICAgICB2b2lkICpidWZmZXIsIHNpemVfdCAqbGVucCwgbG9mZl90ICpwcG9zKTsKaW50IF9fYXR0 cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2Nv bGRfXykpIGdldF9maWxlc3lzdGVtX2xpc3QoY2hhciAqYnVmKTsKIyAzNTQ2ICIuL2luY2x1ZGUv bGludXgvZnMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBpc19zeGlkKHVtb2RlX3QgbW9kZSkKewogcmV0dXJuIChtb2RlICYg MDAwNDAwMCkgfHwgKChtb2RlICYgMDAwMjAwMCkgJiYgKG1vZGUgJiAwMDAxMCkpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg Y2hlY2tfc3RpY2t5KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiBp ZiAoIShkaXItPmlfbW9kZSAmIDAwMDEwMDApKQogIHJldHVybiAwOwoKIHJldHVybiBfX2NoZWNr X3N0aWNreShkaXIsIGlub2RlKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV9oYXNfbm9feGF0dHIoc3RydWN0IGlu b2RlICppbm9kZSkKewogaWYgKCFpc19zeGlkKGlub2RlLT5pX21vZGUpICYmIChpbm9kZS0+aV9z Yi0+c19mbGFncyAmICgxPDwyOCkpKQogIGlub2RlLT5pX2ZsYWdzIHw9IDQwOTY7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg aXNfcm9vdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiByZXR1cm4gaW5vZGUgPT0gaW5v ZGUtPmlfc2ItPnNfcm9vdC0+ZF9pbm9kZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkaXJfZW1pdChzdHJ1Y3QgZGlyX2Nv bnRleHQgKmN0eCwKICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1lbGVuLAogICAgICAg dTY0IGlubywgdW5zaWduZWQgdHlwZSkKewogcmV0dXJuIGN0eC0+YWN0b3IoY3R4LCBuYW1lLCBu YW1lbGVuLCBjdHgtPnBvcywgaW5vLCB0eXBlKSA9PSAwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGlyX2VtaXRfZG90KHN0 cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCkKewogcmV0dXJuIGN0eC0+ YWN0b3IoY3R4LCAiLiIsIDEsIGN0eC0+cG9zLAogICAgIGZpbGUtPmZfcGF0aC5kZW50cnktPmRf aW5vZGUtPmlfaW5vLCA0KSA9PSAwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGlyX2VtaXRfZG90ZG90KHN0cnVjdCBmaWxl ICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCkKewogcmV0dXJuIGN0eC0+YWN0b3IoY3R4 LCAiLi4iLCAyLCBjdHgtPnBvcywKICAgICBwYXJlbnRfaW5vKGZpbGUtPmZfcGF0aC5kZW50cnkp LCA0KSA9PSAwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgZGlyX2VtaXRfZG90cyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0 IGRpcl9jb250ZXh0ICpjdHgpCnsKIGlmIChjdHgtPnBvcyA9PSAwKSB7CiAgaWYgKCFkaXJfZW1p dF9kb3QoZmlsZSwgY3R4KSkKICAgcmV0dXJuIGZhbHNlOwogIGN0eC0+cG9zID0gMTsKIH0KIGlm IChjdHgtPnBvcyA9PSAxKSB7CiAgaWYgKCFkaXJfZW1pdF9kb3Rkb3QoZmlsZSwgY3R4KSkKICAg cmV0dXJuIGZhbHNlOwogIGN0eC0+cG9zID0gMjsKIH0KIHJldHVybiB0cnVlOwp9CnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGly X3JlbGF4KHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIGlub2RlX3VubG9jayhpbm9kZSk7CiBpbm9k ZV9sb2NrKGlub2RlKTsKIHJldHVybiAhKChpbm9kZSktPmlfZmxhZ3MgJiAxNik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg ZGlyX3JlbGF4X3NoYXJlZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiBpbm9kZV91bmxvY2tfc2hh cmVkKGlub2RlKTsKIGlub2RlX2xvY2tfc2hhcmVkKGlub2RlKTsKIHJldHVybiAhKChpbm9kZSkt PmlfZmxhZ3MgJiAxNik7Cn0KCmV4dGVybiBib29sIHBhdGhfbm9leGVjKGNvbnN0IHN0cnVjdCBw YXRoICpwYXRoKTsKZXh0ZXJuIHZvaWQgaW5vZGVfbm9oaWdobWVtKHN0cnVjdCBpbm9kZSAqaW5v ZGUpOwoKCmV4dGVybiBpbnQgdmZzX2ZhZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBv ZmZzZXQsIGxvZmZfdCBsZW4sCiAgICAgICAgIGludCBhZHZpY2UpOwpleHRlcm4gaW50IGdlbmVy aWNfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwK ICAgICAgaW50IGFkdmljZSk7CgoKZXh0ZXJuIHN0cnVjdCBzb2NrICppb191cmluZ19nZXRfc29j a2V0KHN0cnVjdCBmaWxlICpmaWxlKTsKCgoKCgoKCmludCB2ZnNfaW9jX3NldGZsYWdzX3ByZXBh cmUoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgaW50IG9sZGZsYWdzLAogICAgICAgIHVu c2lnbmVkIGludCBmbGFncyk7CgppbnQgdmZzX2lvY19mc3NldHhhdHRyX2NoZWNrKHN0cnVjdCBp bm9kZSAqaW5vZGUsIGNvbnN0IHN0cnVjdCBmc3hhdHRyICpvbGRfZmEsCiAgICAgICAgc3RydWN0 IGZzeGF0dHIgKmZhKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgc2ltcGxlX2ZpbGxfZnN4YXR0cihzdHJ1Y3QgZnN4YXR0ciAq ZmEsIF9fdTMyIHhmbGFncykKewogbWVtc2V0KGZhLCAwLCBzaXplb2YoKmZhKSk7CiBmYS0+ZnN4 X3hmbGFncyA9IHhmbGFnczsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaW5vZGVfZHJhaW5fd3JpdGVzKHN0cnVjdCBp bm9kZSAqaW5vZGUpCnsKIGlub2RlX2Rpb193YWl0KGlub2RlKTsKIHJldHVybiBmaWxlbWFwX3dy aXRlX2FuZF93YWl0KGlub2RlLT5pX21hcHBpbmcpOwp9CiMgMTIgIi4vaW5jbHVkZS9saW51eC9z ZXFfZmlsZS5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIgMQojIDEzICIuL2luY2x1 ZGUvbGludXgvY3JlZC5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9rZXkuaCIgMQojIDE3ICIuL2lu Y2x1ZGUvbGludXgva2V5LmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3N5c2N0bC5oIiAxCiMgMzAg Ii4vaW5jbHVkZS9saW51eC9zeXNjdGwuaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zeXNj dGwuaCIgMQojIDM1ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zeXNjdGwuaCIKc3RydWN0IF9fc3lz Y3RsX2FyZ3MgewogaW50ICpuYW1lOwogaW50IG5sZW47CiB2b2lkICpvbGR2YWw7CiBzaXplX3Qg Km9sZGxlbnA7CiB2b2lkICpuZXd2YWw7CiBzaXplX3QgbmV3bGVuOwogdW5zaWduZWQgbG9uZyBf X3VudXNlZFs0XTsKfTsKCgoKCgplbnVtCnsKIENUTF9LRVJOPTEsCiBDVExfVk09MiwKIENUTF9O RVQ9MywKIENUTF9QUk9DPTQsCiBDVExfRlM9NSwKIENUTF9ERUJVRz02LAogQ1RMX0RFVj03LAog Q1RMX0JVUz04LAogQ1RMX0FCST05LAogQ1RMX0NQVT0xMCwKIENUTF9BUkxBTj0yNTQsCiBDVExf UzM5MERCRj01Njc3LAogQ1RMX1NVTlJQQz03MjQ5LAogQ1RMX1BNPTk4OTksCiBDVExfRlJWPTk4 OTgsCn07CgoKZW51bQp7CiBDVExfQlVTX0lTQT0xCn07CgoKZW51bQp7CiBJTk9USUZZX01BWF9V U0VSX0lOU1RBTkNFUz0xLAogSU5PVElGWV9NQVhfVVNFUl9XQVRDSEVTPTIsCiBJTk9USUZZX01B WF9RVUVVRURfRVZFTlRTPTMKfTsKCgplbnVtCnsKIEtFUk5fT1NUWVBFPTEsCiBLRVJOX09TUkVM RUFTRT0yLAogS0VSTl9PU1JFVj0zLAogS0VSTl9WRVJTSU9OPTQsCiBLRVJOX1NFQ1VSRU1BU0s9 NSwKIEtFUk5fUFJPRj02LAogS0VSTl9OT0RFTkFNRT03LAogS0VSTl9ET01BSU5OQU1FPTgsCgog S0VSTl9QQU5JQz0xNSwKIEtFUk5fUkVBTFJPT1RERVY9MTYsCgogS0VSTl9TUEFSQ19SRUJPT1Q9 MjEsCiBLRVJOX0NUTEFMVERFTD0yMiwKIEtFUk5fUFJJTlRLPTIzLAogS0VSTl9OQU1FVFJBTlM9 MjQsCiBLRVJOX1BQQ19IVEFCUkVDTEFJTT0yNSwKIEtFUk5fUFBDX1pFUk9QQUdFRD0yNiwKIEtF Uk5fUFBDX1BPV0VSU0FWRV9OQVA9MjcsCiBLRVJOX01PRFBST0JFPTI4LAogS0VSTl9TR19CSUdf QlVGRj0yOSwKIEtFUk5fQUNDVD0zMCwKIEtFUk5fUFBDX0wyQ1I9MzEsCgogS0VSTl9SVFNJR05S PTMyLAogS0VSTl9SVFNJR01BWD0zMywKCiBLRVJOX1NITU1BWD0zNCwKIEtFUk5fTVNHTUFYPTM1 LAogS0VSTl9NU0dNTkI9MzYsCiBLRVJOX01TR1BPT0w9MzcsCiBLRVJOX1NZU1JRPTM4LAogS0VS Tl9NQVhfVEhSRUFEUz0zOSwKICBLRVJOX1JBTkRPTT00MCwKICBLRVJOX1NITUFMTD00MSwKICBL RVJOX01TR01OST00MiwKICBLRVJOX1NFTT00MywKICBLRVJOX1NQQVJDX1NUT1BfQT00NCwKICBL RVJOX1NITU1OST00NSwKIEtFUk5fT1ZFUkZMT1dVSUQ9NDYsCiBLRVJOX09WRVJGTE9XR0lEPTQ3 LAogS0VSTl9TSE1QQVRIPTQ4LAogS0VSTl9IT1RQTFVHPTQ5LAogS0VSTl9JRUVFX0VNVUxBVElP Tl9XQVJOSU5HUz01MCwKIEtFUk5fUzM5MF9VU0VSX0RFQlVHX0xPR0dJTkc9NTEsCiBLRVJOX0NP UkVfVVNFU19QSUQ9NTIsCiBLRVJOX1RBSU5URUQ9NTMsCiBLRVJOX0NBRFBJRD01NCwKIEtFUk5f UElETUFYPTU1LAogICBLRVJOX0NPUkVfUEFUVEVSTj01NiwKIEtFUk5fUEFOSUNfT05fT09QUz01 NywKIEtFUk5fSFBQQV9QV1JTVz01OCwKIEtFUk5fSFBQQV9VTkFMSUdORUQ9NTksCiBLRVJOX1BS SU5US19SQVRFTElNSVQ9NjAsCiBLRVJOX1BSSU5US19SQVRFTElNSVRfQlVSU1Q9NjEsCiBLRVJO X1BUWT02MiwKIEtFUk5fTkdST1VQU19NQVg9NjMsCiBLRVJOX1NQQVJDX1NDT05TX1BXUk9GRj02 NCwKIEtFUk5fSFpfVElNRVI9NjUsCiBLRVJOX1VOS05PV05fTk1JX1BBTklDPTY2LAogS0VSTl9C T09UTE9BREVSX1RZUEU9NjcsCiBLRVJOX1JBTkRPTUlaRT02OCwKIEtFUk5fU0VUVUlEX0RVTVBB QkxFPTY5LAogS0VSTl9TUElOX1JFVFJZPTcwLAogS0VSTl9BQ1BJX1ZJREVPX0ZMQUdTPTcxLAog S0VSTl9JQTY0X1VOQUxJR05FRD03MiwKIEtFUk5fQ09NUEFUX0xPRz03MywKIEtFUk5fTUFYX0xP Q0tfREVQVEg9NzQsCiBLRVJOX05NSV9XQVRDSERPRz03NSwKIEtFUk5fUEFOSUNfT05fTk1JPTc2 LAogS0VSTl9QQU5JQ19PTl9XQVJOPTc3LAogS0VSTl9QQU5JQ19QUklOVD03OCwKfTsKCgoKCmVu dW0KewogVk1fVU5VU0VEMT0xLAogVk1fVU5VU0VEMj0yLAogVk1fVU5VU0VEMz0zLAogVk1fVU5V U0VEND00LAogVk1fT1ZFUkNPTU1JVF9NRU1PUlk9NSwKIFZNX1VOVVNFRDU9NiwKIFZNX1VOVVNF RDc9NywKIFZNX1VOVVNFRDg9OCwKIFZNX1VOVVNFRDk9OSwKIFZNX1BBR0VfQ0xVU1RFUj0xMCwK IFZNX0RJUlRZX0JBQ0tHUk9VTkQ9MTEsCiBWTV9ESVJUWV9SQVRJTz0xMiwKIFZNX0RJUlRZX1dC X0NTPTEzLAogVk1fRElSVFlfRVhQSVJFX0NTPTE0LAogVk1fTlJfUERGTFVTSF9USFJFQURTPTE1 LAogVk1fT1ZFUkNPTU1JVF9SQVRJTz0xNiwKIFZNX1BBR0VCVUY9MTcsCiBWTV9IVUdFVExCX1BB R0VTPTE4LAogVk1fU1dBUFBJTkVTUz0xOSwKIFZNX0xPV01FTV9SRVNFUlZFX1JBVElPPTIwLAog Vk1fTUlOX0ZSRUVfS0JZVEVTPTIxLAogVk1fTUFYX01BUF9DT1VOVD0yMiwKIFZNX0xBUFRPUF9N T0RFPTIzLAogVk1fQkxPQ0tfRFVNUD0yNCwKIFZNX0hVR0VUTEJfR1JPVVA9MjUsCiBWTV9WRlNf Q0FDSEVfUFJFU1NVUkU9MjYsCiBWTV9MRUdBQ1lfVkFfTEFZT1VUPTI3LAogVk1fU1dBUF9UT0tF Tl9USU1FT1VUPTI4LAogVk1fRFJPUF9QQUdFQ0FDSEU9MjksCiBWTV9QRVJDUFVfUEFHRUxJU1Rf RlJBQ1RJT049MzAsCiBWTV9aT05FX1JFQ0xBSU1fTU9ERT0zMSwKIFZNX01JTl9VTk1BUFBFRD0z MiwKIFZNX1BBTklDX09OX09PTT0zMywKIFZNX1ZEU09fRU5BQkxFRD0zNCwKIFZNX01JTl9TTEFC PTM1LAp9OwoKCgplbnVtCnsKIE5FVF9DT1JFPTEsCiBORVRfRVRIRVI9MiwKIE5FVF84MDI9MywK IE5FVF9VTklYPTQsCiBORVRfSVBWND01LAogTkVUX0lQWD02LAogTkVUX0FUQUxLPTcsCiBORVRf TkVUUk9NPTgsCiBORVRfQVgyNT05LAogTkVUX0JSSURHRT0xMCwKIE5FVF9ST1NFPTExLAogTkVU X0lQVjY9MTIsCiBORVRfWDI1PTEzLAogTkVUX1RSPTE0LAogTkVUX0RFQ05FVD0xNSwKIE5FVF9F Q09ORVQ9MTYsCiBORVRfU0NUUD0xNywKIE5FVF9MTEM9MTgsCiBORVRfTkVURklMVEVSPTE5LAog TkVUX0RDQ1A9MjAsCiBORVRfSVJEQT00MTIsCn07CgoKZW51bQp7CiBSQU5ET01fUE9PTFNJWkU9 MSwKIFJBTkRPTV9FTlRST1BZX0NPVU5UPTIsCiBSQU5ET01fUkVBRF9USFJFU0g9MywKIFJBTkRP TV9XUklURV9USFJFU0g9NCwKIFJBTkRPTV9CT09UX0lEPTUsCiBSQU5ET01fVVVJRD02Cn07CgoK ZW51bQp7CiBQVFlfTUFYPTEsCiBQVFlfTlI9Mgp9OwoKCmVudW0KewogQlVTX0lTQV9NRU1fQkFT RT0xLAogQlVTX0lTQV9QT1JUX0JBU0U9MiwKIEJVU19JU0FfUE9SVF9TSElGVD0zCn07CgoKZW51 bQp7CiBORVRfQ09SRV9XTUVNX01BWD0xLAogTkVUX0NPUkVfUk1FTV9NQVg9MiwKIE5FVF9DT1JF X1dNRU1fREVGQVVMVD0zLAogTkVUX0NPUkVfUk1FTV9ERUZBVUxUPTQsCgogTkVUX0NPUkVfTUFY X0JBQ0tMT0c9NiwKIE5FVF9DT1JFX0ZBU1RST1VURT03LAogTkVUX0NPUkVfTVNHX0NPU1Q9OCwK IE5FVF9DT1JFX01TR19CVVJTVD05LAogTkVUX0NPUkVfT1BUTUVNX01BWD0xMCwKIE5FVF9DT1JF X0hPVF9MSVNUX0xFTkdUSD0xMSwKIE5FVF9DT1JFX0RJVkVSVF9WRVJTSU9OPTEyLAogTkVUX0NP UkVfTk9fQ09OR19USFJFU0g9MTMsCiBORVRfQ09SRV9OT19DT05HPTE0LAogTkVUX0NPUkVfTE9f Q09ORz0xNSwKIE5FVF9DT1JFX01PRF9DT05HPTE2LAogTkVUX0NPUkVfREVWX1dFSUdIVD0xNywK IE5FVF9DT1JFX1NPTUFYQ09OTj0xOCwKIE5FVF9DT1JFX0JVREdFVD0xOSwKIE5FVF9DT1JFX0FF VkVOVF9FVElNRT0yMCwKIE5FVF9DT1JFX0FFVkVOVF9SU0VRVEg9MjEsCiBORVRfQ09SRV9XQVJO SU5HUz0yMiwKfTsKCgoKCgoKCmVudW0KewogTkVUX1VOSVhfREVTVFJPWV9ERUxBWT0xLAogTkVU X1VOSVhfREVMRVRFX0RFTEFZPTIsCiBORVRfVU5JWF9NQVhfREdSQU1fUUxFTj0zLAp9OwoKCmVu dW0KewogTkVUX05GX0NPTk5UUkFDS19NQVg9MSwKIE5FVF9ORl9DT05OVFJBQ0tfVENQX1RJTUVP VVRfU1lOX1NFTlQ9MiwKIE5FVF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfU1lOX1JFQ1Y9MywK IE5FVF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfRVNUQUJMSVNIRUQ9NCwKIE5FVF9ORl9DT05O VFJBQ0tfVENQX1RJTUVPVVRfRklOX1dBSVQ9NSwKIE5FVF9ORl9DT05OVFJBQ0tfVENQX1RJTUVP VVRfQ0xPU0VfV0FJVD02LAogTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9VVF9MQVNUX0FDSz03 LAogTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9VVF9USU1FX1dBSVQ9OCwKIE5FVF9ORl9DT05O VFJBQ0tfVENQX1RJTUVPVVRfQ0xPU0U9OSwKIE5FVF9ORl9DT05OVFJBQ0tfVURQX1RJTUVPVVQ9 MTAsCiBORVRfTkZfQ09OTlRSQUNLX1VEUF9USU1FT1VUX1NUUkVBTT0xMSwKIE5FVF9ORl9DT05O VFJBQ0tfSUNNUF9USU1FT1VUPTEyLAogTkVUX05GX0NPTk5UUkFDS19HRU5FUklDX1RJTUVPVVQ9 MTMsCiBORVRfTkZfQ09OTlRSQUNLX0JVQ0tFVFM9MTQsCiBORVRfTkZfQ09OTlRSQUNLX0xPR19J TlZBTElEPTE1LAogTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9VVF9NQVhfUkVUUkFOUz0xNiwK IE5FVF9ORl9DT05OVFJBQ0tfVENQX0xPT1NFPTE3LAogTkVUX05GX0NPTk5UUkFDS19UQ1BfQkVf TElCRVJBTD0xOCwKIE5FVF9ORl9DT05OVFJBQ0tfVENQX01BWF9SRVRSQU5TPTE5LAogTkVUX05G X0NPTk5UUkFDS19TQ1RQX1RJTUVPVVRfQ0xPU0VEPTIwLAogTkVUX05GX0NPTk5UUkFDS19TQ1RQ X1RJTUVPVVRfQ09PS0lFX1dBSVQ9MjEsCiBORVRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9D T09LSUVfRUNIT0VEPTIyLAogTkVUX05GX0NPTk5UUkFDS19TQ1RQX1RJTUVPVVRfRVNUQUJMSVNI RUQ9MjMsCiBORVRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9TSFVURE9XTl9TRU5UPTI0LAog TkVUX05GX0NPTk5UUkFDS19TQ1RQX1RJTUVPVVRfU0hVVERPV05fUkVDRD0yNSwKIE5FVF9ORl9D T05OVFJBQ0tfU0NUUF9USU1FT1VUX1NIVVRET1dOX0FDS19TRU5UPTI2LAogTkVUX05GX0NPTk5U UkFDS19DT1VOVD0yNywKIE5FVF9ORl9DT05OVFJBQ0tfSUNNUFY2X1RJTUVPVVQ9MjgsCiBORVRf TkZfQ09OTlRSQUNLX0ZSQUc2X1RJTUVPVVQ9MjksCiBORVRfTkZfQ09OTlRSQUNLX0ZSQUc2X0xP V19USFJFU0g9MzAsCiBORVRfTkZfQ09OTlRSQUNLX0ZSQUc2X0hJR0hfVEhSRVNIPTMxLAogTkVU X05GX0NPTk5UUkFDS19DSEVDS1NVTT0zMiwKfTsKCgplbnVtCnsKCiBORVRfSVBWNF9GT1JXQVJE PTgsCiBORVRfSVBWNF9EWU5BRERSPTksCgogTkVUX0lQVjRfQ09ORj0xNiwKIE5FVF9JUFY0X05F SUdIPTE3LAogTkVUX0lQVjRfUk9VVEU9MTgsCiBORVRfSVBWNF9GSUJfSEFTSD0xOSwKIE5FVF9J UFY0X05FVEZJTFRFUj0yMCwKCiBORVRfSVBWNF9UQ1BfVElNRVNUQU1QUz0zMywKIE5FVF9JUFY0 X1RDUF9XSU5ET1dfU0NBTElORz0zNCwKIE5FVF9JUFY0X1RDUF9TQUNLPTM1LAogTkVUX0lQVjRf VENQX1JFVFJBTlNfQ09MTEFQU0U9MzYsCiBORVRfSVBWNF9ERUZBVUxUX1RUTD0zNywKIE5FVF9J UFY0X0FVVE9DT05GSUc9MzgsCiBORVRfSVBWNF9OT19QTVRVX0RJU0M9MzksCiBORVRfSVBWNF9U Q1BfU1lOX1JFVFJJRVM9NDAsCiBORVRfSVBWNF9JUEZSQUdfSElHSF9USFJFU0g9NDEsCiBORVRf SVBWNF9JUEZSQUdfTE9XX1RIUkVTSD00MiwKIE5FVF9JUFY0X0lQRlJBR19USU1FPTQzLAogTkVU X0lQVjRfVENQX01BWF9LQV9QUk9CRVM9NDQsCiBORVRfSVBWNF9UQ1BfS0VFUEFMSVZFX1RJTUU9 NDUsCiBORVRfSVBWNF9UQ1BfS0VFUEFMSVZFX1BST0JFUz00NiwKIE5FVF9JUFY0X1RDUF9SRVRS SUVTMT00NywKIE5FVF9JUFY0X1RDUF9SRVRSSUVTMj00OCwKIE5FVF9JUFY0X1RDUF9GSU5fVElN RU9VVD00OSwKIE5FVF9JUFY0X0lQX01BU1FfREVCVUc9NTAsCiBORVRfVENQX1NZTkNPT0tJRVM9 NTEsCiBORVRfVENQX1NURFVSRz01MiwKIE5FVF9UQ1BfUkZDMTMzNz01MywKIE5FVF9UQ1BfU1lO X1RBSUxEUk9QPTU0LAogTkVUX1RDUF9NQVhfU1lOX0JBQ0tMT0c9NTUsCiBORVRfSVBWNF9MT0NB TF9QT1JUX1JBTkdFPTU2LAogTkVUX0lQVjRfSUNNUF9FQ0hPX0lHTk9SRV9BTEw9NTcsCiBORVRf SVBWNF9JQ01QX0VDSE9fSUdOT1JFX0JST0FEQ0FTVFM9NTgsCiBORVRfSVBWNF9JQ01QX1NPVVJD RVFVRU5DSF9SQVRFPTU5LAogTkVUX0lQVjRfSUNNUF9ERVNUVU5SRUFDSF9SQVRFPTYwLAogTkVU X0lQVjRfSUNNUF9USU1FRVhDRUVEX1JBVEU9NjEsCiBORVRfSVBWNF9JQ01QX1BBUkFNUFJPQl9S QVRFPTYyLAogTkVUX0lQVjRfSUNNUF9FQ0hPUkVQTFlfUkFURT02MywKIE5FVF9JUFY0X0lDTVBf SUdOT1JFX0JPR1VTX0VSUk9SX1JFU1BPTlNFUz02NCwKIE5FVF9JUFY0X0lHTVBfTUFYX01FTUJF UlNISVBTPTY1LAogTkVUX1RDUF9UV19SRUNZQ0xFPTY2LAogTkVUX0lQVjRfQUxXQVlTX0RFRlJB Rz02NywKIE5FVF9JUFY0X1RDUF9LRUVQQUxJVkVfSU5UVkw9NjgsCiBORVRfSVBWNF9JTkVUX1BF RVJfVEhSRVNIT0xEPTY5LAogTkVUX0lQVjRfSU5FVF9QRUVSX01JTlRUTD03MCwKIE5FVF9JUFY0 X0lORVRfUEVFUl9NQVhUVEw9NzEsCiBORVRfSVBWNF9JTkVUX1BFRVJfR0NfTUlOVElNRT03MiwK IE5FVF9JUFY0X0lORVRfUEVFUl9HQ19NQVhUSU1FPTczLAogTkVUX1RDUF9PUlBIQU5fUkVUUklF Uz03NCwKIE5FVF9UQ1BfQUJPUlRfT05fT1ZFUkZMT1c9NzUsCiBORVRfVENQX1NZTkFDS19SRVRS SUVTPTc2LAogTkVUX1RDUF9NQVhfT1JQSEFOUz03NywKIE5FVF9UQ1BfTUFYX1RXX0JVQ0tFVFM9 NzgsCiBORVRfVENQX0ZBQ0s9NzksCiBORVRfVENQX1JFT1JERVJJTkc9ODAsCiBORVRfVENQX0VD Tj04MSwKIE5FVF9UQ1BfRFNBQ0s9ODIsCiBORVRfVENQX01FTT04MywKIE5FVF9UQ1BfV01FTT04 NCwKIE5FVF9UQ1BfUk1FTT04NSwKIE5FVF9UQ1BfQVBQX1dJTj04NiwKIE5FVF9UQ1BfQURWX1dJ Tl9TQ0FMRT04NywKIE5FVF9JUFY0X05PTkxPQ0FMX0JJTkQ9ODgsCiBORVRfSVBWNF9JQ01QX1JB VEVMSU1JVD04OSwKIE5FVF9JUFY0X0lDTVBfUkFURU1BU0s9OTAsCiBORVRfVENQX1RXX1JFVVNF PTkxLAogTkVUX1RDUF9GUlRPPTkyLAogTkVUX1RDUF9MT1dfTEFURU5DWT05MywKIE5FVF9JUFY0 X0lQRlJBR19TRUNSRVRfSU5URVJWQUw9OTQsCiBORVRfSVBWNF9JR01QX01BWF9NU0Y9OTYsCiBO RVRfVENQX05PX01FVFJJQ1NfU0FWRT05NywKIE5FVF9UQ1BfREVGQVVMVF9XSU5fU0NBTEU9MTA1 LAogTkVUX1RDUF9NT0RFUkFURV9SQ1ZCVUY9MTA2LAogTkVUX1RDUF9UU09fV0lOX0RJVklTT1I9 MTA3LAogTkVUX1RDUF9CSUNfQkVUQT0xMDgsCiBORVRfSVBWNF9JQ01QX0VSUk9SU19VU0VfSU5C T1VORF9JRkFERFI9MTA5LAogTkVUX1RDUF9DT05HX0NPTlRST0w9MTEwLAogTkVUX1RDUF9BQkM9 MTExLAogTkVUX0lQVjRfSVBGUkFHX01BWF9ESVNUPTExMiwKICBORVRfVENQX01UVV9QUk9CSU5H PTExMywKIE5FVF9UQ1BfQkFTRV9NU1M9MTE0LAogTkVUX0lQVjRfVENQX1dPUktBUk9VTkRfU0lH TkVEX1dJTkRPV1M9MTE1LAogTkVUX1RDUF9ETUFfQ09QWUJSRUFLPTExNiwKIE5FVF9UQ1BfU0xP V19TVEFSVF9BRlRFUl9JRExFPTExNywKIE5FVF9DSVBTT1Y0X0NBQ0hFX0VOQUJMRT0xMTgsCiBO RVRfQ0lQU09WNF9DQUNIRV9CVUNLRVRfU0laRT0xMTksCiBORVRfQ0lQU09WNF9SQk1fT1BURk1U PTEyMCwKIE5FVF9DSVBTT1Y0X1JCTV9TVFJJQ1RWQUxJRD0xMjEsCiBORVRfVENQX0FWQUlMX0NP TkdfQ09OVFJPTD0xMjIsCiBORVRfVENQX0FMTE9XRURfQ09OR19DT05UUk9MPTEyMywKIE5FVF9U Q1BfTUFYX1NTVEhSRVNIPTEyNCwKIE5FVF9UQ1BfRlJUT19SRVNQT05TRT0xMjUsCn07CgplbnVt IHsKIE5FVF9JUFY0X1JPVVRFX0ZMVVNIPTEsCiBORVRfSVBWNF9ST1VURV9NSU5fREVMQVk9MiwK IE5FVF9JUFY0X1JPVVRFX01BWF9ERUxBWT0zLAogTkVUX0lQVjRfUk9VVEVfR0NfVEhSRVNIPTQs CiBORVRfSVBWNF9ST1VURV9NQVhfU0laRT01LAogTkVUX0lQVjRfUk9VVEVfR0NfTUlOX0lOVEVS VkFMPTYsCiBORVRfSVBWNF9ST1VURV9HQ19USU1FT1VUPTcsCiBORVRfSVBWNF9ST1VURV9HQ19J TlRFUlZBTD04LAogTkVUX0lQVjRfUk9VVEVfUkVESVJFQ1RfTE9BRD05LAogTkVUX0lQVjRfUk9V VEVfUkVESVJFQ1RfTlVNQkVSPTEwLAogTkVUX0lQVjRfUk9VVEVfUkVESVJFQ1RfU0lMRU5DRT0x MSwKIE5FVF9JUFY0X1JPVVRFX0VSUk9SX0NPU1Q9MTIsCiBORVRfSVBWNF9ST1VURV9FUlJPUl9C VVJTVD0xMywKIE5FVF9JUFY0X1JPVVRFX0dDX0VMQVNUSUNJVFk9MTQsCiBORVRfSVBWNF9ST1VU RV9NVFVfRVhQSVJFUz0xNSwKIE5FVF9JUFY0X1JPVVRFX01JTl9QTVRVPTE2LAogTkVUX0lQVjRf Uk9VVEVfTUlOX0FEVk1TUz0xNywKIE5FVF9JUFY0X1JPVVRFX1NFQ1JFVF9JTlRFUlZBTD0xOCwK IE5FVF9JUFY0X1JPVVRFX0dDX01JTl9JTlRFUlZBTF9NUz0xOSwKfTsKCmVudW0KewogTkVUX1BS T1RPX0NPTkZfQUxMPS0yLAogTkVUX1BST1RPX0NPTkZfREVGQVVMVD0tMwoKCn07CgplbnVtCnsK IE5FVF9JUFY0X0NPTkZfRk9SV0FSRElORz0xLAogTkVUX0lQVjRfQ09ORl9NQ19GT1JXQVJESU5H PTIsCiBORVRfSVBWNF9DT05GX1BST1hZX0FSUD0zLAogTkVUX0lQVjRfQ09ORl9BQ0NFUFRfUkVE SVJFQ1RTPTQsCiBORVRfSVBWNF9DT05GX1NFQ1VSRV9SRURJUkVDVFM9NSwKIE5FVF9JUFY0X0NP TkZfU0VORF9SRURJUkVDVFM9NiwKIE5FVF9JUFY0X0NPTkZfU0hBUkVEX01FRElBPTcsCiBORVRf SVBWNF9DT05GX1JQX0ZJTFRFUj04LAogTkVUX0lQVjRfQ09ORl9BQ0NFUFRfU09VUkNFX1JPVVRF PTksCiBORVRfSVBWNF9DT05GX0JPT1RQX1JFTEFZPTEwLAogTkVUX0lQVjRfQ09ORl9MT0dfTUFS VElBTlM9MTEsCiBORVRfSVBWNF9DT05GX1RBRz0xMiwKIE5FVF9JUFY0X0NPTkZfQVJQRklMVEVS PTEzLAogTkVUX0lQVjRfQ09ORl9NRURJVU1fSUQ9MTQsCiBORVRfSVBWNF9DT05GX05PWEZSTT0x NSwKIE5FVF9JUFY0X0NPTkZfTk9QT0xJQ1k9MTYsCiBORVRfSVBWNF9DT05GX0ZPUkNFX0lHTVBf VkVSU0lPTj0xNywKIE5FVF9JUFY0X0NPTkZfQVJQX0FOTk9VTkNFPTE4LAogTkVUX0lQVjRfQ09O Rl9BUlBfSUdOT1JFPTE5LAogTkVUX0lQVjRfQ09ORl9QUk9NT1RFX1NFQ09OREFSSUVTPTIwLAog TkVUX0lQVjRfQ09ORl9BUlBfQUNDRVBUPTIxLAogTkVUX0lQVjRfQ09ORl9BUlBfTk9USUZZPTIy LAp9OwoKCmVudW0KewogTkVUX0lQVjRfTkZfQ09OTlRSQUNLX01BWD0xLAogTkVUX0lQVjRfTkZf Q09OTlRSQUNLX1RDUF9USU1FT1VUX1NZTl9TRU5UPTIsCiBORVRfSVBWNF9ORl9DT05OVFJBQ0tf VENQX1RJTUVPVVRfU1lOX1JFQ1Y9MywKIE5FVF9JUFY0X05GX0NPTk5UUkFDS19UQ1BfVElNRU9V VF9FU1RBQkxJU0hFRD00LAogTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1RDUF9USU1FT1VUX0ZJTl9X QUlUPTUsCiBORVRfSVBWNF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfQ0xPU0VfV0FJVD02LAog TkVUX0lQVjRfTkZfQ09OTlRSQUNLX1RDUF9USU1FT1VUX0xBU1RfQUNLPTcsCiBORVRfSVBWNF9O Rl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfVElNRV9XQUlUPTgsCiBORVRfSVBWNF9ORl9DT05OVFJB Q0tfVENQX1RJTUVPVVRfQ0xPU0U9OSwKIE5FVF9JUFY0X05GX0NPTk5UUkFDS19VRFBfVElNRU9V VD0xMCwKIE5FVF9JUFY0X05GX0NPTk5UUkFDS19VRFBfVElNRU9VVF9TVFJFQU09MTEsCiBORVRf SVBWNF9ORl9DT05OVFJBQ0tfSUNNUF9USU1FT1VUPTEyLAogTkVUX0lQVjRfTkZfQ09OTlRSQUNL X0dFTkVSSUNfVElNRU9VVD0xMywKIE5FVF9JUFY0X05GX0NPTk5UUkFDS19CVUNLRVRTPTE0LAog TkVUX0lQVjRfTkZfQ09OTlRSQUNLX0xPR19JTlZBTElEPTE1LAogTkVUX0lQVjRfTkZfQ09OTlRS QUNLX1RDUF9USU1FT1VUX01BWF9SRVRSQU5TPTE2LAogTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1RD UF9MT09TRT0xNywKIE5FVF9JUFY0X05GX0NPTk5UUkFDS19UQ1BfQkVfTElCRVJBTD0xOCwKIE5F VF9JUFY0X05GX0NPTk5UUkFDS19UQ1BfTUFYX1JFVFJBTlM9MTksCiAgTkVUX0lQVjRfTkZfQ09O TlRSQUNLX1NDVFBfVElNRU9VVF9DTE9TRUQ9MjAsCiAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1ND VFBfVElNRU9VVF9DT09LSUVfV0FJVD0yMSwKICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfU0NUUF9U SU1FT1VUX0NPT0tJRV9FQ0hPRUQ9MjIsCiAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1NDVFBfVElN RU9VVF9FU1RBQkxJU0hFRD0yMywKICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfU0NUUF9USU1FT1VU X1NIVVRET1dOX1NFTlQ9MjQsCiAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9T SFVURE9XTl9SRUNEPTI1LAogIE5FVF9JUFY0X05GX0NPTk5UUkFDS19TQ1RQX1RJTUVPVVRfU0hV VERPV05fQUNLX1NFTlQ9MjYsCiBORVRfSVBWNF9ORl9DT05OVFJBQ0tfQ09VTlQ9MjcsCiBORVRf SVBWNF9ORl9DT05OVFJBQ0tfQ0hFQ0tTVU09MjgsCn07CgoKZW51bSB7CiBORVRfSVBWNl9DT05G PTE2LAogTkVUX0lQVjZfTkVJR0g9MTcsCiBORVRfSVBWNl9ST1VURT0xOCwKIE5FVF9JUFY2X0lD TVA9MTksCiBORVRfSVBWNl9CSU5EVjZPTkxZPTIwLAogTkVUX0lQVjZfSVA2RlJBR19ISUdIX1RI UkVTSD0yMSwKIE5FVF9JUFY2X0lQNkZSQUdfTE9XX1RIUkVTSD0yMiwKIE5FVF9JUFY2X0lQNkZS QUdfVElNRT0yMywKIE5FVF9JUFY2X0lQNkZSQUdfU0VDUkVUX0lOVEVSVkFMPTI0LAogTkVUX0lQ VjZfTUxEX01BWF9NU0Y9MjUsCn07CgplbnVtIHsKIE5FVF9JUFY2X1JPVVRFX0ZMVVNIPTEsCiBO RVRfSVBWNl9ST1VURV9HQ19USFJFU0g9MiwKIE5FVF9JUFY2X1JPVVRFX01BWF9TSVpFPTMsCiBO RVRfSVBWNl9ST1VURV9HQ19NSU5fSU5URVJWQUw9NCwKIE5FVF9JUFY2X1JPVVRFX0dDX1RJTUVP VVQ9NSwKIE5FVF9JUFY2X1JPVVRFX0dDX0lOVEVSVkFMPTYsCiBORVRfSVBWNl9ST1VURV9HQ19F TEFTVElDSVRZPTcsCiBORVRfSVBWNl9ST1VURV9NVFVfRVhQSVJFUz04LAogTkVUX0lQVjZfUk9V VEVfTUlOX0FEVk1TUz05LAogTkVUX0lQVjZfUk9VVEVfR0NfTUlOX0lOVEVSVkFMX01TPTEwCn07 CgplbnVtIHsKIE5FVF9JUFY2X0ZPUldBUkRJTkc9MSwKIE5FVF9JUFY2X0hPUF9MSU1JVD0yLAog TkVUX0lQVjZfTVRVPTMsCiBORVRfSVBWNl9BQ0NFUFRfUkE9NCwKIE5FVF9JUFY2X0FDQ0VQVF9S RURJUkVDVFM9NSwKIE5FVF9JUFY2X0FVVE9DT05GPTYsCiBORVRfSVBWNl9EQURfVFJBTlNNSVRT PTcsCiBORVRfSVBWNl9SVFJfU09MSUNJVFM9OCwKIE5FVF9JUFY2X1JUUl9TT0xJQ0lUX0lOVEVS VkFMPTksCiBORVRfSVBWNl9SVFJfU09MSUNJVF9ERUxBWT0xMCwKIE5FVF9JUFY2X1VTRV9URU1Q QUREUj0xMSwKIE5FVF9JUFY2X1RFTVBfVkFMSURfTEZUPTEyLAogTkVUX0lQVjZfVEVNUF9QUkVG RVJFRF9MRlQ9MTMsCiBORVRfSVBWNl9SRUdFTl9NQVhfUkVUUlk9MTQsCiBORVRfSVBWNl9NQVhf REVTWU5DX0ZBQ1RPUj0xNSwKIE5FVF9JUFY2X01BWF9BRERSRVNTRVM9MTYsCiBORVRfSVBWNl9G T1JDRV9NTERfVkVSU0lPTj0xNywKIE5FVF9JUFY2X0FDQ0VQVF9SQV9ERUZSVFI9MTgsCiBORVRf SVBWNl9BQ0NFUFRfUkFfUElORk89MTksCiBORVRfSVBWNl9BQ0NFUFRfUkFfUlRSX1BSRUY9MjAs CiBORVRfSVBWNl9SVFJfUFJPQkVfSU5URVJWQUw9MjEsCiBORVRfSVBWNl9BQ0NFUFRfUkFfUlRf SU5GT19NQVhfUExFTj0yMiwKIE5FVF9JUFY2X1BST1hZX05EUD0yMywKIE5FVF9JUFY2X0FDQ0VQ VF9TT1VSQ0VfUk9VVEU9MjUsCiBORVRfSVBWNl9BQ0NFUFRfUkFfRlJPTV9MT0NBTD0yNiwKIE5F VF9JUFY2X0FDQ0VQVF9SQV9SVF9JTkZPX01JTl9QTEVOPTI3LAogX19ORVRfSVBWNl9NQVgKfTsK CgplbnVtIHsKIE5FVF9JUFY2X0lDTVBfUkFURUxJTUlUID0gMSwKIE5FVF9JUFY2X0lDTVBfRUNI T19JR05PUkVfQUxMID0gMgp9OwoKCmVudW0gewogTkVUX05FSUdIX01DQVNUX1NPTElDSVQ9MSwK IE5FVF9ORUlHSF9VQ0FTVF9TT0xJQ0lUPTIsCiBORVRfTkVJR0hfQVBQX1NPTElDSVQ9MywKIE5F VF9ORUlHSF9SRVRSQU5TX1RJTUU9NCwKIE5FVF9ORUlHSF9SRUFDSEFCTEVfVElNRT01LAogTkVU X05FSUdIX0RFTEFZX1BST0JFX1RJTUU9NiwKIE5FVF9ORUlHSF9HQ19TVEFMRV9USU1FPTcsCiBO RVRfTkVJR0hfVU5SRVNfUUxFTj04LAogTkVUX05FSUdIX1BST1hZX1FMRU49OSwKIE5FVF9ORUlH SF9BTllDQVNUX0RFTEFZPTEwLAogTkVUX05FSUdIX1BST1hZX0RFTEFZPTExLAogTkVUX05FSUdI X0xPQ0tUSU1FPTEyLAogTkVUX05FSUdIX0dDX0lOVEVSVkFMPTEzLAogTkVUX05FSUdIX0dDX1RI UkVTSDE9MTQsCiBORVRfTkVJR0hfR0NfVEhSRVNIMj0xNSwKIE5FVF9ORUlHSF9HQ19USFJFU0gz PTE2LAogTkVUX05FSUdIX1JFVFJBTlNfVElNRV9NUz0xNywKIE5FVF9ORUlHSF9SRUFDSEFCTEVf VElNRV9NUz0xOCwKfTsKCgplbnVtIHsKIE5FVF9EQ0NQX0RFRkFVTFQ9MSwKfTsKCgplbnVtIHsK IE5FVF9JUFhfUFBST1BfQlJPQURDQVNUSU5HPTEsCiBORVRfSVBYX0ZPUldBUkRJTkc9Mgp9OwoK CmVudW0gewogTkVUX0xMQzI9MSwKIE5FVF9MTENfU1RBVElPTj0yLAp9OwoKCmVudW0gewogTkVU X0xMQzJfVElNRU9VVD0xLAp9OwoKCmVudW0gewogTkVUX0xMQ19TVEFUSU9OX0FDS19USU1FT1VU PTEsCn07CgoKZW51bSB7CiBORVRfTExDMl9BQ0tfVElNRU9VVD0xLAogTkVUX0xMQzJfUF9USU1F T1VUPTIsCiBORVRfTExDMl9SRUpfVElNRU9VVD0zLAogTkVUX0xMQzJfQlVTWV9USU1FT1VUPTQs Cn07CgoKZW51bSB7CiBORVRfQVRBTEtfQUFSUF9FWFBJUllfVElNRT0xLAogTkVUX0FUQUxLX0FB UlBfVElDS19USU1FPTIsCiBORVRfQVRBTEtfQUFSUF9SRVRSQU5TTUlUX0xJTUlUPTMsCiBORVRf QVRBTEtfQUFSUF9SRVNPTFZFX1RJTUU9NAp9OwoKCgplbnVtIHsKIE5FVF9ORVRST01fREVGQVVM VF9QQVRIX1FVQUxJVFk9MSwKIE5FVF9ORVRST01fT0JTT0xFU0NFTkNFX0NPVU5UX0lOSVRJQUxJ U0VSPTIsCiBORVRfTkVUUk9NX05FVFdPUktfVFRMX0lOSVRJQUxJU0VSPTMsCiBORVRfTkVUUk9N X1RSQU5TUE9SVF9USU1FT1VUPTQsCiBORVRfTkVUUk9NX1RSQU5TUE9SVF9NQVhJTVVNX1RSSUVT PTUsCiBORVRfTkVUUk9NX1RSQU5TUE9SVF9BQ0tOT1dMRURHRV9ERUxBWT02LAogTkVUX05FVFJP TV9UUkFOU1BPUlRfQlVTWV9ERUxBWT03LAogTkVUX05FVFJPTV9UUkFOU1BPUlRfUkVRVUVTVEVE X1dJTkRPV19TSVpFPTgsCiBORVRfTkVUUk9NX1RSQU5TUE9SVF9OT19BQ1RJVklUWV9USU1FT1VU PTksCiBORVRfTkVUUk9NX1JPVVRJTkdfQ09OVFJPTD0xMCwKIE5FVF9ORVRST01fTElOS19GQUlM U19DT1VOVD0xMSwKIE5FVF9ORVRST01fUkVTRVQ9MTIKfTsKCgplbnVtIHsKIE5FVF9BWDI1X0lQ X0RFRkFVTFRfTU9ERT0xLAogTkVUX0FYMjVfREVGQVVMVF9NT0RFPTIsCiBORVRfQVgyNV9CQUNL T0ZGX1RZUEU9MywKIE5FVF9BWDI1X0NPTk5FQ1RfTU9ERT00LAogTkVUX0FYMjVfU1RBTkRBUkRf V0lORE9XPTUsCiBORVRfQVgyNV9FWFRFTkRFRF9XSU5ET1c9NiwKIE5FVF9BWDI1X1QxX1RJTUVP VVQ9NywKIE5FVF9BWDI1X1QyX1RJTUVPVVQ9OCwKIE5FVF9BWDI1X1QzX1RJTUVPVVQ9OSwKIE5F VF9BWDI1X0lETEVfVElNRU9VVD0xMCwKIE5FVF9BWDI1X04yPTExLAogTkVUX0FYMjVfUEFDTEVO PTEyLAogTkVUX0FYMjVfUFJPVE9DT0w9MTMsCiBORVRfQVgyNV9EQU1BX1NMQVZFX1RJTUVPVVQ9 MTQKfTsKCgplbnVtIHsKIE5FVF9ST1NFX1JFU1RBUlRfUkVRVUVTVF9USU1FT1VUPTEsCiBORVRf Uk9TRV9DQUxMX1JFUVVFU1RfVElNRU9VVD0yLAogTkVUX1JPU0VfUkVTRVRfUkVRVUVTVF9USU1F T1VUPTMsCiBORVRfUk9TRV9DTEVBUl9SRVFVRVNUX1RJTUVPVVQ9NCwKIE5FVF9ST1NFX0FDS19I T0xEX0JBQ0tfVElNRU9VVD01LAogTkVUX1JPU0VfUk9VVElOR19DT05UUk9MPTYsCiBORVRfUk9T RV9MSU5LX0ZBSUxfVElNRU9VVD03LAogTkVUX1JPU0VfTUFYX1ZDUz04LAogTkVUX1JPU0VfV0lO RE9XX1NJWkU9OSwKIE5FVF9ST1NFX05PX0FDVElWSVRZX1RJTUVPVVQ9MTAKfTsKCgplbnVtIHsK IE5FVF9YMjVfUkVTVEFSVF9SRVFVRVNUX1RJTUVPVVQ9MSwKIE5FVF9YMjVfQ0FMTF9SRVFVRVNU X1RJTUVPVVQ9MiwKIE5FVF9YMjVfUkVTRVRfUkVRVUVTVF9USU1FT1VUPTMsCiBORVRfWDI1X0NM RUFSX1JFUVVFU1RfVElNRU9VVD00LAogTkVUX1gyNV9BQ0tfSE9MRF9CQUNLX1RJTUVPVVQ9NSwK IE5FVF9YMjVfRk9SV0FSRD02Cn07CgoKZW51bQp7CiBORVRfVFJfUklGX1RJTUVPVVQ9MQp9OwoK CmVudW0gewogTkVUX0RFQ05FVF9OT0RFX1RZUEUgPSAxLAogTkVUX0RFQ05FVF9OT0RFX0FERFJF U1MgPSAyLAogTkVUX0RFQ05FVF9OT0RFX05BTUUgPSAzLAogTkVUX0RFQ05FVF9ERUZBVUxUX0RF VklDRSA9IDQsCiBORVRfREVDTkVUX1RJTUVfV0FJVCA9IDUsCiBORVRfREVDTkVUX0ROX0NPVU5U ID0gNiwKIE5FVF9ERUNORVRfRElfQ09VTlQgPSA3LAogTkVUX0RFQ05FVF9EUl9DT1VOVCA9IDgs CiBORVRfREVDTkVUX0RTVF9HQ19JTlRFUlZBTCA9IDksCiBORVRfREVDTkVUX0NPTkYgPSAxMCwK IE5FVF9ERUNORVRfTk9fRkNfTUFYX0NXTkQgPSAxMSwKIE5FVF9ERUNORVRfTUVNID0gMTIsCiBO RVRfREVDTkVUX1JNRU0gPSAxMywKIE5FVF9ERUNORVRfV01FTSA9IDE0LAogTkVUX0RFQ05FVF9E RUJVR19MRVZFTCA9IDI1NQp9OwoKCmVudW0gewogTkVUX0RFQ05FVF9DT05GX0xPT1BCQUNLID0g LTIsCiBORVRfREVDTkVUX0NPTkZfRERDTVAgPSAtMywKIE5FVF9ERUNORVRfQ09ORl9QUFAgPSAt NCwKIE5FVF9ERUNORVRfQ09ORl9YMjUgPSAtNSwKIE5FVF9ERUNORVRfQ09ORl9HUkUgPSAtNiwK IE5FVF9ERUNORVRfQ09ORl9FVEhFUiA9IC03CgoKfTsKCgplbnVtIHsKIE5FVF9ERUNORVRfQ09O Rl9ERVZfUFJJT1JJVFkgPSAxLAogTkVUX0RFQ05FVF9DT05GX0RFVl9UMSA9IDIsCiBORVRfREVD TkVUX0NPTkZfREVWX1QyID0gMywKIE5FVF9ERUNORVRfQ09ORl9ERVZfVDMgPSA0LAogTkVUX0RF Q05FVF9DT05GX0RFVl9GT1JXQVJESU5HID0gNSwKIE5FVF9ERUNORVRfQ09ORl9ERVZfQkxLU0la RSA9IDYsCiBORVRfREVDTkVUX0NPTkZfREVWX1NUQVRFID0gNwp9OwoKCmVudW0gewogTkVUX1ND VFBfUlRPX0lOSVRJQUwgPSAxLAogTkVUX1NDVFBfUlRPX01JTiA9IDIsCiBORVRfU0NUUF9SVE9f TUFYID0gMywKIE5FVF9TQ1RQX1JUT19BTFBIQSA9IDQsCiBORVRfU0NUUF9SVE9fQkVUQSA9IDUs CiBORVRfU0NUUF9WQUxJRF9DT09LSUVfTElGRSA9IDYsCiBORVRfU0NUUF9BU1NPQ0lBVElPTl9N QVhfUkVUUkFOUyA9IDcsCiBORVRfU0NUUF9QQVRIX01BWF9SRVRSQU5TID0gOCwKIE5FVF9TQ1RQ X01BWF9JTklUX1JFVFJBTlNNSVRTID0gOSwKIE5FVF9TQ1RQX0hCX0lOVEVSVkFMID0gMTAsCiBO RVRfU0NUUF9QUkVTRVJWRV9FTkFCTEUgPSAxMSwKIE5FVF9TQ1RQX01BWF9CVVJTVCA9IDEyLAog TkVUX1NDVFBfQURESVBfRU5BQkxFID0gMTMsCiBORVRfU0NUUF9QUlNDVFBfRU5BQkxFID0gMTQs CiBORVRfU0NUUF9TTkRCVUZfUE9MSUNZID0gMTUsCiBORVRfU0NUUF9TQUNLX1RJTUVPVVQgPSAx NiwKIE5FVF9TQ1RQX1JDVkJVRl9QT0xJQ1kgPSAxNywKfTsKCgplbnVtIHsKIE5FVF9CUklER0Vf TkZfQ0FMTF9BUlBUQUJMRVMgPSAxLAogTkVUX0JSSURHRV9ORl9DQUxMX0lQVEFCTEVTID0gMiwK IE5FVF9CUklER0VfTkZfQ0FMTF9JUDZUQUJMRVMgPSAzLAogTkVUX0JSSURHRV9ORl9GSUxURVJf VkxBTl9UQUdHRUQgPSA0LAogTkVUX0JSSURHRV9ORl9GSUxURVJfUFBQT0VfVEFHR0VEID0gNSwK fTsKCgoKZW51bQp7CiBGU19OUklOT0RFPTEsCiBGU19TVEFUSU5PREU9MiwKIEZTX01BWElOT0RF PTMsCiBGU19OUkRRVU9UPTQsCiBGU19NQVhEUVVPVD01LAogRlNfTlJGSUxFPTYsCiBGU19NQVhG SUxFPTcsCiBGU19ERU5UUlk9OCwKIEZTX05SU1VQRVI9OSwKIEZTX01BWFNVUEVSPTEwLAogRlNf T1ZFUkZMT1dVSUQ9MTEsCiBGU19PVkVSRkxPV0dJRD0xMiwKIEZTX0xFQVNFUz0xMywKIEZTX0RJ Ul9OT1RJRlk9MTQsCiBGU19MRUFTRV9USU1FPTE1LAogRlNfRFFTVEFUUz0xNiwKIEZTX1hGUz0x NywKIEZTX0FJT19OUj0xOCwKIEZTX0FJT19NQVhfTlI9MTksCiBGU19JTk9USUZZPTIwLAogRlNf T0NGUzI9OTg4LAp9OwoKCmVudW0gewogRlNfRFFfTE9PS1VQUyA9IDEsCiBGU19EUV9EUk9QUyA9 IDIsCiBGU19EUV9SRUFEUyA9IDMsCiBGU19EUV9XUklURVMgPSA0LAogRlNfRFFfQ0FDSEVfSElU UyA9IDUsCiBGU19EUV9BTExPQ0FURUQgPSA2LAogRlNfRFFfRlJFRSA9IDcsCiBGU19EUV9TWU5D UyA9IDgsCiBGU19EUV9XQVJOSU5HUyA9IDksCn07CgoKCgplbnVtIHsKIERFVl9DRFJPTT0xLAog REVWX0hXTU9OPTIsCiBERVZfUEFSUE9SVD0zLAogREVWX1JBSUQ9NCwKIERFVl9NQUNfSElEPTUs CiBERVZfU0NTST02LAogREVWX0lQTUk9NywKfTsKCgplbnVtIHsKIERFVl9DRFJPTV9JTkZPPTEs CiBERVZfQ0RST01fQVVUT0NMT1NFPTIsCiBERVZfQ0RST01fQVVUT0VKRUNUPTMsCiBERVZfQ0RS T01fREVCVUc9NCwKIERFVl9DRFJPTV9MT0NLPTUsCiBERVZfQ0RST01fQ0hFQ0tfTUVESUE9Ngp9 OwoKCmVudW0gewogREVWX1BBUlBPUlRfREVGQVVMVD0tMwp9OwoKCmVudW0gewogREVWX1JBSURf U1BFRURfTElNSVRfTUlOPTEsCiBERVZfUkFJRF9TUEVFRF9MSU1JVF9NQVg9Mgp9OwoKCmVudW0g ewogREVWX1BBUlBPUlRfREVGQVVMVF9USU1FU0xJQ0U9MSwKIERFVl9QQVJQT1JUX0RFRkFVTFRf U1BJTlRJTUU9Mgp9OwoKCmVudW0gewogREVWX1BBUlBPUlRfU1BJTlRJTUU9MSwKIERFVl9QQVJQ T1JUX0JBU0VfQUREUj0yLAogREVWX1BBUlBPUlRfSVJRPTMsCiBERVZfUEFSUE9SVF9ETUE9NCwK IERFVl9QQVJQT1JUX01PREVTPTUsCiBERVZfUEFSUE9SVF9ERVZJQ0VTPTYsCiBERVZfUEFSUE9S VF9BVVRPUFJPQkU9MTYKfTsKCgplbnVtIHsKIERFVl9QQVJQT1JUX0RFVklDRVNfQUNUSVZFPS0z LAp9OwoKCmVudW0gewogREVWX1BBUlBPUlRfREVWSUNFX1RJTUVTTElDRT0xLAp9OwoKCmVudW0g ewogREVWX01BQ19ISURfS0VZQk9BUkRfU0VORFNfTElOVVhfS0VZQ09ERVM9MSwKIERFVl9NQUNf SElEX0tFWUJPQVJEX0xPQ0tfS0VZQ09ERVM9MiwKIERFVl9NQUNfSElEX01PVVNFX0JVVFRPTl9F TVVMQVRJT049MywKIERFVl9NQUNfSElEX01PVVNFX0JVVFRPTjJfS0VZQ09ERT00LAogREVWX01B Q19ISURfTU9VU0VfQlVUVE9OM19LRVlDT0RFPTUsCiBERVZfTUFDX0hJRF9BREJfTU9VU0VfU0VO RFNfS0VZQ09ERVM9Ngp9OwoKCmVudW0gewogREVWX1NDU0lfTE9HR0lOR19MRVZFTD0xLAp9OwoK CmVudW0gewogREVWX0lQTUlfUE9XRVJPRkZfUE9XRVJDWUNMRT0xLAp9OwoKCmVudW0KewogQUJJ X0RFRkhBTkRMRVJfQ09GRj0xLAogQUJJX0RFRkhBTkRMRVJfRUxGPTIsCiBBQklfREVGSEFORExF Ul9MQ0FMTDc9MywKIEFCSV9ERUZIQU5ETEVSX0xJQkNTTz00LAogQUJJX1RSQUNFPTUsCiBBQklf RkFLRV9VVFNOQU1FPTYsCn07CiMgMzEgIi4vaW5jbHVkZS9saW51eC9zeXNjdGwuaCIgMgoKCnN0 cnVjdCBjb21wbGV0aW9uOwpzdHJ1Y3QgY3RsX3RhYmxlOwpzdHJ1Y3QgbnNwcm94eTsKc3RydWN0 IGN0bF90YWJsZV9yb290OwpzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlcjsKc3RydWN0IGN0bF9kaXI7 CgoKCgoKCmV4dGVybiBjb25zdCBpbnQgc3lzY3RsX3ZhbHNbXTsKCnR5cGVkZWYgaW50IHByb2Nf aGFuZGxlciAoc3RydWN0IGN0bF90YWJsZSAqY3RsLCBpbnQgd3JpdGUsCiAgICAgdm9pZCAqYnVm ZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqcHBvcyk7CgpleHRlcm4gaW50IHByb2NfZG9zdHJp bmcoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCiAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3Qg Kik7CmV4dGVybiBpbnQgcHJvY19kb2ludHZlYyhzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwKICAg IHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKZXh0ZXJuIGludCBwcm9jX2RvdWludHZlYyhz dHJ1Y3QgY3RsX3RhYmxlICosIGludCwKICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsK ZXh0ZXJuIGludCBwcm9jX2RvaW50dmVjX21pbm1heChzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwK ICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKZXh0ZXJuIGludCBwcm9jX2RvdWludHZl Y19taW5tYXgoc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSwKICAgICB2b2lkICpi dWZmZXIsIHNpemVfdCAqbGVucCwKICAgICBsb2ZmX3QgKnBwb3MpOwpleHRlcm4gaW50IHByb2Nf ZG9pbnR2ZWNfamlmZmllcyhzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwKICAgICB2b2lkICosIHNp emVfdCAqLCBsb2ZmX3QgKik7CmV4dGVybiBpbnQgcHJvY19kb2ludHZlY191c2VyaHpfamlmZmll cyhzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwKICAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3Qg Kik7CmV4dGVybiBpbnQgcHJvY19kb2ludHZlY19tc19qaWZmaWVzKHN0cnVjdCBjdGxfdGFibGUg KiwgaW50LAogICAgICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKZXh0ZXJuIGludCBw cm9jX2RvdWxvbmd2ZWNfbWlubWF4KHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAogICAgICB2b2lk ICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CmV4dGVybiBpbnQgcHJvY19kb3Vsb25ndmVjX21zX2pp ZmZpZXNfbWlubWF4KHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQsCiAgICAgICAgICB2b2lk ICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CmV4dGVybiBpbnQgcHJvY19kb19sYXJnZV9iaXRtYXAo c3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCiAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7 CmV4dGVybiBpbnQgcHJvY19kb19zdGF0aWNfa2V5KHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBp bnQgd3JpdGUsCiAgICAgICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLAogICAgICAgICBs b2ZmX3QgKnBwb3MpOwojIDEwNSAiLi9pbmNsdWRlL2xpbnV4L3N5c2N0bC5oIgpzdHJ1Y3QgY3Rs X3RhYmxlX3BvbGwgewogYXRvbWljX3QgZXZlbnQ7CiB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0Owp9 OwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCAqcHJvY19zeXNfcG9sbF9ldmVudChzdHJ1Y3QgY3RsX3RhYmxlX3BvbGwgKnBvbGwp CnsKIHJldHVybiAodm9pZCAqKSh1bnNpZ25lZCBsb25nKWF0b21pY19yZWFkKCZwb2xsLT5ldmVu dCk7Cn0KIyAxMjMgIi4vaW5jbHVkZS9saW51eC9zeXNjdGwuaCIKc3RydWN0IGN0bF90YWJsZSB7 CiBjb25zdCBjaGFyICpwcm9jbmFtZTsKIHZvaWQgKmRhdGE7CiBpbnQgbWF4bGVuOwogdW1vZGVf dCBtb2RlOwogc3RydWN0IGN0bF90YWJsZSAqY2hpbGQ7CiBwcm9jX2hhbmRsZXIgKnByb2NfaGFu ZGxlcjsKIHN0cnVjdCBjdGxfdGFibGVfcG9sbCAqcG9sbDsKIHZvaWQgKmV4dHJhMTsKIHZvaWQg KmV4dHJhMjsKfSBfX2F0dHJpYnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CgpzdHJ1Y3Qg Y3RsX25vZGUgewogc3RydWN0IHJiX25vZGUgbm9kZTsKIHN0cnVjdCBjdGxfdGFibGVfaGVhZGVy ICpoZWFkZXI7Cn07CgoKCnN0cnVjdCBjdGxfdGFibGVfaGVhZGVyIHsKIHVuaW9uIHsKICBzdHJ1 Y3QgewogICBzdHJ1Y3QgY3RsX3RhYmxlICpjdGxfdGFibGU7CiAgIGludCB1c2VkOwogICBpbnQg Y291bnQ7CiAgIGludCBucmVnOwogIH07CiAgc3RydWN0IGNhbGxiYWNrX2hlYWQgcmN1OwogfTsK IHN0cnVjdCBjb21wbGV0aW9uICp1bnJlZ2lzdGVyaW5nOwogc3RydWN0IGN0bF90YWJsZSAqY3Rs X3RhYmxlX2FyZzsKIHN0cnVjdCBjdGxfdGFibGVfcm9vdCAqcm9vdDsKIHN0cnVjdCBjdGxfdGFi bGVfc2V0ICpzZXQ7CiBzdHJ1Y3QgY3RsX2RpciAqcGFyZW50Owogc3RydWN0IGN0bF9ub2RlICpu b2RlOwogc3RydWN0IGhsaXN0X2hlYWQgaW5vZGVzOwp9OwoKc3RydWN0IGN0bF9kaXIgewoKIHN0 cnVjdCBjdGxfdGFibGVfaGVhZGVyIGhlYWRlcjsKIHN0cnVjdCByYl9yb290IHJvb3Q7Cn07Cgpz dHJ1Y3QgY3RsX3RhYmxlX3NldCB7CiBpbnQgKCppc19zZWVuKShzdHJ1Y3QgY3RsX3RhYmxlX3Nl dCAqKTsKIHN0cnVjdCBjdGxfZGlyIGRpcjsKfTsKCnN0cnVjdCBjdGxfdGFibGVfcm9vdCB7CiBz dHJ1Y3QgY3RsX3RhYmxlX3NldCBkZWZhdWx0X3NldDsKIHN0cnVjdCBjdGxfdGFibGVfc2V0ICoo Kmxvb2t1cCkoc3RydWN0IGN0bF90YWJsZV9yb290ICpyb290KTsKIHZvaWQgKCpzZXRfb3duZXJz aGlwKShzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqaGVhZCwKICAgICAgICAgc3RydWN0IGN0bF90 YWJsZSAqdGFibGUsCiAgICAgICAgIGt1aWRfdCAqdWlkLCBrZ2lkX3QgKmdpZCk7CiBpbnQgKCpw ZXJtaXNzaW9ucykoc3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKmhlYWQsIHN0cnVjdCBjdGxfdGFi bGUgKnRhYmxlKTsKfTsKCgpzdHJ1Y3QgY3RsX3BhdGggewogY29uc3QgY2hhciAqcHJvY25hbWU7 Cn07CgoKCnZvaWQgcHJvY19zeXNfcG9sbF9ub3RpZnkoc3RydWN0IGN0bF90YWJsZV9wb2xsICpw b2xsKTsKCmV4dGVybiB2b2lkIHNldHVwX3N5c2N0bF9zZXQoc3RydWN0IGN0bF90YWJsZV9zZXQg KnAsCiBzdHJ1Y3QgY3RsX3RhYmxlX3Jvb3QgKnJvb3QsCiBpbnQgKCppc19zZWVuKShzdHJ1Y3Qg Y3RsX3RhYmxlX3NldCAqKSk7CmV4dGVybiB2b2lkIHJldGlyZV9zeXNjdGxfc2V0KHN0cnVjdCBj dGxfdGFibGVfc2V0ICpzZXQpOwoKc3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKl9fcmVnaXN0ZXJf c3lzY3RsX3RhYmxlKAogc3RydWN0IGN0bF90YWJsZV9zZXQgKnNldCwKIGNvbnN0IGNoYXIgKnBh dGgsIHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlKTsKc3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKl9f cmVnaXN0ZXJfc3lzY3RsX3BhdGhzKAogc3RydWN0IGN0bF90YWJsZV9zZXQgKnNldCwKIGNvbnN0 IHN0cnVjdCBjdGxfcGF0aCAqcGF0aCwgc3RydWN0IGN0bF90YWJsZSAqdGFibGUpOwpzdHJ1Y3Qg Y3RsX3RhYmxlX2hlYWRlciAqcmVnaXN0ZXJfc3lzY3RsKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVj dCBjdGxfdGFibGUgKnRhYmxlKTsKc3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKnJlZ2lzdGVyX3N5 c2N0bF90YWJsZShzdHJ1Y3QgY3RsX3RhYmxlICogdGFibGUpOwpzdHJ1Y3QgY3RsX3RhYmxlX2hl YWRlciAqcmVnaXN0ZXJfc3lzY3RsX3BhdGhzKGNvbnN0IHN0cnVjdCBjdGxfcGF0aCAqcGF0aCwK ICAgICAgc3RydWN0IGN0bF90YWJsZSAqdGFibGUpOwoKdm9pZCB1bnJlZ2lzdGVyX3N5c2N0bF90 YWJsZShzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqIHRhYmxlKTsKCmV4dGVybiBpbnQgc3lzY3Rs X2luaXQodm9pZCk7CgpleHRlcm4gc3RydWN0IGN0bF90YWJsZSBzeXNjdGxfbW91bnRfcG9pbnRb XTsKIyAyNDEgIi4vaW5jbHVkZS9saW51eC9zeXNjdGwuaCIKaW50IHN5c2N0bF9tYXhfdGhyZWFk cyhzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLAogICAgICAgICB2b2lkICpidWZm ZXIsIHNpemVfdCAqbGVucCwgbG9mZl90ICpwcG9zKTsKIyAxOCAiLi9pbmNsdWRlL2xpbnV4L2tl eS5oIiAyCgoKIyAxICIuL2luY2x1ZGUvbGludXgvYXNzb2NfYXJyYXkuaCIgMQojIDIyICIuL2lu Y2x1ZGUvbGludXgvYXNzb2NfYXJyYXkuaCIKc3RydWN0IGFzc29jX2FycmF5IHsKIHN0cnVjdCBh c3NvY19hcnJheV9wdHIgKnJvb3Q7CiB1bnNpZ25lZCBsb25nIG5yX2xlYXZlc19vbl90cmVlOwp9 OwoKCgoKc3RydWN0IGFzc29jX2FycmF5X29wcyB7CgogdW5zaWduZWQgbG9uZyAoKmdldF9rZXlf Y2h1bmspKGNvbnN0IHZvaWQgKmluZGV4X2tleSwgaW50IGxldmVsKTsKCgogdW5zaWduZWQgbG9u ZyAoKmdldF9vYmplY3Rfa2V5X2NodW5rKShjb25zdCB2b2lkICpvYmplY3QsIGludCBsZXZlbCk7 CgoKIGJvb2wgKCpjb21wYXJlX29iamVjdCkoY29uc3Qgdm9pZCAqb2JqZWN0LCBjb25zdCB2b2lk ICppbmRleF9rZXkpOwoKCgoKIGludCAoKmRpZmZfb2JqZWN0cykoY29uc3Qgdm9pZCAqb2JqZWN0 LCBjb25zdCB2b2lkICppbmRleF9rZXkpOwoKCiB2b2lkICgqZnJlZV9vYmplY3QpKHZvaWQgKm9i amVjdCk7Cn07CgoKCgpzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdDsKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXNzb2NfYXJyYXlf aW5pdChzdHJ1Y3QgYXNzb2NfYXJyYXkgKmFycmF5KQp7CiBhcnJheS0+cm9vdCA9ICgodm9pZCAq KTApOwogYXJyYXktPm5yX2xlYXZlc19vbl90cmVlID0gMDsKfQoKZXh0ZXJuIGludCBhc3NvY19h cnJheV9pdGVyYXRlKGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheSAqYXJyYXksCiAgICAgICAgICBp bnQgKCppdGVyYXRvcikoY29uc3Qgdm9pZCAqb2JqZWN0LAogICAgICAgICAgICB2b2lkICppdGVy YXRvcl9kYXRhKSwKICAgICAgICAgIHZvaWQgKml0ZXJhdG9yX2RhdGEpOwpleHRlcm4gdm9pZCAq YXNzb2NfYXJyYXlfZmluZChjb25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXkgKmFycmF5LAogICAgICAg ICBjb25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXlfb3BzICpvcHMsCiAgICAgICAgIGNvbnN0IHZvaWQg KmluZGV4X2tleSk7CmV4dGVybiB2b2lkIGFzc29jX2FycmF5X2Rlc3Ryb3koc3RydWN0IGFzc29j X2FycmF5ICphcnJheSwKICAgIGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMgKm9wcyk7CmV4 dGVybiBzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdCAqYXNzb2NfYXJyYXlfaW5zZXJ0KHN0cnVjdCBh c3NvY19hcnJheSAqYXJyYXksCiAgICAgICAgIGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMg Km9wcywKICAgICAgICAgY29uc3Qgdm9pZCAqaW5kZXhfa2V5LAogICAgICAgICB2b2lkICpvYmpl Y3QpOwpleHRlcm4gdm9pZCBhc3NvY19hcnJheV9pbnNlcnRfc2V0X29iamVjdChzdHJ1Y3QgYXNz b2NfYXJyYXlfZWRpdCAqZWRpdCwKICAgICAgIHZvaWQgKm9iamVjdCk7CmV4dGVybiBzdHJ1Y3Qg YXNzb2NfYXJyYXlfZWRpdCAqYXNzb2NfYXJyYXlfZGVsZXRlKHN0cnVjdCBhc3NvY19hcnJheSAq YXJyYXksCiAgICAgICAgIGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMgKm9wcywKICAgICAg ICAgY29uc3Qgdm9pZCAqaW5kZXhfa2V5KTsKZXh0ZXJuIHN0cnVjdCBhc3NvY19hcnJheV9lZGl0 ICphc3NvY19hcnJheV9jbGVhcihzdHJ1Y3QgYXNzb2NfYXJyYXkgKmFycmF5LAogICAgICAgIGNv bnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMgKm9wcyk7CmV4dGVybiB2b2lkIGFzc29jX2FycmF5 X2FwcGx5X2VkaXQoc3RydWN0IGFzc29jX2FycmF5X2VkaXQgKmVkaXQpOwpleHRlcm4gdm9pZCBh c3NvY19hcnJheV9jYW5jZWxfZWRpdChzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdCAqZWRpdCk7CmV4 dGVybiBpbnQgYXNzb2NfYXJyYXlfZ2Moc3RydWN0IGFzc29jX2FycmF5ICphcnJheSwKICAgICBj b25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXlfb3BzICpvcHMsCiAgICAgYm9vbCAoKml0ZXJhdG9yKSh2 b2lkICpvYmplY3QsIHZvaWQgKml0ZXJhdG9yX2RhdGEpLAogICAgIHZvaWQgKml0ZXJhdG9yX2Rh dGEpOwojIDIxICIuL2luY2x1ZGUvbGludXgva2V5LmgiIDIKCgoKCgoKCnR5cGVkZWYgaW50MzJf dCBrZXlfc2VyaWFsX3Q7CgoKdHlwZWRlZiB1aW50MzJfdCBrZXlfcGVybV90OwoKc3RydWN0IGtl eTsKc3RydWN0IG5ldDsKIyA3NCAiLi9pbmNsdWRlL2xpbnV4L2tleS5oIgpzdHJ1Y3Qgc2VxX2Zp bGU7CnN0cnVjdCB1c2VyX3N0cnVjdDsKc3RydWN0IHNpZ25hbF9zdHJ1Y3Q7CnN0cnVjdCBjcmVk OwoKc3RydWN0IGtleV90eXBlOwpzdHJ1Y3Qga2V5X293bmVyOwpzdHJ1Y3Qga2V5X3RhZzsKc3Ry dWN0IGtleXJpbmdfbGlzdDsKc3RydWN0IGtleXJpbmdfbmFtZTsKCnN0cnVjdCBrZXlfdGFnIHsK IHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKIHJlZmNvdW50X3QgdXNhZ2U7CiBib29sIHJlbW92 ZWQ7Cn07CgpzdHJ1Y3Qga2V5cmluZ19pbmRleF9rZXkgewoKIHVuc2lnbmVkIGxvbmcgaGFzaDsK IHVuaW9uIHsKICBzdHJ1Y3QgewoKICAgdTE2IGRlc2NfbGVuOwogICBjaGFyIGRlc2Nbc2l6ZW9m KGxvbmcpIC0gMl07CgoKCgogIH07CiAgdW5zaWduZWQgbG9uZyB4OwogfTsKIHN0cnVjdCBrZXlf dHlwZSAqdHlwZTsKIHN0cnVjdCBrZXlfdGFnICpkb21haW5fdGFnOwogY29uc3QgY2hhciAqZGVz Y3JpcHRpb247Cn07Cgp1bmlvbiBrZXlfcGF5bG9hZCB7CiB2b2lkICpyY3VfZGF0YTA7CiB2b2lk ICpkYXRhWzRdOwp9OwojIDEzMCAiLi9pbmNsdWRlL2xpbnV4L2tleS5oIgp0eXBlZGVmIHN0cnVj dCBfX2tleV9yZWZlcmVuY2Vfd2l0aF9hdHRyaWJ1dGVzICprZXlfcmVmX3Q7CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrZXlfcmVmX3Qg bWFrZV9rZXlfcmVmKGNvbnN0IHN0cnVjdCBrZXkgKmtleSwKICAgICAgICAgYm9vbCBwb3NzZXNz aW9uKQp7CiByZXR1cm4gKGtleV9yZWZfdCkgKCh1bnNpZ25lZCBsb25nKSBrZXkgfCBwb3NzZXNz aW9uKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgc3RydWN0IGtleSAqa2V5X3JlZl90b19wdHIoY29uc3Qga2V5X3JlZl90IGtleV9y ZWYpCnsKIHJldHVybiAoc3RydWN0IGtleSAqKSAoKHVuc2lnbmVkIGxvbmcpIGtleV9yZWYgJiB+ MVVMKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBpc19rZXlfcG9zc2Vzc2VkKGNvbnN0IGtleV9yZWZfdCBrZXlfcmVmKQp7 CiByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIGtleV9yZWYgJiAxVUw7Cn0KCnR5cGVkZWYgaW50ICgq a2V5X3Jlc3RyaWN0X2xpbmtfZnVuY190KShzdHJ1Y3Qga2V5ICpkZXN0X2tleXJpbmcsCiAgICAg Y29uc3Qgc3RydWN0IGtleV90eXBlICp0eXBlLAogICAgIGNvbnN0IHVuaW9uIGtleV9wYXlsb2Fk ICpwYXlsb2FkLAogICAgIHN0cnVjdCBrZXkgKnJlc3RyaWN0aW9uX2tleSk7CgpzdHJ1Y3Qga2V5 X3Jlc3RyaWN0aW9uIHsKIGtleV9yZXN0cmljdF9saW5rX2Z1bmNfdCBjaGVjazsKIHN0cnVjdCBr ZXkgKmtleTsKIHN0cnVjdCBrZXlfdHlwZSAqa2V5dHlwZTsKfTsKCmVudW0ga2V5X3N0YXRlIHsK IEtFWV9JU19VTklOU1RBTlRJQVRFRCwKIEtFWV9JU19QT1NJVElWRSwKfTsKIyAxNzIgIi4vaW5j bHVkZS9saW51eC9rZXkuaCIKc3RydWN0IGtleSB7CiByZWZjb3VudF90IHVzYWdlOwoga2V5X3Nl cmlhbF90IHNlcmlhbDsKIHVuaW9uIHsKICBzdHJ1Y3QgbGlzdF9oZWFkIGdyYXZleWFyZF9saW5r OwogIHN0cnVjdCByYl9ub2RlIHNlcmlhbF9ub2RlOwogfTsKIHN0cnVjdCByd19zZW1hcGhvcmUg c2VtOwogc3RydWN0IGtleV91c2VyICp1c2VyOwogdm9pZCAqc2VjdXJpdHk7CiB1bmlvbiB7CiAg dGltZTY0X3QgZXhwaXJ5OwogIHRpbWU2NF90IHJldm9rZWRfYXQ7CiB9OwogdGltZTY0X3QgbGFz dF91c2VkX2F0Owoga3VpZF90IHVpZDsKIGtnaWRfdCBnaWQ7CiBrZXlfcGVybV90IHBlcm07CiB1 bnNpZ25lZCBzaG9ydCBxdW90YWxlbjsKIHVuc2lnbmVkIHNob3J0IGRhdGFsZW47CgoKCiBzaG9y dCBzdGF0ZTsKCgoKCgoKIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiMgMjE5ICIuL2luY2x1ZGUvbGlu dXgva2V5LmgiCiB1bmlvbiB7CiAgc3RydWN0IGtleXJpbmdfaW5kZXhfa2V5IGluZGV4X2tleTsK ICBzdHJ1Y3QgewogICB1bnNpZ25lZCBsb25nIGhhc2g7CiAgIHVuc2lnbmVkIGxvbmcgbGVuX2Rl c2M7CiAgIHN0cnVjdCBrZXlfdHlwZSAqdHlwZTsKICAgc3RydWN0IGtleV90YWcgKmRvbWFpbl90 YWc7CiAgIGNoYXIgKmRlc2NyaXB0aW9uOwogIH07CiB9OwoKCgoKCiB1bmlvbiB7CiAgdW5pb24g a2V5X3BheWxvYWQgcGF5bG9hZDsKICBzdHJ1Y3QgewoKICAgc3RydWN0IGxpc3RfaGVhZCBuYW1l X2xpbms7CiAgIHN0cnVjdCBhc3NvY19hcnJheSBrZXlzOwogIH07CiB9OwojIDI1NCAiLi9pbmNs dWRlL2xpbnV4L2tleS5oIgogc3RydWN0IGtleV9yZXN0cmljdGlvbiAqcmVzdHJpY3RfbGluazsK fTsKCmV4dGVybiBzdHJ1Y3Qga2V5ICprZXlfYWxsb2Moc3RydWN0IGtleV90eXBlICp0eXBlLAog ICAgICAgIGNvbnN0IGNoYXIgKmRlc2MsCiAgICAgICAga3VpZF90IHVpZCwga2dpZF90IGdpZCwK ICAgICAgICBjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCwKICAgICAgICBrZXlfcGVybV90IHBlcm0s CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncywKICAgICAgICBzdHJ1Y3Qga2V5X3Jlc3RyaWN0 aW9uICpyZXN0cmljdF9saW5rKTsKIyAyNzMgIi4vaW5jbHVkZS9saW51eC9rZXkuaCIKZXh0ZXJu IHZvaWQga2V5X3Jldm9rZShzdHJ1Y3Qga2V5ICprZXkpOwpleHRlcm4gdm9pZCBrZXlfaW52YWxp ZGF0ZShzdHJ1Y3Qga2V5ICprZXkpOwpleHRlcm4gdm9pZCBrZXlfcHV0KHN0cnVjdCBrZXkgKmtl eSk7CmV4dGVybiBib29sIGtleV9wdXRfdGFnKHN0cnVjdCBrZXlfdGFnICp0YWcpOwpleHRlcm4g dm9pZCBrZXlfcmVtb3ZlX2RvbWFpbihzdHJ1Y3Qga2V5X3RhZyAqZG9tYWluX3RhZyk7CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1 Y3Qga2V5ICpfX2tleV9nZXQoc3RydWN0IGtleSAqa2V5KQp7CiByZWZjb3VudF9pbmMoJmtleS0+ dXNhZ2UpOwogcmV0dXJuIGtleTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtleSAqa2V5X2dldChzdHJ1Y3Qga2V5ICpr ZXkpCnsKIHJldHVybiBrZXkgPyBfX2tleV9nZXQoa2V5KSA6IGtleTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrZXlfcmVm X3B1dChrZXlfcmVmX3Qga2V5X3JlZikKewoga2V5X3B1dChrZXlfcmVmX3RvX3B0cihrZXlfcmVm KSk7Cn0KCmV4dGVybiBzdHJ1Y3Qga2V5ICpyZXF1ZXN0X2tleV90YWcoc3RydWN0IGtleV90eXBl ICp0eXBlLAogICAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sCiAgICAgICBzdHJ1Y3Qga2V5 X3RhZyAqZG9tYWluX3RhZywKICAgICAgIGNvbnN0IGNoYXIgKmNhbGxvdXRfaW5mbyk7CgpleHRl cm4gc3RydWN0IGtleSAqcmVxdWVzdF9rZXlfcmN1KHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwKICAg ICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAogICAgICAgc3RydWN0IGtleV90YWcgKmRvbWFp bl90YWcpOwoKZXh0ZXJuIHN0cnVjdCBrZXkgKnJlcXVlc3Rfa2V5X3dpdGhfYXV4ZGF0YShzdHJ1 Y3Qga2V5X3R5cGUgKnR5cGUsCiAgICAgICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAogICAg ICAgICBzdHJ1Y3Qga2V5X3RhZyAqZG9tYWluX3RhZywKICAgICAgICAgY29uc3Qgdm9pZCAqY2Fs bG91dF9pbmZvLAogICAgICAgICBzaXplX3QgY2FsbG91dF9sZW4sCiAgICAgICAgIHZvaWQgKmF1 eCk7CiMgMzE5ICIuL2luY2x1ZGUvbGludXgva2V5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrZXkgKnJlcXVlc3Rfa2V5 KHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwKICAgICAgICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9u LAogICAgICAgICAgY29uc3QgY2hhciAqY2FsbG91dF9pbmZvKQp7CiByZXR1cm4gcmVxdWVzdF9r ZXlfdGFnKHR5cGUsIGRlc2NyaXB0aW9uLCAoKHZvaWQgKikwKSwgY2FsbG91dF9pbmZvKTsKfQoj IDM1OCAiLi9pbmNsdWRlL2xpbnV4L2tleS5oIgpleHRlcm4gaW50IHdhaXRfZm9yX2tleV9jb25z dHJ1Y3Rpb24oc3RydWN0IGtleSAqa2V5LCBib29sIGludHIpOwoKZXh0ZXJuIGludCBrZXlfdmFs aWRhdGUoY29uc3Qgc3RydWN0IGtleSAqa2V5KTsKCmV4dGVybiBrZXlfcmVmX3Qga2V5X2NyZWF0 ZV9vcl91cGRhdGUoa2V5X3JlZl90IGtleXJpbmcsCiAgICAgICAgICBjb25zdCBjaGFyICp0eXBl LAogICAgICAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sCiAgICAgICAgICBjb25zdCB2b2lk ICpwYXlsb2FkLAogICAgICAgICAgc2l6ZV90IHBsZW4sCiAgICAgICAgICBrZXlfcGVybV90IHBl cm0sCiAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzKTsKCmV4dGVybiBpbnQga2V5X3VwZGF0 ZShrZXlfcmVmX3Qga2V5LAogICAgICAgIGNvbnN0IHZvaWQgKnBheWxvYWQsCiAgICAgICAgc2l6 ZV90IHBsZW4pOwoKZXh0ZXJuIGludCBrZXlfbGluayhzdHJ1Y3Qga2V5ICprZXlyaW5nLAogICAg ICBzdHJ1Y3Qga2V5ICprZXkpOwoKZXh0ZXJuIGludCBrZXlfbW92ZShzdHJ1Y3Qga2V5ICprZXks CiAgICAgIHN0cnVjdCBrZXkgKmZyb21fa2V5cmluZywKICAgICAgc3RydWN0IGtleSAqdG9fa2V5 cmluZywKICAgICAgdW5zaWduZWQgaW50IGZsYWdzKTsKCmV4dGVybiBpbnQga2V5X3VubGluayhz dHJ1Y3Qga2V5ICprZXlyaW5nLAogICAgICAgIHN0cnVjdCBrZXkgKmtleSk7CgpleHRlcm4gc3Ry dWN0IGtleSAqa2V5cmluZ19hbGxvYyhjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwga3VpZF90IHVp ZCwga2dpZF90IGdpZCwKICAgICBjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCwKICAgICBrZXlfcGVy bV90IHBlcm0sCiAgICAgdW5zaWduZWQgbG9uZyBmbGFncywKICAgICBzdHJ1Y3Qga2V5X3Jlc3Ry aWN0aW9uICpyZXN0cmljdF9saW5rLAogICAgIHN0cnVjdCBrZXkgKmRlc3QpOwoKZXh0ZXJuIGlu dCByZXN0cmljdF9saW5rX3JlamVjdChzdHJ1Y3Qga2V5ICprZXlyaW5nLAogICAgY29uc3Qgc3Ry dWN0IGtleV90eXBlICp0eXBlLAogICAgY29uc3QgdW5pb24ga2V5X3BheWxvYWQgKnBheWxvYWQs CiAgICBzdHJ1Y3Qga2V5ICpyZXN0cmljdGlvbl9rZXkpOwoKZXh0ZXJuIGludCBrZXlyaW5nX2Ns ZWFyKHN0cnVjdCBrZXkgKmtleXJpbmcpOwoKZXh0ZXJuIGtleV9yZWZfdCBrZXlyaW5nX3NlYXJj aChrZXlfcmVmX3Qga2V5cmluZywKICAgIHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwKICAgIGNvbnN0 IGNoYXIgKmRlc2NyaXB0aW9uLAogICAgYm9vbCByZWN1cnNlKTsKCmV4dGVybiBpbnQga2V5cmlu Z19hZGRfa2V5KHN0cnVjdCBrZXkgKmtleXJpbmcsCiAgICAgIHN0cnVjdCBrZXkgKmtleSk7Cgpl eHRlcm4gaW50IGtleXJpbmdfcmVzdHJpY3Qoa2V5X3JlZl90IGtleXJpbmcsIGNvbnN0IGNoYXIg KnR5cGUsCiAgICAgICBjb25zdCBjaGFyICpyZXN0cmljdGlvbik7CgpleHRlcm4gc3RydWN0IGtl eSAqa2V5X2xvb2t1cChrZXlfc2VyaWFsX3QgaWQpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga2V5X3NlcmlhbF90IGtleV9zZXJpYWwo Y29uc3Qgc3RydWN0IGtleSAqa2V5KQp7CiByZXR1cm4ga2V5ID8ga2V5LT5zZXJpYWwgOiAwOwp9 CgpleHRlcm4gdm9pZCBrZXlfc2V0X3RpbWVvdXQoc3RydWN0IGtleSAqLCB1bnNpZ25lZCk7Cgpl eHRlcm4ga2V5X3JlZl90IGxvb2t1cF91c2VyX2tleShrZXlfc2VyaWFsX3QgaWQsIHVuc2lnbmVk IGxvbmcgZmxhZ3MsCiAgICAga2V5X3Blcm1fdCBwZXJtKTsKZXh0ZXJuIHZvaWQga2V5X2ZyZWVf dXNlcl9ucyhzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKik7CiMgNDM0ICIuL2luY2x1ZGUvbGludXgv a2V5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHNob3J0IGtleV9yZWFkX3N0YXRlKGNvbnN0IHN0cnVjdCBrZXkgKmtleSkKewoKIHJl dHVybiAoeyB0eXBlb2YoKiZrZXktPnN0YXRlKSBfX19wMSA9ICh7IHVuaW9uIHsgdHlwZW9mKCom a2V5LT5zdGF0ZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNl X3NpemUoJigqJmtleS0+c3RhdGUpLCBfX3UuX19jLCBzaXplb2YoKiZrZXktPnN0YXRlKSk7IGVs c2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoKiZrZXktPnN0YXRlKSwgX191Ll9fYywgc2l6 ZW9mKComa2V5LT5zdGF0ZSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOyBkbyB7 IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzQzNyh2b2lkKSBfX2F0dHJpYnV0ZV9f KChfX2Vycm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9t aWNpdHkuIikpKTsgaWYgKCEoKHNpemVvZigqJmtleS0+c3RhdGUpID09IHNpemVvZihjaGFyKSB8 fCBzaXplb2YoKiZrZXktPnN0YXRlKSA9PSBzaXplb2Yoc2hvcnQpIHx8IHNpemVvZigqJmtleS0+ c3RhdGUpID09IHNpemVvZihpbnQpIHx8IHNpemVvZigqJmtleS0+c3RhdGUpID09IHNpemVvZihs b25nKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF80MzcoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18g X192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IF9fX3AxOyB9KTsKfQojIDQ0NyAiLi9pbmNs dWRlL2xpbnV4L2tleS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGtleV9pc19wb3NpdGl2ZShjb25zdCBzdHJ1Y3Qga2V5ICpr ZXkpCnsKIHJldHVybiBrZXlfcmVhZF9zdGF0ZShrZXkpID09IEtFWV9JU19QT1NJVElWRTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBrZXlfaXNfbmVnYXRpdmUoY29uc3Qgc3RydWN0IGtleSAqa2V5KQp7CiByZXR1cm4ga2V5 X3JlYWRfc3RhdGUoa2V5KSA8IDA7Cn0KIyA0NzAgIi4vaW5jbHVkZS9saW51eC9rZXkuaCIKZXh0 ZXJuIHN0cnVjdCBjdGxfdGFibGUga2V5X3N5c2N0bHNbXTsKCgoKCmV4dGVybiBpbnQgaW5zdGFs bF90aHJlYWRfa2V5cmluZ190b19jcmVkKHN0cnVjdCBjcmVkICpjcmVkKTsKZXh0ZXJuIHZvaWQg a2V5X2ZzdWlkX2NoYW5nZWQoc3RydWN0IGNyZWQgKm5ld19jcmVkKTsKZXh0ZXJuIHZvaWQga2V5 X2ZzZ2lkX2NoYW5nZWQoc3RydWN0IGNyZWQgKm5ld19jcmVkKTsKZXh0ZXJuIHZvaWQga2V5X2lu aXQodm9pZCk7CiMgMTQgIi4vaW5jbHVkZS9saW51eC9jcmVkLmgiIDIKCgoKIyAxICIuL2luY2x1 ZGUvbGludXgvc2NoZWQvdXNlci5oIiAxCgoKCgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9yYXRl bGltaXQuaCIgMQojIDE1ICIuL2luY2x1ZGUvbGludXgvcmF0ZWxpbWl0LmgiCnN0cnVjdCByYXRl bGltaXRfc3RhdGUgewogcmF3X3NwaW5sb2NrX3QgbG9jazsKCiBpbnQgaW50ZXJ2YWw7CiBpbnQg YnVyc3Q7CiBpbnQgcHJpbnRlZDsKIGludCBtaXNzZWQ7CiB1bnNpZ25lZCBsb25nIGJlZ2luOwog dW5zaWduZWQgbG9uZyBmbGFnczsKfTsKIyA0MCAiLi9pbmNsdWRlL2xpbnV4L3JhdGVsaW1pdC5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHJhdGVsaW1pdF9zdGF0ZV9pbml0KHN0cnVjdCByYXRlbGltaXRfc3RhdGUgKnJzLAog ICAgIGludCBpbnRlcnZhbCwgaW50IGJ1cnN0KQp7CiBtZW1zZXQocnMsIDAsIHNpemVvZigqcnMp KTsKCiBkbyB7ICooJnJzLT5sb2NrKSA9IChyYXdfc3BpbmxvY2tfdCkgeyAucmF3X2xvY2sgPSB7 IHsgLnZhbCA9IHsgKDApIH0gfSB9LCB9OyB9IHdoaWxlICgwKTsKIHJzLT5pbnRlcnZhbCA9IGlu dGVydmFsOwogcnMtPmJ1cnN0ID0gYnVyc3Q7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmF0ZWxpbWl0X2RlZmF1bHRfaW5p dChzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlICpycykKewogcmV0dXJuIHJhdGVsaW1pdF9zdGF0ZV9p bml0KHJzLCAoNSAqIDI1MCksCiAgICAgMTApOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJhdGVsaW1pdF9zdGF0ZV9leGl0 KHN0cnVjdCByYXRlbGltaXRfc3RhdGUgKnJzKQp7CiBpZiAoIShycy0+ZmxhZ3MgJiAoKCgoMVVM KSkpIDw8ICgwKSkpKQogIHJldHVybjsKCiBpZiAocnMtPm1pc3NlZCkgewogIHByaW50aygiXDAw MSIgIjQiICIlczogJWQgb3V0cHV0IGxpbmVzIHN1cHByZXNzZWQgZHVlIHRvIHJhdGVsaW1pdGlu Z1xuIiwgZ2V0X2N1cnJlbnQoKS0+Y29tbSwgcnMtPm1pc3NlZCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7CiAgcnMtPm1pc3NlZCA9IDA7CiB9Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKcmF0ZWxpbWl0X3NldF9m bGFncyhzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlICpycywgdW5zaWduZWQgbG9uZyBmbGFncykKewog cnMtPmZsYWdzID0gZmxhZ3M7Cn0KCmV4dGVybiBzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlIHByaW50 a19yYXRlbGltaXRfc3RhdGU7CgpleHRlcm4gaW50IF9fX3JhdGVsaW1pdChzdHJ1Y3QgcmF0ZWxp bWl0X3N0YXRlICpycywgY29uc3QgY2hhciAqZnVuYyk7CiMgOSAiLi9pbmNsdWRlL2xpbnV4L3Nj aGVkL3VzZXIuaCIgMgoKCgoKc3RydWN0IHVzZXJfc3RydWN0IHsKIHJlZmNvdW50X3QgX19jb3Vu dDsKIGF0b21pY190IHByb2Nlc3NlczsKIGF0b21pY190IHNpZ3BlbmRpbmc7CgogYXRvbWljX3Qg ZmFub3RpZnlfbGlzdGVuZXJzOwoKCiBhdG9taWNfbG9uZ190IGVwb2xsX3dhdGNoZXM7CgoKCiB1 bnNpZ25lZCBsb25nIG1xX2J5dGVzOwoKIHVuc2lnbmVkIGxvbmcgbG9ja2VkX3NobTsKIHVuc2ln bmVkIGxvbmcgdW5peF9pbmZsaWdodDsKIGF0b21pY19sb25nX3QgcGlwZV9idWZzOwoKCiBzdHJ1 Y3QgaGxpc3Rfbm9kZSB1aWRoYXNoX25vZGU7CiBrdWlkX3QgdWlkOwoKCgogYXRvbWljX2xvbmdf dCBsb2NrZWRfdm07CgoKCiBzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlIHJhdGVsaW1pdDsKfTsKCmV4 dGVybiBpbnQgdWlkc19zeXNmc19pbml0KHZvaWQpOwoKZXh0ZXJuIHN0cnVjdCB1c2VyX3N0cnVj dCAqZmluZF91c2VyKGt1aWRfdCk7CgpleHRlcm4gc3RydWN0IHVzZXJfc3RydWN0IHJvb3RfdXNl cjsKCgoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKiBhbGxvY191aWQoa3VpZF90KTsKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3Ry dWN0IHVzZXJfc3RydWN0ICpnZXRfdWlkKHN0cnVjdCB1c2VyX3N0cnVjdCAqdSkKewogcmVmY291 bnRfaW5jKCZ1LT5fX2NvdW50KTsKIHJldHVybiB1Owp9CmV4dGVybiB2b2lkIGZyZWVfdWlkKHN0 cnVjdCB1c2VyX3N0cnVjdCAqKTsKIyAxOCAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIgMgoKc3Ry dWN0IGNyZWQ7CnN0cnVjdCBpbm9kZTsKCgoKCnN0cnVjdCBncm91cF9pbmZvIHsKIGF0b21pY190 IHVzYWdlOwogaW50IG5ncm91cHM7CiBrZ2lkX3QgZ2lkWzBdOwp9IF9fYXR0cmlidXRlX18oKF9f ZGVzaWduYXRlZF9pbml0X18pKTsKIyA0MCAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IGdyb3VwX2luZm8gKmdldF9ncm91cF9pbmZvKHN0cnVjdCBncm91cF9pbmZvICpnaSkKewogYXRv bWljX2luYygmZ2ktPnVzYWdlKTsKIHJldHVybiBnaTsKfQojIDU2ICIuL2luY2x1ZGUvbGludXgv Y3JlZC5oIgpleHRlcm4gc3RydWN0IGdyb3VwX2luZm8gaW5pdF9ncm91cHM7CgpleHRlcm4gc3Ry dWN0IGdyb3VwX2luZm8gKmdyb3Vwc19hbGxvYyhpbnQpOwpleHRlcm4gdm9pZCBncm91cHNfZnJl ZShzdHJ1Y3QgZ3JvdXBfaW5mbyAqKTsKCmV4dGVybiBpbnQgaW5fZ3JvdXBfcChrZ2lkX3QpOwpl eHRlcm4gaW50IGluX2Vncm91cF9wKGtnaWRfdCk7CmV4dGVybiBpbnQgZ3JvdXBzX3NlYXJjaChj b25zdCBzdHJ1Y3QgZ3JvdXBfaW5mbyAqLCBrZ2lkX3QpOwoKZXh0ZXJuIGludCBzZXRfY3VycmVu dF9ncm91cHMoc3RydWN0IGdyb3VwX2luZm8gKik7CmV4dGVybiB2b2lkIHNldF9ncm91cHMoc3Ry dWN0IGNyZWQgKiwgc3RydWN0IGdyb3VwX2luZm8gKik7CmV4dGVybiBib29sIG1heV9zZXRncm91 cHModm9pZCk7CmV4dGVybiB2b2lkIGdyb3Vwc19zb3J0KHN0cnVjdCBncm91cF9pbmZvICopOwoj IDExMSAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKc3RydWN0IGNyZWQgewogYXRvbWljX3QgdXNh Z2U7CgoKCgoKCgoga3VpZF90IHVpZDsKIGtnaWRfdCBnaWQ7CiBrdWlkX3Qgc3VpZDsKIGtnaWRf dCBzZ2lkOwoga3VpZF90IGV1aWQ7CiBrZ2lkX3QgZWdpZDsKIGt1aWRfdCBmc3VpZDsKIGtnaWRf dCBmc2dpZDsKIHVuc2lnbmVkIHNlY3VyZWJpdHM7CiBrZXJuZWxfY2FwX3QgY2FwX2luaGVyaXRh YmxlOwoga2VybmVsX2NhcF90IGNhcF9wZXJtaXR0ZWQ7CiBrZXJuZWxfY2FwX3QgY2FwX2VmZmVj dGl2ZTsKIGtlcm5lbF9jYXBfdCBjYXBfYnNldDsKIGtlcm5lbF9jYXBfdCBjYXBfYW1iaWVudDsK CiB1bnNpZ25lZCBjaGFyIGppdF9rZXlyaW5nOwoKIHN0cnVjdCBrZXkgKnNlc3Npb25fa2V5cmlu ZzsKIHN0cnVjdCBrZXkgKnByb2Nlc3Nfa2V5cmluZzsKIHN0cnVjdCBrZXkgKnRocmVhZF9rZXly aW5nOwogc3RydWN0IGtleSAqcmVxdWVzdF9rZXlfYXV0aDsKCgogdm9pZCAqc2VjdXJpdHk7Cgog c3RydWN0IHVzZXJfc3RydWN0ICp1c2VyOwogc3RydWN0IHVzZXJfbmFtZXNwYWNlICp1c2VyX25z Owogc3RydWN0IGdyb3VwX2luZm8gKmdyb3VwX2luZm87CgogdW5pb24gewogIGludCBub25fcmN1 OwogIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKIH07Cn0gX19hdHRyaWJ1dGVfXygoX19kZXNp Z25hdGVkX2luaXRfXykpOwoKZXh0ZXJuIHZvaWQgX19wdXRfY3JlZChzdHJ1Y3QgY3JlZCAqKTsK ZXh0ZXJuIHZvaWQgZXhpdF9jcmVkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBpbnQg Y29weV9jcmVkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBj b25zdCBzdHJ1Y3QgY3JlZCAqZ2V0X3Rhc2tfY3JlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4 dGVybiBzdHJ1Y3QgY3JlZCAqY3JlZF9hbGxvY19ibGFuayh2b2lkKTsKZXh0ZXJuIHN0cnVjdCBj cmVkICpwcmVwYXJlX2NyZWRzKHZvaWQpOwpleHRlcm4gc3RydWN0IGNyZWQgKnByZXBhcmVfZXhl Y19jcmVkcyh2b2lkKTsKZXh0ZXJuIGludCBjb21taXRfY3JlZHMoc3RydWN0IGNyZWQgKik7CmV4 dGVybiB2b2lkIGFib3J0X2NyZWRzKHN0cnVjdCBjcmVkICopOwpleHRlcm4gY29uc3Qgc3RydWN0 IGNyZWQgKm92ZXJyaWRlX2NyZWRzKGNvbnN0IHN0cnVjdCBjcmVkICopOwpleHRlcm4gdm9pZCBy ZXZlcnRfY3JlZHMoY29uc3Qgc3RydWN0IGNyZWQgKik7CmV4dGVybiBzdHJ1Y3QgY3JlZCAqcHJl cGFyZV9rZXJuZWxfY3JlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBpbnQgY2hhbmdl X2NyZWF0ZV9maWxlc19hcyhzdHJ1Y3QgY3JlZCAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBp bnQgc2V0X3NlY3VyaXR5X292ZXJyaWRlKHN0cnVjdCBjcmVkICosIHUzMik7CmV4dGVybiBpbnQg c2V0X3NlY3VyaXR5X292ZXJyaWRlX2Zyb21fY3R4KHN0cnVjdCBjcmVkICosIGNvbnN0IGNoYXIg Kik7CmV4dGVybiBpbnQgc2V0X2NyZWF0ZV9maWxlc19hcyhzdHJ1Y3QgY3JlZCAqLCBzdHJ1Y3Qg aW5vZGUgKik7CmV4dGVybiBpbnQgY3JlZF9mc2NtcChjb25zdCBzdHJ1Y3QgY3JlZCAqLCBjb25z dCBzdHJ1Y3QgY3JlZCAqKTsKZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18o Ii5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgY3JlZF9pbml0KHZvaWQp OwojIDIwMyAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB2YWxpZGF0ZV9jcmVkcyhjb25z dCBzdHJ1Y3QgY3JlZCAqY3JlZCkKewp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdmFsaWRhdGVfY3JlZHNfZm9yX2RvX2V4aXQo c3RydWN0IHRhc2tfc3RydWN0ICp0c2spCnsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHZhbGlkYXRlX3Byb2Nlc3NfY3JlZHMo dm9pZCkKewp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBjYXBfYW1iaWVudF9pbnZhcmlhbnRfb2soY29uc3Qgc3RydWN0IGNy ZWQgKmNyZWQpCnsKIHJldHVybiBjYXBfaXNzdWJzZXQoY3JlZC0+Y2FwX2FtYmllbnQsCiAgICAg ICBjYXBfaW50ZXJzZWN0KGNyZWQtPmNhcF9wZXJtaXR0ZWQsCiAgICAgICBjcmVkLT5jYXBfaW5o ZXJpdGFibGUpKTsKfQojIDIyOCAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGNyZWQg KmdldF9uZXdfY3JlZChzdHJ1Y3QgY3JlZCAqY3JlZCkKewogYXRvbWljX2luYygmY3JlZC0+dXNh Z2UpOwogcmV0dXJuIGNyZWQ7Cn0KIyAyNDcgIi4vaW5jbHVkZS9saW51eC9jcmVkLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGNvbnN0 IHN0cnVjdCBjcmVkICpnZXRfY3JlZChjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCkKewogc3RydWN0 IGNyZWQgKm5vbmNvbnN0X2NyZWQgPSAoc3RydWN0IGNyZWQgKikgY3JlZDsKIGlmICghY3JlZCkK ICByZXR1cm4gY3JlZDsKIHZhbGlkYXRlX2NyZWRzKGNyZWQpOwogbm9uY29uc3RfY3JlZC0+bm9u X3JjdSA9IDA7CiByZXR1cm4gZ2V0X25ld19jcmVkKG5vbmNvbnN0X2NyZWQpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjb25zdCBz dHJ1Y3QgY3JlZCAqZ2V0X2NyZWRfcmN1KGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKQp7CiBzdHJ1 Y3QgY3JlZCAqbm9uY29uc3RfY3JlZCA9IChzdHJ1Y3QgY3JlZCAqKSBjcmVkOwogaWYgKCFjcmVk KQogIHJldHVybiAoKHZvaWQgKikwKTsKIGlmICghYXRvbWljX2luY19ub3RfemVybygmbm9uY29u c3RfY3JlZC0+dXNhZ2UpKQogIHJldHVybiAoKHZvaWQgKikwKTsKIHZhbGlkYXRlX2NyZWRzKGNy ZWQpOwogbm9uY29uc3RfY3JlZC0+bm9uX3JjdSA9IDA7CiByZXR1cm4gY3JlZDsKfQojIDI4MCAi Li9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwdXRfY3JlZChjb25zdCBzdHJ1Y3QgY3JlZCAq X2NyZWQpCnsKIHN0cnVjdCBjcmVkICpjcmVkID0gKHN0cnVjdCBjcmVkICopIF9jcmVkOwoKIGlm IChjcmVkKSB7CiAgdmFsaWRhdGVfY3JlZHMoY3JlZCk7CiAgaWYgKGF0b21pY19kZWNfYW5kX3Rl c3QoJihjcmVkKS0+dXNhZ2UpKQogICBfX3B1dF9jcmVkKGNyZWQpOwogfQp9CiMgMzkwICIuL2lu Y2x1ZGUvbGludXgvY3JlZC5oIgpleHRlcm4gc3RydWN0IHVzZXJfbmFtZXNwYWNlIGluaXRfdXNl cl9uczsKIyAxMyAiLi9pbmNsdWRlL2xpbnV4L3NlcV9maWxlLmgiIDIKCnN0cnVjdCBzZXFfb3Bl cmF0aW9uczsKCnN0cnVjdCBzZXFfZmlsZSB7CiBjaGFyICpidWY7CiBzaXplX3Qgc2l6ZTsKIHNp emVfdCBmcm9tOwogc2l6ZV90IGNvdW50Owogc2l6ZV90IHBhZF91bnRpbDsKIGxvZmZfdCBpbmRl eDsKIGxvZmZfdCByZWFkX3BvczsKIHU2NCB2ZXJzaW9uOwogc3RydWN0IG11dGV4IGxvY2s7CiBj b25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgKm9wOwogaW50IHBvbGxfZXZlbnQ7CiBjb25zdCBz dHJ1Y3QgZmlsZSAqZmlsZTsKIHZvaWQgKnByaXZhdGU7Cn07CgpzdHJ1Y3Qgc2VxX29wZXJhdGlv bnMgewogdm9pZCAqICgqc3RhcnQpIChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGxvZmZfdCAqcG9zKTsK IHZvaWQgKCpzdG9wKSAoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KTsKIHZvaWQgKiAoKm5l eHQpIChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYsIGxvZmZfdCAqcG9zKTsKIGludCAoKnNo b3cpIChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpOwp9OwojIDUxICIuL2luY2x1ZGUvbGlu dXgvc2VxX2ZpbGUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCBzZXFfaGFzX292ZXJmbG93ZWQoc3RydWN0IHNlcV9maWxlICpt KQp7CiByZXR1cm4gbS0+Y291bnQgPT0gbS0+c2l6ZTsKfQojIDY0ICIuL2luY2x1ZGUvbGludXgv c2VxX2ZpbGUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgc2l6ZV90IHNlcV9nZXRfYnVmKHN0cnVjdCBzZXFfZmlsZSAqbSwgY2hhciAq KmJ1ZnApCnsKIGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEobS0+Y291bnQgPiBtLT5zaXpl KSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBm LCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAi LmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5s b25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEi ICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZs YWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUv bGludXgvc2VxX2ZpbGUuaCIpLCAiaSIgKDY2KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0 IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5c dCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0g LlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDMzKSk7IH0pOyBhc20gdm9sYXRpbGUo IiIpOyBfX2J1aWx0aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9 IHdoaWxlICgwKTsKIGlmIChtLT5jb3VudCA8IG0tPnNpemUpCiAgKmJ1ZnAgPSBtLT5idWYgKyBt LT5jb3VudDsKIGVsc2UKICAqYnVmcCA9ICgodm9pZCAqKTApOwoKIHJldHVybiBtLT5zaXplIC0g bS0+Y291bnQ7Cn0KIyA4NCAiLi9pbmNsdWRlL2xpbnV4L3NlcV9maWxlLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2VxX2Nv bW1pdChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGludCBudW0pCnsKIGlmIChudW0gPCAwKSB7CiAgbS0+ Y291bnQgPSBtLT5zaXplOwogfSBlbHNlIHsKICBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEh KG0tPmNvdW50ICsgbnVtID4gbS0+c2l6ZSksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZv bGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVn X3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2Vu dHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50 cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29y ZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNl Y3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3NlcV9maWxlLmgiKSwgImkiICg4OSksICJp IiAoMCksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyBkbyB7 ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQudW5yZWFj aGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImki ICgzNCkpOyB9KTsgYXNtIHZvbGF0aWxlKCIiKTsgX19idWlsdGluX3VucmVhY2hhYmxlKCk7IH0g d2hpbGUgKDApOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiAgbS0+Y291bnQgKz0gbnVtOwog fQp9CiMgMTAyICIuL2luY2x1ZGUvbGludXgvc2VxX2ZpbGUuaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzZXFfc2V0d2lkdGgo c3RydWN0IHNlcV9maWxlICptLCBzaXplX3Qgc2l6ZSkKewogbS0+cGFkX3VudGlsID0gbS0+Y291 bnQgKyBzaXplOwp9CnZvaWQgc2VxX3BhZChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNoYXIgYyk7Cgpj aGFyICptYW5nbGVfcGF0aChjaGFyICpzLCBjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICplc2Mp OwppbnQgc2VxX29wZW4oc3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IHNlcV9vcGVyYXRpb25z ICopOwpzc2l6ZV90IHNlcV9yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2Zm X3QgKik7CmxvZmZfdCBzZXFfbHNlZWsoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQpOwppbnQg c2VxX3JlbGVhc2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwppbnQgc2VxX3dyaXRl KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKCl9f YXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAwKSkpCnZvaWQgc2VxX3ZwcmludGYo c3RydWN0IHNlcV9maWxlICptLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7Cl9fYXR0 cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpCnZvaWQgc2VxX3ByaW50ZihzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKdm9pZCBzZXFfcHV0YyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIGNoYXIgYyk7CnZvaWQgc2VxX3B1dHMoc3RydWN0IHNlcV9maWxlICpt LCBjb25zdCBjaGFyICpzKTsKdm9pZCBzZXFfcHV0X2RlY2ltYWxfdWxsX3dpZHRoKHN0cnVjdCBz ZXFfZmlsZSAqbSwgY29uc3QgY2hhciAqZGVsaW1pdGVyLAogICAgICAgICAgdW5zaWduZWQgbG9u ZyBsb25nIG51bSwgdW5zaWduZWQgaW50IHdpZHRoKTsKdm9pZCBzZXFfcHV0X2RlY2ltYWxfdWxs KHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgY2hhciAqZGVsaW1pdGVyLAogICAgdW5zaWduZWQg bG9uZyBsb25nIG51bSk7CnZvaWQgc2VxX3B1dF9kZWNpbWFsX2xsKHN0cnVjdCBzZXFfZmlsZSAq bSwgY29uc3QgY2hhciAqZGVsaW1pdGVyLCBsb25nIGxvbmcgbnVtKTsKdm9pZCBzZXFfcHV0X2hl eF9sbChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKmRlbGltaXRlciwKICAgICAgdW5z aWduZWQgbG9uZyBsb25nIHYsIHVuc2lnbmVkIGludCB3aWR0aCk7Cgp2b2lkIHNlcV9lc2NhcGUo c3RydWN0IHNlcV9maWxlICptLCBjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICplc2MpOwp2b2lk IHNlcV9lc2NhcGVfbWVtX2FzY2lpKHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgY2hhciAqc3Jj LCBzaXplX3QgaXN6KTsKCnZvaWQgc2VxX2hleF9kdW1wKHN0cnVjdCBzZXFfZmlsZSAqbSwgY29u c3QgY2hhciAqcHJlZml4X3N0ciwgaW50IHByZWZpeF90eXBlLAogICAgaW50IHJvd3NpemUsIGlu dCBncm91cHNpemUsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwKICAgIGJvb2wgYXNjaWkp OwoKaW50IHNlcV9wYXRoKHN0cnVjdCBzZXFfZmlsZSAqLCBjb25zdCBzdHJ1Y3QgcGF0aCAqLCBj b25zdCBjaGFyICopOwppbnQgc2VxX2ZpbGVfcGF0aChzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0 IGZpbGUgKiwgY29uc3QgY2hhciAqKTsKaW50IHNlcV9kZW50cnkoc3RydWN0IHNlcV9maWxlICos IHN0cnVjdCBkZW50cnkgKiwgY29uc3QgY2hhciAqKTsKaW50IHNlcV9wYXRoX3Jvb3Qoc3RydWN0 IHNlcV9maWxlICptLCBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCwKICAgIGNvbnN0IHN0cnVjdCBw YXRoICpyb290LCBjb25zdCBjaGFyICplc2MpOwoKaW50IHNpbmdsZV9vcGVuKHN0cnVjdCBmaWxl ICosIGludCAoKikoc3RydWN0IHNlcV9maWxlICosIHZvaWQgKiksIHZvaWQgKik7CmludCBzaW5n bGVfb3Blbl9zaXplKHN0cnVjdCBmaWxlICosIGludCAoKikoc3RydWN0IHNlcV9maWxlICosIHZv aWQgKiksIHZvaWQgKiwgc2l6ZV90KTsKaW50IHNpbmdsZV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAq LCBzdHJ1Y3QgZmlsZSAqKTsKdm9pZCAqX19zZXFfb3Blbl9wcml2YXRlKHN0cnVjdCBmaWxlICos IGNvbnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyAqLCBpbnQpOwppbnQgc2VxX29wZW5fcHJpdmF0 ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgKiwgaW50KTsKaW50 IHNlcV9yZWxlYXNlX3ByaXZhdGUoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwojIDE3 NiAiLi9pbmNsdWRlL2xpbnV4L3NlcV9maWxlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqc2Vx X3VzZXJfbnMoc3RydWN0IHNlcV9maWxlICpzZXEpCnsKCiByZXR1cm4gc2VxLT5maWxlLT5mX2Ny ZWQtPnVzZXJfbnM7CgoKCgp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNlcV9zaG93X29wdGlvbihzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICBjb25zdCBjaGFyICp2YWx1ZSkKewog c2VxX3B1dGMobSwgJywnKTsKIHNlcV9lc2NhcGUobSwgbmFtZSwgIiw9IFx0XG5cXCIpOwogaWYg KHZhbHVlKSB7CiAgc2VxX3B1dGMobSwgJz0nKTsKICBzZXFfZXNjYXBlKG0sIHZhbHVlLCAiLCBc dFxuXFwiKTsKIH0KfQojIDIyNiAiLi9pbmNsdWRlL2xpbnV4L3NlcV9maWxlLmgiCmV4dGVybiBz dHJ1Y3QgbGlzdF9oZWFkICpzZXFfbGlzdF9zdGFydChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAog IGxvZmZfdCBwb3MpOwpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCAqc2VxX2xpc3Rfc3RhcnRfaGVh ZChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAogIGxvZmZfdCBwb3MpOwpleHRlcm4gc3RydWN0IGxp c3RfaGVhZCAqc2VxX2xpc3RfbmV4dCh2b2lkICp2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAog IGxvZmZfdCAqcHBvcyk7CgoKCgoKZXh0ZXJuIHN0cnVjdCBobGlzdF9ub2RlICpzZXFfaGxpc3Rf c3RhcnQoc3RydWN0IGhsaXN0X2hlYWQgKmhlYWQsCiAgICAgICBsb2ZmX3QgcG9zKTsKZXh0ZXJu IHN0cnVjdCBobGlzdF9ub2RlICpzZXFfaGxpc3Rfc3RhcnRfaGVhZChzdHJ1Y3QgaGxpc3RfaGVh ZCAqaGVhZCwKICAgICAgICAgICAgbG9mZl90IHBvcyk7CmV4dGVybiBzdHJ1Y3QgaGxpc3Rfbm9k ZSAqc2VxX2hsaXN0X25leHQodm9pZCAqdiwgc3RydWN0IGhsaXN0X2hlYWQgKmhlYWQsCiAgICAg IGxvZmZfdCAqcHBvcyk7CgpleHRlcm4gc3RydWN0IGhsaXN0X25vZGUgKnNlcV9obGlzdF9zdGFy dF9yY3Uoc3RydWN0IGhsaXN0X2hlYWQgKmhlYWQsCiAgICAgICAgICAgbG9mZl90IHBvcyk7CmV4 dGVybiBzdHJ1Y3QgaGxpc3Rfbm9kZSAqc2VxX2hsaXN0X3N0YXJ0X2hlYWRfcmN1KHN0cnVjdCBo bGlzdF9oZWFkICpoZWFkLAogICAgICAgICBsb2ZmX3QgcG9zKTsKZXh0ZXJuIHN0cnVjdCBobGlz dF9ub2RlICpzZXFfaGxpc3RfbmV4dF9yY3Uodm9pZCAqdiwKICAgICAgICAgc3RydWN0IGhsaXN0 X2hlYWQgKmhlYWQsCiAgICAgICAgIGxvZmZfdCAqcHBvcyk7CgoKZXh0ZXJuIHN0cnVjdCBobGlz dF9ub2RlICpzZXFfaGxpc3Rfc3RhcnRfcGVyY3B1KHN0cnVjdCBobGlzdF9oZWFkICpoZWFkLCBp bnQgKmNwdSwgbG9mZl90IHBvcyk7CgpleHRlcm4gc3RydWN0IGhsaXN0X25vZGUgKnNlcV9obGlz dF9uZXh0X3BlcmNwdSh2b2lkICp2LCBzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCwgaW50ICpjcHUs IGxvZmZfdCAqcG9zKTsKCnZvaWQgc2VxX2ZpbGVfaW5pdCh2b2lkKTsKIyAzMiAiLi9pbmNsdWRl L2RybS9kcm1fcHJpbnQuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIgMQojIDE1 ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2Rldl9wcmlu dGsuaCIgMQojIDIyICIuL2luY2x1ZGUvbGludXgvZGV2X3ByaW50ay5oIgpzdHJ1Y3QgZGV2aWNl OwoKCgpfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgMCkpKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbGRfXykpCmludCBkZXZfdnByaW50a19lbWl0KGludCBsZXZlbCwgY29uc3Qgc3Ry dWN0IGRldmljZSAqZGV2LAogICAgICAgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwpf X2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkpKSBfX2F0dHJpYnV0ZV9fKChf X2NvbGRfXykpCmludCBkZXZfcHJpbnRrX2VtaXQoaW50IGxldmVsLCBjb25zdCBzdHJ1Y3QgZGV2 aWNlICpkZXYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKCl9fYXR0cmlidXRlX18oKF9fZm9ybWF0 X18ocHJpbnRmLCAzLCA0KSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkKdm9pZCBkZXZfcHJp bnRrKGNvbnN0IGNoYXIgKmxldmVsLCBjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsCiAgY29uc3Qg Y2hhciAqZm10LCAuLi4pOwpfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykp KSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpCnZvaWQgX2Rldl9lbWVyZyhjb25zdCBzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKX19hdHRyaWJ1dGVfXygoX19mb3Jt YXRfXyhwcmludGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKQp2b2lkIF9kZXZf YWxlcnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cl9f YXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpIF9fYXR0cmlidXRlX18oKF9f Y29sZF9fKSkKdm9pZCBfZGV2X2NyaXQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBj aGFyICpmbXQsIC4uLik7Cl9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkp IF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkKdm9pZCBfZGV2X2Vycihjb25zdCBzdHJ1Y3QgZGV2 aWNlICpkZXYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKX19hdHRyaWJ1dGVfXygoX19mb3JtYXRf XyhwcmludGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKQp2b2lkIF9kZXZfd2Fy bihjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKX19hdHRy aWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xk X18pKQp2b2lkIF9kZXZfbm90aWNlKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hh ciAqZm10LCAuLi4pOwpfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKSBf X2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpCnZvaWQgX2Rldl9pbmZvKGNvbnN0IHN0cnVjdCBkZXZp Y2UgKmRldiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwojIDE2ICIuL2luY2x1ZGUvbGludXgvZGV2 aWNlLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvaW9wb3J0LmgiIDEKIyAyMCAiLi9pbmNsdWRl L2xpbnV4L2lvcG9ydC5oIgpzdHJ1Y3QgcmVzb3VyY2UgewogcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0 OwogcmVzb3VyY2Vfc2l6ZV90IGVuZDsKIGNvbnN0IGNoYXIgKm5hbWU7CiB1bnNpZ25lZCBsb25n IGZsYWdzOwogdW5zaWduZWQgbG9uZyBkZXNjOwogc3RydWN0IHJlc291cmNlICpwYXJlbnQsICpz aWJsaW5nLCAqY2hpbGQ7Cn07CiMgMTI4ICIuL2luY2x1ZGUvbGludXgvaW9wb3J0LmgiCmVudW0g ewogSU9SRVNfREVTQ19OT05FID0gMCwKIElPUkVTX0RFU0NfQ1JBU0hfS0VSTkVMID0gMSwKIElP UkVTX0RFU0NfQUNQSV9UQUJMRVMgPSAyLAogSU9SRVNfREVTQ19BQ1BJX05WX1NUT1JBR0UgPSAz LAogSU9SRVNfREVTQ19QRVJTSVNURU5UX01FTU9SWSA9IDQsCiBJT1JFU19ERVNDX1BFUlNJU1RF TlRfTUVNT1JZX0xFR0FDWSA9IDUsCiBJT1JFU19ERVNDX0RFVklDRV9QUklWQVRFX01FTU9SWSA9 IDYsCiBJT1JFU19ERVNDX1JFU0VSVkVEID0gNywKIElPUkVTX0RFU0NfU09GVF9SRVNFUlZFRCA9 IDgsCn07CgoKCgplbnVtIHsKIElPUkVTX01BUF9TWVNURU1fUkFNID0gKCgoKDFVTCkpKSA8PCAo MCkpLAogSU9SRVNfTUFQX0VOQ1JZUFRFRCA9ICgoKCgxVUwpKSkgPDwgKDEpKSwKfTsKIyAxNzkg Ii4vaW5jbHVkZS9saW51eC9pb3BvcnQuaCIKZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSBpb3BvcnRf cmVzb3VyY2U7CmV4dGVybiBzdHJ1Y3QgcmVzb3VyY2UgaW9tZW1fcmVzb3VyY2U7CgpleHRlcm4g c3RydWN0IHJlc291cmNlICpyZXF1ZXN0X3Jlc291cmNlX2NvbmZsaWN0KHN0cnVjdCByZXNvdXJj ZSAqcm9vdCwgc3RydWN0IHJlc291cmNlICpuZXcpOwpleHRlcm4gaW50IHJlcXVlc3RfcmVzb3Vy Y2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CmV4dGVybiBp bnQgcmVsZWFzZV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CnZvaWQgcmVsZWFzZV9j aGlsZF9yZXNvdXJjZXMoc3RydWN0IHJlc291cmNlICpuZXcpOwpleHRlcm4gdm9pZCByZXNlcnZl X3JlZ2lvbl93aXRoX3NwbGl0KHN0cnVjdCByZXNvdXJjZSAqcm9vdCwKICAgICAgICByZXNvdXJj ZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBlbmQsCiAgICAgICAgY29uc3QgY2hhciAq bmFtZSk7CmV4dGVybiBzdHJ1Y3QgcmVzb3VyY2UgKmluc2VydF9yZXNvdXJjZV9jb25mbGljdChz dHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwgc3RydWN0IHJlc291cmNlICpuZXcpOwpleHRlcm4gaW50 IGluc2VydF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwgc3RydWN0IHJlc291cmNl ICpuZXcpOwpleHRlcm4gdm9pZCBpbnNlcnRfcmVzb3VyY2VfZXhwYW5kX3RvX2ZpdChzdHJ1Y3Qg cmVzb3VyY2UgKnJvb3QsIHN0cnVjdCByZXNvdXJjZSAqbmV3KTsKZXh0ZXJuIGludCByZW1vdmVf cmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpvbGQpOwpleHRlcm4gdm9pZCBhcmNoX3JlbW92ZV9y ZXNlcnZhdGlvbnMoc3RydWN0IHJlc291cmNlICphdmFpbCk7CmV4dGVybiBpbnQgYWxsb2NhdGVf cmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ldywKICAg ICAgICByZXNvdXJjZV9zaXplX3Qgc2l6ZSwgcmVzb3VyY2Vfc2l6ZV90IG1pbiwKICAgICAgICBy ZXNvdXJjZV9zaXplX3QgbWF4LCByZXNvdXJjZV9zaXplX3QgYWxpZ24sCiAgICAgICAgcmVzb3Vy Y2Vfc2l6ZV90ICgqYWxpZ25mKSh2b2lkICosCiAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmVz b3VyY2UgKiwKICAgICAgICAgICAgIHJlc291cmNlX3NpemVfdCwKICAgICAgICAgICAgIHJlc291 cmNlX3NpemVfdCksCiAgICAgICAgdm9pZCAqYWxpZ25mX2RhdGEpOwpzdHJ1Y3QgcmVzb3VyY2Ug Kmxvb2t1cF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHJlc291cmNlX3NpemVfdCBz dGFydCk7CmludCBhZGp1c3RfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyZXMsIHJlc291cmNl X3NpemVfdCBzdGFydCwKICAgICAgcmVzb3VyY2Vfc2l6ZV90IHNpemUpOwpyZXNvdXJjZV9zaXpl X3QgcmVzb3VyY2VfYWxpZ25tZW50KHN0cnVjdCByZXNvdXJjZSAqcmVzKTsKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcmVzb3VyY2Vfc2l6 ZV90IHJlc291cmNlX3NpemUoY29uc3Qgc3RydWN0IHJlc291cmNlICpyZXMpCnsKIHJldHVybiBy ZXMtPmVuZCAtIHJlcy0+c3RhcnQgKyAxOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VfdHlwZShj b25zdCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcykKewogcmV0dXJuIHJlcy0+ZmxhZ3MgJiAweDAwMDAx ZjAwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VfZXh0X3R5cGUoY29uc3Qgc3RydWN0IHJlc291 cmNlICpyZXMpCnsKIHJldHVybiByZXMtPmZsYWdzICYgMHgwMTAwMDAwMDsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCByZXNv dXJjZV9jb250YWlucyhzdHJ1Y3QgcmVzb3VyY2UgKnIxLCBzdHJ1Y3QgcmVzb3VyY2UgKnIyKQp7 CiBpZiAocmVzb3VyY2VfdHlwZShyMSkgIT0gcmVzb3VyY2VfdHlwZShyMikpCiAgcmV0dXJuIGZh bHNlOwogaWYgKHIxLT5mbGFncyAmIDB4MjAwMDAwMDAgfHwgcjItPmZsYWdzICYgMHgyMDAwMDAw MCkKICByZXR1cm4gZmFsc2U7CiByZXR1cm4gcjEtPnN0YXJ0IDw9IHIyLT5zdGFydCAmJiByMS0+ ZW5kID49IHIyLT5lbmQ7Cn0KIyAyMzggIi4vaW5jbHVkZS9saW51eC9pb3BvcnQuaCIKZXh0ZXJu IHN0cnVjdCByZXNvdXJjZSAqIF9fcmVxdWVzdF9yZWdpb24oc3RydWN0IHJlc291cmNlICosCiAg ICAgcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LAogICAgIHJlc291cmNlX3NpemVfdCBuLAogICAgIGNv bnN0IGNoYXIgKm5hbWUsIGludCBmbGFncyk7CgoKCgoKZXh0ZXJuIHZvaWQgX19yZWxlYXNlX3Jl Z2lvbihzdHJ1Y3QgcmVzb3VyY2UgKiwgcmVzb3VyY2Vfc2l6ZV90LAogICAgcmVzb3VyY2Vfc2l6 ZV90KTsKCmV4dGVybiBpbnQgcmVsZWFzZV9tZW1fcmVnaW9uX2FkanVzdGFibGUoc3RydWN0IHJl c291cmNlICosIHJlc291cmNlX3NpemVfdCwKICAgIHJlc291cmNlX3NpemVfdCk7CgoKCnN0cnVj dCBkZXZpY2U7CgpleHRlcm4gaW50IGRldm1fcmVxdWVzdF9yZXNvdXJjZShzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCByZXNvdXJjZSAqcm9vdCwKICAgICBzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7 CmV4dGVybiB2b2lkIGRldm1fcmVsZWFzZV9yZXNvdXJjZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCByZXNvdXJjZSAqbmV3KTsKCgoKCgoKZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSAqIF9fZGV2 bV9yZXF1ZXN0X3JlZ2lvbihzdHJ1Y3QgZGV2aWNlICpkZXYsCiAgICBzdHJ1Y3QgcmVzb3VyY2Ug KnBhcmVudCwgcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LAogICAgcmVzb3VyY2Vfc2l6ZV90IG4sIGNv bnN0IGNoYXIgKm5hbWUpOwoKCgoKCgpleHRlcm4gdm9pZCBfX2Rldm1fcmVsZWFzZV9yZWdpb24o c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwKICAgICAgcmVzb3Vy Y2Vfc2l6ZV90IHN0YXJ0LCByZXNvdXJjZV9zaXplX3Qgbik7CmV4dGVybiBpbnQgaW9tZW1fbWFw X3Nhbml0eV9jaGVjayhyZXNvdXJjZV9zaXplX3QgYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKTsK ZXh0ZXJuIGJvb2wgaW9tZW1faXNfZXhjbHVzaXZlKHU2NCBhZGRyKTsKCmV4dGVybiBpbnQKd2Fs a19zeXN0ZW1fcmFtX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25n IG5yX3BhZ2VzLAogIHZvaWQgKmFyZywgaW50ICgqZnVuYykodW5zaWduZWQgbG9uZywgdW5zaWdu ZWQgbG9uZywgdm9pZCAqKSk7CmV4dGVybiBpbnQKd2Fsa19tZW1fcmVzKHU2NCBzdGFydCwgdTY0 IGVuZCwgdm9pZCAqYXJnLAogICAgICBpbnQgKCpmdW5jKShzdHJ1Y3QgcmVzb3VyY2UgKiwgdm9p ZCAqKSk7CmV4dGVybiBpbnQKd2Fsa19zeXN0ZW1fcmFtX3Jlcyh1NjQgc3RhcnQsIHU2NCBlbmQs IHZvaWQgKmFyZywKICAgICAgaW50ICgqZnVuYykoc3RydWN0IHJlc291cmNlICosIHZvaWQgKikp OwpleHRlcm4gaW50CndhbGtfaW9tZW1fcmVzX2Rlc2ModW5zaWduZWQgbG9uZyBkZXNjLCB1bnNp Z25lZCBsb25nIGZsYWdzLCB1NjQgc3RhcnQsIHU2NCBlbmQsCiAgICAgIHZvaWQgKmFyZywgaW50 ICgqZnVuYykoc3RydWN0IHJlc291cmNlICosIHZvaWQgKikpOwoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcmVzb3VyY2Vfb3Zl cmxhcHMoc3RydWN0IHJlc291cmNlICpyMSwgc3RydWN0IHJlc291cmNlICpyMikKewogICAgICAg cmV0dXJuIChyMS0+c3RhcnQgPD0gcjItPmVuZCAmJiByMS0+ZW5kID49IHIyLT5zdGFydCk7Cn0K CnN0cnVjdCByZXNvdXJjZSAqZGV2bV9yZXF1ZXN0X2ZyZWVfbWVtX3JlZ2lvbihzdHJ1Y3QgZGV2 aWNlICpkZXYsCiAgc3RydWN0IHJlc291cmNlICpiYXNlLCB1bnNpZ25lZCBsb25nIHNpemUpOwpz dHJ1Y3QgcmVzb3VyY2UgKnJlcXVlc3RfZnJlZV9tZW1fcmVnaW9uKHN0cnVjdCByZXNvdXJjZSAq YmFzZSwKICB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IGNoYXIgKm5hbWUpOwojIDE3ICIuL2lu Y2x1ZGUvbGludXgvZGV2aWNlLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgva29iamVjdC5oIiAx CiMgMjAgIi4vaW5jbHVkZS9saW51eC9rb2JqZWN0LmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3N5 c2ZzLmgiIDEKIyAxNiAiLi9pbmNsdWRlL2xpbnV4L3N5c2ZzLmgiCiMgMSAiLi9pbmNsdWRlL2xp bnV4L2tlcm5mcy5oIiAxCiMgMTMgIi4vaW5jbHVkZS9saW51eC9rZXJuZnMuaCIKIyAxICIuL2lu Y2x1ZGUvbGludXgvaWRyLmgiIDEKIyAxOSAiLi9pbmNsdWRlL2xpbnV4L2lkci5oIgpzdHJ1Y3Qg aWRyIHsKIHN0cnVjdCB4YXJyYXkgaWRyX3J0OwogdW5zaWduZWQgaW50IGlkcl9iYXNlOwogdW5z aWduZWQgaW50IGlkcl9uZXh0Owp9OwojIDY2ICIuL2luY2x1ZGUvbGludXgvaWRyLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGludCBpZHJfZ2V0X2N1cnNvcihjb25zdCBzdHJ1Y3QgaWRyICppZHIpCnsKIHJldHVybiAo eyB1bmlvbiB7IHR5cGVvZihpZHItPmlkcl9uZXh0KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191 OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKGlkci0+aWRyX25leHQpLCBfX3UuX19jLCBzaXpl b2YoaWRyLT5pZHJfbmV4dCkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKGlkci0+ aWRyX25leHQpLCBfX3UuX19jLCBzaXplb2YoaWRyLT5pZHJfbmV4dCkpOyBkbyB7IH0gd2hpbGUg KDApOyBfX3UuX192YWw7IH0pOwp9CiMgNzkgIi4vaW5jbHVkZS9saW51eC9pZHIuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBp ZHJfc2V0X2N1cnNvcihzdHJ1Y3QgaWRyICppZHIsIHVuc2lnbmVkIGludCB2YWwpCnsKICh7IHVu aW9uIHsgdHlwZW9mKGlkci0+aWRyX25leHQpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7 IC5fX3ZhbCA9ICggdHlwZW9mKGlkci0+aWRyX25leHQpKSAodmFsKSB9OyBfX3dyaXRlX29uY2Vf c2l6ZSgmKGlkci0+aWRyX25leHQpLCBfX3UuX19jLCBzaXplb2YoaWRyLT5pZHJfbmV4dCkpOyBf X3UuX192YWw7IH0pOwp9CiMgMTEyICIuL2luY2x1ZGUvbGludXgvaWRyLmgiCnZvaWQgaWRyX3By ZWxvYWQoZ2ZwX3QgZ2ZwX21hc2spOwoKaW50IGlkcl9hbGxvYyhzdHJ1Y3QgaWRyICosIHZvaWQg KnB0ciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBnZnBfdCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3dh cm5fdW51c2VkX3Jlc3VsdF9fKSkgaWRyX2FsbG9jX3UzMihzdHJ1Y3QgaWRyICosIHZvaWQgKnB0 ciwgdTMyICppZCwKICAgIHVuc2lnbmVkIGxvbmcgbWF4LCBnZnBfdCk7CmludCBpZHJfYWxsb2Nf Y3ljbGljKHN0cnVjdCBpZHIgKiwgdm9pZCAqcHRyLCBpbnQgc3RhcnQsIGludCBlbmQsIGdmcF90 KTsKdm9pZCAqaWRyX3JlbW92ZShzdHJ1Y3QgaWRyICosIHVuc2lnbmVkIGxvbmcgaWQpOwp2b2lk ICppZHJfZmluZChjb25zdCBzdHJ1Y3QgaWRyICosIHVuc2lnbmVkIGxvbmcgaWQpOwppbnQgaWRy X2Zvcl9lYWNoKGNvbnN0IHN0cnVjdCBpZHIgKiwKICAgaW50ICgqZm4pKGludCBpZCwgdm9pZCAq cCwgdm9pZCAqZGF0YSksIHZvaWQgKmRhdGEpOwp2b2lkICppZHJfZ2V0X25leHQoc3RydWN0IGlk ciAqLCBpbnQgKm5leHRpZCk7CnZvaWQgKmlkcl9nZXRfbmV4dF91bChzdHJ1Y3QgaWRyICosIHVu c2lnbmVkIGxvbmcgKm5leHRpZCk7CnZvaWQgKmlkcl9yZXBsYWNlKHN0cnVjdCBpZHIgKiwgdm9p ZCAqLCB1bnNpZ25lZCBsb25nIGlkKTsKdm9pZCBpZHJfZGVzdHJveShzdHJ1Y3QgaWRyICopOwoj IDEzNSAiLi9pbmNsdWRlL2xpbnV4L2lkci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlkcl9pbml0X2Jhc2Uoc3RydWN0IGlk ciAqaWRyLCBpbnQgYmFzZSkKewogeGFfaW5pdF9mbGFncygmaWRyLT5pZHJfcnQsICgoKCBnZnBf dCk0KSB8ICggZ2ZwX3QpICgxIDw8ICgoKDIzICsgMCkpICsgMCkpKSk7CiBpZHItPmlkcl9iYXNl ID0gYmFzZTsKIGlkci0+aWRyX25leHQgPSAwOwp9CiMgMTQ5ICIuL2luY2x1ZGUvbGludXgvaWRy LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgaWRyX2luaXQoc3RydWN0IGlkciAqaWRyKQp7CiBpZHJfaW5pdF9iYXNlKGlkciwg MCk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgaWRyX2lzX2VtcHR5KGNvbnN0IHN0cnVjdCBpZHIgKmlkcikKewog cmV0dXJuIHJhZGl4X3RyZWVfZW1wdHkoJmlkci0+aWRyX3J0KSAmJgogIHJhZGl4X3RyZWVfdGFn Z2VkKCZpZHItPmlkcl9ydCwgMCk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaWRyX3ByZWxvYWRfZW5kKHZvaWQp CnsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KIyAyNDAgIi4vaW5j bHVkZS9saW51eC9pZHIuaCIKc3RydWN0IGlkYV9iaXRtYXAgewogdW5zaWduZWQgbG9uZyBiaXRt YXBbKDEyOCAvIHNpemVvZihsb25nKSldOwp9OwoKc3RydWN0IGlkYSB7CiBzdHJ1Y3QgeGFycmF5 IHhhOwp9OwojIDI1NSAiLi9pbmNsdWRlL2xpbnV4L2lkci5oIgppbnQgaWRhX2FsbG9jX3Jhbmdl KHN0cnVjdCBpZGEgKiwgdW5zaWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IG1heCwgZ2ZwX3Qp Owp2b2lkIGlkYV9mcmVlKHN0cnVjdCBpZGEgKiwgdW5zaWduZWQgaW50IGlkKTsKdm9pZCBpZGFf ZGVzdHJveShzdHJ1Y3QgaWRhICppZGEpOwojIDI3MCAiLi9pbmNsdWRlL2xpbnV4L2lkci5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgaWRhX2FsbG9jKHN0cnVjdCBpZGEgKmlkYSwgZ2ZwX3QgZ2ZwKQp7CiByZXR1cm4gaWRhX2Fs bG9jX3JhbmdlKGlkYSwgMCwgfjAsIGdmcCk7Cn0KIyAyODcgIi4vaW5jbHVkZS9saW51eC9pZHIu aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IGlkYV9hbGxvY19taW4oc3RydWN0IGlkYSAqaWRhLCB1bnNpZ25lZCBpbnQgbWluLCBn ZnBfdCBnZnApCnsKIHJldHVybiBpZGFfYWxsb2NfcmFuZ2UoaWRhLCBtaW4sIH4wLCBnZnApOwp9 CiMgMzA0ICIuL2luY2x1ZGUvbGludXgvaWRyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBpZGFfYWxsb2NfbWF4KHN0cnVjdCBp ZGEgKmlkYSwgdW5zaWduZWQgaW50IG1heCwgZ2ZwX3QgZ2ZwKQp7CiByZXR1cm4gaWRhX2FsbG9j X3JhbmdlKGlkYSwgMCwgbWF4LCBnZnApOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlkYV9pbml0KHN0cnVjdCBpZGEgKmlk YSkKewogeGFfaW5pdF9mbGFncygmaWRhLT54YSwgKCgoIGdmcF90KVhBX0xPQ0tfSVJRKSB8ICgo KCBnZnBfdCk0VSkgfCAoKCBnZnBfdCkoKDFVIDw8ICgyMyArIDApKSA8PCAoIHVuc2lnbmVkKSgo KCB4YV9tYXJrX3QpMFUpKSkpKSkpOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBpZGFfaXNfZW1wdHkoY29uc3Qgc3Ry dWN0IGlkYSAqaWRhKQp7CiByZXR1cm4geGFfZW1wdHkoJmlkYS0+eGEpOwp9CiMgMTQgIi4vaW5j bHVkZS9saW51eC9rZXJuZnMuaCIgMgoKCgoKCgpzdHJ1Y3QgZmlsZTsKc3RydWN0IGRlbnRyeTsK c3RydWN0IGlhdHRyOwpzdHJ1Y3Qgc2VxX2ZpbGU7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKc3Ry dWN0IHN1cGVyX2Jsb2NrOwpzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZTsKc3RydWN0IHBvbGxfdGFi bGVfc3RydWN0OwpzdHJ1Y3QgZnNfY29udGV4dDsKCnN0cnVjdCBrZXJuZnNfZnNfY29udGV4dDsK c3RydWN0IGtlcm5mc19vcGVuX25vZGU7CnN0cnVjdCBrZXJuZnNfaWF0dHJzOwoKZW51bSBrZXJu ZnNfbm9kZV90eXBlIHsKIEtFUk5GU19ESVIgPSAweDAwMDEsCiBLRVJORlNfRklMRSA9IDB4MDAw MiwKIEtFUk5GU19MSU5LID0gMHgwMDA0LAp9OwoKCgoKZW51bSBrZXJuZnNfbm9kZV9mbGFnIHsK IEtFUk5GU19BQ1RJVkFURUQgPSAweDAwMTAsCiBLRVJORlNfTlMgPSAweDAwMjAsCiBLRVJORlNf SEFTX1NFUV9TSE9XID0gMHgwMDQwLAogS0VSTkZTX0hBU19NTUFQID0gMHgwMDgwLAogS0VSTkZT X0xPQ0tERVAgPSAweDAxMDAsCiBLRVJORlNfU1VJQ0lEQUwgPSAweDA0MDAsCiBLRVJORlNfU1VJ Q0lERUQgPSAweDA4MDAsCiBLRVJORlNfRU1QVFlfRElSID0gMHgxMDAwLAogS0VSTkZTX0hBU19S RUxFQVNFID0gMHgyMDAwLAp9OwoKCmVudW0ga2VybmZzX3Jvb3RfZmxhZyB7CgoKCgoKCiBLRVJO RlNfUk9PVF9DUkVBVEVfREVBQ1RJVkFURUQgPSAweDAwMDEsCiMgNzQgIi4vaW5jbHVkZS9saW51 eC9rZXJuZnMuaCIKIEtFUk5GU19ST09UX0VYVFJBX09QRU5fUEVSTV9DSEVDSyA9IDB4MDAwMiwK CgoKCgogS0VSTkZTX1JPT1RfU1VQUE9SVF9FWFBPUlRPUCA9IDB4MDAwNCwKfTsKCgpzdHJ1Y3Qg a2VybmZzX2VsZW1fZGlyIHsKIHVuc2lnbmVkIGxvbmcgc3ViZGlyczsKCiBzdHJ1Y3QgcmJfcm9v dCBjaGlsZHJlbjsKCgoKCgogc3RydWN0IGtlcm5mc19yb290ICpyb290Owp9OwoKc3RydWN0IGtl cm5mc19lbGVtX3N5bWxpbmsgewogc3RydWN0IGtlcm5mc19ub2RlICp0YXJnZXRfa247Cn07Cgpz dHJ1Y3Qga2VybmZzX2VsZW1fYXR0ciB7CiBjb25zdCBzdHJ1Y3Qga2VybmZzX29wcyAqb3BzOwog c3RydWN0IGtlcm5mc19vcGVuX25vZGUgKm9wZW47CiBsb2ZmX3Qgc2l6ZTsKIHN0cnVjdCBrZXJu ZnNfbm9kZSAqbm90aWZ5X25leHQ7Cn07CiMgMTE2ICIuL2luY2x1ZGUvbGludXgva2VybmZzLmgi CnN0cnVjdCBrZXJuZnNfbm9kZSB7CiBhdG9taWNfdCBjb3VudDsKIGF0b21pY190IGFjdGl2ZTsK IyAxMjggIi4vaW5jbHVkZS9saW51eC9rZXJuZnMuaCIKIHN0cnVjdCBrZXJuZnNfbm9kZSAqcGFy ZW50OwogY29uc3QgY2hhciAqbmFtZTsKCiBzdHJ1Y3QgcmJfbm9kZSByYjsKCiBjb25zdCB2b2lk ICpuczsKIHVuc2lnbmVkIGludCBoYXNoOwogdW5pb24gewogIHN0cnVjdCBrZXJuZnNfZWxlbV9k aXIgZGlyOwogIHN0cnVjdCBrZXJuZnNfZWxlbV9zeW1saW5rIHN5bWxpbms7CiAgc3RydWN0IGtl cm5mc19lbGVtX2F0dHIgYXR0cjsKIH07Cgogdm9pZCAqcHJpdjsKCgoKCgogdTY0IGlkOwoKIHVu c2lnbmVkIHNob3J0IGZsYWdzOwogdW1vZGVfdCBtb2RlOwogc3RydWN0IGtlcm5mc19pYXR0cnMg KmlhdHRyOwp9OwojIDE2MSAiLi9pbmNsdWRlL2xpbnV4L2tlcm5mcy5oIgpzdHJ1Y3Qga2VybmZz X3N5c2NhbGxfb3BzIHsKIGludCAoKnNob3dfb3B0aW9ucykoc3RydWN0IHNlcV9maWxlICpzZiwg c3RydWN0IGtlcm5mc19yb290ICpyb290KTsKCiBpbnQgKCpta2Rpcikoc3RydWN0IGtlcm5mc19u b2RlICpwYXJlbnQsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICB1bW9kZV90IG1vZGUpOwogaW50 ICgqcm1kaXIpKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pOwogaW50ICgqcmVuYW1lKShzdHJ1Y3Qg a2VybmZzX25vZGUgKmtuLCBzdHJ1Y3Qga2VybmZzX25vZGUgKm5ld19wYXJlbnQsCiAgICAgICAg Y29uc3QgY2hhciAqbmV3X25hbWUpOwogaW50ICgqc2hvd19wYXRoKShzdHJ1Y3Qgc2VxX2ZpbGUg KnNmLCBzdHJ1Y3Qga2VybmZzX25vZGUgKmtuLAogICAgc3RydWN0IGtlcm5mc19yb290ICpyb290 KTsKfTsKCnN0cnVjdCBrZXJuZnNfcm9vdCB7Cgogc3RydWN0IGtlcm5mc19ub2RlICprbjsKIHVu c2lnbmVkIGludCBmbGFnczsKCgogc3RydWN0IGlkciBpbm9faWRyOwogdTMyIGxhc3RfaWRfbG93 Yml0czsKIHUzMiBpZF9oaWdoYml0czsKIHN0cnVjdCBrZXJuZnNfc3lzY2FsbF9vcHMgKnN5c2Nh bGxfb3BzOwoKCiBzdHJ1Y3QgbGlzdF9oZWFkIHN1cGVyczsKCiB3YWl0X3F1ZXVlX2hlYWRfdCBk ZWFjdGl2YXRlX3dhaXRxOwp9OwoKc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgewoKIHN0cnVjdCBr ZXJuZnNfbm9kZSAqa247CiBzdHJ1Y3QgZmlsZSAqZmlsZTsKIHN0cnVjdCBzZXFfZmlsZSAqc2Vx X2ZpbGU7CiB2b2lkICpwcml2OwoKCiBzdHJ1Y3QgbXV0ZXggbXV0ZXg7CiBzdHJ1Y3QgbXV0ZXgg cHJlYWxsb2NfbXV0ZXg7CiBpbnQgZXZlbnQ7CiBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiBjaGFy ICpwcmVhbGxvY19idWY7Cgogc2l6ZV90IGF0b21pY193cml0ZV9sZW47CiBib29sIG1tYXBwZWQ6 MTsKIGJvb2wgcmVsZWFzZWQ6MTsKIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCAq dm1fb3BzOwp9OwoKc3RydWN0IGtlcm5mc19vcHMgewoKCgoKIGludCAoKm9wZW4pKHN0cnVjdCBr ZXJuZnNfb3Blbl9maWxlICpvZik7CiB2b2lkICgqcmVsZWFzZSkoc3RydWN0IGtlcm5mc19vcGVu X2ZpbGUgKm9mKTsKIyAyMjkgIi4vaW5jbHVkZS9saW51eC9rZXJuZnMuaCIKIGludCAoKnNlcV9z aG93KShzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCB2b2lkICp2KTsKCiB2b2lkICooKnNlcV9zdGFydCko c3RydWN0IHNlcV9maWxlICpzZiwgbG9mZl90ICpwcG9zKTsKIHZvaWQgKigqc2VxX25leHQpKHN0 cnVjdCBzZXFfZmlsZSAqc2YsIHZvaWQgKnYsIGxvZmZfdCAqcHBvcyk7CiB2b2lkICgqc2VxX3N0 b3ApKHN0cnVjdCBzZXFfZmlsZSAqc2YsIHZvaWQgKnYpOwoKIHNzaXplX3QgKCpyZWFkKShzdHJ1 Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ5dGVzLAogICBsb2Zm X3Qgb2ZmKTsKIyAyNDUgIi4vaW5jbHVkZS9saW51eC9rZXJuZnMuaCIKIHNpemVfdCBhdG9taWNf d3JpdGVfbGVuOwoKCgoKCgogYm9vbCBwcmVhbGxvYzsKIHNzaXplX3QgKCp3cml0ZSkoc3RydWN0 IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsIHNpemVfdCBieXRlcywKICAgIGxvZmZf dCBvZmYpOwoKIF9fcG9sbF90ICgqcG9sbCkoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLAog ICAgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICpwdCk7CgogaW50ICgqbW1hcCkoc3RydWN0IGtl cm5mc19vcGVuX2ZpbGUgKm9mLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CgoKCgp9OwoK CgoKc3RydWN0IGtlcm5mc19mc19jb250ZXh0IHsKIHN0cnVjdCBrZXJuZnNfcm9vdCAqcm9vdDsK IHZvaWQgKm5zX3RhZzsKIHVuc2lnbmVkIGxvbmcgbWFnaWM7CgoKIGJvb2wgbmV3X3NiX2NyZWF0 ZWQ7Cn07CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGVudW0ga2VybmZzX25vZGVfdHlwZSBrZXJuZnNfdHlwZShzdHJ1Y3Qga2VybmZz X25vZGUgKmtuKQp7CiByZXR1cm4ga24tPmZsYWdzICYgMHgwMDBmOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbm9fdCBrZXJuZnNf aWRfaW5vKHU2NCBpZCkKewoKIGlmIChzaXplb2YoaW5vX3QpID49IHNpemVvZih1NjQpKQogIHJl dHVybiBpZDsKIGVsc2UKICByZXR1cm4gKHUzMilpZDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMyIGtlcm5mc19pZF9nZW4odTY0 IGlkKQp7CgogaWYgKHNpemVvZihpbm9fdCkgPj0gc2l6ZW9mKHU2NCkpCiAgcmV0dXJuIDE7CiBl bHNlCiAgcmV0dXJuIGlkID4+IDMyOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbm9fdCBrZXJuZnNfaW5vKHN0cnVjdCBrZXJuZnNf bm9kZSAqa24pCnsKIHJldHVybiBrZXJuZnNfaWRfaW5vKGtuLT5pZCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlub190IGtlcm5m c19nZW4oc3RydWN0IGtlcm5mc19ub2RlICprbikKewogcmV0dXJuIGtlcm5mc19pZF9nZW4oa24t PmlkKTsKfQojIDMyMSAiLi9pbmNsdWRlL2xpbnV4L2tlcm5mcy5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGtlcm5mc19lbmFi bGVfbnMoc3RydWN0IGtlcm5mc19ub2RlICprbikKewogKHsgaW50IF9fcmV0X3dhcm5fb24gPSAh IShrZXJuZnNfdHlwZShrbikgIT0gS0VSTkZTX0RJUik7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEh KF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpc dCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3 XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2Fk ZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4i ICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQj IGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDog ImkiICgiaW5jbHVkZS9saW51eC9rZXJuZnMuaCIpLCAiaSIgKDMyMyksICJpIiAoKDEgPDwgMCl8 KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkp OyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAu ZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25c blx0IiA6IDogImkiICgzNSkpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEo X19yZXRfd2Fybl9vbiksIDApOyB9KTsKICh7IGludCBfX3JldF93YXJuX29uID0gISEoISgoeyB1 bmlvbiB7IHR5cGVvZigoJmtuLT5kaXIuY2hpbGRyZW4pLT5yYl9ub2RlKSBfX3ZhbDsgY2hhciBf X2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKCgma24tPmRpci5jaGlsZHJl biktPnJiX25vZGUpLCBfX3UuX19jLCBzaXplb2YoKCZrbi0+ZGlyLmNoaWxkcmVuKS0+cmJfbm9k ZSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKCgma24tPmRpci5jaGlsZHJlbikt PnJiX25vZGUpLCBfX3UuX19jLCBzaXplb2YoKCZrbi0+ZGlyLmNoaWxkcmVuKS0+cmJfbm9kZSkp OyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pID09ICgodm9pZCAqKTApKSk7IGlmIChf X2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lu bGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlv biBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQj IGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMg YnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIg Ilx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIg Ii5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9rZXJuZnMuaCIpLCAiaSIgKDMy NCksICJpIiAoKDEgPDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihz dHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5c dCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5c blx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgzNikpOyB9KTsgfSB3aGlsZSAoMCk7IF9f YnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKIGtuLT5mbGFncyB8PSBL RVJORlNfTlM7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wga2VybmZzX25zX2VuYWJsZWQoc3RydWN0IGtlcm5mc19u b2RlICprbikKewogcmV0dXJuIGtuLT5mbGFncyAmIEtFUk5GU19OUzsKfQoKaW50IGtlcm5mc19u YW1lKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24sIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zmxlbik7Cmlu dCBrZXJuZnNfcGF0aF9mcm9tX25vZGUoc3RydWN0IGtlcm5mc19ub2RlICpyb290X2tuLCBzdHJ1 Y3Qga2VybmZzX25vZGUgKmtuLAogICAgIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zmxlbik7CnZvaWQg cHJfY29udF9rZXJuZnNfbmFtZShzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKdm9pZCBwcl9jb250 X2tlcm5mc19wYXRoKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pOwpzdHJ1Y3Qga2VybmZzX25vZGUg Kmtlcm5mc19nZXRfcGFyZW50KHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pOwpzdHJ1Y3Qga2VybmZz X25vZGUgKmtlcm5mc19maW5kX2FuZF9nZXRfbnMoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQs CiAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqbnMpOwpzdHJ1Y3Qga2VybmZz X25vZGUgKmtlcm5mc193YWxrX2FuZF9nZXRfbnMoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQs CiAgICAgICAgY29uc3QgY2hhciAqcGF0aCwgY29uc3Qgdm9pZCAqbnMpOwp2b2lkIGtlcm5mc19n ZXQoc3RydWN0IGtlcm5mc19ub2RlICprbik7CnZvaWQga2VybmZzX3B1dChzdHJ1Y3Qga2VybmZz X25vZGUgKmtuKTsKCnN0cnVjdCBrZXJuZnNfbm9kZSAqa2VybmZzX25vZGVfZnJvbV9kZW50cnko c3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKc3RydWN0IGtlcm5mc19yb290ICprZXJuZnNfcm9vdF9m cm9tX3NiKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpzdHJ1Y3QgaW5vZGUgKmtlcm5mc19nZXRf aW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtlcm5mc19ub2RlICprbik7Cgpz dHJ1Y3QgZGVudHJ5ICprZXJuZnNfbm9kZV9kZW50cnkoc3RydWN0IGtlcm5mc19ub2RlICprbiwK ICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnN0cnVjdCBrZXJuZnNfcm9vdCAqa2VybmZz X2NyZWF0ZV9yb290KHN0cnVjdCBrZXJuZnNfc3lzY2FsbF9vcHMgKnNjb3BzLAogICAgICAgICAg IHVuc2lnbmVkIGludCBmbGFncywgdm9pZCAqcHJpdik7CnZvaWQga2VybmZzX2Rlc3Ryb3lfcm9v dChzdHJ1Y3Qga2VybmZzX3Jvb3QgKnJvb3QpOwoKc3RydWN0IGtlcm5mc19ub2RlICprZXJuZnNf Y3JlYXRlX2Rpcl9ucyhzdHJ1Y3Qga2VybmZzX25vZGUgKnBhcmVudCwKICAgICAgY29uc3QgY2hh ciAqbmFtZSwgdW1vZGVfdCBtb2RlLAogICAgICBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkLAogICAg ICB2b2lkICpwcml2LCBjb25zdCB2b2lkICpucyk7CnN0cnVjdCBrZXJuZnNfbm9kZSAqa2VybmZz X2NyZWF0ZV9lbXB0eV9kaXIoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQsCiAgICAgICAgIGNv bnN0IGNoYXIgKm5hbWUpOwpzdHJ1Y3Qga2VybmZzX25vZGUgKl9fa2VybmZzX2NyZWF0ZV9maWxl KHN0cnVjdCBrZXJuZnNfbm9kZSAqcGFyZW50LAogICAgICBjb25zdCBjaGFyICpuYW1lLCB1bW9k ZV90IG1vZGUsCiAgICAgIGt1aWRfdCB1aWQsIGtnaWRfdCBnaWQsCiAgICAgIGxvZmZfdCBzaXpl LAogICAgICBjb25zdCBzdHJ1Y3Qga2VybmZzX29wcyAqb3BzLAogICAgICB2b2lkICpwcml2LCBj b25zdCB2b2lkICpucywKICAgICAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXkpOwpzdHJ1Y3Qg a2VybmZzX25vZGUgKmtlcm5mc19jcmVhdGVfbGluayhzdHJ1Y3Qga2VybmZzX25vZGUgKnBhcmVu dCwKICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgIHN0cnVjdCBrZXJuZnNf bm9kZSAqdGFyZ2V0KTsKdm9pZCBrZXJuZnNfYWN0aXZhdGUoc3RydWN0IGtlcm5mc19ub2RlICpr bik7CnZvaWQga2VybmZzX3JlbW92ZShzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKdm9pZCBrZXJu ZnNfYnJlYWtfYWN0aXZlX3Byb3RlY3Rpb24oc3RydWN0IGtlcm5mc19ub2RlICprbik7CnZvaWQg a2VybmZzX3VuYnJlYWtfYWN0aXZlX3Byb3RlY3Rpb24oc3RydWN0IGtlcm5mc19ub2RlICprbik7 CmJvb2wga2VybmZzX3JlbW92ZV9zZWxmKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pOwppbnQga2Vy bmZzX3JlbW92ZV9ieV9uYW1lX25zKHN0cnVjdCBrZXJuZnNfbm9kZSAqcGFyZW50LCBjb25zdCBj aGFyICpuYW1lLAogICAgICAgIGNvbnN0IHZvaWQgKm5zKTsKaW50IGtlcm5mc19yZW5hbWVfbnMo c3RydWN0IGtlcm5mc19ub2RlICprbiwgc3RydWN0IGtlcm5mc19ub2RlICpuZXdfcGFyZW50LAog ICAgICAgY29uc3QgY2hhciAqbmV3X25hbWUsIGNvbnN0IHZvaWQgKm5ld19ucyk7CmludCBrZXJu ZnNfc2V0YXR0cihzdHJ1Y3Qga2VybmZzX25vZGUgKmtuLCBjb25zdCBzdHJ1Y3QgaWF0dHIgKmlh dHRyKTsKX19wb2xsX3Qga2VybmZzX2dlbmVyaWNfcG9sbChzdHJ1Y3Qga2VybmZzX29wZW5fZmls ZSAqb2YsCiAgICAgICAgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICpwdCk7CnZvaWQga2VybmZz X25vdGlmeShzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKCmludCBrZXJuZnNfeGF0dHJfZ2V0KHN0 cnVjdCBrZXJuZnNfbm9kZSAqa24sIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICB2b2lkICp2YWx1 ZSwgc2l6ZV90IHNpemUpOwppbnQga2VybmZzX3hhdHRyX3NldChzdHJ1Y3Qga2VybmZzX25vZGUg KmtuLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCBz aXplLCBpbnQgZmxhZ3MpOwoKY29uc3Qgdm9pZCAqa2VybmZzX3N1cGVyX25zKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IpOwppbnQga2VybmZzX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYyk7 CnZvaWQga2VybmZzX2ZyZWVfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZmMpOwp2b2lk IGtlcm5mc19raWxsX3NiKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoKdm9pZCBrZXJuZnNfaW5p dCh2b2lkKTsKCnN0cnVjdCBrZXJuZnNfbm9kZSAqa2VybmZzX2ZpbmRfYW5kX2dldF9ub2RlX2J5 X2lkKHN0cnVjdCBrZXJuZnNfcm9vdCAqcm9vdCwKICAgICAgICAgdTY0IGlkKTsKIyA1MzMgIi4v aW5jbHVkZS9saW51eC9rZXJuZnMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGtlcm5mc19wYXRoKHN0cnVjdCBrZXJuZnNfbm9k ZSAqa24sIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbikKewogcmV0dXJuIGtlcm5mc19wYXRoX2Zy b21fbm9kZShrbiwgKCh2b2lkICopMCksIGJ1ZiwgYnVmbGVuKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtlcm5mc19u b2RlICoKa2VybmZzX2ZpbmRfYW5kX2dldChzdHJ1Y3Qga2VybmZzX25vZGUgKmtuLCBjb25zdCBj aGFyICpuYW1lKQp7CiByZXR1cm4ga2VybmZzX2ZpbmRfYW5kX2dldF9ucyhrbiwgbmFtZSwgKCh2 b2lkICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2VybmZzX25vZGUgKgprZXJuZnNfd2Fsa19hbmRfZ2V0KHN0 cnVjdCBrZXJuZnNfbm9kZSAqa24sIGNvbnN0IGNoYXIgKnBhdGgpCnsKIHJldHVybiBrZXJuZnNf d2Fsa19hbmRfZ2V0X25zKGtuLCBwYXRoLCAoKHZvaWQgKikwKSk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrZXJuZnNf bm9kZSAqCmtlcm5mc19jcmVhdGVfZGlyKHN0cnVjdCBrZXJuZnNfbm9kZSAqcGFyZW50LCBjb25z dCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCiAgICB2b2lkICpwcml2KQp7CiByZXR1cm4ga2Vy bmZzX2NyZWF0ZV9kaXJfbnMocGFyZW50LCBuYW1lLCBtb2RlLAogICAgICAgIChrdWlkX3QpeyAw IH0sIChrZ2lkX3QpeyAwIH0sCiAgICAgICAgcHJpdiwgKCh2b2lkICopMCkpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qg a2VybmZzX25vZGUgKgprZXJuZnNfY3JlYXRlX2ZpbGVfbnMoc3RydWN0IGtlcm5mc19ub2RlICpw YXJlbnQsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgdW1vZGVfdCBtb2RlLCBrdWlkX3QgdWlk LCBrZ2lkX3QgZ2lkLAogICAgICAgIGxvZmZfdCBzaXplLCBjb25zdCBzdHJ1Y3Qga2VybmZzX29w cyAqb3BzLAogICAgICAgIHZvaWQgKnByaXYsIGNvbnN0IHZvaWQgKm5zKQp7CiBzdHJ1Y3QgbG9j a19jbGFzc19rZXkgKmtleSA9ICgodm9pZCAqKTApOwoKCgoKIHJldHVybiBfX2tlcm5mc19jcmVh dGVfZmlsZShwYXJlbnQsIG5hbWUsIG1vZGUsIHVpZCwgZ2lkLAogICAgICAgIHNpemUsIG9wcywg cHJpdiwgbnMsIGtleSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrZXJuZnNfbm9kZSAqCmtlcm5mc19jcmVhdGVfZmls ZShzdHJ1Y3Qga2VybmZzX25vZGUgKnBhcmVudCwgY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBt b2RlLAogICAgIGxvZmZfdCBzaXplLCBjb25zdCBzdHJ1Y3Qga2VybmZzX29wcyAqb3BzLCB2b2lk ICpwcml2KQp7CiByZXR1cm4ga2VybmZzX2NyZWF0ZV9maWxlX25zKHBhcmVudCwgbmFtZSwgbW9k ZSwKICAgICAgICAgKGt1aWRfdCl7IDAgfSwgKGtnaWRfdCl7IDAgfSwKICAgICAgICAgc2l6ZSwg b3BzLCBwcml2LCAoKHZvaWQgKikwKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBrZXJuZnNfcmVtb3ZlX2J5X25hbWUoc3Ry dWN0IGtlcm5mc19ub2RlICpwYXJlbnQsCiAgICAgY29uc3QgY2hhciAqbmFtZSkKewogcmV0dXJu IGtlcm5mc19yZW1vdmVfYnlfbmFtZV9ucyhwYXJlbnQsIG5hbWUsICgodm9pZCAqKTApKTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IGtlcm5mc19yZW5hbWUoc3RydWN0IGtlcm5mc19ub2RlICprbiwKICAgIHN0cnVjdCBrZXJu ZnNfbm9kZSAqbmV3X3BhcmVudCwKICAgIGNvbnN0IGNoYXIgKm5ld19uYW1lKQp7CiByZXR1cm4g a2VybmZzX3JlbmFtZV9ucyhrbiwgbmV3X3BhcmVudCwgbmV3X25hbWUsICgodm9pZCAqKTApKTsK fQojIDE3ICIuL2luY2x1ZGUvbGludXgvc3lzZnMuaCIgMgoKCgoKIyAxICIuL2luY2x1ZGUvbGlu dXgva29iamVjdF9ucy5oIiAxCiMgMTkgIi4vaW5jbHVkZS9saW51eC9rb2JqZWN0X25zLmgiCnN0 cnVjdCBzb2NrOwpzdHJ1Y3Qga29iamVjdDsKCgoKCgplbnVtIGtvYmpfbnNfdHlwZSB7CiBLT0JK X05TX1RZUEVfTk9ORSA9IDAsCiBLT0JKX05TX1RZUEVfTkVULAogS09CSl9OU19UWVBFUwp9Owoj IDM5ICIuL2luY2x1ZGUvbGludXgva29iamVjdF9ucy5oIgpzdHJ1Y3Qga29ial9uc190eXBlX29w ZXJhdGlvbnMgewogZW51bSBrb2JqX25zX3R5cGUgdHlwZTsKIGJvb2wgKCpjdXJyZW50X21heV9t b3VudCkodm9pZCk7CiB2b2lkICooKmdyYWJfY3VycmVudF9ucykodm9pZCk7CiBjb25zdCB2b2lk ICooKm5ldGxpbmtfbnMpKHN0cnVjdCBzb2NrICpzayk7CiBjb25zdCB2b2lkICooKmluaXRpYWxf bnMpKHZvaWQpOwogdm9pZCAoKmRyb3BfbnMpKHZvaWQgKik7Cn07CgppbnQga29ial9uc190eXBl X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBrb2JqX25zX3R5cGVfb3BlcmF0aW9ucyAqb3BzKTsKaW50 IGtvYmpfbnNfdHlwZV9yZWdpc3RlcmVkKGVudW0ga29ial9uc190eXBlIHR5cGUpOwpjb25zdCBz dHJ1Y3Qga29ial9uc190eXBlX29wZXJhdGlvbnMgKmtvYmpfY2hpbGRfbnNfb3BzKHN0cnVjdCBr b2JqZWN0ICpwYXJlbnQpOwpjb25zdCBzdHJ1Y3Qga29ial9uc190eXBlX29wZXJhdGlvbnMgKmtv YmpfbnNfb3BzKHN0cnVjdCBrb2JqZWN0ICprb2JqKTsKCmJvb2wga29ial9uc19jdXJyZW50X21h eV9tb3VudChlbnVtIGtvYmpfbnNfdHlwZSB0eXBlKTsKdm9pZCAqa29ial9uc19ncmFiX2N1cnJl bnQoZW51bSBrb2JqX25zX3R5cGUgdHlwZSk7CmNvbnN0IHZvaWQgKmtvYmpfbnNfbmV0bGluayhl bnVtIGtvYmpfbnNfdHlwZSB0eXBlLCBzdHJ1Y3Qgc29jayAqc2spOwpjb25zdCB2b2lkICprb2Jq X25zX2luaXRpYWwoZW51bSBrb2JqX25zX3R5cGUgdHlwZSk7CnZvaWQga29ial9uc19kcm9wKGVu dW0ga29ial9uc190eXBlIHR5cGUsIHZvaWQgKm5zKTsKIyAyMiAiLi9pbmNsdWRlL2xpbnV4L3N5 c2ZzLmgiIDIKCgoKc3RydWN0IGtvYmplY3Q7CnN0cnVjdCBtb2R1bGU7CnN0cnVjdCBiaW5fYXR0 cmlidXRlOwplbnVtIGtvYmpfbnNfdHlwZTsKCnN0cnVjdCBhdHRyaWJ1dGUgewogY29uc3QgY2hh ciAqbmFtZTsKIHVtb2RlX3QgbW9kZTsKCgoKCgp9OwojIDg0ICIuL2luY2x1ZGUvbGludXgvc3lz ZnMuaCIKc3RydWN0IGF0dHJpYnV0ZV9ncm91cCB7CiBjb25zdCBjaGFyICpuYW1lOwogdW1vZGVf dCAoKmlzX3Zpc2libGUpKHN0cnVjdCBrb2JqZWN0ICosCiAgICAgICAgICAgc3RydWN0IGF0dHJp YnV0ZSAqLCBpbnQpOwogdW1vZGVfdCAoKmlzX2Jpbl92aXNpYmxlKShzdHJ1Y3Qga29iamVjdCAq LAogICAgICAgIHN0cnVjdCBiaW5fYXR0cmlidXRlICosIGludCk7CiBzdHJ1Y3QgYXR0cmlidXRl ICoqYXR0cnM7CiBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqKmJpbl9hdHRyczsKfTsKIyAxNTggIi4v aW5jbHVkZS9saW51eC9zeXNmcy5oIgpzdHJ1Y3QgZmlsZTsKc3RydWN0IHZtX2FyZWFfc3RydWN0 OwoKc3RydWN0IGJpbl9hdHRyaWJ1dGUgewogc3RydWN0IGF0dHJpYnV0ZSBhdHRyOwogc2l6ZV90 IHNpemU7CiB2b2lkICpwcml2YXRlOwogc3NpemVfdCAoKnJlYWQpKHN0cnVjdCBmaWxlICosIHN0 cnVjdCBrb2JqZWN0ICosIHN0cnVjdCBiaW5fYXR0cmlidXRlICosCiAgIGNoYXIgKiwgbG9mZl90 LCBzaXplX3QpOwogc3NpemVfdCAoKndyaXRlKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qga29iamVj dCAqLCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqLAogICAgY2hhciAqLCBsb2ZmX3QsIHNpemVfdCk7 CiBpbnQgKCptbWFwKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qga29iamVjdCAqLCBzdHJ1Y3QgYmlu X2F0dHJpYnV0ZSAqYXR0ciwKICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwp9Owoj IDIyMyAiLi9pbmNsdWRlL2xpbnV4L3N5c2ZzLmgiCnN0cnVjdCBzeXNmc19vcHMgewogc3NpemVf dCAoKnNob3cpKHN0cnVjdCBrb2JqZWN0ICosIHN0cnVjdCBhdHRyaWJ1dGUgKiwgY2hhciAqKTsK IHNzaXplX3QgKCpzdG9yZSkoc3RydWN0IGtvYmplY3QgKiwgc3RydWN0IGF0dHJpYnV0ZSAqLCBj b25zdCBjaGFyICosIHNpemVfdCk7Cn07CgoKCmludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51 c2VkX3Jlc3VsdF9fKSkgc3lzZnNfY3JlYXRlX2Rpcl9ucyhzdHJ1Y3Qga29iamVjdCAqa29iaiwg Y29uc3Qgdm9pZCAqbnMpOwp2b2lkIHN5c2ZzX3JlbW92ZV9kaXIoc3RydWN0IGtvYmplY3QgKmtv YmopOwppbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHN5c2ZzX3Jl bmFtZV9kaXJfbnMoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKm5ld19uYW1lLAog ICAgICAgICBjb25zdCB2b2lkICpuZXdfbnMpOwppbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIHN5c2ZzX21vdmVfZGlyX25zKHN0cnVjdCBrb2JqZWN0ICprb2JqLAog ICAgICAgc3RydWN0IGtvYmplY3QgKm5ld19wYXJlbnRfa29iaiwKICAgICAgIGNvbnN0IHZvaWQg Km5ld19ucyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgc3lz ZnNfY3JlYXRlX21vdW50X3BvaW50KHN0cnVjdCBrb2JqZWN0ICpwYXJlbnRfa29iaiwKICAgICAg IGNvbnN0IGNoYXIgKm5hbWUpOwp2b2lkIHN5c2ZzX3JlbW92ZV9tb3VudF9wb2ludChzdHJ1Y3Qg a29iamVjdCAqcGFyZW50X2tvYmosCiAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOwoKaW50IF9f YXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzeXNmc19jcmVhdGVfZmlsZV9u cyhzdHJ1Y3Qga29iamVjdCAqa29iaiwKICAgICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIsCiAgICAgICAgICBjb25zdCB2b2lkICpucyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3dh cm5fdW51c2VkX3Jlc3VsdF9fKSkgc3lzZnNfY3JlYXRlX2ZpbGVzKHN0cnVjdCBrb2JqZWN0ICpr b2JqLAogICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqIGNvbnN0ICphdHRyKTsKaW50IF9f YXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzeXNmc19jaG1vZF9maWxlKHN0 cnVjdCBrb2JqZWN0ICprb2JqLAogICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCB1 bW9kZV90IG1vZGUpOwpzdHJ1Y3Qga2VybmZzX25vZGUgKnN5c2ZzX2JyZWFrX2FjdGl2ZV9wcm90 ZWN0aW9uKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHIpOwp2b2lkIHN5c2ZzX3VuYnJlYWtfYWN0aXZlX3Byb3RlY3Rpb24oc3RydWN0IGtl cm5mc19ub2RlICprbik7CnZvaWQgc3lzZnNfcmVtb3ZlX2ZpbGVfbnMoc3RydWN0IGtvYmplY3Qg KmtvYmosIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCiAgICAgY29uc3Qgdm9pZCAqbnMp Owpib29sIHN5c2ZzX3JlbW92ZV9maWxlX3NlbGYoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0 IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpOwp2b2lkIHN5c2ZzX3JlbW92ZV9maWxlcyhzdHJ1Y3Qg a29iamVjdCAqa29iaiwgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqIGNvbnN0ICphdHRyKTsKCmlu dCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgc3lzZnNfY3JlYXRlX2Jp bl9maWxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogICAgICAgICAgIGNvbnN0IHN0cnVjdCBiaW5f YXR0cmlidXRlICphdHRyKTsKdm9pZCBzeXNmc19yZW1vdmVfYmluX2ZpbGUoc3RydWN0IGtvYmpl Y3QgKmtvYmosCiAgICAgIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICphdHRyKTsKCmludCBf X2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgc3lzZnNfY3JlYXRlX2xpbmso c3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqZWN0ICp0YXJnZXQsCiAgICAgICBjb25z dCBjaGFyICpuYW1lKTsKaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p KSBzeXNmc19jcmVhdGVfbGlua19ub3dhcm4oc3RydWN0IGtvYmplY3QgKmtvYmosCiAgICAgICBz dHJ1Y3Qga29iamVjdCAqdGFyZ2V0LAogICAgICAgY29uc3QgY2hhciAqbmFtZSk7CnZvaWQgc3lz ZnNfcmVtb3ZlX2xpbmsoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKm5hbWUpOwoK aW50IHN5c2ZzX3JlbmFtZV9saW5rX25zKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29i amVjdCAqdGFyZ2V0LAogICAgY29uc3QgY2hhciAqb2xkX25hbWUsIGNvbnN0IGNoYXIgKm5ld19u YW1lLAogICAgY29uc3Qgdm9pZCAqbmV3X25zKTsKCnZvaWQgc3lzZnNfZGVsZXRlX2xpbmsoc3Ry dWN0IGtvYmplY3QgKmRpciwgc3RydWN0IGtvYmplY3QgKnRhcmcsCiAgIGNvbnN0IGNoYXIgKm5h bWUpOwoKaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzeXNmc19j cmVhdGVfZ3JvdXAoc3RydWN0IGtvYmplY3QgKmtvYmosCiAgICAgICAgY29uc3Qgc3RydWN0IGF0 dHJpYnV0ZV9ncm91cCAqZ3JwKTsKaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVz dWx0X18pKSBzeXNmc19jcmVhdGVfZ3JvdXBzKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogICAgICAg ICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqZ3JvdXBzKTsKaW50IF9fYXR0cmlidXRl X18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzeXNmc191cGRhdGVfZ3JvdXBzKHN0cnVjdCBr b2JqZWN0ICprb2JqLAogICAgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqZ3Jv dXBzKTsKaW50IHN5c2ZzX3VwZGF0ZV9ncm91cChzdHJ1Y3Qga29iamVjdCAqa29iaiwKICAgICAg ICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqZ3JwKTsKdm9pZCBzeXNmc19yZW1vdmVf Z3JvdXAoc3RydWN0IGtvYmplY3QgKmtvYmosCiAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3Jv dXAgKmdycCk7CnZvaWQgc3lzZnNfcmVtb3ZlX2dyb3VwcyhzdHJ1Y3Qga29iamVjdCAqa29iaiwK ICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipncm91cHMpOwppbnQgc3lzZnNfYWRk X2ZpbGVfdG9fZ3JvdXAoc3RydWN0IGtvYmplY3QgKmtvYmosCiAgIGNvbnN0IHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmdyb3VwKTsKdm9pZCBzeXNmc19yZW1vdmVfZmlsZV9m cm9tX2dyb3VwKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRl ICphdHRyLCBjb25zdCBjaGFyICpncm91cCk7CmludCBzeXNmc19tZXJnZV9ncm91cChzdHJ1Y3Qg a29iamVjdCAqa29iaiwKICAgICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqZ3Jw KTsKdm9pZCBzeXNmc191bm1lcmdlX2dyb3VwKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogICAgICAg ICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpncnApOwppbnQgc3lzZnNfYWRkX2xpbmtf dG9fZ3JvdXAoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKmdyb3VwX25hbWUsCiAg ICAgICBzdHJ1Y3Qga29iamVjdCAqdGFyZ2V0LCBjb25zdCBjaGFyICpsaW5rX25hbWUpOwp2b2lk IHN5c2ZzX3JlbW92ZV9saW5rX2Zyb21fZ3JvdXAoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0 IGNoYXIgKmdyb3VwX25hbWUsCiAgICAgIGNvbnN0IGNoYXIgKmxpbmtfbmFtZSk7CmludCBfX2Nv bXBhdF9vbmx5X3N5c2ZzX2xpbmtfZW50cnlfdG9fa29iaihzdHJ1Y3Qga29iamVjdCAqa29iaiwK ICAgICAgICAgIHN0cnVjdCBrb2JqZWN0ICp0YXJnZXRfa29iaiwKICAgICAgICAgIGNvbnN0IGNo YXIgKnRhcmdldF9uYW1lKTsKCnZvaWQgc3lzZnNfbm90aWZ5KHN0cnVjdCBrb2JqZWN0ICprb2Jq LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmF0dHIpOwoKaW50IF9fYXR0cmlidXRlX18o KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzeXNmc19pbml0KHZvaWQpOwoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzeXNmc19l bmFibGVfbnMoc3RydWN0IGtlcm5mc19ub2RlICprbikKewogcmV0dXJuIGtlcm5mc19lbmFibGVf bnMoa24pOwp9CiMgNTI3ICIuL2luY2x1ZGUvbGludXgvc3lzZnMuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRl X18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzeXNmc19jcmVhdGVfZmlsZShzdHJ1Y3Qga29i amVjdCAqa29iaiwKICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCnsKIHJldHVy biBzeXNmc19jcmVhdGVfZmlsZV9ucyhrb2JqLCBhdHRyLCAoKHZvaWQgKikwKSk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg c3lzZnNfcmVtb3ZlX2ZpbGUoc3RydWN0IGtvYmplY3QgKmtvYmosCiAgICAgICAgIGNvbnN0IHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCnsKIHN5c2ZzX3JlbW92ZV9maWxlX25zKGtvYmosIGF0dHIs ICgodm9pZCAqKTApKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHN5c2ZzX3JlbmFtZV9saW5rKHN0cnVjdCBrb2JqZWN0ICpr b2JqLCBzdHJ1Y3Qga29iamVjdCAqdGFyZ2V0LAogICAgICAgIGNvbnN0IGNoYXIgKm9sZF9uYW1l LCBjb25zdCBjaGFyICpuZXdfbmFtZSkKewogcmV0dXJuIHN5c2ZzX3JlbmFtZV9saW5rX25zKGtv YmosIHRhcmdldCwgb2xkX25hbWUsIG5ld19uYW1lLCAoKHZvaWQgKikwKSk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc3lz ZnNfbm90aWZ5X2RpcmVudChzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKQp7CiBrZXJuZnNfbm90aWZ5 KGtuKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgc3RydWN0IGtlcm5mc19ub2RlICpzeXNmc19nZXRfZGlyZW50KHN0cnVjdCBrZXJu ZnNfbm9kZSAqcGFyZW50LAogICAgICAgICBjb25zdCBjaGFyICpuYW1lKQp7CiByZXR1cm4ga2Vy bmZzX2ZpbmRfYW5kX2dldChwYXJlbnQsIG5hbWUpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2VybmZzX25vZGUgKnN5 c2ZzX2dldChzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKQp7CiBrZXJuZnNfZ2V0KGtuKTsKIHJldHVy biBrbjsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBzeXNmc19wdXQoc3RydWN0IGtlcm5mc19ub2RlICprbikKewoga2VybmZz X3B1dChrbik7Cn0KIyAyMSAiLi9pbmNsdWRlL2xpbnV4L2tvYmplY3QuaCIgMgojIDQxICIuL2lu Y2x1ZGUvbGludXgva29iamVjdC5oIgpleHRlcm4gdTY0IHVldmVudF9zZXFudW07CiMgNTMgIi4v aW5jbHVkZS9saW51eC9rb2JqZWN0LmgiCmVudW0ga29iamVjdF9hY3Rpb24gewogS09CSl9BREQs CiBLT0JKX1JFTU9WRSwKIEtPQkpfQ0hBTkdFLAogS09CSl9NT1ZFLAogS09CSl9PTkxJTkUsCiBL T0JKX09GRkxJTkUsCiBLT0JKX0JJTkQsCiBLT0JKX1VOQklORCwKIEtPQkpfTUFYCn07CgpzdHJ1 Y3Qga29iamVjdCB7CiBjb25zdCBjaGFyICpuYW1lOwogc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsK IHN0cnVjdCBrb2JqZWN0ICpwYXJlbnQ7CiBzdHJ1Y3Qga3NldCAqa3NldDsKIHN0cnVjdCBrb2Jq X3R5cGUgKmt0eXBlOwogc3RydWN0IGtlcm5mc19ub2RlICpzZDsKIHN0cnVjdCBrcmVmIGtyZWY7 CgoKCiB1bnNpZ25lZCBpbnQgc3RhdGVfaW5pdGlhbGl6ZWQ6MTsKIHVuc2lnbmVkIGludCBzdGF0 ZV9pbl9zeXNmczoxOwogdW5zaWduZWQgaW50IHN0YXRlX2FkZF91ZXZlbnRfc2VudDoxOwogdW5z aWduZWQgaW50IHN0YXRlX3JlbW92ZV91ZXZlbnRfc2VudDoxOwogdW5zaWduZWQgaW50IHVldmVu dF9zdXBwcmVzczoxOwp9OwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRm LCAyLCAzKSkpCmludCBrb2JqZWN0X3NldF9uYW1lKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBjb25z dCBjaGFyICpuYW1lLCAuLi4pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmlu dGYsIDIsIDApKSkKaW50IGtvYmplY3Rfc2V0X25hbWVfdmFyZ3Moc3RydWN0IGtvYmplY3QgKmtv YmosIGNvbnN0IGNoYXIgKmZtdCwKICAgICAgdmFfbGlzdCB2YXJncyk7CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjb25zdCBjaGFyICpr b2JqZWN0X25hbWUoY29uc3Qgc3RydWN0IGtvYmplY3QgKmtvYmopCnsKIHJldHVybiBrb2JqLT5u YW1lOwp9CgpleHRlcm4gdm9pZCBrb2JqZWN0X2luaXQoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0 cnVjdCBrb2JqX3R5cGUgKmt0eXBlKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18o cHJpbnRmLCAzLCA0KSkpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKQpp bnQga29iamVjdF9hZGQoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqZWN0ICpwYXJl bnQsCiAgY29uc3QgY2hhciAqZm10LCAuLi4pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3Jt YXRfXyhwcmludGYsIDQsIDUpKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRf XykpCmludCBrb2JqZWN0X2luaXRfYW5kX2FkZChzdHJ1Y3Qga29iamVjdCAqa29iaiwKICAgIHN0 cnVjdCBrb2JqX3R5cGUgKmt0eXBlLCBzdHJ1Y3Qga29iamVjdCAqcGFyZW50LAogICAgY29uc3Qg Y2hhciAqZm10LCAuLi4pOwoKZXh0ZXJuIHZvaWQga29iamVjdF9kZWwoc3RydWN0IGtvYmplY3Qg KmtvYmopOwoKZXh0ZXJuIHN0cnVjdCBrb2JqZWN0ICogX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIGtvYmplY3RfY3JlYXRlKHZvaWQpOwpleHRlcm4gc3RydWN0IGtvYmpl Y3QgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga29iamVjdF9jcmVh dGVfYW5kX2FkZChjb25zdCBjaGFyICpuYW1lLAogICAgICBzdHJ1Y3Qga29iamVjdCAqcGFyZW50 KTsKCmV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtv YmplY3RfcmVuYW1lKHN0cnVjdCBrb2JqZWN0ICosIGNvbnN0IGNoYXIgKm5ld19uYW1lKTsKZXh0 ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga29iamVjdF9t b3ZlKHN0cnVjdCBrb2JqZWN0ICosIHN0cnVjdCBrb2JqZWN0ICopOwoKZXh0ZXJuIHN0cnVjdCBr b2JqZWN0ICprb2JqZWN0X2dldChzdHJ1Y3Qga29iamVjdCAqa29iaik7CmV4dGVybiBzdHJ1Y3Qg a29iamVjdCAqIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrb2JqZWN0 X2dldF91bmxlc3NfemVybygKICAgICAgc3RydWN0IGtvYmplY3QgKmtvYmopOwpleHRlcm4gdm9p ZCBrb2JqZWN0X3B1dChzdHJ1Y3Qga29iamVjdCAqa29iaik7CgpleHRlcm4gY29uc3Qgdm9pZCAq a29iamVjdF9uYW1lc3BhY2Uoc3RydWN0IGtvYmplY3QgKmtvYmopOwpleHRlcm4gdm9pZCBrb2Jq ZWN0X2dldF9vd25lcnNoaXAoc3RydWN0IGtvYmplY3QgKmtvYmosCiAgICAgIGt1aWRfdCAqdWlk LCBrZ2lkX3QgKmdpZCk7CmV4dGVybiBjaGFyICprb2JqZWN0X2dldF9wYXRoKHN0cnVjdCBrb2Jq ZWN0ICprb2JqLCBnZnBfdCBmbGFnKTsKIyAxMzIgIi4vaW5jbHVkZS9saW51eC9rb2JqZWN0Lmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wga29iamVjdF9oYXNfY2hpbGRyZW4oc3RydWN0IGtvYmplY3QgKmtvYmopCnsKICh7IGlu dCBfX3JldF93YXJuX29uID0gISEoa3JlZl9yZWFkKCZrb2JqLT5rcmVmKSA9PSAwKTsgaWYgKF9f YnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5s aW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9u IF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMg YnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBi dWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAi XHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAi LnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L2tvYmplY3QuaCIpLCAiaSIgKDEz NCksICJpIiAoKDEgPDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihz dHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5c dCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5c blx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgzNykpOyB9KTsgfSB3aGlsZSAoMCk7IF9f YnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKCiByZXR1cm4ga29iai0+ c2QgJiYga29iai0+c2QtPmRpci5zdWJkaXJzOwp9CgpzdHJ1Y3Qga29ial90eXBlIHsKIHZvaWQg KCpyZWxlYXNlKShzdHJ1Y3Qga29iamVjdCAqa29iaik7CiBjb25zdCBzdHJ1Y3Qgc3lzZnNfb3Bz ICpzeXNmc19vcHM7CiBzdHJ1Y3QgYXR0cmlidXRlICoqZGVmYXVsdF9hdHRyczsKIGNvbnN0IHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipkZWZhdWx0X2dyb3VwczsKIGNvbnN0IHN0cnVjdCBrb2Jq X25zX3R5cGVfb3BlcmF0aW9ucyAqKCpjaGlsZF9uc190eXBlKShzdHJ1Y3Qga29iamVjdCAqa29i aik7CiBjb25zdCB2b2lkICooKm5hbWVzcGFjZSkoc3RydWN0IGtvYmplY3QgKmtvYmopOwogdm9p ZCAoKmdldF9vd25lcnNoaXApKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBrdWlkX3QgKnVpZCwga2dp ZF90ICpnaWQpOwp9OwoKc3RydWN0IGtvYmpfdWV2ZW50X2VudiB7CiBjaGFyICphcmd2WzNdOwog Y2hhciAqZW52cFszMl07CiBpbnQgZW52cF9pZHg7CiBjaGFyIGJ1ZlsyMDQ4XTsKIGludCBidWZs ZW47Cn07CgpzdHJ1Y3Qga3NldF91ZXZlbnRfb3BzIHsKIGludCAoKiBjb25zdCBmaWx0ZXIpKHN0 cnVjdCBrc2V0ICprc2V0LCBzdHJ1Y3Qga29iamVjdCAqa29iaik7CiBjb25zdCBjaGFyICooKiBj b25zdCBuYW1lKShzdHJ1Y3Qga3NldCAqa3NldCwgc3RydWN0IGtvYmplY3QgKmtvYmopOwogaW50 ICgqIGNvbnN0IHVldmVudCkoc3RydWN0IGtzZXQgKmtzZXQsIHN0cnVjdCBrb2JqZWN0ICprb2Jq LAogICAgICAgIHN0cnVjdCBrb2JqX3VldmVudF9lbnYgKmVudik7Cn07CgpzdHJ1Y3Qga29ial9h dHRyaWJ1dGUgewogc3RydWN0IGF0dHJpYnV0ZSBhdHRyOwogc3NpemVfdCAoKnNob3cpKHN0cnVj dCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsCiAgIGNoYXIgKmJ1 Zik7CiBzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9h dHRyaWJ1dGUgKmF0dHIsCiAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCk7Cn07Cgpl eHRlcm4gY29uc3Qgc3RydWN0IHN5c2ZzX29wcyBrb2JqX3N5c2ZzX29wczsKCnN0cnVjdCBzb2Nr OwojIDE5MyAiLi9pbmNsdWRlL2xpbnV4L2tvYmplY3QuaCIKc3RydWN0IGtzZXQgewogc3RydWN0 IGxpc3RfaGVhZCBsaXN0Owogc3BpbmxvY2tfdCBsaXN0X2xvY2s7CiBzdHJ1Y3Qga29iamVjdCBr b2JqOwogY29uc3Qgc3RydWN0IGtzZXRfdWV2ZW50X29wcyAqdWV2ZW50X29wczsKfSBfX2F0dHJp YnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CgpleHRlcm4gdm9pZCBrc2V0X2luaXQoc3Ry dWN0IGtzZXQgKmtzZXQpOwpleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBrc2V0X3JlZ2lzdGVyKHN0cnVjdCBrc2V0ICprc2V0KTsKZXh0ZXJuIHZvaWQg a3NldF91bnJlZ2lzdGVyKHN0cnVjdCBrc2V0ICprc2V0KTsKZXh0ZXJuIHN0cnVjdCBrc2V0ICog X19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzZXRfY3JlYXRlX2FuZF9h ZGQoY29uc3QgY2hhciAqbmFtZSwKICAgICAgY29uc3Qgc3RydWN0IGtzZXRfdWV2ZW50X29wcyAq dSwKICAgICAgc3RydWN0IGtvYmplY3QgKnBhcmVudF9rb2JqKTsKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrc2V0ICp0b19r c2V0KHN0cnVjdCBrb2JqZWN0ICprb2JqKQp7CiByZXR1cm4ga29iaiA/ICh7IHZvaWQgKl9fbXB0 ciA9ICh2b2lkICopKGtvYmopOyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0 XzIwOSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oInBvaW50ZXIgdHlwZSBtaXNtYXRj aCBpbiBjb250YWluZXJfb2YoKSIpKSk7IGlmICghKCEoIV9fYnVpbHRpbl90eXBlc19jb21wYXRp YmxlX3AodHlwZW9mKCooa29iaikpLCB0eXBlb2YoKChzdHJ1Y3Qga3NldCAqKTApLT5rb2JqKSkg JiYgIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCooa29iaikpLCB0eXBlb2Yo dm9pZCkpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzIwOSgpOyB9IHdoaWxlICgwKTsgKChzdHJ1 Y3Qga3NldCAqKShfX21wdHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IGtzZXQsIGtvYmop KSk7IH0pIDogKCh2b2lkICopMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrc2V0ICprc2V0X2dldChzdHJ1Y3Qga3Nl dCAqaykKewogcmV0dXJuIGsgPyB0b19rc2V0KGtvYmplY3RfZ2V0KCZrLT5rb2JqKSkgOiAoKHZv aWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBrc2V0X3B1dChzdHJ1Y3Qga3NldCAqaykKewoga29iamVjdF9wdXQo JmstPmtvYmopOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga29ial90eXBlICpnZXRfa3R5cGUoc3RydWN0IGtvYmplY3Qg KmtvYmopCnsKIHJldHVybiBrb2JqLT5rdHlwZTsKfQoKZXh0ZXJuIHN0cnVjdCBrb2JqZWN0ICpr c2V0X2ZpbmRfb2JqKHN0cnVjdCBrc2V0ICosIGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIHN0cnVj dCBrb2JqZWN0ICprZXJuZWxfa29iajsKCmV4dGVybiBzdHJ1Y3Qga29iamVjdCAqbW1fa29iajsK CmV4dGVybiBzdHJ1Y3Qga29iamVjdCAqaHlwZXJ2aXNvcl9rb2JqOwoKZXh0ZXJuIHN0cnVjdCBr b2JqZWN0ICpwb3dlcl9rb2JqOwoKZXh0ZXJuIHN0cnVjdCBrb2JqZWN0ICpmaXJtd2FyZV9rb2Jq OwoKaW50IGtvYmplY3RfdWV2ZW50KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBlbnVtIGtvYmplY3Rf YWN0aW9uIGFjdGlvbik7CmludCBrb2JqZWN0X3VldmVudF9lbnYoc3RydWN0IGtvYmplY3QgKmtv YmosIGVudW0ga29iamVjdF9hY3Rpb24gYWN0aW9uLAogICBjaGFyICplbnZwW10pOwppbnQga29i amVjdF9zeW50aF91ZXZlbnQoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKmJ1Ziwg c2l6ZV90IGNvdW50KTsKCl9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkp CmludCBhZGRfdWV2ZW50X3ZhcihzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYsIGNvbnN0IGNo YXIgKmZvcm1hdCwgLi4uKTsKIyAxOCAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIiAyCiMgMSAi Li9pbmNsdWRlL2xpbnV4L2tsaXN0LmgiIDEKIyAxNyAiLi9pbmNsdWRlL2xpbnV4L2tsaXN0Lmgi CnN0cnVjdCBrbGlzdF9ub2RlOwpzdHJ1Y3Qga2xpc3Qgewogc3BpbmxvY2tfdCBrX2xvY2s7CiBz dHJ1Y3QgbGlzdF9oZWFkIGtfbGlzdDsKIHZvaWQgKCpnZXQpKHN0cnVjdCBrbGlzdF9ub2RlICop Owogdm9pZCAoKnB1dCkoc3RydWN0IGtsaXN0X25vZGUgKik7Cn0gX19hdHRyaWJ1dGVfXyAoKGFs aWduZWQgKHNpemVvZih2b2lkICopKSkpOwojIDM0ICIuL2luY2x1ZGUvbGludXgva2xpc3QuaCIK ZXh0ZXJuIHZvaWQga2xpc3RfaW5pdChzdHJ1Y3Qga2xpc3QgKmssIHZvaWQgKCpnZXQpKHN0cnVj dCBrbGlzdF9ub2RlICopLAogICAgICAgICB2b2lkICgqcHV0KShzdHJ1Y3Qga2xpc3Rfbm9kZSAq KSk7CgpzdHJ1Y3Qga2xpc3Rfbm9kZSB7CiB2b2lkICpuX2tsaXN0Owogc3RydWN0IGxpc3RfaGVh ZCBuX25vZGU7CiBzdHJ1Y3Qga3JlZiBuX3JlZjsKfTsKCmV4dGVybiB2b2lkIGtsaXN0X2FkZF90 YWlsKHN0cnVjdCBrbGlzdF9ub2RlICpuLCBzdHJ1Y3Qga2xpc3QgKmspOwpleHRlcm4gdm9pZCBr bGlzdF9hZGRfaGVhZChzdHJ1Y3Qga2xpc3Rfbm9kZSAqbiwgc3RydWN0IGtsaXN0ICprKTsKZXh0 ZXJuIHZvaWQga2xpc3RfYWRkX2JlaGluZChzdHJ1Y3Qga2xpc3Rfbm9kZSAqbiwgc3RydWN0IGts aXN0X25vZGUgKnBvcyk7CmV4dGVybiB2b2lkIGtsaXN0X2FkZF9iZWZvcmUoc3RydWN0IGtsaXN0 X25vZGUgKm4sIHN0cnVjdCBrbGlzdF9ub2RlICpwb3MpOwoKZXh0ZXJuIHZvaWQga2xpc3RfZGVs KHN0cnVjdCBrbGlzdF9ub2RlICpuKTsKZXh0ZXJuIHZvaWQga2xpc3RfcmVtb3ZlKHN0cnVjdCBr bGlzdF9ub2RlICpuKTsKCmV4dGVybiBpbnQga2xpc3Rfbm9kZV9hdHRhY2hlZChzdHJ1Y3Qga2xp c3Rfbm9kZSAqbik7CgoKc3RydWN0IGtsaXN0X2l0ZXIgewogc3RydWN0IGtsaXN0ICppX2tsaXN0 Owogc3RydWN0IGtsaXN0X25vZGUgKmlfY3VyOwp9OwoKCmV4dGVybiB2b2lkIGtsaXN0X2l0ZXJf aW5pdChzdHJ1Y3Qga2xpc3QgKmssIHN0cnVjdCBrbGlzdF9pdGVyICppKTsKZXh0ZXJuIHZvaWQg a2xpc3RfaXRlcl9pbml0X25vZGUoc3RydWN0IGtsaXN0ICprLCBzdHJ1Y3Qga2xpc3RfaXRlciAq aSwKICAgICBzdHJ1Y3Qga2xpc3Rfbm9kZSAqbik7CmV4dGVybiB2b2lkIGtsaXN0X2l0ZXJfZXhp dChzdHJ1Y3Qga2xpc3RfaXRlciAqaSk7CmV4dGVybiBzdHJ1Y3Qga2xpc3Rfbm9kZSAqa2xpc3Rf cHJldihzdHJ1Y3Qga2xpc3RfaXRlciAqaSk7CmV4dGVybiBzdHJ1Y3Qga2xpc3Rfbm9kZSAqa2xp c3RfbmV4dChzdHJ1Y3Qga2xpc3RfaXRlciAqaSk7CiMgMTkgIi4vaW5jbHVkZS9saW51eC9kZXZp Y2UuaCIgMgoKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3BtLmgiIDEKIyAyMiAiLi9pbmNsdWRl L2xpbnV4L3BtLmgiCmV4dGVybiB2b2lkICgqcG1fcG93ZXJfb2ZmKSh2b2lkKTsKZXh0ZXJuIHZv aWQgKCpwbV9wb3dlcl9vZmZfcHJlcGFyZSkodm9pZCk7CgpzdHJ1Y3QgZGV2aWNlOwoKZXh0ZXJu IHZvaWQgcG1fdnRfc3dpdGNoX3JlcXVpcmVkKHN0cnVjdCBkZXZpY2UgKmRldiwgYm9vbCByZXF1 aXJlZCk7CmV4dGVybiB2b2lkIHBtX3Z0X3N3aXRjaF91bnJlZ2lzdGVyKHN0cnVjdCBkZXZpY2Ug KmRldik7CiMgNDIgIi4vaW5jbHVkZS9saW51eC9wbS5oIgpzdHJ1Y3QgZGV2aWNlOwoKCmV4dGVy biBjb25zdCBjaGFyIHBvd2VyX2dyb3VwX25hbWVbXTsKCgoKCnR5cGVkZWYgc3RydWN0IHBtX21l c3NhZ2UgewogaW50IGV2ZW50Owp9IHBtX21lc3NhZ2VfdDsKIyAyNzggIi4vaW5jbHVkZS9saW51 eC9wbS5oIgpzdHJ1Y3QgZGV2X3BtX29wcyB7CiBpbnQgKCpwcmVwYXJlKShzdHJ1Y3QgZGV2aWNl ICpkZXYpOwogdm9pZCAoKmNvbXBsZXRlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogaW50ICgqc3Vz cGVuZCkoc3RydWN0IGRldmljZSAqZGV2KTsKIGludCAoKnJlc3VtZSkoc3RydWN0IGRldmljZSAq ZGV2KTsKIGludCAoKmZyZWV6ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKIGludCAoKnRoYXcpKHN0 cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpwb3dlcm9mZikoc3RydWN0IGRldmljZSAqZGV2KTsK IGludCAoKnJlc3RvcmUpKHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpzdXNwZW5kX2xhdGUp KHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpyZXN1bWVfZWFybHkpKHN0cnVjdCBkZXZpY2Ug KmRldik7CiBpbnQgKCpmcmVlemVfbGF0ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKIGludCAoKnRo YXdfZWFybHkpKHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpwb3dlcm9mZl9sYXRlKShzdHJ1 Y3QgZGV2aWNlICpkZXYpOwogaW50ICgqcmVzdG9yZV9lYXJseSkoc3RydWN0IGRldmljZSAqZGV2 KTsKIGludCAoKnN1c3BlbmRfbm9pcnEpKHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpyZXN1 bWVfbm9pcnEpKHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpmcmVlemVfbm9pcnEpKHN0cnVj dCBkZXZpY2UgKmRldik7CiBpbnQgKCp0aGF3X25vaXJxKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwog aW50ICgqcG93ZXJvZmZfbm9pcnEpKHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpyZXN0b3Jl X25vaXJxKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogaW50ICgqcnVudGltZV9zdXNwZW5kKShzdHJ1 Y3QgZGV2aWNlICpkZXYpOwogaW50ICgqcnVudGltZV9yZXN1bWUpKHN0cnVjdCBkZXZpY2UgKmRl dik7CiBpbnQgKCpydW50aW1lX2lkbGUpKHN0cnVjdCBkZXZpY2UgKmRldik7Cn07CiMgNDk2ICIu L2luY2x1ZGUvbGludXgvcG0uaCIKZW51bSBycG1fc3RhdHVzIHsKIFJQTV9BQ1RJVkUgPSAwLAog UlBNX1JFU1VNSU5HLAogUlBNX1NVU1BFTkRFRCwKIFJQTV9TVVNQRU5ESU5HLAp9OwojIDUxOCAi Li9pbmNsdWRlL2xpbnV4L3BtLmgiCmVudW0gcnBtX3JlcXVlc3QgewogUlBNX1JFUV9OT05FID0g MCwKIFJQTV9SRVFfSURMRSwKIFJQTV9SRVFfU1VTUEVORCwKIFJQTV9SRVFfQVVUT1NVU1BFTkQs CiBSUE1fUkVRX1JFU1VNRSwKfTsKCnN0cnVjdCB3YWtldXBfc291cmNlOwpzdHJ1Y3Qgd2FrZV9p cnE7CnN0cnVjdCBwbV9kb21haW5fZGF0YTsKCnN0cnVjdCBwbV9zdWJzeXNfZGF0YSB7CiBzcGlu bG9ja190IGxvY2s7CiB1bnNpZ25lZCBpbnQgcmVmY291bnQ7Cgogc3RydWN0IGxpc3RfaGVhZCBj bG9ja19saXN0OwoKCgoKfTsKIyA1NzMgIi4vaW5jbHVkZS9saW51eC9wbS5oIgpzdHJ1Y3QgZGV2 X3BtX2luZm8gewogcG1fbWVzc2FnZV90IHBvd2VyX3N0YXRlOwogdW5zaWduZWQgaW50IGNhbl93 YWtldXA6MTsKIHVuc2lnbmVkIGludCBhc3luY19zdXNwZW5kOjE7CiBib29sIGluX2RwbV9saXN0 OjE7CiBib29sIGlzX3ByZXBhcmVkOjE7CiBib29sIGlzX3N1c3BlbmRlZDoxOwogYm9vbCBpc19u b2lycV9zdXNwZW5kZWQ6MTsKIGJvb2wgaXNfbGF0ZV9zdXNwZW5kZWQ6MTsKIGJvb2wgbm9fcG06 MTsKIGJvb2wgZWFybHlfaW5pdDoxOwogYm9vbCBkaXJlY3RfY29tcGxldGU6MTsKIHUzMiBkcml2 ZXJfZmxhZ3M7CiBzcGlubG9ja190IGxvY2s7Cgogc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsKIHN0 cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRpb247CiBzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd2FrZXVw OwogYm9vbCB3YWtldXBfcGF0aDoxOwogYm9vbCBzeXNjb3JlOjE7CiBib29sIG5vX3BtX2NhbGxi YWNrczoxOwogdW5zaWduZWQgaW50IG11c3RfcmVzdW1lOjE7CiB1bnNpZ25lZCBpbnQgbWF5X3Nr aXBfcmVzdW1lOjE7CgoKCgogc3RydWN0IGhydGltZXIgc3VzcGVuZF90aW1lcjsKIHVuc2lnbmVk IGxvbmcgdGltZXJfZXhwaXJlczsKIHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwogd2FpdF9xdWV1 ZV9oZWFkX3Qgd2FpdF9xdWV1ZTsKIHN0cnVjdCB3YWtlX2lycSAqd2FrZWlycTsKIGF0b21pY190 IHVzYWdlX2NvdW50OwogYXRvbWljX3QgY2hpbGRfY291bnQ7CiB1bnNpZ25lZCBpbnQgZGlzYWJs ZV9kZXB0aDozOwogdW5zaWduZWQgaW50IGlkbGVfbm90aWZpY2F0aW9uOjE7CiB1bnNpZ25lZCBp bnQgcmVxdWVzdF9wZW5kaW5nOjE7CiB1bnNpZ25lZCBpbnQgZGVmZXJyZWRfcmVzdW1lOjE7CiB1 bnNpZ25lZCBpbnQgcnVudGltZV9hdXRvOjE7CiBib29sIGlnbm9yZV9jaGlsZHJlbjoxOwogdW5z aWduZWQgaW50IG5vX2NhbGxiYWNrczoxOwogdW5zaWduZWQgaW50IGlycV9zYWZlOjE7CiB1bnNp Z25lZCBpbnQgdXNlX2F1dG9zdXNwZW5kOjE7CiB1bnNpZ25lZCBpbnQgdGltZXJfYXV0b3N1c3Bl bmRzOjE7CiB1bnNpZ25lZCBpbnQgbWVtYWxsb2Nfbm9pbzoxOwogdW5zaWduZWQgaW50IGxpbmtz X2NvdW50OwogZW51bSBycG1fcmVxdWVzdCByZXF1ZXN0OwogZW51bSBycG1fc3RhdHVzIHJ1bnRp bWVfc3RhdHVzOwogaW50IHJ1bnRpbWVfZXJyb3I7CiBpbnQgYXV0b3N1c3BlbmRfZGVsYXk7CiB1 NjQgbGFzdF9idXN5OwogdTY0IGFjdGl2ZV90aW1lOwogdTY0IHN1c3BlbmRlZF90aW1lOwogdTY0 IGFjY291bnRpbmdfdGltZXN0YW1wOwoKIHN0cnVjdCBwbV9zdWJzeXNfZGF0YSAqc3Vic3lzX2Rh dGE7CiB2b2lkICgqc2V0X2xhdGVuY3lfdG9sZXJhbmNlKShzdHJ1Y3QgZGV2aWNlICosIHMzMik7 CiBzdHJ1Y3QgZGV2X3BtX3FvcyAqcW9zOwp9OwoKZXh0ZXJuIGludCBkZXZfcG1fZ2V0X3N1YnN5 c19kYXRhKHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIGRldl9wbV9wdXRfc3Vic3lz X2RhdGEoc3RydWN0IGRldmljZSAqZGV2KTsKIyA2NTAgIi4vaW5jbHVkZS9saW51eC9wbS5oIgpz dHJ1Y3QgZGV2X3BtX2RvbWFpbiB7CiBzdHJ1Y3QgZGV2X3BtX29wcyBvcHM7CiBpbnQgKCpzdGFy dCkoc3RydWN0IGRldmljZSAqZGV2KTsKIHZvaWQgKCpkZXRhY2gpKHN0cnVjdCBkZXZpY2UgKmRl diwgYm9vbCBwb3dlcl9vZmYpOwogaW50ICgqYWN0aXZhdGUpKHN0cnVjdCBkZXZpY2UgKmRldik7 CiB2b2lkICgqc3luYykoc3RydWN0IGRldmljZSAqZGV2KTsKIHZvaWQgKCpkaXNtaXNzKShzdHJ1 Y3QgZGV2aWNlICpkZXYpOwp9OwojIDcxNCAiLi9pbmNsdWRlL2xpbnV4L3BtLmgiCmV4dGVybiB2 b2lkIGRldmljZV9wbV9sb2NrKHZvaWQpOwpleHRlcm4gdm9pZCBkcG1fcmVzdW1lX3N0YXJ0KHBt X21lc3NhZ2VfdCBzdGF0ZSk7CmV4dGVybiB2b2lkIGRwbV9yZXN1bWVfZW5kKHBtX21lc3NhZ2Vf dCBzdGF0ZSk7CmV4dGVybiB2b2lkIGRwbV9yZXN1bWVfbm9pcnEocG1fbWVzc2FnZV90IHN0YXRl KTsKZXh0ZXJuIHZvaWQgZHBtX3Jlc3VtZV9lYXJseShwbV9tZXNzYWdlX3Qgc3RhdGUpOwpleHRl cm4gdm9pZCBkcG1fcmVzdW1lKHBtX21lc3NhZ2VfdCBzdGF0ZSk7CmV4dGVybiB2b2lkIGRwbV9j b21wbGV0ZShwbV9tZXNzYWdlX3Qgc3RhdGUpOwoKZXh0ZXJuIHZvaWQgZGV2aWNlX3BtX3VubG9j ayh2b2lkKTsKZXh0ZXJuIGludCBkcG1fc3VzcGVuZF9lbmQocG1fbWVzc2FnZV90IHN0YXRlKTsK ZXh0ZXJuIGludCBkcG1fc3VzcGVuZF9zdGFydChwbV9tZXNzYWdlX3Qgc3RhdGUpOwpleHRlcm4g aW50IGRwbV9zdXNwZW5kX25vaXJxKHBtX21lc3NhZ2VfdCBzdGF0ZSk7CmV4dGVybiBpbnQgZHBt X3N1c3BlbmRfbGF0ZShwbV9tZXNzYWdlX3Qgc3RhdGUpOwpleHRlcm4gaW50IGRwbV9zdXNwZW5k KHBtX21lc3NhZ2VfdCBzdGF0ZSk7CmV4dGVybiBpbnQgZHBtX3ByZXBhcmUocG1fbWVzc2FnZV90 IHN0YXRlKTsKCmV4dGVybiB2b2lkIF9fc3VzcGVuZF9yZXBvcnRfcmVzdWx0KGNvbnN0IGNoYXIg KmZ1bmN0aW9uLCB2b2lkICpmbiwgaW50IHJldCk7CgoKCgoKCmV4dGVybiBpbnQgZGV2aWNlX3Bt X3dhaXRfZm9yX2RldihzdHJ1Y3QgZGV2aWNlICpzdWIsIHN0cnVjdCBkZXZpY2UgKmRldik7CmV4 dGVybiB2b2lkIGRwbV9mb3JfZWFjaF9kZXYodm9pZCAqZGF0YSwgdm9pZCAoKmZuKShzdHJ1Y3Qg ZGV2aWNlICosIHZvaWQgKikpOwoKZXh0ZXJuIGludCBwbV9nZW5lcmljX3ByZXBhcmUoc3RydWN0 IGRldmljZSAqZGV2KTsKZXh0ZXJuIGludCBwbV9nZW5lcmljX3N1c3BlbmRfbGF0ZShzdHJ1Y3Qg ZGV2aWNlICpkZXYpOwpleHRlcm4gaW50IHBtX2dlbmVyaWNfc3VzcGVuZF9ub2lycShzdHJ1Y3Qg ZGV2aWNlICpkZXYpOwpleHRlcm4gaW50IHBtX2dlbmVyaWNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNl ICpkZXYpOwpleHRlcm4gaW50IHBtX2dlbmVyaWNfcmVzdW1lX2Vhcmx5KHN0cnVjdCBkZXZpY2Ug KmRldik7CmV4dGVybiBpbnQgcG1fZ2VuZXJpY19yZXN1bWVfbm9pcnEoc3RydWN0IGRldmljZSAq ZGV2KTsKZXh0ZXJuIGludCBwbV9nZW5lcmljX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpl eHRlcm4gaW50IHBtX2dlbmVyaWNfZnJlZXplX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldik7CmV4 dGVybiBpbnQgcG1fZ2VuZXJpY19mcmVlemVfbGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRl cm4gaW50IHBtX2dlbmVyaWNfZnJlZXplKHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQg cG1fZ2VuZXJpY190aGF3X25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcG1f Z2VuZXJpY190aGF3X2Vhcmx5KHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcG1fZ2Vu ZXJpY190aGF3KHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcG1fZ2VuZXJpY19yZXN0 b3JlX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcG1fZ2VuZXJpY19yZXN0 b3JlX2Vhcmx5KHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcG1fZ2VuZXJpY19yZXN0 b3JlKHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcG1fZ2VuZXJpY19wb3dlcm9mZl9u b2lycShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4gaW50IHBtX2dlbmVyaWNfcG93ZXJvZmZf bGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4gaW50IHBtX2dlbmVyaWNfcG93ZXJvZmYo c3RydWN0IGRldmljZSAqZGV2KTsKZXh0ZXJuIHZvaWQgcG1fZ2VuZXJpY19jb21wbGV0ZShzdHJ1 Y3QgZGV2aWNlICpkZXYpOwoKZXh0ZXJuIGJvb2wgZGV2X3BtX21heV9za2lwX3Jlc3VtZShzdHJ1 Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4gYm9vbCBkZXZfcG1fc21hcnRfc3VzcGVuZF9hbmRfc3Vz cGVuZGVkKHN0cnVjdCBkZXZpY2UgKmRldik7CiMgODA4ICIuL2luY2x1ZGUvbGludXgvcG0uaCIK ZW51bSBkcG1fb3JkZXIgewogRFBNX09SREVSX05PTkUsCiBEUE1fT1JERVJfREVWX0FGVEVSX1BB UkVOVCwKIERQTV9PUkRFUl9QQVJFTlRfQkVGT1JFX0RFViwKIERQTV9PUkRFUl9ERVZfTEFTVCwK fTsKIyAyNSAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIiAyCgoKCgojIDEgIi4vaW5jbHVkZS9s aW51eC9kZXZpY2UvYnVzLmgiIDEKIyAyMSAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9idXMuaCIK c3RydWN0IGRldmljZV9kcml2ZXI7CnN0cnVjdCBmd25vZGVfaGFuZGxlOwojIDgyICIuL2luY2x1 ZGUvbGludXgvZGV2aWNlL2J1cy5oIgpzdHJ1Y3QgYnVzX3R5cGUgewogY29uc3QgY2hhciAqbmFt ZTsKIGNvbnN0IGNoYXIgKmRldl9uYW1lOwogc3RydWN0IGRldmljZSAqZGV2X3Jvb3Q7CiBjb25z dCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqYnVzX2dyb3VwczsKIGNvbnN0IHN0cnVjdCBhdHRy aWJ1dGVfZ3JvdXAgKipkZXZfZ3JvdXBzOwogY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAq KmRydl9ncm91cHM7CgogaW50ICgqbWF0Y2gpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRl dmljZV9kcml2ZXIgKmRydik7CiBpbnQgKCp1ZXZlbnQpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IGtvYmpfdWV2ZW50X2VudiAqZW52KTsKIGludCAoKnByb2JlKShzdHJ1Y3QgZGV2aWNlICpk ZXYpOwogdm9pZCAoKnN5bmNfc3RhdGUpKHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpyZW1v dmUpKHN0cnVjdCBkZXZpY2UgKmRldik7CiB2b2lkICgqc2h1dGRvd24pKHN0cnVjdCBkZXZpY2Ug KmRldik7CgogaW50ICgqb25saW5lKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogaW50ICgqb2ZmbGlu ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKCiBpbnQgKCpzdXNwZW5kKShzdHJ1Y3QgZGV2aWNlICpk ZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSk7CiBpbnQgKCpyZXN1bWUpKHN0cnVjdCBkZXZpY2UgKmRl dik7CgogaW50ICgqbnVtX3ZmKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoKIGludCAoKmRtYV9jb25m aWd1cmUpKHN0cnVjdCBkZXZpY2UgKmRldik7CgogY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgKnBt OwoKIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKmlvbW11X29wczsKCiBzdHJ1Y3Qgc3Vic3lzX3By aXZhdGUgKnA7CiBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbG9ja19rZXk7CgogYm9vbCBuZWVkX3Bh cmVudF9sb2NrOwp9OwoKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jl c3VsdF9fKSkgYnVzX3JlZ2lzdGVyKHN0cnVjdCBidXNfdHlwZSAqYnVzKTsKCmV4dGVybiB2b2lk IGJ1c191bnJlZ2lzdGVyKHN0cnVjdCBidXNfdHlwZSAqYnVzKTsKCmV4dGVybiBpbnQgX19hdHRy aWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGJ1c19yZXNjYW5fZGV2aWNlcyhzdHJ1 Y3QgYnVzX3R5cGUgKmJ1cyk7CgpzdHJ1Y3QgYnVzX2F0dHJpYnV0ZSB7CiBzdHJ1Y3QgYXR0cmli dXRlIGF0dHI7CiBzc2l6ZV90ICgqc2hvdykoc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1 Zik7CiBzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpi dWYsIHNpemVfdCBjb3VudCk7Cn07CiMgMTM2ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2J1cy5o IgpleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBidXNf Y3JlYXRlX2ZpbGUoc3RydWN0IGJ1c190eXBlICosCiAgICAgc3RydWN0IGJ1c19hdHRyaWJ1dGUg Kik7CmV4dGVybiB2b2lkIGJ1c19yZW1vdmVfZmlsZShzdHJ1Y3QgYnVzX3R5cGUgKiwgc3RydWN0 IGJ1c19hdHRyaWJ1dGUgKik7CgoKaW50IGRldmljZV9tYXRjaF9uYW1lKHN0cnVjdCBkZXZpY2Ug KmRldiwgY29uc3Qgdm9pZCAqbmFtZSk7CmludCBkZXZpY2VfbWF0Y2hfb2Zfbm9kZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKm5wKTsKaW50IGRldmljZV9tYXRjaF9md25vZGUoc3Ry dWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpmd25vZGUpOwppbnQgZGV2aWNlX21hdGNoX2Rl dnQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpwZGV2dCk7CmludCBkZXZpY2VfbWF0 Y2hfYWNwaV9kZXYoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICphZGV2KTsKaW50IGRl dmljZV9tYXRjaF9hbnkoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICp1bnVzZWQpOwoK CnN0cnVjdCBzdWJzeXNfZGV2X2l0ZXIgewogc3RydWN0IGtsaXN0X2l0ZXIga2k7CiBjb25zdCBz dHJ1Y3QgZGV2aWNlX3R5cGUgKnR5cGU7Cn07CnZvaWQgc3Vic3lzX2Rldl9pdGVyX2luaXQoc3Ry dWN0IHN1YnN5c19kZXZfaXRlciAqaXRlciwKICAgIHN0cnVjdCBidXNfdHlwZSAqc3Vic3lzLAog ICAgc3RydWN0IGRldmljZSAqc3RhcnQsCiAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgKnR5 cGUpOwpzdHJ1Y3QgZGV2aWNlICpzdWJzeXNfZGV2X2l0ZXJfbmV4dChzdHJ1Y3Qgc3Vic3lzX2Rl dl9pdGVyICppdGVyKTsKdm9pZCBzdWJzeXNfZGV2X2l0ZXJfZXhpdChzdHJ1Y3Qgc3Vic3lzX2Rl dl9pdGVyICppdGVyKTsKCmludCBidXNfZm9yX2VhY2hfZGV2KHN0cnVjdCBidXNfdHlwZSAqYnVz LCBzdHJ1Y3QgZGV2aWNlICpzdGFydCwgdm9pZCAqZGF0YSwKICAgICAgIGludCAoKmZuKShzdHJ1 Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpKTsKc3RydWN0IGRldmljZSAqYnVzX2ZpbmRfZGV2 aWNlKHN0cnVjdCBidXNfdHlwZSAqYnVzLCBzdHJ1Y3QgZGV2aWNlICpzdGFydCwKICAgICAgICAg IGNvbnN0IHZvaWQgKmRhdGEsCiAgICAgICAgICBpbnQgKCptYXRjaCkoc3RydWN0IGRldmljZSAq ZGV2LCBjb25zdCB2b2lkICpkYXRhKSk7CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICpidXNfZmluZF9k ZXZpY2VfYnlfbmFtZShzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywKICAgICAgICAgICBzdHJ1Y3QgZGV2 aWNlICpzdGFydCwKICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKQp7CiByZXR1cm4gYnVzX2Zp bmRfZGV2aWNlKGJ1cywgc3RhcnQsIG5hbWUsIGRldmljZV9tYXRjaF9uYW1lKTsKfQoKCgoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IGRldmljZSAqCmJ1c19maW5kX2RldmljZV9ieV9vZl9ub2RlKHN0cnVjdCBidXNfdHlw ZSAqYnVzLCBjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQp7CiByZXR1cm4gYnVzX2ZpbmRf ZGV2aWNlKGJ1cywgKCh2b2lkICopMCksIG5wLCBkZXZpY2VfbWF0Y2hfb2Zfbm9kZSk7Cn0KCgoK CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHN0cnVjdCBkZXZpY2UgKgpidXNfZmluZF9kZXZpY2VfYnlfZndub2RlKHN0cnVjdCBidXNf dHlwZSAqYnVzLCBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKQp7CiByZXR1cm4g YnVzX2ZpbmRfZGV2aWNlKGJ1cywgKCh2b2lkICopMCksIGZ3bm9kZSwgZGV2aWNlX21hdGNoX2Z3 bm9kZSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKmJ1c19maW5kX2RldmljZV9ieV9kZXZ0KHN0 cnVjdCBidXNfdHlwZSAqYnVzLAogICAgICAgICAgIGRldl90IGRldnQpCnsKIHJldHVybiBidXNf ZmluZF9kZXZpY2UoYnVzLCAoKHZvaWQgKikwKSwgJmRldnQsIGRldmljZV9tYXRjaF9kZXZ0KTsK fQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgc3RydWN0IGRldmljZSAqCmJ1c19maW5kX25leHRfZGV2aWNlKHN0cnVjdCBidXNf dHlwZSAqYnVzLHN0cnVjdCBkZXZpY2UgKmN1cikKewogcmV0dXJuIGJ1c19maW5kX2RldmljZShi dXMsIGN1ciwgKCh2b2lkICopMCksIGRldmljZV9tYXRjaF9hbnkpOwp9CgoKc3RydWN0IGFjcGlf ZGV2aWNlOwoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRldmljZSAqCmJ1c19maW5kX2RldmljZV9ieV9hY3BpX2Rl dihzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KQp7 CiByZXR1cm4gYnVzX2ZpbmRfZGV2aWNlKGJ1cywgKCh2b2lkICopMCksIGFkZXYsIGRldmljZV9t YXRjaF9hY3BpX2Rldik7Cn0KIyAyNDkgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvYnVzLmgiCnN0 cnVjdCBkZXZpY2UgKnN1YnN5c19maW5kX2RldmljZV9ieV9pZChzdHJ1Y3QgYnVzX3R5cGUgKmJ1 cywgdW5zaWduZWQgaW50IGlkLAogICAgIHN0cnVjdCBkZXZpY2UgKmhpbnQpOwppbnQgYnVzX2Zv cl9lYWNoX2RydihzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgc3RydWN0IGRldmljZV9kcml2ZXIgKnN0 YXJ0LAogICAgICAgdm9pZCAqZGF0YSwgaW50ICgqZm4pKHN0cnVjdCBkZXZpY2VfZHJpdmVyICos IHZvaWQgKikpOwp2b2lkIGJ1c19zb3J0X2JyZWFkdGhmaXJzdChzdHJ1Y3QgYnVzX3R5cGUgKmJ1 cywKICAgICAgaW50ICgqY29tcGFyZSkoY29uc3Qgc3RydWN0IGRldmljZSAqYSwKICAgICAgIGNv bnN0IHN0cnVjdCBkZXZpY2UgKmIpKTsKCgoKCgoKc3RydWN0IG5vdGlmaWVyX2Jsb2NrOwoKZXh0 ZXJuIGludCBidXNfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IGJ1c190eXBlICpidXMsCiAgICAg c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CmV4dGVybiBpbnQgYnVzX3VucmVnaXN0ZXJfbm90 aWZpZXIoc3RydWN0IGJ1c190eXBlICpidXMsCiAgICAgICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sg Km5iKTsKIyAyODUgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvYnVzLmgiCmV4dGVybiBzdHJ1Y3Qg a3NldCAqYnVzX2dldF9rc2V0KHN0cnVjdCBidXNfdHlwZSAqYnVzKTsKZXh0ZXJuIHN0cnVjdCBr bGlzdCAqYnVzX2dldF9kZXZpY2Vfa2xpc3Qoc3RydWN0IGJ1c190eXBlICpidXMpOwojIDMwICIu L2luY2x1ZGUvbGludXgvZGV2aWNlLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2Ns YXNzLmgiIDEKIyAyMiAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9jbGFzcy5oIgpzdHJ1Y3QgZGV2 aWNlOwpzdHJ1Y3QgZndub2RlX2hhbmRsZTsKIyA1NCAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9j bGFzcy5oIgpzdHJ1Y3QgY2xhc3MgewogY29uc3QgY2hhciAqbmFtZTsKIHN0cnVjdCBtb2R1bGUg Km93bmVyOwoKIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipjbGFzc19ncm91cHM7CiBj b25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqZGV2X2dyb3VwczsKIHN0cnVjdCBrb2JqZWN0 ICpkZXZfa29iajsKCiBpbnQgKCpkZXZfdWV2ZW50KShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBrb2JqX3VldmVudF9lbnYgKmVudik7CiBjaGFyICooKmRldm5vZGUpKHN0cnVjdCBkZXZpY2Ug KmRldiwgdW1vZGVfdCAqbW9kZSk7Cgogdm9pZCAoKmNsYXNzX3JlbGVhc2UpKHN0cnVjdCBjbGFz cyAqY2xhc3MpOwogdm9pZCAoKmRldl9yZWxlYXNlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoKIGlu dCAoKnNodXRkb3duX3ByZSkoc3RydWN0IGRldmljZSAqZGV2KTsKCiBjb25zdCBzdHJ1Y3Qga29i al9uc190eXBlX29wZXJhdGlvbnMgKm5zX3R5cGU7CiBjb25zdCB2b2lkICooKm5hbWVzcGFjZSko c3RydWN0IGRldmljZSAqZGV2KTsKCiB2b2lkICgqZ2V0X293bmVyc2hpcCkoc3RydWN0IGRldmlj ZSAqZGV2LCBrdWlkX3QgKnVpZCwga2dpZF90ICpnaWQpOwoKIGNvbnN0IHN0cnVjdCBkZXZfcG1f b3BzICpwbTsKCiBzdHJ1Y3Qgc3Vic3lzX3ByaXZhdGUgKnA7Cn07CgpzdHJ1Y3QgY2xhc3NfZGV2 X2l0ZXIgewogc3RydWN0IGtsaXN0X2l0ZXIga2k7CiBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUg KnR5cGU7Cn07CgpleHRlcm4gc3RydWN0IGtvYmplY3QgKnN5c2ZzX2Rldl9ibG9ja19rb2JqOwpl eHRlcm4gc3RydWN0IGtvYmplY3QgKnN5c2ZzX2Rldl9jaGFyX2tvYmo7CmV4dGVybiBpbnQgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIF9fY2xhc3NfcmVnaXN0ZXIoc3Ry dWN0IGNsYXNzICpjbGFzcywKICAgICAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXkpOwpleHRl cm4gdm9pZCBjbGFzc191bnJlZ2lzdGVyKHN0cnVjdCBjbGFzcyAqY2xhc3MpOwojIDk5ICIuL2lu Y2x1ZGUvbGludXgvZGV2aWNlL2NsYXNzLmgiCnN0cnVjdCBjbGFzc19jb21wYXQ7CnN0cnVjdCBj bGFzc19jb21wYXQgKmNsYXNzX2NvbXBhdF9yZWdpc3Rlcihjb25zdCBjaGFyICpuYW1lKTsKdm9p ZCBjbGFzc19jb21wYXRfdW5yZWdpc3RlcihzdHJ1Y3QgY2xhc3NfY29tcGF0ICpjbHMpOwppbnQg Y2xhc3NfY29tcGF0X2NyZWF0ZV9saW5rKHN0cnVjdCBjbGFzc19jb21wYXQgKmNscywgc3RydWN0 IGRldmljZSAqZGV2LAogICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldmljZV9saW5rKTsKdm9pZCBj bGFzc19jb21wYXRfcmVtb3ZlX2xpbmsoc3RydWN0IGNsYXNzX2NvbXBhdCAqY2xzLCBzdHJ1Y3Qg ZGV2aWNlICpkZXYsCiAgICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldmljZV9saW5rKTsKCmV4dGVy biB2b2lkIGNsYXNzX2Rldl9pdGVyX2luaXQoc3RydWN0IGNsYXNzX2Rldl9pdGVyICppdGVyLAog ICAgc3RydWN0IGNsYXNzICpjbGFzcywKICAgIHN0cnVjdCBkZXZpY2UgKnN0YXJ0LAogICAgY29u c3Qgc3RydWN0IGRldmljZV90eXBlICp0eXBlKTsKZXh0ZXJuIHN0cnVjdCBkZXZpY2UgKmNsYXNz X2Rldl9pdGVyX25leHQoc3RydWN0IGNsYXNzX2Rldl9pdGVyICppdGVyKTsKZXh0ZXJuIHZvaWQg Y2xhc3NfZGV2X2l0ZXJfZXhpdChzdHJ1Y3QgY2xhc3NfZGV2X2l0ZXIgKml0ZXIpOwoKZXh0ZXJu IGludCBjbGFzc19mb3JfZWFjaF9kZXZpY2Uoc3RydWN0IGNsYXNzICpjbGFzcywgc3RydWN0IGRl dmljZSAqc3RhcnQsCiAgICAgdm9pZCAqZGF0YSwKICAgICBpbnQgKCpmbikoc3RydWN0IGRldmlj ZSAqZGV2LCB2b2lkICpkYXRhKSk7CmV4dGVybiBzdHJ1Y3QgZGV2aWNlICpjbGFzc19maW5kX2Rl dmljZShzdHJ1Y3QgY2xhc3MgKmNsYXNzLAogICAgIHN0cnVjdCBkZXZpY2UgKnN0YXJ0LCBjb25z dCB2b2lkICpkYXRhLAogICAgIGludCAoKm1hdGNoKShzdHJ1Y3QgZGV2aWNlICosIGNvbnN0IHZv aWQgKikpOwoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRldmljZSAqY2xhc3NfZmluZF9kZXZpY2VfYnlfbmFtZShz dHJ1Y3QgY2xhc3MgKmNsYXNzLAogICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkKewogcmV0 dXJuIGNsYXNzX2ZpbmRfZGV2aWNlKGNsYXNzLCAoKHZvaWQgKikwKSwgbmFtZSwgZGV2aWNlX21h dGNoX25hbWUpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICoKY2xhc3NfZmluZF9kZXZpY2VfYnlf b2Zfbm9kZShzdHJ1Y3QgY2xhc3MgKmNsYXNzLCBjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5w KQp7CiByZXR1cm4gY2xhc3NfZmluZF9kZXZpY2UoY2xhc3MsICgodm9pZCAqKTApLCBucCwgZGV2 aWNlX21hdGNoX29mX25vZGUpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICoKY2xhc3NfZmluZF9k ZXZpY2VfYnlfZndub2RlKHN0cnVjdCBjbGFzcyAqY2xhc3MsCiAgICAgICBjb25zdCBzdHJ1Y3Qg Zndub2RlX2hhbmRsZSAqZndub2RlKQp7CiByZXR1cm4gY2xhc3NfZmluZF9kZXZpY2UoY2xhc3Ms ICgodm9pZCAqKTApLCBmd25vZGUsIGRldmljZV9tYXRjaF9md25vZGUpOwp9CgoKCgoKCgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1 Y3QgZGV2aWNlICpjbGFzc19maW5kX2RldmljZV9ieV9kZXZ0KHN0cnVjdCBjbGFzcyAqY2xhc3Ms CiAgICAgICAgICAgICBkZXZfdCBkZXZ0KQp7CiByZXR1cm4gY2xhc3NfZmluZF9kZXZpY2UoY2xh c3MsICgodm9pZCAqKTApLCAmZGV2dCwgZGV2aWNlX21hdGNoX2RldnQpOwp9CgoKc3RydWN0IGFj cGlfZGV2aWNlOwoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICoKY2xhc3NfZmluZF9kZXZpY2VfYnlfYWNw aV9kZXYoc3RydWN0IGNsYXNzICpjbGFzcywgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2 KQp7CiByZXR1cm4gY2xhc3NfZmluZF9kZXZpY2UoY2xhc3MsICgodm9pZCAqKTApLCBhZGV2LCBk ZXZpY2VfbWF0Y2hfYWNwaV9kZXYpOwp9CiMgMTkxICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2Ns YXNzLmgiCnN0cnVjdCBjbGFzc19hdHRyaWJ1dGUgewogc3RydWN0IGF0dHJpYnV0ZSBhdHRyOwog c3NpemVfdCAoKnNob3cpKHN0cnVjdCBjbGFzcyAqY2xhc3MsIHN0cnVjdCBjbGFzc19hdHRyaWJ1 dGUgKmF0dHIsCiAgIGNoYXIgKmJ1Zik7CiBzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBjbGFzcyAq Y2xhc3MsIHN0cnVjdCBjbGFzc19hdHRyaWJ1dGUgKmF0dHIsCiAgIGNvbnN0IGNoYXIgKmJ1Ziwg c2l6ZV90IGNvdW50KTsKfTsKIyAyMDYgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvY2xhc3MuaCIK ZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgY2xhc3Nf Y3JlYXRlX2ZpbGVfbnMoc3RydWN0IGNsYXNzICpjbGFzcywKICAgICAgICAgIGNvbnN0IHN0cnVj dCBjbGFzc19hdHRyaWJ1dGUgKmF0dHIsCiAgICAgICAgICBjb25zdCB2b2lkICpucyk7CmV4dGVy biB2b2lkIGNsYXNzX3JlbW92ZV9maWxlX25zKHN0cnVjdCBjbGFzcyAqY2xhc3MsCiAgICAgY29u c3Qgc3RydWN0IGNsYXNzX2F0dHJpYnV0ZSAqYXR0ciwKICAgICBjb25zdCB2b2lkICpucyk7Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGNsYXNzX2NyZWF0ZV9m aWxlKHN0cnVjdCBjbGFzcyAqY2xhc3MsCiAgICAgY29uc3Qgc3RydWN0IGNsYXNzX2F0dHJpYnV0 ZSAqYXR0cikKewogcmV0dXJuIGNsYXNzX2NyZWF0ZV9maWxlX25zKGNsYXNzLCBhdHRyLCAoKHZv aWQgKikwKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgY2xhc3NfcmVtb3ZlX2ZpbGUoc3RydWN0IGNsYXNzICpjbGFzcywK ICAgICAgICAgY29uc3Qgc3RydWN0IGNsYXNzX2F0dHJpYnV0ZSAqYXR0cikKewogcmV0dXJuIGNs YXNzX3JlbW92ZV9maWxlX25zKGNsYXNzLCBhdHRyLCAoKHZvaWQgKikwKSk7Cn0KCgpzdHJ1Y3Qg Y2xhc3NfYXR0cmlidXRlX3N0cmluZyB7CiBzdHJ1Y3QgY2xhc3NfYXR0cmlidXRlIGF0dHI7CiBj aGFyICpzdHI7Cn07CiMgMjM4ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2NsYXNzLmgiCmV4dGVy biBzc2l6ZV90IHNob3dfY2xhc3NfYXR0cl9zdHJpbmcoc3RydWN0IGNsYXNzICpjbGFzcywgc3Ry dWN0IGNsYXNzX2F0dHJpYnV0ZSAqYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq YnVmKTsKCnN0cnVjdCBjbGFzc19pbnRlcmZhY2Ugewogc3RydWN0IGxpc3RfaGVhZCBub2RlOwog c3RydWN0IGNsYXNzICpjbGFzczsKCiBpbnQgKCphZGRfZGV2KSAoc3RydWN0IGRldmljZSAqLCBz dHJ1Y3QgY2xhc3NfaW50ZXJmYWNlICopOwogdm9pZCAoKnJlbW92ZV9kZXYpIChzdHJ1Y3QgZGV2 aWNlICosIHN0cnVjdCBjbGFzc19pbnRlcmZhY2UgKik7Cn07CgpleHRlcm4gaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBjbGFzc19pbnRlcmZhY2VfcmVnaXN0ZXIo c3RydWN0IGNsYXNzX2ludGVyZmFjZSAqKTsKZXh0ZXJuIHZvaWQgY2xhc3NfaW50ZXJmYWNlX3Vu cmVnaXN0ZXIoc3RydWN0IGNsYXNzX2ludGVyZmFjZSAqKTsKCmV4dGVybiBzdHJ1Y3QgY2xhc3Mg KiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgX19jbGFzc19jcmVhdGUo c3RydWN0IG1vZHVsZSAqb3duZXIsCiAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBz dHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7CmV4dGVybiB2b2lkIGNsYXNzX2Rlc3Ryb3koc3Ry dWN0IGNsYXNzICpjbHMpOwojIDMxICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiIDIKIyAxICIu L2luY2x1ZGUvbGludXgvZGV2aWNlL2RyaXZlci5oIiAxCiMgNDQgIi4vaW5jbHVkZS9saW51eC9k ZXZpY2UvZHJpdmVyLmgiCmVudW0gcHJvYmVfdHlwZSB7CiBQUk9CRV9ERUZBVUxUX1NUUkFURUdZ LAogUFJPQkVfUFJFRkVSX0FTWU5DSFJPTk9VUywKIFBST0JFX0ZPUkNFX1NZTkNIUk9OT1VTLAp9 OwojIDk1ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2RyaXZlci5oIgpzdHJ1Y3QgZGV2aWNlX2Ry aXZlciB7CiBjb25zdCBjaGFyICpuYW1lOwogc3RydWN0IGJ1c190eXBlICpidXM7Cgogc3RydWN0 IG1vZHVsZSAqb3duZXI7CiBjb25zdCBjaGFyICptb2RfbmFtZTsKCiBib29sIHN1cHByZXNzX2Jp bmRfYXR0cnM7CiBlbnVtIHByb2JlX3R5cGUgcHJvYmVfdHlwZTsKCiBjb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkICpvZl9tYXRjaF90YWJsZTsKIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCAq YWNwaV9tYXRjaF90YWJsZTsKCiBpbnQgKCpwcm9iZSkgKHN0cnVjdCBkZXZpY2UgKmRldik7CiB2 b2lkICgqc3luY19zdGF0ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKIGludCAoKnJlbW92ZSkgKHN0 cnVjdCBkZXZpY2UgKmRldik7CiB2b2lkICgqc2h1dGRvd24pIChzdHJ1Y3QgZGV2aWNlICpkZXYp OwogaW50ICgqc3VzcGVuZCkgKHN0cnVjdCBkZXZpY2UgKmRldiwgcG1fbWVzc2FnZV90IHN0YXRl KTsKIGludCAoKnJlc3VtZSkgKHN0cnVjdCBkZXZpY2UgKmRldik7CiBjb25zdCBzdHJ1Y3QgYXR0 cmlidXRlX2dyb3VwICoqZ3JvdXBzOwogY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmRl dl9ncm91cHM7CgogY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgKnBtOwogdm9pZCAoKmNvcmVkdW1w KSAoc3RydWN0IGRldmljZSAqZGV2KTsKCiBzdHJ1Y3QgZHJpdmVyX3ByaXZhdGUgKnA7Cn07CgoK ZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZHJpdmVy X3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpOwpleHRlcm4gdm9pZCBkcml2ZXJf dW5yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KTsKCmV4dGVybiBzdHJ1Y3QgZGV2 aWNlX2RyaXZlciAqZHJpdmVyX2ZpbmQoY29uc3QgY2hhciAqbmFtZSwKICAgICAgc3RydWN0IGJ1 c190eXBlICpidXMpOwpleHRlcm4gaW50IGRyaXZlcl9wcm9iZV9kb25lKHZvaWQpOwpleHRlcm4g dm9pZCB3YWl0X2Zvcl9kZXZpY2VfcHJvYmUodm9pZCk7CgoKCnN0cnVjdCBkcml2ZXJfYXR0cmli dXRlIHsKIHN0cnVjdCBhdHRyaWJ1dGUgYXR0cjsKIHNzaXplX3QgKCpzaG93KShzdHJ1Y3QgZGV2 aWNlX2RyaXZlciAqZHJpdmVyLCBjaGFyICpidWYpOwogc3NpemVfdCAoKnN0b3JlKShzdHJ1Y3Qg ZGV2aWNlX2RyaXZlciAqZHJpdmVyLCBjb25zdCBjaGFyICpidWYsCiAgICBzaXplX3QgY291bnQp Owp9OwojIDE0OCAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9kcml2ZXIuaCIKZXh0ZXJuIGludCBf X2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZHJpdmVyX2NyZWF0ZV9maWxl KHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcml2ZXIsCiAgICAgY29uc3Qgc3RydWN0IGRyaXZlcl9h dHRyaWJ1dGUgKmF0dHIpOwpleHRlcm4gdm9pZCBkcml2ZXJfcmVtb3ZlX2ZpbGUoc3RydWN0IGRl dmljZV9kcml2ZXIgKmRyaXZlciwKICAgICAgICAgIGNvbnN0IHN0cnVjdCBkcml2ZXJfYXR0cmli dXRlICphdHRyKTsKCmV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1 bHRfXykpIGRyaXZlcl9mb3JfZWFjaF9kZXZpY2Uoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwK ICAgICAgICAgICAgc3RydWN0IGRldmljZSAqc3RhcnQsCiAgICAgICAgICAgIHZvaWQgKmRhdGEs CiAgICAgICAgICAgIGludCAoKmZuKShzdHJ1Y3QgZGV2aWNlICpkZXYsCiAgICAgICAgdm9pZCAq KSk7CnN0cnVjdCBkZXZpY2UgKmRyaXZlcl9maW5kX2RldmljZShzdHJ1Y3QgZGV2aWNlX2RyaXZl ciAqZHJ2LAogICAgICBzdHJ1Y3QgZGV2aWNlICpzdGFydCwgY29uc3Qgdm9pZCAqZGF0YSwKICAg ICAgaW50ICgqbWF0Y2gpKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSkpOwoK CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgc3RydWN0IGRldmljZSAqZHJpdmVyX2ZpbmRfZGV2aWNlX2J5X25hbWUoc3RydWN0IGRl dmljZV9kcml2ZXIgKmRydiwKICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpCnsKIHJldHVybiBkcml2 ZXJfZmluZF9kZXZpY2UoZHJ2LCAoKHZvaWQgKikwKSwgbmFtZSwgZGV2aWNlX21hdGNoX25hbWUp Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICoKZHJpdmVyX2ZpbmRfZGV2aWNlX2J5X29mX25vZGUo c3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwKICAgICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9u b2RlICpucCkKewogcmV0dXJuIGRyaXZlcl9maW5kX2RldmljZShkcnYsICgodm9pZCAqKTApLCBu cCwgZGV2aWNlX21hdGNoX29mX25vZGUpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICoKZHJpdmVy X2ZpbmRfZGV2aWNlX2J5X2Z3bm9kZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LAogICAgICAg IGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpCnsKIHJldHVybiBkcml2ZXJfZmlu ZF9kZXZpY2UoZHJ2LCAoKHZvaWQgKikwKSwgZndub2RlLCBkZXZpY2VfbWF0Y2hfZndub2RlKTsK fQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgc3RydWN0IGRldmljZSAqZHJpdmVyX2ZpbmRfZGV2aWNlX2J5X2RldnQoc3RydWN0 IGRldmljZV9kcml2ZXIgKmRydiwKICAgICAgIGRldl90IGRldnQpCnsKIHJldHVybiBkcml2ZXJf ZmluZF9kZXZpY2UoZHJ2LCAoKHZvaWQgKikwKSwgJmRldnQsIGRldmljZV9tYXRjaF9kZXZ0KTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgc3RydWN0IGRldmljZSAqZHJpdmVyX2ZpbmRfbmV4dF9kZXZpY2Uoc3RydWN0IGRldmljZV9k cml2ZXIgKmRydiwKICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlICpzdGFydCkKewogcmV0dXJuIGRy aXZlcl9maW5kX2RldmljZShkcnYsIHN0YXJ0LCAoKHZvaWQgKikwKSwgZGV2aWNlX21hdGNoX2Fu eSk7Cn0KIyAyMjUgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvZHJpdmVyLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZp Y2UgKgpkcml2ZXJfZmluZF9kZXZpY2VfYnlfYWNwaV9kZXYoc3RydWN0IGRldmljZV9kcml2ZXIg KmRydiwKICAgICAgICAgIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldikKewogcmV0dXJu IGRyaXZlcl9maW5kX2RldmljZShkcnYsICgodm9pZCAqKTApLCBhZGV2LCBkZXZpY2VfbWF0Y2hf YWNwaV9kZXYpOwp9CiMgMjM5ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2RyaXZlci5oIgp2b2lk IGRyaXZlcl9kZWZlcnJlZF9wcm9iZV9hZGQoc3RydWN0IGRldmljZSAqZGV2KTsKaW50IGRyaXZl cl9kZWZlcnJlZF9wcm9iZV9jaGVja19zdGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwppbnQgZHJp dmVyX2RlZmVycmVkX3Byb2JlX2NoZWNrX3N0YXRlX2NvbnRpbnVlKHN0cnVjdCBkZXZpY2UgKmRl dik7CnZvaWQgZHJpdmVyX2luaXQodm9pZCk7CiMgMzIgIi4vaW5jbHVkZS9saW51eC9kZXZpY2Uu aCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGV2aWNlLmgiIDEKCgoKCnN0cnVjdCBk ZXZfYXJjaGRhdGEgewoKIHZvaWQgKmlvbW11OwoKfTsKCnN0cnVjdCBwZGV2X2FyY2hkYXRhIHsK fTsKIyAzMyAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIiAyCgpzdHJ1Y3QgZGV2aWNlOwpzdHJ1 Y3QgZGV2aWNlX3ByaXZhdGU7CnN0cnVjdCBkZXZpY2VfZHJpdmVyOwpzdHJ1Y3QgZHJpdmVyX3By aXZhdGU7CnN0cnVjdCBtb2R1bGU7CnN0cnVjdCBjbGFzczsKc3RydWN0IHN1YnN5c19wcml2YXRl OwpzdHJ1Y3QgZGV2aWNlX25vZGU7CnN0cnVjdCBmd25vZGVfaGFuZGxlOwpzdHJ1Y3QgaW9tbXVf b3BzOwpzdHJ1Y3QgaW9tbXVfZ3JvdXA7CnN0cnVjdCBpb21tdV9md3NwZWM7CnN0cnVjdCBkZXZf cGluX2luZm87CnN0cnVjdCBpb21tdV9wYXJhbTsKIyA2MiAiLi9pbmNsdWRlL2xpbnV4L2Rldmlj ZS5oIgpzdHJ1Y3Qgc3Vic3lzX2ludGVyZmFjZSB7CiBjb25zdCBjaGFyICpuYW1lOwogc3RydWN0 IGJ1c190eXBlICpzdWJzeXM7CiBzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7CiBpbnQgKCphZGRfZGV2 KShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzdWJzeXNfaW50ZXJmYWNlICpzaWYpOwogdm9p ZCAoKnJlbW92ZV9kZXYpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHN1YnN5c19pbnRlcmZh Y2UgKnNpZik7Cn07CgppbnQgc3Vic3lzX2ludGVyZmFjZV9yZWdpc3RlcihzdHJ1Y3Qgc3Vic3lz X2ludGVyZmFjZSAqc2lmKTsKdm9pZCBzdWJzeXNfaW50ZXJmYWNlX3VucmVnaXN0ZXIoc3RydWN0 IHN1YnN5c19pbnRlcmZhY2UgKnNpZik7CgppbnQgc3Vic3lzX3N5c3RlbV9yZWdpc3RlcihzdHJ1 Y3QgYnVzX3R5cGUgKnN1YnN5cywKICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAq Kmdyb3Vwcyk7CmludCBzdWJzeXNfdmlydHVhbF9yZWdpc3RlcihzdHJ1Y3QgYnVzX3R5cGUgKnN1 YnN5cywKICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipncm91cHMpOwojIDg3 ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCnN0cnVjdCBkZXZpY2VfdHlwZSB7CiBjb25zdCBj aGFyICpuYW1lOwogY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3VwczsKIGludCAo KnVldmVudCkoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYp OwogY2hhciAqKCpkZXZub2RlKShzdHJ1Y3QgZGV2aWNlICpkZXYsIHVtb2RlX3QgKm1vZGUsCiAg ICBrdWlkX3QgKnVpZCwga2dpZF90ICpnaWQpOwogdm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBkZXZp Y2UgKmRldik7CgogY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgKnBtOwp9OwoKCnN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlIHsKIHN0cnVjdCBhdHRyaWJ1dGUgYXR0cjsKIHNzaXplX3QgKCpzaG93KShz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogICBjaGFy ICpidWYpOwogc3NpemVfdCAoKnN0b3JlKShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLAogICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpOwp9 OwoKc3RydWN0IGRldl9leHRfYXR0cmlidXRlIHsKIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGF0 dHI7CiB2b2lkICp2YXI7Cn07Cgpzc2l6ZV90IGRldmljZV9zaG93X3Vsb25nKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAgICAgY2hhciAqYnVmKTsK c3NpemVfdCBkZXZpY2Vfc3RvcmVfdWxvbmcoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwKICAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQp Owpzc2l6ZV90IGRldmljZV9zaG93X2ludChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLAogICBjaGFyICpidWYpOwpzc2l6ZV90IGRldmljZV9zdG9yZV9p bnQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKICAg IGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKc3NpemVfdCBkZXZpY2Vfc2hvd19ib29s KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAgIGNo YXIgKmJ1Zik7CnNzaXplX3QgZGV2aWNlX3N0b3JlX2Jvb2woc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90 IGNvdW50KTsKIyAxNDkgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIKZXh0ZXJuIGludCBkZXZp Y2VfY3JlYXRlX2ZpbGUoc3RydWN0IGRldmljZSAqZGV2aWNlLAogICAgICAgICBjb25zdCBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZW50cnkpOwpleHRlcm4gdm9pZCBkZXZpY2VfcmVtb3ZlX2Zp bGUoc3RydWN0IGRldmljZSAqZGV2LAogICAgICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIpOwpleHRlcm4gYm9vbCBkZXZpY2VfcmVtb3ZlX2ZpbGVfc2VsZihzdHJ1Y3Qg ZGV2aWNlICpkZXYsCiAgICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIp OwpleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkZXZp Y2VfY3JlYXRlX2Jpbl9maWxlKHN0cnVjdCBkZXZpY2UgKmRldiwKICAgICBjb25zdCBzdHJ1Y3Qg YmluX2F0dHJpYnV0ZSAqYXR0cik7CmV4dGVybiB2b2lkIGRldmljZV9yZW1vdmVfYmluX2ZpbGUo c3RydWN0IGRldmljZSAqZGV2LAogICAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmF0 dHIpOwoKCnR5cGVkZWYgdm9pZCAoKmRyX3JlbGVhc2VfdCkoc3RydWN0IGRldmljZSAqZGV2LCB2 b2lkICpyZXMpOwp0eXBlZGVmIGludCAoKmRyX21hdGNoX3QpKHN0cnVjdCBkZXZpY2UgKmRldiwg dm9pZCAqcmVzLCB2b2lkICptYXRjaF9kYXRhKTsKIyAxNzIgIi4vaW5jbHVkZS9saW51eC9kZXZp Y2UuaCIKZXh0ZXJuIHZvaWQgKmRldnJlc19hbGxvY19ub2RlKGRyX3JlbGVhc2VfdCByZWxlYXNl LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwLAogICAgICAgICAgaW50IG5pZCkgX19hdHRyaWJ1dGVf XygoX19tYWxsb2NfXykpOwpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkICpkZXZyZXNfYWxsb2MoZHJfcmVsZWFzZV90IHJlbGVhc2Us IHNpemVfdCBzaXplLCBnZnBfdCBnZnApCnsKIHJldHVybiBkZXZyZXNfYWxsb2Nfbm9kZShyZWxl YXNlLCBzaXplLCBnZnAsICgtMSkpOwp9CgoKZXh0ZXJuIHZvaWQgZGV2cmVzX2Zvcl9lYWNoX3Jl cyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGRyX3JlbGVhc2VfdCByZWxlYXNlLAogICAgZHJfbWF0Y2hf dCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSwKICAgIHZvaWQgKCpmbikoc3RydWN0IGRldmljZSAq LCB2b2lkICosIHZvaWQgKiksCiAgICB2b2lkICpkYXRhKTsKZXh0ZXJuIHZvaWQgZGV2cmVzX2Zy ZWUodm9pZCAqcmVzKTsKZXh0ZXJuIHZvaWQgZGV2cmVzX2FkZChzdHJ1Y3QgZGV2aWNlICpkZXYs IHZvaWQgKnJlcyk7CmV4dGVybiB2b2lkICpkZXZyZXNfZmluZChzdHJ1Y3QgZGV2aWNlICpkZXYs IGRyX3JlbGVhc2VfdCByZWxlYXNlLAogICAgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hf ZGF0YSk7CmV4dGVybiB2b2lkICpkZXZyZXNfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAq bmV3X3JlcywKICAgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSk7CmV4dGVybiB2 b2lkICpkZXZyZXNfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJlbGVh c2UsCiAgICAgIGRyX21hdGNoX3QgbWF0Y2gsIHZvaWQgKm1hdGNoX2RhdGEpOwpleHRlcm4gaW50 IGRldnJlc19kZXN0cm95KHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJlbGVhc2Us CiAgICAgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSk7CmV4dGVybiBpbnQgZGV2 cmVzX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2LCBkcl9yZWxlYXNlX3QgcmVsZWFzZSwKICAg ICBkcl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTsKCgpleHRlcm4gdm9pZCAqIF9f YXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkZXZyZXNfb3Blbl9ncm91cChz dHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmlkLAogICAgICAgICAgZ2ZwX3QgZ2ZwKTsKZXh0ZXJu IHZvaWQgZGV2cmVzX2Nsb3NlX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqaWQpOwpl eHRlcm4gdm9pZCBkZXZyZXNfcmVtb3ZlX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAq aWQpOwpleHRlcm4gaW50IGRldnJlc19yZWxlYXNlX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldiwg dm9pZCAqaWQpOwoKCmV4dGVybiB2b2lkICpkZXZtX2ttYWxsb2Moc3RydWN0IGRldmljZSAqZGV2 LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwKSBfX2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSk7CmV4 dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgMCkpKQpjaGFyICpkZXZt X2t2YXNwcmludGYoc3RydWN0IGRldmljZSAqZGV2LCBnZnBfdCBnZnAsIGNvbnN0IGNoYXIgKmZt dCwKICAgICAgICB2YV9saXN0IGFwKSBfX2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSk7CmV4dGVy biBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkpKQpjaGFyICpkZXZtX2th c3ByaW50ZihzdHJ1Y3QgZGV2aWNlICpkZXYsIGdmcF90IGdmcCwgY29uc3QgY2hhciAqZm10LCAu Li4pIF9fYXR0cmlidXRlX18oKF9fbWFsbG9jX18pKTsKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqZGV2bV9remFsbG9jKHN0cnVj dCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIGdmcF90IGdmcCkKewogcmV0dXJuIGRldm1fa21h bGxvYyhkZXYsIHNpemUsIGdmcCB8ICgoIGdmcF90KTB4MTAwdSkpOwp9CnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKmRldm1fa21h bGxvY19hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsCiAgICAgICAgICAgc2l6ZV90IG4sIHNpemVf dCBzaXplLCBnZnBfdCBmbGFncykKewogc2l6ZV90IGJ5dGVzOwoKIGlmIChfX2J1aWx0aW5fZXhw ZWN0KCEhKCh7IHR5cGVvZihuKSBfX2EgPSAobik7IHR5cGVvZihzaXplKSBfX2IgPSAoc2l6ZSk7 IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAodm9pZCkgKCZfX2EgPT0gJl9fYik7ICh2 b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fbXVsX292ZXJmbG93KF9fYSwgX19iLCBfX2Qp OyB9KSksIDApKQogIHJldHVybiAoKHZvaWQgKikwKTsKCiByZXR1cm4gZGV2bV9rbWFsbG9jKGRl diwgYnl0ZXMsIGZsYWdzKTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2 LAogICAgIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCnsKIHJldHVybiBkZXZt X2ttYWxsb2NfYXJyYXkoZGV2LCBuLCBzaXplLCBmbGFncyB8ICgoIGdmcF90KTB4MTAwdSkpOwp9 CmV4dGVybiB2b2lkIGRldm1fa2ZyZWUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpw KTsKZXh0ZXJuIGNoYXIgKmRldm1fa3N0cmR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNo YXIgKnMsIGdmcF90IGdmcCkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpOwpleHRlcm4gY29u c3QgY2hhciAqZGV2bV9rc3RyZHVwX2NvbnN0KHN0cnVjdCBkZXZpY2UgKmRldiwKICAgICAgICAg IGNvbnN0IGNoYXIgKnMsIGdmcF90IGdmcCk7CmV4dGVybiB2b2lkICpkZXZtX2ttZW1kdXAoc3Ry dWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBsZW4sCiAgICAgZ2ZwX3Qg Z2ZwKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRldm1fZ2V0X2ZyZWVfcGFnZXMoc3RydWN0IGRl dmljZSAqZGV2LAogICAgICBnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKTsKZXh0 ZXJuIHZvaWQgZGV2bV9mcmVlX3BhZ2VzKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgbG9u ZyBhZGRyKTsKCnZvaWQgKmRldm1faW9yZW1hcF9yZXNvdXJjZShzdHJ1Y3QgZGV2aWNlICpkZXYs CiAgICAgICAgY29uc3Qgc3RydWN0IHJlc291cmNlICpyZXMpOwp2b2lkICpkZXZtX2lvcmVtYXBf cmVzb3VyY2Vfd2Moc3RydWN0IGRldmljZSAqZGV2LAogICAgICAgICAgIGNvbnN0IHN0cnVjdCBy ZXNvdXJjZSAqcmVzKTsKCnZvaWQgKmRldm1fb2ZfaW9tYXAoc3RydWN0IGRldmljZSAqZGV2LAog ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlLCBpbnQgaW5kZXgsCiAgICAgICByZXNvdXJj ZV9zaXplX3QgKnNpemUpOwoKCmludCBkZXZtX2FkZF9hY3Rpb24oc3RydWN0IGRldmljZSAqZGV2 LCB2b2lkICgqYWN0aW9uKSh2b2lkICopLCB2b2lkICpkYXRhKTsKdm9pZCBkZXZtX3JlbW92ZV9h Y3Rpb24oc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICgqYWN0aW9uKSh2b2lkICopLCB2b2lkICpk YXRhKTsKdm9pZCBkZXZtX3JlbGVhc2VfYWN0aW9uKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAo KmFjdGlvbikodm9pZCAqKSwgdm9pZCAqZGF0YSk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZGV2bV9hZGRfYWN0aW9uX29yX3Jl c2V0KHN0cnVjdCBkZXZpY2UgKmRldiwKICAgICAgICB2b2lkICgqYWN0aW9uKSh2b2lkICopLCB2 b2lkICpkYXRhKQp7CiBpbnQgcmV0OwoKIHJldCA9IGRldm1fYWRkX2FjdGlvbihkZXYsIGFjdGlv biwgZGF0YSk7CiBpZiAocmV0KQogIGFjdGlvbihkYXRhKTsKCiByZXR1cm4gcmV0Owp9CiMgMjgy ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCnZvaWQgKl9fZGV2bV9hbGxvY19wZXJjcHUoc3Ry dWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwKICAgICAgIHNpemVfdCBhbGlnbik7CnZvaWQg ZGV2bV9mcmVlX3BlcmNwdShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnBkYXRhKTsKCnN0cnVj dCBkZXZpY2VfZG1hX3BhcmFtZXRlcnMgewoKCgoKIHVuc2lnbmVkIGludCBtYXhfc2VnbWVudF9z aXplOwogdW5zaWduZWQgbG9uZyBzZWdtZW50X2JvdW5kYXJ5X21hc2s7Cn07CiMgMzA2ICIuL2lu Y2x1ZGUvbGludXgvZGV2aWNlLmgiCnN0cnVjdCBkZXZpY2VfY29ubmVjdGlvbiB7CiBzdHJ1Y3Qg Zndub2RlX2hhbmRsZSAqZndub2RlOwogY29uc3QgY2hhciAqZW5kcG9pbnRbMl07CiBjb25zdCBj aGFyICppZDsKIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKfTsKCnR5cGVkZWYgdm9pZCAqKCpkZXZj b25fbWF0Y2hfZm5fdCkoc3RydWN0IGRldmljZV9jb25uZWN0aW9uICpjb24sIGludCBlcCwKICAg ICAgIHZvaWQgKmRhdGEpOwoKdm9pZCAqZndub2RlX2Nvbm5lY3Rpb25fZmluZF9tYXRjaChzdHJ1 Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLAogICAgICAgY29uc3QgY2hhciAqY29uX2lkLCB2b2lk ICpkYXRhLAogICAgICAgZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gpOwp2b2lkICpkZXZpY2VfY29u bmVjdGlvbl9maW5kX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqY29uX2lk LAogICAgICAgdm9pZCAqZGF0YSwgZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gpOwoKc3RydWN0IGRl dmljZSAqZGV2aWNlX2Nvbm5lY3Rpb25fZmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNo YXIgKmNvbl9pZCk7Cgp2b2lkIGRldmljZV9jb25uZWN0aW9uX2FkZChzdHJ1Y3QgZGV2aWNlX2Nv bm5lY3Rpb24gKmNvbik7CnZvaWQgZGV2aWNlX2Nvbm5lY3Rpb25fcmVtb3ZlKHN0cnVjdCBkZXZp Y2VfY29ubmVjdGlvbiAqY29uKTsKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRldmljZV9jb25uZWN0aW9uc19hZGQoc3Ry dWN0IGRldmljZV9jb25uZWN0aW9uICpjb25zKQp7CiBzdHJ1Y3QgZGV2aWNlX2Nvbm5lY3Rpb24g KmM7CgogZm9yIChjID0gY29uczsgYy0+ZW5kcG9pbnRbMF07IGMrKykKICBkZXZpY2VfY29ubmVj dGlvbl9hZGQoYyk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRldmljZV9jb25uZWN0aW9uc19yZW1vdmUoc3RydWN0 IGRldmljZV9jb25uZWN0aW9uICpjb25zKQp7CiBzdHJ1Y3QgZGV2aWNlX2Nvbm5lY3Rpb24gKmM7 CgogZm9yIChjID0gY29uczsgYy0+ZW5kcG9pbnRbMF07IGMrKykKICBkZXZpY2VfY29ubmVjdGlv bl9yZW1vdmUoYyk7Cn0KIyAzNjAgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIKZW51bSBkZXZp Y2VfbGlua19zdGF0ZSB7CiBETF9TVEFURV9OT05FID0gLTEsCiBETF9TVEFURV9ET1JNQU5UID0g MCwKIERMX1NUQVRFX0FWQUlMQUJMRSwKIERMX1NUQVRFX0NPTlNVTUVSX1BST0JFLAogRExfU1RB VEVfQUNUSVZFLAogRExfU1RBVEVfU1VQUExJRVJfVU5CSU5ELAp9OwojIDQwMyAiLi9pbmNsdWRl L2xpbnV4L2RldmljZS5oIgpzdHJ1Y3QgZGV2aWNlX2xpbmsgewogc3RydWN0IGRldmljZSAqc3Vw cGxpZXI7CiBzdHJ1Y3QgbGlzdF9oZWFkIHNfbm9kZTsKIHN0cnVjdCBkZXZpY2UgKmNvbnN1bWVy Owogc3RydWN0IGxpc3RfaGVhZCBjX25vZGU7CiBlbnVtIGRldmljZV9saW5rX3N0YXRlIHN0YXR1 czsKIHUzMiBmbGFnczsKIHJlZmNvdW50X3QgcnBtX2FjdGl2ZTsKIHN0cnVjdCBrcmVmIGtyZWY7 Cgogc3RydWN0IGNhbGxiYWNrX2hlYWQgY2FsbGJhY2tfaGVhZDsKCiBib29sIHN1cHBsaWVyX3By ZWFjdGl2YXRlZDsKfTsKIyA0MjUgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIKZW51bSBkbF9k ZXZfc3RhdGUgewogRExfREVWX05PX0RSSVZFUiA9IDAsCiBETF9ERVZfUFJPQklORywKIERMX0RF Vl9EUklWRVJfQk9VTkQsCiBETF9ERVZfVU5CSU5ESU5HLAp9OwojIDQ0MiAiLi9pbmNsdWRlL2xp bnV4L2RldmljZS5oIgpzdHJ1Y3QgZGV2X2xpbmtzX2luZm8gewogc3RydWN0IGxpc3RfaGVhZCBz dXBwbGllcnM7CiBzdHJ1Y3QgbGlzdF9oZWFkIGNvbnN1bWVyczsKIHN0cnVjdCBsaXN0X2hlYWQg bmVlZHNfc3VwcGxpZXJzOwogc3RydWN0IGxpc3RfaGVhZCBkZWZlcl9zeW5jOwogYm9vbCBuZWVk X2Zvcl9wcm9iZTsKIGVudW0gZGxfZGV2X3N0YXRlIHN0YXR1czsKfTsKIyA1MzcgIi4vaW5jbHVk ZS9saW51eC9kZXZpY2UuaCIKc3RydWN0IGRldmljZSB7CiBzdHJ1Y3Qga29iamVjdCBrb2JqOwog c3RydWN0IGRldmljZSAqcGFyZW50OwoKIHN0cnVjdCBkZXZpY2VfcHJpdmF0ZSAqcDsKCiBjb25z dCBjaGFyICppbml0X25hbWU7CiBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgKnR5cGU7Cgogc3Ry dWN0IGJ1c190eXBlICpidXM7CiBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJpdmVyOwoKIHZvaWQg KnBsYXRmb3JtX2RhdGE7Cgogdm9pZCAqZHJpdmVyX2RhdGE7CgoKCgogc3RydWN0IG11dGV4IG11 dGV4OwoKCgogc3RydWN0IGRldl9saW5rc19pbmZvIGxpbmtzOwogc3RydWN0IGRldl9wbV9pbmZv IHBvd2VyOwogc3RydWN0IGRldl9wbV9kb21haW4gKnBtX2RvbWFpbjsKCgogc3RydWN0IGlycV9k b21haW4gKm1zaV9kb21haW47CgoKIHN0cnVjdCBkZXZfcGluX2luZm8gKnBpbnM7CgoKIHN0cnVj dCBsaXN0X2hlYWQgbXNpX2xpc3Q7CgoKIGNvbnN0IHN0cnVjdCBkbWFfbWFwX29wcyAqZG1hX29w czsKIHU2NCAqZG1hX21hc2s7CiB1NjQgY29oZXJlbnRfZG1hX21hc2s7CgoKCgogdTY0IGJ1c19k bWFfbGltaXQ7CiB1bnNpZ25lZCBsb25nIGRtYV9wZm5fb2Zmc2V0OwoKIHN0cnVjdCBkZXZpY2Vf ZG1hX3BhcmFtZXRlcnMgKmRtYV9wYXJtczsKCiBzdHJ1Y3QgbGlzdF9oZWFkIGRtYV9wb29sczsK IyA1OTcgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIKIHN0cnVjdCBkZXZfYXJjaGRhdGEgYXJj aGRhdGE7Cgogc3RydWN0IGRldmljZV9ub2RlICpvZl9ub2RlOwogc3RydWN0IGZ3bm9kZV9oYW5k bGUgKmZ3bm9kZTsKCgoKCiBkZXZfdCBkZXZ0OwogdTMyIGlkOwoKIHNwaW5sb2NrX3QgZGV2cmVz X2xvY2s7CiBzdHJ1Y3QgbGlzdF9oZWFkIGRldnJlc19oZWFkOwoKIHN0cnVjdCBjbGFzcyAqY2xh c3M7CiBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqZ3JvdXBzOwoKIHZvaWQgKCpyZWxl YXNlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogc3RydWN0IGlvbW11X2dyb3VwICppb21tdV9ncm91 cDsKIHN0cnVjdCBpb21tdV9md3NwZWMgKmlvbW11X2Z3c3BlYzsKIHN0cnVjdCBpb21tdV9wYXJh bSAqaW9tbXVfcGFyYW07CgogYm9vbCBvZmZsaW5lX2Rpc2FibGVkOjE7CiBib29sIG9mZmxpbmU6 MTsKIGJvb2wgb2Zfbm9kZV9yZXVzZWQ6MTsKIGJvb2wgc3RhdGVfc3luY2VkOjE7CgoKCgoKfTsK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHN0cnVjdCBkZXZpY2UgKmtvYmpfdG9fZGV2KHN0cnVjdCBrb2JqZWN0ICprb2JqKQp7CiByZXR1 cm4gKHsgdm9pZCAqX19tcHRyID0gKHZvaWQgKikoa29iaik7IGRvIHsgZXh0ZXJuIHZvaWQgX19j b21waWxldGltZV9hc3NlcnRfNjMyKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygicG9p bnRlciB0eXBlIG1pc21hdGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISghX19idWls dGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKihrb2JqKSksIHR5cGVvZigoKHN0cnVjdCBk ZXZpY2UgKikwKS0+a29iaikpICYmICFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVv ZigqKGtvYmopKSwgdHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF82MzIoKTsg fSB3aGlsZSAoMCk7ICgoc3RydWN0IGRldmljZSAqKShfX21wdHIgLSBfX2J1aWx0aW5fb2Zmc2V0 b2Yoc3RydWN0IGRldmljZSwga29iaikpKTsgfSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkZXZpY2VfaW9tbXVf bWFwcGVkKHN0cnVjdCBkZXZpY2UgKmRldikKewogcmV0dXJuIChkZXYtPmlvbW11X2dyb3VwICE9 ICgodm9pZCAqKTApKTsKfQoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3BtX3dha2V1cC5oIiAxCiMg MTggIi4vaW5jbHVkZS9saW51eC9wbV93YWtldXAuaCIKc3RydWN0IHdha2VfaXJxOwojIDQzICIu L2luY2x1ZGUvbGludXgvcG1fd2FrZXVwLmgiCnN0cnVjdCB3YWtldXBfc291cmNlIHsKIGNvbnN0 IGNoYXIgKm5hbWU7CiBpbnQgaWQ7CiBzdHJ1Y3QgbGlzdF9oZWFkIGVudHJ5Owogc3BpbmxvY2tf dCBsb2NrOwogc3RydWN0IHdha2VfaXJxICp3YWtlaXJxOwogc3RydWN0IHRpbWVyX2xpc3QgdGlt ZXI7CiB1bnNpZ25lZCBsb25nIHRpbWVyX2V4cGlyZXM7CiBrdGltZV90IHRvdGFsX3RpbWU7CiBr dGltZV90IG1heF90aW1lOwoga3RpbWVfdCBsYXN0X3RpbWU7CiBrdGltZV90IHN0YXJ0X3ByZXZl bnRfdGltZTsKIGt0aW1lX3QgcHJldmVudF9zbGVlcF90aW1lOwogdW5zaWduZWQgbG9uZyBldmVu dF9jb3VudDsKIHVuc2lnbmVkIGxvbmcgYWN0aXZlX2NvdW50OwogdW5zaWduZWQgbG9uZyByZWxh eF9jb3VudDsKIHVuc2lnbmVkIGxvbmcgZXhwaXJlX2NvdW50OwogdW5zaWduZWQgbG9uZyB3YWtl dXBfY291bnQ7CiBzdHJ1Y3QgZGV2aWNlICpkZXY7CiBib29sIGFjdGl2ZToxOwogYm9vbCBhdXRv c2xlZXBfZW5hYmxlZDoxOwp9OwojIDc3ICIuL2luY2x1ZGUvbGludXgvcG1fd2FrZXVwLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgZGV2aWNlX2Nhbl93YWtldXAoc3RydWN0IGRldmljZSAqZGV2KQp7CiByZXR1cm4gZGV2LT5w b3dlci5jYW5fd2FrZXVwOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRldmljZV9tYXlfd2FrZXVwKHN0cnVjdCBkZXZpY2Ug KmRldikKewogcmV0dXJuIGRldi0+cG93ZXIuY2FuX3dha2V1cCAmJiAhIWRldi0+cG93ZXIud2Fr ZXVwOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGRldmljZV9zZXRfd2FrZXVwX3BhdGgoc3RydWN0IGRldmljZSAqZGV2KQp7 CiBkZXYtPnBvd2VyLndha2V1cF9wYXRoID0gdHJ1ZTsKfQoKCmV4dGVybiBzdHJ1Y3Qgd2FrZXVw X3NvdXJjZSAqd2FrZXVwX3NvdXJjZV9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSk7CmV4dGVybiB2 b2lkIHdha2V1cF9zb3VyY2VfZGVzdHJveShzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd3MpOwpleHRl cm4gdm9pZCB3YWtldXBfc291cmNlX2FkZChzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd3MpOwpleHRl cm4gdm9pZCB3YWtldXBfc291cmNlX3JlbW92ZShzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd3MpOwpl eHRlcm4gc3RydWN0IHdha2V1cF9zb3VyY2UgKndha2V1cF9zb3VyY2VfcmVnaXN0ZXIoc3RydWN0 IGRldmljZSAqZGV2LAogICAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7CmV4dGVybiB2b2lkIHdh a2V1cF9zb3VyY2VfdW5yZWdpc3RlcihzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd3MpOwpleHRlcm4g aW50IHdha2V1cF9zb3VyY2VzX3JlYWRfbG9jayh2b2lkKTsKZXh0ZXJuIHZvaWQgd2FrZXVwX3Nv dXJjZXNfcmVhZF91bmxvY2soaW50IGlkeCk7CmV4dGVybiBzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAq d2FrZXVwX3NvdXJjZXNfd2Fsa19zdGFydCh2b2lkKTsKZXh0ZXJuIHN0cnVjdCB3YWtldXBfc291 cmNlICp3YWtldXBfc291cmNlc193YWxrX25leHQoc3RydWN0IHdha2V1cF9zb3VyY2UgKndzKTsK ZXh0ZXJuIGludCBkZXZpY2Vfd2FrZXVwX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRl cm4gaW50IGRldmljZV93YWtldXBfZGlzYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4g dm9pZCBkZXZpY2Vfc2V0X3dha2V1cF9jYXBhYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgYm9vbCBj YXBhYmxlKTsKZXh0ZXJuIGludCBkZXZpY2VfaW5pdF93YWtldXAoc3RydWN0IGRldmljZSAqZGV2 LCBib29sIHZhbCk7CmV4dGVybiBpbnQgZGV2aWNlX3NldF93YWtldXBfZW5hYmxlKHN0cnVjdCBk ZXZpY2UgKmRldiwgYm9vbCBlbmFibGUpOwpleHRlcm4gdm9pZCBfX3BtX3N0YXlfYXdha2Uoc3Ry dWN0IHdha2V1cF9zb3VyY2UgKndzKTsKZXh0ZXJuIHZvaWQgcG1fc3RheV9hd2FrZShzdHJ1Y3Qg ZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCBfX3BtX3JlbGF4KHN0cnVjdCB3YWtldXBfc291cmNl ICp3cyk7CmV4dGVybiB2b2lkIHBtX3JlbGF4KHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiB2 b2lkIHBtX3dha2V1cF93c19ldmVudChzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd3MsIHVuc2lnbmVk IGludCBtc2VjLCBib29sIGhhcmQpOwpleHRlcm4gdm9pZCBwbV93YWtldXBfZGV2X2V2ZW50KHN0 cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG1zZWMsIGJvb2wgaGFyZCk7CiMgMTk1ICIu L2luY2x1ZGUvbGludXgvcG1fd2FrZXVwLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19wbV93YWtldXBfZXZlbnQoc3RydWN0 IHdha2V1cF9zb3VyY2UgKndzLCB1bnNpZ25lZCBpbnQgbXNlYykKewogcmV0dXJuIHBtX3dha2V1 cF93c19ldmVudCh3cywgbXNlYywgZmFsc2UpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBtX3dha2V1cF9ldmVudChzdHJ1 Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBtc2VjKQp7CiByZXR1cm4gcG1fd2FrZXVwX2Rl dl9ldmVudChkZXYsIG1zZWMsIGZhbHNlKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwbV93YWtldXBfaGFyZF9ldmVudChz dHJ1Y3QgZGV2aWNlICpkZXYpCnsKIHJldHVybiBwbV93YWtldXBfZGV2X2V2ZW50KGRldiwgMCwg dHJ1ZSk7Cn0KIyA2NDcgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIgMgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY29uc3QgY2hhciAq ZGV2X25hbWUoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KQp7CgogaWYgKGRldi0+aW5pdF9uYW1l KQogIHJldHVybiBkZXYtPmluaXRfbmFtZTsKCiByZXR1cm4ga29iamVjdF9uYW1lKCZkZXYtPmtv YmopOwp9CgpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkK aW50IGRldl9zZXRfbmFtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUsIC4u Lik7CiMgNjcwICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkZXZfdG9fbm9kZShzdHJ1 Y3QgZGV2aWNlICpkZXYpCnsKIHJldHVybiAoLTEpOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X2Rldl9ub2RlKHN0cnVj dCBkZXZpY2UgKmRldiwgaW50IG5vZGUpCnsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBpcnFfZG9tYWluICpkZXZfZ2V0 X21zaV9kb21haW4oY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KQp7CgogcmV0dXJuIGRldi0+bXNp X2RvbWFpbjsKCgoKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZfc2V0X21zaV9kb21haW4oc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgaXJxX2RvbWFpbiAqZCkKewoKIGRldi0+bXNpX2RvbWFpbiA9IGQ7Cgp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk ICpkZXZfZ2V0X2RydmRhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KQp7CiByZXR1cm4gZGV2 LT5kcml2ZXJfZGF0YTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZfc2V0X2RydmRhdGEoc3RydWN0IGRldmljZSAqZGV2 LCB2b2lkICpkYXRhKQp7CiBkZXYtPmRyaXZlcl9kYXRhID0gZGF0YTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHBtX3N1 YnN5c19kYXRhICpkZXZfdG9fcHNkKHN0cnVjdCBkZXZpY2UgKmRldikKewogcmV0dXJuIGRldiA/ IGRldi0+cG93ZXIuc3Vic3lzX2RhdGEgOiAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGRl dl9nZXRfdWV2ZW50X3N1cHByZXNzKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldikKewogcmV0dXJu IGRldi0+a29iai51ZXZlbnRfc3VwcHJlc3M7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZGV2X3NldF91ZXZlbnRfc3VwcHJl c3Moc3RydWN0IGRldmljZSAqZGV2LCBpbnQgdmFsKQp7CiBkZXYtPmtvYmoudWV2ZW50X3N1cHBy ZXNzID0gdmFsOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgZGV2aWNlX2lzX3JlZ2lzdGVyZWQoc3RydWN0IGRldmljZSAqZGV2 KQp7CiByZXR1cm4gZGV2LT5rb2JqLnN0YXRlX2luX3N5c2ZzOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRldmljZV9lbmFi bGVfYXN5bmNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCnsKIGlmICghZGV2LT5wb3dlci5p c19wcmVwYXJlZCkKICBkZXYtPnBvd2VyLmFzeW5jX3N1c3BlbmQgPSB0cnVlOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRl dmljZV9kaXNhYmxlX2FzeW5jX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQp7CiBpZiAoIWRl di0+cG93ZXIuaXNfcHJlcGFyZWQpCiAgZGV2LT5wb3dlci5hc3luY19zdXNwZW5kID0gZmFsc2U7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgZGV2aWNlX2FzeW5jX3N1c3BlbmRfZW5hYmxlZChzdHJ1Y3QgZGV2aWNlICpkZXYp CnsKIHJldHVybiAhIWRldi0+cG93ZXIuYXN5bmNfc3VzcGVuZDsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkZXZpY2VfcG1f bm90X3JlcXVpcmVkKHN0cnVjdCBkZXZpY2UgKmRldikKewogcmV0dXJuIGRldi0+cG93ZXIubm9f cG07Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgZGV2aWNlX3NldF9wbV9ub3RfcmVxdWlyZWQoc3RydWN0IGRldmljZSAqZGV2 KQp7CiBkZXYtPnBvd2VyLm5vX3BtID0gdHJ1ZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZfcG1fc3lzY29yZV9kZXZp Y2Uoc3RydWN0IGRldmljZSAqZGV2LCBib29sIHZhbCkKewoKIGRldi0+cG93ZXIuc3lzY29yZSA9 IHZhbDsKCn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgZGV2X3BtX3NldF9kcml2ZXJfZmxhZ3Moc3RydWN0IGRldmljZSAqZGV2 LCB1MzIgZmxhZ3MpCnsKIGRldi0+cG93ZXIuZHJpdmVyX2ZsYWdzID0gZmxhZ3M7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg ZGV2X3BtX3Rlc3RfZHJpdmVyX2ZsYWdzKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIGZsYWdzKQp7 CiByZXR1cm4gISEoZGV2LT5wb3dlci5kcml2ZXJfZmxhZ3MgJiBmbGFncyk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZGV2 aWNlX2xvY2soc3RydWN0IGRldmljZSAqZGV2KQp7CiBtdXRleF9sb2NrKCZkZXYtPm11dGV4KTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IGRldmljZV9sb2NrX2ludGVycnVwdGlibGUoc3RydWN0IGRldmljZSAqZGV2KQp7CiBy ZXR1cm4gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPm11dGV4KTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGRldmlj ZV90cnlsb2NrKHN0cnVjdCBkZXZpY2UgKmRldikKewogcmV0dXJuIG11dGV4X3RyeWxvY2soJmRl di0+bXV0ZXgpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGRldmljZV91bmxvY2soc3RydWN0IGRldmljZSAqZGV2KQp7CiBt dXRleF91bmxvY2soJmRldi0+bXV0ZXgpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRldmljZV9sb2NrX2Fzc2VydChzdHJ1 Y3QgZGV2aWNlICpkZXYpCnsKIGRvIHsgKHZvaWQpKCZkZXYtPm11dGV4KTsgfSB3aGlsZSAoMCk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHN0cnVjdCBkZXZpY2Vfbm9kZSAqZGV2X29mX25vZGUoc3RydWN0IGRldmljZSAqZGV2KQp7 CiBpZiAoITAgfHwgIWRldikKICByZXR1cm4gKCh2b2lkICopMCk7CiByZXR1cm4gZGV2LT5vZl9u b2RlOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIGRldl9oYXNfc3luY19zdGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCnsKIGlm ICghZGV2KQogIHJldHVybiBmYWxzZTsKIGlmIChkZXYtPmRyaXZlciAmJiBkZXYtPmRyaXZlci0+ c3luY19zdGF0ZSkKICByZXR1cm4gdHJ1ZTsKIGlmIChkZXYtPmJ1cyAmJiBkZXYtPmJ1cy0+c3lu Y19zdGF0ZSkKICByZXR1cm4gdHJ1ZTsKIHJldHVybiBmYWxzZTsKfQoKCgoKZXh0ZXJuIGludCBf X2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZGV2aWNlX3JlZ2lzdGVyKHN0 cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIGRldmljZV91bnJlZ2lzdGVyKHN0cnVjdCBk ZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIGRldmljZV9pbml0aWFsaXplKHN0cnVjdCBkZXZpY2Ug KmRldik7CmV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IGRldmljZV9hZGQoc3RydWN0IGRldmljZSAqZGV2KTsKZXh0ZXJuIHZvaWQgZGV2aWNlX2RlbChz dHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4gaW50IGRldmljZV9mb3JfZWFjaF9jaGlsZChzdHJ1 Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAgICAgICBpbnQgKCpmbikoc3RydWN0IGRldmlj ZSAqZGV2LCB2b2lkICpkYXRhKSk7CmV4dGVybiBpbnQgZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX3Jl dmVyc2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhLAogICAgICAgaW50ICgqZm4pKHN0 cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkpOwpleHRlcm4gc3RydWN0IGRldmljZSAqZGV2 aWNlX2ZpbmRfY2hpbGQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhLAogICAgaW50ICgq bWF0Y2gpKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkpOwpleHRlcm4gc3RydWN0IGRl dmljZSAqZGV2aWNlX2ZpbmRfY2hpbGRfYnlfbmFtZShzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsCiAg ICAgIGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gaW50IGRldmljZV9yZW5hbWUoc3RydWN0IGRl dmljZSAqZGV2LCBjb25zdCBjaGFyICpuZXdfbmFtZSk7CmV4dGVybiBpbnQgZGV2aWNlX21vdmUo c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICpuZXdfcGFyZW50LAogICAgICAgICBl bnVtIGRwbV9vcmRlciBkcG1fb3JkZXIpOwpleHRlcm4gY29uc3QgY2hhciAqZGV2aWNlX2dldF9k ZXZub2RlKHN0cnVjdCBkZXZpY2UgKmRldiwKICAgICAgICAgIHVtb2RlX3QgKm1vZGUsIGt1aWRf dCAqdWlkLCBrZ2lkX3QgKmdpZCwKICAgICAgICAgIGNvbnN0IGNoYXIgKip0bXApOwoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBk ZXZpY2Vfc3VwcG9ydHNfb2ZmbGluZShzdHJ1Y3QgZGV2aWNlICpkZXYpCnsKIHJldHVybiBkZXYt PmJ1cyAmJiBkZXYtPmJ1cy0+b2ZmbGluZSAmJiBkZXYtPmJ1cy0+b25saW5lOwp9CgpleHRlcm4g dm9pZCBsb2NrX2RldmljZV9ob3RwbHVnKHZvaWQpOwpleHRlcm4gdm9pZCB1bmxvY2tfZGV2aWNl X2hvdHBsdWcodm9pZCk7CmV4dGVybiBpbnQgbG9ja19kZXZpY2VfaG90cGx1Z19zeXNmcyh2b2lk KTsKZXh0ZXJuIGludCBkZXZpY2Vfb2ZmbGluZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4g aW50IGRldmljZV9vbmxpbmUoc3RydWN0IGRldmljZSAqZGV2KTsKZXh0ZXJuIHZvaWQgc2V0X3By aW1hcnlfZndub2RlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3 bm9kZSk7CmV4dGVybiB2b2lkIHNldF9zZWNvbmRhcnlfZndub2RlKHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSk7CnZvaWQgZGV2aWNlX3NldF9vZl9ub2Rl X2Zyb21fZGV2KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZSAqZGV2Mik7 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgZGV2X251bV92ZihzdHJ1Y3QgZGV2aWNlICpkZXYpCnsKIGlmIChkZXYtPmJ1cyAmJiBk ZXYtPmJ1cy0+bnVtX3ZmKQogIHJldHVybiBkZXYtPmJ1cy0+bnVtX3ZmKGRldik7CiByZXR1cm4g MDsKfQoKCgoKZXh0ZXJuIHN0cnVjdCBkZXZpY2UgKl9fcm9vdF9kZXZpY2VfcmVnaXN0ZXIoY29u c3QgY2hhciAqbmFtZSwKICAgICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyKTsKCgoKCgpleHRl cm4gdm9pZCByb290X2RldmljZV91bnJlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKnJvb3QpOwoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCAqZGV2X2dldF9wbGF0ZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpCnsKIHJldHVybiBk ZXYtPnBsYXRmb3JtX2RhdGE7Cn0KCgoKCgpleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fy bl91bnVzZWRfcmVzdWx0X18pKSBkZXZpY2VfYmluZF9kcml2ZXIoc3RydWN0IGRldmljZSAqZGV2 KTsKZXh0ZXJuIHZvaWQgZGV2aWNlX3JlbGVhc2VfZHJpdmVyKHN0cnVjdCBkZXZpY2UgKmRldik7 CmV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGRldmlj ZV9hdHRhY2goc3RydWN0IGRldmljZSAqZGV2KTsKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChf X3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZHJpdmVyX2F0dGFjaChzdHJ1Y3QgZGV2aWNlX2RyaXZl ciAqZHJ2KTsKZXh0ZXJuIHZvaWQgZGV2aWNlX2luaXRpYWxfcHJvYmUoc3RydWN0IGRldmljZSAq ZGV2KTsKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkg ZGV2aWNlX3JlcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KTsKCmV4dGVybiBib29sIGRldmljZV9p c19ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpOwoKCgoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9f Zm9ybWF0X18ocHJpbnRmLCA1LCAwKSkpCnN0cnVjdCBkZXZpY2UgKmRldmljZV9jcmVhdGVfdmFy Z3Moc3RydWN0IGNsYXNzICpjbHMsIHN0cnVjdCBkZXZpY2UgKnBhcmVudCwKICAgICAgIGRldl90 IGRldnQsIHZvaWQgKmRydmRhdGEsCiAgICAgICBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgdmFy Z3MpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDUsIDYpKSkKc3Ry dWN0IGRldmljZSAqZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgY2xhc3MgKmNscywgc3RydWN0IGRldmlj ZSAqcGFyZW50LAogICAgICAgIGRldl90IGRldnQsIHZvaWQgKmRydmRhdGEsCiAgICAgICAgY29u c3QgY2hhciAqZm10LCAuLi4pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmlu dGYsIDYsIDcpKSkKc3RydWN0IGRldmljZSAqZGV2aWNlX2NyZWF0ZV93aXRoX2dyb3VwcyhzdHJ1 Y3QgY2xhc3MgKmNscywKICAgICAgICBzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsIGRldl90IGRldnQs IHZvaWQgKmRydmRhdGEsCiAgICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdy b3VwcywKICAgICAgICBjb25zdCBjaGFyICpmbXQsIC4uLik7CmV4dGVybiB2b2lkIGRldmljZV9k ZXN0cm95KHN0cnVjdCBjbGFzcyAqY2xzLCBkZXZfdCBkZXZ0KTsKCmV4dGVybiBpbnQgX19hdHRy aWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGRldmljZV9hZGRfZ3JvdXBzKHN0cnVj dCBkZXZpY2UgKmRldiwKICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqZ3JvdXBz KTsKZXh0ZXJuIHZvaWQgZGV2aWNlX3JlbW92ZV9ncm91cHMoc3RydWN0IGRldmljZSAqZGV2LAog ICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipncm91cHMpOwoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkZXZpY2VfYWRkX2dyb3VwKHN0cnVjdCBk ZXZpY2UgKmRldiwKICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpncnApCnsKIGNv bnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmdyb3Vwc1tdID0geyBncnAsICgodm9pZCAqKTAp IH07CgogcmV0dXJuIGRldmljZV9hZGRfZ3JvdXBzKGRldiwgZ3JvdXBzKTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZp Y2VfcmVtb3ZlX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldiwKICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgYXR0cmlidXRlX2dyb3VwICpncnApCnsKIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAg Kmdyb3Vwc1tdID0geyBncnAsICgodm9pZCAqKTApIH07CgogcmV0dXJuIGRldmljZV9yZW1vdmVf Z3JvdXBzKGRldiwgZ3JvdXBzKTsKfQoKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkgZGV2bV9kZXZpY2VfYWRkX2dyb3VwcyhzdHJ1Y3QgZGV2aWNlICpk ZXYsCiAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CmV4dGVybiB2 b2lkIGRldm1fZGV2aWNlX3JlbW92ZV9ncm91cHMoc3RydWN0IGRldmljZSAqZGV2LAogICAgICAg ICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CmV4dGVybiBpbnQgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGRldm1fZGV2aWNlX2FkZF9ncm91 cChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAq Z3JwKTsKZXh0ZXJuIHZvaWQgZGV2bV9kZXZpY2VfcmVtb3ZlX2dyb3VwKHN0cnVjdCBkZXZpY2Ug KmRldiwKICAgICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqZ3JwKTsKCgoKCgoK CmV4dGVybiBpbnQgKCpwbGF0Zm9ybV9ub3RpZnkpKHN0cnVjdCBkZXZpY2UgKmRldik7CgpleHRl cm4gaW50ICgqcGxhdGZvcm1fbm90aWZ5X3JlbW92ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKCgoK CgoKZXh0ZXJuIHN0cnVjdCBkZXZpY2UgKmdldF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KTsK ZXh0ZXJuIHZvaWQgcHV0X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4gYm9vbCBr aWxsX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoKCmV4dGVybiBpbnQgZGV2dG1wZnNfbW91 bnQodm9pZCk7CgoKCgoKZXh0ZXJuIHZvaWQgZGV2aWNlX3NodXRkb3duKHZvaWQpOwoKCmV4dGVy biBjb25zdCBjaGFyICpkZXZfZHJpdmVyX3N0cmluZyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYp OwoKCnN0cnVjdCBkZXZpY2VfbGluayAqZGV2aWNlX2xpbmtfYWRkKHN0cnVjdCBkZXZpY2UgKmNv bnN1bWVyLAogICAgICAgIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyLCB1MzIgZmxhZ3MpOwp2b2lk IGRldmljZV9saW5rX2RlbChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspOwp2b2lkIGRldmljZV9s aW5rX3JlbW92ZSh2b2lkICpjb25zdW1lciwgc3RydWN0IGRldmljZSAqc3VwcGxpZXIpOwp2b2lk IGRldmljZV9saW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3BhdXNlKHZvaWQpOwp2b2lkIGRldmlj ZV9saW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3Jlc3VtZSh2b2lkKTsKIyAzMyAiLi9pbmNsdWRl L2RybS9kcm1fcHJpbnQuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9kZWJ1Z2ZzLmgiIDEKIyAy MSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnZnMuaCIKc3RydWN0IGRldmljZTsKc3RydWN0IGZpbGVf b3BlcmF0aW9uczsKCnN0cnVjdCBkZWJ1Z2ZzX2Jsb2Jfd3JhcHBlciB7CiB2b2lkICpkYXRhOwog dW5zaWduZWQgbG9uZyBzaXplOwp9OwoKc3RydWN0IGRlYnVnZnNfcmVnMzIgewogY2hhciAqbmFt ZTsKIHVuc2lnbmVkIGxvbmcgb2Zmc2V0Owp9OwoKc3RydWN0IGRlYnVnZnNfcmVnc2V0MzIgewog Y29uc3Qgc3RydWN0IGRlYnVnZnNfcmVnMzIgKnJlZ3M7CiBpbnQgbnJlZ3M7CiB2b2lkICpiYXNl Owp9OwoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKmFyY2hfZGVidWdmc19kaXI7CiMgNTcgIi4vaW5j bHVkZS9saW51eC9kZWJ1Z2ZzLmgiCnR5cGVkZWYgc3RydWN0IHZmc21vdW50ICooKmRlYnVnZnNf YXV0b21vdW50X3QpKHN0cnVjdCBkZW50cnkgKiwgdm9pZCAqKTsKCgoKc3RydWN0IGRlbnRyeSAq ZGVidWdmc19sb29rdXAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGRlbnRyeSAqcGFyZW50KTsK CnN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX2ZpbGUoY29uc3QgY2hhciAqbmFtZSwgdW1v ZGVfdCBtb2RlLAogICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LCB2b2lkICpkYXRhLAogICAg ICAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZm9wcyk7CnN0cnVjdCBkZW50cnkgKmRl YnVnZnNfY3JlYXRlX2ZpbGVfdW5zYWZlKGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwK ICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgdm9pZCAqZGF0YSwKICAgICAgIGNvbnN0IHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMpOwoKc3RydWN0IGRlbnRyeSAqZGVidWdmc19jcmVh dGVfZmlsZV9zaXplKGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKICAgICBzdHJ1Y3Qg ZGVudHJ5ICpwYXJlbnQsIHZvaWQgKmRhdGEsCiAgICAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0 aW9ucyAqZm9wcywKICAgICBsb2ZmX3QgZmlsZV9zaXplKTsKCnN0cnVjdCBkZW50cnkgKmRlYnVn ZnNfY3JlYXRlX2Rpcihjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQpOwoK c3RydWN0IGRlbnRyeSAqZGVidWdmc19jcmVhdGVfc3ltbGluayhjb25zdCBjaGFyICpuYW1lLCBz dHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAgICAgICAgICBjb25zdCBjaGFyICpkZXN0KTsKCnN0cnVj dCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX2F1dG9tb3VudChjb25zdCBjaGFyICpuYW1lLAogICAg IHN0cnVjdCBkZW50cnkgKnBhcmVudCwKICAgICBkZWJ1Z2ZzX2F1dG9tb3VudF90IGYsCiAgICAg dm9pZCAqZGF0YSk7Cgp2b2lkIGRlYnVnZnNfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7 CgoKY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZGVidWdmc19yZWFsX2ZvcHMoY29uc3Qg c3RydWN0IGZpbGUgKmZpbHApOwoKaW50IGRlYnVnZnNfZmlsZV9nZXQoc3RydWN0IGRlbnRyeSAq ZGVudHJ5KTsKdm9pZCBkZWJ1Z2ZzX2ZpbGVfcHV0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7Cgpz c2l6ZV90IGRlYnVnZnNfYXR0cl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyICpidWYsCiAg IHNpemVfdCBsZW4sIGxvZmZfdCAqcHBvcyk7CnNzaXplX3QgZGVidWdmc19hdHRyX3dyaXRlKHN0 cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpidWYsCiAgIHNpemVfdCBsZW4sIGxvZmZfdCAq cHBvcyk7CgpzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3JlbmFtZShzdHJ1Y3QgZGVudHJ5ICpvbGRf ZGlyLCBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LAogICAgICAgICAgICAgICAgc3RydWN0IGRl bnRyeSAqbmV3X2RpciwgY29uc3QgY2hhciAqbmV3X25hbWUpOwoKdm9pZCBkZWJ1Z2ZzX2NyZWF0 ZV91OChjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsIHN0cnVjdCBkZW50cnkgKnBhcmVu dCwKICAgICAgICAgdTggKnZhbHVlKTsKdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV91MTYoY29uc3QgY2hh ciAqbmFtZSwgdW1vZGVfdCBtb2RlLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAgIHUxNiAqdmFs dWUpOwpzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2NyZWF0ZV91MzIoY29uc3QgY2hhciAqbmFtZSwg dW1vZGVfdCBtb2RlLAogICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHUzMiAqdmFsdWUpOwp2 b2lkIGRlYnVnZnNfY3JlYXRlX3U2NChjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsIHN0 cnVjdCBkZW50cnkgKnBhcmVudCwKICAgdTY0ICp2YWx1ZSk7CnN0cnVjdCBkZW50cnkgKmRlYnVn ZnNfY3JlYXRlX3Vsb25nKGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKICAgICAgICBz dHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHVuc2lnbmVkIGxvbmcgKnZhbHVlKTsKdm9pZCBkZWJ1Z2Zz X2NyZWF0ZV94OChjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsIHN0cnVjdCBkZW50cnkg KnBhcmVudCwKICAgICAgICAgdTggKnZhbHVlKTsKdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV94MTYoY29u c3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAgIHUx NiAqdmFsdWUpOwp2b2lkIGRlYnVnZnNfY3JlYXRlX3gzMihjb25zdCBjaGFyICpuYW1lLCB1bW9k ZV90IG1vZGUsIHN0cnVjdCBkZW50cnkgKnBhcmVudCwKICAgdTMyICp2YWx1ZSk7CnZvaWQgZGVi dWdmc19jcmVhdGVfeDY0KGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwgc3RydWN0IGRl bnRyeSAqcGFyZW50LAogICB1NjQgKnZhbHVlKTsKdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV9zaXplX3Qo Y29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAogICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJl bnQsIHNpemVfdCAqdmFsdWUpOwp2b2lkIGRlYnVnZnNfY3JlYXRlX2F0b21pY190KGNvbnN0IGNo YXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIGF0 b21pY190ICp2YWx1ZSk7CnN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX2Jvb2woY29uc3Qg Y2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAogICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIGJv b2wgKnZhbHVlKTsKCnN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX2Jsb2IoY29uc3QgY2hh ciAqbmFtZSwgdW1vZGVfdCBtb2RlLAogICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAgICAg IHN0cnVjdCBkZWJ1Z2ZzX2Jsb2Jfd3JhcHBlciAqYmxvYik7Cgp2b2lkIGRlYnVnZnNfY3JlYXRl X3JlZ3NldDMyKGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKICAgICAgICBzdHJ1Y3Qg ZGVudHJ5ICpwYXJlbnQsCiAgICAgICAgc3RydWN0IGRlYnVnZnNfcmVnc2V0MzIgKnJlZ3NldCk7 Cgp2b2lkIGRlYnVnZnNfcHJpbnRfcmVnczMyKHN0cnVjdCBzZXFfZmlsZSAqcywgY29uc3Qgc3Ry dWN0IGRlYnVnZnNfcmVnMzIgKnJlZ3MsCiAgICAgaW50IG5yZWdzLCB2b2lkICpiYXNlLCBjaGFy ICpwcmVmaXgpOwoKdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV91MzJfYXJyYXkoY29uc3QgY2hhciAqbmFt ZSwgdW1vZGVfdCBtb2RlLAogICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHUzMiAqYXJy YXksIHUzMiBlbGVtZW50cyk7CgpzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3Nl cWZpbGUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgIHN0cnVj dCBkZW50cnkgKnBhcmVudCwKICAgICAgICBpbnQgKCpyZWFkX2ZuKShzdHJ1Y3Qgc2VxX2ZpbGUg KnMsCiAgICAgICAgIHZvaWQgKmRhdGEpKTsKCmJvb2wgZGVidWdmc19pbml0aWFsaXplZCh2b2lk KTsKCnNzaXplX3QgZGVidWdmc19yZWFkX2ZpbGVfYm9vbChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hh ciAqdXNlcl9idWYsCiAgICAgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcyk7Cgpzc2l6 ZV90IGRlYnVnZnNfd3JpdGVfZmlsZV9ib29sKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFy ICp1c2VyX2J1ZiwKICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKTsKIyAzNjUgIi4vaW5j bHVkZS9saW51eC9kZWJ1Z2ZzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZGVidWdmc19jcmVhdGVfeHVsKGNvbnN0IGNoYXIg Km5hbWUsIHVtb2RlX3QgbW9kZSwKICAgICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwKICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgKnZhbHVlKQp7CiBpZiAoc2l6ZW9mKCp2YWx1ZSkgPT0gc2l6 ZW9mKHUzMikpCiAgZGVidWdmc19jcmVhdGVfeDMyKG5hbWUsIG1vZGUsIHBhcmVudCwgKHUzMiAq KXZhbHVlKTsKIGVsc2UKICBkZWJ1Z2ZzX2NyZWF0ZV94NjQobmFtZSwgbW9kZSwgcGFyZW50LCAo dTY0ICopdmFsdWUpOwp9CiMgMzQgIi4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiIDIKCiMgMSAi Li9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIiAxCiMgNDIgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0u aCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2lvY3RsLmgiIDEK IyA0MyAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIiAyCnR5cGVkZWYgdW5zaWduZWQgaW50IGRy bV9oYW5kbGVfdDsKIyA4NCAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgp0eXBlZGVmIHVuc2ln bmVkIGludCBkcm1fY29udGV4dF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBkcm1fZHJhd2FibGVf dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgZHJtX21hZ2ljX3Q7CiMgOTcgIi4vaW5jbHVkZS91YXBp L2RybS9kcm0uaCIKc3RydWN0IGRybV9jbGlwX3JlY3QgewogdW5zaWduZWQgc2hvcnQgeDE7CiB1 bnNpZ25lZCBzaG9ydCB5MTsKIHVuc2lnbmVkIHNob3J0IHgyOwogdW5zaWduZWQgc2hvcnQgeTI7 Cn07CgoKCgpzdHJ1Y3QgZHJtX2RyYXdhYmxlX2luZm8gewogdW5zaWduZWQgaW50IG51bV9yZWN0 czsKIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpyZWN0czsKfTsKCgoKCnN0cnVjdCBkcm1fdGV4X3Jl Z2lvbiB7CiB1bnNpZ25lZCBjaGFyIG5leHQ7CiB1bnNpZ25lZCBjaGFyIHByZXY7CiB1bnNpZ25l ZCBjaGFyIGluX3VzZTsKIHVuc2lnbmVkIGNoYXIgcGFkZGluZzsKIHVuc2lnbmVkIGludCBhZ2U7 Cn07CiMgMTMwICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCnN0cnVjdCBkcm1faHdfbG9jayB7 CiBfX3ZvbGF0aWxlX18gdW5zaWduZWQgaW50IGxvY2s7CiBjaGFyIHBhZGRpbmdbNjBdOwp9OwoK CgoKCgpzdHJ1Y3QgZHJtX3ZlcnNpb24gewogaW50IHZlcnNpb25fbWFqb3I7CiBpbnQgdmVyc2lv bl9taW5vcjsKIGludCB2ZXJzaW9uX3BhdGNobGV2ZWw7CiBfX2tlcm5lbF9zaXplX3QgbmFtZV9s ZW47CiBjaGFyICpuYW1lOwogX19rZXJuZWxfc2l6ZV90IGRhdGVfbGVuOwogY2hhciAqZGF0ZTsK IF9fa2VybmVsX3NpemVfdCBkZXNjX2xlbjsKIGNoYXIgKmRlc2M7Cn07CgoKCgoKCnN0cnVjdCBk cm1fdW5pcXVlIHsKIF9fa2VybmVsX3NpemVfdCB1bmlxdWVfbGVuOwogY2hhciAqdW5pcXVlOwp9 OwoKc3RydWN0IGRybV9saXN0IHsKIGludCBjb3VudDsKIHN0cnVjdCBkcm1fdmVyc2lvbiAqdmVy c2lvbjsKfTsKCnN0cnVjdCBkcm1fYmxvY2sgewogaW50IHVudXNlZDsKfTsKCgoKCgoKc3RydWN0 IGRybV9jb250cm9sIHsKIGVudW0gewogIERSTV9BRERfQ09NTUFORCwKICBEUk1fUk1fQ09NTUFO RCwKICBEUk1fSU5TVF9IQU5ETEVSLAogIERSTV9VTklOU1RfSEFORExFUgogfSBmdW5jOwogaW50 IGlycTsKfTsKCgoKCmVudW0gZHJtX21hcF90eXBlIHsKIF9EUk1fRlJBTUVfQlVGRkVSID0gMCwK IF9EUk1fUkVHSVNURVJTID0gMSwKIF9EUk1fU0hNID0gMiwKIF9EUk1fQUdQID0gMywKIF9EUk1f U0NBVFRFUl9HQVRIRVIgPSA0LAogX0RSTV9DT05TSVNURU5UID0gNQp9OwoKCgoKZW51bSBkcm1f bWFwX2ZsYWdzIHsKIF9EUk1fUkVTVFJJQ1RFRCA9IDB4MDEsCiBfRFJNX1JFQURfT05MWSA9IDB4 MDIsCiBfRFJNX0xPQ0tFRCA9IDB4MDQsCiBfRFJNX0tFUk5FTCA9IDB4MDgsCiBfRFJNX1dSSVRF X0NPTUJJTklORyA9IDB4MTAsCiBfRFJNX0NPTlRBSU5TX0xPQ0sgPSAweDIwLAogX0RSTV9SRU1P VkFCTEUgPSAweDQwLAogX0RSTV9EUklWRVIgPSAweDgwCn07CgpzdHJ1Y3QgZHJtX2N0eF9wcml2 X21hcCB7CiB1bnNpZ25lZCBpbnQgY3R4X2lkOwogdm9pZCAqaGFuZGxlOwp9OwoKCgoKCgoKc3Ry dWN0IGRybV9tYXAgewogdW5zaWduZWQgbG9uZyBvZmZzZXQ7CiB1bnNpZ25lZCBsb25nIHNpemU7 CiBlbnVtIGRybV9tYXBfdHlwZSB0eXBlOwogZW51bSBkcm1fbWFwX2ZsYWdzIGZsYWdzOwogdm9p ZCAqaGFuZGxlOwoKIGludCBtdHJyOwoKfTsKCgoKCnN0cnVjdCBkcm1fY2xpZW50IHsKIGludCBp ZHg7CiBpbnQgYXV0aDsKIHVuc2lnbmVkIGxvbmcgcGlkOwogdW5zaWduZWQgbG9uZyB1aWQ7CiB1 bnNpZ25lZCBsb25nIG1hZ2ljOwogdW5zaWduZWQgbG9uZyBpb2NzOwp9OwoKZW51bSBkcm1fc3Rh dF90eXBlIHsKIF9EUk1fU1RBVF9MT0NLLAogX0RSTV9TVEFUX09QRU5TLAogX0RSTV9TVEFUX0NM T1NFUywKIF9EUk1fU1RBVF9JT0NUTFMsCiBfRFJNX1NUQVRfTE9DS1MsCiBfRFJNX1NUQVRfVU5M T0NLUywKIF9EUk1fU1RBVF9WQUxVRSwKIF9EUk1fU1RBVF9CWVRFLAogX0RSTV9TVEFUX0NPVU5U LAoKIF9EUk1fU1RBVF9JUlEsCiBfRFJNX1NUQVRfUFJJTUFSWSwKIF9EUk1fU1RBVF9TRUNPTkRB UlksCiBfRFJNX1NUQVRfRE1BLAogX0RSTV9TVEFUX1NQRUNJQUwsCiBfRFJNX1NUQVRfTUlTU0VE Cgp9OwoKCgoKc3RydWN0IGRybV9zdGF0cyB7CiB1bnNpZ25lZCBsb25nIGNvdW50Owogc3RydWN0 IHsKICB1bnNpZ25lZCBsb25nIHZhbHVlOwogIGVudW0gZHJtX3N0YXRfdHlwZSB0eXBlOwogfSBk YXRhWzE1XTsKfTsKCgoKCmVudW0gZHJtX2xvY2tfZmxhZ3MgewogX0RSTV9MT0NLX1JFQURZID0g MHgwMSwKIF9EUk1fTE9DS19RVUlFU0NFTlQgPSAweDAyLAogX0RSTV9MT0NLX0ZMVVNIID0gMHgw NCwKIF9EUk1fTE9DS19GTFVTSF9BTEwgPSAweDA4LAoKCgogX0RSTV9IQUxUX0FMTF9RVUVVRVMg PSAweDEwLAogX0RSTV9IQUxUX0NVUl9RVUVVRVMgPSAweDIwCn07CgoKCgoKCnN0cnVjdCBkcm1f bG9jayB7CiBpbnQgY29udGV4dDsKIGVudW0gZHJtX2xvY2tfZmxhZ3MgZmxhZ3M7Cn07CiMgMzEw ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCmVudW0gZHJtX2RtYV9mbGFncyB7CgogX0RSTV9E TUFfQkxPQ0sgPSAweDAxLAojIDMyMiAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgogX0RSTV9E TUFfV0hJTEVfTE9DS0VEID0gMHgwMiwKIF9EUk1fRE1BX1BSSU9SSVRZID0gMHgwNCwKCgogX0RS TV9ETUFfV0FJVCA9IDB4MTAsCiBfRFJNX0RNQV9TTUFMTEVSX09LID0gMHgyMCwKIF9EUk1fRE1B X0xBUkdFUl9PSyA9IDB4NDAKfTsKCgoKCgoKc3RydWN0IGRybV9idWZfZGVzYyB7CiBpbnQgY291 bnQ7CiBpbnQgc2l6ZTsKIGludCBsb3dfbWFyazsKIGludCBoaWdoX21hcms7CiBlbnVtIHsKICBf RFJNX1BBR0VfQUxJR04gPSAweDAxLAogIF9EUk1fQUdQX0JVRkZFUiA9IDB4MDIsCiAgX0RSTV9T R19CVUZGRVIgPSAweDA0LAogIF9EUk1fRkJfQlVGRkVSID0gMHgwOCwKICBfRFJNX1BDSV9CVUZG RVJfUk8gPSAweDEwCiB9IGZsYWdzOwogdW5zaWduZWQgbG9uZyBhZ3Bfc3RhcnQ7CgoKCn07CgoK CgpzdHJ1Y3QgZHJtX2J1Zl9pbmZvIHsKIGludCBjb3VudDsKIHN0cnVjdCBkcm1fYnVmX2Rlc2Mg Kmxpc3Q7Cn07CgoKCgpzdHJ1Y3QgZHJtX2J1Zl9mcmVlIHsKIGludCBjb3VudDsKIGludCAqbGlz dDsKfTsKCgoKCgoKc3RydWN0IGRybV9idWZfcHViIHsKIGludCBpZHg7CiBpbnQgdG90YWw7CiBp bnQgdXNlZDsKIHZvaWQgKmFkZHJlc3M7Cn07CgoKCgpzdHJ1Y3QgZHJtX2J1Zl9tYXAgewogaW50 IGNvdW50OwoKCgogdm9pZCAqdmlydHVhbDsKCiBzdHJ1Y3QgZHJtX2J1Zl9wdWIgKmxpc3Q7Cn07 CiMgNDAyICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCnN0cnVjdCBkcm1fZG1hIHsKIGludCBj b250ZXh0OwogaW50IHNlbmRfY291bnQ7CiBpbnQgKnNlbmRfaW5kaWNlczsKIGludCAqc2VuZF9z aXplczsKIGVudW0gZHJtX2RtYV9mbGFncyBmbGFnczsKIGludCByZXF1ZXN0X2NvdW50OwogaW50 IHJlcXVlc3Rfc2l6ZTsKIGludCAqcmVxdWVzdF9pbmRpY2VzOwogaW50ICpyZXF1ZXN0X3NpemVz OwogaW50IGdyYW50ZWRfY291bnQ7Cn07CgplbnVtIGRybV9jdHhfZmxhZ3MgewogX0RSTV9DT05U RVhUX1BSRVNFUlZFRCA9IDB4MDEsCiBfRFJNX0NPTlRFWFRfMkRPTkxZID0gMHgwMgp9OwoKCgoK CgpzdHJ1Y3QgZHJtX2N0eCB7CiBkcm1fY29udGV4dF90IGhhbmRsZTsKIGVudW0gZHJtX2N0eF9m bGFncyBmbGFnczsKfTsKCgoKCnN0cnVjdCBkcm1fY3R4X3JlcyB7CiBpbnQgY291bnQ7CiBzdHJ1 Y3QgZHJtX2N0eCAqY29udGV4dHM7Cn07CgoKCgpzdHJ1Y3QgZHJtX2RyYXcgewogZHJtX2RyYXdh YmxlX3QgaGFuZGxlOwp9OwoKCgoKdHlwZWRlZiBlbnVtIHsKIERSTV9EUkFXQUJMRV9DTElQUkVD VFMKfSBkcm1fZHJhd2FibGVfaW5mb190eXBlX3Q7CgpzdHJ1Y3QgZHJtX3VwZGF0ZV9kcmF3IHsK IGRybV9kcmF3YWJsZV90IGhhbmRsZTsKIHVuc2lnbmVkIGludCB0eXBlOwogdW5zaWduZWQgaW50 IG51bTsKIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhOwp9OwoKCgoKc3RydWN0IGRybV9hdXRoIHsK IGRybV9tYWdpY190IG1hZ2ljOwp9OwoKCgoKCgpzdHJ1Y3QgZHJtX2lycV9idXNpZCB7CiBpbnQg aXJxOwogaW50IGJ1c251bTsKIGludCBkZXZudW07CiBpbnQgZnVuY251bTsKfTsKCmVudW0gZHJt X3ZibGFua19zZXFfdHlwZSB7CiBfRFJNX1ZCTEFOS19BQlNPTFVURSA9IDB4MCwKIF9EUk1fVkJM QU5LX1JFTEFUSVZFID0gMHgxLAoKIF9EUk1fVkJMQU5LX0hJR0hfQ1JUQ19NQVNLID0gMHgwMDAw MDAzZSwKIF9EUk1fVkJMQU5LX0VWRU5UID0gMHg0MDAwMDAwLAogX0RSTV9WQkxBTktfRkxJUCA9 IDB4ODAwMDAwMCwKIF9EUk1fVkJMQU5LX05FWFRPTk1JU1MgPSAweDEwMDAwMDAwLAogX0RSTV9W QkxBTktfU0VDT05EQVJZID0gMHgyMDAwMDAwMCwKIF9EUk1fVkJMQU5LX1NJR05BTCA9IDB4NDAw MDAwMDAKfTsKCgoKCgoKc3RydWN0IGRybV93YWl0X3ZibGFua19yZXF1ZXN0IHsKIGVudW0gZHJt X3ZibGFua19zZXFfdHlwZSB0eXBlOwogdW5zaWduZWQgaW50IHNlcXVlbmNlOwogdW5zaWduZWQg bG9uZyBzaWduYWw7Cn07CgpzdHJ1Y3QgZHJtX3dhaXRfdmJsYW5rX3JlcGx5IHsKIGVudW0gZHJt X3ZibGFua19zZXFfdHlwZSB0eXBlOwogdW5zaWduZWQgaW50IHNlcXVlbmNlOwogbG9uZyB0dmFs X3NlYzsKIGxvbmcgdHZhbF91c2VjOwp9OwoKCgoKCgp1bmlvbiBkcm1fd2FpdF92Ymxhbmsgewog c3RydWN0IGRybV93YWl0X3ZibGFua19yZXF1ZXN0IHJlcXVlc3Q7CiBzdHJ1Y3QgZHJtX3dhaXRf dmJsYW5rX3JlcGx5IHJlcGx5Owp9OwojIDUyNiAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgpz dHJ1Y3QgZHJtX21vZGVzZXRfY3RsIHsKIF9fdTMyIGNydGM7CiBfX3UzMiBjbWQ7Cn07CgoKCgoK CnN0cnVjdCBkcm1fYWdwX21vZGUgewogdW5zaWduZWQgbG9uZyBtb2RlOwp9OwoKCgoKCgpzdHJ1 Y3QgZHJtX2FncF9idWZmZXIgewogdW5zaWduZWQgbG9uZyBzaXplOwogdW5zaWduZWQgbG9uZyBo YW5kbGU7CiB1bnNpZ25lZCBsb25nIHR5cGU7CiB1bnNpZ25lZCBsb25nIHBoeXNpY2FsOwp9OwoK CgoKCgpzdHJ1Y3QgZHJtX2FncF9iaW5kaW5nIHsKIHVuc2lnbmVkIGxvbmcgaGFuZGxlOwogdW5z aWduZWQgbG9uZyBvZmZzZXQ7Cn07CiMgNTY5ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCnN0 cnVjdCBkcm1fYWdwX2luZm8gewogaW50IGFncF92ZXJzaW9uX21ham9yOwogaW50IGFncF92ZXJz aW9uX21pbm9yOwogdW5zaWduZWQgbG9uZyBtb2RlOwogdW5zaWduZWQgbG9uZyBhcGVydHVyZV9i YXNlOwogdW5zaWduZWQgbG9uZyBhcGVydHVyZV9zaXplOwogdW5zaWduZWQgbG9uZyBtZW1vcnlf YWxsb3dlZDsKIHVuc2lnbmVkIGxvbmcgbWVtb3J5X3VzZWQ7CgoKIHVuc2lnbmVkIHNob3J0IGlk X3ZlbmRvcjsKIHVuc2lnbmVkIHNob3J0IGlkX2RldmljZTsKfTsKCgoKCnN0cnVjdCBkcm1fc2Nh dHRlcl9nYXRoZXIgewogdW5zaWduZWQgbG9uZyBzaXplOwogdW5zaWduZWQgbG9uZyBoYW5kbGU7 Cn07CgoKCgpzdHJ1Y3QgZHJtX3NldF92ZXJzaW9uIHsKIGludCBkcm1fZGlfbWFqb3I7CiBpbnQg ZHJtX2RpX21pbm9yOwogaW50IGRybV9kZF9tYWpvcjsKIGludCBkcm1fZGRfbWlub3I7Cn07CgoK c3RydWN0IGRybV9nZW1fY2xvc2UgewoKIF9fdTMyIGhhbmRsZTsKIF9fdTMyIHBhZDsKfTsKCgpz dHJ1Y3QgZHJtX2dlbV9mbGluayB7CgogX191MzIgaGFuZGxlOwoKCiBfX3UzMiBuYW1lOwp9OwoK CnN0cnVjdCBkcm1fZ2VtX29wZW4gewoKIF9fdTMyIG5hbWU7CgoKIF9fdTMyIGhhbmRsZTsKCgog X191NjQgc2l6ZTsKfTsKIyA2NTYgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIKc3RydWN0IGRy bV9nZXRfY2FwIHsKIF9fdTY0IGNhcGFiaWxpdHk7CiBfX3U2NCB2YWx1ZTsKfTsKIyA3MDIgIi4v aW5jbHVkZS91YXBpL2RybS9kcm0uaCIKc3RydWN0IGRybV9zZXRfY2xpZW50X2NhcCB7CiBfX3U2 NCBjYXBhYmlsaXR5OwogX191NjQgdmFsdWU7Cn07CgoKCnN0cnVjdCBkcm1fcHJpbWVfaGFuZGxl IHsKIF9fdTMyIGhhbmRsZTsKCgogX191MzIgZmxhZ3M7CgoKIF9fczMyIGZkOwp9OwoKc3RydWN0 IGRybV9zeW5jb2JqX2NyZWF0ZSB7CiBfX3UzMiBoYW5kbGU7CgogX191MzIgZmxhZ3M7Cn07Cgpz dHJ1Y3QgZHJtX3N5bmNvYmpfZGVzdHJveSB7CiBfX3UzMiBoYW5kbGU7CiBfX3UzMiBwYWQ7Cn07 CgoKCnN0cnVjdCBkcm1fc3luY29ial9oYW5kbGUgewogX191MzIgaGFuZGxlOwogX191MzIgZmxh Z3M7CgogX19zMzIgZmQ7CiBfX3UzMiBwYWQ7Cn07CgpzdHJ1Y3QgZHJtX3N5bmNvYmpfdHJhbnNm ZXIgewogX191MzIgc3JjX2hhbmRsZTsKIF9fdTMyIGRzdF9oYW5kbGU7CiBfX3U2NCBzcmNfcG9p bnQ7CiBfX3U2NCBkc3RfcG9pbnQ7CiBfX3UzMiBmbGFnczsKIF9fdTMyIHBhZDsKfTsKCgoKCnN0 cnVjdCBkcm1fc3luY29ial93YWl0IHsKIF9fdTY0IGhhbmRsZXM7CgogX19zNjQgdGltZW91dF9u c2VjOwogX191MzIgY291bnRfaGFuZGxlczsKIF9fdTMyIGZsYWdzOwogX191MzIgZmlyc3Rfc2ln bmFsZWQ7CiBfX3UzMiBwYWQ7Cn07CgpzdHJ1Y3QgZHJtX3N5bmNvYmpfdGltZWxpbmVfd2FpdCB7 CiBfX3U2NCBoYW5kbGVzOwoKIF9fdTY0IHBvaW50czsKCiBfX3M2NCB0aW1lb3V0X25zZWM7CiBf X3UzMiBjb3VudF9oYW5kbGVzOwogX191MzIgZmxhZ3M7CiBfX3UzMiBmaXJzdF9zaWduYWxlZDsK IF9fdTMyIHBhZDsKfTsKCgpzdHJ1Y3QgZHJtX3N5bmNvYmpfYXJyYXkgewogX191NjQgaGFuZGxl czsKIF9fdTMyIGNvdW50X2hhbmRsZXM7CiBfX3UzMiBwYWQ7Cn07CgoKc3RydWN0IGRybV9zeW5j b2JqX3RpbWVsaW5lX2FycmF5IHsKIF9fdTY0IGhhbmRsZXM7CiBfX3U2NCBwb2ludHM7CiBfX3Uz MiBjb3VudF9oYW5kbGVzOwogX191MzIgZmxhZ3M7Cn07CgoKCnN0cnVjdCBkcm1fY3J0Y19nZXRf c2VxdWVuY2UgewogX191MzIgY3J0Y19pZDsKIF9fdTMyIGFjdGl2ZTsKIF9fdTY0IHNlcXVlbmNl OwogX19zNjQgc2VxdWVuY2VfbnM7Cn07CiMgODA1ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgi CnN0cnVjdCBkcm1fY3J0Y19xdWV1ZV9zZXF1ZW5jZSB7CiBfX3UzMiBjcnRjX2lkOwogX191MzIg ZmxhZ3M7CiBfX3U2NCBzZXF1ZW5jZTsKIF9fdTY0IHVzZXJfZGF0YTsKfTsKCgoKCgojIDEgIi4v aW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIiAxCiMgMzAgIi4vaW5jbHVkZS91YXBpL2RybS9k cm1fbW9kZS5oIgojIDEgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIgMQojIDMxICIuL2luY2x1 ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIgMgojIDIyMSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9t b2RlLmgiCnN0cnVjdCBkcm1fbW9kZV9tb2RlaW5mbyB7CiBfX3UzMiBjbG9jazsKIF9fdTE2IGhk aXNwbGF5OwogX191MTYgaHN5bmNfc3RhcnQ7CiBfX3UxNiBoc3luY19lbmQ7CiBfX3UxNiBodG90 YWw7CiBfX3UxNiBoc2tldzsKIF9fdTE2IHZkaXNwbGF5OwogX191MTYgdnN5bmNfc3RhcnQ7CiBf X3UxNiB2c3luY19lbmQ7CiBfX3UxNiB2dG90YWw7CiBfX3UxNiB2c2NhbjsKCiBfX3UzMiB2cmVm cmVzaDsKCiBfX3UzMiBmbGFnczsKIF9fdTMyIHR5cGU7CiBjaGFyIG5hbWVbMzJdOwp9OwoKc3Ry dWN0IGRybV9tb2RlX2NhcmRfcmVzIHsKIF9fdTY0IGZiX2lkX3B0cjsKIF9fdTY0IGNydGNfaWRf cHRyOwogX191NjQgY29ubmVjdG9yX2lkX3B0cjsKIF9fdTY0IGVuY29kZXJfaWRfcHRyOwogX191 MzIgY291bnRfZmJzOwogX191MzIgY291bnRfY3J0Y3M7CiBfX3UzMiBjb3VudF9jb25uZWN0b3Jz OwogX191MzIgY291bnRfZW5jb2RlcnM7CiBfX3UzMiBtaW5fd2lkdGg7CiBfX3UzMiBtYXhfd2lk dGg7CiBfX3UzMiBtaW5faGVpZ2h0OwogX191MzIgbWF4X2hlaWdodDsKfTsKCnN0cnVjdCBkcm1f bW9kZV9jcnRjIHsKIF9fdTY0IHNldF9jb25uZWN0b3JzX3B0cjsKIF9fdTMyIGNvdW50X2Nvbm5l Y3RvcnM7CgogX191MzIgY3J0Y19pZDsKIF9fdTMyIGZiX2lkOwoKIF9fdTMyIHg7CiBfX3UzMiB5 OwoKIF9fdTMyIGdhbW1hX3NpemU7CiBfX3UzMiBtb2RlX3ZhbGlkOwogc3RydWN0IGRybV9tb2Rl X21vZGVpbmZvIG1vZGU7Cn07CgoKCgoKc3RydWN0IGRybV9tb2RlX3NldF9wbGFuZSB7CiBfX3Uz MiBwbGFuZV9pZDsKIF9fdTMyIGNydGNfaWQ7CiBfX3UzMiBmYl9pZDsKIF9fdTMyIGZsYWdzOwoK CiBfX3MzMiBjcnRjX3g7CiBfX3MzMiBjcnRjX3k7CiBfX3UzMiBjcnRjX3c7CiBfX3UzMiBjcnRj X2g7CgoKIF9fdTMyIHNyY194OwogX191MzIgc3JjX3k7CiBfX3UzMiBzcmNfaDsKIF9fdTMyIHNy Y193Owp9OwoKc3RydWN0IGRybV9tb2RlX2dldF9wbGFuZSB7CiBfX3UzMiBwbGFuZV9pZDsKCiBf X3UzMiBjcnRjX2lkOwogX191MzIgZmJfaWQ7CgogX191MzIgcG9zc2libGVfY3J0Y3M7CiBfX3Uz MiBnYW1tYV9zaXplOwoKIF9fdTMyIGNvdW50X2Zvcm1hdF90eXBlczsKIF9fdTY0IGZvcm1hdF90 eXBlX3B0cjsKfTsKCnN0cnVjdCBkcm1fbW9kZV9nZXRfcGxhbmVfcmVzIHsKIF9fdTY0IHBsYW5l X2lkX3B0cjsKIF9fdTMyIGNvdW50X3BsYW5lczsKfTsKIyAzMjIgIi4vaW5jbHVkZS91YXBpL2Ry bS9kcm1fbW9kZS5oIgpzdHJ1Y3QgZHJtX21vZGVfZ2V0X2VuY29kZXIgewogX191MzIgZW5jb2Rl cl9pZDsKIF9fdTMyIGVuY29kZXJfdHlwZTsKCiBfX3UzMiBjcnRjX2lkOwoKIF9fdTMyIHBvc3Np YmxlX2NydGNzOwogX191MzIgcG9zc2libGVfY2xvbmVzOwp9OwoKCgplbnVtIGRybV9tb2RlX3N1 YmNvbm5lY3RvciB7CiBEUk1fTU9ERV9TVUJDT05ORUNUT1JfQXV0b21hdGljID0gMCwKIERSTV9N T0RFX1NVQkNPTk5FQ1RPUl9Vbmtub3duID0gMCwKIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9EVklE ID0gMywKIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9EVklBID0gNCwKIERSTV9NT0RFX1NVQkNPTk5F Q1RPUl9Db21wb3NpdGUgPSA1LAogRFJNX01PREVfU1VCQ09OTkVDVE9SX1NWSURFTyA9IDYsCiBE Uk1fTU9ERV9TVUJDT05ORUNUT1JfQ29tcG9uZW50ID0gOCwKIERSTV9NT0RFX1NVQkNPTk5FQ1RP Ul9TQ0FSVCA9IDksCn07CiMgMzY2ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIKc3Ry dWN0IGRybV9tb2RlX2dldF9jb25uZWN0b3IgewoKIF9fdTY0IGVuY29kZXJzX3B0cjsKIF9fdTY0 IG1vZGVzX3B0cjsKIF9fdTY0IHByb3BzX3B0cjsKIF9fdTY0IHByb3BfdmFsdWVzX3B0cjsKCiBf X3UzMiBjb3VudF9tb2RlczsKIF9fdTMyIGNvdW50X3Byb3BzOwogX191MzIgY291bnRfZW5jb2Rl cnM7CgogX191MzIgZW5jb2Rlcl9pZDsKIF9fdTMyIGNvbm5lY3Rvcl9pZDsKIF9fdTMyIGNvbm5l Y3Rvcl90eXBlOwogX191MzIgY29ubmVjdG9yX3R5cGVfaWQ7CgogX191MzIgY29ubmVjdGlvbjsK IF9fdTMyIG1tX3dpZHRoOwogX191MzIgbW1faGVpZ2h0OwogX191MzIgc3VicGl4ZWw7CgogX191 MzIgcGFkOwp9OwojIDQxOSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCnN0cnVjdCBk cm1fbW9kZV9wcm9wZXJ0eV9lbnVtIHsKIF9fdTY0IHZhbHVlOwogY2hhciBuYW1lWzMyXTsKfTsK CnN0cnVjdCBkcm1fbW9kZV9nZXRfcHJvcGVydHkgewogX191NjQgdmFsdWVzX3B0cjsKIF9fdTY0 IGVudW1fYmxvYl9wdHI7CgogX191MzIgcHJvcF9pZDsKIF9fdTMyIGZsYWdzOwogY2hhciBuYW1l WzMyXTsKCiBfX3UzMiBjb3VudF92YWx1ZXM7CgoKIF9fdTMyIGNvdW50X2VudW1fYmxvYnM7Cn07 CgpzdHJ1Y3QgZHJtX21vZGVfY29ubmVjdG9yX3NldF9wcm9wZXJ0eSB7CiBfX3U2NCB2YWx1ZTsK IF9fdTMyIHByb3BfaWQ7CiBfX3UzMiBjb25uZWN0b3JfaWQ7Cn07CiMgNDU0ICIuL2luY2x1ZGUv dWFwaS9kcm0vZHJtX21vZGUuaCIKc3RydWN0IGRybV9tb2RlX29ial9nZXRfcHJvcGVydGllcyB7 CiBfX3U2NCBwcm9wc19wdHI7CiBfX3U2NCBwcm9wX3ZhbHVlc19wdHI7CiBfX3UzMiBjb3VudF9w cm9wczsKIF9fdTMyIG9ial9pZDsKIF9fdTMyIG9ial90eXBlOwp9OwoKc3RydWN0IGRybV9tb2Rl X29ial9zZXRfcHJvcGVydHkgewogX191NjQgdmFsdWU7CiBfX3UzMiBwcm9wX2lkOwogX191MzIg b2JqX2lkOwogX191MzIgb2JqX3R5cGU7Cn07CgpzdHJ1Y3QgZHJtX21vZGVfZ2V0X2Jsb2Igewog X191MzIgYmxvYl9pZDsKIF9fdTMyIGxlbmd0aDsKIF9fdTY0IGRhdGE7Cn07CgpzdHJ1Y3QgZHJt X21vZGVfZmJfY21kIHsKIF9fdTMyIGZiX2lkOwogX191MzIgd2lkdGg7CiBfX3UzMiBoZWlnaHQ7 CiBfX3UzMiBwaXRjaDsKIF9fdTMyIGJwcDsKIF9fdTMyIGRlcHRoOwoKIF9fdTMyIGhhbmRsZTsK fTsKCgoKCnN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIHsKIF9fdTMyIGZiX2lkOwogX191MzIgd2lk dGg7CiBfX3UzMiBoZWlnaHQ7CiBfX3UzMiBwaXhlbF9mb3JtYXQ7CiBfX3UzMiBmbGFnczsKIyA1 MjAgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgogX191MzIgaGFuZGxlc1s0XTsKIF9f dTMyIHBpdGNoZXNbNF07CiBfX3UzMiBvZmZzZXRzWzRdOwogX191NjQgbW9kaWZpZXJbNF07Cn07 CiMgNTU5ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIKc3RydWN0IGRybV9tb2RlX2Zi X2RpcnR5X2NtZCB7CiBfX3UzMiBmYl9pZDsKIF9fdTMyIGZsYWdzOwogX191MzIgY29sb3I7CiBf X3UzMiBudW1fY2xpcHM7CiBfX3U2NCBjbGlwc19wdHI7Cn07CgpzdHJ1Y3QgZHJtX21vZGVfbW9k ZV9jbWQgewogX191MzIgY29ubmVjdG9yX2lkOwogc3RydWN0IGRybV9tb2RlX21vZGVpbmZvIG1v ZGU7Cn07CiMgNTkwICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIKc3RydWN0IGRybV9t b2RlX2N1cnNvciB7CiBfX3UzMiBmbGFnczsKIF9fdTMyIGNydGNfaWQ7CiBfX3MzMiB4OwogX19z MzIgeTsKIF9fdTMyIHdpZHRoOwogX191MzIgaGVpZ2h0OwoKIF9fdTMyIGhhbmRsZTsKfTsKCnN0 cnVjdCBkcm1fbW9kZV9jdXJzb3IyIHsKIF9fdTMyIGZsYWdzOwogX191MzIgY3J0Y19pZDsKIF9f czMyIHg7CiBfX3MzMiB5OwogX191MzIgd2lkdGg7CiBfX3UzMiBoZWlnaHQ7CgogX191MzIgaGFu ZGxlOwogX19zMzIgaG90X3g7CiBfX3MzMiBob3RfeTsKfTsKCnN0cnVjdCBkcm1fbW9kZV9jcnRj X2x1dCB7CiBfX3UzMiBjcnRjX2lkOwogX191MzIgZ2FtbWFfc2l6ZTsKCgogX191NjQgcmVkOwog X191NjQgZ3JlZW47CiBfX3U2NCBibHVlOwp9OwoKc3RydWN0IGRybV9jb2xvcl9jdG0gewoKCgoK IF9fdTY0IG1hdHJpeFs5XTsKfTsKCnN0cnVjdCBkcm1fY29sb3JfbHV0IHsKCgoKCiBfX3UxNiBy ZWQ7CiBfX3UxNiBncmVlbjsKIF9fdTE2IGJsdWU7CiBfX3UxNiByZXNlcnZlZDsKfTsKIyA2NTIg Ii4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgpzdHJ1Y3QgaGRyX21ldGFkYXRhX2luZm9m cmFtZSB7CgoKCgogX191OCBlb3RmOwoKCgogX191OCBtZXRhZGF0YV90eXBlOwojIDY3MCAiLi9p bmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCiBzdHJ1Y3QgewogIF9fdTE2IHgsIHk7CiAgfSBk aXNwbGF5X3ByaW1hcmllc1szXTsKIyA2ODEgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5o Igogc3RydWN0IHsKICBfX3UxNiB4LCB5OwogIH0gd2hpdGVfcG9pbnQ7CgoKCgoKIF9fdTE2IG1h eF9kaXNwbGF5X21hc3RlcmluZ19sdW1pbmFuY2U7CgoKCgoKCiBfX3UxNiBtaW5fZGlzcGxheV9t YXN0ZXJpbmdfbHVtaW5hbmNlOwoKCgoKCiBfX3UxNiBtYXhfY2xsOwoKCgoKCiBfX3UxNiBtYXhf ZmFsbDsKfTsKCgoKCgoKc3RydWN0IGhkcl9vdXRwdXRfbWV0YWRhdGEgewoKCgogX191MzIgbWV0 YWRhdGFfdHlwZTsKCgoKIHVuaW9uIHsKICBzdHJ1Y3QgaGRyX21ldGFkYXRhX2luZm9mcmFtZSBo ZG1pX21ldGFkYXRhX3R5cGUxOwogfTsKfTsKIyA3NjMgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1f bW9kZS5oIgpzdHJ1Y3QgZHJtX21vZGVfY3J0Y19wYWdlX2ZsaXAgewogX191MzIgY3J0Y19pZDsK IF9fdTMyIGZiX2lkOwogX191MzIgZmxhZ3M7CiBfX3UzMiByZXNlcnZlZDsKIF9fdTY0IHVzZXJf ZGF0YTsKfTsKIyA3OTEgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgpzdHJ1Y3QgZHJt X21vZGVfY3J0Y19wYWdlX2ZsaXBfdGFyZ2V0IHsKIF9fdTMyIGNydGNfaWQ7CiBfX3UzMiBmYl9p ZDsKIF9fdTMyIGZsYWdzOwogX191MzIgc2VxdWVuY2U7CiBfX3U2NCB1c2VyX2RhdGE7Cn07CgoK c3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iIHsKIF9fdTMyIGhlaWdodDsKIF9fdTMyIHdpZHRo OwogX191MzIgYnBwOwogX191MzIgZmxhZ3M7CgogX191MzIgaGFuZGxlOwogX191MzIgcGl0Y2g7 CiBfX3U2NCBzaXplOwp9OwoKCnN0cnVjdCBkcm1fbW9kZV9tYXBfZHVtYiB7CgogX191MzIgaGFu ZGxlOwogX191MzIgcGFkOwoKCgoKCiBfX3U2NCBvZmZzZXQ7Cn07CgpzdHJ1Y3QgZHJtX21vZGVf ZGVzdHJveV9kdW1iIHsKIF9fdTMyIGhhbmRsZTsKfTsKIyA4NDAgIi4vaW5jbHVkZS91YXBpL2Ry bS9kcm1fbW9kZS5oIgpzdHJ1Y3QgZHJtX21vZGVfYXRvbWljIHsKIF9fdTMyIGZsYWdzOwogX191 MzIgY291bnRfb2JqczsKIF9fdTY0IG9ianNfcHRyOwogX191NjQgY291bnRfcHJvcHNfcHRyOwog X191NjQgcHJvcHNfcHRyOwogX191NjQgcHJvcF92YWx1ZXNfcHRyOwogX191NjQgcmVzZXJ2ZWQ7 CiBfX3U2NCB1c2VyX2RhdGE7Cn07CgpzdHJ1Y3QgZHJtX2Zvcm1hdF9tb2RpZmllcl9ibG9iIHsK CgogX191MzIgdmVyc2lvbjsKCgogX191MzIgZmxhZ3M7CgoKIF9fdTMyIGNvdW50X2Zvcm1hdHM7 CgoKIF9fdTMyIGZvcm1hdHNfb2Zmc2V0OwoKCiBfX3UzMiBjb3VudF9tb2RpZmllcnM7CgoKIF9f dTMyIG1vZGlmaWVyc19vZmZzZXQ7CgoKCn07CgpzdHJ1Y3QgZHJtX2Zvcm1hdF9tb2RpZmllciB7 CiMgODkzICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIKIF9fdTY0IGZvcm1hdHM7CiBf X3UzMiBvZmZzZXQ7CiBfX3UzMiBwYWQ7CgoKIF9fdTY0IG1vZGlmaWVyOwp9OwojIDkwOSAiLi9p bmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCnN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfYmxvYiB7 CgogX191NjQgZGF0YTsKCiBfX3UzMiBsZW5ndGg7CgogX191MzIgYmxvYl9pZDsKfTsKCgoKCgoK c3RydWN0IGRybV9tb2RlX2Rlc3Ryb3lfYmxvYiB7CiBfX3UzMiBibG9iX2lkOwp9OwojIDkzNiAi Li9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCnN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfbGVh c2UgewoKIF9fdTY0IG9iamVjdF9pZHM7CgogX191MzIgb2JqZWN0X2NvdW50OwoKIF9fdTMyIGZs YWdzOwoKCiBfX3UzMiBsZXNzZWVfaWQ7CgogX191MzIgZmQ7Cn07CiMgOTU3ICIuL2luY2x1ZGUv dWFwaS9kcm0vZHJtX21vZGUuaCIKc3RydWN0IGRybV9tb2RlX2xpc3RfbGVzc2VlcyB7CgoKCgoK CgogX191MzIgY291bnRfbGVzc2VlczsKIF9fdTMyIHBhZDsKCgoKCiBfX3U2NCBsZXNzZWVzX3B0 cjsKfTsKIyA5ODEgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgpzdHJ1Y3QgZHJtX21v ZGVfZ2V0X2xlYXNlIHsKCgoKCgoKCiBfX3UzMiBjb3VudF9vYmplY3RzOwogX191MzIgcGFkOwoK CgoKIF9fdTY0IG9iamVjdHNfcHRyOwp9OwoKCgoKCgpzdHJ1Y3QgZHJtX21vZGVfcmV2b2tlX2xl YXNlIHsKCgogX191MzIgbGVzc2VlX2lkOwp9OwojIDEwMjEgIi4vaW5jbHVkZS91YXBpL2RybS9k cm1fbW9kZS5oIgpzdHJ1Y3QgZHJtX21vZGVfcmVjdCB7CiBfX3MzMiB4MTsKIF9fczMyIHkxOwog X19zMzIgeDI7CiBfX3MzMiB5MjsKfTsKIyA4MTcgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIg MgojIDk3NCAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgpzdHJ1Y3QgZHJtX2V2ZW50IHsKIF9f dTMyIHR5cGU7CiBfX3UzMiBsZW5ndGg7Cn07CgoKCgoKc3RydWN0IGRybV9ldmVudF92Ymxhbmsg ewogc3RydWN0IGRybV9ldmVudCBiYXNlOwogX191NjQgdXNlcl9kYXRhOwogX191MzIgdHZfc2Vj OwogX191MzIgdHZfdXNlYzsKIF9fdTMyIHNlcXVlbmNlOwogX191MzIgY3J0Y19pZDsKfTsKCgoK CnN0cnVjdCBkcm1fZXZlbnRfY3J0Y19zZXF1ZW5jZSB7CiBzdHJ1Y3QgZHJtX2V2ZW50IGJhc2U7 CiBfX3U2NCB1c2VyX2RhdGE7CiBfX3M2NCB0aW1lX25zOwogX191NjQgc2VxdWVuY2U7Cn07CiMg MzYgIi4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiIDIKCgpleHRlcm4gdW5zaWduZWQgaW50IF9f ZHJtX2RlYnVnOwojIDc1ICIuL2luY2x1ZGUvZHJtL2RybV9wcmludC5oIgpzdHJ1Y3QgZHJtX3By aW50ZXIgewoKIHZvaWQgKCpwcmludGZuKShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIHN0cnVjdCB2 YV9mb3JtYXQgKnZhZik7CiB2b2lkICgqcHV0cykoc3RydWN0IGRybV9wcmludGVyICpwLCBjb25z dCBjaGFyICpzdHIpOwogdm9pZCAqYXJnOwogY29uc3QgY2hhciAqcHJlZml4Owp9OwoKdm9pZCBf X2RybV9wcmludGZuX2NvcmVkdW1wKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgc3RydWN0IHZhX2Zv cm1hdCAqdmFmKTsKdm9pZCBfX2RybV9wdXRzX2NvcmVkdW1wKHN0cnVjdCBkcm1fcHJpbnRlciAq cCwgY29uc3QgY2hhciAqc3RyKTsKdm9pZCBfX2RybV9wcmludGZuX3NlcV9maWxlKHN0cnVjdCBk cm1fcHJpbnRlciAqcCwgc3RydWN0IHZhX2Zvcm1hdCAqdmFmKTsKdm9pZCBfX2RybV9wdXRzX3Nl cV9maWxlKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgY29uc3QgY2hhciAqc3RyKTsKdm9pZCBfX2Ry bV9wcmludGZuX2luZm8oc3RydWN0IGRybV9wcmludGVyICpwLCBzdHJ1Y3QgdmFfZm9ybWF0ICp2 YWYpOwp2b2lkIF9fZHJtX3ByaW50Zm5fZGVidWcoc3RydWN0IGRybV9wcmludGVyICpwLCBzdHJ1 Y3QgdmFfZm9ybWF0ICp2YWYpOwp2b2lkIF9fZHJtX3ByaW50Zm5fZXJyKHN0cnVjdCBkcm1fcHJp bnRlciAqcCwgc3RydWN0IHZhX2Zvcm1hdCAqdmFmKTsKCl9fYXR0cmlidXRlX18oKF9fZm9ybWF0 X18ocHJpbnRmLCAyLCAzKSkpCnZvaWQgZHJtX3ByaW50ZihzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAs IGNvbnN0IGNoYXIgKmYsIC4uLik7CnZvaWQgZHJtX3B1dHMoc3RydWN0IGRybV9wcmludGVyICpw LCBjb25zdCBjaGFyICpzdHIpOwp2b2lkIGRybV9wcmludF9yZWdzZXQzMihzdHJ1Y3QgZHJtX3By aW50ZXIgKnAsIHN0cnVjdCBkZWJ1Z2ZzX3JlZ3NldDMyICpyZWdzZXQpOwp2b2lkIGRybV9wcmlu dF9iaXRzKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgdW5zaWduZWQgbG9uZyB2YWx1ZSwKICAgICAg Y29uc3QgY2hhciAqIGNvbnN0IGJpdHNbXSwgdW5zaWduZWQgaW50IG5iaXRzKTsKCl9fYXR0cmli dXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAwKSkpCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKZHJtX3ZwcmludGYo c3RydWN0IGRybV9wcmludGVyICpwLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgKnZhKQp7CiBz dHJ1Y3QgdmFfZm9ybWF0IHZhZiA9IHsgLmZtdCA9IGZtdCwgLnZhID0gdmEgfTsKCiBwLT5wcmlu dGZuKHAsICZ2YWYpOwp9CiMgMTI4ICIuL2luY2x1ZGUvZHJtL2RybV9wcmludC5oIgpzdHJ1Y3Qg ZHJtX3ByaW50X2l0ZXJhdG9yIHsKIHZvaWQgKmRhdGE7CiBzc2l6ZV90IHN0YXJ0Owogc3NpemVf dCByZW1haW47Cgogc3NpemVfdCBvZmZzZXQ7Cn07CiMgMTcyICIuL2luY2x1ZGUvZHJtL2RybV9w cmludC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBzdHJ1Y3QgZHJtX3ByaW50ZXIKZHJtX2NvcmVkdW1wX3ByaW50ZXIoc3RydWN0IGRy bV9wcmludF9pdGVyYXRvciAqaXRlcikKewogc3RydWN0IGRybV9wcmludGVyIHAgPSB7CiAgLnBy aW50Zm4gPSBfX2RybV9wcmludGZuX2NvcmVkdW1wLAogIC5wdXRzID0gX19kcm1fcHV0c19jb3Jl ZHVtcCwKICAuYXJnID0gaXRlciwKIH07CgoKIGl0ZXItPm9mZnNldCA9IDA7CgogcmV0dXJuIHA7 Cn0KIyAxOTQgIi4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkcm1fcHJpbnRlciBk cm1fc2VxX2ZpbGVfcHJpbnRlcihzdHJ1Y3Qgc2VxX2ZpbGUgKmYpCnsKIHN0cnVjdCBkcm1fcHJp bnRlciBwID0gewogIC5wcmludGZuID0gX19kcm1fcHJpbnRmbl9zZXFfZmlsZSwKICAucHV0cyA9 IF9fZHJtX3B1dHNfc2VxX2ZpbGUsCiAgLmFyZyA9IGYsCiB9OwogcmV0dXJuIHA7Cn0KIyAyMTEg Ii4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkcm1fcHJpbnRlciBkcm1faW5mb19w cmludGVyKHN0cnVjdCBkZXZpY2UgKmRldikKewogc3RydWN0IGRybV9wcmludGVyIHAgPSB7CiAg LnByaW50Zm4gPSBfX2RybV9wcmludGZuX2luZm8sCiAgLmFyZyA9IGRldiwKIH07CiByZXR1cm4g cDsKfQojIDIyNyAiLi9pbmNsdWRlL2RybS9kcm1fcHJpbnQuaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRybV9wcmludGVy IGRybV9kZWJ1Z19wcmludGVyKGNvbnN0IGNoYXIgKnByZWZpeCkKewogc3RydWN0IGRybV9wcmlu dGVyIHAgPSB7CiAgLnByaW50Zm4gPSBfX2RybV9wcmludGZuX2RlYnVnLAogIC5wcmVmaXggPSBw cmVmaXgKIH07CiByZXR1cm4gcDsKfQojIDI0MyAiLi9pbmNsdWRlL2RybS9kcm1fcHJpbnQuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IGRybV9wcmludGVyIGRybV9lcnJfcHJpbnRlcihjb25zdCBjaGFyICpwcmVmaXgpCnsK IHN0cnVjdCBkcm1fcHJpbnRlciBwID0gewogIC5wcmludGZuID0gX19kcm1fcHJpbnRmbl9lcnIs CiAgLnByZWZpeCA9IHByZWZpeAogfTsKIHJldHVybiBwOwp9CiMgMjc3ICIuL2luY2x1ZGUvZHJt L2RybV9wcmludC5oIgplbnVtIGRybV9kZWJ1Z19jYXRlZ29yeSB7CgoKCgogRFJNX1VUX0NPUkUg PSAweDAxLAoKCgoKIERSTV9VVF9EUklWRVIgPSAweDAyLAoKCgogRFJNX1VUX0tNUyA9IDB4MDQs CgoKCiBEUk1fVVRfUFJJTUUgPSAweDA4LAoKCgogRFJNX1VUX0FUT01JQyA9IDB4MTAsCgoKCiBE Uk1fVVRfVkJMID0gMHgyMCwKCgoKIERSTV9VVF9TVEFURSA9IDB4NDAsCgoKCiBEUk1fVVRfTEVB U0UgPSAweDgwLAoKCgogRFJNX1VUX0RQID0gMHgxMDAsCn07CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRybV9kZWJ1Z19lbmFi bGVkKGVudW0gZHJtX2RlYnVnX2NhdGVnb3J5IGNhdGVnb3J5KQp7CiByZXR1cm4gX19idWlsdGlu X2V4cGVjdCghIShfX2RybV9kZWJ1ZyAmIGNhdGVnb3J5KSwgMCk7Cn0KCgoKCgoKCl9fYXR0cmli dXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAzLCA0KSkpCnZvaWQgZHJtX2Rldl9wcmludGsoY29u c3Qgc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpsZXZlbCwKICAgICAgY29uc3QgY2hh ciAqZm9ybWF0LCAuLi4pOwpfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkp KQp2b2lkIGRybV9kZXZfZGJnKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgZW51bSBkcm1fZGVi dWdfY2F0ZWdvcnkgY2F0ZWdvcnksCiAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKIyA0ODkg Ii4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiCl9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJp bnRmLCAyLCAzKSkpCnZvaWQgX19kcm1fZGJnKGVudW0gZHJtX2RlYnVnX2NhdGVnb3J5IGNhdGVn b3J5LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7Cl9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18o cHJpbnRmLCAxLCAyKSkpCnZvaWQgX19kcm1fZXJyKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsK IyAzOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL29zX3R5cGVz LmgiIDIKCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2Nnc19j b21tb24uaCIgMQojIDI3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUv Y2dzX2NvbW1vbi5oIgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVk ZS9hbWRfc2hhcmVkLmgiIDEKIyAyNiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9p bmNsdWRlL2FtZF9zaGFyZWQuaCIKIyAxICIuL2luY2x1ZGUvZHJtL2FtZF9hc2ljX3R5cGUuaCIg MQojIDI4ICIuL2luY2x1ZGUvZHJtL2FtZF9hc2ljX3R5cGUuaCIKZW51bSBhbWRfYXNpY190eXBl IHsKIENISVBfVEFISVRJID0gMCwKIENISVBfUElUQ0FJUk4sCiBDSElQX1ZFUkRFLAogQ0hJUF9P TEFORCwKIENISVBfSEFJTkFOLAogQ0hJUF9CT05BSVJFLAogQ0hJUF9LQVZFUkksCiBDSElQX0tB QklOSSwKIENISVBfSEFXQUlJLAogQ0hJUF9NVUxMSU5TLAogQ0hJUF9UT1BBWiwKIENISVBfVE9O R0EsCiBDSElQX0ZJSkksCiBDSElQX0NBUlJJWk8sCiBDSElQX1NUT05FWSwKIENISVBfUE9MQVJJ UzEwLAogQ0hJUF9QT0xBUklTMTEsCiBDSElQX1BPTEFSSVMxMiwKIENISVBfVkVHQU0sCiBDSElQ X1ZFR0ExMCwKIENISVBfVkVHQTEyLAogQ0hJUF9WRUdBMjAsCiBDSElQX1JBVkVOLAogQ0hJUF9B UkNUVVJVUywKIENISVBfUkVOT0lSLAogQ0hJUF9OQVZJMTAsCiBDSElQX05BVkkxNCwKIENISVBf TkFWSTEyLAogQ0hJUF9MQVNULAp9OwoKZXh0ZXJuIGNvbnN0IGNoYXIgKmFtZGdwdV9hc2ljX25h bWVbXTsKIyAyNyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2FtZF9z aGFyZWQuaCIgMgoKCgoKCgoKZW51bSBhbWRfY2hpcF9mbGFncyB7CiBBTURfQVNJQ19NQVNLID0g MHgwMDAwZmZmZlVMLAogQU1EX0ZMQUdTX01BU0sgPSAweGZmZmYwMDAwVUwsCiBBTURfSVNfTU9C SUxJVFkgPSAweDAwMDEwMDAwVUwsCiBBTURfSVNfQVBVID0gMHgwMDAyMDAwMFVMLAogQU1EX0lT X1BYID0gMHgwMDA0MDAwMFVMLAogQU1EX0VYUF9IV19TVVBQT1JUID0gMHgwMDA4MDAwMFVMLAp9 OwoKZW51bSBhbWRfaXBfYmxvY2tfdHlwZSB7CiBBTURfSVBfQkxPQ0tfVFlQRV9DT01NT04sCiBB TURfSVBfQkxPQ0tfVFlQRV9HTUMsCiBBTURfSVBfQkxPQ0tfVFlQRV9JSCwKIEFNRF9JUF9CTE9D S19UWVBFX1NNQywKIEFNRF9JUF9CTE9DS19UWVBFX1BTUCwKIEFNRF9JUF9CTE9DS19UWVBFX0RD RSwKIEFNRF9JUF9CTE9DS19UWVBFX0dGWCwKIEFNRF9JUF9CTE9DS19UWVBFX1NETUEsCiBBTURf SVBfQkxPQ0tfVFlQRV9VVkQsCiBBTURfSVBfQkxPQ0tfVFlQRV9WQ0UsCiBBTURfSVBfQkxPQ0tf VFlQRV9BQ1AsCiBBTURfSVBfQkxPQ0tfVFlQRV9WQ04sCiBBTURfSVBfQkxPQ0tfVFlQRV9NRVMs CiBBTURfSVBfQkxPQ0tfVFlQRV9KUEVHCn07CgplbnVtIGFtZF9jbG9ja2dhdGluZ19zdGF0ZSB7 CiBBTURfQ0dfU1RBVEVfR0FURSA9IDAsCiBBTURfQ0dfU1RBVEVfVU5HQVRFLAp9OwoKCmVudW0g YW1kX3Bvd2VyZ2F0aW5nX3N0YXRlIHsKIEFNRF9QR19TVEFURV9HQVRFID0gMCwKIEFNRF9QR19T VEFURV9VTkdBVEUsCn07CiMgMTI0ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2lu Y2x1ZGUvYW1kX3NoYXJlZC5oIgplbnVtIFBQX0ZFQVRVUkVfTUFTSyB7CiBQUF9TQ0xLX0RQTV9N QVNLID0gMHgxLAogUFBfTUNMS19EUE1fTUFTSyA9IDB4MiwKIFBQX1BDSUVfRFBNX01BU0sgPSAw eDQsCiBQUF9TQ0xLX0RFRVBfU0xFRVBfTUFTSyA9IDB4OCwKIFBQX1BPV0VSX0NPTlRBSU5NRU5U X01BU0sgPSAweDEwLAogUFBfVVZEX0hBTkRTSEFLRV9NQVNLID0gMHgyMCwKIFBQX1NNQ19WT0xU QUdFX0NPTlRST0xfTUFTSyA9IDB4NDAsCiBQUF9WQklfVElNRV9TVVBQT1JUX01BU0sgPSAweDgw LAogUFBfVUxWX01BU0sgPSAweDEwMCwKIFBQX0VOQUJMRV9HRlhfQ0dfVEhSVV9TTVUgPSAweDIw MCwKIFBQX0NMT0NLX1NUUkVUQ0hfTUFTSyA9IDB4NDAwLAogUFBfT0RfRlVaWllfRkFOX0NPTlRS T0xfTUFTSyA9IDB4ODAwLAogUFBfU09DQ0xLX0RQTV9NQVNLID0gMHgxMDAwLAogUFBfRENFRkNM S19EUE1fTUFTSyA9IDB4MjAwMCwKIFBQX09WRVJEUklWRV9NQVNLID0gMHg0MDAwLAogUFBfR0ZY T0ZGX01BU0sgPSAweDgwMDAsCiBQUF9BQ0dfTUFTSyA9IDB4MTAwMDAsCiBQUF9TVFVUVEVSX01P REUgPSAweDIwMDAwLAogUFBfQVZGU19NQVNLID0gMHg0MDAwMCwKfTsKCmVudW0gRENfRkVBVFVS RV9NQVNLIHsKIERDX0ZCQ19NQVNLID0gMHgxLAogRENfTVVMVElfTU9OX1BQX01DTEtfU1dJVENI X01BU0sgPSAweDIsCiBEQ19ESVNBQkxFX0ZSQUNUSU9OQUxfUFdNX01BU0sgPSAweDQsCiBEQ19Q U1JfTUFTSyA9IDB4OCwKfTsKCmVudW0gYW1kX2RwbV9mb3JjZWRfbGV2ZWw7CgoKCnN0cnVjdCBh bWRfaXBfZnVuY3MgewoKIGNoYXIgKm5hbWU7CgoKCgoKCiBpbnQgKCplYXJseV9pbml0KSh2b2lk ICpoYW5kbGUpOwoKIGludCAoKmxhdGVfaW5pdCkodm9pZCAqaGFuZGxlKTsKCiBpbnQgKCpzd19p bml0KSh2b2lkICpoYW5kbGUpOwoKIGludCAoKnN3X2ZpbmkpKHZvaWQgKmhhbmRsZSk7CgogaW50 ICgqaHdfaW5pdCkodm9pZCAqaGFuZGxlKTsKCiBpbnQgKCpod19maW5pKSh2b2lkICpoYW5kbGUp OwoKIHZvaWQgKCpsYXRlX2ZpbmkpKHZvaWQgKmhhbmRsZSk7CgogaW50ICgqc3VzcGVuZCkodm9p ZCAqaGFuZGxlKTsKCiBpbnQgKCpyZXN1bWUpKHZvaWQgKmhhbmRsZSk7CgogYm9vbCAoKmlzX2lk bGUpKHZvaWQgKmhhbmRsZSk7CgogaW50ICgqd2FpdF9mb3JfaWRsZSkodm9pZCAqaGFuZGxlKTsK CiBib29sICgqY2hlY2tfc29mdF9yZXNldCkodm9pZCAqaGFuZGxlKTsKCiBpbnQgKCpwcmVfc29m dF9yZXNldCkodm9pZCAqaGFuZGxlKTsKCiBpbnQgKCpzb2Z0X3Jlc2V0KSh2b2lkICpoYW5kbGUp OwoKIGludCAoKnBvc3Rfc29mdF9yZXNldCkodm9pZCAqaGFuZGxlKTsKCiBpbnQgKCpzZXRfY2xv Y2tnYXRpbmdfc3RhdGUpKHZvaWQgKmhhbmRsZSwKICAgICAgICAgZW51bSBhbWRfY2xvY2tnYXRp bmdfc3RhdGUgc3RhdGUpOwoKIGludCAoKnNldF9wb3dlcmdhdGluZ19zdGF0ZSkodm9pZCAqaGFu ZGxlLAogICAgICAgICBlbnVtIGFtZF9wb3dlcmdhdGluZ19zdGF0ZSBzdGF0ZSk7Cgogdm9pZCAo KmdldF9jbG9ja2dhdGluZ19zdGF0ZSkodm9pZCAqaGFuZGxlLCB1MzIgKmZsYWdzKTsKCiBpbnQg KCplbmFibGVfdW1kX3BzdGF0ZSkodm9pZCAqaGFuZGxlLCBlbnVtIGFtZF9kcG1fZm9yY2VkX2xl dmVsICpsZXZlbCk7Cn07CiMgMjggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5j bHVkZS9jZ3NfY29tbW9uLmgiIDIKCnN0cnVjdCBjZ3NfZGV2aWNlOwoKCgoKZW51bSBjZ3NfaW5k X3JlZyB7CiBDR1NfSU5EX1JFR19fTU1JTywKIENHU19JTkRfUkVHX19QQ0lFLAogQ0dTX0lORF9S RUdfX1NNQywKIENHU19JTkRfUkVHX19VVkRfQ1RYLAogQ0dTX0lORF9SRUdfX0RJRFQsCiBDR1Nf SU5EX1JFR19HQ19DQUMsCiBDR1NfSU5EX1JFR19TRV9DQUMsCiBDR1NfSU5EX1JFR19fQVVESU9f RU5EUFQKfTsKCgoKCmVudW0gY2dzX3Vjb2RlX2lkIHsKIENHU19VQ09ERV9JRF9TTVUgPSAwLAog Q0dTX1VDT0RFX0lEX1NNVV9TSywKIENHU19VQ09ERV9JRF9TRE1BMCwKIENHU19VQ09ERV9JRF9T RE1BMSwKIENHU19VQ09ERV9JRF9DUF9DRSwKIENHU19VQ09ERV9JRF9DUF9QRlAsCiBDR1NfVUNP REVfSURfQ1BfTUUsCiBDR1NfVUNPREVfSURfQ1BfTUVDLAogQ0dTX1VDT0RFX0lEX0NQX01FQ19K VDEsCiBDR1NfVUNPREVfSURfQ1BfTUVDX0pUMiwKIENHU19VQ09ERV9JRF9HTUNPTl9SRU5HLAog Q0dTX1VDT0RFX0lEX1JMQ19HLAogQ0dTX1VDT0RFX0lEX1NUT1JBR0UsCiBDR1NfVUNPREVfSURf TUFYSU1VTSwKfTsKCgoKCnN0cnVjdCBjZ3NfZmlybXdhcmVfaW5mbyB7CiB1aW50MTZfdCB2ZXJz aW9uOwogdWludDE2X3QgZndfdmVyc2lvbjsKIHVpbnQxNl90IGZlYXR1cmVfdmVyc2lvbjsKIHVp bnQzMl90IGltYWdlX3NpemU7CiB1aW50NjRfdCBtY19hZGRyOwoKCiB1aW50MzJfdCB1Y29kZV9z dGFydF9hZGRyZXNzOwoKIHZvaWQgKmtwdHI7CiBib29sIGlzX2tpY2tlcjsKfTsKCnR5cGVkZWYg dW5zaWduZWQgbG9uZyBjZ3NfaGFuZGxlX3Q7CiMgOTEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vaW5jbHVkZS9jZ3NfY29tbW9uLmgiCnR5cGVkZWYgdWludDMyX3QgKCpjZ3NfcmVh ZF9yZWdpc3Rlcl90KShzdHJ1Y3QgY2dzX2RldmljZSAqY2dzX2RldmljZSwgdW5zaWduZWQgb2Zm c2V0KTsKCgoKCgoKCnR5cGVkZWYgdm9pZCAoKmNnc193cml0ZV9yZWdpc3Rlcl90KShzdHJ1Y3Qg Y2dzX2RldmljZSAqY2dzX2RldmljZSwgdW5zaWduZWQgb2Zmc2V0LAogICAgICAgICB1aW50MzJf dCB2YWx1ZSk7CiMgMTA5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUv Y2dzX2NvbW1vbi5oIgp0eXBlZGVmIHVpbnQzMl90ICgqY2dzX3JlYWRfaW5kX3JlZ2lzdGVyX3Qp KHN0cnVjdCBjZ3NfZGV2aWNlICpjZ3NfZGV2aWNlLCBlbnVtIGNnc19pbmRfcmVnIHNwYWNlLAog ICAgICAgICB1bnNpZ25lZCBpbmRleCk7CgoKCgoKCgp0eXBlZGVmIHZvaWQgKCpjZ3Nfd3JpdGVf aW5kX3JlZ2lzdGVyX3QpKHN0cnVjdCBjZ3NfZGV2aWNlICpjZ3NfZGV2aWNlLCBlbnVtIGNnc19p bmRfcmVnIHNwYWNlLAogICAgICB1bnNpZ25lZCBpbmRleCwgdWludDMyX3QgdmFsdWUpOwojIDEz NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2Nnc19jb21tb24uaCIK dHlwZWRlZiBpbnQgKCpjZ3NfZ2V0X2Zpcm13YXJlX2luZm8pKHN0cnVjdCBjZ3NfZGV2aWNlICpj Z3NfZGV2aWNlLAogICAgICAgICBlbnVtIGNnc191Y29kZV9pZCB0eXBlLAogICAgICAgICBzdHJ1 Y3QgY2dzX2Zpcm13YXJlX2luZm8gKmluZm8pOwoKc3RydWN0IGNnc19vcHMgewoKIGNnc19yZWFk X3JlZ2lzdGVyX3QgcmVhZF9yZWdpc3RlcjsKIGNnc193cml0ZV9yZWdpc3Rlcl90IHdyaXRlX3Jl Z2lzdGVyOwogY2dzX3JlYWRfaW5kX3JlZ2lzdGVyX3QgcmVhZF9pbmRfcmVnaXN0ZXI7CiBjZ3Nf d3JpdGVfaW5kX3JlZ2lzdGVyX3Qgd3JpdGVfaW5kX3JlZ2lzdGVyOwoKIGNnc19nZXRfZmlybXdh cmVfaW5mbyBnZXRfZmlybXdhcmVfaW5mbzsKfTsKCnN0cnVjdCBjZ3Nfb3Nfb3BzOwoKc3RydWN0 IGNnc19kZXZpY2UKewogY29uc3Qgc3RydWN0IGNnc19vcHMgKm9wczsKCn07CiMgNDAgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9vc190eXBlcy5oIiAyCiMgNTUg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9vc190eXBlcy5oIgoj IDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L2FwaS5oIiAxCiMgMjIgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vZnB1L2FwaS5oIgpleHRlcm4gdm9pZCBrZXJuZWxfZnB1X2JlZ2luKHZvaWQp OwpleHRlcm4gdm9pZCBrZXJuZWxfZnB1X2VuZCh2b2lkKTsKZXh0ZXJuIGJvb2wgaXJxX2ZwdV91 c2FibGUodm9pZCk7CmV4dGVybiB2b2lkIGZwcmVnc19tYXJrX2FjdGl2YXRlKHZvaWQpOwoKCgoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBmcHJlZ3NfbG9jayh2b2lkKQp7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6 Im1lbW9yeSIpOwogbG9jYWxfYmhfZGlzYWJsZSgpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGZwcmVnc191bmxvY2sodm9p ZCkKewogbG9jYWxfYmhfZW5hYmxlKCk7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1l bW9yeSIpOwp9CgoKZXh0ZXJuIHZvaWQgZnByZWdzX2Fzc2VydF9zdGF0ZV9jb25zaXN0ZW50KHZv aWQpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgc3dpdGNoX2ZwdV9yZXR1cm4odm9pZCk7CiMgNjMgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L2FwaS5oIgpleHRlcm4gaW50IGNwdV9oYXNfeGZlYXR1 cmVzKHU2NCB4ZmVhdHVyZXNfbWFzaywgY29uc3QgY2hhciAqKmZlYXR1cmVfbmFtZSk7CiMgNTYg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9vc190eXBlcy5oIiAy CiMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBl cy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1 ZGUvZml4ZWQzMV8zMi5oIiAxCiMgNTcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKc3RydWN0IGZpeGVkMzFfMzIgewogbG9uZyBs b25nIHZhbHVlOwp9OwoKCgoKCgoKc3RhdGljIGNvbnN0IHN0cnVjdCBmaXhlZDMxXzMyIGRjX2Zp eHB0X3plcm8gPSB7IDAgfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0 X2Vwc2lsb24gPSB7IDFMTCB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4 cHRfaGFsZiA9IHsgMHg4MDAwMDAwMExMIH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgZml4ZWQzMV8z MiBkY19maXhwdF9vbmUgPSB7IDB4MTAwMDAwMDAwTEwgfTsKCnN0YXRpYyBjb25zdCBzdHJ1Y3Qg Zml4ZWQzMV8zMiBkY19maXhwdF9waSA9IHsgMTM0OTMwMzc3MDVMTCB9OwpzdGF0aWMgY29uc3Qg c3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfdHdvX3BpID0geyAyNjk4NjA3NTQwOUxMIH07CnN0 YXRpYyBjb25zdCBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9lID0geyAxMTY3NDkzMTU1NUxM IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9sbjIgPSB7IDI5Nzcw NDQ0NzFMTCB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfbG4yX2Rp dl8yID0geyAxNDg4NTIyMjM2TEwgfTsKIyA4NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgpzdHJ1Y3QgZml4ZWQzMV8zMiBkY19m aXhwdF9mcm9tX2ZyYWN0aW9uKGxvbmcgbG9uZyBudW1lcmF0b3IsIGxvbmcgbG9uZyBkZW5vbWlu YXRvcik7CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfZnJvbV9pbnQoaW50IGFyZykK ewogc3RydWN0IGZpeGVkMzFfMzIgcmVzOwoKIHJlcy52YWx1ZSA9IChsb25nIGxvbmcpIGFyZyA8 PCAzMjsKCiByZXR1cm4gcmVzOwp9CiMgMTExICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2Zp eHB0X25lZyhzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpCnsKIHN0cnVjdCBmaXhlZDMxXzMyIHJlczsK CiByZXMudmFsdWUgPSAtYXJnLnZhbHVlOwoKIHJldHVybiByZXM7Cn0KCgoKCgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZml4 ZWQzMV8zMiBkY19maXhwdF9hYnMoc3RydWN0IGZpeGVkMzFfMzIgYXJnKQp7CiBpZiAoYXJnLnZh bHVlIDwgMCkKICByZXR1cm4gZGNfZml4cHRfbmVnKGFyZyk7CiBlbHNlCiAgcmV0dXJuIGFyZzsK fQojIDE0MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUv Zml4ZWQzMV8zMi5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sIGRjX2ZpeHB0X2x0KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0 cnVjdCBmaXhlZDMxXzMyIGFyZzIpCnsKIHJldHVybiBhcmcxLnZhbHVlIDwgYXJnMi52YWx1ZTsK fQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgZGNfZml4cHRfbGUoc3RydWN0IGZpeGVkMzFfMzIgYXJnMSwgc3RydWN0IGZp eGVkMzFfMzIgYXJnMikKewogcmV0dXJuIGFyZzEudmFsdWUgPD0gYXJnMi52YWx1ZTsKfQoKCgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgZGNfZml4cHRfZXEoc3RydWN0IGZpeGVkMzFfMzIgYXJnMSwgc3RydWN0IGZpeGVkMzFf MzIgYXJnMikKewogcmV0dXJuIGFyZzEudmFsdWUgPT0gYXJnMi52YWx1ZTsKfQoKCgoKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVj dCBmaXhlZDMxXzMyIGRjX2ZpeHB0X21pbihzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcxLCBzdHJ1Y3Qg Zml4ZWQzMV8zMiBhcmcyKQp7CiBpZiAoYXJnMS52YWx1ZSA8PSBhcmcyLnZhbHVlKQogIHJldHVy biBhcmcxOwogZWxzZQogIHJldHVybiBhcmcyOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNf Zml4cHRfbWF4KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMxXzMyIGFyZzIp CnsKIGlmIChhcmcxLnZhbHVlIDw9IGFyZzIudmFsdWUpCiAgcmV0dXJuIGFyZzI7CiBlbHNlCiAg cmV0dXJuIGFyZzE7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X2NsYW1wKAog c3RydWN0IGZpeGVkMzFfMzIgYXJnLAogc3RydWN0IGZpeGVkMzFfMzIgbWluX3ZhbHVlLAogc3Ry dWN0IGZpeGVkMzFfMzIgbWF4X3ZhbHVlKQp7CiBpZiAoZGNfZml4cHRfbGUoYXJnLCBtaW5fdmFs dWUpKQogIHJldHVybiBtaW5fdmFsdWU7CiBlbHNlIGlmIChkY19maXhwdF9sZShtYXhfdmFsdWUs IGFyZykpCiAgcmV0dXJuIG1heF92YWx1ZTsKIGVsc2UKICByZXR1cm4gYXJnOwp9CiMgMjE2ICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMy LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X3NobChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcs IHVuc2lnbmVkIGNoYXIgc2hpZnQpCnsKICh7IGludCBfX3JldF93YXJuX29uID0gISEoISgoKGFy Zy52YWx1ZSA+PSAwKSAmJiAoYXJnLnZhbHVlIDw9ICgobG9uZyBsb25nKSh+MFVMTCA+PiAxKSkg Pj4gc2hpZnQpKSB8fCAoKGFyZy52YWx1ZSA8IDApICYmIChhcmcudmFsdWUgPj0gfigoKGxvbmcg bG9uZykofjBVTEwgPj4gMSkpID4+IHNoaWZ0KSkpKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEh KF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpc dCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3 XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2Fk ZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4i ICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQj IGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDog ImkiICgiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVk MzFfMzIuaCIpLCAiaSIgKDIxOCksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChz aXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgi JWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVj MGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMzgpKTsgfSk7IH0gd2hpbGUg KDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKIGFy Zy52YWx1ZSA9IGFyZy52YWx1ZSA8PCBzaGlmdDsKCiByZXR1cm4gYXJnOwp9CgoKCgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IGZpeGVkMzFfMzIgZGNfZml4cHRfc2hyKHN0cnVjdCBmaXhlZDMxXzMyIGFyZywgdW5zaWduZWQg Y2hhciBzaGlmdCkKewogYm9vbCBuZWdhdGl2ZSA9IGFyZy52YWx1ZSA8IDA7CgogaWYgKG5lZ2F0 aXZlKQogIGFyZy52YWx1ZSA9IC1hcmcudmFsdWU7CiBhcmcudmFsdWUgPSBhcmcudmFsdWUgPj4g c2hpZnQ7CiBpZiAobmVnYXRpdmUpCiAgYXJnLnZhbHVlID0gLWFyZy52YWx1ZTsKIHJldHVybiBh cmc7Cn0KIyAyNTEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNs dWRlL2ZpeGVkMzFfMzIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfYWRkKHN0cnVjdCBm aXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMxXzMyIGFyZzIpCnsKIHN0cnVjdCBmaXhlZDMx XzMyIHJlczsKCiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKCEoKChhcmcxLnZhbHVlID49IDAp ICYmICgoKGxvbmcgbG9uZykofjBVTEwgPj4gMSkpIC0gYXJnMS52YWx1ZSA+PSBhcmcyLnZhbHVl KSkgfHwgKChhcmcxLnZhbHVlIDwgMCkgJiYgKCgtKChsb25nIGxvbmcpKH4wVUxMID4+IDEpKSAt IDEpIC0gYXJnMS52YWx1ZSA8PSBhcmcyLnZhbHVlKSkpKTsgaWYgKF9fYnVpbHRpbl9leHBlY3Qo ISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIx Olx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwi YXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdf YWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVc biIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJc dCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDog OiAiaSIgKCJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4 ZWQzMV8zMi5oIiksICJpIiAoMjU1KSwgImkiICgoMSA8PCAwKXwoKCg5KSA8PCA4KSkpLCAiaSIg KHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxl KCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcg JWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgzOSkpOyB9KTsgfSB3aGls ZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 CgogcmVzLnZhbHVlID0gYXJnMS52YWx1ZSArIGFyZzIudmFsdWU7CgogcmV0dXJuIHJlczsKfQoK CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X2FkZF9pbnQoc3RydWN0IGZpeGVkMzFfMzIg YXJnMSwgaW50IGFyZzIpCnsKIHJldHVybiBkY19maXhwdF9hZGQoYXJnMSwgZGNfZml4cHRfZnJv bV9pbnQoYXJnMikpOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfc3ViKHN0cnVj dCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMxXzMyIGFyZzIpCnsKIHN0cnVjdCBmaXhl ZDMxXzMyIHJlczsKCiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKCEoKChhcmcyLnZhbHVlID49 IDApICYmICgoLSgobG9uZyBsb25nKSh+MFVMTCA+PiAxKSkgLSAxKSArIGFyZzIudmFsdWUgPD0g YXJnMS52YWx1ZSkpIHx8ICgoYXJnMi52YWx1ZSA8IDApICYmICgoKGxvbmcgbG9uZykofjBVTEwg Pj4gMSkpICsgYXJnMi52YWx1ZSA+PSBhcmcxLnZhbHVlKSkpKTsgaWYgKF9fYnVpbHRpbl9leHBl Y3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxl KCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxl LFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5Ojpi dWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZp bGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIi ICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24i IDogOiAiaSIgKCJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUv Zml4ZWQzMV8zMi5oIiksICJpIiAoMjgwKSwgImkiICgoMSA8PCAwKXwoKCg5KSA8PCA4KSkpLCAi aSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0 aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxv bmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICg0MCkpOyB9KTsgfSB3 aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7CgogcmVzLnZhbHVlID0gYXJnMS52YWx1ZSAtIGFyZzIudmFsdWU7CgogcmV0dXJuIHJlczsK fQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X3N1Yl9pbnQoc3RydWN0IGZpeGVkMzFf MzIgYXJnMSwgaW50IGFyZzIpCnsKIHJldHVybiBkY19maXhwdF9zdWIoYXJnMSwgZGNfZml4cHRf ZnJvbV9pbnQoYXJnMikpOwp9CiMgMzA3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiCnN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0 X211bChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcxLCBzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcyKTsKCgoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfbXVsX2ludChzdHJ1Y3QgZml4ZWQzMV8zMiBh cmcxLCBpbnQgYXJnMikKewogcmV0dXJuIGRjX2ZpeHB0X211bChhcmcxLCBkY19maXhwdF9mcm9t X2ludChhcmcyKSk7Cn0KCgoKCgpzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9zcXIoc3RydWN0 IGZpeGVkMzFfMzIgYXJnKTsKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9kaXZfaW50 KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIGxvbmcgbG9uZyBhcmcyKQp7CiByZXR1cm4gZGNfZml4 cHRfZnJvbV9mcmFjdGlvbihhcmcxLnZhbHVlLCBkY19maXhwdF9mcm9tX2ludChhcmcyKS52YWx1 ZSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9kaXYoc3RydWN0IGZpeGVkMzFf MzIgYXJnMSwgc3RydWN0IGZpeGVkMzFfMzIgYXJnMikKewogcmV0dXJuIGRjX2ZpeHB0X2Zyb21f ZnJhY3Rpb24oYXJnMS52YWx1ZSwgYXJnMi52YWx1ZSk7Cn0KIyAzNTUgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKc3RydWN0IGZp eGVkMzFfMzIgZGNfZml4cHRfcmVjaXAoc3RydWN0IGZpeGVkMzFfMzIgYXJnKTsKIyAzNzAgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIu aCIKc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfc2luYyhzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcp OwojIDM4MCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUv Zml4ZWQzMV8zMi5oIgpzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9zaW4oc3RydWN0IGZpeGVk MzFfMzIgYXJnKTsKIyAzOTIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfY29zKHN0 cnVjdCBmaXhlZDMxXzMyIGFyZyk7CiMgNDA2ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiCnN0cnVjdCBmaXhlZDMxXzMyIGRjX2Zp eHB0X2V4cChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpOwojIDQxOCAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgpzdHJ1Y3QgZml4ZWQz MV8zMiBkY19maXhwdF9sb2coc3RydWN0IGZpeGVkMzFfMzIgYXJnKTsKIyA0MzIgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3Ry dWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfcG93KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVj dCBmaXhlZDMxXzMyIGFyZzIpCnsKIHJldHVybiBkY19maXhwdF9leHAoCiAgZGNfZml4cHRfbXVs KAogICBkY19maXhwdF9sb2coYXJnMSksCiAgIGFyZzIpKTsKfQojIDQ0OSAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZGNf Zml4cHRfZmxvb3Ioc3RydWN0IGZpeGVkMzFfMzIgYXJnKQp7CiB1bnNpZ25lZCBsb25nIGxvbmcg YXJnX3ZhbHVlID0gYXJnLnZhbHVlID4gMCA/IGFyZy52YWx1ZSA6IC1hcmcudmFsdWU7CgogaWYg KGFyZy52YWx1ZSA+PSAwKQogIHJldHVybiAoaW50KShhcmdfdmFsdWUgPj4gMzIpOwogZWxzZQog IHJldHVybiAtKGludCkoYXJnX3ZhbHVlID4+IDMyKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkY19maXhwdF9yb3Vu ZChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpCnsKIHVuc2lnbmVkIGxvbmcgbG9uZyBhcmdfdmFsdWUg PSBhcmcudmFsdWUgPiAwID8gYXJnLnZhbHVlIDogLWFyZy52YWx1ZTsKCiBjb25zdCBsb25nIGxv bmcgc3VtbWFuZCA9IGRjX2ZpeHB0X2hhbGYudmFsdWU7CgogKHsgaW50IF9fcmV0X3dhcm5fb24g PSAhISghKCgobG9uZyBsb25nKSh+MFVMTCA+PiAxKSkgLSAobG9uZyBsb25nKWFyZ192YWx1ZSA+ PSBzdW1tYW5kKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkg ZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIi ICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAi ICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAi JWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBi dWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIg Ilx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIpLCAiaSIgKDQ2OSks ICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRy eSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rp b24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0 aW9uXG5cdCIgOiA6ICJpIiAoNDEpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0 KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CgogYXJnX3ZhbHVlICs9IHN1bW1hbmQ7CgogaWYg KGFyZy52YWx1ZSA+PSAwKQogIHJldHVybiAoaW50KShhcmdfdmFsdWUgPj4gMzIpOwogZWxzZQog IHJldHVybiAtKGludCkoYXJnX3ZhbHVlID4+IDMyKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkY19maXhwdF9jZWls KHN0cnVjdCBmaXhlZDMxXzMyIGFyZykKewogdW5zaWduZWQgbG9uZyBsb25nIGFyZ192YWx1ZSA9 IGFyZy52YWx1ZSA+IDAgPyBhcmcudmFsdWUgOiAtYXJnLnZhbHVlOwoKIGNvbnN0IGxvbmcgbG9u ZyBzdW1tYW5kID0gZGNfZml4cHRfb25lLnZhbHVlIC0KICBkY19maXhwdF9lcHNpbG9uLnZhbHVl OwoKICh7IGludCBfX3JldF93YXJuX29uID0gISEoISgoKGxvbmcgbG9uZykofjBVTEwgPj4gMSkp IC0gKGxvbmcgbG9uZylhcmdfdmFsdWUgPj0gc3VtbWFuZCkpOyBpZiAoX19idWlsdGluX2V4cGVj dCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUo IjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUs XCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1 Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6Zmls ZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIg Ilx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIg OiA6ICJpIiAoImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9m aXhlZDMxXzMyLmgiKSwgImkiICg0OTApLCAiaSIgKCgxIDw8IDApfCgoKDkpIDw8IDgpKSksICJp IiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRp bGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9u ZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDQyKSk7IH0pOyB9IHdo aWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwoKIGFy Z192YWx1ZSArPSBzdW1tYW5kOwoKIGlmIChhcmcudmFsdWUgPj0gMCkKICByZXR1cm4gKGludCko YXJnX3ZhbHVlID4+IDMyKTsKIGVsc2UKICByZXR1cm4gLShpbnQpKGFyZ192YWx1ZSA+PiAzMik7 Cn0KCgoKCgoKCnVuc2lnbmVkIGludCBkY19maXhwdF91NGQxOShzdHJ1Y3QgZml4ZWQzMV8zMiBh cmcpOwoKdW5zaWduZWQgaW50IGRjX2ZpeHB0X3UzZDE5KHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7 Cgp1bnNpZ25lZCBpbnQgZGNfZml4cHRfdTJkMTkoc3RydWN0IGZpeGVkMzFfMzIgYXJnKTsKCnVu c2lnbmVkIGludCBkY19maXhwdF91MGQxOShzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpOwoKdW5zaWdu ZWQgaW50IGRjX2ZpeHB0X2NsYW1wX3UwZDE0KHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7Cgp1bnNp Z25lZCBpbnQgZGNfZml4cHRfY2xhbXBfdTBkMTAoc3RydWN0IGZpeGVkMzFfMzIgYXJnKTsKCmlu dCBkY19maXhwdF9zNGQxOShzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpOwoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFf MzIgZGNfZml4cHRfdHJ1bmNhdGUoc3RydWN0IGZpeGVkMzFfMzIgYXJnLCB1bnNpZ25lZCBpbnQg ZnJhY19iaXRzKQp7CiBib29sIG5lZ2F0aXZlID0gYXJnLnZhbHVlIDwgMDsKCiBpZiAoZnJhY19i aXRzID49IDMyKSB7CiAgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAhISghKGZyYWNfYml0cyA9PSAz MikpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8g eyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIu cHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIg LSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAt IDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5 OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcg MmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiKSwgImkiICg1MjUpLCAiaSIgKCgx IDw8IDApfCgoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0g d2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNj YXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQi IDogOiAiaSIgKDQzKSk7IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3Jl dF93YXJuX29uKSwgMCk7IH0pOwogIHJldHVybiBhcmc7CiB9CgogaWYgKG5lZ2F0aXZlKQogIGFy Zy52YWx1ZSA9IC1hcmcudmFsdWU7CiBhcmcudmFsdWUgJj0gKH4wTEwpIDw8ICgzMiAtIGZyYWNf Yml0cyk7CiBpZiAobmVnYXRpdmUpCiAgYXJnLnZhbHVlID0gLWFyZy52YWx1ZTsKIHJldHVybiBh cmc7Cn0KIyAzNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Rj X3R5cGVzLmgiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvaXJxX3R5cGVzLmgiIDEKIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2lycV90eXBlcy5oIgpzdHJ1Y3QgZGNfY29udGV4dDsKCnR5cGVkZWYgdm9pZCAo KmludGVycnVwdF9oYW5kbGVyKSh2b2lkICopOwoKdHlwZWRlZiB2b2lkICppcnFfaGFuZGxlcl9p ZHg7CgoKCgplbnVtIGRjX2lycV9zb3VyY2UgewoKIERDX0lSUV9TT1VSQ0VfSU5WQUxJRCA9IDAs CgogRENfSVJRX1NPVVJDRV9IUEQxLAogRENfSVJRX1NPVVJDRV9IUEQyLAogRENfSVJRX1NPVVJD RV9IUEQzLAogRENfSVJRX1NPVVJDRV9IUEQ0LAogRENfSVJRX1NPVVJDRV9IUEQ1LAogRENfSVJR X1NPVVJDRV9IUEQ2LAoKIERDX0lSUV9TT1VSQ0VfSFBEMVJYLAogRENfSVJRX1NPVVJDRV9IUEQy UlgsCiBEQ19JUlFfU09VUkNFX0hQRDNSWCwKIERDX0lSUV9TT1VSQ0VfSFBENFJYLAogRENfSVJR X1NPVVJDRV9IUEQ1UlgsCiBEQ19JUlFfU09VUkNFX0hQRDZSWCwKCiBEQ19JUlFfU09VUkNFX0ky Q19EREMxLAogRENfSVJRX1NPVVJDRV9JMkNfRERDMiwKIERDX0lSUV9TT1VSQ0VfSTJDX0REQzMs CiBEQ19JUlFfU09VUkNFX0kyQ19EREM0LAogRENfSVJRX1NPVVJDRV9JMkNfRERDNSwKIERDX0lS UV9TT1VSQ0VfSTJDX0REQzYsCgogRENfSVJRX1NPVVJDRV9EUFNJTksxLAogRENfSVJRX1NPVVJD RV9EUFNJTksyLAogRENfSVJRX1NPVVJDRV9EUFNJTkszLAogRENfSVJRX1NPVVJDRV9EUFNJTks0 LAogRENfSVJRX1NPVVJDRV9EUFNJTks1LAogRENfSVJRX1NPVVJDRV9EUFNJTks2LAoKIERDX0lS UV9TT1VSQ0VfVElNRVIsCgogRENfSVJRX1NPVVJDRV9QRkxJUF9GSVJTVCwKIERDX0lSUV9TT1VS Q0VfUEZMSVAxID0gRENfSVJRX1NPVVJDRV9QRkxJUF9GSVJTVCwKIERDX0lSUV9TT1VSQ0VfUEZM SVAyLAogRENfSVJRX1NPVVJDRV9QRkxJUDMsCiBEQ19JUlFfU09VUkNFX1BGTElQNCwKIERDX0lS UV9TT1VSQ0VfUEZMSVA1LAogRENfSVJRX1NPVVJDRV9QRkxJUDYsCiBEQ19JUlFfU09VUkNFX1BG TElQX1VOREVSTEFZMCwKIERDX0lSUV9TT1VSQ0VfUEZMSVBfTEFTVCA9IERDX0lSUV9TT1VSQ0Vf UEZMSVBfVU5ERVJMQVkwLAoKIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDAsCiBEQ19JUlFfU09VUkNF X0dQSU9QQUQxLAogRENfSVJRX1NPVVJDRV9HUElPUEFEMiwKIERDX0lSUV9TT1VSQ0VfR1BJT1BB RDMsCiBEQ19JUlFfU09VUkNFX0dQSU9QQUQ0LAogRENfSVJRX1NPVVJDRV9HUElPUEFENSwKIERD X0lSUV9TT1VSQ0VfR1BJT1BBRDYsCiBEQ19JUlFfU09VUkNFX0dQSU9QQUQ3LAogRENfSVJRX1NP VVJDRV9HUElPUEFEOCwKIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDksCiBEQ19JUlFfU09VUkNFX0dQ SU9QQUQxMCwKIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDExLAogRENfSVJRX1NPVVJDRV9HUElPUEFE MTIsCiBEQ19JUlFfU09VUkNFX0dQSU9QQUQxMywKIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDE0LAog RENfSVJRX1NPVVJDRV9HUElPUEFEMTUsCiBEQ19JUlFfU09VUkNFX0dQSU9QQUQxNiwKIERDX0lS UV9TT1VSQ0VfR1BJT1BBRDE3LAogRENfSVJRX1NPVVJDRV9HUElPUEFEMTgsCiBEQ19JUlFfU09V UkNFX0dQSU9QQUQxOSwKIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDIwLAogRENfSVJRX1NPVVJDRV9H UElPUEFEMjEsCiBEQ19JUlFfU09VUkNFX0dQSU9QQUQyMiwKIERDX0lSUV9TT1VSQ0VfR1BJT1BB RDIzLAogRENfSVJRX1NPVVJDRV9HUElPUEFEMjQsCiBEQ19JUlFfU09VUkNFX0dQSU9QQUQyNSwK IERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI2LAogRENfSVJRX1NPVVJDRV9HUElPUEFEMjcsCiBEQ19J UlFfU09VUkNFX0dQSU9QQUQyOCwKIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI5LAogRENfSVJRX1NP VVJDRV9HUElPUEFEMzAsCgogRENfSVJRX1NPVVJDRV9EQzFVTkRFUkZMT1csCiBEQ19JUlFfU09V UkNFX0RDMlVOREVSRkxPVywKIERDX0lSUV9TT1VSQ0VfREMzVU5ERVJGTE9XLAogRENfSVJRX1NP VVJDRV9EQzRVTkRFUkZMT1csCiBEQ19JUlFfU09VUkNFX0RDNVVOREVSRkxPVywKIERDX0lSUV9T T1VSQ0VfREM2VU5ERVJGTE9XLAoKIERDX0lSUV9TT1VSQ0VfRE1DVV9TQ1AsCiBEQ19JUlFfU09V UkNFX1ZCSU9TX1NXLAoKIERDX0lSUV9TT1VSQ0VfVlVQREFURTEsCiBEQ19JUlFfU09VUkNFX1ZV UERBVEUyLAogRENfSVJRX1NPVVJDRV9WVVBEQVRFMywKIERDX0lSUV9TT1VSQ0VfVlVQREFURTQs CiBEQ19JUlFfU09VUkNFX1ZVUERBVEU1LAogRENfSVJRX1NPVVJDRV9WVVBEQVRFNiwKCiBEQ19J UlFfU09VUkNFX1ZCTEFOSzEsCiBEQ19JUlFfU09VUkNFX1ZCTEFOSzIsCiBEQ19JUlFfU09VUkNF X1ZCTEFOSzMsCiBEQ19JUlFfU09VUkNFX1ZCTEFOSzQsCiBEQ19JUlFfU09VUkNFX1ZCTEFOSzUs CiBEQ19JUlFfU09VUkNFX1ZCTEFOSzYsCgogRENfSVJRX1NPVVJDRV9EQzFfVkxJTkUwLAogRENf SVJRX1NPVVJDRV9EQzJfVkxJTkUwLAogRENfSVJRX1NPVVJDRV9EQzNfVkxJTkUwLAogRENfSVJR X1NPVVJDRV9EQzRfVkxJTkUwLAogRENfSVJRX1NPVVJDRV9EQzVfVkxJTkUwLAogRENfSVJRX1NP VVJDRV9EQzZfVkxJTkUwLAoKIERDX0lSUV9TT1VSQ0VfREMxX1ZMSU5FMSwKIERDX0lSUV9TT1VS Q0VfREMyX1ZMSU5FMSwKIERDX0lSUV9TT1VSQ0VfREMzX1ZMSU5FMSwKIERDX0lSUV9TT1VSQ0Vf REM0X1ZMSU5FMSwKIERDX0lSUV9TT1VSQ0VfREM1X1ZMSU5FMSwKIERDX0lSUV9TT1VSQ0VfREM2 X1ZMSU5FMSwKCgogREFMX0lSUV9TT1VSQ0VTX05VTUJFUgp9OwoKZW51bSBpcnFfdHlwZQp7CiBJ UlFfVFlQRV9QRkxJUCA9IERDX0lSUV9TT1VSQ0VfUEZMSVAxLAogSVJRX1RZUEVfVlVQREFURSA9 IERDX0lSUV9TT1VSQ0VfVlVQREFURTEsCiBJUlFfVFlQRV9WQkxBTksgPSBEQ19JUlFfU09VUkNF X1ZCTEFOSzEsCn07CiMgMTczICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaXJxX3R5cGVzLmgiCmVudW0gZGNfaW50ZXJydXB0X2NvbnRleHQgewogSU5URVJSVVBU X0xPV19JUlFfQ09OVEVYVCA9IDAsCiBJTlRFUlJVUFRfSElHSF9JUlFfQ09OVEVYVCwKIElOVEVS UlVQVF9DT05URVhUX05VTUJFUgp9OwoKZW51bSBkY19pbnRlcnJ1cHRfcG9ybGFyaXR5IHsKIElO VEVSUlVQVF9QT0xBUklUWV9ERUZBVUxUID0gMCwKIElOVEVSUlVQVF9QT0xBUklUWV9MT1cgPSBJ TlRFUlJVUFRfUE9MQVJJVFlfREVGQVVMVCwKIElOVEVSUlVQVF9QT0xBUklUWV9ISUdILAogSU5U RVJSVVBUX1BPTEFSSVRZX0JPVEgKfTsKCgoKCgoKc3RydWN0IGRjX3RpbWVyX2ludGVycnVwdF9w YXJhbXMgewogdWludDMyX3QgbWljcm9fc2VjX2ludGVydmFsOwogZW51bSBkY19pbnRlcnJ1cHRf Y29udGV4dCBpbnRfY29udGV4dDsKfTsKCnN0cnVjdCBkY19pbnRlcnJ1cHRfcGFyYW1zIHsKCgoK IGVudW0gZGNfaW50ZXJydXB0X3Bvcmxhcml0eSByZXF1ZXN0ZWRfcG9sYXJpdHk7CgoKCgogZW51 bSBkY19pbnRlcnJ1cHRfcG9ybGFyaXR5IGN1cnJlbnRfcG9sYXJpdHk7CiBlbnVtIGRjX2lycV9z b3VyY2UgaXJxX3NvdXJjZTsKIGVudW0gZGNfaW50ZXJydXB0X2NvbnRleHQgaW50X2NvbnRleHQ7 Cn07CiMgMzUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190 eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RjX2RwX3R5cGVzLmgiIDEKIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RjX2RwX3R5cGVzLmgiCmVudW0gZGNfbGFuZV9jb3VudCB7CiBMQU5FX0NPVU5U X1VOS05PV04gPSAwLAogTEFORV9DT1VOVF9PTkUgPSAxLAogTEFORV9DT1VOVF9UV08gPSAyLAog TEFORV9DT1VOVF9GT1VSID0gNCwKIExBTkVfQ09VTlRfRUlHSFQgPSA4LAogTEFORV9DT1VOVF9E UF9NQVggPSBMQU5FX0NPVU5UX0ZPVVIKfTsKIyA0NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2RwX3R5cGVzLmgiCmVudW0gZGNfbGlua19yYXRlIHsKIExJ TktfUkFURV9VTktOT1dOID0gMCwKIExJTktfUkFURV9MT1cgPSAweDA2LAogTElOS19SQVRFX1JB VEVfMiA9IDB4MDgsCiBMSU5LX1JBVEVfUkFURV8zID0gMHgwOSwKIExJTktfUkFURV9ISUdIID0g MHgwQSwKIExJTktfUkFURV9SQlIyID0gMHgwQywKIExJTktfUkFURV9SQVRFXzYgPSAweDEwLAog TElOS19SQVRFX0hJR0gyID0gMHgxNCwKIExJTktfUkFURV9ISUdIMyA9IDB4MUUKfTsKCmVudW0g ZGNfbGlua19zcHJlYWQgewogTElOS19TUFJFQURfRElTQUJMRUQgPSAweDAwLAoKIExJTktfU1BS RUFEXzA1X0RPV05TUFJFQURfMzBLSFogPSAweDEwLAoKIExJTktfU1BSRUFEXzA1X0RPV05TUFJF QURfMzNLSFogPSAweDExCn07CgplbnVtIGRjX3ZvbHRhZ2Vfc3dpbmcgewogVk9MVEFHRV9TV0lO R19MRVZFTDAgPSAwLAogVk9MVEFHRV9TV0lOR19MRVZFTDEsCiBWT0xUQUdFX1NXSU5HX0xFVkVM MiwKIFZPTFRBR0VfU1dJTkdfTEVWRUwzLAogVk9MVEFHRV9TV0lOR19NQVhfTEVWRUwgPSBWT0xU QUdFX1NXSU5HX0xFVkVMMwp9OwoKZW51bSBkY19wcmVfZW1waGFzaXMgewogUFJFX0VNUEhBU0lT X0RJU0FCTEVEID0gMCwKIFBSRV9FTVBIQVNJU19MRVZFTDEsCiBQUkVfRU1QSEFTSVNfTEVWRUwy LAogUFJFX0VNUEhBU0lTX0xFVkVMMywKIFBSRV9FTVBIQVNJU19NQVhfTEVWRUwgPSBQUkVfRU1Q SEFTSVNfTEVWRUwzCn07CgoKCmVudW0gZGNfcG9zdF9jdXJzb3IyIHsKIFBPU1RfQ1VSU09SMl9E SVNBQkxFRCA9IDAsCiBQT1NUX0NVUlNPUjJfTEVWRUwxLAogUE9TVF9DVVJTT1IyX0xFVkVMMiwK IFBPU1RfQ1VSU09SMl9MRVZFTDMsCiBQT1NUX0NVUlNPUjJfTUFYX0xFVkVMID0gUE9TVF9DVVJT T1IyX0xFVkVMMywKfTsKCmVudW0gZGNfZHBfdHJhaW5pbmdfcGF0dGVybiB7CiBEUF9UUkFJTklO R19QQVRURVJOX1NFUVVFTkNFXzEgPSAwLAogRFBfVFJBSU5JTkdfUEFUVEVSTl9TRVFVRU5DRV8y LAogRFBfVFJBSU5JTkdfUEFUVEVSTl9TRVFVRU5DRV8zLAogRFBfVFJBSU5JTkdfUEFUVEVSTl9T RVFVRU5DRV80LAp9OwoKc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgewogZW51bSBkY19sYW5lX2Nv dW50IGxhbmVfY291bnQ7CiBlbnVtIGRjX2xpbmtfcmF0ZSBsaW5rX3JhdGU7CiBlbnVtIGRjX2xp bmtfc3ByZWFkIGxpbmtfc3ByZWFkOwogYm9vbCB1c2VfbGlua19yYXRlX3NldDsKIHVpbnQ4X3Qg bGlua19yYXRlX3NldDsKfTsKCnN0cnVjdCBkY19sYW5lX3NldHRpbmdzIHsKIGVudW0gZGNfdm9s dGFnZV9zd2luZyBWT0xUQUdFX1NXSU5HOwogZW51bSBkY19wcmVfZW1waGFzaXMgUFJFX0VNUEhB U0lTOwogZW51bSBkY19wb3N0X2N1cnNvcjIgUE9TVF9DVVJTT1IyOwp9OwoKc3RydWN0IGRjX2xp bmtfdHJhaW5pbmdfc2V0dGluZ3Mgewogc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgbGluazsKIHN0 cnVjdCBkY19sYW5lX3NldHRpbmdzIGxhbmVfc2V0dGluZ3NbTEFORV9DT1VOVF9EUF9NQVhdOwp9 OwoKc3RydWN0IGRjX2xpbmtfdHJhaW5pbmdfb3ZlcnJpZGVzIHsKIGVudW0gZGNfdm9sdGFnZV9z d2luZyAqdm9sdGFnZV9zd2luZzsKIGVudW0gZGNfcHJlX2VtcGhhc2lzICpwcmVfZW1waGFzaXM7 CiBlbnVtIGRjX3Bvc3RfY3Vyc29yMiAqcG9zdF9jdXJzb3IyOwoKIHVpbnQxNl90ICpjcl9wYXR0 ZXJuX3RpbWU7CiB1aW50MTZfdCAqZXFfcGF0dGVybl90aW1lOwogZW51bSBkY19kcF90cmFpbmlu Z19wYXR0ZXJuICpwYXR0ZXJuX2Zvcl9lcTsKCiBlbnVtIGRjX2xpbmtfc3ByZWFkICpkb3duc3By ZWFkOwogYm9vbCAqYWx0ZXJuYXRlX3NjcmFtYmxlcl9yZXNldDsKIGJvb2wgKmVuaGFuY2VkX2Zy YW1pbmc7CiBib29sICptc3RfZW5hYmxlOwogYm9vbCAqZmVjX2VuYWJsZTsKfTsKCnVuaW9uIGRw Y2RfcmV2IHsKIHN0cnVjdCB7CiAgdWludDhfdCBNSU5PUjo0OwogIHVpbnQ4X3QgTUFKT1I6NDsK IH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKdW5pb24gbWF4X2xhbmVfY291bnQgewogc3RydWN0 IHsKICB1aW50OF90IE1BWF9MQU5FX0NPVU5UOjU7CiAgdWludDhfdCBQT1NUX0xUX0FESl9SRVFf U1VQUE9SVEVEOjE7CiAgdWludDhfdCBUUFMzX1NVUFBPUlRFRDoxOwogIHVpbnQ4X3QgRU5IQU5D RURfRlJBTUVfQ0FQOjE7CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCnVuaW9uIG1heF9kb3du X3NwcmVhZCB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgTUFYX0RPV05fU1BSRUFEOjE7CiAgdWludDhf dCBSRVNFUlZFRDo1OwogIHVpbnQ4X3QgTk9fQVVYX0hBTkRTSEFLRV9MSU5LX1RSQUlOSU5HOjE7 CiAgdWludDhfdCBUUFM0X1NVUFBPUlRFRDoxOwogfSBiaXRzOwogdWludDhfdCByYXc7Cn07Cgp1 bmlvbiBtc3RtX2NhcCB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgTVNUX0NBUDoxOwogIHVpbnQ4X3Qg UkVTRVJWRUQ6NzsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKdW5pb24gbGFuZV9jb3VudF9z ZXQgewogc3RydWN0IHsKICB1aW50OF90IExBTkVfQ09VTlRfU0VUOjU7CiAgdWludDhfdCBQT1NU X0xUX0FESl9SRVFfR1JBTlRFRDoxOwogIHVpbnQ4X3QgUkVTRVJWRUQ6MTsKICB1aW50OF90IEVO SEFOQ0VEX0ZSQU1JTkc6MTsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKdW5pb24gbGFuZV9z dGF0dXMgewogc3RydWN0IHsKICB1aW50OF90IENSX0RPTkVfMDoxOwogIHVpbnQ4X3QgQ0hBTk5F TF9FUV9ET05FXzA6MTsKICB1aW50OF90IFNZTUJPTF9MT0NLRURfMDoxOwogIHVpbnQ4X3QgUkVT RVJWRUQwOjE7CiAgdWludDhfdCBDUl9ET05FXzE6MTsKICB1aW50OF90IENIQU5ORUxfRVFfRE9O RV8xOjE7CiAgdWludDhfdCBTWU1CT0xfTE9DS0VEXzE6MTsKICB1aW50OF90IFJFU0VSVkVEXzE6 MTsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKdW5pb24gZGV2aWNlX3NlcnZpY2VfaXJxIHsK IHN0cnVjdCB7CiAgdWludDhfdCBSRU1PVEVfQ09OVFJPTF9DTURfUEVORElORzoxOwogIHVpbnQ4 X3QgQVVUT01BVEVEX1RFU1Q6MTsKICB1aW50OF90IENQX0lSUToxOwogIHVpbnQ4X3QgTUNDU19J UlE6MTsKICB1aW50OF90IERPV05fUkVQX01TR19SRFk6MTsKICB1aW50OF90IFVQX1JFUV9NU0df UkRZOjE7CiAgdWludDhfdCBTSU5LX1NQRUNJRklDOjE7CiAgdWludDhfdCByZXNlcnZlZDoxOwog fSBiaXRzOwogdWludDhfdCByYXc7Cn07Cgp1bmlvbiBzaW5rX2NvdW50IHsKIHN0cnVjdCB7CiAg dWludDhfdCBTSU5LX0NPVU5UOjY7CiAgdWludDhfdCBDUFJFQURZOjE7CiAgdWludDhfdCBSRVNF UlZFRDoxOwogfSBiaXRzOwogdWludDhfdCByYXc7Cn07Cgp1bmlvbiBsYW5lX2FsaWduX3N0YXR1 c191cGRhdGVkIHsKIHN0cnVjdCB7CiAgdWludDhfdCBJTlRFUkxBTkVfQUxJR05fRE9ORToxOwog IHVpbnQ4X3QgUE9TVF9MVF9BREpfUkVRX0lOX1BST0dSRVNTOjE7CiAgdWludDhfdCBSRVNFUlZF RDo0OwogIHVpbnQ4X3QgRE9XTlNUUkVBTV9QT1JUX1NUQVRVU19DSEFOR0VEOjE7CiAgdWludDhf dCBMSU5LX1NUQVRVU19VUERBVEVEOjE7CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCnVuaW9u IGxhbmVfYWRqdXN0IHsKIHN0cnVjdCB7CiAgdWludDhfdCBWT0xUQUdFX1NXSU5HX0xBTkU6MjsK ICB1aW50OF90IFBSRV9FTVBIQVNJU19MQU5FOjI7CiAgdWludDhfdCBSRVNFUlZFRDo0OwogfSBi aXRzOwogdWludDhfdCByYXc7Cn07Cgp1bmlvbiBkcGNkX3RyYWluaW5nX3BhdHRlcm4gewogc3Ry dWN0IHsKICB1aW50OF90IFRSQUlOSU5HX1BBVFRFUk5fU0VUOjQ7CiAgdWludDhfdCBSRUNPVkVS RURfQ0xPQ0tfT1VUX0VOOjE7CiAgdWludDhfdCBTQ1JBTUJMSU5HX0RJU0FCTEU6MTsKICB1aW50 OF90IFNZTUJPTF9FUlJPUl9DT1VOVF9TRUw6MjsKIH0gdjFfNDsKIHN0cnVjdCB7CiAgdWludDhf dCBUUkFJTklOR19QQVRURVJOX1NFVDoyOwogIHVpbnQ4X3QgTElOS19RVUFMX1BBVFRFUk5fU0VU OjI7CiAgdWludDhfdCBSRVNFUlZFRDo0OwogfSB2MV8zOwogdWludDhfdCByYXc7Cn07CgoKCgp1 bmlvbiBkcGNkX3RyYWluaW5nX2xhbmUgewogc3RydWN0IHsKICB1aW50OF90IFZPTFRBR0VfU1dJ TkdfU0VUOjI7CiAgdWludDhfdCBNQVhfU1dJTkdfUkVBQ0hFRDoxOwogIHVpbnQ4X3QgUFJFX0VN UEhBU0lTX1NFVDoyOwogIHVpbnQ4X3QgTUFYX1BSRV9FTVBIQVNJU19SRUFDSEVEOjE7CiAgdWlu dDhfdCBSRVNFUlZFRDoyOwogfSBiaXRzOwogdWludDhfdCByYXc7Cn07CgoKdW5pb24gZHduc3Ry ZWFtX3BvcnRfY2Fwc19ieXRlMCB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgRFdOX1NUUk1fUE9SVFhf VFlQRTozOwogIHVpbnQ4X3QgRFdOX1NUUk1fUE9SVFhfSFBEOjE7CiAgdWludDhfdCBSRVNFUlZF UkQ6NDsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKCmVudW0gZHBjZF9kb3duc3RyZWFtX3Bv cnRfZGV0YWlsZWRfdHlwZSB7CiBET1dOX1NUUkVBTV9ERVRBSUxFRF9EUCA9IDAsCiBET1dOX1NU UkVBTV9ERVRBSUxFRF9WR0EsCiBET1dOX1NUUkVBTV9ERVRBSUxFRF9EVkksCiBET1dOX1NUUkVB TV9ERVRBSUxFRF9IRE1JLAogRE9XTl9TVFJFQU1fREVUQUlMRURfTk9ORERDLAogRE9XTl9TVFJF QU1fREVUQUlMRURfRFBfUExVU19QTFVTCn07Cgp1bmlvbiBkd25zdHJlYW1fcG9ydF9jYXBzX2J5 dGUyIHsKIHN0cnVjdCB7CiAgdWludDhfdCBNQVhfQklUU19QRVJfQ09MT1JfQ09NUE9ORU5UOjI7 CiAgdWludDhfdCBSRVNFUlZFRDo2OwogfSBiaXRzOwogdWludDhfdCByYXc7Cn07Cgp1bmlvbiBk cF9kb3duc3RyZWFtX3BvcnRfcHJlc2VudCB7CiB1aW50OF90IGJ5dGU7CiBzdHJ1Y3QgewogIHVp bnQ4X3QgUE9SVF9QUkVTRU5UOjE7CiAgdWludDhfdCBQT1JUX1RZUEU6MjsKICB1aW50OF90IEZN VF9DT05WRVJTSU9OOjE7CiAgdWludDhfdCBERVRBSUxFRF9DQVBTOjE7CiAgdWludDhfdCBSRVNF UlZFRDozOwogfSBmaWVsZHM7Cn07Cgp1bmlvbiBkd25zdHJlYW1fcG9ydF9jYXBzX2J5dGUzX2R2 aSB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgUkVTRVJWRUQxOjE7CiAgdWludDhfdCBEVUFMX0xJTks6 MTsKICB1aW50OF90IEhJR0hfQ09MT1JfREVQVEg6MTsKICB1aW50OF90IFJFU0VSVkVEMjo1Owog fSBiaXRzOwogdWludDhfdCByYXc7Cn07Cgp1bmlvbiBkd25zdHJlYW1fcG9ydF9jYXBzX2J5dGUz X2hkbWkgewogc3RydWN0IHsKICB1aW50OF90IEZSQU1FX1NFUV9UT19GUkFNRV9QQUNLOjE7CiAg dWludDhfdCBZQ3JDcjQyMl9QQVNTX1RIUk9VR0g6MTsKICB1aW50OF90IFlDckNyNDIwX1BBU1Nf VEhST1VHSDoxOwogIHVpbnQ4X3QgWUNyQ3I0MjJfQ09OVkVSU0lPTjoxOwogIHVpbnQ4X3QgWUNy Q3I0MjBfQ09OVkVSU0lPTjoxOwogIHVpbnQ4X3QgUkVTRVJWRUQ6MzsKIH0gYml0czsKIHVpbnQ4 X3QgcmF3Owp9OwoKCgp1bmlvbiBkd25zdHJlYW1fcG9ydHhjYXBzIHsKIHN0cnVjdCB7CiAgdW5p b24gZHduc3RyZWFtX3BvcnRfY2Fwc19ieXRlMCBieXRlMDsKICB1bnNpZ25lZCBjaGFyIG1heF9U TURTX2Nsb2NrOwogIHVuaW9uIGR3bnN0cmVhbV9wb3J0X2NhcHNfYnl0ZTIgYnl0ZTI7CgogIHVu aW9uIHsKICAgdW5pb24gZHduc3RyZWFtX3BvcnRfY2Fwc19ieXRlM19kdmkgYnl0ZURWSTsKICAg dW5pb24gZHduc3RyZWFtX3BvcnRfY2Fwc19ieXRlM19oZG1pIGJ5dGVIRE1JOwogIH0gYnl0ZTM7 CiB9IGJ5dGVzOwoKIHVuc2lnbmVkIGNoYXIgcmF3WzRdOwp9OwoKdW5pb24gZG93bnN0cmVhbV9w b3J0IHsKIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciBwcmVzZW50OjE7CiAgdW5zaWduZWQgY2hh ciB0eXBlOjI7CiAgdW5zaWduZWQgY2hhciBmb3JtYXRfY29udjoxOwogIHVuc2lnbmVkIGNoYXIg ZGV0YWlsZWRfY2FwczoxOwogIHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQ6MzsKIH0gYml0czsKIHVu c2lnbmVkIGNoYXIgcmF3Owp9OwoKCnVuaW9uIHNpbmtfc3RhdHVzIHsKIHN0cnVjdCB7CiAgdWlu dDhfdCBSWF9QT1JUMF9TVEFUVVM6MTsKICB1aW50OF90IFJYX1BPUlQxX1NUQVRVUzoxOwogIHVp bnQ4X3QgUkVTRVJWRUQ6NjsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKCgp1bmlvbiBocGRf aXJxX2RhdGEgewogc3RydWN0IHsKICB1bmlvbiBzaW5rX2NvdW50IHNpbmtfY250OwogIHVuaW9u IGRldmljZV9zZXJ2aWNlX2lycSBkZXZpY2Vfc2VydmljZV9pcnE7CiAgdW5pb24gbGFuZV9zdGF0 dXMgbGFuZTAxX3N0YXR1czsKICB1bmlvbiBsYW5lX3N0YXR1cyBsYW5lMjNfc3RhdHVzOwogIHVu aW9uIGxhbmVfYWxpZ25fc3RhdHVzX3VwZGF0ZWQgbGFuZV9zdGF0dXNfdXBkYXRlZDsKICB1bmlv biBzaW5rX3N0YXR1cyBzaW5rX3N0YXR1czsKIH0gYnl0ZXM7CiB1aW50OF90IHJhd1s2XTsKfTsK CnVuaW9uIGRvd25fc3RyZWFtX3BvcnRfY291bnQgewogc3RydWN0IHsKICB1aW50OF90IERPV05f U1RSX1BPUlRfQ09VTlQ6NDsKICB1aW50OF90IFJFU0VSVkVEOjI7CgoKCgogIHVpbnQ4X3QgSUdO T1JFX01TQV9USU1JTkdfUEFSQU06MTsKCgoKCiAgdWludDhfdCBPVUlfU1VQUE9SVDoxOwogfSBi aXRzOwogdWludDhfdCByYXc7Cn07Cgp1bmlvbiBkb3duX3NwcmVhZF9jdHJsIHsKIHN0cnVjdCB7 CiAgdWludDhfdCBSRVNFUlZFRDE6NDsKCgoKCiAgdWludDhfdCBTUFJFQURfQU1QOjE7CiAgdWlu dDhfdCBSRVNFUlZFRDI6MjsKCgoKICB1aW50OF90IElHTk9SRV9NU0FfVElNSU5HX1BBUkFNOjE7 CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCnVuaW9uIGRwY2RfZWRwX2NvbmZpZyB7CiBzdHJ1 Y3QgewogIHVpbnQ4X3QgUEFORUxfTU9ERV9FRFA6MTsKICB1aW50OF90IEZSQU1JTkdfQ0hBTkdF X0VOQUJMRToxOwogIHVpbnQ4X3QgUkVTRVJWRUQ6NTsKICB1aW50OF90IFBBTkVMX1NFTEZfVEVT VF9FTkFCTEU6MTsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKc3RydWN0IGRwX2RldmljZV92 ZW5kb3JfaWQgewogdWludDhfdCBpZWVlX291aVszXTsKIHVpbnQ4X3QgaWVlZV9kZXZpY2VfaWRb Nl07Cn07CgpzdHJ1Y3QgZHBfc2lua19od19md19yZXZpc2lvbiB7CiB1aW50OF90IGllZWVfaHdf cmV2OwogdWludDhfdCBpZWVlX2Z3X3JldlsyXTsKfTsKCgp1bmlvbiBlZHBfY29uZmlndXJhdGlv bl9jYXAgewogc3RydWN0IHsKICB1aW50OF90IEFMVF9TQ1JBTUJMRVJfUkVTRVQ6MTsKICB1aW50 OF90IEZSQU1JTkdfQ0hBTkdFOjE7CiAgdWludDhfdCBSRVNFUlZFRDoxOwogIHVpbnQ4X3QgRFBD RF9ESVNQTEFZX0NPTlRST0xfQ0FQQUJMRToxOwogIHVpbnQ4X3QgUkVTRVJWRUQyOjQ7CiB9IGJp dHM7CiB1aW50OF90IHJhdzsKfTsKCnVuaW9uIGRwcnhfZmVhdHVyZSB7CiBzdHJ1Y3QgewogIHVp bnQ4X3QgR1RDX0NBUDoxOwogIHVpbnQ4X3QgU1NUX1NQTElUX1NEUF9DQVA6MTsKICB1aW50OF90 IEFWX1NZTkNfQ0FQOjE7CiAgdWludDhfdCBWU0NfU0RQX0NPTE9SSU1FVFJZX1NVUFBPUlRFRDox OwogIHVpbnQ4X3QgVlNDX0VYVF9WRVNBX1NEUF9TVVBQT1JURUQ6MTsKICB1aW50OF90IFZTQ19F WFRfVkVTQV9TRFBfQ0hBSU5JTkdfU1VQUE9SVEVEOjE7CiAgdWludDhfdCBWU0NfRVhUX0NFQV9T RFBfU1VQUE9SVEVEOjE7CiAgdWludDhfdCBWU0NfRVhUX0NFQV9TRFBfQ0hBSU5JTkdfU1VQUE9S VEVEOjE7CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCnVuaW9uIHRyYWluaW5nX2F1eF9yZF9p bnRlcnZhbCB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgVFJBSU5JR19BVVhfUkRfSU5URVJWQUw6NzsK ICB1aW50OF90IEVYVF9SRUNFSVZFUl9DQVBfRklFTERfUFJFU0VOVDoxOwogfSBiaXRzOwogdWlu dDhfdCByYXc7Cn07CgoKdW5pb24gdGVzdF9yZXF1ZXN0IHsKIHN0cnVjdCB7CiB1aW50OF90IExJ TktfVFJBSU5JTkcgOjE7CiB1aW50OF90IExJTktfVEVTVF9QQVRUUk4gOjE7CiB1aW50OF90IEVE SURfUkVBRCA6MTsKIHVpbnQ4X3QgUEhZX1RFU1RfUEFUVEVSTiA6MTsKIHVpbnQ4X3QgUkVTRVJW RUQgOjE7CiB1aW50OF90IEFVRElPX1RFU1RfUEFUVEVSTiA6MTsKIHVpbnQ4X3QgVEVTVF9BVURJ T19ESVNBQkxFRF9WSURFTyA6MTsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKdW5pb24gdGVz dF9yZXNwb25zZSB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgQUNLIDoxOwogIHVpbnQ4X3QgTk9fQUNL IDoxOwogIHVpbnQ4X3QgRURJRF9DSEVDS1NVTV9XUklURToxOwogIHVpbnQ4X3QgUkVTRVJWRUQg OjU7CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCnVuaW9uIHBoeV90ZXN0X3BhdHRlcm4gewog c3RydWN0IHsKCgoKICB1aW50OF90IFBBVFRFUk4gOjM7CgogIHVpbnQ4X3QgUkVTRVJWRUQgOjU7 CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCgp1bmlvbiBjb21wbGlhbmNlX3Rlc3Rfc3RhdGUg ewogc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIFNURVJFT18zRF9SVU5OSU5HIDogMTsKICB1bnNp Z25lZCBjaGFyIFJFU0VSVkVEIDogNzsKIH0gYml0czsKIHVuc2lnbmVkIGNoYXIgcmF3Owp9OwoK dW5pb24gbGlua190ZXN0X3BhdHRlcm4gewogc3RydWN0IHsKCiAgdW5zaWduZWQgY2hhciBQQVRU RVJOIDoyOwogIHVuc2lnbmVkIGNoYXIgUkVTRVJWRUQ6NjsKIH0gYml0czsKIHVuc2lnbmVkIGNo YXIgcmF3Owp9OwoKdW5pb24gdGVzdF9taXNjIHsKIHN0cnVjdCBkcGNkX3Rlc3RfbWlzY19iaXRz IHsKICB1bnNpZ25lZCBjaGFyIFNZTkNfQ0xPQ0sgOjE7CgogIHVuc2lnbmVkIGNoYXIgQ0xSX0ZP Uk1BVCA6MjsKCiAgdW5zaWduZWQgY2hhciBEWU5fUkFOR0UgOjE7CiAgdW5zaWduZWQgY2hhciBZ Q0JDUl9DT0VGUyA6MTsKCiAgdW5zaWduZWQgY2hhciBCUEMgOjM7CiB9IGJpdHM7CiB1bnNpZ25l ZCBjaGFyIHJhdzsKfTsKCnVuaW9uIGF1ZGlvX3Rlc3RfbW9kZSB7CiBzdHJ1Y3QgewogIHVuc2ln bmVkIGNoYXIgc2FtcGxpbmdfcmF0ZSA6NDsKICB1bnNpZ25lZCBjaGFyIGNoYW5uZWxfY291bnQg OjQ7CiB9IGJpdHM7CiB1bnNpZ25lZCBjaGFyIHJhdzsKfTsKCnVuaW9uIGF1ZGlvX3Rlc3RfcGF0 dGVybl9wZXJpb2Qgewogc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIHBhdHRlcm5fcGVyaW9kIDo0 OwogIHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQgOjQ7CiB9IGJpdHM7CiB1bnNpZ25lZCBjaGFyIHJh dzsKfTsKCnN0cnVjdCBhdWRpb190ZXN0X3BhdHRlcm5fdHlwZSB7CiB1bnNpZ25lZCBjaGFyIHZh bHVlOwp9OwoKc3RydWN0IGRwX2F1ZGlvX3Rlc3RfZGF0YV9mbGFncyB7CiB1aW50OF90IHRlc3Rf cmVxdWVzdGVkIDoxOwogdWludDhfdCBkaXNhYmxlX3ZpZGVvIDoxOwp9OwoKc3RydWN0IGRwX2F1 ZGlvX3Rlc3RfZGF0YSB7Cgogc3RydWN0IGRwX2F1ZGlvX3Rlc3RfZGF0YV9mbGFncyBmbGFnczsK IHVpbnQ4X3Qgc2FtcGxpbmdfcmF0ZTsKIHVpbnQ4X3QgY2hhbm5lbF9jb3VudDsKIHVpbnQ4X3Qg cGF0dGVybl90eXBlOwogdWludDhfdCBwYXR0ZXJuX3BlcmlvZFs4XTsKfTsKCgp1bmlvbiBkcGNk X2ZlY19jYXBhYmlsaXR5IHsKIHN0cnVjdCB7CiAgdWludDhfdCBGRUNfQ0FQQUJMRToxOwogIHVp bnQ4X3QgVU5DT1JSRUNURURfQkxPQ0tfRVJST1JfQ09VTlRfQ0FQQUJMRToxOwogIHVpbnQ4X3Qg Q09SUkVDVEVEX0JMT0NLX0VSUk9SX0NPVU5UX0NBUEFCTEU6MTsKICB1aW50OF90IEJJVF9FUlJP Ul9DT1VOVF9DQVBBQkxFOjE7CiAgdWludDhfdCBSRVNFUlZFRDo0OwogfSBiaXRzOwogdWludDhf dCByYXc7Cn07CgoKc3RydWN0IGRwY2RfZHNjX3N1cHBvcnQgewogdWludDhfdCBEU0NfU1VQUE9S VCA6MTsKIHVpbnQ4X3QgRFNDX1BBU1NUSFJPVUdIX1NVUFBPUlQgOjE7CiB1aW50OF90IFJFU0VS VkVEIDo2Owp9OwoKc3RydWN0IGRwY2RfZHNjX2FsZ29yaXRobV9yZXZpc2lvbiB7CiB1aW50OF90 IERTQ19WRVJTSU9OX01BSk9SIDo0OwogdWludDhfdCBEU0NfVkVSU0lPTl9NSU5PUiA6NDsKfTsK CnN0cnVjdCBkcGNkX2RzY19yY19idWZmZXJfYmxvY2tfc2l6ZSB7CiB1aW50OF90IFJDX0JMT0NL X0JVRkZFUl9TSVpFIDoyOwogdWludDhfdCBSRVNFUlZFRCA6NjsKfTsKCnN0cnVjdCBkcGNkX2Rz Y19zbGljZV9jYXBhYmlsaXR5MSB7CiB1aW50OF90IE9ORV9TTElDRV9QRVJfRFBfRFNDX1NJTktf REVWSUNFIDoxOwogdWludDhfdCBUV09fU0xJQ0VTX1BFUl9EUF9EU0NfU0lOS19ERVZJQ0UgOjE7 CiB1aW50OF90IFJFU0VSVkVEIDoxOwogdWludDhfdCBGT1VSX1NMSUNFU19QRVJfRFBfRFNDX1NJ TktfREVWSUNFIDoxOwogdWludDhfdCBTSVhfU0xJQ0VTX1BFUl9EUF9EU0NfU0lOS19ERVZJQ0Ug OjE7CiB1aW50OF90IEVJR0hUX1NMSUNFU19QRVJfRFBfRFNDX1NJTktfREVWSUNFIDoxOwogdWlu dDhfdCBURU5fU0xJQ0VTX1BFUl9EUF9EU0NfU0lOS19ERVZJQ0UgOjE7CiB1aW50OF90IFRXRUxW RV9TTElDRVNfUEVSX0RQX0RTQ19TSU5LX0RFVklDRSA6MTsKfTsKCnN0cnVjdCBkcGNkX2RzY19s aW5lX2J1ZmZlcl9iaXRfZGVwdGggewogdWludDhfdCBMSU5FX0JVRkZFUl9CSVRfREVQVEggOjQ7 CiB1aW50OF90IFJFU0VSVkVEIDo0Owp9OwoKc3RydWN0IGRwY2RfZHNjX2Jsb2NrX3ByZWRpY3Rp b25fc3VwcG9ydCB7CiB1aW50OF90IEJMT0NLX1BSRURJQ1RJT05fU1VQUE9SVDoxOwogdWludDhf dCBSRVNFUlZFRCA6NzsKfTsKCnN0cnVjdCBkcGNkX21heGltdW1fYml0c19wZXJfcGl4ZWxfc3Vw cG9ydGVkX2J5X3RoZV9kZWNvbXByZXNzb3IgewogdWludDhfdCBNQVhJTVVNX0JJVFNfUEVSX1BJ WEVMX1NVUFBPUlRFRF9CWV9USEVfREVDT01QUkVTU09SX0xPVyA6NzsKIHVpbnQ4X3QgTUFYSU1V TV9CSVRTX1BFUl9QSVhFTF9TVVBQT1JURURfQllfVEhFX0RFQ09NUFJFU1NPUl9ISUdIIDo3Owog dWludDhfdCBSRVNFUlZFRCA6MjsKfTsKCnN0cnVjdCBkcGNkX2RzY19kZWNvZGVyX2NvbG9yX2Zv cm1hdF9jYXBhYmlsaXRpZXMgewogdWludDhfdCBSR0JfU1VQUE9SVCA6MTsKIHVpbnQ4X3QgWV9D Ql9DUl80NDRfU1VQUE9SVCA6MTsKIHVpbnQ4X3QgWV9DQl9DUl9TSU1QTEVfNDIyX1NVUFBPUlQg OjE7CiB1aW50OF90IFlfQ0JfQ1JfTkFUSVZFXzQyMl9TVVBQT1JUIDoxOwogdWludDhfdCBZX0NC X0NSX05BVElWRV80MjBfU1VQUE9SVCA6MTsKIHVpbnQ4X3QgUkVTRVJWRUQgOjM7Cn07CgpzdHJ1 Y3QgZHBjZF9kc2NfZGVjb2Rlcl9jb2xvcl9kZXB0aF9jYXBhYmlsaXRpZXMgewogdWludDhfdCBS RVNFUlZFRDAgOjE7CiB1aW50OF90IEVJR0hUX0JJVFNfUEVSX0NPTE9SX1NVUFBPUlQgOjE7CiB1 aW50OF90IFRFTl9CSVRTX1BFUl9DT0xPUl9TVVBQT1JUIDoxOwogdWludDhfdCBUV0VMVkVfQklU U19QRVJfQ09MT1JfU1VQUE9SVCA6MTsKIHVpbnQ4X3QgUkVTRVJWRUQxIDo0Owp9OwoKc3RydWN0 IGRwY2RfcGVha19kc2NfdGhyb3VnaHB1dF9kc2Nfc2luayB7CiB1aW50OF90IFRIUk9VR0hQVVRf TU9ERV8wOjQ7CiB1aW50OF90IFRIUk9VR0hQVVRfTU9ERV8xOjQ7Cn07CgpzdHJ1Y3QgZHBjZF9k c2Nfc2xpY2VfY2FwYWJpbGl0aWVzXzIgewogdWludDhfdCBTSVhURUVOX1NMSUNFU19QRVJfRFND X1NJTktfREVWSUNFIDoxOwogdWludDhfdCBUV0VOVFlfU0xJQ0VTX1BFUl9EU0NfU0lOS19ERVZJ Q0UgOjE7CiB1aW50OF90IFRXRU5UWUZPVVJfU0xJQ0VTX1BFUl9EU0NfU0lOS19ERVZJQ0UgOjE7 CiB1aW50OF90IFJFU0VSVkVEIDo1Owp9OwoKc3RydWN0IGRwY2RfYml0c19wZXJfcGl4ZWxfaW5j cmVtZW50ewogdWludDhfdCBJTkNSRU1FTlRfT0ZfQklUU19QRVJfUElYRUxfU1VQUE9SVEVEIDoz OwogdWludDhfdCBSRVNFUlZFRCA6NTsKfTsKdW5pb24gZHBjZF9kc2NfYmFzaWNfY2FwYWJpbGl0 aWVzIHsKIHN0cnVjdCB7CiAgc3RydWN0IGRwY2RfZHNjX3N1cHBvcnQgZHNjX3N1cHBvcnQ7CiAg c3RydWN0IGRwY2RfZHNjX2FsZ29yaXRobV9yZXZpc2lvbiBkc2NfYWxnb3JpdGhtX3JldmlzaW9u OwogIHN0cnVjdCBkcGNkX2RzY19yY19idWZmZXJfYmxvY2tfc2l6ZSBkc2NfcmNfYnVmZmVyX2Js b2NrX3NpemU7CiAgdWludDhfdCBkc2NfcmNfYnVmZmVyX3NpemU7CiAgc3RydWN0IGRwY2RfZHNj X3NsaWNlX2NhcGFiaWxpdHkxIGRzY19zbGljZV9jYXBhYmlsaXRpZXNfMTsKICBzdHJ1Y3QgZHBj ZF9kc2NfbGluZV9idWZmZXJfYml0X2RlcHRoIGRzY19saW5lX2J1ZmZlcl9iaXRfZGVwdGg7CiAg c3RydWN0IGRwY2RfZHNjX2Jsb2NrX3ByZWRpY3Rpb25fc3VwcG9ydCBkc2NfYmxvY2tfcHJlZGlj dGlvbl9zdXBwb3J0OwogIHN0cnVjdCBkcGNkX21heGltdW1fYml0c19wZXJfcGl4ZWxfc3VwcG9y dGVkX2J5X3RoZV9kZWNvbXByZXNzb3IgbWF4aW11bV9iaXRzX3Blcl9waXhlbF9zdXBwb3J0ZWRf YnlfdGhlX2RlY29tcHJlc3NvcjsKICBzdHJ1Y3QgZHBjZF9kc2NfZGVjb2Rlcl9jb2xvcl9mb3Jt YXRfY2FwYWJpbGl0aWVzIGRzY19kZWNvZGVyX2NvbG9yX2Zvcm1hdF9jYXBhYmlsaXRpZXM7CiAg c3RydWN0IGRwY2RfZHNjX2RlY29kZXJfY29sb3JfZGVwdGhfY2FwYWJpbGl0aWVzIGRzY19kZWNv ZGVyX2NvbG9yX2RlcHRoX2NhcGFiaWxpdGllczsKICBzdHJ1Y3QgZHBjZF9wZWFrX2RzY190aHJv dWdocHV0X2RzY19zaW5rIHBlYWtfZHNjX3Rocm91Z2hwdXRfZHNjX3Npbms7CiAgdWludDhfdCBk c2NfbWF4aW11bV9zbGljZV93aWR0aDsKICBzdHJ1Y3QgZHBjZF9kc2Nfc2xpY2VfY2FwYWJpbGl0 aWVzXzIgZHNjX3NsaWNlX2NhcGFiaWxpdGllc18yOwogIHVpbnQ4X3QgcmVzZXJ2ZWQ7CiAgc3Ry dWN0IGRwY2RfYml0c19wZXJfcGl4ZWxfaW5jcmVtZW50IGJpdHNfcGVyX3BpeGVsX2luY3JlbWVu dDsKIH0gZmllbGRzOwogdWludDhfdCByYXdbMTZdOwp9OwoKdW5pb24gZHBjZF9kc2NfZXh0X2Nh cGFiaWxpdGllcyB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgQlJBTkNIX09WRVJBTExfVEhST1VHSFBV VF8wOwogIHVpbnQ4X3QgQlJBTkNIX09WRVJBTExfVEhST1VHSFBVVF8xOwogIHVpbnQ4X3QgQlJB TkNIX01BWF9MSU5FX1dJRFRIOwogfSBmaWVsZHM7CiB1aW50OF90IHJhd1szXTsKfTsKCnN0cnVj dCBkcGNkX2RzY19jYXBhYmlsaXRpZXMgewogdW5pb24gZHBjZF9kc2NfYmFzaWNfY2FwYWJpbGl0 aWVzIGRzY19iYXNpY19jYXBzOwogdW5pb24gZHBjZF9kc2NfZXh0X2NhcGFiaWxpdGllcyBkc2Nf ZXh0X2NhcHM7Cn07CiMgMzYgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9kY190eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RjX2h3X3R5cGVzLmgiIDEKIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2h3X3R5cGVzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvc2lnbmFsX3R5cGVzLmgiIDEKIyAzNCAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvc2lnbmFsX3R5cGVz LmgiCmVudW0gc2lnbmFsX3R5cGUgewogU0lHTkFMX1RZUEVfTk9ORSA9IDBMLAogU0lHTkFMX1RZ UEVfRFZJX1NJTkdMRV9MSU5LID0gKDEgPDwgMCksCiBTSUdOQUxfVFlQRV9EVklfRFVBTF9MSU5L ID0gKDEgPDwgMSksCiBTSUdOQUxfVFlQRV9IRE1JX1RZUEVfQSA9ICgxIDw8IDIpLAogU0lHTkFM X1RZUEVfTFZEUyA9ICgxIDw8IDMpLAogU0lHTkFMX1RZUEVfUkdCID0gKDEgPDwgNCksCiBTSUdO QUxfVFlQRV9ESVNQTEFZX1BPUlQgPSAoMSA8PCA1KSwKIFNJR05BTF9UWVBFX0RJU1BMQVlfUE9S VF9NU1QgPSAoMSA8PCA2KSwKIFNJR05BTF9UWVBFX0VEUCA9ICgxIDw8IDcpLAogU0lHTkFMX1RZ UEVfVklSVFVBTCA9ICgxIDw8IDkpLAp9OwoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGNfaXNfaGRtaV90bWRzX3NpZ25hbChl bnVtIHNpZ25hbF90eXBlIHNpZ25hbCkKewogcmV0dXJuIChzaWduYWwgPT0gU0lHTkFMX1RZUEVf SERNSV9UWVBFX0EpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2hkbWlfc2lnbmFsKGVudW0gc2lnbmFsX3R5cGUg c2lnbmFsKQp7CiByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9IRE1JX1RZUEVfQSk7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgZGNfaXNfZHBfc3N0X3NpZ25hbChlbnVtIHNpZ25hbF90eXBlIHNpZ25hbCkKewogcmV0 dXJuIChzaWduYWwgPT0gU0lHTkFMX1RZUEVfRElTUExBWV9QT1JUIHx8CiAgc2lnbmFsID09IFNJ R05BTF9UWVBFX0VEUCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGNfaXNfZHBfc2lnbmFsKGVudW0gc2lnbmFsX3R5cGUg c2lnbmFsKQp7CiByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9ESVNQTEFZX1BPUlQgfHwK ICBzaWduYWwgPT0gU0lHTkFMX1RZUEVfRURQIHx8CiAgc2lnbmFsID09IFNJR05BTF9UWVBFX0RJ U1BMQVlfUE9SVF9NU1QpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2VtYmVkZGVkX3NpZ25hbChlbnVtIHNpZ25h bF90eXBlIHNpZ25hbCkKewogcmV0dXJuIChzaWduYWwgPT0gU0lHTkFMX1RZUEVfRURQIHx8IHNp Z25hbCA9PSBTSUdOQUxfVFlQRV9MVkRTKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkY19pc19sdmRzX3NpZ25hbChlbnVt IHNpZ25hbF90eXBlIHNpZ25hbCkKewogcmV0dXJuIChzaWduYWwgPT0gU0lHTkFMX1RZUEVfTFZE Uyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgZGNfaXNfZHZpX3NpZ25hbChlbnVtIHNpZ25hbF90eXBlIHNpZ25hbCkKewog c3dpdGNoIChzaWduYWwpIHsKIGNhc2UgU0lHTkFMX1RZUEVfRFZJX1NJTkdMRV9MSU5LOgogY2Fz ZSBTSUdOQUxfVFlQRV9EVklfRFVBTF9MSU5LOgogIHJldHVybiB0cnVlOwogYnJlYWs7CiBkZWZh dWx0OgogIHJldHVybiBmYWxzZTsKIH0KfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkY19pc19kdmlfc2luZ2xlX2xpbmtfc2ln bmFsKGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsKQp7CiByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxf VFlQRV9EVklfU0lOR0xFX0xJTkspOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2R1YWxfbGlua19zaWduYWwoZW51 bSBzaWduYWxfdHlwZSBzaWduYWwpCnsKIHJldHVybiAoc2lnbmFsID09IFNJR05BTF9UWVBFX0RW SV9EVUFMX0xJTkspOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2F1ZGlvX2NhcGFibGVfc2lnbmFsKGVudW0gc2ln bmFsX3R5cGUgc2lnbmFsKQp7CiByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9ESVNQTEFZ X1BPUlQgfHwKICBzaWduYWwgPT0gU0lHTkFMX1RZUEVfRElTUExBWV9QT1JUX01TVCB8fAogIGRj X2lzX2hkbWlfc2lnbmFsKHNpZ25hbCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX3ZpcnR1YWxfc2lnbmFsKGVu dW0gc2lnbmFsX3R5cGUgc2lnbmFsKQp7CiByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9W SVJUVUFMKTsKfQojIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvZGNfaHdfdHlwZXMuaCIgMgojIDQ1ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvZGNfaHdfdHlwZXMuaCIKdW5pb24gbGFyZ2VfaW50ZWdlciB7CiBzdHJ1Y3Qg ewogIHVpbnQzMl90IGxvd19wYXJ0OwogIGludDMyX3QgaGlnaF9wYXJ0OwogfTsKCiBzdHJ1Y3Qg ewogIHVpbnQzMl90IGxvd19wYXJ0OwogIGludDMyX3QgaGlnaF9wYXJ0OwogfSB1OwoKIGludDY0 X3QgcXVhZF9wYXJ0Owp9OwoKCgplbnVtIGRjX3BsYW5lX2FkZHJfdHlwZSB7CiBQTE5fQUREUl9U WVBFX0dSQVBISUNTID0gMCwKIFBMTl9BRERSX1RZUEVfR1JQSF9TVEVSRU8sCiBQTE5fQUREUl9U WVBFX1ZJREVPX1BST0dSRVNTSVZFLAp9OwoKc3RydWN0IGRjX3BsYW5lX2FkZHJlc3MgewogZW51 bSBkY19wbGFuZV9hZGRyX3R5cGUgdHlwZTsKIGJvb2wgdG16X3N1cmZhY2U7CiB1bmlvbiB7CiAg c3RydWN0ewogICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGFkZHI7CiAgIHVuaW9uIGxhcmdlX2ludGVn ZXIgbWV0YV9hZGRyOwogICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGRjY19jb25zdF9jb2xvcjsKICB9 IGdycGg7CgoKICBzdHJ1Y3QgewogICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGxlZnRfYWRkcjsKICAg dW5pb24gbGFyZ2VfaW50ZWdlciBsZWZ0X21ldGFfYWRkcjsKICAgdW5pb24gbGFyZ2VfaW50ZWdl ciBsZWZ0X2RjY19jb25zdF9jb2xvcjsKCiAgIHVuaW9uIGxhcmdlX2ludGVnZXIgcmlnaHRfYWRk cjsKICAgdW5pb24gbGFyZ2VfaW50ZWdlciByaWdodF9tZXRhX2FkZHI7CiAgIHVuaW9uIGxhcmdl X2ludGVnZXIgcmlnaHRfZGNjX2NvbnN0X2NvbG9yOwoKICB9IGdycGhfc3RlcmVvOwoKCiAgc3Ry dWN0IHsKICAgdW5pb24gbGFyZ2VfaW50ZWdlciBsdW1hX2FkZHI7CiAgIHVuaW9uIGxhcmdlX2lu dGVnZXIgbHVtYV9tZXRhX2FkZHI7CiAgIHVuaW9uIGxhcmdlX2ludGVnZXIgbHVtYV9kY2NfY29u c3RfY29sb3I7CgogICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGNocm9tYV9hZGRyOwogICB1bmlvbiBs YXJnZV9pbnRlZ2VyIGNocm9tYV9tZXRhX2FkZHI7CiAgIHVuaW9uIGxhcmdlX2ludGVnZXIgY2hy b21hX2RjY19jb25zdF9jb2xvcjsKICB9IHZpZGVvX3Byb2dyZXNzaXZlOwogfTsKCiB1bmlvbiBs YXJnZV9pbnRlZ2VyIHBhZ2VfdGFibGVfYmFzZTsKCiB1aW50OF90IHZtaWQ7Cn07CgpzdHJ1Y3Qg ZGNfc2l6ZSB7CiBpbnQgd2lkdGg7CiBpbnQgaGVpZ2h0Owp9OwoKc3RydWN0IHJlY3QgewogaW50 IHg7CiBpbnQgeTsKIGludCB3aWR0aDsKIGludCBoZWlnaHQ7Cn07CgpzdHJ1Y3QgcGxhbmVfc2l6 ZSB7CgoKCgogaW50IHN1cmZhY2VfcGl0Y2g7CiBpbnQgY2hyb21hX3BpdGNoOwogc3RydWN0IHJl Y3Qgc3VyZmFjZV9zaXplOwogc3RydWN0IHJlY3QgY2hyb21hX3NpemU7Cn07CgpzdHJ1Y3QgZGNf cGxhbmVfZGNjX3BhcmFtIHsKIGJvb2wgZW5hYmxlOwoKIGludCBtZXRhX3BpdGNoOwogYm9vbCBp bmRlcGVuZGVudF82NGJfYmxrczsKCiBpbnQgbWV0YV9waXRjaF9jOwogYm9vbCBpbmRlcGVuZGVu dF82NGJfYmxrc19jOwp9OwoKCmVudW0gc3VyZmFjZV9waXhlbF9mb3JtYXQgewogU1VSRkFDRV9Q SVhFTF9GT1JNQVRfR1JQSF9CRUdJTiA9IDAsCgogU1VSRkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9Q QUxFVEFfMjU2X0NPTE9SUyA9CiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9CRUdJTiwKCiBT VVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX0FSR0IxNTU1LAoKIFNVUkZBQ0VfUElYRUxfRk9STUFU X0dSUEhfUkdCNTY1LAoKIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQVJHQjg4ODgsCgogU1VS RkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9BQkdSODg4OCwKCiBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9H UlBIX0FSR0IyMTAxMDEwLAoKIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQUJHUjIxMDEwMTAs CgoKCiBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX0FCR1IyMTAxMDEwX1hSX0JJQVMsCgogU1VS RkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9BUkdCMTYxNjE2MTYsCgogU1VSRkFDRV9QSVhFTF9GT1JN QVRfR1JQSF9BUkdCMTYxNjE2MTZGLAoKIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQUJHUjE2 MTYxNjE2RiwKCiBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX1JHQjExMTExMF9GSVgsCiBTVVJG QUNFX1BJWEVMX0ZPUk1BVF9HUlBIX0JHUjEwMTExMV9GSVgsCiBTVVJGQUNFX1BJWEVMX0ZPUk1B VF9HUlBIX1JHQjExMTExMF9GTE9BVCwKIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQkdSMTAx MTExX0ZMT0FULAogU1VSRkFDRV9QSVhFTF9GT1JNQVRfVklERU9fQkVHSU4sCiBTVVJGQUNFX1BJ WEVMX0ZPUk1BVF9WSURFT180MjBfWUNiQ3IgPQogIFNVUkZBQ0VfUElYRUxfRk9STUFUX1ZJREVP X0JFR0lOLAogU1VSRkFDRV9QSVhFTF9GT1JNQVRfVklERU9fNDIwX1lDckNiLAogU1VSRkFDRV9Q SVhFTF9GT1JNQVRfVklERU9fNDIwXzEwYnBjX1lDYkNyLAogU1VSRkFDRV9QSVhFTF9GT1JNQVRf VklERU9fNDIwXzEwYnBjX1lDckNiLAogIFNVUkZBQ0VfUElYRUxfRk9STUFUX1NVQlNBTVBMRV9F TkQsCiBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9WSURFT19BQ3JZQ2IyMTAxMDEwLAogU1VSRkFDRV9Q SVhFTF9GT1JNQVRfVklERU9fQ3JZQ2JBMTAxMDEwMiwKIFNVUkZBQ0VfUElYRUxfRk9STUFUX1ZJ REVPX0FZQ3JDYjg4ODgsCiBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9JTlZBTElECgoKfTsKCgoKCmVu dW0gcGl4ZWxfZm9ybWF0IHsKCiBQSVhFTF9GT1JNQVRfVU5JTklUSUFMSVpFRCwKIFBJWEVMX0ZP Uk1BVF9JTkRFWDgsCiBQSVhFTF9GT1JNQVRfUkdCNTY1LAogUElYRUxfRk9STUFUX0FSR0I4ODg4 LAogUElYRUxfRk9STUFUX0FSR0IyMTAxMDEwLAogUElYRUxfRk9STUFUX0FSR0IyMTAxMDEwX1hS QklBUywKIFBJWEVMX0ZPUk1BVF9GUDE2LAoKIFBJWEVMX0ZPUk1BVF80MjBCUFA4LAogUElYRUxf Rk9STUFUXzQyMEJQUDEwLAoKIFBJWEVMX0ZPUk1BVF9JTlZBTElELAoKIFBJWEVMX0ZPUk1BVF9H UlBIX0JFR0lOID0gUElYRUxfRk9STUFUX0lOREVYOCwKIFBJWEVMX0ZPUk1BVF9HUlBIX0VORCA9 IFBJWEVMX0ZPUk1BVF9GUDE2LAogUElYRUxfRk9STUFUX1ZJREVPX0JFR0lOID0gUElYRUxfRk9S TUFUXzQyMEJQUDgsCiBQSVhFTF9GT1JNQVRfVklERU9fRU5EID0gUElYRUxfRk9STUFUXzQyMEJQ UDEwLAogUElYRUxfRk9STUFUX1VOS05PV04KfTsKCmVudW0gdGlsZV9zcGxpdF92YWx1ZXMgewog RENfRElTUExBWV9NSUNST19USUxJTkcgPSAweDAsCiBEQ19USElOX01JQ1JPX1RJTElORyA9IDB4 MSwKIERDX0RFUFRIX01JQ1JPX1RJTElORyA9IDB4MiwKIERDX1JPVEFURURfTUlDUk9fVElMSU5H ID0gMHgzLAp9OwoKZW51bSB0cmlwbGVCdWZmZXJfZW5hYmxlIHsKIERDX1RSSVBMRUJVRkZFUl9E SVNBQkxFID0gMHgwLAogRENfVFJJUExFQlVGRkVSX0VOQUJMRSA9IDB4MSwKfTsKCgoKCmVudW0g YXJyYXlfbW9kZV92YWx1ZXMgewogRENfQVJSQVlfTElORUFSX0dFTkVSQUwgPSAwLAogRENfQVJS QVlfTElORUFSX0FMTElHTkVELAogRENfQVJSQVlfMURfVElMRURfVEhJTjEsCiBEQ19BUlJBWV8x RF9USUxFRF9USElDSywKIERDX0FSUkFZXzJEX1RJTEVEX1RISU4xLAogRENfQVJSQVlfUFJUX1RJ TEVEX1RISU4xLAogRENfQVJSQVlfUFJUXzJEX1RJTEVEX1RISU4xLAogRENfQVJSQVlfMkRfVElM RURfVEhJQ0ssCiBEQ19BUlJBWV8yRF9USUxFRF9YX1RISUNLLAogRENfQVJSQVlfUFJUX1RJTEVE X1RISUNLLAogRENfQVJSQVlfUFJUXzJEX1RJTEVEX1RISUNLLAogRENfQVJSQVlfUFJUXzNEX1RJ TEVEX1RISU4xLAogRENfQVJSQVlfM0RfVElMRURfVEhJTjEsCiBEQ19BUlJBWV8zRF9USUxFRF9U SElDSywKIERDX0FSUkFZXzNEX1RJTEVEX1hfVEhJQ0ssCiBEQ19BUlJBWV9QUlRfM0RfVElMRURf VEhJQ0ssCn07CgplbnVtIHRpbGVfbW9kZV92YWx1ZXMgewogRENfQUREUl9TVVJGX01JQ1JPX1RJ TElOR19ESVNQTEFZID0gMHgwLAogRENfQUREUl9TVVJGX01JQ1JPX1RJTElOR19OT05fRElTUExB WSA9IDB4MSwKfTsKCmVudW0gc3dpenpsZV9tb2RlX3ZhbHVlcyB7CiBEQ19TV19MSU5FQVIgPSAw LAogRENfU1dfMjU2Ql9TID0gMSwKIERDX1NXXzI1Nl9EID0gMiwKIERDX1NXXzI1Nl9SID0gMywK IERDX1NXXzRLQl9TID0gNSwKIERDX1NXXzRLQl9EID0gNiwKIERDX1NXXzRLQl9SID0gNywKIERD X1NXXzY0S0JfUyA9IDksCiBEQ19TV182NEtCX0QgPSAxMCwKIERDX1NXXzY0S0JfUiA9IDExLAog RENfU1dfVkFSX1MgPSAxMywKIERDX1NXX1ZBUl9EID0gMTQsCiBEQ19TV19WQVJfUiA9IDE1LAog RENfU1dfNjRLQl9TX1QgPSAxNywKIERDX1NXXzY0S0JfRF9UID0gMTgsCiBEQ19TV180S0JfU19Y ID0gMjEsCiBEQ19TV180S0JfRF9YID0gMjIsCiBEQ19TV180S0JfUl9YID0gMjMsCiBEQ19TV182 NEtCX1NfWCA9IDI1LAogRENfU1dfNjRLQl9EX1ggPSAyNiwKIERDX1NXXzY0S0JfUl9YID0gMjcs CiBEQ19TV19WQVJfU19YID0gMjksCiBEQ19TV19WQVJfRF9YID0gMzAsCiBEQ19TV19WQVJfUl9Y ID0gMzEsCiBEQ19TV19NQVggPSAzMiwKIERDX1NXX1VOS05PV04gPSBEQ19TV19NQVgKfTsKCnVu aW9uIGRjX3RpbGluZ19pbmZvIHsKCiBzdHJ1Y3QgewoKCgoKCiAgdW5zaWduZWQgaW50IG51bV9i YW5rczsKCgoKCgogIHVuc2lnbmVkIGludCBiYW5rX3dpZHRoOwogIHVuc2lnbmVkIGludCBiYW5r X3dpZHRoX2M7CgoKCgoKICB1bnNpZ25lZCBpbnQgYmFua19oZWlnaHQ7CiAgdW5zaWduZWQgaW50 IGJhbmtfaGVpZ2h0X2M7CgoKCiAgdW5zaWduZWQgaW50IHRpbGVfYXNwZWN0OwogIHVuc2lnbmVk IGludCB0aWxlX2FzcGVjdF9jOwojIDMxNyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2RjX2h3X3R5cGVzLmgiCiAgZW51bSB0aWxlX3NwbGl0X3ZhbHVlcyB0aWxl X3NwbGl0OwogIGVudW0gdGlsZV9zcGxpdF92YWx1ZXMgdGlsZV9zcGxpdF9jOwoKCgoKCgogIGVu dW0gdGlsZV9tb2RlX3ZhbHVlcyB0aWxlX21vZGU7CiAgZW51bSB0aWxlX21vZGVfdmFsdWVzIHRp bGVfbW9kZV9jOwoKCgoKCiAgdW5zaWduZWQgaW50IHBpcGVfY29uZmlnOwojIDM0MSAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2h3X3R5cGVzLmgiCiAgZW51 bSBhcnJheV9tb2RlX3ZhbHVlcyBhcnJheV9tb2RlOwogfSBnZng4OwoKIHN0cnVjdCB7CiAgZW51 bSBzd2l6emxlX21vZGVfdmFsdWVzIHN3aXp6bGU7CiAgdW5zaWduZWQgaW50IG51bV9waXBlczsK ICB1bnNpZ25lZCBpbnQgbWF4X2NvbXByZXNzZWRfZnJhZ3M7CiAgdW5zaWduZWQgaW50IHBpcGVf aW50ZXJsZWF2ZTsKCiAgdW5zaWduZWQgaW50IG51bV9iYW5rczsKICB1bnNpZ25lZCBpbnQgbnVt X3NoYWRlcl9lbmdpbmVzOwogIHVuc2lnbmVkIGludCBudW1fcmJfcGVyX3NlOwogIGJvb2wgc2hh ZGVyRW5hYmxlOwoKICBib29sIG1ldGFfbGluZWFyOwogIGJvb2wgcmJfYWxpZ25lZDsKICBib29s IHBpcGVfYWxpZ25lZDsKIH0gZ2Z4OTsKfTsKCgplbnVtIGRjX3JvdGF0aW9uX2FuZ2xlIHsKIFJP VEFUSU9OX0FOR0xFXzAgPSAwLAogUk9UQVRJT05fQU5HTEVfOTAsCiBST1RBVElPTl9BTkdMRV8x ODAsCiBST1RBVElPTl9BTkdMRV8yNzAsCiBST1RBVElPTl9BTkdMRV9DT1VOVAp9OwoKZW51bSBk Y19zY2FuX2RpcmVjdGlvbiB7CiBTQ0FOX0RJUkVDVElPTl9VTktOT1dOID0gMCwKIFNDQU5fRElS RUNUSU9OX0hPUklaT05UQUwgPSAxLAogU0NBTl9ESVJFQ1RJT05fVkVSVElDQUwgPSAyLAp9OwoK c3RydWN0IGRjX2N1cnNvcl9wb3NpdGlvbiB7CiB1aW50MzJfdCB4OwogdWludDMyX3QgeTsKCiB1 aW50MzJfdCB4X2hvdHNwb3Q7CiB1aW50MzJfdCB5X2hvdHNwb3Q7CgoKCgogYm9vbCBlbmFibGU7 Cgp9OwoKc3RydWN0IGRjX2N1cnNvcl9taV9wYXJhbSB7CiB1bnNpZ25lZCBpbnQgcGl4ZWxfY2xr X2toejsKIHVuc2lnbmVkIGludCByZWZfY2xrX2toejsKIHN0cnVjdCByZWN0IHZpZXdwb3J0Owog c3RydWN0IGZpeGVkMzFfMzIgaF9zY2FsZV9yYXRpbzsKIHN0cnVjdCBmaXhlZDMxXzMyIHZfc2Nh bGVfcmF0aW87CiBlbnVtIGRjX3JvdGF0aW9uX2FuZ2xlIHJvdGF0aW9uOwogYm9vbCBtaXJyb3I7 Cn07CgoKCmVudW0gewogR0FNTUFfUkdCXzI1Nl9FTlRSSUVTID0gMjU2LAogR0FNTUFfUkdCX0ZM T0FUXzEwMjRfRU5UUklFUyA9IDEwMjQsCiBHQU1NQV9DU19URk1fMURfRU5UUklFUyA9IDQwOTYs CiBHQU1NQV9DVVNUT01fRU5UUklFUyA9IDQwOTYsCiBHQU1NQV9NQVhfRU5UUklFUyA9IDQwOTYK fTsKCmVudW0gZGNfZ2FtbWFfdHlwZSB7CiBHQU1NQV9SR0JfMjU2ID0gMSwKIEdBTU1BX1JHQl9G TE9BVF8xMDI0ID0gMiwKIEdBTU1BX0NTX1RGTV8xRCA9IDMsCiBHQU1NQV9DVVNUT00gPSA0LAp9 OwoKc3RydWN0IGRjX2NzY190cmFuc2Zvcm0gewogdWludDE2X3QgbWF0cml4WzEyXTsKIGJvb2wg ZW5hYmxlX2FkanVzdG1lbnQ7Cn07CgpzdHJ1Y3QgZGNfcmdiX2ZpeGVkIHsKIHN0cnVjdCBmaXhl ZDMxXzMyIHJlZDsKIHN0cnVjdCBmaXhlZDMxXzMyIGdyZWVuOwogc3RydWN0IGZpeGVkMzFfMzIg Ymx1ZTsKfTsKCnN0cnVjdCBkY19nYW1tYSB7CiBzdHJ1Y3Qga3JlZiByZWZjb3VudDsKIGVudW0g ZGNfZ2FtbWFfdHlwZSB0eXBlOwogdW5zaWduZWQgaW50IG51bV9lbnRyaWVzOwoKIHN0cnVjdCBk Y19nYW1tYV9lbnRyaWVzIHsKICBzdHJ1Y3QgZml4ZWQzMV8zMiByZWRbR0FNTUFfTUFYX0VOVFJJ RVNdOwogIHN0cnVjdCBmaXhlZDMxXzMyIGdyZWVuW0dBTU1BX01BWF9FTlRSSUVTXTsKICBzdHJ1 Y3QgZml4ZWQzMV8zMiBibHVlW0dBTU1BX01BWF9FTlRSSUVTXTsKIH0gZW50cmllczsKCgogc3Ry dWN0IGRjX2NvbnRleHQgKmN0eDsKCgoKCiBib29sIGlzX2lkZW50aXR5Owp9OwojIDQ1NiAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2h3X3R5cGVzLmgiCmVu dW0gZGNfY3Vyc29yX2NvbG9yX2Zvcm1hdCB7CiBDVVJTT1JfTU9ERV9NT05PLAogQ1VSU09SX01P REVfQ09MT1JfMUJJVF9BTkQsCiBDVVJTT1JfTU9ERV9DT0xPUl9QUkVfTVVMVElQTElFRF9BTFBI QSwKIENVUlNPUl9NT0RFX0NPTE9SX1VOX1BSRV9NVUxUSVBMSUVEX0FMUEhBLAogQ1VSU09SX01P REVfQ09MT1JfNjRCSVRfRlBfUFJFX01VTFRJUExJRUQsCiBDVVJTT1JfTU9ERV9DT0xPUl82NEJJ VF9GUF9VTl9QUkVfTVVMVElQTElFRAp9OwoKCgoKCgoKdW5pb24gZGNfY3Vyc29yX2F0dHJpYnV0 ZV9mbGFncyB7CiBzdHJ1Y3QgewogIHVpbnQzMl90IEVOQUJMRV9NQUdOSUZJQ0FUSU9OOjE7CiAg dWludDMyX3QgSU5WRVJTRV9UUkFOU1BBUkVOVF9DTEFNUElORzoxOwogIHVpbnQzMl90IEhPUkla T05UQUxfTUlSUk9SOjE7CiAgdWludDMyX3QgVkVSVElDQUxfTUlSUk9SOjE7CiAgdWludDMyX3Qg SU5WRVJUX1BJWEVMX0RBVEE6MTsKICB1aW50MzJfdCBaRVJPX0VYUEFOU0lPTjoxOwogIHVpbnQz Ml90IE1JTl9NQVhfSU5WRVJUOjE7CiAgdWludDMyX3QgRU5BQkxFX0NVUlNPUl9ERUdBTU1BOjE7 CiAgdWludDMyX3QgUkVTRVJWRUQ6MjQ7CiB9IGJpdHM7CiB1aW50MzJfdCB2YWx1ZTsKfTsKCnN0 cnVjdCBkY19jdXJzb3JfYXR0cmlidXRlcyB7CiB1bmlvbiBsYXJnZV9pbnRlZ2VyIGFkZHJlc3M7 CiB1aW50MzJfdCBwaXRjaDsKCgogdWludDMyX3Qgd2lkdGg7CiB1aW50MzJfdCBoZWlnaHQ7Cgog ZW51bSBkY19jdXJzb3JfY29sb3JfZm9ybWF0IGNvbG9yX2Zvcm1hdDsKIHVpbnQzMl90IHNkcl93 aGl0ZV9sZXZlbDsKCgogZW51bSBkY19yb3RhdGlvbl9hbmdsZSByb3RhdGlvbl9hbmdsZTsKCiB1 bmlvbiBkY19jdXJzb3JfYXR0cmlidXRlX2ZsYWdzIGF0dHJpYnV0ZV9mbGFnczsKfTsKCnN0cnVj dCBkcHBfY3Vyc29yX2F0dHJpYnV0ZXMgewogaW50IGJpYXM7CiBpbnQgc2NhbGU7Cn07CgoKCmVu dW0gZGNfY29sb3Jfc3BhY2UgewogQ09MT1JfU1BBQ0VfVU5LTk9XTiwKIENPTE9SX1NQQUNFX1NS R0IsCiBDT0xPUl9TUEFDRV9YUl9SR0IsCiBDT0xPUl9TUEFDRV9TUkdCX0xJTUlURUQsCiBDT0xP Ul9TUEFDRV9NU1JFRl9TQ1JHQiwKIENPTE9SX1NQQUNFX1lDQkNSNjAxLAogQ09MT1JfU1BBQ0Vf WUNCQ1I3MDksCiBDT0xPUl9TUEFDRV9YVl9ZQ0NfNzA5LAogQ09MT1JfU1BBQ0VfWFZfWUNDXzYw MSwKIENPTE9SX1NQQUNFX1lDQkNSNjAxX0xJTUlURUQsCiBDT0xPUl9TUEFDRV9ZQ0JDUjcwOV9M SU1JVEVELAogQ09MT1JfU1BBQ0VfMjAyMF9SR0JfRlVMTFJBTkdFLAogQ09MT1JfU1BBQ0VfMjAy MF9SR0JfTElNSVRFRFJBTkdFLAogQ09MT1JfU1BBQ0VfMjAyMF9ZQ0JDUiwKIENPTE9SX1NQQUNF X0FET0JFUkdCLAogQ09MT1JfU1BBQ0VfRENJUDMsCiBDT0xPUl9TUEFDRV9ESVNQTEFZTkFUSVZF LAogQ09MT1JfU1BBQ0VfRE9MQllWSVNJT04sCiBDT0xPUl9TUEFDRV9BUFBDVFJMLAogQ09MT1Jf U1BBQ0VfQ1VTVE9NUE9JTlRTLAogQ09MT1JfU1BBQ0VfWUNCQ1I3MDlfQkxBQ0ssCn07CgplbnVt IGRjX2RpdGhlcl9vcHRpb24gewogRElUSEVSX09QVElPTl9ERUZBVUxULAogRElUSEVSX09QVElP Tl9ESVNBQkxFLAogRElUSEVSX09QVElPTl9GTTYsCiBESVRIRVJfT1BUSU9OX0ZNOCwKIERJVEhF Ul9PUFRJT05fRk0xMCwKIERJVEhFUl9PUFRJT05fU1BBVElBTDZfRlJBTUVfUkFORE9NLAogRElU SEVSX09QVElPTl9TUEFUSUFMOF9GUkFNRV9SQU5ET00sCiBESVRIRVJfT1BUSU9OX1NQQVRJQUwx MF9GUkFNRV9SQU5ET00sCiBESVRIRVJfT1BUSU9OX1NQQVRJQUw2LAogRElUSEVSX09QVElPTl9T UEFUSUFMOCwKIERJVEhFUl9PUFRJT05fU1BBVElBTDEwLAogRElUSEVSX09QVElPTl9UUlVONiwK IERJVEhFUl9PUFRJT05fVFJVTjgsCiBESVRIRVJfT1BUSU9OX1RSVU4xMCwKIERJVEhFUl9PUFRJ T05fVFJVTjEwX1NQQVRJQUw4LAogRElUSEVSX09QVElPTl9UUlVOMTBfU1BBVElBTDYsCiBESVRI RVJfT1BUSU9OX1RSVU4xMF9GTTgsCiBESVRIRVJfT1BUSU9OX1RSVU4xMF9GTTYsCiBESVRIRVJf T1BUSU9OX1RSVU4xMF9TUEFUSUFMOF9GTTYsCiBESVRIRVJfT1BUSU9OX1NQQVRJQUwxMF9GTTgs CiBESVRIRVJfT1BUSU9OX1NQQVRJQUwxMF9GTTYsCiBESVRIRVJfT1BUSU9OX1RSVU44X1NQQVRJ QUw2LAogRElUSEVSX09QVElPTl9UUlVOOF9GTTYsCiBESVRIRVJfT1BUSU9OX1NQQVRJQUw4X0ZN NiwKIERJVEhFUl9PUFRJT05fTUFYID0gRElUSEVSX09QVElPTl9TUEFUSUFMOF9GTTYsCiBESVRI RVJfT1BUSU9OX0lOVkFMSUQKfTsKCmVudW0gZGNfcXVhbnRpemF0aW9uX3JhbmdlIHsKIFFVQU5U SVpBVElPTl9SQU5HRV9VTktOT1dOLAogUVVBTlRJWkFUSU9OX1JBTkdFX0ZVTEwsCiBRVUFOVEla QVRJT05fUkFOR0VfTElNSVRFRAp9OwoKZW51bSBkY19keW5hbWljX2V4cGFuc2lvbiB7CiBEWU5f RVhQQU5TSU9OX0FVVE8sCiBEWU5fRVhQQU5TSU9OX0RJU0FCTEUKfTsKCgoKCnN0cnVjdCBzY2Fs aW5nX3RhcHMgewogdWludDMyX3Qgdl90YXBzOwogdWludDMyX3QgaF90YXBzOwogdWludDMyX3Qg dl90YXBzX2M7CiB1aW50MzJfdCBoX3RhcHNfYzsKIGJvb2wgaW50ZWdlcl9zY2FsaW5nOwp9OwoK ZW51bSBkY190aW1pbmdfc3RhbmRhcmQgewogRENfVElNSU5HX1NUQU5EQVJEX1VOREVGSU5FRCwK IERDX1RJTUlOR19TVEFOREFSRF9ETVQsCiBEQ19USU1JTkdfU1RBTkRBUkRfR1RGLAogRENfVElN SU5HX1NUQU5EQVJEX0NWVCwKIERDX1RJTUlOR19TVEFOREFSRF9DVlRfUkIsCiBEQ19USU1JTkdf U1RBTkRBUkRfQ0VBNzcwLAogRENfVElNSU5HX1NUQU5EQVJEX0NFQTg2MSwKIERDX1RJTUlOR19T VEFOREFSRF9IRE1JLAogRENfVElNSU5HX1NUQU5EQVJEX1RWX05UU0MsCiBEQ19USU1JTkdfU1RB TkRBUkRfVFZfTlRTQ19KLAogRENfVElNSU5HX1NUQU5EQVJEX1RWX1BBTCwKIERDX1RJTUlOR19T VEFOREFSRF9UVl9QQUxfTSwKIERDX1RJTUlOR19TVEFOREFSRF9UVl9QQUxfQ04sCiBEQ19USU1J TkdfU1RBTkRBUkRfVFZfU0VDQU0sCiBEQ19USU1JTkdfU1RBTkRBUkRfRVhQTElDSVQsCgogRENf VElNSU5HX1NUQU5EQVJEX1VTRVJfT1ZFUlJJREUsCgogRENfVElNSU5HX1NUQU5EQVJEX01BWAp9 OwoKZW51bSBkY19jb2xvcl9kZXB0aCB7CiBDT0xPUl9ERVBUSF9VTkRFRklORUQsCiBDT0xPUl9E RVBUSF82NjYsCiBDT0xPUl9ERVBUSF84ODgsCiBDT0xPUl9ERVBUSF8xMDEwMTAsCiBDT0xPUl9E RVBUSF8xMjEyMTIsCiBDT0xPUl9ERVBUSF8xNDE0MTQsCiBDT0xPUl9ERVBUSF8xNjE2MTYsCiBD T0xPUl9ERVBUSF85OTksCiBDT0xPUl9ERVBUSF8xMTExMTEsCiBDT0xPUl9ERVBUSF9DT1VOVAp9 OwoKZW51bSBkY19waXhlbF9lbmNvZGluZyB7CiBQSVhFTF9FTkNPRElOR19VTkRFRklORUQsCiBQ SVhFTF9FTkNPRElOR19SR0IsCiBQSVhFTF9FTkNPRElOR19ZQ0JDUjQyMiwKIFBJWEVMX0VOQ09E SU5HX1lDQkNSNDQ0LAogUElYRUxfRU5DT0RJTkdfWUNCQ1I0MjAsCiBQSVhFTF9FTkNPRElOR19D T1VOVAp9OwoKZW51bSBkY19hc3BlY3RfcmF0aW8gewogQVNQRUNUX1JBVElPX05PX0RBVEEsCiBB U1BFQ1RfUkFUSU9fNF8zLAogQVNQRUNUX1JBVElPXzE2XzksCiBBU1BFQ1RfUkFUSU9fNjRfMjcs CiBBU1BFQ1RfUkFUSU9fMjU2XzEzNSwKIEFTUEVDVF9SQVRJT19GVVRVUkUKfTsKCmVudW0gc2Nh bm5pbmdfdHlwZSB7CiBTQ0FOTklOR19UWVBFX05PREFUQSA9IDAsCiBTQ0FOTklOR19UWVBFX09W RVJTQ0FOLAogU0NBTk5JTkdfVFlQRV9VTkRFUlNDQU4sCiBTQ0FOTklOR19UWVBFX0ZVVFVSRSwK IFNDQU5OSU5HX1RZUEVfVU5ERUZJTkVECn07CgpzdHJ1Y3QgZGNfY3J0Y190aW1pbmdfZmxhZ3Mg ewogdWludDMyX3QgSU5URVJMQUNFIDoxOwogdWludDMyX3QgSFNZTkNfUE9TSVRJVkVfUE9MQVJJ VFkgOjE7CgogdWludDMyX3QgVlNZTkNfUE9TSVRJVkVfUE9MQVJJVFkgOjE7CgoKIHVpbnQzMl90 IEhPUlpfQ09VTlRfQllfVFdPOjE7CgogdWludDMyX3QgRVhDTFVTSVZFXzNEIDoxOwoKCiB1aW50 MzJfdCBSSUdIVF9FWUVfM0RfUE9MQVJJVFkgOjE7CgogdWludDMyX3QgU1VCX1NBTVBMRV8zRCA6 MTsKCiB1aW50MzJfdCBVU0VfSU5fM0RfVklFV19PTkxZIDoxOwoKIHVpbnQzMl90IFNURVJFT18z RF9QUkVGRVJFTkNFIDoxOwoKIHVpbnQzMl90IFlfT05MWSA6MTsKCiB1aW50MzJfdCBZQ0JDUjQy MCA6MTsKIHVpbnQzMl90IERURF9DT1VOVEVSIDo1OwoKIHVpbnQzMl90IEZPUkNFX0hEUiA6MTsK CgoKIHVpbnQzMl90IExURV8zNDBNQ1NDX1NDUkFNQkxFOjE7CgogdWludDMyX3QgRFNDIDogMTsK fTsKCmVudW0gZGNfdGltaW5nXzNkX2Zvcm1hdCB7CiBUSU1JTkdfM0RfRk9STUFUX05PTkUsCiBU SU1JTkdfM0RfRk9STUFUX0ZSQU1FX0FMVEVSTkFURSwKIFRJTUlOR18zRF9GT1JNQVRfSU5CQU5E X0ZBLAogVElNSU5HXzNEX0ZPUk1BVF9EUF9IRE1JX0lOQkFORF9GQSwKCiBUSU1JTkdfM0RfRk9S TUFUX1NJREVCQU5EX0ZBLAogVElNSU5HXzNEX0ZPUk1BVF9IV19GUkFNRV9QQUNLSU5HLAogVElN SU5HXzNEX0ZPUk1BVF9TV19GUkFNRV9QQUNLSU5HLAogVElNSU5HXzNEX0ZPUk1BVF9ST1dfSU5U RVJMRUFWRSwKIFRJTUlOR18zRF9GT1JNQVRfQ09MVU1OX0lOVEVSTEVBVkUsCiBUSU1JTkdfM0Rf Rk9STUFUX1BJWEVMX0lOVEVSTEVBVkUsCiBUSU1JTkdfM0RfRk9STUFUX1NJREVfQllfU0lERSwK IFRJTUlOR18zRF9GT1JNQVRfVE9QX0FORF9CT1RUT00sCiBUSU1JTkdfM0RfRk9STUFUX1NCU19T V19QQUNLRUQsCgogVElNSU5HXzNEX0ZPUk1BVF9UQl9TV19QQUNLRUQsCgoKIFRJTUlOR18zRF9G T1JNQVRfTUFYLAp9OwoKc3RydWN0IGRjX2RzY19jb25maWcgewogdWludDMyX3QgbnVtX3NsaWNl c19oOwogdWludDMyX3QgbnVtX3NsaWNlc192OwogdWludDMyX3QgYml0c19wZXJfcGl4ZWw7CiBi b29sIGJsb2NrX3ByZWRfZW5hYmxlOwogdWludDMyX3QgbGluZWJ1Zl9kZXB0aDsKIHVpbnQzMl90 IHZlcnNpb25fbWlub3I7CiBib29sIHljYmNyNDIyX3NpbXBsZTsKIGludDMyX3QgcmNfYnVmZmVy X3NpemU7Cn07CnN0cnVjdCBkY19jcnRjX3RpbWluZyB7CiB1aW50MzJfdCBoX3RvdGFsOwogdWlu dDMyX3QgaF9ib3JkZXJfbGVmdDsKIHVpbnQzMl90IGhfYWRkcmVzc2FibGU7CiB1aW50MzJfdCBo X2JvcmRlcl9yaWdodDsKIHVpbnQzMl90IGhfZnJvbnRfcG9yY2g7CiB1aW50MzJfdCBoX3N5bmNf d2lkdGg7CgogdWludDMyX3Qgdl90b3RhbDsKIHVpbnQzMl90IHZfYm9yZGVyX3RvcDsKIHVpbnQz Ml90IHZfYWRkcmVzc2FibGU7CiB1aW50MzJfdCB2X2JvcmRlcl9ib3R0b207CiB1aW50MzJfdCB2 X2Zyb250X3BvcmNoOwogdWludDMyX3Qgdl9zeW5jX3dpZHRoOwoKIHVpbnQzMl90IHBpeF9jbGtf MTAwaHo7CgogdWludDMyX3QgdmljOwogdWludDMyX3QgaGRtaV92aWM7CiBlbnVtIGRjX3RpbWlu Z18zZF9mb3JtYXQgdGltaW5nXzNkX2Zvcm1hdDsKIGVudW0gZGNfY29sb3JfZGVwdGggZGlzcGxh eV9jb2xvcl9kZXB0aDsKIGVudW0gZGNfcGl4ZWxfZW5jb2RpbmcgcGl4ZWxfZW5jb2Rpbmc7CiBl bnVtIGRjX2FzcGVjdF9yYXRpbyBhc3BlY3RfcmF0aW87CiBlbnVtIHNjYW5uaW5nX3R5cGUgc2Nh bl90eXBlOwoKIHN0cnVjdCBkY19jcnRjX3RpbWluZ19mbGFncyBmbGFnczsKIHN0cnVjdCBkY19k c2NfY29uZmlnIGRzY19jZmc7Cn07CgplbnVtIHRyaWdnZXJfZGVsYXkgewogVFJJR0dFUl9ERUxB WV9ORVhUX1BJWEVMID0gMCwKIFRSSUdHRVJfREVMQVlfTkVYVF9MSU5FLAp9OwoKZW51bSBjcnRj X2V2ZW50IHsKIENSVENfRVZFTlRfVlNZTkNfUklTSU5HID0gMCwKIENSVENfRVZFTlRfVlNZTkNf RkFMTElORwp9OwoKc3RydWN0IGNydGNfdHJpZ2dlcl9pbmZvIHsKIGJvb2wgZW5hYmxlZDsKIHN0 cnVjdCBkY19zdHJlYW1fc3RhdGUgKmV2ZW50X3NvdXJjZTsKIGVudW0gY3J0Y19ldmVudCBldmVu dDsKIGVudW0gdHJpZ2dlcl9kZWxheSBkZWxheTsKfTsKCnN0cnVjdCBkY19jcnRjX3RpbWluZ19h ZGp1c3QgewogdWludDMyX3Qgdl90b3RhbF9taW47CiB1aW50MzJfdCB2X3RvdGFsX21heDsKIHVp bnQzMl90IHZfdG90YWxfbWlkOwogdWludDMyX3Qgdl90b3RhbF9taWRfZnJhbWVfbnVtOwp9OwoK CgplbnVtIHZyYW1fdHlwZSB7CiBWSURFT19NRU1PUllfVFlQRV9HRERSNSA9IDIsCiBWSURFT19N RU1PUllfVFlQRV9ERFIzID0gMywKIFZJREVPX01FTU9SWV9UWVBFX0REUjQgPSA0LAogVklERU9f TUVNT1JZX1RZUEVfSEJNID0gNSwKIFZJREVPX01FTU9SWV9UWVBFX0dERFI2ID0gNiwKfTsKCmVu dW0gZHdiX2Nudl9vdXRfYnBjIHsKIERXQl9DTlZfT1VUX0JQQ184QlBDID0gMCwKIERXQl9DTlZf T1VUX0JQQ18xMEJQQyA9IDEsCn07CgplbnVtIGR3Yl9vdXRwdXRfZGVwdGggewogRFdCX09VVFBV VF9QSVhFTF9ERVBUSF84QlBDID0gMCwKIERXQl9PVVRQVVRfUElYRUxfREVQVEhfMTBCUEMgPSAx LAp9OwoKZW51bSBkd2JfY2FwdHVyZV9yYXRlIHsKIGR3Yl9jYXB0dXJlX3JhdGVfMCA9IDAsCiBk d2JfY2FwdHVyZV9yYXRlXzEgPSAxLAogZHdiX2NhcHR1cmVfcmF0ZV8yID0gMiwKIGR3Yl9jYXB0 dXJlX3JhdGVfMyA9IDMsCn07CgplbnVtIGR3Yl9zY2FsZXJfbW9kZSB7CiBkd2Jfc2NhbGVyX21v ZGVfYnlwYXNzNDQ0ID0gMCwKIGR3Yl9zY2FsZXJfbW9kZV9yZ2I0NDQgPSAxLAogZHdiX3NjYWxl cl9tb2RlX3l1djQ0NCA9IDIsCiBkd2Jfc2NhbGVyX21vZGVfeXV2NDIwID0gMwp9OwoKZW51bSBk d2Jfc3Vic2FtcGxlX3Bvc2l0aW9uIHsKIERXQl9JTlRFUlNUSVRJQUxfU1VCU0FNUExJTkcgPSAw LAogRFdCX0NPU0lURURfU1VCU0FNUExJTkcgPSAxCn07CgplbnVtIGR3Yl9zdGVyZW9fZXllX3Nl bGVjdCB7CiBEV0JfU1RFUkVPX0VZRV9MRUZUID0gMSwKIERXQl9TVEVSRU9fRVlFX1JJR0hUID0g MiwKfTsKCmVudW0gZHdiX3N0ZXJlb190eXBlIHsKIERXQl9TVEVSRU9fVFlQRV9GUkFNRV9QQUNL SU5HID0gMCwKIERXQl9TVEVSRU9fVFlQRV9GUkFNRV9TRVFVRU5USUFMID0gMywKfTsKCgoKc3Ry dWN0IG1jaWZfYnVmX3BhcmFtcyB7CiB1bnNpZ25lZCBsb25nIGxvbmcgbHVtYV9hZGRyZXNzWzRd OwogdW5zaWduZWQgbG9uZyBsb25nIGNocm9tYV9hZGRyZXNzWzRdOwogdW5zaWduZWQgaW50IGx1 bWFfcGl0Y2g7CiB1bnNpZ25lZCBpbnQgY2hyb21hX3BpdGNoOwogdW5zaWduZWQgaW50IHdhcm11 cF9waXRjaDsKIHVuc2lnbmVkIGludCBzd2xvY2s7Cn07CgoKCnN0cnVjdCB0Z19jb2xvciB7Cgog dWludDE2X3QgY29sb3Jfcl9jcjsKIHVpbnQxNl90IGNvbG9yX2dfeTsKIHVpbnQxNl90IGNvbG9y X2JfY2I7Cn07CiMgMzcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9kY190eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2luY2x1ZGUvZGFsX3R5cGVzLmgiIDEKIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZGFsX3R5cGVzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvc2lnbmFsX3R5cGVzLmgiIDEKIyAzMCAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZGFsX3R5cGVz LmgiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNf dHlwZXMuaCIgMQojIDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv aW5jbHVkZS9kYWxfdHlwZXMuaCIgMgoKc3RydWN0IGRhbF9sb2dnZXI7CnN0cnVjdCBkY19iaW9z OwoKZW51bSBkY2VfdmVyc2lvbiB7CiBEQ0VfVkVSU0lPTl9VTktOT1dOID0gKC0xKSwKIERDRV9W RVJTSU9OXzhfMCwKIERDRV9WRVJTSU9OXzhfMSwKIERDRV9WRVJTSU9OXzhfMywKIERDRV9WRVJT SU9OXzEwXzAsCiBEQ0VfVkVSU0lPTl8xMV8wLAogRENFX1ZFUlNJT05fMTFfMiwKIERDRV9WRVJT SU9OXzExXzIyLAogRENFX1ZFUlNJT05fMTJfMCwKIERDRV9WRVJTSU9OXzEyXzEsCiBEQ0VfVkVS U0lPTl9NQVgsCiBEQ05fVkVSU0lPTl8xXzAsCiBEQ05fVkVSU0lPTl8xXzAxLAogRENOX1ZFUlNJ T05fMl8wLAogRENOX1ZFUlNJT05fMl8xLAogRENOX1ZFUlNJT05fTUFYCn07CiMgMzggIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBlcy5oIiAyCiMgMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZ3JwaF9vYmpl Y3RfZGVmcy5oIiAxCiMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9pbmNsdWRlL2dycGhfb2JqZWN0X2RlZnMuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9pZC5oIiAxCiMgMzAgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2lk LmgiCmVudW0gb2JqZWN0X3R5cGUgewogT0JKRUNUX1RZUEVfVU5LTk9XTiA9IDAsCgoKIE9CSkVD VF9UWVBFX0dQVSwKIE9CSkVDVF9UWVBFX0VOQ09ERVIsCiBPQkpFQ1RfVFlQRV9DT05ORUNUT1Is CiBPQkpFQ1RfVFlQRV9ST1VURVIsCiBPQkpFQ1RfVFlQRV9HRU5FUklDLAoKCiBPQkpFQ1RfVFlQ RV9BVURJTywKIE9CSkVDVF9UWVBFX0NPTlRST0xMRVIsCiBPQkpFQ1RfVFlQRV9DTE9DS19TT1VS Q0UsCiBPQkpFQ1RfVFlQRV9FTkdJTkUsCgogT0JKRUNUX1RZUEVfQ09VTlQKfTsKCgplbnVtIG9i amVjdF9lbnVtX2lkIHsKIEVOVU1fSURfVU5LTk9XTiA9IDAsCiBFTlVNX0lEXzEsCiBFTlVNX0lE XzIsCiBFTlVNX0lEXzMsCiBFTlVNX0lEXzQsCiBFTlVNX0lEXzUsCiBFTlVNX0lEXzYsCiBFTlVN X0lEXzcsCgogRU5VTV9JRF9DT1VOVAp9OwoKCmVudW0gZ2VuZXJpY19pZCB7CiBHRU5FUklDX0lE X1VOS05PV04gPSAwLAogR0VORVJJQ19JRF9NWE1fT1BNLAogR0VORVJJQ19JRF9HTFNZTkMsCiBH RU5FUklDX0lEX1NURVJFTywKCiBHRU5FUklDX0lEX0NPVU5UCn07CgoKZW51bSBjb250cm9sbGVy X2lkIHsKIENPTlRST0xMRVJfSURfVU5ERUZJTkVEID0gMCwKIENPTlRST0xMRVJfSURfRDAsCiBD T05UUk9MTEVSX0lEX0QxLAogQ09OVFJPTExFUl9JRF9EMiwKIENPTlRST0xMRVJfSURfRDMsCiBD T05UUk9MTEVSX0lEX0Q0LAogQ09OVFJPTExFUl9JRF9ENSwKIENPTlRST0xMRVJfSURfVU5ERVJM QVkwLAogQ09OVFJPTExFUl9JRF9NQVggPSBDT05UUk9MTEVSX0lEX1VOREVSTEFZMAp9OwojIDkz ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29i amVjdF9pZC5oIgplbnVtIGNsb2NrX3NvdXJjZV9pZCB7CiBDTE9DS19TT1VSQ0VfSURfVU5ERUZJ TkVEID0gMCwKIENMT0NLX1NPVVJDRV9JRF9QTEwwLAogQ0xPQ0tfU09VUkNFX0lEX1BMTDEsCiBD TE9DS19TT1VSQ0VfSURfUExMMiwKIENMT0NLX1NPVVJDRV9JRF9FWFRFUk5BTCwKIENMT0NLX1NP VVJDRV9JRF9EQ1BMTCwKIENMT0NLX1NPVVJDRV9JRF9ERlMsCiBDTE9DS19TT1VSQ0VfSURfVkNF LAoKIENMT0NLX1NPVVJDRV9JRF9EUF9EVE8sCgogQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9QTEww LAogQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9QTEwxLAogQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9Q TEwyLAogQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9QTEwzLAogQ0xPQ0tfU09VUkNFX0NPTUJPX1BI WV9QTEw0LAogQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9QTEw1LAogQ0xPQ0tfU09VUkNFX0NPTUJP X0RJU1BMQVlfUExMMAp9OwoKCmVudW0gZW5jb2Rlcl9pZCB7CiBFTkNPREVSX0lEX1VOS05PV04g PSAwLAoKCiBFTkNPREVSX0lEX0lOVEVSTkFMX0xWRFMsCiBFTkNPREVSX0lEX0lOVEVSTkFMX1RN RFMxLAogRU5DT0RFUl9JRF9JTlRFUk5BTF9UTURTMiwKIEVOQ09ERVJfSURfSU5URVJOQUxfREFD MSwKIEVOQ09ERVJfSURfSU5URVJOQUxfREFDMiwKCgogRU5DT0RFUl9JRF9JTlRFUk5BTF9MVlRN MSwKIEVOQ09ERVJfSURfSU5URVJOQUxfSERNSSwKCgogRU5DT0RFUl9JRF9JTlRFUk5BTF9LTERT Q1BfVE1EUzEsCiBFTkNPREVSX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMxLAogRU5DT0RFUl9JRF9J TlRFUk5BTF9LTERTQ1BfREFDMiwKCiBFTkNPREVSX0lEX0VYVEVSTkFMX01WUFVfRlBHQSwKIEVO Q09ERVJfSURfSU5URVJOQUxfRERJLAogRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFksCiBFTkNP REVSX0lEX0lOVEVSTkFMX0tMRFNDUF9MVlRNQSwKIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZ MSwKIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMiwKIEVOQ09ERVJfSURfRVhURVJOQUxfTlVU TUVHLAogRU5DT0RFUl9JRF9FWFRFUk5BTF9UUkFWSVMsCgogRU5DT0RFUl9JRF9JTlRFUk5BTF9X SVJFTEVTUywKIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMywKIEVOQ09ERVJfSURfSU5URVJO QUxfVklSVFVBTCwKfTsKCgplbnVtIGNvbm5lY3Rvcl9pZCB7CiBDT05ORUNUT1JfSURfVU5LTk9X TiA9IDAsCiBDT05ORUNUT1JfSURfU0lOR0xFX0xJTktfRFZJSSA9IDEsCiBDT05ORUNUT1JfSURf RFVBTF9MSU5LX0RWSUkgPSAyLAogQ09OTkVDVE9SX0lEX1NJTkdMRV9MSU5LX0RWSUQgPSAzLAog Q09OTkVDVE9SX0lEX0RVQUxfTElOS19EVklEID0gNCwKIENPTk5FQ1RPUl9JRF9WR0EgPSA1LAog Q09OTkVDVE9SX0lEX0hETUlfVFlQRV9BID0gMTIsCiBDT05ORUNUT1JfSURfTFZEUyA9IDE0LAog Q09OTkVDVE9SX0lEX1BDSUUgPSAxNiwKIENPTk5FQ1RPUl9JRF9IQVJEQ09ERV9EVkkgPSAxOCwK IENPTk5FQ1RPUl9JRF9ESVNQTEFZX1BPUlQgPSAxOSwKIENPTk5FQ1RPUl9JRF9FRFAgPSAyMCwK IENPTk5FQ1RPUl9JRF9NWE0gPSAyMSwKIENPTk5FQ1RPUl9JRF9XSVJFTEVTUyA9IDIyLAogQ09O TkVDVE9SX0lEX01JUkFDQVNUID0gMjMsCgogQ09OTkVDVE9SX0lEX1ZJUlRVQUwgPSAxMDAKfTsK CgplbnVtIGF1ZGlvX2lkIHsKIEFVRElPX0lEX1VOS05PV04gPSAwLAogQVVESU9fSURfSU5URVJO QUxfQVpBTElBCn07CgoKZW51bSBlbmdpbmVfaWQgewogRU5HSU5FX0lEX0RJR0EsCiBFTkdJTkVf SURfRElHQiwKIEVOR0lORV9JRF9ESUdDLAogRU5HSU5FX0lEX0RJR0QsCiBFTkdJTkVfSURfRElH RSwKIEVOR0lORV9JRF9ESUdGLAogRU5HSU5FX0lEX0RJR0csCiBFTkdJTkVfSURfREFDQSwKIEVO R0lORV9JRF9EQUNCLAogRU5HSU5FX0lEX1ZDRSwKIEVOR0lORV9JRF9WSVJUVUFMLAoKIEVOR0lO RV9JRF9DT1VOVCwKIEVOR0lORV9JRF9VTktOT1dOID0gKC0xTCkKfTsKCmVudW0gdHJhbnNtaXR0 ZXJfY29sb3JfZGVwdGggewogVFJBTlNNSVRURVJfQ09MT1JfREVQVEhfMjQgPSAwLAogVFJBTlNN SVRURVJfQ09MT1JfREVQVEhfMzAsCiBUUkFOU01JVFRFUl9DT0xPUl9ERVBUSF8zNiwKIFRSQU5T TUlUVEVSX0NPTE9SX0RFUFRIXzQ4Cn07CgplbnVtIGRwX2FsdF9tb2RlIHsKIERQX0FsdF9tb2Rl X19Vbmtub3duID0gMCwKIERQX0FsdF9tb2RlX19Db25uZWN0LAogRFBfQWx0X21vZGVfX05vQ29u bmVjdCwKfTsKIyAyMjAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9p bmNsdWRlL2dycGhfb2JqZWN0X2lkLmgiCnN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgewogdWlu dDMyX3QgaWQ6ODsKIHVpbnQzMl90IGVudW1faWQ6NDsKIHVpbnQzMl90IHR5cGU6NDsKIHVpbnQz Ml90IHJlc2VydmVkOjE2Owp9OwoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGRhbF9ncmFw aGljc19vYmplY3RfaWRfaW5pdCgKIHVpbnQzMl90IGlkLAogZW51bSBvYmplY3RfZW51bV9pZCBl bnVtX2lkLAogZW51bSBvYmplY3RfdHlwZSB0eXBlKQp7CiBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0 X2lkIHJlc3VsdCA9IHsKICBpZCwgZW51bV9pZCwgdHlwZSwgMAogfTsKCiByZXR1cm4gcmVzdWx0 Owp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdWludDMyX3QgZGFsX2dyYXBoaWNzX29iamVjdF9pZF90b191aW50KAogc3RydWN0IGdy YXBoaWNzX29iamVjdF9pZCBpZCkKewogcmV0dXJuIGlkLmlkICsgKGlkLmVudW1faWQgPDwgMHg4 KSArIChpZC50eXBlIDw8IDB4Yyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGVudW0gY29udHJvbGxlcl9pZCBkYWxfZ3JhcGhpY3Nf b2JqZWN0X2lkX2dldF9jb250cm9sbGVyX2lkKAogc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBp ZCkKewogaWYgKGlkLnR5cGUgPT0gT0JKRUNUX1RZUEVfQ09OVFJPTExFUikKICByZXR1cm4gKGVu dW0gY29udHJvbGxlcl9pZCkgaWQuaWQ7CiByZXR1cm4gQ09OVFJPTExFUl9JRF9VTkRFRklORUQ7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGVudW0gY2xvY2tfc291cmNlX2lkIGRhbF9ncmFwaGljc19vYmplY3RfaWRfZ2V0X2Nsb2Nr X3NvdXJjZV9pZCgKIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgaWQpCnsKIGlmIChpZC50eXBl ID09IE9CSkVDVF9UWVBFX0NMT0NLX1NPVVJDRSkKICByZXR1cm4gKGVudW0gY2xvY2tfc291cmNl X2lkKSBpZC5pZDsKIHJldHVybiBDTE9DS19TT1VSQ0VfSURfVU5ERUZJTkVEOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBlbnVtIGVu Y29kZXJfaWQgZGFsX2dyYXBoaWNzX29iamVjdF9pZF9nZXRfZW5jb2Rlcl9pZCgKIHN0cnVjdCBn cmFwaGljc19vYmplY3RfaWQgaWQpCnsKIGlmIChpZC50eXBlID09IE9CSkVDVF9UWVBFX0VOQ09E RVIpCiAgcmV0dXJuIChlbnVtIGVuY29kZXJfaWQpIGlkLmlkOwogcmV0dXJuIEVOQ09ERVJfSURf VU5LTk9XTjsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgZW51bSBjb25uZWN0b3JfaWQgZGFsX2dyYXBoaWNzX29iamVjdF9pZF9nZXRf Y29ubmVjdG9yX2lkKAogc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBpZCkKewogaWYgKGlkLnR5 cGUgPT0gT0JKRUNUX1RZUEVfQ09OTkVDVE9SKQogIHJldHVybiAoZW51bSBjb25uZWN0b3JfaWQp IGlkLmlkOwogcmV0dXJuIENPTk5FQ1RPUl9JRF9VTktOT1dOOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBlbnVtIGF1ZGlvX2lkIGRh bF9ncmFwaGljc19vYmplY3RfaWRfZ2V0X2F1ZGlvX2lkKAogc3RydWN0IGdyYXBoaWNzX29iamVj dF9pZCBpZCkKewogaWYgKGlkLnR5cGUgPT0gT0JKRUNUX1RZUEVfQVVESU8pCiAgcmV0dXJuIChl bnVtIGF1ZGlvX2lkKSBpZC5pZDsKIHJldHVybiBBVURJT19JRF9VTktOT1dOOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBlbnVtIGVu Z2luZV9pZCBkYWxfZ3JhcGhpY3Nfb2JqZWN0X2lkX2dldF9lbmdpbmVfaWQoCiBzdHJ1Y3QgZ3Jh cGhpY3Nfb2JqZWN0X2lkIGlkKQp7CiBpZiAoaWQudHlwZSA9PSBPQkpFQ1RfVFlQRV9FTkdJTkUp CiAgcmV0dXJuIChlbnVtIGVuZ2luZV9pZCkgaWQuaWQ7CiByZXR1cm4gRU5HSU5FX0lEX1VOS05P V047Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgZGFsX2dyYXBoaWNzX29iamVjdF9pZF9lcXVhbCgKIHN0cnVjdCBncmFwaGlj c19vYmplY3RfaWQgaWRfMSwKIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgaWRfMikKewogaWYg KChpZF8xLmlkID09IGlkXzIuaWQpICYmIChpZF8xLmVudW1faWQgPT0gaWRfMi5lbnVtX2lkKSAm JgogIChpZF8xLnR5cGUgPT0gaWRfMi50eXBlKSkgewogIHJldHVybiB0cnVlOwogfQogcmV0dXJu IGZhbHNlOwp9CiMgMzAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9p bmNsdWRlL2dycGhfb2JqZWN0X2RlZnMuaCIgMgojIDQ1ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9kZWZzLmgiCmVudW0gaHBkX3Nv dXJjZV9pZCB7CiBIUERfU09VUkNFSUQxID0gMCwKIEhQRF9TT1VSQ0VJRDIsCiBIUERfU09VUkNF SUQzLAogSFBEX1NPVVJDRUlENCwKIEhQRF9TT1VSQ0VJRDUsCiBIUERfU09VUkNFSUQ2LAoKIEhQ RF9TT1VSQ0VJRF9DT1VOVCwKIEhQRF9TT1VSQ0VJRF9VTktOT1dOCn07CgoKZW51bSBjaGFubmVs X2lkIHsKIENIQU5ORUxfSURfVU5LTk9XTiA9IDAsCiBDSEFOTkVMX0lEX0REQzEsCiBDSEFOTkVM X0lEX0REQzIsCiBDSEFOTkVMX0lEX0REQzMsCiBDSEFOTkVMX0lEX0REQzQsCiBDSEFOTkVMX0lE X0REQzUsCiBDSEFOTkVMX0lEX0REQzYsCiBDSEFOTkVMX0lEX0REQ19WR0EsCiBDSEFOTkVMX0lE X0kyQ19QQUQsCiBDSEFOTkVMX0lEX0NPVU5UCn07CiMgODEgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2RlZnMuaCIKZW51bSB0cmFu c21pdHRlciB7CiBUUkFOU01JVFRFUl9VTktOT1dOID0gKC0xTCksCiBUUkFOU01JVFRFUl9VTklQ SFlfQSwKIFRSQU5TTUlUVEVSX1VOSVBIWV9CLAogVFJBTlNNSVRURVJfVU5JUEhZX0MsCiBUUkFO U01JVFRFUl9VTklQSFlfRCwKIFRSQU5TTUlUVEVSX1VOSVBIWV9FLAogVFJBTlNNSVRURVJfVU5J UEhZX0YsCiBUUkFOU01JVFRFUl9OVVRNRUdfQ1JULAogVFJBTlNNSVRURVJfVFJBVklTX0NSVCwK IFRSQU5TTUlUVEVSX1RSQVZJU19MQ0QsCiBUUkFOU01JVFRFUl9VTklQSFlfRywKIFRSQU5TTUlU VEVSX0NPVU5UCn07CgoKCmVudW0gc3luY19zb3VyY2UgewogU1lOQ19TT1VSQ0VfTk9ORSA9IDAs CgoKIFNZTkNfU09VUkNFX0NPTlRST0xMRVIwLAogU1lOQ19TT1VSQ0VfQ09OVFJPTExFUjEsCiBT WU5DX1NPVVJDRV9DT05UUk9MTEVSMiwKIFNZTkNfU09VUkNFX0NPTlRST0xMRVIzLAogU1lOQ19T T1VSQ0VfQ09OVFJPTExFUjQsCiBTWU5DX1NPVVJDRV9DT05UUk9MTEVSNSwKCgogU1lOQ19TT1VS Q0VfR1NMX0dST1VQMCwKIFNZTkNfU09VUkNFX0dTTF9HUk9VUDEsCiBTWU5DX1NPVVJDRV9HU0xf R1JPVVAyLAoKCgogU1lOQ19TT1VSQ0VfR1NMX0lPX0ZJUlNULAogU1lOQ19TT1VSQ0VfR1NMX0lP X0dFTkxPQ0tfQ0xPQ0sgPSBTWU5DX1NPVVJDRV9HU0xfSU9fRklSU1QsCiBTWU5DX1NPVVJDRV9H U0xfSU9fR0VOTE9DS19WU1lOQywKIFNZTkNfU09VUkNFX0dTTF9JT19TV0FQTE9DS19BLAogU1lO Q19TT1VSQ0VfR1NMX0lPX1NXQVBMT0NLX0IsCiBTWU5DX1NPVVJDRV9HU0xfSU9fTEFTVCA9IFNZ TkNfU09VUkNFX0dTTF9JT19TV0FQTE9DS19CLAoKCiBTWU5DX1NPVVJDRV9JT19GSVJTVCwKIFNZ TkNfU09VUkNFX0lPX0dFTkVSSUNfQSA9IFNZTkNfU09VUkNFX0lPX0ZJUlNULAogU1lOQ19TT1VS Q0VfSU9fR0VORVJJQ19CLAogU1lOQ19TT1VSQ0VfSU9fR0VORVJJQ19DLAogU1lOQ19TT1VSQ0Vf SU9fR0VORVJJQ19ELAogU1lOQ19TT1VSQ0VfSU9fR0VORVJJQ19FLAogU1lOQ19TT1VSQ0VfSU9f R0VORVJJQ19GLAogU1lOQ19TT1VSQ0VfSU9fSFBEMSwKIFNZTkNfU09VUkNFX0lPX0hQRDIsCiBT WU5DX1NPVVJDRV9JT19IU1lOQ19BLAogU1lOQ19TT1VSQ0VfSU9fVlNZTkNfQSwKIFNZTkNfU09V UkNFX0lPX0hTWU5DX0IsCiBTWU5DX1NPVVJDRV9JT19WU1lOQ19CLAogU1lOQ19TT1VSQ0VfSU9f TEFTVCA9IFNZTkNfU09VUkNFX0lPX1ZTWU5DX0IsCgoKIFNZTkNfU09VUkNFX0RVQUxfR1BVX1BJ Tgp9OwojIDE1MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1 ZGUvZ3JwaF9vYmplY3RfZGVmcy5oIgplbnVtIGNvbm5lY3Rvcl9sYXlvdXRfdHlwZSB7CiBDT05O RUNUT1JfTEFZT1VUX1RZUEVfVU5LTk9XTiwKIENPTk5FQ1RPUl9MQVlPVVRfVFlQRV9EVklfRCwK IENPTk5FQ1RPUl9MQVlPVVRfVFlQRV9EVklfSSwKIENPTk5FQ1RPUl9MQVlPVVRfVFlQRV9WR0Es CiBDT05ORUNUT1JfTEFZT1VUX1RZUEVfSERNSSwKIENPTk5FQ1RPUl9MQVlPVVRfVFlQRV9EUCwK IENPTk5FQ1RPUl9MQVlPVVRfVFlQRV9NSU5JX0RQLAp9OwpzdHJ1Y3QgY29ubmVjdG9yX2xheW91 dF9pbmZvIHsKIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgY29ubmVjdG9yX2lkOwogZW51bSBj b25uZWN0b3JfbGF5b3V0X3R5cGUgY29ubmVjdG9yX3R5cGU7CiB1bnNpZ25lZCBpbnQgbGVuZ3Ro OwogdW5zaWduZWQgaW50IHBvc2l0aW9uOwp9OwoKCnN0cnVjdCBzbG90X2xheW91dF9pbmZvIHsK IHVuc2lnbmVkIGludCBsZW5ndGg7CiB1bnNpZ25lZCBpbnQgd2lkdGg7CiB1bnNpZ25lZCBpbnQg bnVtX29mX2Nvbm5lY3RvcnM7CiBzdHJ1Y3QgY29ubmVjdG9yX2xheW91dF9pbmZvIGNvbm5lY3Rv cnNbKDE2KV07Cn07CgpzdHJ1Y3QgYm9hcmRfbGF5b3V0X2luZm8gewogdW5zaWduZWQgaW50IG51 bV9vZl9zbG90czsKCgogdW5zaWduZWQgaW50IGlzX251bWJlcl9vZl9zbG90c192YWxpZCA6IDE7 CiB1bnNpZ25lZCBpbnQgaXNfc2xvdHNfc2l6ZV92YWxpZCA6IDE7CiB1bnNpZ25lZCBpbnQgaXNf Y29ubmVjdG9yX29mZnNldHNfdmFsaWQgOiAxOwogdW5zaWduZWQgaW50IGlzX2Nvbm5lY3Rvcl9s ZW5ndGhzX3ZhbGlkIDogMTsKCiBzdHJ1Y3Qgc2xvdF9sYXlvdXRfaW5mbyBzbG90c1soNCldOwp9 OwojIDM5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfdHlw ZXMuaCIgMgoKCgoKCgpzdHJ1Y3QgZGNfcGxhbmVfc3RhdGU7CnN0cnVjdCBkY19zdHJlYW1fc3Rh dGU7CnN0cnVjdCBkY19saW5rOwpzdHJ1Y3QgZGNfc2luazsKc3RydWN0IGRhbDsKc3RydWN0IGRj X2RtdWJfc3J2OwoKCgoKZW51bSBkY2VfZW52aXJvbm1lbnQgewogRENFX0VOVl9QUk9EVUNUSU9O X0RSViA9IDAsCgoKCiBEQ0VfRU5WX0ZQR0FfTUFYSU1VUywKCgogRENFX0VOVl9ESUFHLAoKCgoK IERDRV9FTlZfVklSVFVBTF9IVwp9OwojIDc4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaCIKc3RydWN0IGh3X2FzaWNfaWQgewogdWludDMyX3Qg Y2hpcF9pZDsKIHVpbnQzMl90IGNoaXBfZmFtaWx5OwogdWludDMyX3QgcGNpX3JldmlzaW9uX2lk OwogdWludDMyX3QgaHdfaW50ZXJuYWxfcmV2OwogdWludDMyX3QgdnJhbV90eXBlOwogdWludDMy X3QgdnJhbV93aWR0aDsKIHVpbnQzMl90IGZlYXR1cmVfZmxhZ3M7CiB1aW50MzJfdCBmYWtlX3Bh dGhzX251bTsKIHZvaWQgKmF0b21iaW9zX2Jhc2VfYWRkcmVzczsKfTsKCnN0cnVjdCBkY19wZXJm X3RyYWNlIHsKIHVuc2lnbmVkIGxvbmcgcmVhZF9jb3VudDsKIHVuc2lnbmVkIGxvbmcgd3JpdGVf Y291bnQ7CiB1bnNpZ25lZCBsb25nIGxhc3RfZW50cnlfcmVhZDsKIHVuc2lnbmVkIGxvbmcgbGFz dF9lbnRyeV93cml0ZTsKfTsKCnN0cnVjdCBkY19jb250ZXh0IHsKIHN0cnVjdCBkYyAqZGM7Cgog dm9pZCAqZHJpdmVyX2NvbnRleHQ7CiBzdHJ1Y3QgZGNfcGVyZl90cmFjZSAqcGVyZl90cmFjZTsK IHZvaWQgKmNnc19kZXZpY2U7CgogZW51bSBkY2VfZW52aXJvbm1lbnQgZGNlX2Vudmlyb25tZW50 Owogc3RydWN0IGh3X2FzaWNfaWQgYXNpY19pZDsKCgoKCiBlbnVtIGRjZV92ZXJzaW9uIGRjZV92 ZXJzaW9uOwogc3RydWN0IGRjX2Jpb3MgKmRjX2Jpb3M7CiBib29sIGNyZWF0ZWRfYmlvczsKIHN0 cnVjdCBncGlvX3NlcnZpY2UgKmdwaW9fc2VydmljZTsKIHVpbnQzMl90IGRjX3NpbmtfaWRfY291 bnQ7CiB1aW50MzJfdCBkY19zdHJlYW1faWRfY291bnQ7CiB1aW50NjRfdCBmYmNfZ3B1X2FkZHI7 CiBzdHJ1Y3QgZGNfZG11Yl9zcnYgKmRtdWJfc3J2OwoKCgoKfTsKIyAxMzEgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBlcy5oIgojIDEgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY19kZGNfdHlwZXMuaCIgMQojIDI4 ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfZGRjX3R5cGVz LmgiCmVudW0gYXV4X3RyYW5zYWN0aW9uX3R5cGUgewogQVVYX1RSQU5TQUNUSU9OX1RZUEVfRFAs CiBBVVhfVFJBTlNBQ1RJT05fVFlQRV9JMkMKfTsKCgplbnVtIGkyY2F1eF90cmFuc2FjdGlvbl9h Y3Rpb24gewogSTJDQVVYX1RSQU5TQUNUSU9OX0FDVElPTl9JMkNfV1JJVEUgPSAweDAwLAogSTJD QVVYX1RSQU5TQUNUSU9OX0FDVElPTl9JMkNfUkVBRCA9IDB4MTAsCiBJMkNBVVhfVFJBTlNBQ1RJ T05fQUNUSU9OX0kyQ19TVEFUVVNfUkVRVUVTVCA9IDB4MjAsCgogSTJDQVVYX1RSQU5TQUNUSU9O X0FDVElPTl9JMkNfV1JJVEVfTU9UID0gMHg0MCwKIEkyQ0FVWF9UUkFOU0FDVElPTl9BQ1RJT05f STJDX1JFQURfTU9UID0gMHg1MCwKIEkyQ0FVWF9UUkFOU0FDVElPTl9BQ1RJT05fSTJDX1NUQVRV U19SRVFVRVNUX01PVCA9IDB4NjAsCgogSTJDQVVYX1RSQU5TQUNUSU9OX0FDVElPTl9EUF9XUklU RSA9IDB4ODAsCiBJMkNBVVhfVFJBTlNBQ1RJT05fQUNUSU9OX0RQX1JFQUQgPSAweDkwCn07Cgpl bnVtIGF1eF9jaGFubmVsX29wZXJhdGlvbl9yZXN1bHQgewogQVVYX0NIQU5ORUxfT1BFUkFUSU9O X1NVQ0NFRURFRCwKIEFVWF9DSEFOTkVMX09QRVJBVElPTl9GQUlMRURfUkVBU09OX1VOS05PV04s CiBBVVhfQ0hBTk5FTF9PUEVSQVRJT05fRkFJTEVEX0lOVkFMSURfUkVQTFksCiBBVVhfQ0hBTk5F TF9PUEVSQVRJT05fRkFJTEVEX1RJTUVPVVQsCiBBVVhfQ0hBTk5FTF9PUEVSQVRJT05fRkFJTEVE X0hQRF9ESVNDT04sCiBBVVhfQ0hBTk5FTF9PUEVSQVRJT05fRkFJTEVEX0VOR0lORV9BQ1FVSVJF Cn07CgoKc3RydWN0IGF1eF9yZXF1ZXN0X3RyYW5zYWN0aW9uX2RhdGEgewogZW51bSBhdXhfdHJh bnNhY3Rpb25fdHlwZSB0eXBlOwogZW51bSBpMmNhdXhfdHJhbnNhY3Rpb25fYWN0aW9uIGFjdGlv bjsKCiB1aW50MzJfdCBhZGRyZXNzOwoKIHVpbnQ4X3QgZGVsYXk7CiB1aW50MzJfdCBsZW5ndGg7 CiB1aW50OF90ICpkYXRhOwp9OwoKZW51bSBhdXhfdHJhbnNhY3Rpb25fcmVwbHkgewogQVVYX1RS QU5TQUNUSU9OX1JFUExZX0FVWF9BQ0sgPSAweDAwLAogQVVYX1RSQU5TQUNUSU9OX1JFUExZX0FV WF9OQUNLID0gMHgwMSwKIEFVWF9UUkFOU0FDVElPTl9SRVBMWV9BVVhfREVGRVIgPSAweDAyLAog QVVYX1RSQU5TQUNUSU9OX1JFUExZX0kyQ19PVkVSX0FVWF9OQUNLID0gMHgwNCwKIEFVWF9UUkFO U0FDVElPTl9SRVBMWV9JMkNfT1ZFUl9BVVhfREVGRVIgPSAweDA4LAoKIEFVWF9UUkFOU0FDVElP Tl9SRVBMWV9JMkNfQUNLID0gMHgwMCwKIEFVWF9UUkFOU0FDVElPTl9SRVBMWV9JMkNfTkFDSyA9 IDB4MTAsCiBBVVhfVFJBTlNBQ1RJT05fUkVQTFlfSTJDX0RFRkVSID0gMHgyMCwKCiBBVVhfVFJB TlNBQ1RJT05fUkVQTFlfSFBEX0RJU0NPTiA9IDB4NDAsCgogQVVYX1RSQU5TQUNUSU9OX1JFUExZ X0lOVkFMSUQgPSAweEZGCn07CgpzdHJ1Y3QgYXV4X3JlcGx5X3RyYW5zYWN0aW9uX2RhdGEgewog ZW51bSBhdXhfdHJhbnNhY3Rpb25fcmVwbHkgc3RhdHVzOwogdWludDMyX3QgbGVuZ3RoOwogdWlu dDhfdCAqZGF0YTsKfTsKCnN0cnVjdCBpMmNfcGF5bG9hZCB7CiBib29sIHdyaXRlOwogdWludDhf dCBhZGRyZXNzOwogdWludDMyX3QgbGVuZ3RoOwogdWludDhfdCAqZGF0YTsKfTsKCmVudW0gaTJj X2NvbW1hbmRfZW5naW5lIHsKIEkyQ19DT01NQU5EX0VOR0lORV9ERUZBVUxULAogSTJDX0NPTU1B TkRfRU5HSU5FX1NXLAogSTJDX0NPTU1BTkRfRU5HSU5FX0hXCn07CgpzdHJ1Y3QgaTJjX2NvbW1h bmQgewogc3RydWN0IGkyY19wYXlsb2FkICpwYXlsb2FkczsKIHVpbnQ4X3QgbnVtYmVyX29mX3Bh eWxvYWRzOwoKIGVudW0gaTJjX2NvbW1hbmRfZW5naW5lIGVuZ2luZTsKCgoKIHVpbnQzMl90IHNw ZWVkOwp9OwoKc3RydWN0IGdwaW9fZGRjX2h3X2luZm8gewogYm9vbCBod19zdXBwb3J0ZWQ7CiB1 aW50MzJfdCBkZGNfY2hhbm5lbDsKfTsKCnN0cnVjdCBkZGMgewogc3RydWN0IGdwaW8gKnBpbl9k YXRhOwogc3RydWN0IGdwaW8gKnBpbl9jbG9jazsKIHN0cnVjdCBncGlvX2RkY19od19pbmZvIGh3 X2luZm87CiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4Owp9OwoKdW5pb24gZGRjX3dhIHsKIHN0cnVj dCB7CiAgdWludDMyX3QgRFBfU0tJUF9QT1dFUl9PRkY6MTsKICB1aW50MzJfdCBEUF9BVVhfUE9X RVJfVVBfV0FfREVMQVk6MTsKIH0gYml0czsKIHVpbnQzMl90IHJhdzsKfTsKCnN0cnVjdCBkZGNf ZmxhZ3MgewogdWludDhfdCBFRElEX1FVRVJZX0RPTkVfT05DRToxOwogdWludDhfdCBJU19JTlRF Uk5BTF9ESVNQTEFZOjE7CiB1aW50OF90IEZPUkNFX1JFQURfUkVQRUFURURfU1RBUlQ6MTsKIHVp bnQ4X3QgRURJRF9TVFJFU1NfUkVBRDoxOwoKfTsKCmVudW0gZGRjX3RyYW5zYWN0aW9uX3R5cGUg ewogRERDX1RSQU5TQUNUSU9OX1RZUEVfTk9ORSA9IDAsCiBERENfVFJBTlNBQ1RJT05fVFlQRV9J MkMsCiBERENfVFJBTlNBQ1RJT05fVFlQRV9JMkNfT1ZFUl9BVVgsCiBERENfVFJBTlNBQ1RJT05f VFlQRV9JMkNfT1ZFUl9BVVhfV0lUSF9ERUZFUiwKIEREQ19UUkFOU0FDVElPTl9UWVBFX0kyQ19P VkVSX0FVWF9SRVRSWV9ERUZFUgp9OwoKZW51bSBkaXNwbGF5X2RvbmdsZV90eXBlIHsKIERJU1BM QVlfRE9OR0xFX05PTkUgPSAwLAoKIERJU1BMQVlfRE9OR0xFX0RQX1ZHQV9DT05WRVJURVIsCiBE SVNQTEFZX0RPTkdMRV9EUF9EVklfQ09OVkVSVEVSLAogRElTUExBWV9ET05HTEVfRFBfSERNSV9D T05WRVJURVIsCgogRElTUExBWV9ET05HTEVfRFBfRFZJX0RPTkdMRSwKIERJU1BMQVlfRE9OR0xF X0RQX0hETUlfRE9OR0xFLAoKIERJU1BMQVlfRE9OR0xFX0RQX0hETUlfTUlTTUFUQ0hFRF9ET05H TEUsCn07CgpzdHJ1Y3QgZGRjX3NlcnZpY2Ugewogc3RydWN0IGRkYyAqZGRjX3BpbjsKIHN0cnVj dCBkZGNfZmxhZ3MgZmxhZ3M7CiB1bmlvbiBkZGNfd2Egd2E7CiBlbnVtIGRkY190cmFuc2FjdGlv bl90eXBlIHRyYW5zYWN0aW9uX3R5cGU7CiBlbnVtIGRpc3BsYXlfZG9uZ2xlX3R5cGUgZG9uZ2xl X3R5cGU7CiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4Owogc3RydWN0IGRjX2xpbmsgKmxpbms7Cgog dWludDMyX3QgYWRkcmVzczsKIHVpbnQzMl90IGVkaWRfYnVmX2xlbjsKIHVpbnQ4X3QgZWRpZF9i dWZbMTAyNF07Cn07CiMgMTMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvZGNfdHlwZXMuaCIgMgoKZW51bSB0aWxpbmdfbW9kZSB7CiBUSUxJTkdfTU9ERV9JTlZB TElELAogVElMSU5HX01PREVfTElORUFSLAogVElMSU5HX01PREVfVElMRUQsCiBUSUxJTkdfTU9E RV9DT1VOVAp9OwoKZW51bSB2aWV3XzNkX2Zvcm1hdCB7CiBWSUVXXzNEX0ZPUk1BVF9OT05FID0g MCwKIFZJRVdfM0RfRk9STUFUX0ZSQU1FX1NFUVVFTlRJQUwsCiBWSUVXXzNEX0ZPUk1BVF9TSURF X0JZX1NJREUsCiBWSUVXXzNEX0ZPUk1BVF9UT1BfQU5EX0JPVFRPTSwKIFZJRVdfM0RfRk9STUFU X0NPVU5ULAogVklFV18zRF9GT1JNQVRfRklSU1QgPSBWSUVXXzNEX0ZPUk1BVF9GUkFNRV9TRVFV RU5USUFMCn07CgplbnVtIHBsYW5lX3N0ZXJlb19mb3JtYXQgewogUExBTkVfU1RFUkVPX0ZPUk1B VF9OT05FID0gMCwKIFBMQU5FX1NURVJFT19GT1JNQVRfU0lERV9CWV9TSURFID0gMSwKIFBMQU5F X1NURVJFT19GT1JNQVRfVE9QX0FORF9CT1RUT00gPSAyLAogUExBTkVfU1RFUkVPX0ZPUk1BVF9G UkFNRV9BTFRFUk5BVEUgPSAzLAogUExBTkVfU1RFUkVPX0ZPUk1BVF9ST1dfSU5URVJMRUFWRUQg PSA1LAogUExBTkVfU1RFUkVPX0ZPUk1BVF9DT0xVTU5fSU5URVJMRUFWRUQgPSA2LAogUExBTkVf U1RFUkVPX0ZPUk1BVF9DSEVDS0VSX0JPQVJEID0gNwp9OwoKCgoKCgplbnVtIGRjX2VkaWRfY29u bmVjdG9yX3R5cGUgewogRENfRURJRF9DT05ORUNUT1JfVU5LTk9XTiA9IDAsCiBEQ19FRElEX0NP Tk5FQ1RPUl9BTkFMT0cgPSAxLAogRENfRURJRF9DT05ORUNUT1JfRElHSVRBTCA9IDEwLAogRENf RURJRF9DT05ORUNUT1JfRFZJID0gMTEsCiBEQ19FRElEX0NPTk5FQ1RPUl9IRE1JQSA9IDEyLAog RENfRURJRF9DT05ORUNUT1JfTURESSA9IDE0LAogRENfRURJRF9DT05ORUNUT1JfRElTUExBWVBP UlQgPSAxNQp9OwoKZW51bSBkY19lZGlkX3N0YXR1cyB7CiBFRElEX09LLAogRURJRF9CQURfSU5Q VVQsCiBFRElEX05PX1JFU1BPTlNFLAogRURJRF9CQURfQ0hFQ0tTVU0sCiBFRElEX1RIRV9TQU1F LAp9OwoKZW51bSBhY3RfcmV0dXJuX3N0YXR1cyB7CiBBQ1RfU1VDQ0VTUywKIEFDVF9MSU5LX0xP U1QsCiBBQ1RfRkFJTEVECn07CgoKc3RydWN0IGRjX2NlYV9hdWRpb19tb2RlIHsKIHVpbnQ4X3Qg Zm9ybWF0X2NvZGU7CiB1aW50OF90IGNoYW5uZWxfY291bnQ7CiB1aW50OF90IHNhbXBsZV9yYXRl OwogdW5pb24gewogIHVpbnQ4X3Qgc2FtcGxlX3NpemU7CgogIHVpbnQ4X3QgbWF4X2JpdF9yYXRl OwogIHVpbnQ4X3QgYXVkaW9fY29kZWNfdmVuZG9yX3NwZWNpZmljOwogfTsKfTsKCnN0cnVjdCBk Y19lZGlkIHsKIHVpbnQzMl90IGxlbmd0aDsKIHVpbnQ4X3QgcmF3X2VkaWRbMTAyNF07Cn07CiMg MjE1ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfdHlwZXMu aCIKdW5pb24gZGlzcGxheV9jb250ZW50X3N1cHBvcnQgewogdW5zaWduZWQgaW50IHJhdzsKIHN0 cnVjdCB7CiAgdW5zaWduZWQgaW50IHZhbGlkX2NvbnRlbnRfdHlwZSA6MTsKICB1bnNpZ25lZCBp bnQgZ2FtZV9jb250ZW50IDoxOwogIHVuc2lnbmVkIGludCBjaW5lbWFfY29udGVudCA6MTsKICB1 bnNpZ25lZCBpbnQgcGhvdG9fY29udGVudCA6MTsKICB1bnNpZ25lZCBpbnQgZ3JhcGhpY3NfY29u dGVudCA6MTsKICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQgOjI3OwogfSBiaXRzOwp9OwoKc3RydWN0 IGRjX3BhbmVsX3BhdGNoIHsKIHVuc2lnbmVkIGludCBkcHBvd2VydXBfZGVsYXk7CiB1bnNpZ25l ZCBpbnQgZXh0cmFfdDEyX21zOwogdW5zaWduZWQgaW50IGV4dHJhX2RlbGF5X2JhY2tsaWdodF9v ZmY7CiB1bnNpZ25lZCBpbnQgZXh0cmFfdDdfbXM7CiB1bnNpZ25lZCBpbnQgbWFuYWdlX3NlY29u ZGFyeV9saW5rOwp9OwoKc3RydWN0IGRjX2VkaWRfY2FwcyB7CgogdWludDE2X3QgbWFudWZhY3R1 cmVyX2lkOwogdWludDE2X3QgcHJvZHVjdF9pZDsKIHVpbnQzMl90IHNlcmlhbF9udW1iZXI7CiB1 aW50OF90IG1hbnVmYWN0dXJlX3dlZWs7CiB1aW50OF90IG1hbnVmYWN0dXJlX3llYXI7CiB1aW50 OF90IGRpc3BsYXlfbmFtZVsyMF07CgoKIHVpbnQ4X3Qgc3BlYWtlcl9mbGFnczsKIHVpbnQzMl90 IGF1ZGlvX21vZGVfY291bnQ7CiBzdHJ1Y3QgZGNfY2VhX2F1ZGlvX21vZGUgYXVkaW9fbW9kZXNb MTZdOwogdWludDMyX3QgYXVkaW9fbGF0ZW5jeTsKIHVpbnQzMl90IHZpZGVvX2xhdGVuY3k7Cgog dW5pb24gZGlzcGxheV9jb250ZW50X3N1cHBvcnQgY29udGVudF9zdXBwb3J0OwoKIHVpbnQ4X3Qg cXNfYml0OwogdWludDhfdCBxeV9iaXQ7CgoKIGJvb2wgbHRlXzM0MG1jc2Nfc2NyYW1ibGU7Cgog Ym9vbCBlZGlkX2hkbWk7CiBib29sIGhkcl9zdXBwb3J0ZWQ7Cgogc3RydWN0IGRjX3BhbmVsX3Bh dGNoIHBhbmVsX3BhdGNoOwp9OwoKc3RydWN0IHZpZXcgewogdWludDMyX3Qgd2lkdGg7CiB1aW50 MzJfdCBoZWlnaHQ7Cn07CgpzdHJ1Y3QgZGNfbW9kZV9mbGFncyB7CgogdWludDMyX3QgSU5URVJM QUNFIDoxOwoKIHVpbnQzMl90IE5BVElWRSA6MTsKCiB1aW50MzJfdCBQUkVGRVJSRUQgOjE7CgoK IHVpbnQzMl90IFJFRFVDRURfQkxBTktJTkcgOjE7CgogdWludDMyX3QgVklERU9fT1BUSU1JWkVE X1JBVEUgOjE7CgogdWludDMyX3QgUEFDS0VEX1BJWEVMX0ZPUk1BVCA6MTsKCiB1aW50MzJfdCBQ UkVGRVJSRURfVklFVyA6MTsKCiB1aW50MzJfdCBUSUxFRF9NT0RFIDoxOwogdWludDMyX3QgRFNF X01PREUgOjE7CgoKCgogdWludDMyX3QgTUlSQUNBU1RfUkVGUkVTSF9ESVZJREVSOwp9OwoKCmVu dW0gZGNfdGltaW5nX3NvdXJjZSB7CiBUSU1JTkdfU09VUkNFX1VOREVGSU5FRCwKCgogVElNSU5H X1NPVVJDRV9VU0VSX0ZPUkNFRCwKIFRJTUlOR19TT1VSQ0VfVVNFUl9PVkVSUklERSwKIFRJTUlO R19TT1VSQ0VfQ1VTVE9NLAogVElNSU5HX1NPVVJDRV9FWFBMSUNJVCwKCgogVElNSU5HX1NPVVJD RV9FRElEX0NFQV9TVkRfM0QsCiBUSU1JTkdfU09VUkNFX0VESURfQ0VBX1NWRF9QUkVGRVJSRUQs CiBUSU1JTkdfU09VUkNFX0VESURfQ0VBX1NWRF80MjAsCiBUSU1JTkdfU09VUkNFX0VESURfREVU QUlMRUQsCiBUSU1JTkdfU09VUkNFX0VESURfRVNUQUJMSVNIRUQsCiBUSU1JTkdfU09VUkNFX0VE SURfU1RBTkRBUkQsCiBUSU1JTkdfU09VUkNFX0VESURfQ0VBX1NWRCwKIFRJTUlOR19TT1VSQ0Vf RURJRF9DVlRfM0JZVEUsCiBUSU1JTkdfU09VUkNFX0VESURfNEJZVEUsCiBUSU1JTkdfU09VUkNF X1ZCSU9TLAogVElNSU5HX1NPVVJDRV9DViwKIFRJTUlOR19TT1VSQ0VfVFYsCiBUSU1JTkdfU09V UkNFX0hETUlfVklDLAoKCiBUSU1JTkdfU09VUkNFX0RFRkFVTFQsCgoKIFRJTUlOR19TT1VSQ0Vf Q1VTVE9NX0JBU0UsCgoKIFRJTUlOR19TT1VSQ0VfUkFOR0VMSU1JVCwKIFRJTUlOR19TT1VSQ0Vf T1NfRk9SQ0VELAogVElNSU5HX1NPVVJDRV9JTVBMSUNJVCwKCgogVElNSU5HX1NPVVJDRV9CQVNJ Q01PREUsCgogVElNSU5HX1NPVVJDRV9DT1VOVAp9OwoKCnN0cnVjdCBzdGVyZW9fM2RfZmVhdHVy ZXMgewogYm9vbCBzdXBwb3J0ZWQgOwogYm9vbCBhbGxUaW1pbmdzIDsKIGJvb2wgY2xvbmVNb2Rl IDsKIGJvb2wgc2NhbGluZyA7CiBib29sIHNpbmdsZUZyYW1lU1dQYWNrZWQ7Cn07CgplbnVtIGRj X3RpbWluZ19zdXBwb3J0X21ldGhvZCB7CiBUSU1JTkdfU1VQUE9SVF9NRVRIT0RfVU5ERUZJTkVE LAogVElNSU5HX1NVUFBPUlRfTUVUSE9EX0VYUExJQ0lULAogVElNSU5HX1NVUFBPUlRfTUVUSE9E X0lNUExJQ0lULAogVElNSU5HX1NVUFBPUlRfTUVUSE9EX05BVElWRQp9OwoKc3RydWN0IGRjX21v ZGVfaW5mbyB7CiB1aW50MzJfdCBwaXhlbF93aWR0aDsKIHVpbnQzMl90IHBpeGVsX2hlaWdodDsK IHVpbnQzMl90IGZpZWxkX3JhdGU7CgoKCiBlbnVtIGRjX3RpbWluZ19zdGFuZGFyZCB0aW1pbmdf c3RhbmRhcmQ7CiBlbnVtIGRjX3RpbWluZ19zb3VyY2UgdGltaW5nX3NvdXJjZTsKIHN0cnVjdCBk Y19tb2RlX2ZsYWdzIGZsYWdzOwp9OwoKZW51bSBkY19wb3dlcl9zdGF0ZSB7CiBEQ19QT1dFUl9T VEFURV9PTiA9IDEsCiBEQ19QT1dFUl9TVEFURV9TVEFOREJZLAogRENfUE9XRVJfU1RBVEVfU1VT UEVORCwKIERDX1BPV0VSX1NUQVRFX09GRgp9OwoKCmVudW0gZGNfdmlkZW9fcG93ZXJfc3RhdGUg ewogRENfVklERU9fUE9XRVJfVU5TUEVDSUZJRUQgPSAwLAogRENfVklERU9fUE9XRVJfT04gPSAx LAogRENfVklERU9fUE9XRVJfU1RBTkRCWSwKIERDX1ZJREVPX1BPV0VSX1NVU1BFTkQsCiBEQ19W SURFT19QT1dFUl9PRkYsCiBEQ19WSURFT19QT1dFUl9ISUJFUk5BVEUsCiBEQ19WSURFT19QT1dF Ul9TSFVURE9XTiwKIERDX1ZJREVPX1BPV0VSX1VMUFMsCiBEQ19WSURFT19QT1dFUl9BRlRFUl9S RVNFVCwKIERDX1ZJREVPX1BPV0VSX01BWElNVU0KfTsKCmVudW0gZGNfYWNwaV9jbV9wb3dlcl9z dGF0ZSB7CiBEQ19BQ1BJX0NNX1BPV0VSX1NUQVRFX0QwID0gMSwKIERDX0FDUElfQ01fUE9XRVJf U1RBVEVfRDEgPSAyLAogRENfQUNQSV9DTV9QT1dFUl9TVEFURV9EMiA9IDQsCiBEQ19BQ1BJX0NN X1BPV0VSX1NUQVRFX0QzID0gOAp9OwoKZW51bSBkY19jb25uZWN0aW9uX3R5cGUgewogZGNfY29u bmVjdGlvbl9ub25lLAogZGNfY29ubmVjdGlvbl9zaW5nbGUsCiBkY19jb25uZWN0aW9uX21zdF9i cmFuY2gsCiBkY19jb25uZWN0aW9uX2FjdGl2ZV9kb25nbGUKfTsKCnN0cnVjdCBkY19jc2NfYWRq dXN0bWVudHMgewogc3RydWN0IGZpeGVkMzFfMzIgY29udHJhc3Q7CiBzdHJ1Y3QgZml4ZWQzMV8z MiBzYXR1cmF0aW9uOwogc3RydWN0IGZpeGVkMzFfMzIgYnJpZ2h0bmVzczsKIHN0cnVjdCBmaXhl ZDMxXzMyIGh1ZTsKfTsKCmVudW0gZHBjZF9kb3duc3RyZWFtX3BvcnRfbWF4X2JwYyB7CiBET1dO X1NUUkVBTV9NQVhfOEJQQyA9IDAsCiBET1dOX1NUUkVBTV9NQVhfMTBCUEMsCiBET1dOX1NUUkVB TV9NQVhfMTJCUEMsCiBET1dOX1NUUkVBTV9NQVhfMTZCUEMKfTsKCgplbnVtIGxpbmtfdHJhaW5p bmdfb2Zmc2V0IHsKIERQUlggPSAwLAogTFRUUFJfUEhZX1JFUEVBVEVSMSA9IDEsCiBMVFRQUl9Q SFlfUkVQRUFURVIyID0gMiwKIExUVFBSX1BIWV9SRVBFQVRFUjMgPSAzLAogTFRUUFJfUEhZX1JF UEVBVEVSNCA9IDQsCiBMVFRQUl9QSFlfUkVQRUFURVI1ID0gNSwKIExUVFBSX1BIWV9SRVBFQVRF UjYgPSA2LAogTFRUUFJfUEhZX1JFUEVBVEVSNyA9IDcsCiBMVFRQUl9QSFlfUkVQRUFURVI4ID0g OAp9OwoKc3RydWN0IGRjX2x0dHByX2NhcHMgewogdW5pb24gZHBjZF9yZXYgcmV2aXNpb247CiB1 aW50OF90IG1vZGU7CiB1aW50OF90IG1heF9sYW5lX2NvdW50OwogdWludDhfdCBtYXhfbGlua19y YXRlOwogdWludDhfdCBwaHlfcmVwZWF0ZXJfY250OwogdWludDhfdCBtYXhfZXh0X3RpbWVvdXQ7 CiB1aW50OF90IGF1eF9yZF9pbnRlcnZhbFs4IC0gMV07Cn07CgpzdHJ1Y3QgZGNfZG9uZ2xlX2Nh cHMgewoKIGVudW0gZGlzcGxheV9kb25nbGVfdHlwZSBkb25nbGVfdHlwZTsKIGJvb2wgZXh0ZW5k ZWRDYXBWYWxpZDsKCgogYm9vbCBpc19kcF9oZG1pX3MzZF9jb252ZXJ0ZXI7CiBib29sIGlzX2Rw X2hkbWlfeWNiY3I0MjJfcGFzc190aHJvdWdoOwogYm9vbCBpc19kcF9oZG1pX3ljYmNyNDIwX3Bh c3NfdGhyb3VnaDsKIGJvb2wgaXNfZHBfaGRtaV95Y2JjcjQyMl9jb252ZXJ0ZXI7CiBib29sIGlz X2RwX2hkbWlfeWNiY3I0MjBfY29udmVydGVyOwogdWludDMyX3QgZHBfaGRtaV9tYXhfYnBjOwog dWludDMyX3QgZHBfaGRtaV9tYXhfcGl4ZWxfY2xrX2luX2toejsKfTsKCmVudW0gc2NhbGluZ190 cmFuc2Zvcm1hdGlvbiB7CiBTQ0FMSU5HX1RSQU5TRk9STUFUSU9OX1VOSU5JVElBTElaRUQsCiBT Q0FMSU5HX1RSQU5TRk9STUFUSU9OX0lERU5USVRZID0gMHgwMDAxLAogU0NBTElOR19UUkFOU0ZP Uk1BVElPTl9DRU5URVJfVElNSU5HID0gMHgwMDAyLAogU0NBTElOR19UUkFOU0ZPUk1BVElPTl9G VUxMX1NDUkVFTl9TQ0FMRSA9IDB4MDAwNCwKIFNDQUxJTkdfVFJBTlNGT1JNQVRJT05fUFJFU0VS VkVfQVNQRUNUX1JBVElPX1NDQUxFID0gMHgwMDA4LAogU0NBTElOR19UUkFOU0ZPUk1BVElPTl9E QUxfREVDSURFID0gMHgwMDEwLAogU0NBTElOR19UUkFOU0ZPUk1BVElPTl9JTlZBTElEID0gMHg4 MDAwMDAwMCwKCgogU0NBTElOR19UUkFOU0ZPUk1BVElPTl9CRUdJTkcgPSBTQ0FMSU5HX1RSQU5T Rk9STUFUSU9OX0lERU5USVRZLAogU0NBTElOR19UUkFOU0ZPUk1BVElPTl9FTkQgPQogIFNDQUxJ TkdfVFJBTlNGT1JNQVRJT05fUFJFU0VSVkVfQVNQRUNUX1JBVElPX1NDQUxFCn07CgplbnVtIGRp c3BsYXlfY29udGVudF90eXBlIHsKIERJU1BMQVlfQ09OVEVOVF9UWVBFX05PX0RBVEEgPSAwLAog RElTUExBWV9DT05URU5UX1RZUEVfR1JBUEhJQ1MgPSAxLAogRElTUExBWV9DT05URU5UX1RZUEVf UEhPVE8gPSAyLAogRElTUExBWV9DT05URU5UX1RZUEVfQ0lORU1BID0gNCwKIERJU1BMQVlfQ09O VEVOVF9UWVBFX0dBTUUgPSA4Cn07CgoKc3RydWN0IGR3Yl9zdGVyZW9fcGFyYW1zIHsKIGJvb2wg c3RlcmVvX2VuYWJsZWQ7CiBlbnVtIGR3Yl9zdGVyZW9fdHlwZSBzdGVyZW9fdHlwZTsKIGJvb2wg c3RlcmVvX3BvbGFyaXR5OwogZW51bSBkd2Jfc3RlcmVvX2V5ZV9zZWxlY3Qgc3RlcmVvX2V5ZV9z ZWxlY3Q7Cn07CgpzdHJ1Y3QgZGNfZHdiX2Nudl9wYXJhbXMgewogdW5zaWduZWQgaW50IHNyY193 aWR0aDsKIHVuc2lnbmVkIGludCBzcmNfaGVpZ2h0OwogdW5zaWduZWQgaW50IGNyb3Bfd2lkdGg7 CiBib29sIGNyb3BfZW47CiB1bnNpZ25lZCBpbnQgY3JvcF9oZWlnaHQ7CiB1bnNpZ25lZCBpbnQg Y3JvcF94OwogdW5zaWduZWQgaW50IGNyb3BfeTsKIGVudW0gZHdiX2Nudl9vdXRfYnBjIGNudl9v dXRfYnBjOwp9OwoKc3RydWN0IGRjX2R3Yl9wYXJhbXMgewogc3RydWN0IGRjX2R3Yl9jbnZfcGFy YW1zIGNudl9wYXJhbXM7CiB1bnNpZ25lZCBpbnQgZGVzdF93aWR0aDsKIHVuc2lnbmVkIGludCBk ZXN0X2hlaWdodDsKIGVudW0gZHdiX3NjYWxlcl9tb2RlIG91dF9mb3JtYXQ7CiBlbnVtIGR3Yl9v dXRwdXRfZGVwdGggb3V0cHV0X2RlcHRoOwogZW51bSBkd2JfY2FwdHVyZV9yYXRlIGNhcHR1cmVf cmF0ZTsKIHN0cnVjdCBzY2FsaW5nX3RhcHMgc2NhbGVyX3RhcHM7CiBlbnVtIGR3Yl9zdWJzYW1w bGVfcG9zaXRpb24gc3Vic2FtcGxlX3Bvc2l0aW9uOwogc3RydWN0IGRjX3RyYW5zZmVyX2Z1bmMg Km91dF90cmFuc2Zlcl9mdW5jOwp9OwoKCgp1bmlvbiBhdWRpb19zYW1wbGVfcmF0ZXMgewogc3Ry dWN0IHNhbXBsZV9yYXRlcyB7CiAgdWludDhfdCBSQVRFXzMyOjE7CiAgdWludDhfdCBSQVRFXzQ0 XzE6MTsKICB1aW50OF90IFJBVEVfNDg6MTsKICB1aW50OF90IFJBVEVfODhfMjoxOwogIHVpbnQ4 X3QgUkFURV85NjoxOwogIHVpbnQ4X3QgUkFURV8xNzZfNDoxOwogIHVpbnQ4X3QgUkFURV8xOTI6 MTsKIH0gcmF0ZTsKCiB1aW50OF90IGFsbDsKfTsKCnN0cnVjdCBhdWRpb19zcGVha2VyX2ZsYWdz IHsKIHVpbnQzMl90IEZMX0ZSOjE7CiB1aW50MzJfdCBMRkU6MTsKIHVpbnQzMl90IEZDOjE7CiB1 aW50MzJfdCBSTF9SUjoxOwogdWludDMyX3QgUkM6MTsKIHVpbnQzMl90IEZMQ19GUkM6MTsKIHVp bnQzMl90IFJMQ19SUkM6MTsKIHVpbnQzMl90IFNVUFBPUlRfQUk6MTsKfTsKCnN0cnVjdCBhdWRp b19zcGVha2VyX2luZm8gewogdWludDMyX3QgQUxMU1BFQUtFUlM6NzsKIHVpbnQzMl90IFNVUFBP UlRfQUk6MTsKfTsKCgpzdHJ1Y3QgYXVkaW9faW5mb19mbGFncyB7CgogdW5pb24gewoKICBzdHJ1 Y3QgYXVkaW9fc3BlYWtlcl9mbGFncyBzcGVha2VyX2ZsYWdzOwogIHN0cnVjdCBhdWRpb19zcGVh a2VyX2luZm8gaW5mbzsKCiAgdWludDhfdCBhbGw7CiB9Owp9OwoKZW51bSBhdWRpb19mb3JtYXRf Y29kZSB7CiBBVURJT19GT1JNQVRfQ09ERV9GSVJTVCA9IDEsCiBBVURJT19GT1JNQVRfQ09ERV9M SU5FQVJQQ00gPSBBVURJT19GT1JNQVRfQ09ERV9GSVJTVCwKCiBBVURJT19GT1JNQVRfQ09ERV9B QzMsCgogQVVESU9fRk9STUFUX0NPREVfTVBFRzEsCgogQVVESU9fRk9STUFUX0NPREVfTVAzLAoK IEFVRElPX0ZPUk1BVF9DT0RFX01QRUcyLAogQVVESU9fRk9STUFUX0NPREVfQUFDLAogQVVESU9f Rk9STUFUX0NPREVfRFRTLAogQVVESU9fRk9STUFUX0NPREVfQVRSQUMsCiBBVURJT19GT1JNQVRf Q09ERV8xQklUQVVESU8sCiBBVURJT19GT1JNQVRfQ09ERV9ET0xCWURJR0lUQUxQTFVTLAogQVVE SU9fRk9STUFUX0NPREVfRFRTX0hELAogQVVESU9fRk9STUFUX0NPREVfTUFUX01MUCwKIEFVRElP X0ZPUk1BVF9DT0RFX0RTVCwKIEFVRElPX0ZPUk1BVF9DT0RFX1dNQVBSTywKIEFVRElPX0ZPUk1B VF9DT0RFX0xBU1QsCiBBVURJT19GT1JNQVRfQ09ERV9DT1VOVCA9CiAgQVVESU9fRk9STUFUX0NP REVfTEFTVCAtIEFVRElPX0ZPUk1BVF9DT0RFX0ZJUlNUCn07CgpzdHJ1Y3QgYXVkaW9fbW9kZSB7 CgogZW51bSBhdWRpb19mb3JtYXRfY29kZSBmb3JtYXRfY29kZTsKCiB1aW50OF90IGNoYW5uZWxf Y291bnQ7CgogdW5pb24gYXVkaW9fc2FtcGxlX3JhdGVzIHNhbXBsZV9yYXRlczsKIHVuaW9uIHsK CiAgdWludDhfdCBzYW1wbGVfc2l6ZTsKCiAgdWludDhfdCBtYXhfYml0X3JhdGU7CgogIHVpbnQ4 X3QgdmVuZG9yX3NwZWNpZmljOwogfTsKfTsKCnN0cnVjdCBhdWRpb19pbmZvIHsKIHN0cnVjdCBh dWRpb19pbmZvX2ZsYWdzIGZsYWdzOwogdWludDMyX3QgdmlkZW9fbGF0ZW5jeTsKIHVpbnQzMl90 IGF1ZGlvX2xhdGVuY3k7CiB1aW50MzJfdCBkaXNwbGF5X2luZGV4OwogdWludDhfdCBkaXNwbGF5 X25hbWVbMjBdOwogdWludDMyX3QgbWFudWZhY3R1cmVfaWQ7CiB1aW50MzJfdCBwcm9kdWN0X2lk OwoKIHVpbnQzMl90IHBvcnRfaWRbMl07CiB1aW50MzJfdCBtb2RlX2NvdW50OwoKIHN0cnVjdCBh dWRpb19tb2RlIG1vZGVzWzE2XTsKfTsKc3RydWN0IGF1ZGlvX2NoZWNrIHsKIHVuc2lnbmVkIGlu dCBhdWRpb19wYWNrZXRfdHlwZTsKIHVuc2lnbmVkIGludCBtYXhfYXVkaW9zYW1wbGVfcmF0ZTsK IHVuc2lnbmVkIGludCBhY2F0Owp9OwplbnVtIGRjX2luZm9mcmFtZV90eXBlIHsKIERDX0hETUlf SU5GT0ZSQU1FX1RZUEVfVkVORE9SID0gMHg4MSwKIERDX0hETUlfSU5GT0ZSQU1FX1RZUEVfQVZJ ID0gMHg4MiwKIERDX0hETUlfSU5GT0ZSQU1FX1RZUEVfU1BEID0gMHg4MywKIERDX0hETUlfSU5G T0ZSQU1FX1RZUEVfQVVESU8gPSAweDg0LAogRENfRFBfSU5GT0ZSQU1FX1RZUEVfUFBTID0gMHgx MCwKfTsKCnN0cnVjdCBkY19pbmZvX3BhY2tldCB7CiBib29sIHZhbGlkOwogdWludDhfdCBoYjA7 CiB1aW50OF90IGhiMTsKIHVpbnQ4X3QgaGIyOwogdWludDhfdCBoYjM7CiB1aW50OF90IHNiWzMy XTsKfTsKCnN0cnVjdCBkY19pbmZvX3BhY2tldF8xMjggewogYm9vbCB2YWxpZDsKIHVpbnQ4X3Qg aGIwOwogdWludDhfdCBoYjE7CiB1aW50OF90IGhiMjsKIHVpbnQ4X3QgaGIzOwogdWludDhfdCBz YlsxMjhdOwp9OwoKCgpzdHJ1Y3QgZGNfcGxhbmVfZmxpcF90aW1lIHsKIHVuc2lnbmVkIGludCB0 aW1lX2VsYXBzZWRfaW5fdXNbMTBdOwogdW5zaWduZWQgaW50IGluZGV4OwogdW5zaWduZWQgaW50 IHByZXZfdXBkYXRlX3RpbWVfaW5fdXM7Cn07CgpzdHJ1Y3QgcHNyX2NvbmZpZyB7CiB1bnNpZ25l ZCBjaGFyIHBzcl92ZXJzaW9uOwogdW5zaWduZWQgaW50IHBzcl9yZmJfc2V0dXBfdGltZTsKIGJv b2wgcHNyX2V4aXRfbGlua190cmFpbmluZ19yZXF1aXJlZDsKIGJvb2wgcHNyX2ZyYW1lX2NhcHR1 cmVfaW5kaWNhdGlvbl9yZXE7CiB1bnNpZ25lZCBpbnQgcHNyX3NkcF90cmFuc21pdF9saW5lX251 bV9kZWFkbGluZTsKIGJvb2wgYWxsb3dfc211X29wdGltaXphdGlvbnM7Cn07Cgp1bmlvbiBkbWN1 X3Bzcl9sZXZlbCB7CiBzdHJ1Y3QgewogIHVuc2lnbmVkIGludCBTS0lQX0NSQzoxOwogIHVuc2ln bmVkIGludCBTS0lQX0RQX1ZJRF9TVFJFQU1fRElTQUJMRToxOwogIHVuc2lnbmVkIGludCBTS0lQ X1BIWV9QT1dFUl9ET1dOOjE7CiAgdW5zaWduZWQgaW50IFNLSVBfQVVYX0FDS19DSEVDSzoxOwog IHVuc2lnbmVkIGludCBTS0lQX0NSVENfRElTQUJMRToxOwogIHVuc2lnbmVkIGludCBTS0lQX0FV WF9SRkJfQ0FQVFVSRV9DSEVDSzoxOwogIHVuc2lnbmVkIGludCBTS0lQX1NNVV9OT1RJRklDQVRJ T046MTsKICB1bnNpZ25lZCBpbnQgU0tJUF9BVVRPX1NUQVRFX0FEVkFOQ0U6MTsKICB1bnNpZ25l ZCBpbnQgRElTQUJMRV9QU1JfRU5UUllfQUJPUlQ6MTsKICB1bnNpZ25lZCBpbnQgU0tJUF9TSU5H TEVfT1RHX0RJU0FCTEU6MTsKICB1bnNpZ25lZCBpbnQgUkVTRVJWRUQ6MjI7CiB9IGJpdHM7CiB1 bnNpZ25lZCBpbnQgdTMyYWxsOwp9OwoKZW51bSBwaHlzaWNhbF9waHlfaWQgewogUEhZTERfMCwK IFBIWUxEXzEsCiBQSFlMRF8yLAogUEhZTERfMywKIFBIWUxEXzQsCiBQSFlMRF81LAogUEhZTERf NiwKIFBIWUxEXzcsCiBQSFlMRF84LAogUEhZTERfOSwKIFBIWUxEX0NPVU5ULAogUEhZTERfVU5L Tk9XTiA9ICgtMUwpCn07CgplbnVtIHBoeV90eXBlIHsKIFBIWV9UWVBFX1VOS05PV04gPSAxLAog UEhZX1RZUEVfUENJRV9QSFkgPSAyLAogUEhZX1RZUEVfVU5JUEhZID0gMywKfTsKCnN0cnVjdCBw c3JfY29udGV4dCB7CgogZW51bSBjaGFubmVsX2lkIGNoYW5uZWw7CgogZW51bSB0cmFuc21pdHRl ciB0cmFuc21pdHRlcklkOwoKIGVudW0gZW5naW5lX2lkIGVuZ2luZUlkOwoKIGVudW0gY29udHJv bGxlcl9pZCBjb250cm9sbGVySWQ7CgogZW51bSBwaHlfdHlwZSBwaHlUeXBlOwoKIGVudW0gcGh5 c2ljYWxfcGh5X2lkIHNtdVBoeUlkOwoKCgoKCiB1bnNpZ25lZCBpbnQgY3J0Y1RpbWluZ1ZlcnRp Y2FsVG90YWw7CgoKCiBib29sIHBzclN1cHBvcnRlZERpc3BsYXlDb25maWc7CgogYm9vbCBwc3JF eGl0TGlua1RyYWluaW5nUmVxdWlyZWQ7CgoKCgoKCiBib29sIHBzckZyYW1lQ2FwdHVyZUluZGlj YXRpb25SZXE7CgoKCiB1bnNpZ25lZCBpbnQgc2RwVHJhbnNtaXRMaW5lTnVtRGVhZGxpbmU7CgoK CiB1bnNpZ25lZCBpbnQgdnN5bmNfcmF0ZV9oejsKIHVuc2lnbmVkIGludCBza2lwUHNyV2FpdEZv clBsbExvY2s7CiB1bnNpZ25lZCBpbnQgbnVtYmVyT2ZDb250cm9sbGVyczsKCgoKCiBib29sIHJm Yl91cGRhdGVfYXV0b19lbjsKCiB1bnNpZ25lZCBpbnQgdGltZWh5c3RfZnJhbWVzOwoKIHVuc2ln bmVkIGludCBoeXN0X2xpbmVzOwoKCgogdW5zaWduZWQgaW50IGF1eF9yZXBlYXRzOwoKIHVuaW9u IGRtY3VfcHNyX2xldmVsIHBzcl9sZXZlbDsKCgoKIHVuc2lnbmVkIGludCBmcmFtZV9kZWxheTsK IGJvb2wgYWxsb3dfc211X29wdGltaXphdGlvbnM7Cn07CgpzdHJ1Y3QgY29sb3JzcGFjZV90cmFu c2Zvcm0gewogc3RydWN0IGZpeGVkMzFfMzIgbWF0cml4WzEyXTsKIGJvb2wgZW5hYmxlX3JlbWFw Owp9OwoKZW51bSBpMmNfbW90X21vZGUgewogSTJDX01PVF9VTkRFRiwKIEkyQ19NT1RfVFJVRSwK IEkyQ19NT1RfRkFMU0UKfTsKCnN0cnVjdCBBc2ljU3RhdGVFeCB7CiB1bnNpZ25lZCBpbnQgbWVt b3J5Q2xvY2s7CiB1bnNpZ25lZCBpbnQgZGlzcGxheUNsb2NrOwogdW5zaWduZWQgaW50IGVuZ2lu ZUNsb2NrOwogdW5zaWduZWQgaW50IG1heFN1cHBvcnRlZERwcENsb2NrOwogdW5zaWduZWQgaW50 IGRwcENsb2NrOwogdW5zaWduZWQgaW50IHNvY0Nsb2NrOwogdW5zaWduZWQgaW50IGRjZkNsb2Nr RGVlcFNsZWVwOwogdW5zaWduZWQgaW50IGZDbG9jazsKIHVuc2lnbmVkIGludCBwaHlDbG9jazsK fTsKCgplbnVtIGRjX2Nsb2NrX3R5cGUgewogRENfQ0xPQ0tfVFlQRV9ESVNQQ0xLID0gMCwKIERD X0NMT0NLX1RZUEVfRFBQQ0xLID0gMSwKfTsKCnN0cnVjdCBkY19jbG9ja19jb25maWcgewogdWlu dDMyX3QgbWF4X2Nsb2NrX2toejsKIHVpbnQzMl90IG1pbl9jbG9ja19raHo7CiB1aW50MzJfdCBi d19yZXF1aXJlcXVpcmVkX2Nsb2NrX2toejsKIHVpbnQzMl90IGN1cnJlbnRfY2xvY2tfa2h6Owp9 OwoKCnVuaW9uIGRzY19zbGljZV9jYXBzMSB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgTlVNX1NMSUNF U18xIDogMTsKICB1aW50OF90IE5VTV9TTElDRVNfMiA6IDE7CiAgdWludDhfdCBSRVNFUlZFRCA6 IDE7CiAgdWludDhfdCBOVU1fU0xJQ0VTXzQgOiAxOwogIHVpbnQ4X3QgTlVNX1NMSUNFU182IDog MTsKICB1aW50OF90IE5VTV9TTElDRVNfOCA6IDE7CiAgdWludDhfdCBOVU1fU0xJQ0VTXzEwIDog MTsKICB1aW50OF90IE5VTV9TTElDRVNfMTIgOiAxOwogfSBiaXRzOwogdWludDhfdCByYXc7Cn07 Cgp1bmlvbiBkc2Nfc2xpY2VfY2FwczIgewogc3RydWN0IHsKICB1aW50OF90IE5VTV9TTElDRVNf MTYgOiAxOwogIHVpbnQ4X3QgTlVNX1NMSUNFU18yMCA6IDE7CiAgdWludDhfdCBOVU1fU0xJQ0VT XzI0IDogMTsKICB1aW50OF90IFJFU0VSVkVEIDogNTsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9 OwoKdW5pb24gZHNjX2NvbG9yX2Zvcm1hdHMgewogc3RydWN0IHsKICB1aW50OF90IFJHQiA6IDE7 CiAgdWludDhfdCBZQ0JDUl80NDQgOiAxOwogIHVpbnQ4X3QgWUNCQ1JfU0lNUExFXzQyMiA6IDE7 CiAgdWludDhfdCBZQ0JDUl9OQVRJVkVfNDIyIDogMTsKICB1aW50OF90IFlDQkNSX05BVElWRV80 MjAgOiAxOwogIHVpbnQ4X3QgUkVTRVJWRUQgOiAzOwogfSBiaXRzOwogdWludDhfdCByYXc7Cn07 Cgp1bmlvbiBkc2NfY29sb3JfZGVwdGggewogc3RydWN0IHsKICB1aW50OF90IFJFU0VSVkVEMSA6 IDE7CiAgdWludDhfdCBDT0xPUl9ERVBUSF84X0JQQyA6IDE7CiAgdWludDhfdCBDT0xPUl9ERVBU SF8xMF9CUEMgOiAxOwogIHVpbnQ4X3QgQ09MT1JfREVQVEhfMTJfQlBDIDogMTsKICB1aW50OF90 IFJFU0VSVkVEMiA6IDM7CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCnN0cnVjdCBkc2NfZGVj X2RwY2RfY2FwcyB7CiBib29sIGlzX2RzY19zdXBwb3J0ZWQ7CiB1aW50OF90IGRzY192ZXJzaW9u OwogaW50MzJfdCByY19idWZmZXJfc2l6ZTsKIHVuaW9uIGRzY19zbGljZV9jYXBzMSBzbGljZV9j YXBzMTsKIHVuaW9uIGRzY19zbGljZV9jYXBzMiBzbGljZV9jYXBzMjsKIGludDMyX3QgbGJfYml0 X2RlcHRoOwogYm9vbCBpc19ibG9ja19wcmVkX3N1cHBvcnRlZDsKIGludDMyX3QgZWRwX21heF9i aXRzX3Blcl9waXhlbDsKIHVuaW9uIGRzY19jb2xvcl9mb3JtYXRzIGNvbG9yX2Zvcm1hdHM7CiB1 bmlvbiBkc2NfY29sb3JfZGVwdGggY29sb3JfZGVwdGg7CiBpbnQzMl90IHRocm91Z2hwdXRfbW9k ZV8wX21wczsKIGludDMyX3QgdGhyb3VnaHB1dF9tb2RlXzFfbXBzOwogaW50MzJfdCBtYXhfc2xp Y2Vfd2lkdGg7CiB1aW50MzJfdCBicHBfaW5jcmVtZW50X2RpdjsKCgogdWludDMyX3QgYnJhbmNo X292ZXJhbGxfdGhyb3VnaHB1dF8wX21wczsKIHVpbnQzMl90IGJyYW5jaF9vdmVyYWxsX3Rocm91 Z2hwdXRfMV9tcHM7CiB1aW50MzJfdCBicmFuY2hfbWF4X2xpbmVfd2lkdGg7Cn07CiMgMzAgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvZGNjZy5oIiAy CgpzdHJ1Y3QgZGNjZyB7CiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwogY29uc3Qgc3RydWN0IGRj Y2dfZnVuY3MgKmZ1bmNzOwoKIGludCByZWZfZHBwY2xrOwp9OwoKc3RydWN0IGRjY2dfZnVuY3Mg ewogdm9pZCAoKnVwZGF0ZV9kcHBfZHRvKShzdHJ1Y3QgZGNjZyAqZGNjZywKICAgaW50IGRwcF9p bnN0LAogICBpbnQgcmVxX2RwcGNsayk7CiB2b2lkICgqZ2V0X2RjY2dfcmVmX2ZyZXEpKHN0cnVj dCBkY2NnICpkY2NnLAogICB1bnNpZ25lZCBpbnQgeHRhbGluX2ZyZXFfaW5LaHosCiAgIHVuc2ln bmVkIGludCAqZGNjZ19yZWZfZnJlcV9pbktoeik7CiB2b2lkICgqZGNjZ19pbml0KShzdHJ1Y3Qg ZGNjZyAqZGNjZyk7Cn07CiMgMjcgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3JfaW50ZXJuYWwuaCIgMQoj IDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Ns a19tZ3JfaW50ZXJuYWwuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3IuaCIgMQojIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3IuaCIKIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMQojIDI5ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaCIgMQojIDMwICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMgoKIyAxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9sb2dnZXJfdHlwZXMuaCIgMQoj IDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9sb2dn ZXJfdHlwZXMuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvb3NfdHlwZXMuaCIgMQojIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvaW5jbHVkZS9sb2dnZXJfdHlwZXMuaCIgMgojIDcyICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9sb2dnZXJfdHlwZXMuaCIKc3RydWN0IGRhbF9s b2dnZXI7CgpzdHJ1Y3QgZGNfbG9nX2J1ZmZlcl9jdHggewogY2hhciAqYnVmOwogc2l6ZV90IHBv czsKIHNpemVfdCBzaXplOwp9OwoKZW51bSBkY19sb2dfdHlwZSB7CiBMT0dfRVJST1IgPSAwLAog TE9HX1dBUk5JTkcsCiBMT0dfREVCVUcsCiBMT0dfREMsCiBMT0dfRFROLAogTE9HX1NVUkZBQ0Us CiBMT0dfSFdfSE9UUExVRywKIExPR19IV19MSU5LX1RSQUlOSU5HLAogTE9HX0hXX1NFVF9NT0RF LAogTE9HX0hXX1JFU1VNRV9TMywKIExPR19IV19BVURJTywKIExPR19IV19IUERfSVJRLAogTE9H X01TVCwKIExPR19TQ0FMRVIsCiBMT0dfQklPUywKIExPR19CQU5EV0lEVEhfQ0FMQ1MsCiBMT0df QkFORFdJRFRIX1ZBTElEQVRJT04sCiBMT0dfSTJDX0FVWCwKIExPR19TWU5DLAogTE9HX0JBQ0tM SUdIVCwKIExPR19GRUFUVVJFX09WRVJSSURFLAogTE9HX0RFVEVDVElPTl9FRElEX1BBUlNFUiwK IExPR19ERVRFQ1RJT05fRFBfQ0FQUywKIExPR19SRVNPVVJDRSwKIExPR19ETUwsCiBMT0dfRVZF TlRfTU9ERV9TRVQsCiBMT0dfRVZFTlRfREVURUNUSU9OLAogTE9HX0VWRU5UX0xJTktfVFJBSU5J TkcsCiBMT0dfRVZFTlRfTElOS19MT1NTLAogTE9HX0VWRU5UX1VOREVSRkxPVywKIExPR19JRl9U UkFDRSwKIExPR19QRVJGX1RSQUNFLAogTE9HX0RJU1BMQVlTVEFUUywKIExPR19IRE1JX1JFVElN RVJfUkVEUklWRVIsCiBMT0dfRFNDLAogTE9HX0RXQiwKIExPR19HQU1NQV9ERUJVRywKIExPR19N QVhfSFdfUE9JTlRTLAogTE9HX0FMTF9URl9DSEFOTkVMUywKIExPR19TQU1QTEVfMURMVVQsCiBM T0dfU0VDVElPTl9UT1RBTF9DT1VOVAp9OwojIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9pbmNsdWRlL2dwaW9fdHlwZXMuaCIgMQojIDQwICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncGlvX3R5cGVzLmgiCmVudW0gZ3Bp b19yZXN1bHQgewogR1BJT19SRVNVTFRfT0ssCiBHUElPX1JFU1VMVF9OVUxMX0hBTkRMRSwKIEdQ SU9fUkVTVUxUX0lOVkFMSURfREFUQSwKIEdQSU9fUkVTVUxUX0RFVklDRV9CVVNZLAogR1BJT19S RVNVTFRfT1BFTl9GQUlMRUQsCiBHUElPX1JFU1VMVF9BTFJFQURZX09QRU5FRCwKIEdQSU9fUkVT VUxUX05PTl9TUEVDSUZJQ19FUlJPUgp9OwojIDU4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncGlvX3R5cGVzLmgiCmVudW0gZ3Bpb19pZCB7CiBHUElP X0lEX1VOS05PV04gPSAoLTEpLAogR1BJT19JRF9ERENfREFUQSwKIEdQSU9fSURfRERDX0NMT0NL LAogR1BJT19JRF9HRU5FUklDLAogR1BJT19JRF9IUEQsCiBHUElPX0lEX0dQSU9fUEFELAogR1BJ T19JRF9WSVBfUEFELAogR1BJT19JRF9TWU5DLAogR1BJT19JRF9HU0wsCiBHUElPX0lEX0NPVU5U LAogR1BJT19JRF9NSU4gPSBHUElPX0lEX0REQ19EQVRBLAogR1BJT19JRF9NQVggPSBHUElPX0lE X0dTTAp9OwoKCgoKc3RydWN0IGdwaW9fcGluX2luZm8gewogdWludDMyX3Qgb2Zmc2V0OwogdWlu dDMyX3Qgb2Zmc2V0X3k7CiB1aW50MzJfdCBvZmZzZXRfZW47CiB1aW50MzJfdCBvZmZzZXRfbWFz azsKCiB1aW50MzJfdCBtYXNrOwogdWludDMyX3QgbWFza195OwogdWludDMyX3QgbWFza19lbjsK IHVpbnQzMl90IG1hc2tfbWFzazsKfTsKCmVudW0gZ3Bpb19waW5fb3V0cHV0X3N0YXRlIHsKIEdQ SU9fUElOX09VVFBVVF9TVEFURV9BQ1RJVkVfTE9XLAogR1BJT19QSU5fT1VUUFVUX1NUQVRFX0FD VElWRV9ISUdILAogR1BJT19QSU5fT1VUUFVUX1NUQVRFX0RFRkFVTFQgPSBHUElPX1BJTl9PVVRQ VVRfU1RBVEVfQUNUSVZFX0xPVwp9OwoKZW51bSBncGlvX2dlbmVyaWMgewogR1BJT19HRU5FUklD X1VOS05PV04gPSAoLTEpLAogR1BJT19HRU5FUklDX0EsCiBHUElPX0dFTkVSSUNfQiwKIEdQSU9f R0VORVJJQ19DLAogR1BJT19HRU5FUklDX0QsCiBHUElPX0dFTkVSSUNfRSwKIEdQSU9fR0VORVJJ Q19GLAogR1BJT19HRU5FUklDX0csCiBHUElPX0dFTkVSSUNfQ09VTlQsCiBHUElPX0dFTkVSSUNf TUlOID0gR1BJT19HRU5FUklDX0EsCiBHUElPX0dFTkVSSUNfTUFYID0gR1BJT19HRU5FUklDX0IK fTsKCmVudW0gZ3Bpb19ocGQgewogR1BJT19IUERfVU5LTk9XTiA9ICgtMSksCiBHUElPX0hQRF8x LAogR1BJT19IUERfMiwKIEdQSU9fSFBEXzMsCiBHUElPX0hQRF80LAogR1BJT19IUERfNSwKIEdQ SU9fSFBEXzYsCiBHUElPX0hQRF9DT1VOVCwKIEdQSU9fSFBEX01JTiA9IEdQSU9fSFBEXzEsCiBH UElPX0hQRF9NQVggPSBHUElPX0hQRF82Cn07CgplbnVtIGdwaW9fZ3Bpb19wYWQgewogR1BJT19H UElPX1BBRF9VTktOT1dOID0gKC0xKSwKIEdQSU9fR1BJT19QQURfMCwKIEdQSU9fR1BJT19QQURf MSwKIEdQSU9fR1BJT19QQURfMiwKIEdQSU9fR1BJT19QQURfMywKIEdQSU9fR1BJT19QQURfNCwK IEdQSU9fR1BJT19QQURfNSwKIEdQSU9fR1BJT19QQURfNiwKIEdQSU9fR1BJT19QQURfNywKIEdQ SU9fR1BJT19QQURfOCwKIEdQSU9fR1BJT19QQURfOSwKIEdQSU9fR1BJT19QQURfMTAsCiBHUElP X0dQSU9fUEFEXzExLAogR1BJT19HUElPX1BBRF8xMiwKIEdQSU9fR1BJT19QQURfMTMsCiBHUElP X0dQSU9fUEFEXzE0LAogR1BJT19HUElPX1BBRF8xNSwKIEdQSU9fR1BJT19QQURfMTYsCiBHUElP X0dQSU9fUEFEXzE3LAogR1BJT19HUElPX1BBRF8xOCwKIEdQSU9fR1BJT19QQURfMTksCiBHUElP X0dQSU9fUEFEXzIwLAogR1BJT19HUElPX1BBRF8yMSwKIEdQSU9fR1BJT19QQURfMjIsCiBHUElP X0dQSU9fUEFEXzIzLAogR1BJT19HUElPX1BBRF8yNCwKIEdQSU9fR1BJT19QQURfMjUsCiBHUElP X0dQSU9fUEFEXzI2LAogR1BJT19HUElPX1BBRF8yNywKIEdQSU9fR1BJT19QQURfMjgsCiBHUElP X0dQSU9fUEFEXzI5LAogR1BJT19HUElPX1BBRF8zMCwKIEdQSU9fR1BJT19QQURfQ09VTlQsCiBH UElPX0dQSU9fUEFEX01JTiA9IEdQSU9fR1BJT19QQURfMCwKIEdQSU9fR1BJT19QQURfTUFYID0g R1BJT19HUElPX1BBRF8zMAp9OwoKZW51bSBncGlvX3ZpcF9wYWQgewogR1BJT19WSVBfUEFEX1VO S05PV04gPSAoLTEpLAoKCiBHUElPX1ZJUF9QQURfU0NMLAoKCiBHUElPX1ZJUF9QQURfU0RBLAog R1BJT19WSVBfUEFEX1ZIQUQsCiBHUElPX1ZJUF9QQURfVlBIQ1RMLAogR1BJT19WSVBfUEFEX1ZJ UENMSywKIEdQSU9fVklQX1BBRF9WSUQsCiBHUElPX1ZJUF9QQURfVlBDTEswLAogR1BJT19WSVBf UEFEX0RWQUxJRCwKIEdQSU9fVklQX1BBRF9QU1lOQywKIEdQSU9fVklQX1BBRF9DT1VOVCwKIEdQ SU9fVklQX1BBRF9NSU4gPSBHUElPX1ZJUF9QQURfU0NMLAogR1BJT19WSVBfUEFEX01BWCA9IEdQ SU9fVklQX1BBRF9QU1lOQwp9OwoKZW51bSBncGlvX3N5bmMgewogR1BJT19TWU5DX1VOS05PV04g PSAoLTEpLAogR1BJT19TWU5DX0hTWU5DX0EsCiBHUElPX1NZTkNfVlNZTkNfQSwKIEdQSU9fU1lO Q19IU1lOQ19CLAogR1BJT19TWU5DX1ZTWU5DX0IsCiBHUElPX1NZTkNfQ09VTlQsCiBHUElPX1NZ TkNfTUlOID0gR1BJT19TWU5DX0hTWU5DX0EsCiBHUElPX1NZTkNfTUFYID0gR1BJT19TWU5DX1ZT WU5DX0IKfTsKCmVudW0gZ3Bpb19nc2wgewogR1BJT19HU0xfVU5LTk9XTiA9ICgtMSksCiBHUElP X0dTTF9HRU5MT0NLX0NMT0NLLAogR1BJT19HU0xfR0VOTE9DS19WU1lOQywKIEdQSU9fR1NMX1NX QVBMT0NLX0EsCiBHUElPX0dTTF9TV0FQTE9DS19CLAogR1BJT19HU0xfQ09VTlQsCiBHUElPX0dT TF9NSU4gPSBHUElPX0dTTF9HRU5MT0NLX0NMT0NLLAogR1BJT19HU0xfTUFYID0gR1BJT19HU0xf U1dBUExPQ0tfQgp9OwoKCgoKCgplbnVtIGdwaW9fZGRjX2xpbmUgewogR1BJT19ERENfTElORV9V TktOT1dOID0gKC0xKSwKIEdQSU9fRERDX0xJTkVfRERDMSwKIEdQSU9fRERDX0xJTkVfRERDMiwK IEdQSU9fRERDX0xJTkVfRERDMywKIEdQSU9fRERDX0xJTkVfRERDNCwKIEdQSU9fRERDX0xJTkVf RERDNSwKIEdQSU9fRERDX0xJTkVfRERDNiwKIEdQSU9fRERDX0xJTkVfRERDX1ZHQSwKIEdQSU9f RERDX0xJTkVfVklQX1BBRCwKIEdQSU9fRERDX0xJTkVfSTJDX1BBRCA9IEdQSU9fRERDX0xJTkVf VklQX1BBRCwKIEdQSU9fRERDX0xJTkVfQ09VTlQsCiBHUElPX0REQ19MSU5FX01JTiA9IEdQSU9f RERDX0xJTkVfRERDMSwKIEdQSU9fRERDX0xJTkVfTUFYID0gR1BJT19ERENfTElORV9JMkNfUEFE Cn07CgoKCgoKCmVudW0gZ3Bpb19tb2RlIHsKIEdQSU9fTU9ERV9VTktOT1dOID0gKC0xKSwKIEdQ SU9fTU9ERV9JTlBVVCwKIEdQSU9fTU9ERV9PVVRQVVQsCiBHUElPX01PREVfRkFTVF9PVVRQVVQs CiBHUElPX01PREVfSEFSRFdBUkUsCiBHUElPX01PREVfSU5URVJSVVBUCn07CiMgMjQ2ICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncGlvX3R5cGVzLmgi CmVudW0gZ3Bpb19zaWduYWxfc291cmNlIHsKIEdQSU9fU0lHTkFMX1NPVVJDRV9VTktOT1dOID0g KC0xKSwKIEdQSU9fU0lHTkFMX1NPVVJDRV9EQUNBX1NURVJFT19TWU5DLAogR1BJT19TSUdOQUxf U09VUkNFX1BBU1NfVEhST1VHSF9TVEVSRU9fU1lOQywKIEdQSU9fU0lHTkFMX1NPVVJDRV9EQUNC X1NURVJFT19TWU5DLAogR1BJT19TSUdOQUxfU09VUkNFX0RBQ0FfSFNZTkMsCiBHUElPX1NJR05B TF9TT1VSQ0VfREFDQl9IU1lOQywKIEdQSU9fU0lHTkFMX1NPVVJDRV9EQUNBX1ZTWU5DLAogR1BJ T19TSUdOQUxfU09VUkNFX0RBQ0JfVlNZTkMsCn07CgplbnVtIGdwaW9fc3RlcmVvX3NvdXJjZSB7 CiBHUElPX1NURVJFT19TT1VSQ0VfVU5LTk9XTiA9ICgtMSksCiBHUElPX1NURVJFT19TT1VSQ0Vf RDEsCiBHUElPX1NURVJFT19TT1VSQ0VfRDIsCiBHUElPX1NURVJFT19TT1VSQ0VfRDMsCiBHUElP X1NURVJFT19TT1VSQ0VfRDQsCiBHUElPX1NURVJFT19TT1VSQ0VfRDUsCiBHUElPX1NURVJFT19T T1VSQ0VfRDYKfTsKCgoKCgplbnVtIGdwaW9fY29uZmlnX3R5cGUgewogR1BJT19DT05GSUdfVFlQ RV9OT05FLAogR1BJT19DT05GSUdfVFlQRV9EREMsCiBHUElPX0NPTkZJR19UWVBFX0hQRCwKIEdQ SU9fQ09ORklHX1RZUEVfR0VORVJJQ19NVVgsCiBHUElPX0NPTkZJR19UWVBFX0dTTF9NVVgsCiBH UElPX0NPTkZJR19UWVBFX0kyQ19BVVhfRFVBTF9NT0RFCn07CgoKCmVudW0gZ3Bpb19kZGNfY29u ZmlnX3R5cGUgewogR1BJT19ERENfQ09ORklHX1RZUEVfTU9ERV9BVVgsCiBHUElPX0REQ19DT05G SUdfVFlQRV9NT0RFX0kyQywKIEdQSU9fRERDX0NPTkZJR19UWVBFX1BPTExfRk9SX0NPTk5FQ1Qs CiBHUElPX0REQ19DT05GSUdfVFlQRV9QT0xMX0ZPUl9ESVNDT05ORUNULAogR1BJT19ERENfQ09O RklHX1RZUEVfRElTQUJMRV9QT0xMSU5HCn07CgpzdHJ1Y3QgZ3Bpb19kZGNfY29uZmlnIHsKIGVu dW0gZ3Bpb19kZGNfY29uZmlnX3R5cGUgdHlwZTsKIGJvb2wgZGF0YV9lbl9iaXRfcHJlc2VudDsK IGJvb2wgY2xvY2tfZW5fYml0X3ByZXNlbnQ7Cn07CgoKCnN0cnVjdCBncGlvX2hwZF9jb25maWcg ewogdWludDMyX3QgZGVsYXlfb25fY29ubmVjdDsKIHVpbnQzMl90IGRlbGF5X29uX2Rpc2Nvbm5l Y3Q7Cn07CgpzdHJ1Y3QgZ3Bpb19nZW5lcmljX211eF9jb25maWcgewogYm9vbCBlbmFibGVfb3V0 cHV0X2Zyb21fbXV4OwogZW51bSBncGlvX3NpZ25hbF9zb3VyY2UgbXV4X3NlbGVjdDsKIGVudW0g Z3Bpb19zdGVyZW9fc291cmNlIHN0ZXJlb19zZWxlY3Q7Cn07CgplbnVtIGdwaW9fZ3NsX211eF9j b25maWdfdHlwZSB7CiBHUElPX0dTTF9NVVhfQ09ORklHX1RZUEVfRElTQUJMRSwKIEdQSU9fR1NM X01VWF9DT05GSUdfVFlQRV9USU1JTkdfU1lOQywKIEdQSU9fR1NMX01VWF9DT05GSUdfVFlQRV9G TElQX1NZTkMKfTsKCnN0cnVjdCBncGlvX2dzbF9tdXhfY29uZmlnIHsKIGVudW0gZ3Bpb19nc2xf bXV4X2NvbmZpZ190eXBlIHR5cGU7CgoKIHVpbnQzMl90IGdzbF9ncm91cDsKfTsKCnN0cnVjdCBn cGlvX2NvbmZpZ19kYXRhIHsKIGVudW0gZ3Bpb19jb25maWdfdHlwZSB0eXBlOwogdW5pb24gewog IHN0cnVjdCBncGlvX2RkY19jb25maWcgZGRjOwogIHN0cnVjdCBncGlvX2hwZF9jb25maWcgaHBk OwogIHN0cnVjdCBncGlvX2dlbmVyaWNfbXV4X2NvbmZpZyBnZW5lcmljX211eDsKICBzdHJ1Y3Qg Z3Bpb19nc2xfbXV4X2NvbmZpZyBnc2xfbXV4OwogfSBjb25maWc7Cn07CiMgMzMgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCiMgMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvbGlua19zZXJ2aWNlX3R5cGVz LmgiIDEKIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1 ZGUvbGlua19zZXJ2aWNlX3R5cGVzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2luY2x1ZGUvZGFsX3R5cGVzLmgiIDEKIyAzMSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvbGlua19zZXJ2aWNlX3R5cGVzLmgiIDIK IyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaXJxX3R5cGVz LmgiIDEKIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1 ZGUvbGlua19zZXJ2aWNlX3R5cGVzLmgiIDIKCgpzdHJ1Y3QgZGRjOwpzdHJ1Y3QgaXJxX21hbmFn ZXI7CgplbnVtIHsKIE1BWF9DT05UUk9MTEVSX05VTSA9IDYKfTsKCmVudW0gZHBfcG93ZXJfc3Rh dGUgewogRFBfUE9XRVJfU1RBVEVfRDAgPSAxLAogRFBfUE9XRVJfU1RBVEVfRDMKfTsKCmVudW0g ZWRwX3JldmlzaW9uIHsKCiBFRFBfUkVWSVNJT05fMTEgPSAweDAwLAoKIEVEUF9SRVZJU0lPTl8x MiA9IDB4MDEsCgogRURQX1JFVklTSU9OXzEzID0gMHgwMgp9OwoKZW51bSB7CiBMSU5LX1JBVEVf UkVGX0ZSRVFfSU5fS0haID0gMjcwMDAKfTsKCmVudW0gbGlua190cmFpbmluZ19yZXN1bHQgewog TElOS19UUkFJTklOR19TVUNDRVNTLAogTElOS19UUkFJTklOR19DUl9GQUlMX0xBTkUwLAogTElO S19UUkFJTklOR19DUl9GQUlMX0xBTkUxLAogTElOS19UUkFJTklOR19DUl9GQUlMX0xBTkUyMywK CiBMSU5LX1RSQUlOSU5HX0VRX0ZBSUxfQ1IsCgogTElOS19UUkFJTklOR19FUV9GQUlMX0VRLAog TElOS19UUkFJTklOR19MUUFfRkFJTCwKfTsKCnN0cnVjdCBsaW5rX3RyYWluaW5nX3NldHRpbmdz IHsKIHN0cnVjdCBkY19saW5rX3NldHRpbmdzIGxpbmtfc2V0dGluZ3M7CiBzdHJ1Y3QgZGNfbGFu ZV9zZXR0aW5ncyBsYW5lX3NldHRpbmdzW0xBTkVfQ09VTlRfRFBfTUFYXTsKCiBlbnVtIGRjX3Zv bHRhZ2Vfc3dpbmcgKnZvbHRhZ2Vfc3dpbmc7CiBlbnVtIGRjX3ByZV9lbXBoYXNpcyAqcHJlX2Vt cGhhc2lzOwogZW51bSBkY19wb3N0X2N1cnNvcjIgKnBvc3RfY3Vyc29yMjsKCiB1aW50MTZfdCBj cl9wYXR0ZXJuX3RpbWU7CiB1aW50MTZfdCBlcV9wYXR0ZXJuX3RpbWU7CiBlbnVtIGRjX2RwX3Ry YWluaW5nX3BhdHRlcm4gcGF0dGVybl9mb3JfZXE7CgogYm9vbCBlbmhhbmNlZF9mcmFtaW5nOwog Ym9vbCBhbGxvd19pbnZhbGlkX21zYV90aW1pbmdfcGFyYW07Cn07CgoKCmVudW0gZHBfdGVzdF9w YXR0ZXJuIHsKCgogRFBfVEVTVF9QQVRURVJOX1ZJREVPX01PREUgPSAwLAoKCiBEUF9URVNUX1BB VFRFUk5fUEhZX1BBVFRFUk5fQkVHSU4sCiBEUF9URVNUX1BBVFRFUk5fRDEwMiA9IERQX1RFU1Rf UEFUVEVSTl9QSFlfUEFUVEVSTl9CRUdJTiwKIERQX1RFU1RfUEFUVEVSTl9TWU1CT0xfRVJST1Is CiBEUF9URVNUX1BBVFRFUk5fUFJCUzcsCiBEUF9URVNUX1BBVFRFUk5fODBCSVRfQ1VTVE9NLAog RFBfVEVTVF9QQVRURVJOX0NQMjUyMF8xLAogRFBfVEVTVF9QQVRURVJOX0NQMjUyMF8yLAogRFBf VEVTVF9QQVRURVJOX0hCUjJfQ09NUExJQU5DRV9FWUUgPSBEUF9URVNUX1BBVFRFUk5fQ1AyNTIw XzIsCiBEUF9URVNUX1BBVFRFUk5fQ1AyNTIwXzMsCgoKIERQX1RFU1RfUEFUVEVSTl9UUkFJTklO R19QQVRURVJOMSwKIERQX1RFU1RfUEFUVEVSTl9UUkFJTklOR19QQVRURVJOMiwKIERQX1RFU1Rf UEFUVEVSTl9UUkFJTklOR19QQVRURVJOMywKIERQX1RFU1RfUEFUVEVSTl9UUkFJTklOR19QQVRU RVJONCwKIERQX1RFU1RfUEFUVEVSTl9QSFlfUEFUVEVSTl9FTkQgPSBEUF9URVNUX1BBVFRFUk5f VFJBSU5JTkdfUEFUVEVSTjQsCgoKIERQX1RFU1RfUEFUVEVSTl9DT0xPUl9TUVVBUkVTLAogRFBf VEVTVF9QQVRURVJOX0NPTE9SX1NRVUFSRVNfQ0VBLAogRFBfVEVTVF9QQVRURVJOX1ZFUlRJQ0FM X0JBUlMsCiBEUF9URVNUX1BBVFRFUk5fSE9SSVpPTlRBTF9CQVJTLAogRFBfVEVTVF9QQVRURVJO X0NPTE9SX1JBTVAsCgoKIERQX1RFU1RfUEFUVEVSTl9BVURJT19PUEVSQVRPUl9ERUZJTkVELAog RFBfVEVTVF9QQVRURVJOX0FVRElPX1NBV1RPT1RILAoKIERQX1RFU1RfUEFUVEVSTl9VTlNVUFBP UlRFRAp9OwoKZW51bSBkcF90ZXN0X3BhdHRlcm5fY29sb3Jfc3BhY2UgewogRFBfVEVTVF9QQVRU RVJOX0NPTE9SX1NQQUNFX1JHQiwKIERQX1RFU1RfUEFUVEVSTl9DT0xPUl9TUEFDRV9ZQ0JDUjYw MSwKIERQX1RFU1RfUEFUVEVSTl9DT0xPUl9TUEFDRV9ZQ0JDUjcwOSwKIERQX1RFU1RfUEFUVEVS Tl9DT0xPUl9TUEFDRV9VTkRFRklORUQKfTsKCmVudW0gZHBfcGFuZWxfbW9kZSB7CgogRFBfUEFO RUxfTU9ERV9ERUZBVUxULAoKIERQX1BBTkVMX01PREVfRURQLAoKIERQX1BBTkVMX01PREVfU1BF Q0lBTAp9OwoKCnVuaW9uIGRwY2RfdHJhaW5pbmdfbGFuZV9zZXQgewogc3RydWN0IHsKCiAgdWlu dDhfdCBWT0xUQUdFX1NXSU5HX1NFVDoyOwogIHVpbnQ4X3QgTUFYX1NXSU5HX1JFQUNIRUQ6MTsK ICB1aW50OF90IFBSRV9FTVBIQVNJU19TRVQ6MjsKICB1aW50OF90IE1BWF9QUkVfRU1QSEFTSVNf UkVBQ0hFRDoxOwoKICB1aW50OF90IFBPU1RfQ1VSU09SMl9TRVQ6MjsKIyAxNjEgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2xpbmtfc2VydmljZV90eXBl cy5oIgogfSBiaXRzOwoKIHVpbnQ4X3QgcmF3Owp9OwoKCgpzdHJ1Y3QgZHBfbXN0X3N0cmVhbV9h bGxvY2F0aW9uIHsKIHVpbnQ4X3QgdmNwX2lkOwoKCiB1aW50OF90IHNsb3RfY291bnQ7Cn07CgoK c3RydWN0IGRwX21zdF9zdHJlYW1fYWxsb2NhdGlvbl90YWJsZSB7CgogaW50IHN0cmVhbV9jb3Vu dDsKCiBzdHJ1Y3QgZHBfbXN0X3N0cmVhbV9hbGxvY2F0aW9uIHN0cmVhbV9hbGxvY2F0aW9uc1tN QVhfQ09OVFJPTExFUl9OVU1dOwp9OwojIDM0ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2N0cmxfZGVmcy5oIiAxCiMgMjkgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2N0 cmxfZGVmcy5oIgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9p bmNsdWRlL2dycGhfb2JqZWN0X2RlZnMuaCIgMQojIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9jdHJsX2RlZnMuaCIgMgojIDQy ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29i amVjdF9jdHJsX2RlZnMuaCIKZW51bSBkaXNwbGF5X291dHB1dF9iaXRfZGVwdGggewogUEFORUxf VU5ERUZJTkUgPSAwLAogUEFORUxfNkJJVF9DT0xPUiA9IDEsCiBQQU5FTF84QklUX0NPTE9SID0g MiwKIFBBTkVMXzEwQklUX0NPTE9SID0gMywKIFBBTkVMXzEyQklUX0NPTE9SID0gNCwKIFBBTkVM XzE2QklUX0NPTE9SID0gNSwKfTsKCgoKZW51bSBkYWxfZGV2aWNlX3R5cGUgewogREVWSUNFX1RZ UEVfVU5LTk9XTiA9IDAsCiBERVZJQ0VfVFlQRV9MQ0QsCiBERVZJQ0VfVFlQRV9DUlQsCiBERVZJ Q0VfVFlQRV9ERlAsCiBERVZJQ0VfVFlQRV9DViwKIERFVklDRV9UWVBFX1RWLAogREVWSUNFX1RZ UEVfQ0YsCiBERVZJQ0VfVFlQRV9XSVJFTEVTUwp9OwoKCnN0cnVjdCBkZXZpY2VfaWQgewogZW51 bSBkYWxfZGV2aWNlX3R5cGUgZGV2aWNlX3R5cGU6MTY7CiB1aW50MzJfdCBlbnVtX2lkOjE2Owog dWludDE2X3QgcmF3X2RldmljZV90YWc7Cn07CgpzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2kyY19p bmZvIHsKIHN0cnVjdCBncGlvX2luZm8gewogIHVpbnQzMl90IGNsa19tYXNrX3JlZ2lzdGVyX2lu ZGV4OwogIHVpbnQzMl90IGNsa19lbl9yZWdpc3Rlcl9pbmRleDsKICB1aW50MzJfdCBjbGtfeV9y ZWdpc3Rlcl9pbmRleDsKICB1aW50MzJfdCBjbGtfYV9yZWdpc3Rlcl9pbmRleDsKICB1aW50MzJf dCBkYXRhX21hc2tfcmVnaXN0ZXJfaW5kZXg7CiAgdWludDMyX3QgZGF0YV9lbl9yZWdpc3Rlcl9p bmRleDsKICB1aW50MzJfdCBkYXRhX3lfcmVnaXN0ZXJfaW5kZXg7CiAgdWludDMyX3QgZGF0YV9h X3JlZ2lzdGVyX2luZGV4OwoKICB1aW50MzJfdCBjbGtfbWFza19zaGlmdDsKICB1aW50MzJfdCBj bGtfZW5fc2hpZnQ7CiAgdWludDMyX3QgY2xrX3lfc2hpZnQ7CiAgdWludDMyX3QgY2xrX2Ffc2hp ZnQ7CiAgdWludDMyX3QgZGF0YV9tYXNrX3NoaWZ0OwogIHVpbnQzMl90IGRhdGFfZW5fc2hpZnQ7 CiAgdWludDMyX3QgZGF0YV95X3NoaWZ0OwogIHVpbnQzMl90IGRhdGFfYV9zaGlmdDsKIH0gZ3Bp b19pbmZvOwoKIGJvb2wgaTJjX2h3X2Fzc2lzdDsKIHVpbnQzMl90IGkyY19saW5lOwogdWludDMy X3QgaTJjX2VuZ2luZV9pZDsKIHVpbnQzMl90IGkyY19zbGF2ZV9hZGRyZXNzOwp9OwoKc3RydWN0 IGdyYXBoaWNzX29iamVjdF9ocGRfaW5mbyB7CiB1aW50OF90IGhwZF9pbnRfZ3Bpb191aWQ7CiB1 aW50OF90IGhwZF9hY3RpdmU7Cn07CgpzdHJ1Y3QgY29ubmVjdG9yX2RldmljZV90YWdfaW5mbyB7 CiB1aW50MzJfdCBhY3BpX2RldmljZTsKIHN0cnVjdCBkZXZpY2VfaWQgZGV2X2lkOwp9OwoKc3Ry dWN0IGRldmljZV90aW1pbmcgewogc3RydWN0IG1pc2NfaW5mbyB7CiAgdWludDMyX3QgSE9SSVpP TlRBTF9DVVRfT0ZGOjE7CgogIHVpbnQzMl90IEhfU1lOQ19QT0xBUklUWToxOwoKICB1aW50MzJf dCBWX1NZTkNfUE9MQVJJVFk6MTsKICB1aW50MzJfdCBWRVJUSUNBTF9DVVRfT0ZGOjE7CiAgdWlu dDMyX3QgSF9SRVBMSUNBVElPTl9CWTI6MTsKICB1aW50MzJfdCBWX1JFUExJQ0FUSU9OX0JZMjox OwogIHVpbnQzMl90IENPTVBPU0lURV9TWU5DOjE7CiAgdWludDMyX3QgSU5URVJMQUNFOjE7CiAg dWludDMyX3QgRE9VQkxFX0NMT0NLOjE7CiAgdWludDMyX3QgUkdCODg4OjE7CiAgdWludDMyX3Qg R1JFWV9MRVZFTDoyOwogIHVpbnQzMl90IFNQQVRJQUw6MTsKICB1aW50MzJfdCBURU1QT1JBTDox OwogIHVpbnQzMl90IEFQSV9FTkFCTEVEOjE7CiB9IG1pc2NfaW5mbzsKCiB1aW50MzJfdCBwaXhl bF9jbGs7CiB1aW50MzJfdCBob3Jpem9udGFsX2FkZHJlc3NhYmxlOwogdWludDMyX3QgaG9yaXpv bnRhbF9ibGFua2luZ190aW1lOwogdWludDMyX3QgdmVydGljYWxfYWRkcmVzc2FibGU7CiB1aW50 MzJfdCB2ZXJ0aWNhbF9ibGFua2luZ190aW1lOwogdWludDMyX3QgaG9yaXpvbnRhbF9zeW5jX29m ZnNldDsKIHVpbnQzMl90IGhvcml6b250YWxfc3luY193aWR0aDsKIHVpbnQzMl90IHZlcnRpY2Fs X3N5bmNfb2Zmc2V0OwogdWludDMyX3QgdmVydGljYWxfc3luY193aWR0aDsKIHVpbnQzMl90IGhv cml6b250YWxfYm9yZGVyOwogdWludDMyX3QgdmVydGljYWxfYm9yZGVyOwp9OwoKc3RydWN0IHN1 cHBvcnRlZF9yZWZyZXNoX3JhdGUgewogdWludDMyX3QgUkVGUkVTSF9SQVRFXzMwSFo6MTsKIHVp bnQzMl90IFJFRlJFU0hfUkFURV80MEhaOjE7CiB1aW50MzJfdCBSRUZSRVNIX1JBVEVfNDhIWjox OwogdWludDMyX3QgUkVGUkVTSF9SQVRFXzUwSFo6MTsKIHVpbnQzMl90IFJFRlJFU0hfUkFURV82 MEhaOjE7Cn07CgpzdHJ1Y3QgZW1iZWRkZWRfcGFuZWxfaW5mbyB7CiBzdHJ1Y3QgZGV2aWNlX3Rp bWluZyBsY2RfdGltaW5nOwogdWludDMyX3Qgc3NfaWQ7CiBzdHJ1Y3Qgc3VwcG9ydGVkX3JlZnJl c2hfcmF0ZSBzdXBwb3J0ZWRfcnI7CiB1aW50MzJfdCBkcnJfZW5hYmxlZDsKIHVpbnQzMl90IG1p bl9kcnJfcmVmcmVzaF9yYXRlOwogYm9vbCByZWFsdGVrX2VEUFRvTFZEUzsKfTsKCnN0cnVjdCBk Y19maXJtd2FyZV9pbmZvIHsKIHN0cnVjdCBwbGxfaW5mbyB7CiAgdWludDMyX3QgY3J5c3RhbF9m cmVxdWVuY3k7CiAgdWludDMyX3QgbWluX2lucHV0X3B4bF9jbGtfcGxsX2ZyZXF1ZW5jeTsKICB1 aW50MzJfdCBtYXhfaW5wdXRfcHhsX2Nsa19wbGxfZnJlcXVlbmN5OwogIHVpbnQzMl90IG1pbl9v dXRwdXRfcHhsX2Nsa19wbGxfZnJlcXVlbmN5OwogIHVpbnQzMl90IG1heF9vdXRwdXRfcHhsX2Ns a19wbGxfZnJlcXVlbmN5OwogfSBwbGxfaW5mbzsKCiBzdHJ1Y3QgZmlybXdhcmVfZmVhdHVyZSB7 CiAgdWludDMyX3QgbWVtb3J5X2Nsa19zc19wZXJjZW50YWdlOwogIHVpbnQzMl90IGVuZ2luZV9j bGtfc3NfcGVyY2VudGFnZTsKIH0gZmVhdHVyZTsKCiB1aW50MzJfdCBkZWZhdWx0X2Rpc3BsYXlf ZW5naW5lX3BsbF9mcmVxdWVuY3k7CiB1aW50MzJfdCBleHRlcm5hbF9jbG9ja19zb3VyY2VfZnJl cXVlbmN5X2Zvcl9kcDsKIHVpbnQzMl90IHNtdV9ncHVfcGxsX291dHB1dF9mcmVxOwogdWludDhf dCBtaW5fYWxsb3dlZF9ibF9sZXZlbDsKIHVpbnQ4X3QgcmVtb3RlX2Rpc3BsYXlfY29uZmlnOwog dWludDMyX3QgZGVmYXVsdF9tZW1vcnlfY2xrOwogdWludDMyX3QgZGVmYXVsdF9lbmdpbmVfY2xr OwogdWludDMyX3QgZHBfcGh5X3JlZl9jbGs7CiB1aW50MzJfdCBpMmNfZW5naW5lX3JlZl9jbGs7 CiBib29sIG9lbV9pMmNfcHJlc2VudDsKIHVpbnQ4X3Qgb2VtX2kyY19vYmpfaWQ7Cgp9OwoKc3Ry dWN0IHN0ZXBfYW5kX2RlbGF5X2luZm8gewogdWludDMyX3Qgc3RlcDsKIHVpbnQzMl90IGRlbGF5 OwogdWludDMyX3QgcmVjb21tZW5kZWRfcmVmX2RpdjsKfTsKCnN0cnVjdCBzcHJlYWRfc3BlY3Ry dW1faW5mbyB7CiBzdHJ1Y3Qgc3ByZWFkX3NwZWN0cnVtX3R5cGUgewogIGJvb2wgQ0VOVEVSX01P REU6MTsKICBib29sIEVYVEVSTkFMOjE7CiAgYm9vbCBTVEVQX0FORF9ERUxBWV9JTkZPOjE7CiB9 IHR5cGU7CgoKCiB1aW50MzJfdCBzcHJlYWRfc3BlY3RydW1fcGVyY2VudGFnZTsKIHVpbnQzMl90 IHNwcmVhZF9wZXJjZW50YWdlX2RpdmlkZXI7CiB1aW50MzJfdCBzcHJlYWRfc3BlY3RydW1fcmFu Z2U7CgogdW5pb24gewogIHN0cnVjdCBzdGVwX2FuZF9kZWxheV9pbmZvIHN0ZXBfYW5kX2RlbGF5 X2luZm87CgoKCiAgdWludDMyX3QgdGFyZ2V0X2Nsb2NrX3JhbmdlOwogfTsKCn07CgpzdHJ1Y3Qg Z3JhcGhpY3Nfb2JqZWN0X2VuY29kZXJfY2FwX2luZm8gewogdWludDMyX3QgZHBfaGJyMl9jYXA6 MTsKIHVpbnQzMl90IGRwX2hicjJfdmFsaWRhdGVkOjE7CgoKCiB1aW50MzJfdCByZXNlcnZlZDox NTsKfTsKCnN0cnVjdCBkaW5fY29ubmVjdG9yX2luZm8gewogdWludDMyX3QgZ3Bpb19pZDsKIGJv b2wgZ3Bpb190dl9hY3RpdmVfc3RhdGU7Cn07CgoKZW51bSB7IElOVkFMSURfRERJX0NIQU5ORUxf TUFQUElORyA9IDB4MCB9OwoKCgoKdW5pb24gZGRpX2NoYW5uZWxfbWFwcGluZyB7CiBzdHJ1Y3Qg bWFwcGluZyB7CiAgdWludDhfdCBsYW5lMDoyOwogIHVpbnQ4X3QgbGFuZTE6MjsKICB1aW50OF90 IGxhbmUyOjI7CiAgdWludDhfdCBsYW5lMzoyOwogfSBtYXBwaW5nOwogdWludDhfdCByYXc7Cn07 CgoKCgpzdHJ1Y3QgdHJhbnNtaXR0ZXJfY29uZmlndXJhdGlvbl9pbmZvIHsKCiBlbnVtIHRyYW5z bWl0dGVyIHRyYW5zbWl0dGVyX3BoeV9pZDsKCiB1bmlvbiBkZGlfY2hhbm5lbF9tYXBwaW5nIG91 dHB1dF9jaGFubmVsX21hcHBpbmc7Cn07CgpzdHJ1Y3QgdHJhbnNtaXR0ZXJfY29uZmlndXJhdGlv biB7Cgogc3RydWN0IHRyYW5zbWl0dGVyX2NvbmZpZ3VyYXRpb25faW5mbyBwcmltYXJ5X3RyYW5z bWl0dGVyX2NvbmZpZzsKCiBzdHJ1Y3QgdHJhbnNtaXR0ZXJfY29uZmlndXJhdGlvbl9pbmZvIHNl Y29uZGFyeV90cmFuc21pdHRlcl9jb25maWc7Cn07CiMgMjY5ICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9jdHJsX2RlZnMuaCIKc3Ry dWN0IGkyY19yZWdfaW5mbyB7CiB1bnNpZ25lZCBjaGFyIGkyY19yZWdfaW5kZXg7CiB1bnNpZ25l ZCBjaGFyIGkyY19yZWdfdmFsOwp9OwoKc3RydWN0IGV4dF9oZG1pX3NldHRpbmdzIHsKIHVuc2ln bmVkIGNoYXIgc2x2X2FkZHI7CiB1bnNpZ25lZCBjaGFyIHJlZ19udW07CiBzdHJ1Y3QgaTJjX3Jl Z19pbmZvIHJlZ19zZXR0aW5nc1s5XTsKIHVuc2lnbmVkIGNoYXIgcmVnX251bV82ZzsKIHN0cnVj dCBpMmNfcmVnX2luZm8gcmVnX3NldHRpbmdzXzZnWzNdOwp9OwoKCgpzdHJ1Y3QgaW50ZWdyYXRl ZF9pbmZvIHsKIHN0cnVjdCBjbG9ja192b2x0YWdlX2NhcHMgewoKCiAgdWludDMyX3Qgdm9sdGFn ZV9pbmRleDsKCiAgdWludDMyX3QgbWF4X3N1cHBvcnRlZF9jbGs7CiB9IGRpc3BfY2xrX3ZvbHRh Z2VbNF07Cgogc3RydWN0IGRpc3BsYXlfY29ubmVjdGlvbl9pbmZvIHsKICBzdHJ1Y3QgZXh0ZXJu YWxfZGlzcGxheV9wYXRoIHsKCiAgIHVpbnQzMl90IGRldmljZV90YWc7CgogICB1aW50MzJfdCBk ZXZpY2VfYWNwaV9lbnVtOwoKCiAgIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgZGV2aWNlX2Nv bm5lY3Rvcl9pZDsKCiAgIHVpbnQ4X3QgZXh0X2F1eF9kZGNfbHV0X2luZGV4OwoKICAgdWludDhf dCBleHRfaHBkX3Bpbl9sdXRfaW5kZXg7CgogICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGV4 dF9lbmNvZGVyX29ial9pZDsKCiAgIHVuaW9uIGRkaV9jaGFubmVsX21hcHBpbmcgY2hhbm5lbF9t YXBwaW5nOwoKICAgdW5zaWduZWQgc2hvcnQgY2FwczsKICB9IHBhdGhbN107CgogIHVpbnQ4X3Qg Z3VfaWRbMTZdOwogIHVpbnQ4X3QgY2hlY2tzdW07CiB9IGV4dF9kaXNwX2Nvbm5faW5mbzsKCiBz dHJ1Y3QgYXZhaWxhYmxlX3NfY2xrX2xpc3QgewoKICB1aW50MzJfdCBzdXBwb3J0ZWRfc19jbGs7 CgogIHVpbnQzMl90IHZvbHRhZ2VfaW5kZXg7CgogIHVpbnQzMl90IHZvbHRhZ2VfaWQ7CiB9IGF2 YWlsX3NfY2xrWzVdOwoKIHVpbnQ4X3QgbWVtb3J5X3R5cGU7CiB1aW50OF90IG1hX2NoYW5uZWxf bnVtYmVyOwogdWludDMyX3QgYm9vdF91cF9lbmdpbmVfY2xvY2s7CiB1aW50MzJfdCBkZW50aXN0 X3Zjb19mcmVxOwogdWludDMyX3QgYm9vdF91cF91bWFfY2xvY2s7CiB1aW50MzJfdCBib290X3Vw X3JlcV9kaXNwbGF5X3ZlY3RvcjsKIHVpbnQzMl90IG90aGVyX2Rpc3BsYXlfbWlzYzsKIHVpbnQz Ml90IGdwdV9jYXBfaW5mbzsKIHVpbnQzMl90IHNiX21taW9fYmFzZV9hZGRyOwogdWludDMyX3Qg c3lzdGVtX2NvbmZpZzsKIHVpbnQzMl90IGNwdV9jYXBfaW5mbzsKIHVpbnQzMl90IG1heF9uYl92 b2x0YWdlOwogdWludDMyX3QgbWluX25iX3ZvbHRhZ2U7CiB1aW50MzJfdCBib290X3VwX25iX3Zv bHRhZ2U7CiB1aW50MzJfdCBleHRfZGlzcF9jb25uX2luZm9fb2Zmc2V0OwogdWludDMyX3QgY3Ny X20zX2FyYl9jbnRsX2RlZmF1bHRbMTBdOwogdWludDMyX3QgY3NyX20zX2FyYl9jbnRsX3V2ZFsx MF07CiB1aW50MzJfdCBjc3JfbTNfYXJiX2NudGxfZnMzZFsxMF07CiB1aW50MzJfdCBnbWNfcmVz dG9yZV9yZXNldF90aW1lOwogdWludDMyX3QgbWluaW11bV9uX2NsazsKIHVpbnQzMl90IGlkbGVf bl9jbGs7CiB1aW50MzJfdCBkZHJfZGxsX3Bvd2VyX3VwX3RpbWU7CiB1aW50MzJfdCBkZHJfcGxs X3Bvd2VyX3VwX3RpbWU7CgogdWludDMyX3QgcGNpZV9jbGtfc3NfdHlwZTsKIHVpbnQzMl90IGx2 ZHNfc3NfcGVyY2VudGFnZTsKIHVpbnQzMl90IGx2ZHNfc3NwcmVhZF9yYXRlX2luXzEwaHo7CiB1 aW50MzJfdCBoZG1pX3NzX3BlcmNlbnRhZ2U7CiB1aW50MzJfdCBoZG1pX3NzcHJlYWRfcmF0ZV9p bl8xMGh6OwogdWludDMyX3QgZHZpX3NzX3BlcmNlbnRhZ2U7CiB1aW50MzJfdCBkdmlfc3NwcmVh ZF9yYXRlX2luXzEwX2h6OwogdWludDMyX3Qgc2Nsa19kcG1fYm9vc3RfbWFyZ2luOwogdWludDMy X3Qgc2Nsa19kcG1fdGhyb3R0bGVfbWFyZ2luOwogdWludDMyX3Qgc2Nsa19kcG1fdGRwX2xpbWl0 X3BnOwogdWludDMyX3Qgc2Nsa19kcG1fdGRwX2xpbWl0X2Jvb3N0OwogdWludDMyX3QgYm9vc3Rf ZW5naW5lX2Nsb2NrOwogdWludDMyX3QgYm9vc3RfdmlkXzJiaXQ7CiB1aW50MzJfdCBlbmFibGVf Ym9vc3Q7CiB1aW50MzJfdCBnbmJfdGRwX2xpbWl0OwoKIHVpbnQzMl90IG1heF9sdmRzX3BjbGtf ZnJlcV9pbl9zaW5nbGVfbGluazsKIHVpbnQzMl90IGx2ZHNfbWlzYzsKIHVpbnQzMl90IGx2ZHNf cHdyX29uX3NlcV9kaWdfb25fdG9fZGVfaW5fNG1zOwogdWludDMyX3QgbHZkc19wd3Jfb25fc2Vx X2RlX3RvX3ZhcnlfYmxfaW5fNG1zOwogdWludDMyX3QgbHZkc19wd3Jfb2ZmX3NlcV92YXJ5X2Js X3RvX2RlX2luNG1zOwogdWludDMyX3QgbHZkc19wd3Jfb2ZmX3NlcV9kZV90b19kaWdfb25faW40 bXM7CiB1aW50MzJfdCBsdmRzX29mZl90b19vbl9kZWxheV9pbl80bXM7CiB1aW50MzJfdCBsdmRz X3B3cl9vbl9zZXFfdmFyeV9ibF90b19ibG9uX2luXzRtczsKIHVpbnQzMl90IGx2ZHNfcHdyX29m Zl9zZXFfYmxvbl90b192YXJ5X2JsX2luXzRtczsKIHVpbnQzMl90IGx2ZHNfcmVzZXJ2ZWQxOwog dWludDMyX3QgbHZkc19iaXRfZGVwdGhfY29udHJvbF92YWw7CgogdW5zaWduZWQgY2hhciBkcDBf ZXh0X2hkbWlfc2x2X2FkZHI7CiB1bnNpZ25lZCBjaGFyIGRwMF9leHRfaGRtaV9yZWdfbnVtOwog c3RydWN0IGkyY19yZWdfaW5mbyBkcDBfZXh0X2hkbWlfcmVnX3NldHRpbmdzWzldOwogdW5zaWdu ZWQgY2hhciBkcDBfZXh0X2hkbWlfNmdfcmVnX251bTsKIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAw X2V4dF9oZG1pXzZnX3JlZ19zZXR0aW5nc1szXTsKIHVuc2lnbmVkIGNoYXIgZHAxX2V4dF9oZG1p X3Nsdl9hZGRyOwogdW5zaWduZWQgY2hhciBkcDFfZXh0X2hkbWlfcmVnX251bTsKIHN0cnVjdCBp MmNfcmVnX2luZm8gZHAxX2V4dF9oZG1pX3JlZ19zZXR0aW5nc1s5XTsKIHVuc2lnbmVkIGNoYXIg ZHAxX2V4dF9oZG1pXzZnX3JlZ19udW07CiBzdHJ1Y3QgaTJjX3JlZ19pbmZvIGRwMV9leHRfaGRt aV82Z19yZWdfc2V0dGluZ3NbM107CiB1bnNpZ25lZCBjaGFyIGRwMl9leHRfaGRtaV9zbHZfYWRk cjsKIHVuc2lnbmVkIGNoYXIgZHAyX2V4dF9oZG1pX3JlZ19udW07CiBzdHJ1Y3QgaTJjX3JlZ19p bmZvIGRwMl9leHRfaGRtaV9yZWdfc2V0dGluZ3NbOV07CiB1bnNpZ25lZCBjaGFyIGRwMl9leHRf aGRtaV82Z19yZWdfbnVtOwogc3RydWN0IGkyY19yZWdfaW5mbyBkcDJfZXh0X2hkbWlfNmdfcmVn X3NldHRpbmdzWzNdOwogdW5zaWduZWQgY2hhciBkcDNfZXh0X2hkbWlfc2x2X2FkZHI7CiB1bnNp Z25lZCBjaGFyIGRwM19leHRfaGRtaV9yZWdfbnVtOwogc3RydWN0IGkyY19yZWdfaW5mbyBkcDNf ZXh0X2hkbWlfcmVnX3NldHRpbmdzWzldOwogdW5zaWduZWQgY2hhciBkcDNfZXh0X2hkbWlfNmdf cmVnX251bTsKIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAzX2V4dF9oZG1pXzZnX3JlZ19zZXR0aW5n c1szXTsKCiB1aW50MzJfdCBkcF9zc19jb250cm9sOwp9OwoKCgoKZW51bSBwb3dlcl9zb3VyY2Ug ewogUE9XRVJfU09VUkNFX0FDID0gMCwKIFBPV0VSX1NPVVJDRV9EQywKIFBPV0VSX1NPVVJDRV9M SU1JVEVEX1BPV0VSLAogUE9XRVJfU09VUkNFX0xJTUlURURfUE9XRVJfMiwKIFBPV0VSX1NPVVJD RV9NQVgKfTsKCnN0cnVjdCBiaW9zX2V2ZW50X2luZm8gewogdWludDMyX3QgdGhlcm1hbF9zdGF0 ZTsKIHVpbnQzMl90IGJhY2tsaWdodF9sZXZlbDsKIGVudW0gcG93ZXJfc291cmNlIHBvd2VyU291 cmNlOwogYm9vbCBoYXNfdGhlcm1hbF9zdGF0ZV9jaGFuZ2VkOwogYm9vbCBoYXNfcG93ZXJfc291 cmNlX2NoYW5nZWQ7CiBib29sIGhhc19mb3JjZWRfbW9kZV9jaGFuZ2VkOwogYm9vbCBmb3JjZWRf bW9kZTsKIGJvb2wgYmFja2xpZ2h0X2NoYW5nZWQ7Cn07CgoKCgoKZW51bSB7CiBERlNfQllQQVNT X0VOQUJMRSA9IDB4MTAKfTsKCmVudW0gewogSU5WQUxJRF9CQUNLTElHSFQgPSAtMQp9OwoKc3Ry dWN0IHBhbmVsX2JhY2tsaWdodF9ib3VuZGFyaWVzIHsKIHVpbnQzMl90IG1pbl9zaWduYWxfbGV2 ZWw7CiB1aW50MzJfdCBtYXhfc2lnbmFsX2xldmVsOwp9OwojIDM1ICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvb3BwLmgiIDEKIyAyOSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9vcHAuaCIKIyAxICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2h3X3NoYXJlZC5o IiAxCiMgMzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMv aHcvaHdfc2hhcmVkLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2RjX2h3X3R5cGVzLmgiIDEKIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2luYy9ody9od19zaGFyZWQuaCIgMgojIDQxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2h3X3NoYXJlZC5oIgpzdHJ1Y3Qg Z2FtbWFfY3VydmUgewogdWludDMyX3Qgb2Zmc2V0OwogdWludDMyX3Qgc2VnbWVudHNfbnVtOwp9 OwoKc3RydWN0IGN1cnZlX3BvaW50cyB7CiBzdHJ1Y3QgZml4ZWQzMV8zMiB4Owogc3RydWN0IGZp eGVkMzFfMzIgeTsKIHN0cnVjdCBmaXhlZDMxXzMyIG9mZnNldDsKIHN0cnVjdCBmaXhlZDMxXzMy IHNsb3BlOwoKIHVpbnQzMl90IGN1c3RvbV9mbG9hdF94OwogdWludDMyX3QgY3VzdG9tX2Zsb2F0 X3k7CiB1aW50MzJfdCBjdXN0b21fZmxvYXRfb2Zmc2V0OwogdWludDMyX3QgY3VzdG9tX2Zsb2F0 X3Nsb3BlOwp9OwoKc3RydWN0IGN1cnZlX3BvaW50czMgewogc3RydWN0IGN1cnZlX3BvaW50cyBy ZWQ7CiBzdHJ1Y3QgY3VydmVfcG9pbnRzIGdyZWVuOwogc3RydWN0IGN1cnZlX3BvaW50cyBibHVl Owp9OwoKc3RydWN0IHB3bF9yZXN1bHRfZGF0YSB7CiBzdHJ1Y3QgZml4ZWQzMV8zMiByZWQ7CiBz dHJ1Y3QgZml4ZWQzMV8zMiBncmVlbjsKIHN0cnVjdCBmaXhlZDMxXzMyIGJsdWU7Cgogc3RydWN0 IGZpeGVkMzFfMzIgZGVsdGFfcmVkOwogc3RydWN0IGZpeGVkMzFfMzIgZGVsdGFfZ3JlZW47CiBz dHJ1Y3QgZml4ZWQzMV8zMiBkZWx0YV9ibHVlOwoKIHVpbnQzMl90IHJlZF9yZWc7CiB1aW50MzJf dCBncmVlbl9yZWc7CiB1aW50MzJfdCBibHVlX3JlZzsKCiB1aW50MzJfdCBkZWx0YV9yZWRfcmVn OwogdWludDMyX3QgZGVsdGFfZ3JlZW5fcmVnOwogdWludDMyX3QgZGVsdGFfYmx1ZV9yZWc7Cn07 CgpzdHJ1Y3QgZGNfcmdiIHsKIHVpbnQzMl90IHJlZDsKIHVpbnQzMl90IGdyZWVuOwogdWludDMy X3QgYmx1ZTsKfTsKCnN0cnVjdCB0ZXRyYWhlZHJhbF8xN3gxN3gxNyB7CiBzdHJ1Y3QgZGNfcmdi IGx1dDBbMTIyOV07CiBzdHJ1Y3QgZGNfcmdiIGx1dDFbMTIyOF07CiBzdHJ1Y3QgZGNfcmdiIGx1 dDJbMTIyOF07CiBzdHJ1Y3QgZGNfcmdiIGx1dDNbMTIyOF07Cn07CnN0cnVjdCB0ZXRyYWhlZHJh bF85eDl4OSB7CiBzdHJ1Y3QgZGNfcmdiIGx1dDBbMTgzXTsKIHN0cnVjdCBkY19yZ2IgbHV0MVsx ODJdOwogc3RydWN0IGRjX3JnYiBsdXQyWzE4Ml07CiBzdHJ1Y3QgZGNfcmdiIGx1dDNbMTgyXTsK fTsKCnN0cnVjdCB0ZXRyYWhlZHJhbF9wYXJhbXMgewogdW5pb24gewogIHN0cnVjdCB0ZXRyYWhl ZHJhbF8xN3gxN3gxNyB0ZXRyYWhlZHJhbF8xNzsKICBzdHJ1Y3QgdGV0cmFoZWRyYWxfOXg5eDkg dGV0cmFoZWRyYWxfOTsKIH07CiBib29sIHVzZV90ZXRyYWhlZHJhbF85OwogYm9vbCB1c2VfMTJi aXRzOwoKfTsKCgoKCgoKc3RydWN0IHB3bF9wYXJhbXMgewogc3RydWN0IGdhbW1hX2N1cnZlIGFy cl9jdXJ2ZV9wb2ludHNbMzRdOwogdW5pb24gewogIHN0cnVjdCBjdXJ2ZV9wb2ludHMgYXJyX3Bv aW50c1syXTsKICBzdHJ1Y3QgY3VydmVfcG9pbnRzMyBjb3JuZXJfcG9pbnRzWzJdOwogfTsKIHN0 cnVjdCBwd2xfcmVzdWx0X2RhdGEgcmdiX3Jlc3VsdGVkWzI1NiArIDNdOwogdWludDMyX3QgaHdf cG9pbnRzX251bTsKfTsKCgoKCgoKCmVudW0gbGJfcGl4ZWxfZGVwdGggewoKIExCX1BJWEVMX0RF UFRIXzE4QlBQID0gMSwKIExCX1BJWEVMX0RFUFRIXzI0QlBQID0gMiwKIExCX1BJWEVMX0RFUFRI XzMwQlBQID0gNCwKIExCX1BJWEVMX0RFUFRIXzM2QlBQID0gOAp9OwoKZW51bSBncmFwaGljc19j c2NfYWRqdXN0X3R5cGUgewogR1JBUEhJQ1NfQ1NDX0FESlVTVF9UWVBFX0JZUEFTUyA9IDAsCiBH UkFQSElDU19DU0NfQURKVVNUX1RZUEVfSFcsCiBHUkFQSElDU19DU0NfQURKVVNUX1RZUEVfU1cK fTsKCmVudW0gaXBwX2RlZ2FtbWFfbW9kZSB7CiBJUFBfREVHQU1NQV9NT0RFX0JZUEFTUywKIElQ UF9ERUdBTU1BX01PREVfSFdfc1JHQiwKIElQUF9ERUdBTU1BX01PREVfSFdfeHZZQ0MsCiBJUFBf REVHQU1NQV9NT0RFX1VTRVJfUFdMCn07CgplbnVtIGlwcF9vdXRwdXRfZm9ybWF0IHsKIElQUF9P VVRQVVRfRk9STUFUXzEyX0JJVF9GSVgsCiBJUFBfT1VUUFVUX0ZPUk1BVF8xNl9CSVRfQllQQVNT LAogSVBQX09VVFBVVF9GT1JNQVRfRkxPQVQKfTsKCmVudW0gZXhwYW5zaW9uX21vZGUgewogRVhQ QU5TSU9OX01PREVfRFlOQU1JQywKIEVYUEFOU0lPTl9NT0RFX1pFUk8KfTsKCnN0cnVjdCBkZWZh dWx0X2FkanVzdG1lbnQgewogZW51bSBsYl9waXhlbF9kZXB0aCBsYl9jb2xvcl9kZXB0aDsKIGVu dW0gZGNfY29sb3Jfc3BhY2Ugb3V0X2NvbG9yX3NwYWNlOwogZW51bSBkY19jb2xvcl9zcGFjZSBp bl9jb2xvcl9zcGFjZTsKIGVudW0gZGNfY29sb3JfZGVwdGggY29sb3JfZGVwdGg7CiBlbnVtIHBp eGVsX2Zvcm1hdCBzdXJmYWNlX3BpeGVsX2Zvcm1hdDsKIGVudW0gZ3JhcGhpY3NfY3NjX2FkanVz dF90eXBlIGNzY19hZGp1c3RfdHlwZTsKIGJvb2wgZm9yY2VfaHdfZGVmYXVsdDsKfTsKCgpzdHJ1 Y3Qgb3V0X2NzY19jb2xvcl9tYXRyaXggewogZW51bSBkY19jb2xvcl9zcGFjZSBjb2xvcl9zcGFj ZTsKIHVpbnQxNl90IHJlZ3ZhbFsxMl07Cn07CgplbnVtIGdhbXV0X3JlbWFwX3NlbGVjdCB7CiBH QU1VVF9SRU1BUF9CWVBBU1MgPSAwLAogR0FNVVRfUkVNQVBfQ09FRkYsCiBHQU1VVF9SRU1BUF9D T01BX0NPRUZGLAogR0FNVVRfUkVNQVBfQ09NQl9DT0VGRgp9OwoKZW51bSBvcHBfcmVnYW1tYSB7 CiBPUFBfUkVHQU1NQV9CWVBBU1MgPSAwLAogT1BQX1JFR0FNTUFfU1JHQiwKIE9QUF9SRUdBTU1B X1hWWUNDLAogT1BQX1JFR0FNTUFfVVNFUgp9OwoKZW51bSBvcHRjX2RzY19tb2RlIHsKIE9QVENf RFNDX0RJU0FCTEVEID0gMCwKIE9QVENfRFNDX0VOQUJMRURfNDQ0ID0gMSwKIE9QVENfRFNDX0VO QUJMRURfTkFUSVZFX1NVQlNBTVBMRUQgPSAyCn07CgpzdHJ1Y3QgZGNfYmlhc19hbmRfc2NhbGUg ewogdWludDE2X3Qgc2NhbGVfcmVkOwogdWludDE2X3QgYmlhc19yZWQ7CiB1aW50MTZfdCBzY2Fs ZV9ncmVlbjsKIHVpbnQxNl90IGJpYXNfZ3JlZW47CiB1aW50MTZfdCBzY2FsZV9ibHVlOwogdWlu dDE2X3QgYmlhc19ibHVlOwp9OwoKZW51bSB0ZXN0X3BhdHRlcm5fZHluX3JhbmdlIHsKIFRFU1Rf UEFUVEVSTl9EWU5fUkFOR0VfVkVTQSA9IDAsCiBURVNUX1BBVFRFUk5fRFlOX1JBTkdFX0NFQQp9 OwoKZW51bSB0ZXN0X3BhdHRlcm5fbW9kZSB7CiBURVNUX1BBVFRFUk5fTU9ERV9DT0xPUlNRVUFS RVNfUkdCID0gMCwKIFRFU1RfUEFUVEVSTl9NT0RFX0NPTE9SU1FVQVJFU19ZQ0JDUjYwMSwKIFRF U1RfUEFUVEVSTl9NT0RFX0NPTE9SU1FVQVJFU19ZQ0JDUjcwOSwKIFRFU1RfUEFUVEVSTl9NT0RF X1ZFUlRJQ0FMQkFSUywKIFRFU1RfUEFUVEVSTl9NT0RFX0hPUklaT05UQUxCQVJTLAogVEVTVF9Q QVRURVJOX01PREVfU0lOR0xFUkFNUF9SR0IsCiBURVNUX1BBVFRFUk5fTU9ERV9EVUFMUkFNUF9S R0IsCiBURVNUX1BBVFRFUk5fTU9ERV9YUl9CSUFTX1JHQgp9OwoKZW51bSB0ZXN0X3BhdHRlcm5f Y29sb3JfZm9ybWF0IHsKIFRFU1RfUEFUVEVSTl9DT0xPUl9GT1JNQVRfQlBDXzYgPSAwLAogVEVT VF9QQVRURVJOX0NPTE9SX0ZPUk1BVF9CUENfOCwKIFRFU1RfUEFUVEVSTl9DT0xPUl9GT1JNQVRf QlBDXzEwLAogVEVTVF9QQVRURVJOX0NPTE9SX0ZPUk1BVF9CUENfMTIKfTsKCmVudW0gY29udHJv bGxlcl9kcF90ZXN0X3BhdHRlcm4gewogQ09OVFJPTExFUl9EUF9URVNUX1BBVFRFUk5fRDEwMiA9 IDAsCiBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9TWU1CT0xFUlJPUiwKIENPTlRST0xMRVJf RFBfVEVTVF9QQVRURVJOX1BSQlM3LAogQ09OVFJPTExFUl9EUF9URVNUX1BBVFRFUk5fQ09MT1JT UVVBUkVTLAogQ09OVFJPTExFUl9EUF9URVNUX1BBVFRFUk5fVkVSVElDQUxCQVJTLAogQ09OVFJP TExFUl9EUF9URVNUX1BBVFRFUk5fSE9SSVpPTlRBTEJBUlMsCiBDT05UUk9MTEVSX0RQX1RFU1Rf UEFUVEVSTl9DT0xPUlJBTVAsCiBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9WSURFT01PREUs CiBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9SRVNFUlZFRF84LAogQ09OVFJPTExFUl9EUF9U RVNUX1BBVFRFUk5fUkVTRVJWRURfOSwKIENPTlRST0xMRVJfRFBfVEVTVF9QQVRURVJOX1JFU0VS VkVEX0EsCiBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9DT0xPUlNRVUFSRVNfQ0VBLAogQ09O VFJPTExFUl9EUF9URVNUX1BBVFRFUk5fU09MSURfQ09MT1IKfTsKCmVudW0gY29udHJvbGxlcl9k cF9jb2xvcl9zcGFjZSB7CiBDT05UUk9MTEVSX0RQX0NPTE9SX1NQQUNFX1JHQiwKIENPTlRST0xM RVJfRFBfQ09MT1JfU1BBQ0VfWUNCQ1I2MDEsCiBDT05UUk9MTEVSX0RQX0NPTE9SX1NQQUNFX1lD QkNSNzA5LAogQ09OVFJPTExFUl9EUF9DT0xPUl9TUEFDRV9VREVGSU5FRAp9OwoKZW51bSBkY19s dXRfbW9kZSB7CiBMVVRfQllQQVNTLAogTFVUX1JBTV9BLAogTFVUX1JBTV9CCn07CiMgMzAgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvb3BwLmgiIDIK CiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody90 cmFuc2Zvcm0uaCIgMQojIDM1ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2h3L3RyYW5zZm9ybS5oIgpzdHJ1Y3QgYml0X2RlcHRoX3JlZHVjdGlvbl9wYXJh bXM7CgpzdHJ1Y3QgdHJhbnNmb3JtIHsKIGNvbnN0IHN0cnVjdCB0cmFuc2Zvcm1fZnVuY3MgKmZ1 bmNzOwogc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKIGludCBpbnN0Owogc3RydWN0IGRwcF9jYXBz ICpjYXBzOwogc3RydWN0IHB3bF9wYXJhbXMgcmVnYW1tYV9wYXJhbXM7Cn07CgoKZW51bSBjb2xv cmltZXRyeSB7CiBDT0xPUklNRVRSWV9OT19EQVRBID0gMCwKIENPTE9SSU1FVFJZX0lUVTYwMSA9 IDEsCiBDT0xPUklNRVRSWV9JVFU3MDkgPSAyLAogQ09MT1JJTUVUUllfRVhURU5ERUQgPSAzCn07 CgplbnVtIGNvbG9yaW1ldHJ5X2V4dCB7CiBDT0xPUklNRVRSWUVYX1hWWUNDNjAxID0gMCwKIENP TE9SSU1FVFJZRVhfWFZZQ0M3MDkgPSAxLAogQ09MT1JJTUVUUllFWF9TWUNDNjAxID0gMiwKIENP TE9SSU1FVFJZRVhfQURPQkVZQ0M2MDEgPSAzLAogQ09MT1JJTUVUUllFWF9BRE9CRVJHQiA9IDQs CiBDT0xPUklNRVRSWUVYX0JUMjAyMFlDQyA9IDUsCiBDT0xPUklNRVRSWUVYX0JUMjAyMFJHQllD QkNSID0gNiwKIENPTE9SSU1FVFJZRVhfUkVTRVJWRUQgPSA3Cn07CgplbnVtIGFjdGl2ZV9mb3Jt YXRfaW5mbyB7CiBBQ1RJVkVfRk9STUFUX05PX0RBVEEgPSAwLAogQUNUSVZFX0ZPUk1BVF9WQUxJ RCA9IDEKfTsKCgplbnVtIGFjdGl2ZV9mb3JtYXRfYXNwZWN0X3JhdGlvIHsKIEFDVElWRV9GT1JN QVRfQVNQRUNUX1JBVElPX1NBTUVfQVNfUElDVFVSRSA9IDgsCiBBQ1RJVkVfRk9STUFUX0FTUEVD VF9SQVRJT180XzMgPSA5LAogQUNUSVZFX0ZPUk1BVF9BU1BFQ1RfUkFUSU9fMTZfOSA9IDBYQSwK IEFDVElWRV9GT1JNQVRfQVNQRUNUX1JBVElPXzE0XzkgPSAwWEIKfTsKCmVudW0gYmFyX2luZm8g ewogQkFSX0lORk9fTk9UX1ZBTElEID0gMCwKIEJBUl9JTkZPX1ZFUlRJQ0FMX1ZBTElEID0gMSwK IEJBUl9JTkZPX0hPUklaT05UQUxfVkFMSUQgPSAyLAogQkFSX0lORk9fQk9USF9WQUxJRCA9IDMK fTsKCmVudW0gcGljdHVyZV9zY2FsaW5nIHsKIFBJQ1RVUkVfU0NBTElOR19VTklGT1JNID0gMCwK IFBJQ1RVUkVfU0NBTElOR19IT1JJWk9OVEFMID0gMSwKIFBJQ1RVUkVfU0NBTElOR19WRVJUSUNB TCA9IDIsCiBQSUNUVVJFX1NDQUxJTkdfQk9USCA9IDMKfTsKCgplbnVtIHJnYl9xdWFudGl6YXRp b25fcmFuZ2UgewogUkdCX1FVQU5USVpBVElPTl9ERUZBVUxUX1JBTkdFID0gMCwKIFJHQl9RVUFO VElaQVRJT05fTElNSVRFRF9SQU5HRSA9IDEsCiBSR0JfUVVBTlRJWkFUSU9OX0ZVTExfUkFOR0Ug PSAyLAogUkdCX1FVQU5USVpBVElPTl9SRVNFUlZFRCA9IDMKfTsKCgplbnVtIHl5Y19xdWFudGl6 YXRpb25fcmFuZ2UgewogWVlDX1FVQU5USVpBVElPTl9MSU1JVEVEX1JBTkdFID0gMCwKIFlZQ19R VUFOVElaQVRJT05fRlVMTF9SQU5HRSA9IDEsCiBZWUNfUVVBTlRJWkFUSU9OX1JFU0VSVkVEMiA9 IDIsCiBZWUNfUVVBTlRJWkFUSU9OX1JFU0VSVkVEMyA9IDMKfTsKCmVudW0gZ3JhcGhpY3NfZ2Ft dXRfYWRqdXN0X3R5cGUgewogR1JBUEhJQ1NfR0FNVVRfQURKVVNUX1RZUEVfQllQQVNTID0gMCwK IEdSQVBISUNTX0dBTVVUX0FESlVTVF9UWVBFX0hXLAogR1JBUEhJQ1NfR0FNVVRfQURKVVNUX1RZ UEVfU1cKfTsKCmVudW0gbGJfbWVtb3J5X2NvbmZpZyB7CgogTEJfTUVNT1JZX0NPTkZJR18wID0g MCwKCgogTEJfTUVNT1JZX0NPTkZJR18xID0gMSwKCgogTEJfTUVNT1JZX0NPTkZJR18yID0gMiwK CgoKCiBMQl9NRU1PUllfQ09ORklHXzMgPSAzCn07CgpzdHJ1Y3QgeGZtX2dycGhfY3NjX2FkanVz dG1lbnQgewogc3RydWN0IGZpeGVkMzFfMzIgdGVtcGVyYXR1cmVfbWF0cml4WzEyXTsKIGVudW0g Z3JhcGhpY3NfZ2FtdXRfYWRqdXN0X3R5cGUgZ2FtdXRfYWRqdXN0X3R5cGU7Cn07CgpzdHJ1Y3Qg b3ZlcnNjYW5faW5mbyB7CiBpbnQgbGVmdDsKIGludCByaWdodDsKIGludCB0b3A7CiBpbnQgYm90 dG9tOwp9OwoKc3RydWN0IHNjYWxpbmdfcmF0aW9zIHsKIHN0cnVjdCBmaXhlZDMxXzMyIGhvcno7 CiBzdHJ1Y3QgZml4ZWQzMV8zMiB2ZXJ0Owogc3RydWN0IGZpeGVkMzFfMzIgaG9yel9jOwogc3Ry dWN0IGZpeGVkMzFfMzIgdmVydF9jOwp9OwoKc3RydWN0IHNoYXJwbmVzc19hZGogewogaW50IGhv cno7CiBpbnQgdmVydDsKfTsKCnN0cnVjdCBsaW5lX2J1ZmZlcl9wYXJhbXMgewogYm9vbCBhbHBo YV9lbjsKIGJvb2wgcGl4ZWxfZXhwYW5fbW9kZTsKIGJvb2wgaW50ZXJsZWF2ZV9lbjsKIGludCBk eW5hbWljX3BpeGVsX2RlcHRoOwogZW51bSBsYl9waXhlbF9kZXB0aCBkZXB0aDsKfTsKCnN0cnVj dCBzY2xfaW5pdHMgewogc3RydWN0IGZpeGVkMzFfMzIgaDsKIHN0cnVjdCBmaXhlZDMxXzMyIGhf YzsKIHN0cnVjdCBmaXhlZDMxXzMyIHY7CiBzdHJ1Y3QgZml4ZWQzMV8zMiB2X2JvdDsKIHN0cnVj dCBmaXhlZDMxXzMyIHZfYzsKIHN0cnVjdCBmaXhlZDMxXzMyIHZfY19ib3Q7Cn07CgpzdHJ1Y3Qg c2NhbGVyX2RhdGEgewogaW50IGhfYWN0aXZlOwogaW50IHZfYWN0aXZlOwogc3RydWN0IHNjYWxp bmdfdGFwcyB0YXBzOwogc3RydWN0IHJlY3Qgdmlld3BvcnQ7CiBzdHJ1Y3QgcmVjdCB2aWV3cG9y dF9jOwogc3RydWN0IHJlY3QgcmVjb3V0Owogc3RydWN0IHNjYWxpbmdfcmF0aW9zIHJhdGlvczsK IHN0cnVjdCBzY2xfaW5pdHMgaW5pdHM7CiBzdHJ1Y3Qgc2hhcnBuZXNzX2FkaiBzaGFycG5lc3M7 CiBlbnVtIHBpeGVsX2Zvcm1hdCBmb3JtYXQ7CiBzdHJ1Y3QgbGluZV9idWZmZXJfcGFyYW1zIGxi X3BhcmFtczsKfTsKCnN0cnVjdCB0cmFuc2Zvcm1fZnVuY3Mgewogdm9pZCAoKnRyYW5zZm9ybV9y ZXNldCkoc3RydWN0IHRyYW5zZm9ybSAqeGZtKTsKCiB2b2lkICgqdHJhbnNmb3JtX3NldF9zY2Fs ZXIpKHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICAgY29uc3Qgc3RydWN0IHNjYWxlcl9kYXRhICpz Y2xfZGF0YSk7Cgogdm9pZCAoKnRyYW5zZm9ybV9zZXRfcGl4ZWxfc3RvcmFnZV9kZXB0aCkoCiAg IHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICAgZW51bSBsYl9waXhlbF9kZXB0aCBkZXB0aCwKICAg Y29uc3Qgc3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zICpiaXRfZGVwdGhfcGFyYW1z KTsKCiBib29sICgqdHJhbnNmb3JtX2dldF9vcHRpbWFsX251bWJlcl9vZl90YXBzKSgKICAgc3Ry dWN0IHRyYW5zZm9ybSAqeGZtLAogICBzdHJ1Y3Qgc2NhbGVyX2RhdGEgKnNjbF9kYXRhLAogICBj b25zdCBzdHJ1Y3Qgc2NhbGluZ190YXBzICppbl90YXBzKTsKCiB2b2lkICgqdHJhbnNmb3JtX3Nl dF9nYW11dF9yZW1hcCkoCiAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICAgY29uc3Qgc3RydWN0 IHhmbV9ncnBoX2NzY19hZGp1c3RtZW50ICphZGp1c3QpOwoKIHZvaWQgKCpvcHBfc2V0X2NzY19k ZWZhdWx0KSgKICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm0sCiAgY29uc3Qgc3RydWN0IGRlZmF1bHRf YWRqdXN0bWVudCAqZGVmYXVsdF9hZGp1c3QpOwoKIHZvaWQgKCpvcHBfc2V0X2NzY19hZGp1c3Rt ZW50KSgKICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm0sCiAgY29uc3Qgc3RydWN0IG91dF9jc2NfY29s b3JfbWF0cml4ICp0YmxfZW50cnkpOwoKIHZvaWQgKCpvcHBfcG93ZXJfb25fcmVnYW1tYV9sdXQp KAogIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICBib29sIHBvd2VyX29uKTsKCiB2b2lkICgqb3Bw X3Byb2dyYW1fcmVnYW1tYV9sdXQpKAogICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm0sCiAgIGNvbnN0 IHN0cnVjdCBwd2xfcmVzdWx0X2RhdGEgKnJnYiwKICAgdWludDMyX3QgbnVtKTsKCiB2b2lkICgq b3BwX2NvbmZpZ3VyZV9yZWdhbW1hX2x1dCkoCiAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICAg Ym9vbCBpc19yYW1fYSk7Cgogdm9pZCAoKm9wcF9wcm9ncmFtX3JlZ2FtbWFfbHV0Yl9zZXR0aW5n cykoCiAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICAgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMg KnBhcmFtcyk7Cgogdm9pZCAoKm9wcF9wcm9ncmFtX3JlZ2FtbWFfbHV0YV9zZXR0aW5ncykoCiAg IHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICAgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMgKnBhcmFt cyk7Cgogdm9pZCAoKm9wcF9wcm9ncmFtX3JlZ2FtbWFfcHdsKSgKICBzdHJ1Y3QgdHJhbnNmb3Jt ICp4Zm0sIGNvbnN0IHN0cnVjdCBwd2xfcGFyYW1zICpwYXJhbXMpOwoKIHZvaWQgKCpvcHBfc2V0 X3JlZ2FtbWFfbW9kZSkoCiAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbV9iYXNlLAogICBlbnVtIG9w cF9yZWdhbW1hIG1vZGUpOwoKIHZvaWQgKCppcHBfc2V0X2RlZ2FtbWEpKAogICBzdHJ1Y3QgdHJh bnNmb3JtICp4Zm1fYmFzZSwKICAgZW51bSBpcHBfZGVnYW1tYV9tb2RlIG1vZGUpOwoKIHZvaWQg KCppcHBfcHJvZ3JhbV9pbnB1dF9sdXQpKAogICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm1fYmFzZSwK ICAgY29uc3Qgc3RydWN0IGRjX2dhbW1hICpnYW1tYSk7Cgogdm9pZCAoKmlwcF9wcm9ncmFtX2Rl Z2FtbWFfcHdsKShzdHJ1Y3QgdHJhbnNmb3JtICp4Zm1fYmFzZSwKICAgICAgICAgIGNvbnN0IHN0 cnVjdCBwd2xfcGFyYW1zICpwYXJhbXMpOwoKIHZvaWQgKCppcHBfc2V0dXApKAogICBzdHJ1Y3Qg dHJhbnNmb3JtICp4Zm1fYmFzZSwKICAgZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQs CiAgIGVudW0gZXhwYW5zaW9uX21vZGUgbW9kZSwKICAgc3RydWN0IGRjX2NzY190cmFuc2Zvcm0g aW5wdXRfY3NjX2NvbG9yX21hdHJpeCwKICAgZW51bSBkY19jb2xvcl9zcGFjZSBpbnB1dF9jb2xv cl9zcGFjZSk7Cgogdm9pZCAoKmlwcF9mdWxsX2J5cGFzcykoc3RydWN0IHRyYW5zZm9ybSAqeGZt X2Jhc2UpOwoKIHZvaWQgKCpzZXRfY3Vyc29yX2F0dHJpYnV0ZXMpKAogICBzdHJ1Y3QgdHJhbnNm b3JtICp4Zm1fYmFzZSwKICAgY29uc3Qgc3RydWN0IGRjX2N1cnNvcl9hdHRyaWJ1dGVzICphdHRy KTsKCn07Cgpjb25zdCB1aW50MTZfdCAqZ2V0X2ZpbHRlcl8ydGFwXzE2cCh2b2lkKTsKY29uc3Qg dWludDE2X3QgKmdldF9maWx0ZXJfMnRhcF82NHAodm9pZCk7CmNvbnN0IHVpbnQxNl90ICpnZXRf ZmlsdGVyXzN0YXBfMTZwKHN0cnVjdCBmaXhlZDMxXzMyIHJhdGlvKTsKY29uc3QgdWludDE2X3Qg KmdldF9maWx0ZXJfM3RhcF82NHAoc3RydWN0IGZpeGVkMzFfMzIgcmF0aW8pOwpjb25zdCB1aW50 MTZfdCAqZ2V0X2ZpbHRlcl80dGFwXzE2cChzdHJ1Y3QgZml4ZWQzMV8zMiByYXRpbyk7CmNvbnN0 IHVpbnQxNl90ICpnZXRfZmlsdGVyXzR0YXBfNjRwKHN0cnVjdCBmaXhlZDMxXzMyIHJhdGlvKTsK Y29uc3QgdWludDE2X3QgKmdldF9maWx0ZXJfNXRhcF82NHAoc3RydWN0IGZpeGVkMzFfMzIgcmF0 aW8pOwpjb25zdCB1aW50MTZfdCAqZ2V0X2ZpbHRlcl82dGFwXzY0cChzdHJ1Y3QgZml4ZWQzMV8z MiByYXRpbyk7CmNvbnN0IHVpbnQxNl90ICpnZXRfZmlsdGVyXzd0YXBfNjRwKHN0cnVjdCBmaXhl ZDMxXzMyIHJhdGlvKTsKY29uc3QgdWludDE2X3QgKmdldF9maWx0ZXJfOHRhcF82NHAoc3RydWN0 IGZpeGVkMzFfMzIgcmF0aW8pOwoKCgplbnVtIGRzY2xfZGF0YV9wcm9jZXNzaW5nX2Zvcm1hdCB7 CiBEU0NMX0RBVEFfUFJDRVNTSU5HX0ZJWEVEX0ZPUk1BVCwKIERTQ0xfREFUQV9QUkNFU1NJTkdf RkxPQVRfRk9STUFULAp9OwoKCgoKCgoKc3RydWN0IGRwcF9jYXBzIHsKCiBlbnVtIGRzY2xfZGF0 YV9wcm9jZXNzaW5nX2Zvcm1hdCBkc2NsX2RhdGFfcHJvY19mb3JtYXQ7CgoKCgoKIHZvaWQgKCpk c2NsX2NhbGNfbGJfbnVtX3BhcnRpdGlvbnMpKAogICBjb25zdCBzdHJ1Y3Qgc2NhbGVyX2RhdGEg KnNjbF9kYXRhLAogICBlbnVtIGxiX21lbW9yeV9jb25maWcgbGJfY29uZmlnLAogICBpbnQgKm51 bV9wYXJ0X3ksCiAgIGludCAqbnVtX3BhcnRfYyk7Cn07CiMgMzIgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvb3BwLmgiIDIKIyAxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L21wYy5oIiAxCiMgMzYgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbXBjLmgiCmVu dW0gbXBjX291dHB1dF9jc2NfbW9kZSB7CiBNUENfT1VUUFVUX0NTQ19ESVNBQkxFID0gMCwKIE1Q Q19PVVRQVVRfQ1NDX0NPRUZfQSwKIE1QQ19PVVRQVVRfQ1NDX0NPRUZfQgp9OwoKCmVudW0gbXBj Y19ibGVuZF9tb2RlIHsKIE1QQ0NfQkxFTkRfTU9ERV9CWVBBU1MsCiBNUENDX0JMRU5EX01PREVf VE9QX0xBWUVSX1BBU1NUSFJPVUdILAogTVBDQ19CTEVORF9NT0RFX1RPUF9MQVlFUl9PTkxZLAog TVBDQ19CTEVORF9NT0RFX1RPUF9CT1RfQkxFTkRJTkcKfTsKCmVudW0gbXBjY19hbHBoYV9ibGVu ZF9tb2RlIHsKIE1QQ0NfQUxQSEFfQkxFTkRfTU9ERV9QRVJfUElYRUxfQUxQSEEsCiBNUENDX0FM UEhBX0JMRU5EX01PREVfUEVSX1BJWEVMX0FMUEhBX0NPTUJJTkVEX0dMT0JBTF9HQUlOLAogTVBD Q19BTFBIQV9CTEVORF9NT0RFX0dMT0JBTF9BTFBIQQp9OwoKCgoKc3RydWN0IG1wY2NfYmxuZF9j Zmcgewogc3RydWN0IHRnX2NvbG9yIGJsYWNrX2NvbG9yOwogZW51bSBtcGNjX2FscGhhX2JsZW5k X21vZGUgYWxwaGFfbW9kZTsKIGJvb2wgcHJlX211bHRpcGxpZWRfYWxwaGE7CiBpbnQgZ2xvYmFs X2dhaW47CiBpbnQgZ2xvYmFsX2FscGhhOwogYm9vbCBvdmVybGFwX29ubHk7CgoKIGludCBib3R0 b21fZ2Fpbl9tb2RlOwogaW50IGJhY2tncm91bmRfY29sb3JfYnBjOwogaW50IHRvcF9nYWluOwog aW50IGJvdHRvbV9pbnNpZGVfZ2FpbjsKIGludCBib3R0b21fb3V0c2lkZV9nYWluOwp9OwoKc3Ry dWN0IG1wY2Nfc21fY2ZnIHsKIGJvb2wgZW5hYmxlOwoKIGludCBzbV9tb2RlOwoKIGJvb2wgZnJh bWVfYWx0OwoKIGJvb2wgZmllbGRfYWx0OwoKIGludCBmb3JjZV9uZXh0X2ZyYW1lX3Bvcmxhcml0 eTsKCiBpbnQgZm9yY2VfbmV4dF9maWVsZF9wb2xhcml0eTsKfTsKCnN0cnVjdCBtcGNfZGVub3Jt X2NsYW1wIHsKIGludCBjbGFtcF9tYXhfcl9jcjsKIGludCBjbGFtcF9taW5fcl9jcjsKIGludCBj bGFtcF9tYXhfZ195OwogaW50IGNsYW1wX21pbl9nX3k7CiBpbnQgY2xhbXBfbWF4X2JfY2I7CiBp bnQgY2xhbXBfbWluX2JfY2I7Cn07CgoKCgoKc3RydWN0IG1wY2MgewogaW50IG1wY2NfaWQ7CiBp bnQgZHBwX2lkOwogc3RydWN0IG1wY2MgKm1wY2NfYm90Owogc3RydWN0IG1wY2NfYmxuZF9jZmcg YmxuZF9jZmc7CiBzdHJ1Y3QgbXBjY19zbV9jZmcgc21fY2ZnOwp9OwoKCgoKc3RydWN0IG1wY190 cmVlIHsKIGludCBvcHBfaWQ7CiBzdHJ1Y3QgbXBjYyAqb3BwX2xpc3Q7Cn07CgpzdHJ1Y3QgbXBj IHsKIGNvbnN0IHN0cnVjdCBtcGNfZnVuY3MgKmZ1bmNzOwogc3RydWN0IGRjX2NvbnRleHQgKmN0 eDsKCiBzdHJ1Y3QgbXBjYyBtcGNjX2FycmF5WzZdOwogc3RydWN0IHB3bF9wYXJhbXMgYmxlbmRl cl9wYXJhbXM7CiBib29sIGNtX2J5cGFzc19tb2RlOwp9OwoKc3RydWN0IG1wY2Nfc3RhdGUgewog dWludDMyX3Qgb3BwX2lkOwogdWludDMyX3QgZHBwX2lkOwogdWludDMyX3QgYm90X21wY2NfaWQ7 CiB1aW50MzJfdCBtb2RlOwogdWludDMyX3QgYWxwaGFfbW9kZTsKIHVpbnQzMl90IHByZV9tdWx0 aXBsaWVkX2FscGhhOwogdWludDMyX3Qgb3ZlcmxhcF9vbmx5OwogdWludDMyX3QgaWRsZTsKIHVp bnQzMl90IGJ1c3k7Cn07CgpzdHJ1Y3QgbXBjX2Z1bmNzIHsKIHZvaWQgKCpyZWFkX21wY2Nfc3Rh dGUpKAogICBzdHJ1Y3QgbXBjICptcGMsCiAgIGludCBtcGNjX2luc3QsCiAgIHN0cnVjdCBtcGNj X3N0YXRlICpzKTsKIyAxNjEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9pbmMvaHcvbXBjLmgiCiBzdHJ1Y3QgbXBjYyogKCppbnNlcnRfcGxhbmUpKAogICBzdHJ1 Y3QgbXBjICptcGMsCiAgIHN0cnVjdCBtcGNfdHJlZSAqdHJlZSwKICAgc3RydWN0IG1wY2NfYmxu ZF9jZmcgKmJsbmRfY2ZnLAogICBzdHJ1Y3QgbXBjY19zbV9jZmcgKnNtX2NmZywKICAgc3RydWN0 IG1wY2MgKmluc2VydF9hYm92ZV9tcGNjLAogICBpbnQgZHBwX2lkLAogICBpbnQgbXBjY19pZCk7 CiMgMTgwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3 L21wYy5oIgogdm9pZCAoKnJlbW92ZV9tcGNjKSgKICAgc3RydWN0IG1wYyAqbXBjLAogICBzdHJ1 Y3QgbXBjX3RyZWUgKnRyZWUsCiAgIHN0cnVjdCBtcGNjICptcGNjKTsKIyAxOTMgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbXBjLmgiCiB2b2lkICgq bXBjX2luaXQpKHN0cnVjdCBtcGMgKm1wYyk7CiB2b2lkICgqbXBjX2luaXRfc2luZ2xlX2luc3Qp KAogICBzdHJ1Y3QgbXBjICptcGMsCiAgIHVuc2lnbmVkIGludCBtcGNjX2lkKTsKIyAyMDggIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbXBjLmgiCiB2 b2lkICgqdXBkYXRlX2JsZW5kaW5nKSgKICBzdHJ1Y3QgbXBjICptcGMsCiAgc3RydWN0IG1wY2Nf YmxuZF9jZmcgKmJsbmRfY2ZnLAogIGludCBtcGNjX2lkKTsKCiBzdHJ1Y3QgbXBjYyogKCpnZXRf bXBjY19mb3JfZHBwKSgKICAgc3RydWN0IG1wY190cmVlICp0cmVlLAogICBpbnQgZHBwX2lkKTsK CiB2b2lkICgqd2FpdF9mb3JfaWRsZSkoc3RydWN0IG1wYyAqbXBjLCBpbnQgaWQpOwoKIHZvaWQg KCphc3NlcnRfbXBjY19pZGxlX2JlZm9yZV9jb25uZWN0KShzdHJ1Y3QgbXBjICptcGMsIGludCBt cGNjX2lkKTsKCiB2b2lkICgqaW5pdF9tcGNjX2xpc3RfZnJvbV9odykoCiAgc3RydWN0IG1wYyAq bXBjLAogIHN0cnVjdCBtcGNfdHJlZSAqdHJlZSk7Cgogdm9pZCAoKnNldF9kZW5vcm0pKHN0cnVj dCBtcGMgKm1wYywKICAgaW50IG9wcF9pZCwKICAgZW51bSBkY19jb2xvcl9kZXB0aCBvdXRwdXRf ZGVwdGgpOwoKIHZvaWQgKCpzZXRfZGVub3JtX2NsYW1wKSgKICAgc3RydWN0IG1wYyAqbXBjLAog ICBpbnQgb3BwX2lkLAogICBzdHJ1Y3QgbXBjX2Rlbm9ybV9jbGFtcCBkZW5vcm1fY2xhbXApOwoK IHZvaWQgKCpzZXRfb3V0cHV0X2NzYykoc3RydWN0IG1wYyAqbXBjLAogICBpbnQgb3BwX2lkLAog ICBjb25zdCB1aW50MTZfdCAqcmVndmFsLAogICBlbnVtIG1wY19vdXRwdXRfY3NjX21vZGUgb2Nz Y19tb2RlKTsKCiB2b2lkICgqc2V0X29jc2NfZGVmYXVsdCkoc3RydWN0IG1wYyAqbXBjLAogICBp bnQgb3BwX2lkLAogICBlbnVtIGRjX2NvbG9yX3NwYWNlIGNvbG9yX3NwYWNlLAogICBlbnVtIG1w Y19vdXRwdXRfY3NjX21vZGUgb2NzY19tb2RlKTsKCiB2b2lkICgqc2V0X291dHB1dF9nYW1tYSko CiAgIHN0cnVjdCBtcGMgKm1wYywKICAgaW50IG1wY2NfaWQsCiAgIGNvbnN0IHN0cnVjdCBwd2xf cGFyYW1zICpwYXJhbXMpOwogdm9pZCAoKnBvd2VyX29uX21wY19tZW1fcHdyKSgKICAgc3RydWN0 IG1wYyAqbXBjLAogICBpbnQgbXBjY19pZCwKICAgYm9vbCBwb3dlcl9vbik7Cgp9OwojIDMzICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L29wcC5oIiAy CgpzdHJ1Y3QgZml4ZWQzMV8zMjsKCgplbnVtIGNsYW1waW5nX3JhbmdlIHsKIENMQU1QSU5HX0ZV TExfUkFOR0UgPSAwLAogQ0xBTVBJTkdfTElNSVRFRF9SQU5HRV84QlBDLAogQ0xBTVBJTkdfTElN SVRFRF9SQU5HRV8xMEJQQywKIENMQU1QSU5HX0xJTUlURURfUkFOR0VfMTJCUEMsCgogQ0xBTVBJ TkdfTElNSVRFRF9SQU5HRV9QUk9HUkFNTUFCTEUKfTsKCnN0cnVjdCBjbGFtcGluZ19hbmRfcGl4 ZWxfZW5jb2RpbmdfcGFyYW1zIHsKIGVudW0gZGNfcGl4ZWxfZW5jb2RpbmcgcGl4ZWxfZW5jb2Rp bmc7CiBlbnVtIGNsYW1waW5nX3JhbmdlIGNsYW1waW5nX2xldmVsOwogZW51bSBkY19jb2xvcl9k ZXB0aCBjX2RlcHRoOwp9OwoKc3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zIHsKIHN0 cnVjdCB7CgoKICB1aW50MzJfdCBUUlVOQ0FURV9FTkFCTEVEOjE7CgogIHVpbnQzMl90IFRSVU5D QVRFX0RFUFRIOjI7CgogIHVpbnQzMl90IFRSVU5DQVRFX01PREU6MTsKCgoKICB1aW50MzJfdCBT UEFUSUFMX0RJVEhFUl9FTkFCTEVEOjE7CgogIHVpbnQzMl90IFNQQVRJQUxfRElUSEVSX0RFUFRI OjI7CgogIHVpbnQzMl90IFNQQVRJQUxfRElUSEVSX01PREU6MjsKCiAgdWludDMyX3QgUkdCX1JB TkRPTToxOwoKICB1aW50MzJfdCBGUkFNRV9SQU5ET006MTsKCiAgdWludDMyX3QgSElHSFBBU1Nf UkFORE9NOjE7CgoKCiAgdWludDMyX3QgRlJBTUVfTU9EVUxBVElPTl9FTkFCTEVEOjE7CgogIHVp bnQzMl90IEZSQU1FX01PRFVMQVRJT05fREVQVEg6MjsKCiAgdWludDMyX3QgVEVNUE9SQUxfTEVW RUw6MTsKICB1aW50MzJfdCBGUkMyNToyOwogIHVpbnQzMl90IEZSQzUwOjI7CiAgdWludDMyX3Qg RlJDNzU6MjsKIH0gZmxhZ3M7CgogdWludDMyX3Qgcl9zZWVkX3ZhbHVlOwogdWludDMyX3QgYl9z ZWVkX3ZhbHVlOwogdWludDMyX3QgZ19zZWVkX3ZhbHVlOwogZW51bSBkY19waXhlbF9lbmNvZGlu ZyBwaXhlbF9lbmNvZGluZzsKfTsKCmVudW0gd2lkZV9nYW11dF9yZWdhbW1hX21vZGUgewoKIFdJ REVfR0FNVVRfUkVHQU1NQV9NT0RFX0dSQVBISUNTX0JZUEFTUywKCiBXSURFX0dBTVVUX1JFR0FN TUFfTU9ERV9HUkFQSElDU19TUkdCMjQsCgogV0lERV9HQU1VVF9SRUdBTU1BX01PREVfR1JBUEhJ Q1NfWFlZQ0MyMiwKCiBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9HUkFQSElDU19NQVRSSVhfQSwK CiBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9HUkFQSElDU19NQVRSSVhfQiwKCiBXSURFX0dBTVVU X1JFR0FNTUFfTU9ERV9PVkxfQllQQVNTLAoKIFdJREVfR0FNVVRfUkVHQU1NQV9NT0RFX09WTF9T UkdCMjQsCgogV0lERV9HQU1VVF9SRUdBTU1BX01PREVfT1ZMX1hZWUNDMjIsCgogV0lERV9HQU1V VF9SRUdBTU1BX01PREVfT1ZMX01BVFJJWF9BLAoKIFdJREVfR0FNVVRfUkVHQU1NQV9NT0RFX09W TF9NQVRSSVhfQgp9OwoKc3RydWN0IGdhbW1hX3BpeGVsIHsKIHN0cnVjdCBmaXhlZDMxXzMyIHI7 CiBzdHJ1Y3QgZml4ZWQzMV8zMiBnOwogc3RydWN0IGZpeGVkMzFfMzIgYjsKfTsKCmVudW0gY2hh bm5lbF9uYW1lIHsKIENIQU5ORUxfTkFNRV9SRUQsCiBDSEFOTkVMX05BTUVfR1JFRU4sCiBDSEFO TkVMX05BTUVfQkxVRQp9OwoKc3RydWN0IGN1c3RvbV9mbG9hdF9mb3JtYXQgewogdWludDMyX3Qg bWFudGlzc2FfYml0czsKIHVpbnQzMl90IGV4cG9uZW50YV9iaXRzOwogYm9vbCBzaWduOwp9OwoK c3RydWN0IGN1c3RvbV9mbG9hdF92YWx1ZSB7CiB1aW50MzJfdCBtYW50aXNzYTsKIHVpbnQzMl90 IGV4cG9uZW50YTsKIHVpbnQzMl90IHZhbHVlOwogYm9vbCBuZWdhdGl2ZTsKfTsKCnN0cnVjdCBo d194X3BvaW50IHsKIHVpbnQzMl90IGN1c3RvbV9mbG9hdF94Owogc3RydWN0IGZpeGVkMzFfMzIg eDsKIHN0cnVjdCBmaXhlZDMxXzMyIHJlZ2FtbWFfeV9yZWQ7CiBzdHJ1Y3QgZml4ZWQzMV8zMiBy ZWdhbW1hX3lfZ3JlZW47CiBzdHJ1Y3QgZml4ZWQzMV8zMiByZWdhbW1hX3lfYmx1ZTsKCn07Cgpz dHJ1Y3QgcHdsX2Zsb2F0X2RhdGFfZXggewogc3RydWN0IGZpeGVkMzFfMzIgcjsKIHN0cnVjdCBm aXhlZDMxXzMyIGc7CiBzdHJ1Y3QgZml4ZWQzMV8zMiBiOwogc3RydWN0IGZpeGVkMzFfMzIgZGVs dGFfcjsKIHN0cnVjdCBmaXhlZDMxXzMyIGRlbHRhX2c7CiBzdHJ1Y3QgZml4ZWQzMV8zMiBkZWx0 YV9iOwp9OwoKZW51bSBod19wb2ludF9wb3NpdGlvbiB7CgogSFdfUE9JTlRfUE9TSVRJT05fTUlE RExFLAoKIEhXX1BPSU5UX1BPU0lUSU9OX0xFRlQsCgogSFdfUE9JTlRfUE9TSVRJT05fUklHSFQK fTsKCnN0cnVjdCBnYW1tYV9wb2ludCB7CiBpbnQzMl90IGxlZnRfaW5kZXg7CiBpbnQzMl90IHJp Z2h0X2luZGV4OwogZW51bSBod19wb2ludF9wb3NpdGlvbiBwb3M7CiBzdHJ1Y3QgZml4ZWQzMV8z MiBjb2VmZjsKfTsKCnN0cnVjdCBwaXhlbF9nYW1tYV9wb2ludCB7CiBzdHJ1Y3QgZ2FtbWFfcG9p bnQgcjsKIHN0cnVjdCBnYW1tYV9wb2ludCBnOwogc3RydWN0IGdhbW1hX3BvaW50IGI7Cn07Cgpz dHJ1Y3QgZ2FtbWFfY29lZmZpY2llbnRzIHsKIHN0cnVjdCBmaXhlZDMxXzMyIGEwWzNdOwogc3Ry dWN0IGZpeGVkMzFfMzIgYTFbM107CiBzdHJ1Y3QgZml4ZWQzMV8zMiBhMlszXTsKIHN0cnVjdCBm aXhlZDMxXzMyIGEzWzNdOwogc3RydWN0IGZpeGVkMzFfMzIgdXNlcl9nYW1tYVszXTsKIHN0cnVj dCBmaXhlZDMxXzMyIHVzZXJfY29udHJhc3Q7CiBzdHJ1Y3QgZml4ZWQzMV8zMiB1c2VyX2JyaWdo dG5lc3M7Cn07CgpzdHJ1Y3QgcHdsX2Zsb2F0X2RhdGEgewogc3RydWN0IGZpeGVkMzFfMzIgcjsK IHN0cnVjdCBmaXhlZDMxXzMyIGc7CiBzdHJ1Y3QgZml4ZWQzMV8zMiBiOwp9OwoKc3RydWN0IG1w Y190cmVlX2NmZyB7CiBpbnQgbnVtX3BpcGVzOwogaW50IGRwcFs2XTsKIGludCBtcGNjWzZdOwp9 OwoKc3RydWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3Igewogc3RydWN0IGRjX2NvbnRleHQgKmN0 eDsKIHVpbnQzMl90IGluc3Q7CiBzdHJ1Y3QgcHdsX3BhcmFtcyByZWdhbW1hX3BhcmFtczsKIHN0 cnVjdCBtcGNfdHJlZSBtcGNfdHJlZV9wYXJhbXM7CiBib29sIG1wY2NfZGlzY29ubmVjdF9wZW5k aW5nWzZdOwogY29uc3Qgc3RydWN0IG9wcF9mdW5jcyAqZnVuY3M7CiB1aW50MzJfdCBkeW5fZXhw YW5zaW9uOwp9OwoKZW51bSBmbXRfc3RlcmVvX2FjdGlvbiB7CiBGTVRfU1RFUkVPX0FDVElPTl9F TkFCTEUgPSAwLAogRk1UX1NURVJFT19BQ1RJT05fRElTQUJMRSwKIEZNVF9TVEVSRU9fQUNUSU9O X1VQREFURV9QT0xBUklUWQp9OwoKc3RydWN0IG9wcF9ncnBoX2NzY19hZGp1c3RtZW50IHsKCiBl bnVtIGRjX2NvbG9yX3NwYWNlIGNfc3BhY2U7CiBlbnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2Rl cHRoOwogZW51bSBncmFwaGljc19jc2NfYWRqdXN0X3R5cGUgY3NjX2FkanVzdF90eXBlOwogaW50 MzJfdCBhZGp1c3RfZGl2aWRlcjsKIGludDMyX3QgZ3JwaF9jb250OwogaW50MzJfdCBncnBoX3Nh dDsKIGludDMyX3QgZ3JwaF9icmlnaHQ7CiBpbnQzMl90IGdycGhfaHVlOwp9OwoKCgpzdHJ1Y3Qg aHdfYWRqdXN0bWVudF9yYW5nZSB7CiBpbnQzMl90IGh3X2RlZmF1bHQ7CiBpbnQzMl90IG1pbjsK IGludDMyX3QgbWF4OwogaW50MzJfdCBzdGVwOwogdWludDMyX3QgZGl2aWRlcjsKfTsKCmVudW0g b3ZsX2NzY19hZGp1c3RfaXRlbSB7CiBPVkVSTEFZX0JSSUdIVE5FU1MgPSAwLAogT1ZFUkxBWV9H QU1NQSwKIE9WRVJMQVlfQ09OVFJBU1QsCiBPVkVSTEFZX1NBVFVSQVRJT04sCiBPVkVSTEFZX0hV RSwKIE9WRVJMQVlfQUxQSEEsCiBPVkVSTEFZX0FMUEhBX1BFUl9QSVgsCiBPVkVSTEFZX0NPTE9S X1RFTVBFUkFUVVJFCn07CgplbnVtIG9wcGJ1Zl9kaXNwbGF5X3NlZ21lbnRhdGlvbiB7CiBPUFBC VUZfRElTUExBWV9TRUdNRU5UQVRJT05fMV9TRUdNRU5UID0gMCwKIE9QUEJVRl9ESVNQTEFZX1NF R01FTlRBVElPTl8yX1NFR01FTlQgPSAxLAogT1BQQlVGX0RJU1BMQVlfU0VHTUVOVEFUSU9OXzRf U0VHTUVOVCA9IDIsCiBPUFBCVUZfRElTUExBWV9TRUdNRU5UQVRJT05fNF9TRUdNRU5UX1NQTElU X0xFRlQgPSAzLAogT1BQQlVGX0RJU1BMQVlfU0VHTUVOVEFUSU9OXzRfU0VHTUVOVF9TUExJVF9S SUdIVCA9IDQKfTsKCnN0cnVjdCBvcHBidWZfcGFyYW1zIHsKIHVpbnQzMl90IGFjdGl2ZV93aWR0 aDsKIGVudW0gb3BwYnVmX2Rpc3BsYXlfc2VnbWVudGF0aW9uIG1zb19zZWdtZW50YXRpb247CiB1 aW50MzJfdCBtc29fb3ZlcmxhcF9waXhlbF9udW07CiB1aW50MzJfdCBwaXhlbF9yZXBldGl0aW9u OwogdWludDMyX3QgbnVtX3NlZ21lbnRfcGFkZGVkX3BpeGVsczsKfTsKCnN0cnVjdCBvcHBfZnVu Y3MgewoKCgoKIHZvaWQgKCpvcHBfcHJvZ3JhbV9mbXQpKAogICBzdHJ1Y3Qgb3V0cHV0X3BpeGVs X3Byb2Nlc3NvciAqb3BwLAogICBzdHJ1Y3QgYml0X2RlcHRoX3JlZHVjdGlvbl9wYXJhbXMgKmZt dF9iaXRfZGVwdGgsCiAgIHN0cnVjdCBjbGFtcGluZ19hbmRfcGl4ZWxfZW5jb2RpbmdfcGFyYW1z ICpjbGFtcGluZyk7Cgogdm9pZCAoKm9wcF9zZXRfZHluX2V4cGFuc2lvbikoCiAgc3RydWN0IG91 dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9wcCwKICBlbnVtIGRjX2NvbG9yX3NwYWNlIGNvbG9yX3Nw LAogIGVudW0gZGNfY29sb3JfZGVwdGggY29sb3JfZHB0aCwKICBlbnVtIHNpZ25hbF90eXBlIHNp Z25hbCk7Cgogdm9pZCAoKm9wcF9wcm9ncmFtX2JpdF9kZXB0aF9yZWR1Y3Rpb24pKAogIHN0cnVj dCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpvcHAsCiAgY29uc3Qgc3RydWN0IGJpdF9kZXB0aF9y ZWR1Y3Rpb25fcGFyYW1zICpwYXJhbXMpOwoKCiB2b2lkICgqb3BwX2dldF91bmRlcmxheV9hZGp1 c3RtZW50X3JhbmdlKSgKICAgc3RydWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9wcCwKICAg ZW51bSBvdmxfY3NjX2FkanVzdF9pdGVtIG92ZXJsYXlfYWRqdXN0X2l0ZW0sCiAgIHN0cnVjdCBo d19hZGp1c3RtZW50X3JhbmdlICpyYW5nZSk7Cgogdm9pZCAoKm9wcF9kZXN0cm95KShzdHJ1Y3Qg b3V0cHV0X3BpeGVsX3Byb2Nlc3NvciAqKm9wcCk7Cgogdm9pZCAoKm9wcF9wcm9ncmFtX3N0ZXJl bykoCiAgc3RydWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9wcCwKICBib29sIGVuYWJsZSwK ICBjb25zdCBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKnRpbWluZyk7Cgogdm9pZCAoKm9wcF9waXBl X2Nsb2NrX2NvbnRyb2wpKAogICBzdHJ1Y3Qgb3V0cHV0X3BpeGVsX3Byb2Nlc3NvciAqb3BwLAog ICBib29sIGVuYWJsZSk7Cgogdm9pZCAoKm9wcF9zZXRfZGlzcF9wYXR0ZXJuX2dlbmVyYXRvciko CiAgIHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpvcHAsCiAgIGVudW0gY29udHJvbGxl cl9kcF90ZXN0X3BhdHRlcm4gdGVzdF9wYXR0ZXJuLAogICBlbnVtIGNvbnRyb2xsZXJfZHBfY29s b3Jfc3BhY2UgY29sb3Jfc3BhY2UsCiAgIGVudW0gZGNfY29sb3JfZGVwdGggY29sb3JfZGVwdGgs CiAgIGNvbnN0IHN0cnVjdCB0Z19jb2xvciAqc29saWRfY29sb3IsCiAgIGludCB3aWR0aCwKICAg aW50IGhlaWdodCk7CgogYm9vbCAoKmRwZ19pc19ibGFua2VkKSgKICAgc3RydWN0IG91dHB1dF9w aXhlbF9wcm9jZXNzb3IgKm9wcCk7Cgogdm9pZCAoKm9wcF9kcGdfc2V0X2JsYW5rX2NvbG9yKSgK ICAgc3RydWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9wcCwKICAgY29uc3Qgc3RydWN0IHRn X2NvbG9yICpjb2xvcik7Cgogdm9pZCAoKm9wcF9wcm9ncmFtX2xlZnRfZWRnZV9leHRyYV9waXhl bCkoCiAgIHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpvcHAsCiAgIGJvb2wgY291bnQp OwoKfTsKIyAzNiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Rj LmgiIDIKCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2lu Yy9od19zZXF1ZW5jZXIuaCIgMQojIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvaW5jL2h3X3NlcXVlbmNlci5oIgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY2xvY2tfc291cmNlLmgiIDEKIyAzMCAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jbG9ja19zb3VyY2UuaCIK IyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBo X29iamVjdF9pZC5oIiAxCiMgMzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvY2xvY2tfc291cmNlLmgiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9iaW9zX3BhcnNlcl90eXBlcy5oIiAxCiMgMzAgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2Jpb3NfcGFyc2Vy X3R5cGVzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RtX3NlcnZpY2VzLmgiIDEKIyAzNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RtX3NlcnZpY2VzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fdHJhY2UuaCIgMQojIDMyICIuL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV90cmFj ZS5oIgojIDEgIi4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgiIDEKIyAyMyAiLi9pbmNsdWRl L2xpbnV4L3RyYWNlcG9pbnQuaCIKc3RydWN0IG1vZHVsZTsKc3RydWN0IHRyYWNlcG9pbnQ7CnN0 cnVjdCBub3RpZmllcl9ibG9jazsKCnN0cnVjdCB0cmFjZV9ldmFsX21hcCB7CiBjb25zdCBjaGFy ICpzeXN0ZW07CiBjb25zdCBjaGFyICpldmFsX3N0cmluZzsKIHVuc2lnbmVkIGxvbmcgZXZhbF92 YWx1ZTsKfTsKCgoKZXh0ZXJuIHN0cnVjdCBzcmN1X3N0cnVjdCB0cmFjZXBvaW50X3NyY3U7Cgpl eHRlcm4gaW50CnRyYWNlcG9pbnRfcHJvYmVfcmVnaXN0ZXIoc3RydWN0IHRyYWNlcG9pbnQgKnRw LCB2b2lkICpwcm9iZSwgdm9pZCAqZGF0YSk7CmV4dGVybiBpbnQKdHJhY2Vwb2ludF9wcm9iZV9y ZWdpc3Rlcl9wcmlvKHN0cnVjdCB0cmFjZXBvaW50ICp0cCwgdm9pZCAqcHJvYmUsIHZvaWQgKmRh dGEsCiAgICAgICAgICBpbnQgcHJpbyk7CmV4dGVybiBpbnQKdHJhY2Vwb2ludF9wcm9iZV91bnJl Z2lzdGVyKHN0cnVjdCB0cmFjZXBvaW50ICp0cCwgdm9pZCAqcHJvYmUsIHZvaWQgKmRhdGEpOwpl eHRlcm4gdm9pZApmb3JfZWFjaF9rZXJuZWxfdHJhY2Vwb2ludCh2b2lkICgqZmN0KShzdHJ1Y3Qg dHJhY2Vwb2ludCAqdHAsIHZvaWQgKnByaXYpLAogIHZvaWQgKnByaXYpOwoKCnN0cnVjdCB0cF9t b2R1bGUgewogc3RydWN0IGxpc3RfaGVhZCBsaXN0Owogc3RydWN0IG1vZHVsZSAqbW9kOwp9OwoK Ym9vbCB0cmFjZV9tb2R1bGVfaGFzX2JhZF90YWludChzdHJ1Y3QgbW9kdWxlICptb2QpOwpleHRl cm4gaW50IHJlZ2lzdGVyX3RyYWNlcG9pbnRfbW9kdWxlX25vdGlmaWVyKHN0cnVjdCBub3RpZmll cl9ibG9jayAqbmIpOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfdHJhY2Vwb2ludF9tb2R1bGVfbm90 aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CiMgODAgIi4vaW5jbHVkZS9saW51eC90 cmFjZXBvaW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgdHJhY2Vwb2ludF9zeW5jaHJvbml6ZV91bnJlZ2lzdGVyKHZvaWQp CnsKIHN5bmNocm9uaXplX3NyY3UoJnRyYWNlcG9pbnRfc3JjdSk7CiBzeW5jaHJvbml6ZV9yY3Uo KTsKfQoKCgoKCgpleHRlcm4gaW50IHN5c2NhbGxfcmVnZnVuYyh2b2lkKTsKZXh0ZXJuIHZvaWQg c3lzY2FsbF91bnJlZ2Z1bmModm9pZCk7CiMgMTAxICIuL2luY2x1ZGUvbGludXgvdHJhY2Vwb2lu dC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzdHJ1Y3QgdHJhY2Vwb2ludCAqdHJhY2Vwb2ludF9wdHJfZGVyZWYodHJhY2Vwb2ludF9w dHJfdCAqcCkKewogcmV0dXJuIG9mZnNldF90b19wdHIocCk7Cn0KIyAzMyAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fdHJhY2UuaCIg MgoKZXh0ZXJuIHN0cnVjdCB0cmFjZXBvaW50IF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJlZzsg c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCB0cmFjZV9hbWRncHVfZGNfcnJlZyh1bnNpZ25lZCBsb25nICpyZWFkX2NvdW50LCB1aW50 MzJfdCByZWcsIHVpbnQzMl90IHZhbHVlKSB7IGlmIChzdGF0aWNfa2V5X2ZhbHNlKCZfX3RyYWNl cG9pbnRfYW1kZ3B1X2RjX3JyZWcua2V5KSkgZG8geyBzdHJ1Y3QgdHJhY2Vwb2ludF9mdW5jICpp dF9mdW5jX3B0cjsgdm9pZCAqaXRfZnVuYzsgdm9pZCAqX19kYXRhOyBpbnQgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9faWR4ID0gMDsgaWYgKCEoY3B1bWFza190ZXN0X2NwdSgoKHsgdHlw ZW9mKGNwdV9udW1iZXIpIHBzY3JfcmV0X187IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5 ID0gKHR5cGVvZigoJihjcHVfbnVtYmVyKSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBf dmVyaWZ5OyB9IHdoaWxlICgwKTsgc3dpdGNoKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6 IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNp emVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIi Z3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIp KTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUi ICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsg Y2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIg OiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFz bSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBm b19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNw dV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2UgMjogcHNjcl9yZXRfXyA9ICh7 IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIp KSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIs JTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAy OiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIi IChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xh dGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRf XykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92 IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAo Y3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9f cmV0X187IH0pOyBicmVhazsgY2FzZSA0OiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1i ZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20g dm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9f cmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAo Im1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAi bSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAi IiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251 bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6 IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFr OyBjYXNlIDg6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBz d2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIg ImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNw dV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikp OyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIg IjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBj YXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6 ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9f YmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFk X3NpemVfY2FsbF9wYXJhbWV0ZXIoKTsgYnJlYWs7IH0gcHNjcl9yZXRfXzsgfSkpLCAoKGNvbnN0 IHN0cnVjdCBjcHVtYXNrICopJl9fY3B1X29ubGluZV9tYXNrKSkpKSByZXR1cm47ICh7IGludCBf X3JldF93YXJuX29uID0gISEoMCAmJiAocHJlZW1wdF9jb3VudCgpICYgKCgoMVVMIDw8ICgxKSkt MSkgPDwgKCgoMCArIDgpICsgOCkgKyA0KSkpKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19y ZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAi LmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxu IiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxu IiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0 LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVn X2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIg KCJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVf ZG1fdHJhY2UuaCIpLCAiaSIgKDM0KSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8 IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBh c20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxu XHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDQ0KSk7 IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7 IH0pOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBpZiAoMCkgeyBfX2lk eCA9IHNyY3VfcmVhZF9sb2NrX25vdHJhY2UoJnRyYWNlcG9pbnRfc3JjdSk7IHJjdV9pcnFfZW50 ZXJfaXJxc29uKCk7IH0gaXRfZnVuY19wdHIgPSAoeyB0eXBlb2YoKCZfX3RyYWNlcG9pbnRfYW1k Z3B1X2RjX3JyZWcpLT5mdW5jcykgX19fX19fX19wMSA9ICh7IHVuaW9uIHsgdHlwZW9mKCgmX190 cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnKS0+ZnVuY3MpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBf X3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3Jy ZWcpLT5mdW5jcyksIF9fdS5fX2MsIHNpemVvZigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJl ZyktPmZ1bmNzKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoKCZfX3RyYWNlcG9p bnRfYW1kZ3B1X2RjX3JyZWcpLT5mdW5jcyksIF9fdS5fX2MsIHNpemVvZigoJl9fdHJhY2Vwb2lu dF9hbWRncHVfZGNfcnJlZyktPmZ1bmNzKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsg fSk7ICgodHlwZW9mKCooJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJlZyktPmZ1bmNzKSAqKShf X19fX19fX3AxKSk7IH0pOyBpZiAoaXRfZnVuY19wdHIpIHsgZG8geyBpdF9mdW5jID0gKGl0X2Z1 bmNfcHRyKS0+ZnVuYzsgX19kYXRhID0gKGl0X2Z1bmNfcHRyKS0+ZGF0YTsgKCh2b2lkKCopKHZv aWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqcmVhZF9jb3VudCwgdWludDMyX3QgcmVnLCB1aW50 MzJfdCB2YWx1ZSkpKGl0X2Z1bmMpKShfX2RhdGEsIHJlYWRfY291bnQsIHJlZywgdmFsdWUpOyB9 IHdoaWxlICgoKytpdF9mdW5jX3B0ciktPmZ1bmMpOyB9IGlmICgwKSB7IHJjdV9pcnFfZXhpdF9p cnFzb24oKTsgc3JjdV9yZWFkX3VubG9ja19ub3RyYWNlKCZ0cmFjZXBvaW50X3NyY3UsIF9faWR4 KTsgfSBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsg aWYgKDAgJiYgKGNwdW1hc2tfdGVzdF9jcHUoKCh7IHR5cGVvZihjcHVfbnVtYmVyKSBwc2NyX3Jl dF9fOyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X251bWJl cikpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsgfSB3aGlsZSAoMCk7IHN3 aXRjaChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBwc2NyX3JldF9fID0gKHsgdHlwZW9m KGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2Fz ZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2 b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19y ZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgi bW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJt IiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVt YmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsg fSk7IGJyZWFrOyBjYXNlIDI6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZv X3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGls ZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykg OiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAi dyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1 X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdz IiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7 IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAi MSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRl ZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2Ug NDogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAo c2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUl IiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJl cikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAi JSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFr OyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUw IiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODog YXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVy Y3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2FzZSA4OiBwc2NyX3JldF9fID0g KHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJl cikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEi IiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNl IDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9 ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZv bGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3Jl dF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJt b3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0i IChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBm b19yZXRfXzsgfSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7 IGJyZWFrOyB9IHBzY3JfcmV0X187IH0pKSwgKChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqKSZfX2Nw dV9vbmxpbmVfbWFzaykpKSkgeyByY3VfcmVhZF9sb2NrX3NjaGVkX25vdHJhY2UoKTsgKHsgdHlw ZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNzKSkgKl9fX19fX19fcDEgPSAo dHlwZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNzKSkgKikoeyB1bmlvbiB7 IHR5cGVvZigoX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNzKSkgX192YWw7IGNoYXIg X19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJigoX190cmFjZXBvaW50X2Ft ZGdwdV9kY19ycmVnLmZ1bmNzKSksIF9fdS5fX2MsIHNpemVvZigoX190cmFjZXBvaW50X2FtZGdw dV9kY19ycmVnLmZ1bmNzKSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKChfX3Ry YWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcuZnVuY3MpKSwgX191Ll9fYywgc2l6ZW9mKChfX3RyYWNl cG9pbnRfYW1kZ3B1X2RjX3JyZWcuZnVuY3MpKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3Zh bDsgfSk7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBlb2YoKihfX3RyYWNlcG9pbnRfYW1kZ3B1 X2RjX3JyZWcuZnVuY3MpKSAqKShfX19fX19fX3AxKSk7IH0pOyByY3VfcmVhZF91bmxvY2tfc2No ZWRfbm90cmFjZSgpOyB9IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX2FtZGdwdV9kY19ycmVnKHZvaWQg KCpwcm9iZSkodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25nICpyZWFkX2NvdW50LCB1aW50MzJf dCByZWcsIHVpbnQzMl90IHZhbHVlKSwgdm9pZCAqZGF0YSkgeyByZXR1cm4gdHJhY2Vwb2ludF9w cm9iZV9yZWdpc3RlcigmX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLCAodm9pZCAqKXByb2Jl LCBkYXRhKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgcmVnaXN0ZXJfdHJhY2VfcHJpb19hbWRncHVfZGNfcnJlZyh2b2lkICgq cHJvYmUpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqcmVhZF9jb3VudCwgdWludDMyX3Qg cmVnLCB1aW50MzJfdCB2YWx1ZSksIHZvaWQgKmRhdGEsIGludCBwcmlvKSB7IHJldHVybiB0cmFj ZXBvaW50X3Byb2JlX3JlZ2lzdGVyX3ByaW8oJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJlZywg KHZvaWQgKilwcm9iZSwgZGF0YSwgcHJpbyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHVucmVnaXN0ZXJfdHJhY2VfYW1kZ3B1 X2RjX3JyZWcodm9pZCAoKnByb2JlKSh2b2lkICpfX2RhdGEsIHVuc2lnbmVkIGxvbmcgKnJlYWRf Y291bnQsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsdWUpLCB2b2lkICpkYXRhKSB7IHJldHVy biB0cmFjZXBvaW50X3Byb2JlX3VucmVnaXN0ZXIoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJl ZywgKHZvaWQgKilwcm9iZSwgZGF0YSk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjaGVja190cmFjZV9jYWxsYmFja190eXBl X2FtZGdwdV9kY19ycmVnKHZvaWQgKCpjYikodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25nICpy ZWFkX2NvdW50LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbHVlKSkgeyB9IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdHJhY2Vf YW1kZ3B1X2RjX3JyZWdfZW5hYmxlZCh2b2lkKSB7IHJldHVybiBzdGF0aWNfa2V5X2ZhbHNlKCZf X3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcua2V5KTsgfQojIDQ5ICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV90cmFjZS5oIgogOwoK ZXh0ZXJuIHN0cnVjdCB0cmFjZXBvaW50IF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZzsgc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCB0cmFjZV9hbWRncHVfZGNfd3JlZyh1bnNpZ25lZCBsb25nICp3cml0ZV9jb3VudCwgdWludDMy X3QgcmVnLCB1aW50MzJfdCB2YWx1ZSkgeyBpZiAoc3RhdGljX2tleV9mYWxzZSgmX190cmFjZXBv aW50X2FtZGdwdV9kY193cmVnLmtleSkpIGRvIHsgc3RydWN0IHRyYWNlcG9pbnRfZnVuYyAqaXRf ZnVuY19wdHI7IHZvaWQgKml0X2Z1bmM7IHZvaWQgKl9fZGF0YTsgaW50IF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2lkeCA9IDA7IGlmICghKGNwdW1hc2tfdGVzdF9jcHUoKCh7IHR5cGVv ZihjcHVfbnVtYmVyKSBwc2NyX3JldF9fOyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9 ICh0eXBlb2YoKCYoY3B1X251bWJlcikpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3Zl cmlmeTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBw c2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXpl b2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdz IiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7 IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAi MSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNh c2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDog Ij1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20g dm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9f cmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVf c2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDI6IHBzY3JfcmV0X18gPSAoeyB0 eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkg eyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUw IiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjog YXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRp bGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18p IDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIg InEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNw dV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3Jl dF9fOyB9KTsgYnJlYWs7IGNhc2UgNDogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVy KSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZv bGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3Jl dF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJt b3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0i IChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIl JSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1i ZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIg IiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVh azsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsg Y2FzZSA4OiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dp dGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJi ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVf bnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3Mi IjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsg YnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIx IiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2Fz ZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2Jh ZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9z aXplX2NhbGxfcGFyYW1ldGVyKCk7IGJyZWFrOyB9IHBzY3JfcmV0X187IH0pKSwgKChjb25zdCBz dHJ1Y3QgY3B1bWFzayAqKSZfX2NwdV9vbmxpbmVfbWFzaykpKSkgcmV0dXJuOyAoeyBpbnQgX19y ZXRfd2Fybl9vbiA9ICEhKDAgJiYgKHByZWVtcHRfY291bnQoKSAmICgoKDFVTCA8PCAoMSkpLTEp IDw8ICgoKDAgKyA4KSArIDgpICsgNCkpKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0 X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5i eXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIg IjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIg Ilx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53 b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19l bnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgi ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2Rt X3RyYWNlLmgiKSwgImkiICg1MSksICJpIiAoKDEgPDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8PCA4 KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNt IHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0 IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICg0NSkpOyB9 KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9 KTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKDApIHsgX19pZHgg PSBzcmN1X3JlYWRfbG9ja19ub3RyYWNlKCZ0cmFjZXBvaW50X3NyY3UpOyByY3VfaXJxX2VudGVy X2lycXNvbigpOyB9IGl0X2Z1bmNfcHRyID0gKHsgdHlwZW9mKCgmX190cmFjZXBvaW50X2FtZGdw dV9kY193cmVnKS0+ZnVuY3MpIF9fX19fX19fcDEgPSAoeyB1bmlvbiB7IHR5cGVvZigoJl9fdHJh Y2Vwb2ludF9hbWRncHVfZGNfd3JlZyktPmZ1bmNzKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191 OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKCgmX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVn KS0+ZnVuY3MpLCBfX3UuX19jLCBzaXplb2YoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3dyZWcp LT5mdW5jcykpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKCgmX190cmFjZXBvaW50 X2FtZGdwdV9kY193cmVnKS0+ZnVuY3MpLCBfX3UuX19jLCBzaXplb2YoKCZfX3RyYWNlcG9pbnRf YW1kZ3B1X2RjX3dyZWcpLT5mdW5jcykpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0p OyAoKHR5cGVvZigqKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3dyZWcpLT5mdW5jcykgKikoX19f X19fX19wMSkpOyB9KTsgaWYgKGl0X2Z1bmNfcHRyKSB7IGRvIHsgaXRfZnVuYyA9IChpdF9mdW5j X3B0ciktPmZ1bmM7IF9fZGF0YSA9IChpdF9mdW5jX3B0ciktPmRhdGE7ICgodm9pZCgqKSh2b2lk ICpfX2RhdGEsIHVuc2lnbmVkIGxvbmcgKndyaXRlX2NvdW50LCB1aW50MzJfdCByZWcsIHVpbnQz Ml90IHZhbHVlKSkoaXRfZnVuYykpKF9fZGF0YSwgd3JpdGVfY291bnQsIHJlZywgdmFsdWUpOyB9 IHdoaWxlICgoKytpdF9mdW5jX3B0ciktPmZ1bmMpOyB9IGlmICgwKSB7IHJjdV9pcnFfZXhpdF9p cnFzb24oKTsgc3JjdV9yZWFkX3VubG9ja19ub3RyYWNlKCZ0cmFjZXBvaW50X3NyY3UsIF9faWR4 KTsgfSBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsg aWYgKDAgJiYgKGNwdW1hc2tfdGVzdF9jcHUoKCh7IHR5cGVvZihjcHVfbnVtYmVyKSBwc2NyX3Jl dF9fOyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X251bWJl cikpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsgfSB3aGlsZSAoMCk7IHN3 aXRjaChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBwc2NyX3JldF9fID0gKHsgdHlwZW9m KGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2Fz ZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2 b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19y ZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgi bW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJt IiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVt YmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsg fSk7IGJyZWFrOyBjYXNlIDI6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZv X3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGls ZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykg OiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAi dyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1 X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdz IiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7 IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAi MSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRl ZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2Ug NDogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAo c2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUl IiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJl cikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAi JSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFr OyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUw IiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODog YXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVy Y3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2FzZSA4OiBwc2NyX3JldF9fID0g KHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJl cikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEi IiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNl IDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9 ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZv bGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3Jl dF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJt b3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0i IChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBm b19yZXRfXzsgfSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7 IGJyZWFrOyB9IHBzY3JfcmV0X187IH0pKSwgKChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqKSZfX2Nw dV9vbmxpbmVfbWFzaykpKSkgeyByY3VfcmVhZF9sb2NrX3NjaGVkX25vdHJhY2UoKTsgKHsgdHlw ZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnLmZ1bmNzKSkgKl9fX19fX19fcDEgPSAo dHlwZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnLmZ1bmNzKSkgKikoeyB1bmlvbiB7 IHR5cGVvZigoX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnLmZ1bmNzKSkgX192YWw7IGNoYXIg X19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJigoX190cmFjZXBvaW50X2Ft ZGdwdV9kY193cmVnLmZ1bmNzKSksIF9fdS5fX2MsIHNpemVvZigoX190cmFjZXBvaW50X2FtZGdw dV9kY193cmVnLmZ1bmNzKSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKChfX3Ry YWNlcG9pbnRfYW1kZ3B1X2RjX3dyZWcuZnVuY3MpKSwgX191Ll9fYywgc2l6ZW9mKChfX3RyYWNl cG9pbnRfYW1kZ3B1X2RjX3dyZWcuZnVuY3MpKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3Zh bDsgfSk7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBlb2YoKihfX3RyYWNlcG9pbnRfYW1kZ3B1 X2RjX3dyZWcuZnVuY3MpKSAqKShfX19fX19fX3AxKSk7IH0pOyByY3VfcmVhZF91bmxvY2tfc2No ZWRfbm90cmFjZSgpOyB9IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX2FtZGdwdV9kY193cmVnKHZvaWQg KCpwcm9iZSkodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25nICp3cml0ZV9jb3VudCwgdWludDMy X3QgcmVnLCB1aW50MzJfdCB2YWx1ZSksIHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRyYWNlcG9pbnRf cHJvYmVfcmVnaXN0ZXIoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZywgKHZvaWQgKilwcm9i ZSwgZGF0YSk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX3ByaW9fYW1kZ3B1X2RjX3dyZWcodm9pZCAo KnByb2JlKSh2b2lkICpfX2RhdGEsIHVuc2lnbmVkIGxvbmcgKndyaXRlX2NvdW50LCB1aW50MzJf dCByZWcsIHVpbnQzMl90IHZhbHVlKSwgdm9pZCAqZGF0YSwgaW50IHByaW8pIHsgcmV0dXJuIHRy YWNlcG9pbnRfcHJvYmVfcmVnaXN0ZXJfcHJpbygmX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVn LCAodm9pZCAqKXByb2JlLCBkYXRhLCBwcmlvKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdW5yZWdpc3Rlcl90cmFjZV9hbWRn cHVfZGNfd3JlZyh2b2lkICgqcHJvYmUpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqd3Jp dGVfY291bnQsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsdWUpLCB2b2lkICpkYXRhKSB7IHJl dHVybiB0cmFjZXBvaW50X3Byb2JlX3VucmVnaXN0ZXIoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNf d3JlZywgKHZvaWQgKilwcm9iZSwgZGF0YSk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjaGVja190cmFjZV9jYWxsYmFja190 eXBlX2FtZGdwdV9kY193cmVnKHZvaWQgKCpjYikodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25n ICp3cml0ZV9jb3VudCwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWx1ZSkpIHsgfSBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRy YWNlX2FtZGdwdV9kY193cmVnX2VuYWJsZWQodm9pZCkgeyByZXR1cm4gc3RhdGljX2tleV9mYWxz ZSgmX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnLmtleSk7IH0KIyA2NiAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fdHJhY2UuaCIK IDsKCgpleHRlcm4gc3RydWN0IHRyYWNlcG9pbnQgX190cmFjZXBvaW50X2FtZGdwdV9kY19wZXJm b3JtYW5jZTsgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCB0cmFjZV9hbWRncHVfZGNfcGVyZm9ybWFuY2UodW5zaWduZWQgbG9uZyBy ZWFkX2NvdW50LCB1bnNpZ25lZCBsb25nIHdyaXRlX2NvdW50LCB1bnNpZ25lZCBsb25nICpsYXN0 X3JlYWQsIHVuc2lnbmVkIGxvbmcgKmxhc3Rfd3JpdGUsIGNvbnN0IGNoYXIgKmZ1bmMsIHVuc2ln bmVkIGludCBsaW5lKSB7IGlmIChzdGF0aWNfa2V5X2ZhbHNlKCZfX3RyYWNlcG9pbnRfYW1kZ3B1 X2RjX3BlcmZvcm1hbmNlLmtleSkpIGRvIHsgc3RydWN0IHRyYWNlcG9pbnRfZnVuYyAqaXRfZnVu Y19wdHI7IHZvaWQgKml0X2Z1bmM7IHZvaWQgKl9fZGF0YTsgaW50IF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2lkeCA9IDA7IGlmICghKGNwdW1hc2tfdGVzdF9jcHUoKCh7IHR5cGVvZihj cHVfbnVtYmVyKSBwc2NyX3JldF9fOyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0 eXBlb2YoKCYoY3B1X251bWJlcikpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3Zlcmlm eTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBwc2Ny X3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2Yo Y3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6 IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJy ZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIi LCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2Ug NDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1y IiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9s YXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0 X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6 ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDI6IHBzY3JfcmV0X18gPSAoeyB0eXBl b2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBj YXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6 ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNt IHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZv X3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUg KCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDog Im0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEg IiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9u dW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9f OyB9KTsgYnJlYWs7IGNhc2UgNDogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBw Zm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0 aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9f KSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3Yi ICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChj cHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIi Z3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIp KTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUi ICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsg ZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2Fz ZSA4OiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNo IChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVt YmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoi ICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJl YWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIs JTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4 OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIi IChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9w ZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXpl X2NhbGxfcGFyYW1ldGVyKCk7IGJyZWFrOyB9IHBzY3JfcmV0X187IH0pKSwgKChjb25zdCBzdHJ1 Y3QgY3B1bWFzayAqKSZfX2NwdV9vbmxpbmVfbWFzaykpKSkgcmV0dXJuOyAoeyBpbnQgX19yZXRf d2Fybl9vbiA9ICEhKDAgJiYgKHByZWVtcHRfY291bnQoKSAmICgoKDFVTCA8PCAoMSkpLTEpIDw8 ICgoKDAgKyA4KSArIDgpICsgNCkpKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dh cm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRl IDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6 XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0 IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3Jk ICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRy eTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3Ry YWNlLmgiKSwgImkiICg2OSksICJpIiAoKDEgPDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkp LCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZv bGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAi LmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICg0NikpOyB9KTsg fSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKDApIHsgX19pZHggPSBz cmN1X3JlYWRfbG9ja19ub3RyYWNlKCZ0cmFjZXBvaW50X3NyY3UpOyByY3VfaXJxX2VudGVyX2ly cXNvbigpOyB9IGl0X2Z1bmNfcHRyID0gKHsgdHlwZW9mKCgmX190cmFjZXBvaW50X2FtZGdwdV9k Y19wZXJmb3JtYW5jZSktPmZ1bmNzKSBfX19fX19fX3AxID0gKHsgdW5pb24geyB0eXBlb2YoKCZf X3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVuY3MpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKCZfX3RyYWNlcG9pbnRfYW1k Z3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVuY3MpLCBfX3UuX19jLCBzaXplb2YoKCZfX3RyYWNlcG9p bnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVuY3MpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXpl X25vY2hlY2soJigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFuY2UpLT5mdW5jcyks IF9fdS5fX2MsIHNpemVvZigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFuY2UpLT5m dW5jcykpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOyAoKHR5cGVvZigqKCZfX3Ry YWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVuY3MpICopKF9fX19fX19fcDEpKTsg fSk7IGlmIChpdF9mdW5jX3B0cikgeyBkbyB7IGl0X2Z1bmMgPSAoaXRfZnVuY19wdHIpLT5mdW5j OyBfX2RhdGEgPSAoaXRfZnVuY19wdHIpLT5kYXRhOyAoKHZvaWQoKikodm9pZCAqX19kYXRhLCB1 bnNpZ25lZCBsb25nIHJlYWRfY291bnQsIHVuc2lnbmVkIGxvbmcgd3JpdGVfY291bnQsIHVuc2ln bmVkIGxvbmcgKmxhc3RfcmVhZCwgdW5zaWduZWQgbG9uZyAqbGFzdF93cml0ZSwgY29uc3QgY2hh ciAqZnVuYywgdW5zaWduZWQgaW50IGxpbmUpKShpdF9mdW5jKSkoX19kYXRhLCByZWFkX2NvdW50 LCB3cml0ZV9jb3VudCwgbGFzdF9yZWFkLCBsYXN0X3dyaXRlLCBmdW5jLCBsaW5lKTsgfSB3aGls ZSAoKCsraXRfZnVuY19wdHIpLT5mdW5jKTsgfSBpZiAoMCkgeyByY3VfaXJxX2V4aXRfaXJxc29u KCk7IHNyY3VfcmVhZF91bmxvY2tfbm90cmFjZSgmdHJhY2Vwb2ludF9zcmN1LCBfX2lkeCk7IH0g X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7IGlmICgw ICYmIChjcHVtYXNrX3Rlc3RfY3B1KCgoeyB0eXBlb2YoY3B1X251bWJlcikgcHNjcl9yZXRfXzsg ZG8geyBjb25zdCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKGNwdV9udW1iZXIpKSAr IDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyBzd2l0Y2go c2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVf bnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTog YXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRp bGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18p IDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIg ImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNw dV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikp OyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBi cmVhazsgY2FzZSAyOiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRf Xzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJt b3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0i IChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIl JSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1i ZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIg IiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVh azsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwl MCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0 OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDQ6IHBz Y3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVv ZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIiZ3Mi IjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsg YnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUiICIx IiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2Fz ZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2 b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19y ZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9z aXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2UgODogcHNjcl9yZXRfXyA9ICh7IHR5 cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7 IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAi IDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBh c20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChw Zm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGls ZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykg OiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAi cSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1 X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0 X187IH0pOyBicmVhazsgZGVmYXVsdDogX19iYWRfc2l6ZV9jYWxsX3BhcmFtZXRlcigpOyBicmVh azsgfSBwc2NyX3JldF9fOyB9KSksICgoY29uc3Qgc3RydWN0IGNwdW1hc2sgKikmX19jcHVfb25s aW5lX21hc2spKSkpIHsgcmN1X3JlYWRfbG9ja19zY2hlZF9ub3RyYWNlKCk7ICh7IHR5cGVvZigq KF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFuY2UuZnVuY3MpKSAqX19fX19fX19wMSA9 ICh0eXBlb2YoKihfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlLmZ1bmNzKSkgKiko eyB1bmlvbiB7IHR5cGVvZigoX190cmFjZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZS5mdW5j cykpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYo KF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFuY2UuZnVuY3MpKSwgX191Ll9fYywgc2l6 ZW9mKChfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlLmZ1bmNzKSkpOyBlbHNlIF9f cmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKChfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1h bmNlLmZ1bmNzKSksIF9fdS5fX2MsIHNpemVvZigoX190cmFjZXBvaW50X2FtZGdwdV9kY19wZXJm b3JtYW5jZS5mdW5jcykpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsgZG8geyB9 IHdoaWxlICgwKTsgOyAoKHR5cGVvZigqKF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFu Y2UuZnVuY3MpKSAqKShfX19fX19fX3AxKSk7IH0pOyByY3VfcmVhZF91bmxvY2tfc2NoZWRfbm90 cmFjZSgpOyB9IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX2FtZGdwdV9kY19wZXJmb3JtYW5jZSh2b2lk ICgqcHJvYmUpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyByZWFkX2NvdW50LCB1bnNpZ25l ZCBsb25nIHdyaXRlX2NvdW50LCB1bnNpZ25lZCBsb25nICpsYXN0X3JlYWQsIHVuc2lnbmVkIGxv bmcgKmxhc3Rfd3JpdGUsIGNvbnN0IGNoYXIgKmZ1bmMsIHVuc2lnbmVkIGludCBsaW5lKSwgdm9p ZCAqZGF0YSkgeyByZXR1cm4gdHJhY2Vwb2ludF9wcm9iZV9yZWdpc3RlcigmX190cmFjZXBvaW50 X2FtZGdwdV9kY19wZXJmb3JtYW5jZSwgKHZvaWQgKilwcm9iZSwgZGF0YSk7IH0gc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ2lz dGVyX3RyYWNlX3ByaW9fYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKHZvaWQgKCpwcm9iZSkodm9pZCAq X19kYXRhLCB1bnNpZ25lZCBsb25nIHJlYWRfY291bnQsIHVuc2lnbmVkIGxvbmcgd3JpdGVfY291 bnQsIHVuc2lnbmVkIGxvbmcgKmxhc3RfcmVhZCwgdW5zaWduZWQgbG9uZyAqbGFzdF93cml0ZSwg Y29uc3QgY2hhciAqZnVuYywgdW5zaWduZWQgaW50IGxpbmUpLCB2b2lkICpkYXRhLCBpbnQgcHJp bykgeyByZXR1cm4gdHJhY2Vwb2ludF9wcm9iZV9yZWdpc3Rlcl9wcmlvKCZfX3RyYWNlcG9pbnRf YW1kZ3B1X2RjX3BlcmZvcm1hbmNlLCAodm9pZCAqKXByb2JlLCBkYXRhLCBwcmlvKTsgfSBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg dW5yZWdpc3Rlcl90cmFjZV9hbWRncHVfZGNfcGVyZm9ybWFuY2Uodm9pZCAoKnByb2JlKSh2b2lk ICpfX2RhdGEsIHVuc2lnbmVkIGxvbmcgcmVhZF9jb3VudCwgdW5zaWduZWQgbG9uZyB3cml0ZV9j b3VudCwgdW5zaWduZWQgbG9uZyAqbGFzdF9yZWFkLCB1bnNpZ25lZCBsb25nICpsYXN0X3dyaXRl LCBjb25zdCBjaGFyICpmdW5jLCB1bnNpZ25lZCBpbnQgbGluZSksIHZvaWQgKmRhdGEpIHsgcmV0 dXJuIHRyYWNlcG9pbnRfcHJvYmVfdW5yZWdpc3RlcigmX190cmFjZXBvaW50X2FtZGdwdV9kY19w ZXJmb3JtYW5jZSwgKHZvaWQgKilwcm9iZSwgZGF0YSk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjaGVja190cmFjZV9jYWxs YmFja190eXBlX2FtZGdwdV9kY19wZXJmb3JtYW5jZSh2b2lkICgqY2IpKHZvaWQgKl9fZGF0YSwg dW5zaWduZWQgbG9uZyByZWFkX2NvdW50LCB1bnNpZ25lZCBsb25nIHdyaXRlX2NvdW50LCB1bnNp Z25lZCBsb25nICpsYXN0X3JlYWQsIHVuc2lnbmVkIGxvbmcgKmxhc3Rfd3JpdGUsIGNvbnN0IGNo YXIgKmZ1bmMsIHVuc2lnbmVkIGludCBsaW5lKSkgeyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdHJhY2VfYW1kZ3B1X2RjX3Bl cmZvcm1hbmNlX2VuYWJsZWQodm9pZCkgeyByZXR1cm4gc3RhdGljX2tleV9mYWxzZSgmX190cmFj ZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZS5rZXkpOyB9CiMgOTggIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3RyYWNlLmgiCiA7 CgoKCgoKIyAxICIuL2luY2x1ZGUvdHJhY2UvZGVmaW5lX3RyYWNlLmgiIDEKIyAxMDUgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3Ry YWNlLmgiIDIKIyAzNSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RtX3NlcnZpY2VzLmgiIDIKCgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9kbV9zZXJ2aWNlc190eXBlcy5oIiAxCiMgMzIgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlc190eXBlcy5oIgpzdHJ1Y3QgcHBf c211X2Z1bmNzOwoKc3RydWN0IGRtX3BwX2Nsb2NrX3JhbmdlIHsKIGludCBtaW5fa2h6OwogaW50 IG1heF9raHo7Cn07CgplbnVtIGRtX3BwX2Nsb2Nrc19zdGF0ZSB7CiBETV9QUF9DTE9DS1NfU1RB VEVfSU5WQUxJRCwKIERNX1BQX0NMT0NLU19TVEFURV9VTFRSQV9MT1csCiBETV9QUF9DTE9DS1Nf U1RBVEVfTE9XLAogRE1fUFBfQ0xPQ0tTX1NUQVRFX05PTUlOQUwsCiBETV9QUF9DTE9DS1NfU1RB VEVfUEVSRk9STUFOQ0UsCgoKIERNX1BQX0NMT0NLU19EUE1fU1RBVEVfTEVWRUxfSU5WQUxJRCA9 IERNX1BQX0NMT0NLU19TVEFURV9JTlZBTElELAogRE1fUFBfQ0xPQ0tTX0RQTV9TVEFURV9MRVZF TF8wLAogRE1fUFBfQ0xPQ0tTX0RQTV9TVEFURV9MRVZFTF8xLAogRE1fUFBfQ0xPQ0tTX0RQTV9T VEFURV9MRVZFTF8yLAoKIERNX1BQX0NMT0NLU19EUE1fU1RBVEVfTEVWRUxfMywKIERNX1BQX0NM T0NLU19EUE1fU1RBVEVfTEVWRUxfNCwKIERNX1BQX0NMT0NLU19EUE1fU1RBVEVfTEVWRUxfNSwK IERNX1BQX0NMT0NLU19EUE1fU1RBVEVfTEVWRUxfNiwKIERNX1BQX0NMT0NLU19EUE1fU1RBVEVf TEVWRUxfNywKCiBETV9QUF9DTE9DS1NfTUFYX1NUQVRFUwp9OwoKc3RydWN0IGRtX3BwX2dwdV9j bG9ja19yYW5nZSB7CiBlbnVtIGRtX3BwX2Nsb2Nrc19zdGF0ZSBjbG9ja19zdGF0ZTsKIHN0cnVj dCBkbV9wcF9jbG9ja19yYW5nZSBzY2xrOwogc3RydWN0IGRtX3BwX2Nsb2NrX3JhbmdlIG1jbGs7 CiBzdHJ1Y3QgZG1fcHBfY2xvY2tfcmFuZ2UgZWNsazsKIHN0cnVjdCBkbV9wcF9jbG9ja19yYW5n ZSBkY2xrOwp9OwoKZW51bSBkbV9wcF9jbG9ja190eXBlIHsKIERNX1BQX0NMT0NLX1RZUEVfRElT UExBWV9DTEsgPSAxLAogRE1fUFBfQ0xPQ0tfVFlQRV9FTkdJTkVfQ0xLLAogRE1fUFBfQ0xPQ0tf VFlQRV9NRU1PUllfQ0xLLAogRE1fUFBfQ0xPQ0tfVFlQRV9EQ0ZDTEssCiBETV9QUF9DTE9DS19U WVBFX0RDRUZDTEssCiBETV9QUF9DTE9DS19UWVBFX1NPQ0NMSywKIERNX1BQX0NMT0NLX1RZUEVf UElYRUxDTEssCiBETV9QUF9DTE9DS19UWVBFX0RJU1BMQVlQSFlDTEssCiBETV9QUF9DTE9DS19U WVBFX0RQUENMSywKIERNX1BQX0NMT0NLX1RZUEVfRkNMSywKfTsKIyA5NyAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzX3R5cGVzLmgiCnN0cnVj dCBkbV9wcF9jbG9ja19sZXZlbHMgewogdWludDMyX3QgbnVtX2xldmVsczsKIHVpbnQzMl90IGNs b2Nrc19pbl9raHpbMTZdOwp9OwoKc3RydWN0IGRtX3BwX2Nsb2NrX3dpdGhfbGF0ZW5jeSB7CiB1 aW50MzJfdCBjbG9ja3NfaW5fa2h6OwogdWludDMyX3QgbGF0ZW5jeV9pbl91czsKfTsKCnN0cnVj dCBkbV9wcF9jbG9ja19sZXZlbHNfd2l0aF9sYXRlbmN5IHsKIHVpbnQzMl90IG51bV9sZXZlbHM7 CiBzdHJ1Y3QgZG1fcHBfY2xvY2tfd2l0aF9sYXRlbmN5IGRhdGFbMTZdOwp9OwoKc3RydWN0IGRt X3BwX2Nsb2NrX3dpdGhfdm9sdGFnZSB7CiB1aW50MzJfdCBjbG9ja3NfaW5fa2h6OwogdWludDMy X3Qgdm9sdGFnZV9pbl9tdjsKfTsKCnN0cnVjdCBkbV9wcF9jbG9ja19sZXZlbHNfd2l0aF92b2x0 YWdlIHsKIHVpbnQzMl90IG51bV9sZXZlbHM7CiBzdHJ1Y3QgZG1fcHBfY2xvY2tfd2l0aF92b2x0 YWdlIGRhdGFbMTZdOwp9OwoKc3RydWN0IGRtX3BwX3NpbmdsZV9kaXNwX2NvbmZpZyB7CiBlbnVt IHNpZ25hbF90eXBlIHNpZ25hbDsKIHVpbnQ4X3QgdHJhbnNtaXR0ZXI7CiB1aW50OF90IGRkaV9j aGFubmVsX21hcHBpbmc7CiB1aW50OF90IHBpcGVfaWR4OwogdWludDMyX3Qgc3JjX2hlaWdodDsK IHVpbnQzMl90IHNyY193aWR0aDsKIHVpbnQzMl90IHZfcmVmcmVzaDsKIHVpbnQzMl90IHN5bV9j bG9jazsKIHN0cnVjdCBkY19saW5rX3NldHRpbmdzIGxpbmtfc2V0dGluZ3M7Cn07CgoKCmVudW0g ZG1fcHBfd21fc2V0X2lkIHsKIFdNX1NFVF9BID0gMCwKIFdNX1NFVF9CLAogV01fU0VUX0MsCiBX TV9TRVRfRCwKIFdNX1NFVF9JTlZBTElEID0gMHhmZmZmLAp9OwoKc3RydWN0IGRtX3BwX2Nsb2Nr X3JhbmdlX2Zvcl93bV9zZXQgewogZW51bSBkbV9wcF93bV9zZXRfaWQgd21fc2V0X2lkOwogdWlu dDMyX3Qgd21fbWluX2VuZ19jbGtfaW5fa2h6OwogdWludDMyX3Qgd21fbWF4X2VuZ19jbGtfaW5f a2h6OwogdWludDMyX3Qgd21fbWluX21lbV9jbGtfaW5fa2h6OwogdWludDMyX3Qgd21fbWF4X21l bV9jbGtfaW5fa2h6Owp9OwoKc3RydWN0IGRtX3BwX3dtX3NldHNfd2l0aF9jbG9ja19yYW5nZXMg ewogdWludDMyX3QgbnVtX3dtX3NldHM7CiBzdHJ1Y3QgZG1fcHBfY2xvY2tfcmFuZ2VfZm9yX3dt X3NldCB3bV9jbGtfcmFuZ2VzWzRdOwp9OwoKc3RydWN0IGRtX3BwX2Nsb2NrX3JhbmdlX2Zvcl9k bWlmX3dtX3NldF9zb2MxNSB7CiBlbnVtIGRtX3BwX3dtX3NldF9pZCB3bV9zZXRfaWQ7CiB1aW50 MzJfdCB3bV9taW5fZGNmY2xrX2Nsa19pbl9raHo7CiB1aW50MzJfdCB3bV9tYXhfZGNmY2xrX2Ns a19pbl9raHo7CiB1aW50MzJfdCB3bV9taW5fbWVtX2Nsa19pbl9raHo7CiB1aW50MzJfdCB3bV9t YXhfbWVtX2Nsa19pbl9raHo7Cn07CgpzdHJ1Y3QgZG1fcHBfY2xvY2tfcmFuZ2VfZm9yX21jaWZf d21fc2V0X3NvYzE1IHsKIGVudW0gZG1fcHBfd21fc2V0X2lkIHdtX3NldF9pZDsKIHVpbnQzMl90 IHdtX21pbl9zb2NjbGtfY2xrX2luX2toejsKIHVpbnQzMl90IHdtX21heF9zb2NjbGtfY2xrX2lu X2toejsKIHVpbnQzMl90IHdtX21pbl9tZW1fY2xrX2luX2toejsKIHVpbnQzMl90IHdtX21heF9t ZW1fY2xrX2luX2toejsKfTsKCnN0cnVjdCBkbV9wcF93bV9zZXRzX3dpdGhfY2xvY2tfcmFuZ2Vz X3NvYzE1IHsKIHVpbnQzMl90IG51bV93bV9kbWlmX3NldHM7CiB1aW50MzJfdCBudW1fd21fbWNp Zl9zZXRzOwogc3RydWN0IGRtX3BwX2Nsb2NrX3JhbmdlX2Zvcl9kbWlmX3dtX3NldF9zb2MxNQog IHdtX2RtaWZfY2xvY2tzX3Jhbmdlc1s0XTsKIHN0cnVjdCBkbV9wcF9jbG9ja19yYW5nZV9mb3Jf bWNpZl93bV9zZXRfc29jMTUKICB3bV9tY2lmX2Nsb2Nrc19yYW5nZXNbNF07Cn07CgoKCnN0cnVj dCBkbV9wcF9kaXNwbGF5X2NvbmZpZ3VyYXRpb24gewogYm9vbCBuYl9wc3RhdGVfc3dpdGNoX2Rp c2FibGU7CiBib29sIGNwdV9jYzZfZGlzYWJsZTsKIGJvb2wgY3B1X3BzdGF0ZV9kaXNhYmxlOwog dWludDMyX3QgY3B1X3BzdGF0ZV9zZXBhcmF0aW9uX3RpbWU7CgogdWludDMyX3QgbWluX21lbW9y eV9jbG9ja19raHo7CiB1aW50MzJfdCBtaW5fZW5naW5lX2Nsb2NrX2toejsKIHVpbnQzMl90IG1p bl9lbmdpbmVfY2xvY2tfZGVlcF9zbGVlcF9raHo7CgogdWludDMyX3QgYXZhaWxfbWNsa19zd2l0 Y2hfdGltZV91czsKIHVpbnQzMl90IGF2YWlsX21jbGtfc3dpdGNoX3RpbWVfaW5fZGlzcF9hY3Rp dmVfdXM7CiB1aW50MzJfdCBtaW5fZGNmY2xvY2tfa2h6OwogdWludDMyX3QgbWluX2RjZmNfZGVl cF9zbGVlcF9jbG9ja19raHo7CgogdWludDMyX3QgZGlzcF9jbGtfa2h6OwoKIGJvb2wgYWxsX2Rp c3BsYXlzX2luX3N5bmM7CgogdWludDhfdCBkaXNwbGF5X2NvdW50Owogc3RydWN0IGRtX3BwX3Np bmdsZV9kaXNwX2NvbmZpZyBkaXNwX2NvbmZpZ3NbNl07CgoKCiB1aW50OF90IGNydGNfaW5kZXg7 CgogdWludDMyX3QgbGluZV90aW1lX2luX3VzOwp9OwoKc3RydWN0IGRtX2JsX2RhdGFfcG9pbnQg ewoKICB1aW50OF90IGx1bWluYW5jZTsKCgoKICB1aW50OF90IHNpZ25hbF9sZXZlbDsKfTsKCgoK c3RydWN0IGRtX2FjcGlfYXRpZl9iYWNrbGlnaHRfY2FwcyB7CiB1aW50MTZfdCBzaXplOwogdWlu dDE2X3QgZmxhZ3M7CiB1aW50OF90IGVycm9yX2NvZGU7CiB1aW50OF90IGFjX2xldmVsX3BlcmNl bnRhZ2U7CiB1aW50OF90IGRjX2xldmVsX3BlcmNlbnRhZ2U7CiB1aW50OF90IG1pbl9pbnB1dF9z aWduYWw7CiB1aW50OF90IG1heF9pbnB1dF9zaWduYWw7CiB1aW50OF90IG51bV9kYXRhX3BvaW50 czsKIHN0cnVjdCBkbV9ibF9kYXRhX3BvaW50IGRhdGFfcG9pbnRzWzk5XTsKfTsKCmVudW0gZG1f YWNwaV9kaXNwbGF5X3R5cGUgewogQWNwaURpc3BsYXlUeXBlX0xDRDEgPSAwLAogQWNwaURpc3Bs YXlUeXBlX0NSVDEgPSAxLAogQWNwaURpc3BsYXlUeXBlX0RGUDEgPSAzLAogQWNwaURpc3BsYXlU eXBlX0NSVDIgPSA0LAogQWNwaURpc3BsYXlUeXBlX0xDRDIgPSA1LAogQWNwaURpc3BsYXlUeXBl X0RGUDIgPSA3LAogQWNwaURpc3BsYXlUeXBlX0RGUDMgPSA5LAogQWNwaURpc3BsYXlUeXBlX0RG UDQgPSAxMCwKIEFjcGlEaXNwbGF5VHlwZV9ERlA1ID0gMTEsCiBBY3BpRGlzcGxheVR5cGVfREZQ NiA9IDEyCn07CgpzdHJ1Y3QgZG1fcHBfcG93ZXJfbGV2ZWxfY2hhbmdlX3JlcXVlc3QgewogZW51 bSBkbV9wcF9jbG9ja3Nfc3RhdGUgcG93ZXJfbGV2ZWw7Cn07CgpzdHJ1Y3QgZG1fcHBfY2xvY2tf Zm9yX3ZvbHRhZ2VfcmVxIHsKIGVudW0gZG1fcHBfY2xvY2tfdHlwZSBjbGtfdHlwZTsKIHVpbnQz Ml90IGNsb2Nrc19pbl9raHo7Cn07CgpzdHJ1Y3QgZG1fcHBfc3RhdGljX2Nsb2NrX2luZm8gewog dWludDMyX3QgbWF4X3NjbGtfa2h6OwogdWludDMyX3QgbWF4X21jbGtfa2h6OwoKCiBlbnVtIGRt X3BwX2Nsb2Nrc19zdGF0ZSBtYXhfY2xvY2tzX3N0YXRlOwp9OwoKc3RydWN0IGR0bl9taW5fY2xr X2luZm8gewogdWludDMyX3QgZGlzcF9jbGtfa2h6OwogdWludDMyX3QgbWluX2VuZ2luZV9jbG9j a19raHo7CiB1aW50MzJfdCBtaW5fbWVtb3J5X2Nsb2NrX2toejsKfTsKIyAzOCAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzLmgiIDIKIyAxICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9sb2dnZXJfaW50 ZXJmYWNlLmgiIDEKIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2luY2x1ZGUvbG9nZ2VyX2ludGVyZmFjZS5oIgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2xvZ2dlcl90eXBlcy5oIiAxCiMgMzAgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2xvZ2dlcl9pbnRlcmZhY2Uu aCIgMgoKc3RydWN0IGRjX2NvbnRleHQ7CnN0cnVjdCBkY19saW5rOwpzdHJ1Y3QgZGNfc3VyZmFj ZV91cGRhdGU7CnN0cnVjdCByZXNvdXJjZV9jb250ZXh0OwpzdHJ1Y3QgZGNfc3RhdGU7CgoKCgoK Cgp2b2lkIGRjX2Nvbm5fbG9nX2hleF9saW51eChjb25zdCB1aW50OF90ICpoZXhfZGF0YSwgaW50 IGhleF9kYXRhX2NvdW50KTsKCnZvaWQgcHJlX3N1cmZhY2VfdHJhY2UoCiAgc3RydWN0IGRjICpk YywKICBjb25zdCBzdHJ1Y3QgZGNfcGxhbmVfc3RhdGUgKmNvbnN0ICpwbGFuZV9zdGF0ZXMsCiAg aW50IHN1cmZhY2VfY291bnQpOwoKdm9pZCB1cGRhdGVfc3VyZmFjZV90cmFjZSgKICBzdHJ1Y3Qg ZGMgKmRjLAogIGNvbnN0IHN0cnVjdCBkY19zdXJmYWNlX3VwZGF0ZSAqdXBkYXRlcywKICBpbnQg c3VyZmFjZV9jb3VudCk7Cgp2b2lkIHBvc3Rfc3VyZmFjZV90cmFjZShzdHJ1Y3QgZGMgKmRjKTsK CnZvaWQgY29udGV4dF90aW1pbmdfdHJhY2UoCiAgc3RydWN0IGRjICpkYywKICBzdHJ1Y3QgcmVz b3VyY2VfY29udGV4dCAqcmVzX2N0eCk7Cgp2b2lkIGNvbnRleHRfY2xvY2tfdHJhY2UoCiAgc3Ry dWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwojIDM5ICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIgMgoKCgoKc3Ry dWN0IGRtdWJfc3J2OwpzdHJ1Y3QgZGNfZG11Yl9zcnY7CgppcnFfaGFuZGxlcl9pZHggZG1fcmVn aXN0ZXJfaW50ZXJydXB0KAogc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKIHN0cnVjdCBkY19pbnRl cnJ1cHRfcGFyYW1zICppbnRfcGFyYW1zLAogaW50ZXJydXB0X2hhbmRsZXIgaWgsCiB2b2lkICpo YW5kbGVyX2FyZ3MpOwoKCgoKCgoKdWludDMyX3QgZG1fcmVhZF9yZWdfZnVuYygKIGNvbnN0IHN0 cnVjdCBkY19jb250ZXh0ICpjdHgsCiB1aW50MzJfdCBhZGRyZXNzLAogY29uc3QgY2hhciAqZnVu Y19uYW1lKTsKIyA3MyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RtX3NlcnZpY2VzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgZG1fd3JpdGVfcmVnX2Z1bmMoCiBjb25zdCBzdHJ1Y3QgZGNf Y29udGV4dCAqY3R4LAogdWludDMyX3QgYWRkcmVzcywKIHVpbnQzMl90IHZhbHVlLAogY29uc3Qg Y2hhciAqZnVuY19uYW1lKQp7CgoKCgoKCiAoKChzdHJ1Y3QgY2dzX2RldmljZSAqKWN0eC0+Y2dz X2RldmljZSktPm9wcy0+d3JpdGVfcmVnaXN0ZXIoY3R4LT5jZ3NfZGV2aWNlLCBhZGRyZXNzLHZh bHVlKSk7CiB0cmFjZV9hbWRncHVfZGNfd3JlZygmY3R4LT5wZXJmX3RyYWNlLT53cml0ZV9jb3Vu dCwgYWRkcmVzcywgdmFsdWUpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1aW50MzJfdCBkbV9yZWFkX2luZGV4X3JlZygKIGNvbnN0 IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiBlbnVtIGNnc19pbmRfcmVnIGFkZHJfc3BhY2UsCiB1 aW50MzJfdCBpbmRleCkKewogcmV0dXJuICgoKHN0cnVjdCBjZ3NfZGV2aWNlICopY3R4LT5jZ3Nf ZGV2aWNlKS0+b3BzLT5yZWFkX2luZF9yZWdpc3RlcihjdHgtPmNnc19kZXZpY2UsIGFkZHJfc3Bh Y2UsaW5kZXgpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBkbV93cml0ZV9pbmRleF9yZWcoCiBjb25zdCBzdHJ1Y3QgZGNf Y29udGV4dCAqY3R4LAogZW51bSBjZ3NfaW5kX3JlZyBhZGRyX3NwYWNlLAogdWludDMyX3QgaW5k ZXgsCiB1aW50MzJfdCB2YWx1ZSkKewogKCgoc3RydWN0IGNnc19kZXZpY2UgKiljdHgtPmNnc19k ZXZpY2UpLT5vcHMtPndyaXRlX2luZF9yZWdpc3RlcihjdHgtPmNnc19kZXZpY2UsIGFkZHJfc3Bh Y2UsaW5kZXgsdmFsdWUpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdWludDMyX3QgZ2V0X3JlZ19maWVsZF92YWx1ZV9leCgKIHVp bnQzMl90IHJlZ192YWx1ZSwKIHVpbnQzMl90IG1hc2ssCiB1aW50OF90IHNoaWZ0KQp7CiByZXR1 cm4gKG1hc2sgJiByZWdfdmFsdWUpID4+IHNoaWZ0Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1aW50MzJfdCBzZXRfcmVn X2ZpZWxkX3ZhbHVlX2V4KAogdWludDMyX3QgcmVnX3ZhbHVlLAogdWludDMyX3QgdmFsdWUsCiB1 aW50MzJfdCBtYXNrLAogdWludDhfdCBzaGlmdCkKewogKHsgaW50IF9fcmV0X3dhcm5fb24gPSAh ISghKG1hc2sgIT0gMCkpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwg MCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAw eDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxv bmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25n ICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJc dCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdz XG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIpLCAiaSIgKDEyNiks ICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRy eSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rp b24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0 aW9uXG5cdCIgOiA6ICJpIiAoNDcpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0 KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CiByZXR1cm4gKHJlZ192YWx1ZSAmIH5tYXNrKSB8 IChtYXNrICYgKHZhbHVlIDw8IHNoaWZ0KSk7Cn0KIyAxMzcgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlcy5oIgp1aW50MzJfdCBnZW5lcmljX3Jl Z19zZXRfZXgoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKICB1aW50MzJfdCBhZGRyLCB1 aW50MzJfdCByZWdfdmFsLCBpbnQgbiwKICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEs IHVpbnQzMl90IGZpZWxkX3ZhbHVlMSwgLi4uKTsKCnVpbnQzMl90IGdlbmVyaWNfcmVnX3VwZGF0 ZV9leChjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogIHVpbnQzMl90IGFkZHIsIGludCBu LAogIHVpbnQ4X3Qgc2hpZnQxLCB1aW50MzJfdCBtYXNrMSwgdWludDMyX3QgZmllbGRfdmFsdWUx LCAuLi4pOwoKc3RydWN0IGRjX2RtdWJfc3J2ICpkY19kbXViX3Nydl9jcmVhdGUoc3RydWN0IGRj ICpkYywgc3RydWN0IGRtdWJfc3J2ICpkbXViKTsKdm9pZCBkY19kbXViX3Nydl9kZXN0cm95KHN0 cnVjdCBkY19kbXViX3NydiAqKmRtdWJfc3J2KTsKCnZvaWQgcmVnX3NlcXVlbmNlX3N0YXJ0X2dh dGhlcihjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsKdm9pZCByZWdfc2VxdWVuY2Vfc3Rh cnRfZXhlY3V0ZShjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsKdm9pZCByZWdfc2VxdWVu Y2Vfd2FpdF9kb25lKGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgpOwojIDE1OSAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzLmgiCnZvaWQg Z2VuZXJpY19yZWdfd2FpdChjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogdWludDMyX3Qg YWRkciwgdWludDMyX3QgbWFzaywgdWludDMyX3Qgc2hpZnQsIHVpbnQzMl90IGNvbmRpdGlvbl92 YWx1ZSwKIHVuc2lnbmVkIGludCBkZWxheV9iZXR3ZWVuX3BvbGxfdXMsIHVuc2lnbmVkIGludCB0 aW1lX291dF9udW1fdHJpZXMsCiBjb25zdCBjaGFyICpmdW5jX25hbWUsIGludCBsaW5lKTsKCnVu c2lnbmVkIGludCBzbnByaW50Zl9jb3VudChjaGFyICpwQnVmLCB1bnNpZ25lZCBpbnQgYnVmU2l6 ZSwgY2hhciAqZm10LCAuLi4pOwojIDIwOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzLmgiCmJvb2wgZG1fcHBfZ2V0X2Nsb2NrX2xldmVsc19i eV90eXBlKAogY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKIGVudW0gZG1fcHBfY2xvY2tf dHlwZSBjbGtfdHlwZSwKIHN0cnVjdCBkbV9wcF9jbG9ja19sZXZlbHMgKmNsa19sZXZlbF9pbmZv KTsKCmJvb2wgZG1fcHBfZ2V0X2Nsb2NrX2xldmVsc19ieV90eXBlX3dpdGhfbGF0ZW5jeSgKIGNv bnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiBlbnVtIGRtX3BwX2Nsb2NrX3R5cGUgY2xrX3R5 cGUsCiBzdHJ1Y3QgZG1fcHBfY2xvY2tfbGV2ZWxzX3dpdGhfbGF0ZW5jeSAqY2xrX2xldmVsX2lu Zm8pOwoKYm9vbCBkbV9wcF9nZXRfY2xvY2tfbGV2ZWxzX2J5X3R5cGVfd2l0aF92b2x0YWdlKAog Y29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKIGVudW0gZG1fcHBfY2xvY2tfdHlwZSBjbGtf dHlwZSwKIHN0cnVjdCBkbV9wcF9jbG9ja19sZXZlbHNfd2l0aF92b2x0YWdlICpjbGtfbGV2ZWxf aW5mbyk7Cgpib29sIGRtX3BwX25vdGlmeV93bV9jbG9ja19jaGFuZ2VzKAogY29uc3Qgc3RydWN0 IGRjX2NvbnRleHQgKmN0eCwKIHN0cnVjdCBkbV9wcF93bV9zZXRzX3dpdGhfY2xvY2tfcmFuZ2Vz ICp3bV93aXRoX2Nsb2NrX3Jhbmdlcyk7Cgp2b2lkIGRtX3BwX2dldF9mdW5jcyhzdHJ1Y3QgZGNf Y29udGV4dCAqY3R4LAogIHN0cnVjdCBwcF9zbXVfZnVuY3MgKmZ1bmNzKTsKIyAyNDEgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlcy5oIgpib29s IGRtX3BwX2FwcGx5X2Rpc3BsYXlfcmVxdWlyZW1lbnRzKAogY29uc3Qgc3RydWN0IGRjX2NvbnRl eHQgKmN0eCwKIGNvbnN0IHN0cnVjdCBkbV9wcF9kaXNwbGF5X2NvbmZpZ3VyYXRpb24gKnBwX2Rp c3BsYXlfY2ZnKTsKCmJvb2wgZG1fcHBfYXBwbHlfcG93ZXJfbGV2ZWxfY2hhbmdlX3JlcXVlc3Qo CiBjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogc3RydWN0IGRtX3BwX3Bvd2VyX2xldmVs X2NoYW5nZV9yZXF1ZXN0ICpsZXZlbF9jaGFuZ2VfcmVxKTsKCmJvb2wgZG1fcHBfYXBwbHlfY2xv Y2tfZm9yX3ZvbHRhZ2VfcmVxdWVzdCgKIGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiBz dHJ1Y3QgZG1fcHBfY2xvY2tfZm9yX3ZvbHRhZ2VfcmVxICpjbG9ja19mb3Jfdm9sdGFnZV9yZXEp OwoKYm9vbCBkbV9wcF9nZXRfc3RhdGljX2Nsb2NrcygKIGNvbnN0IHN0cnVjdCBkY19jb250ZXh0 ICpjdHgsCiBzdHJ1Y3QgZG1fcHBfc3RhdGljX2Nsb2NrX2luZm8gKnN0YXRpY19jbGtfaW5mbyk7 CgoKCnN0cnVjdCBwZXJzaXN0ZW50X2RhdGFfZmxhZyB7CiBib29sIHNhdmVfcGVyX2xpbms7CiBi b29sIHNhdmVfcGVyX2VkaWQ7Cn07CiMgMjkxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIKYm9vbCBkbV93cml0ZV9wZXJzaXN0ZW50X2Rh dGEoc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKICBjb25zdCBzdHJ1Y3QgZGNfc2luayAqc2luaywK ICBjb25zdCBjaGFyICptb2R1bGVfbmFtZSwKICBjb25zdCBjaGFyICprZXlfbmFtZSwKICB2b2lk ICpwYXJhbXMsCiAgdW5zaWduZWQgaW50IHNpemUsCiAgc3RydWN0IHBlcnNpc3RlbnRfZGF0YV9m bGFnICpmbGFnKTsKIyAzMjUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9kbV9zZXJ2aWNlcy5oIgpib29sIGRtX3JlYWRfcGVyc2lzdGVudF9kYXRhKHN0cnVjdCBk Y19jb250ZXh0ICpjdHgsCiAgY29uc3Qgc3RydWN0IGRjX3NpbmsgKnNpbmssCiAgY29uc3QgY2hh ciAqbW9kdWxlX25hbWUsCiAgY29uc3QgY2hhciAqa2V5X25hbWUsCiAgdm9pZCAqcGFyYW1zLAog IHVuc2lnbmVkIGludCBzaXplLAogIHN0cnVjdCBwZXJzaXN0ZW50X2RhdGFfZmxhZyAqZmxhZyk7 Cgpib29sIGRtX3F1ZXJ5X2V4dGVuZGVkX2JyaWdodG5lc3NfY2FwcwogKHN0cnVjdCBkY19jb250 ZXh0ICpjdHgsIGVudW0gZG1fYWNwaV9kaXNwbGF5X3R5cGUgZGlzcGxheSwKICAgc3RydWN0IGRt X2FjcGlfYXRpZl9iYWNrbGlnaHRfY2FwcyAqcENhcHMpOwoKYm9vbCBkbV9kbWN1X3NldF9waXBl KHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCBjb250cm9sbGVyX2lkKTsKIyAz NDcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNl cy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBsb25nIGxvbmcgZG1fZ2V0X3RpbWVzdGFtcChzdHJ1Y3QgZGNfY29udGV4 dCAqY3R4KQp7CiByZXR1cm4ga3RpbWVfZ2V0X3Jhd19ucygpOwp9Cgp1bnNpZ25lZCBsb25nIGxv bmcgZG1fZ2V0X2VsYXBzZV90aW1lX2luX25zKHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiAgdW5z aWduZWQgbG9uZyBsb25nIGN1cnJlbnRfdGltZV9zdGFtcCwKICB1bnNpZ25lZCBsb25nIGxvbmcg bGFzdF90aW1lX3N0YW1wKTsKIyAzNzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9kbV9zZXJ2aWNlcy5oIgp2b2lkIGRtX2R0bl9sb2dfYmVnaW4oc3RydWN0IGRj X2NvbnRleHQgKmN0eCwKIHN0cnVjdCBkY19sb2dfYnVmZmVyX2N0eCAqbG9nX2N0eCk7CnZvaWQg ZG1fZHRuX2xvZ19hcHBlbmRfdihzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogc3RydWN0IGRjX2xv Z19idWZmZXJfY3R4ICpsb2dfY3R4LAogY29uc3QgY2hhciAqbXNnLCAuLi4pOwp2b2lkIGRtX2R0 bl9sb2dfZW5kKHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiBzdHJ1Y3QgZGNfbG9nX2J1ZmZlcl9j dHggKmxvZ19jdHgpOwojIDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvaW5jbHVkZS9iaW9zX3BhcnNlcl90eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvc2lnbmFsX3R5cGVzLmgiIDEKIyAzMiAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvYmlvc19wYXJzZXJf dHlwZXMuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9p bmNsdWRlL2dycGhfb2JqZWN0X2N0cmxfZGVmcy5oIiAxCiMgMzMgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2Jpb3NfcGFyc2VyX3R5cGVzLmgiIDIKIyAx ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncGlvX3R5 cGVzLmgiIDEKIyAzNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2lu Y2x1ZGUvYmlvc19wYXJzZXJfdHlwZXMuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2xpbmtfc2VydmljZV90eXBlcy5oIiAxCiMgMzUgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2Jpb3NfcGFyc2Vy X3R5cGVzLmgiIDIKCgplbnVtIGFzX3NpZ25hbF90eXBlIHsKIEFTX1NJR05BTF9UWVBFX05PTkUg PSAwTCwKIEFTX1NJR05BTF9UWVBFX0RWSSwKIEFTX1NJR05BTF9UWVBFX0hETUksCiBBU19TSUdO QUxfVFlQRV9MVkRTLAogQVNfU0lHTkFMX1RZUEVfRElTUExBWV9QT1JULAogQVNfU0lHTkFMX1RZ UEVfR1BVX1BMTCwKIEFTX1NJR05BTF9UWVBFX1hHTUksCiBBU19TSUdOQUxfVFlQRV9VTktOT1dO Cn07CgplbnVtIGJwX3Jlc3VsdCB7CiBCUF9SRVNVTFRfT0sgPSAwLAogQlBfUkVTVUxUX0JBRElO UFVULAogQlBfUkVTVUxUX0JBREJJT1NUQUJMRSwKIEJQX1JFU1VMVF9VTlNVUFBPUlRFRCwKIEJQ X1JFU1VMVF9OT1JFQ09SRCwKIEJQX1JFU1VMVF9GQUlMVVJFCn07CgplbnVtIGJwX2VuY29kZXJf Y29udHJvbF9hY3Rpb24gewoKIEVOQ09ERVJfQ09OVFJPTF9ESVNBQkxFID0gMCwKIEVOQ09ERVJf Q09OVFJPTF9FTkFCTEUsCiBFTkNPREVSX0NPTlRST0xfU0VUVVAsCiBFTkNPREVSX0NPTlRST0xf SU5JVAp9OwoKZW51bSBicF90cmFuc21pdHRlcl9jb250cm9sX2FjdGlvbiB7CgogVFJBTlNNSVRU RVJfQ09OVFJPTF9ESVNBQkxFID0gMCwKIFRSQU5TTUlUVEVSX0NPTlRST0xfRU5BQkxFLAogVFJB TlNNSVRURVJfQ09OVFJPTF9CQUNLTElHSFRfT0ZGLAogVFJBTlNNSVRURVJfQ09OVFJPTF9CQUNL TElHSFRfT04sCiBUUkFOU01JVFRFUl9DT05UUk9MX0JBQ0tMSUdIVF9CUklHSFRORVNTLAogVFJB TlNNSVRURVJfQ09OVFJPTF9MQ0RfU0VURl9URVNUX1NUQVJULAogVFJBTlNNSVRURVJfQ09OVFJP TF9MQ0RfU0VMRl9URVNUX1NUT1AsCiBUUkFOU01JVFRFUl9DT05UUk9MX0lOSVQsCiBUUkFOU01J VFRFUl9DT05UUk9MX0RFQUNUSVZBVEUsCiBUUkFOU01JVFRFUl9DT05UUk9MX0FDVElBVkFURSwK IFRSQU5TTUlUVEVSX0NPTlRST0xfU0VUVVAsCiBUUkFOU01JVFRFUl9DT05UUk9MX1NFVF9WT0xU QUdFX0FORF9QUkVFTVBBU0lTLAoKCgogVFJBTlNNSVRURVJfQ09OVFJPTF9QT1dFUl9PTiwKCgoK IFRSQU5TTUlUVEVSX0NPTlRST0xfUE9XRVJfT0ZGCn07CgplbnVtIGJwX2V4dGVybmFsX2VuY29k ZXJfY29udHJvbF9hY3Rpb24gewogRVhURVJOQUxfRU5DT0RFUl9DT05UUk9MX0RJU0FCTEUgPSAw LAogRVhURVJOQUxfRU5DT0RFUl9DT05UUk9MX0VOQUJMRSA9IDEsCiBFWFRFUk5BTF9FTkNPREVS X0NPTlRST0xfSU5JVCA9IDB4NywKIEVYVEVSTkFMX0VOQ09ERVJfQ09OVFJPTF9TRVRVUCA9IDB4 ZiwKIEVYVEVSTkFMX0VOQ09ERVJfQ09OVFJPTF9VTkJMQU5LID0gMHgxMCwKIEVYVEVSTkFMX0VO Q09ERVJfQ09OVFJPTF9CTEFOSyA9IDB4MTEsCn07CgplbnVtIGJwX3BpcGVfY29udHJvbF9hY3Rp b24gewogQVNJQ19QSVBFX0RJU0FCTEUgPSAwLAogQVNJQ19QSVBFX0VOQUJMRSwKIEFTSUNfUElQ RV9JTklUCn07CgpzdHJ1Y3QgYnBfZW5jb2Rlcl9jb250cm9sIHsKIGVudW0gYnBfZW5jb2Rlcl9j b250cm9sX2FjdGlvbiBhY3Rpb247CiBlbnVtIGVuZ2luZV9pZCBlbmdpbmVfaWQ7CiBlbnVtIHRy YW5zbWl0dGVyIHRyYW5zbWl0dGVyOwogZW51bSBzaWduYWxfdHlwZSBzaWduYWw7CiBlbnVtIGRj X2xhbmVfY291bnQgbGFuZXNfbnVtYmVyOwogZW51bSBkY19jb2xvcl9kZXB0aCBjb2xvcl9kZXB0 aDsKIGJvb2wgZW5hYmxlX2RwX2F1ZGlvOwogdWludDMyX3QgcGl4ZWxfY2xvY2s7Cn07CgpzdHJ1 Y3QgYnBfZXh0ZXJuYWxfZW5jb2Rlcl9jb250cm9sIHsKIGVudW0gYnBfZXh0ZXJuYWxfZW5jb2Rl cl9jb250cm9sX2FjdGlvbiBhY3Rpb247CiBlbnVtIGVuZ2luZV9pZCBlbmdpbmVfaWQ7CiBlbnVt IGRjX2xpbmtfcmF0ZSBsaW5rX3JhdGU7CiBlbnVtIGRjX2xhbmVfY291bnQgbGFuZXNfbnVtYmVy OwogZW51bSBzaWduYWxfdHlwZSBzaWduYWw7CiBlbnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2Rl cHRoOwogYm9vbCBjb2hlcmVudDsKIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgZW5jb2Rlcl9p ZDsKIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgY29ubmVjdG9yX29ial9pZDsKIHVpbnQzMl90 IHBpeGVsX2Nsb2NrOwp9OwoKc3RydWN0IGJwX2NydGNfc291cmNlX3NlbGVjdCB7CiBlbnVtIGVu Z2luZV9pZCBlbmdpbmVfaWQ7CiBlbnVtIGNvbnRyb2xsZXJfaWQgY29udHJvbGxlcl9pZDsKCiBl bnVtIHNpZ25hbF90eXBlIHNpZ25hbDsKCiBlbnVtIHNpZ25hbF90eXBlIHNpbmtfc2lnbmFsOwog ZW51bSBkaXNwbGF5X291dHB1dF9iaXRfZGVwdGggZGlzcGxheV9vdXRwdXRfYml0X2RlcHRoOwog Ym9vbCBlbmFibGVfZHBfYXVkaW87Cn07CgpzdHJ1Y3QgYnBfdHJhbnNtaXR0ZXJfY29udHJvbCB7 CiBlbnVtIGJwX3RyYW5zbWl0dGVyX2NvbnRyb2xfYWN0aW9uIGFjdGlvbjsKIGVudW0gZW5naW5l X2lkIGVuZ2luZV9pZDsKIGVudW0gdHJhbnNtaXR0ZXIgdHJhbnNtaXR0ZXI7CiBlbnVtIGRjX2xh bmVfY291bnQgbGFuZXNfbnVtYmVyOwogZW51bSBjbG9ja19zb3VyY2VfaWQgcGxsX2lkOwogZW51 bSBzaWduYWxfdHlwZSBzaWduYWw7CiBlbnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2RlcHRoOwog ZW51bSBocGRfc291cmNlX2lkIGhwZF9zZWw7CiBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGNv bm5lY3Rvcl9vYmpfaWQ7CgoKCiB1aW50MzJfdCBwaXhlbF9jbG9jazsKIHVpbnQzMl90IGxhbmVf c2VsZWN0OwogdWludDMyX3QgbGFuZV9zZXR0aW5nczsKIGJvb2wgY29oZXJlbnQ7CiBib29sIG11 bHRpX3BhdGg7CiBib29sIHNpbmdsZV9wbGxfbW9kZTsKfTsKCnN0cnVjdCBicF9od19jcnRjX3Rp bWluZ19wYXJhbWV0ZXJzIHsKIGVudW0gY29udHJvbGxlcl9pZCBjb250cm9sbGVyX2lkOwoKIHVp bnQzMl90IGhfdG90YWw7CiB1aW50MzJfdCBoX2FkZHJlc3NhYmxlOwogdWludDMyX3QgaF9vdmVy c2Nhbl9sZWZ0OwogdWludDMyX3QgaF9vdmVyc2Nhbl9yaWdodDsKIHVpbnQzMl90IGhfc3luY19z dGFydDsKIHVpbnQzMl90IGhfc3luY193aWR0aDsKCgogdWludDMyX3Qgdl90b3RhbDsKIHVpbnQz Ml90IHZfYWRkcmVzc2FibGU7CiB1aW50MzJfdCB2X292ZXJzY2FuX3RvcDsKIHVpbnQzMl90IHZf b3ZlcnNjYW5fYm90dG9tOwogdWludDMyX3Qgdl9zeW5jX3N0YXJ0OwogdWludDMyX3Qgdl9zeW5j X3dpZHRoOwoKIHN0cnVjdCB0aW1pbmdfZmxhZ3MgewogIHVpbnQzMl90IElOVEVSTEFDRToxOwog IHVpbnQzMl90IFBJWEVMX1JFUEVUSVRJT046NDsKICB1aW50MzJfdCBIU1lOQ19QT1NJVElWRV9Q T0xBUklUWToxOwogIHVpbnQzMl90IFZTWU5DX1BPU0lUSVZFX1BPTEFSSVRZOjE7CiAgdWludDMy X3QgSE9SWl9DT1VOVF9CWV9UV086MTsKIH0gZmxhZ3M7Cn07CgpzdHJ1Y3QgYnBfYWRqdXN0X3Bp eGVsX2Nsb2NrX3BhcmFtZXRlcnMgewoKIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsX3R5cGU7Cgog c3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBlbmNvZGVyX29iamVjdF9pZDsKCgoKIHVpbnQzMl90 IHBpeGVsX2Nsb2NrOwoKIHVpbnQzMl90IGFkanVzdGVkX3BpeGVsX2Nsb2NrOwoKCiB1aW50MzJf dCByZWZlcmVuY2VfZGl2aWRlcjsKCgogdWludDMyX3QgcGl4ZWxfY2xvY2tfcG9zdF9kaXZpZGVy OwoKIGJvb2wgc3NfZW5hYmxlOwp9OwoKc3RydWN0IGJwX3BpeGVsX2Nsb2NrX3BhcmFtZXRlcnMg ewogZW51bSBjb250cm9sbGVyX2lkIGNvbnRyb2xsZXJfaWQ7CiBlbnVtIGNsb2NrX3NvdXJjZV9p ZCBwbGxfaWQ7CgogZW51bSBzaWduYWxfdHlwZSBzaWduYWxfdHlwZTsKCgogdWludDMyX3QgdGFy Z2V0X3BpeGVsX2Nsb2NrXzEwMGh6OwoKIHVpbnQzMl90IHJlZmVyZW5jZV9kaXZpZGVyOwoKIHVp bnQzMl90IGZlZWRiYWNrX2RpdmlkZXI7CgogdWludDMyX3QgZnJhY3Rpb25hbF9mZWVkYmFja19k aXZpZGVyOwoKIHVpbnQzMl90IHBpeGVsX2Nsb2NrX3Bvc3RfZGl2aWRlcjsKIHN0cnVjdCBncmFw aGljc19vYmplY3RfaWQgZW5jb2Rlcl9vYmplY3RfaWQ7CgoKIHVpbnQzMl90IGRmc19ieXBhc3Nf ZGlzcGxheV9jbG9jazsKCiBlbnVtIHRyYW5zbWl0dGVyX2NvbG9yX2RlcHRoIGNvbG9yX2RlcHRo OwoKIHN0cnVjdCBwcm9ncmFtX3BpeGVsX2Nsb2NrX2ZsYWdzIHsKICB1aW50MzJfdCBGT1JDRV9Q Uk9HUkFNTUlOR19PRl9QTEw6MTsKCgogIHVpbnQzMl90IFVTRV9FX0NMT0NLX0FTX1NPVVJDRV9G T1JfRF9DTE9DSzoxOwoKICB1aW50MzJfdCBTRVRfRVhURVJOQUxfUkVGX0RJVl9TUkM6MTsKCiAg dWludDMyX3QgU0VUX0RJU1BDTEtfREZTX0JZUEFTUzoxOwoKICB1aW50MzJfdCBQUk9HUkFNX1BI WV9QTExfT05MWToxOwoKICB1aW50MzJfdCBTVVBQT1JUX1lVVl80MjA6MTsKCiAgdWludDMyX3Qg U0VUX1hUQUxJTl9SRUZfU1JDOjE7CgogIHVpbnQzMl90IFNFVF9HRU5MT0NLX1JFRl9ESVZfU1JD OjE7CiB9IGZsYWdzOwp9OwoKZW51bSBicF9kY2VfY2xvY2tfdHlwZSB7CiBEQ0VDTE9DS19UWVBF X0RJU1BMQVlfQ0xPQ0sgPSAwLAogRENFQ0xPQ0tfVFlQRV9EUFJFRkNMSyA9IDEKfTsKCgpzdHJ1 Y3QgYnBfc2V0X2RjZV9jbG9ja19wYXJhbWV0ZXJzIHsKIGVudW0gY2xvY2tfc291cmNlX2lkIHBs bF9pZDsKCiB1aW50MzJfdCB0YXJnZXRfY2xvY2tfZnJlcXVlbmN5OwoKIGVudW0gYnBfZGNlX2Ns b2NrX3R5cGUgY2xvY2tfdHlwZTsKCiBzdHJ1Y3Qgc2V0X2RjZV9jbG9ja19mbGFncyB7CiAgdWlu dDMyX3QgVVNFX0dFTkVSSUNBX0FTX1NPVVJDRV9GT1JfRFBSRUZDTEs6MTsKCiAgdWludDMyX3Qg VVNFX1hUQUxJTl9BU19TT1VSQ0VfRk9SX0RQUkVGQ0xLOjE7CgogIHVpbnQzMl90IFVTRV9QQ0lF X0FTX1NPVVJDRV9GT1JfRFBSRUZDTEs6MTsKCiAgdWludDMyX3QgVVNFX0dFTkxPQ0tfQVNfU09V UkNFX0ZPUl9EUFJFRkNMSzoxOwogfSBmbGFnczsKfTsKCnN0cnVjdCBzcHJlYWRfc3BlY3RydW1f ZmxhZ3MgewoKIHVpbnQzMl90IENFTlRFUl9TUFJFQUQ6MTsKCiB1aW50MzJfdCBFWFRFUk5BTF9T UzoxOwoKIHVpbnQzMl90IERTX1RZUEU6MTsKfTsKCnN0cnVjdCBicF9zcHJlYWRfc3BlY3RydW1f cGFyYW1ldGVycyB7CiBlbnVtIGNsb2NrX3NvdXJjZV9pZCBwbGxfaWQ7CiB1aW50MzJfdCBwZXJj ZW50YWdlOwogdWludDMyX3QgZHNfZnJhY19hbW91bnQ7CgogdW5pb24gewogIHN0cnVjdCB7CiAg IHVpbnQzMl90IHN0ZXA7CiAgIHVpbnQzMl90IGRlbGF5OwogICB1aW50MzJfdCByYW5nZTsKICB9 IHZlcjE7CiAgc3RydWN0IHsKICAgdWludDMyX3QgZmVlZGJhY2tfYW1vdW50OwogICB1aW50MzJf dCBuZnJhY19hbW91bnQ7CiAgIHVpbnQzMl90IGRzX2ZyYWNfc2l6ZTsKICB9IGRzOwogfTsKCiBz dHJ1Y3Qgc3ByZWFkX3NwZWN0cnVtX2ZsYWdzIGZsYWdzOwp9OwoKc3RydWN0IGJwX2VuY29kZXJf Y2FwX2luZm8gewogdWludDMyX3QgRFBfSEJSMl9DQVA6MTsKIHVpbnQzMl90IERQX0hCUjJfRU46 MTsKIHVpbnQzMl90IERQX0hCUjNfRU46MTsKIHVpbnQzMl90IEhETUlfNkdCX0VOOjE7CiB1aW50 MzJfdCBEUF9JU19VU0JfQzoxOwogdWludDMyX3QgUkVTRVJWRUQ6Mjc7Cn07CiMgMzIgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY2xvY2tfc291cmNlLmgi IDIKCnN0cnVjdCBjbG9ja19zb3VyY2U7CgpzdHJ1Y3Qgc3ByZWFkX3NwZWN0cnVtX2RhdGEgewog dWludDMyX3QgcGVyY2VudGFnZTsKIHVpbnQzMl90IHBlcmNlbnRhZ2VfZGl2aWRlcjsKIHVpbnQz Ml90IGZyZXFfcmFuZ2Vfa2h6OwogdWludDMyX3QgbW9kdWxhdGlvbl9mcmVxX2h6OwoKIHN0cnVj dCBzcHJlYWRfc3BlY3RydW1fZmxhZ3MgZmxhZ3M7Cn07CgpzdHJ1Y3QgZGVsdGFfc2lnbWFfZGF0 YSB7CiB1aW50MzJfdCBmZWVkYmFja19hbW91bnQ7CiB1aW50MzJfdCBuZnJhY19hbW91bnQ7CiB1 aW50MzJfdCBkc19mcmFjX3NpemU7CiB1aW50MzJfdCBkc19mcmFjX2Ftb3VudDsKfTsKCgoKCgoK c3RydWN0IHBpeGVsX2Nsa19mbGFncyB7CiB1aW50MzJfdCBFTkFCTEVfU1M6MTsKIHVpbnQzMl90 IERJU1BMQVlfQkxBTktFRDoxOwogdWludDMyX3QgUFJPR1JBTV9QSVhFTF9DTE9DSzoxOwogdWlu dDMyX3QgUFJPR1JBTV9JRF9DTE9DSzoxOwogdWludDMyX3QgU1VQUE9SVF9ZQ0JDUjQyMDoxOwp9 OwoKCgoKCnN0cnVjdCBjc2RwX3JlZl9jbGtfZHNfcGFyYW1zIHsKIGJvb2wgaHdfZHNvX25fZHBf cmVmX2NsazsKCiB1aW50MzJfdCBhdmdfZHBfcmVmX2Nsa19raHo7CgogdWludDMyX3Qgc3NfcGVy Y2VudGFnZV9vbl9kcF9yZWZfY2xrOwoKCiB1aW50MzJfdCBzc19wZXJjZW50YWdlX2RpdmlkZXI7 Cgp9OwoKc3RydWN0IHBpeGVsX2Nsa19wYXJhbXMgewogdWludDMyX3QgcmVxdWVzdGVkX3BpeF9j bGtfMTAwaHo7CgoKIHVpbnQzMl90IHJlcXVlc3RlZF9zeW1fY2xrOwoKIHVpbnQzMl90IGRwX3Jl Zl9jbGs7Cgogc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBlbmNvZGVyX29iamVjdF9pZDsKCiBl bnVtIHNpZ25hbF90eXBlIHNpZ25hbF90eXBlOwoKIGVudW0gY29udHJvbGxlcl9pZCBjb250cm9s bGVyX2lkOwoKIGVudW0gZGNfY29sb3JfZGVwdGggY29sb3JfZGVwdGg7CiBzdHJ1Y3QgY3NkcF9y ZWZfY2xrX2RzX3BhcmFtcyBkZV9zcHJlYWRfcGFyYW1zOwoKIGVudW0gZGNfcGl4ZWxfZW5jb2Rp bmcgcGl4ZWxfZW5jb2Rpbmc7CiBzdHJ1Y3QgcGl4ZWxfY2xrX2ZsYWdzIGZsYWdzOwp9OwoKCgoK CgpzdHJ1Y3QgcGxsX3NldHRpbmdzIHsKIHVpbnQzMl90IGFjdHVhbF9waXhfY2xrXzEwMGh6Owog dWludDMyX3QgYWRqdXN0ZWRfcGl4X2Nsa18xMDBoejsKIHVpbnQzMl90IGNhbGN1bGF0ZWRfcGl4 X2Nsa18xMDBoejsKIHVpbnQzMl90IHZjb19mcmVxOwogdWludDMyX3QgcmVmZXJlbmNlX2ZyZXE7 CiB1aW50MzJfdCByZWZlcmVuY2VfZGl2aWRlcjsKIHVpbnQzMl90IGZlZWRiYWNrX2RpdmlkZXI7 CiB1aW50MzJfdCBmcmFjdF9mZWVkYmFja19kaXZpZGVyOwogdWludDMyX3QgcGl4X2Nsa19wb3N0 X2RpdmlkZXI7CiB1aW50MzJfdCBzc19wZXJjZW50YWdlOwogYm9vbCB1c2VfZXh0ZXJuYWxfY2xr Owp9OwoKc3RydWN0IGNhbGNfcGxsX2Nsb2NrX3NvdXJjZV9pbml0X2RhdGEgewogc3RydWN0IGRj X2Jpb3MgKmJwOwogdWludDMyX3QgbWluX3BpeF9jbGtfcGxsX3Bvc3RfZGl2aWRlcjsKIHVpbnQz Ml90IG1heF9waXhfY2xrX3BsbF9wb3N0X2RpdmlkZXI7CiB1aW50MzJfdCBtaW5fcGxsX3JlZl9k aXZpZGVyOwogdWludDMyX3QgbWF4X3BsbF9yZWZfZGl2aWRlcjsKIHVpbnQzMl90IG1pbl9vdmVy cmlkZV9pbnB1dF9weGxfY2xrX3BsbF9mcmVxX2toejsKCgogdWludDMyX3QgbWF4X292ZXJyaWRl X2lucHV0X3B4bF9jbGtfcGxsX2ZyZXFfa2h6OwoKCiB1aW50MzJfdCBudW1fZnJhY3RfZmJfZGl2 aWRlcl9kZWNpbWFsX3BvaW50OwoKCiB1aW50MzJfdCBudW1fZnJhY3RfZmJfZGl2aWRlcl9kZWNp bWFsX3BvaW50X3ByZWNpc2lvbjsKCiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoKfTsKCnN0cnVj dCBjYWxjX3BsbF9jbG9ja19zb3VyY2UgewogdWludDMyX3QgcmVmX2ZyZXFfa2h6OwogdWludDMy X3QgbWluX3BpeF9jbG9ja19wbGxfcG9zdF9kaXZpZGVyOwogdWludDMyX3QgbWF4X3BpeF9jbG9j a19wbGxfcG9zdF9kaXZpZGVyOwogdWludDMyX3QgbWluX3BsbF9yZWZfZGl2aWRlcjsKIHVpbnQz Ml90IG1heF9wbGxfcmVmX2RpdmlkZXI7CgogdWludDMyX3QgbWF4X3Zjb19raHo7CiB1aW50MzJf dCBtaW5fdmNvX2toejsKIHVpbnQzMl90IG1pbl9wbGxfaW5wdXRfZnJlcV9raHo7CiB1aW50MzJf dCBtYXhfcGxsX2lucHV0X2ZyZXFfa2h6OwoKIHVpbnQzMl90IGZyYWN0X2ZiX2RpdmlkZXJfZGVj aW1hbF9wb2ludHNfbnVtOwogdWludDMyX3QgZnJhY3RfZmJfZGl2aWRlcl9mYWN0b3I7CiB1aW50 MzJfdCBmcmFjdF9mYl9kaXZpZGVyX3ByZWNpc2lvbjsKIHVpbnQzMl90IGZyYWN0X2ZiX2Rpdmlk ZXJfcHJlY2lzaW9uX2ZhY3RvcjsKIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7Cn07CgpzdHJ1Y3Qg Y2xvY2tfc291cmNlX2Z1bmNzIHsKIGJvb2wgKCpjc19wb3dlcl9kb3duKSgKICAgc3RydWN0IGNs b2NrX3NvdXJjZSAqKTsKIGJvb2wgKCpwcm9ncmFtX3BpeF9jbGspKHN0cnVjdCBjbG9ja19zb3Vy Y2UgKiwKICAgc3RydWN0IHBpeGVsX2Nsa19wYXJhbXMgKiwgc3RydWN0IHBsbF9zZXR0aW5ncyAq KTsKIHVpbnQzMl90ICgqZ2V0X3BpeF9jbGtfZGl2aWRlcnMpKAogICBzdHJ1Y3QgY2xvY2tfc291 cmNlICosCiAgIHN0cnVjdCBwaXhlbF9jbGtfcGFyYW1zICosCiAgIHN0cnVjdCBwbGxfc2V0dGlu Z3MgKik7CiBib29sICgqZ2V0X3BpeGVsX2Nsa19mcmVxdWVuY3lfMTAwaHopKAogICBjb25zdCBz dHJ1Y3QgY2xvY2tfc291cmNlICpjbG9ja19zb3VyY2UsCiAgIHVuc2lnbmVkIGludCBpbnN0LAog ICB1bnNpZ25lZCBpbnQgKnBpeGVsX2Nsa19raHopOwp9OwoKc3RydWN0IGNsb2NrX3NvdXJjZSB7 CiBjb25zdCBzdHJ1Y3QgY2xvY2tfc291cmNlX2Z1bmNzICpmdW5jczsKIHN0cnVjdCBkY19jb250 ZXh0ICpjdHg7CiBlbnVtIGNsb2NrX3NvdXJjZV9pZCBpZDsKIGJvb2wgZHBfY2xrX3NyYzsKfTsK IyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9od19z ZXF1ZW5jZXIuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9pbmMvaHcvdGltaW5nX2dlbmVyYXRvci5oIiAxCiMgMzEgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvdGltaW5nX2dlbmVyYXRvci5oIgpzdHJ1 Y3QgZGNfYmlvczsKCgpzdHJ1Y3QgY3J0Y19wb3NpdGlvbiB7CiBpbnQzMl90IHZlcnRpY2FsX2Nv dW50OwogaW50MzJfdCBob3Jpem9udGFsX2NvdW50OwogaW50MzJfdCBub21pbmFsX3Zjb3VudDsK fTsKCnN0cnVjdCBkY3BfZ3NsX3BhcmFtcyB7CiBpbnQgZ3NsX2dyb3VwOwogaW50IGdzbF9tYXN0 ZXI7Cn07CgpzdHJ1Y3QgZ3NsX3BhcmFtcyB7CiBpbnQgZ3NsMF9lbjsKIGludCBnc2wxX2VuOwog aW50IGdzbDJfZW47CiBpbnQgZ3NsX21hc3Rlcl9lbjsKIGludCBnc2xfbWFzdGVyX21vZGU7CiBp bnQgbWFzdGVyX3VwZGF0ZV9sb2NrX2dzbF9lbjsKIGludCBnc2xfd2luZG93X3N0YXJ0X3g7CiBp bnQgZ3NsX3dpbmRvd19lbmRfeDsKIGludCBnc2xfd2luZG93X3N0YXJ0X3k7CiBpbnQgZ3NsX3dp bmRvd19lbmRfeTsKfTsKCgpzdHJ1Y3QgZHJyX3BhcmFtcyB7CiB1aW50MzJfdCB2ZXJ0aWNhbF90 b3RhbF9taW47CiB1aW50MzJfdCB2ZXJ0aWNhbF90b3RhbF9tYXg7CiB1aW50MzJfdCB2ZXJ0aWNh bF90b3RhbF9taWQ7CiB1aW50MzJfdCB2ZXJ0aWNhbF90b3RhbF9taWRfZnJhbWVfbnVtOwogYm9v bCBpbW1lZGlhdGVfZmxpcDsKfTsKCgoKCmVudW0gY3J0Y19zdGF0ZSB7CiBDUlRDX1NUQVRFX1ZC TEFOSyA9IDAsCiBDUlRDX1NUQVRFX1ZBQ1RJVkUKfTsKCnN0cnVjdCB2dXBkYXRlX2tlZXBvdXRf cGFyYW1zIHsKIGludCBzdGFydF9vZmZzZXQ7CiBpbnQgZW5kX29mZnNldDsKIGludCBlbmFibGU7 Cn07CgpzdHJ1Y3QgY3J0Y19zdGVyZW9fZmxhZ3MgewogdWludDhfdCBQUk9HUkFNX1NURVJFTyA6 IDE7CiB1aW50OF90IFBST0dSQU1fUE9MQVJJVFkgOiAxOwogdWludDhfdCBSSUdIVF9FWUVfUE9M QVJJVFkgOiAxOwogdWludDhfdCBGUkFNRV9QQUNLRUQgOiAxOwogdWludDhfdCBESVNBQkxFX1NU RVJFT19EUF9TWU5DIDogMTsKfTsKCmVudW0gY3JjX3NlbGVjdGlvbiB7CgogVU5JT05fV0lORE9X X0FfQiA9IDAsCiBVTklPTl9XSU5ET1dfQV9OT1RfQiwKIFVOSU9OX1dJTkRPV19OT1RfQV9CLAog VU5JT05fV0lORE9XX05PVF9BX05PVF9CLAogSU5URVJTRUNUX1dJTkRPV19BX0IsCiBJTlRFUlNF Q1RfV0lORE9XX0FfTk9UX0IsCiBJTlRFUlNFQ1RfV0lORE9XX05PVF9BX0IsCiBJTlRFUlNFQ1Rf V0lORE9XX05PVF9BX05PVF9CLAp9OwoKZW51bSBoX3RpbWluZ19kaXZfbW9kZSB7CiBIX1RJTUlO R19OT19ESVYsCiBIX1RJTUlOR19ESVZfQlkyLAp9OwoKc3RydWN0IGNyY19wYXJhbXMgewoKIHVp bnQxNl90IHdpbmRvd2FfeF9zdGFydDsKIHVpbnQxNl90IHdpbmRvd2FfeF9lbmQ7CiB1aW50MTZf dCB3aW5kb3dhX3lfc3RhcnQ7CiB1aW50MTZfdCB3aW5kb3dhX3lfZW5kOwoKIHVpbnQxNl90IHdp bmRvd2JfeF9zdGFydDsKIHVpbnQxNl90IHdpbmRvd2JfeF9lbmQ7CiB1aW50MTZfdCB3aW5kb3di X3lfc3RhcnQ7CiB1aW50MTZfdCB3aW5kb3diX3lfZW5kOwoKIGVudW0gY3JjX3NlbGVjdGlvbiBz ZWxlY3Rpb247CgogYm9vbCBjb250aW51b3VzX21vZGU7CiBib29sIGVuYWJsZTsKfTsKCnN0cnVj dCB0aW1pbmdfZ2VuZXJhdG9yIHsKIGNvbnN0IHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yX2Z1bmNz ICpmdW5jczsKIHN0cnVjdCBkY19iaW9zICpicDsKIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7CiBp bnQgaW5zdDsKfTsKCnN0cnVjdCBkY19jcnRjX3RpbWluZzsKCnN0cnVjdCBkcnJfcGFyYW1zOwoK CnN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yX2Z1bmNzIHsKIGJvb2wgKCp2YWxpZGF0ZV90aW1pbmcp KHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKICAgICAgIGNvbnN0IHN0cnVjdCBkY19jcnRj X3RpbWluZyAqdGltaW5nKTsKIHZvaWQgKCpwcm9ncmFtX3RpbWluZykoc3RydWN0IHRpbWluZ19n ZW5lcmF0b3IgKnRnLAogICAgICAgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICp0aW1pbmcs CiAgICAgICBpbnQgdnJlYWR5X29mZnNldCwKICAgICAgIGludCB2c3RhcnR1cF9zdGFydCwKICAg ICAgIGludCB2dXBkYXRlX29mZnNldCwKICAgICAgIGludCB2dXBkYXRlX3dpZHRoLAogICAgICAg Y29uc3QgZW51bSBzaWduYWxfdHlwZSBzaWduYWwsCiAgICAgICBib29sIHVzZV92YmlvcwogKTsK IHZvaWQgKCpzZXR1cF92ZXJ0aWNhbF9pbnRlcnJ1cHQwKSgKICAgc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKm9wdGMsCiAgIHVpbnQzMl90IHN0YXJ0X2xpbmUsCiAgIHVpbnQzMl90IGVuZF9saW5l KTsKIHZvaWQgKCpzZXR1cF92ZXJ0aWNhbF9pbnRlcnJ1cHQxKSgKICAgc3RydWN0IHRpbWluZ19n ZW5lcmF0b3IgKm9wdGMsCiAgIHVpbnQzMl90IHN0YXJ0X2xpbmUpOwogdm9pZCAoKnNldHVwX3Zl cnRpY2FsX2ludGVycnVwdDIpKAogICBzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqb3B0YywKICAg dWludDMyX3Qgc3RhcnRfbGluZSk7CgogYm9vbCAoKmVuYWJsZV9jcnRjKShzdHJ1Y3QgdGltaW5n X2dlbmVyYXRvciAqdGcpOwogYm9vbCAoKmRpc2FibGVfY3J0Yykoc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKnRnKTsKIGJvb2wgKCppc19jb3VudGVyX21vdmluZykoc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKnRnKTsKIHZvaWQgKCpnZXRfcG9zaXRpb24pKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9y ICp0ZywKICAgIHN0cnVjdCBjcnRjX3Bvc2l0aW9uICpwb3NpdGlvbik7CgogdWludDMyX3QgKCpn ZXRfZnJhbWVfY291bnQpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0Zyk7CiB2b2lkICgqZ2V0 X3NjYW5vdXRwb3MpKAogIHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKICB1aW50MzJfdCAq dl9ibGFua19zdGFydCwKICB1aW50MzJfdCAqdl9ibGFua19lbmQsCiAgdWludDMyX3QgKmhfcG9z aXRpb24sCiAgdWludDMyX3QgKnZfcG9zaXRpb24pOwogYm9vbCAoKmdldF9vdGdfYWN0aXZlX3Np emUpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICpvcHRjLAogICB1aW50MzJfdCAqb3RnX2FjdGl2 ZV93aWR0aCwKICAgdWludDMyX3QgKm90Z19hY3RpdmVfaGVpZ2h0KTsKIGJvb2wgKCppc19tYXRj aGluZ190aW1pbmcpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKICAgY29uc3Qgc3RydWN0 IGRjX2NydGNfdGltaW5nICpvdGdfdGltaW5nKTsKIHZvaWQgKCpzZXRfZWFybHlfY29udHJvbCko c3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLAogICAgICAgICAgdWludDMyX3QgZWFybHlfY250 bCk7CiB2b2lkICgqd2FpdF9mb3Jfc3RhdGUpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywK ICAgICAgIGVudW0gY3J0Y19zdGF0ZSBzdGF0ZSk7CiB2b2lkICgqc2V0X2JsYW5rKShzdHJ1Y3Qg dGltaW5nX2dlbmVyYXRvciAqdGcsCiAgICAgYm9vbCBlbmFibGVfYmxhbmtpbmcpOwogYm9vbCAo KmlzX2JsYW5rZWQpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0Zyk7CiB2b2lkICgqc2V0X292 ZXJzY2FuX2JsYW5rX2NvbG9yKSAoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLCBjb25zdCBz dHJ1Y3QgdGdfY29sb3IgKmNvbG9yKTsKIHZvaWQgKCpzZXRfYmxhbmtfY29sb3IpKHN0cnVjdCB0 aW1pbmdfZ2VuZXJhdG9yICp0ZywgY29uc3Qgc3RydWN0IHRnX2NvbG9yICpjb2xvcik7CiB2b2lk ICgqc2V0X2NvbG9ycykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLAogICAgICBjb25zdCBz dHJ1Y3QgdGdfY29sb3IgKmJsYW5rX2NvbG9yLAogICAgICBjb25zdCBzdHJ1Y3QgdGdfY29sb3Ig Km92ZXJzY2FuX2NvbG9yKTsKCiB2b2lkICgqZGlzYWJsZV92Z2EpKHN0cnVjdCB0aW1pbmdfZ2Vu ZXJhdG9yICp0Zyk7CiBib29sICgqZGlkX3RyaWdnZXJlZF9yZXNldF9vY2N1cikoc3RydWN0IHRp bWluZ19nZW5lcmF0b3IgKnRnKTsKIHZvaWQgKCpzZXR1cF9nbG9iYWxfc3dhcF9sb2NrKShzdHJ1 Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcsCiAgICAgICBjb25zdCBzdHJ1Y3QgZGNwX2dzbF9wYXJh bXMgKmdzbF9wYXJhbXMpOwogdm9pZCAoKnVubG9jaykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3Ig KnRnKTsKIHZvaWQgKCpsb2NrKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcpOwogdm9pZCAo KmxvY2tfZG91YmxlYnVmZmVyX2Rpc2FibGUpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0Zyk7 CiB2b2lkICgqbG9ja19kb3VibGVidWZmZXJfZW5hYmxlKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRv ciAqdGcpOwogdm9pZCgqdHJpcGxlYnVmZmVyX3VubG9jaykoc3RydWN0IHRpbWluZ19nZW5lcmF0 b3IgKnRnKTsKIHZvaWQoKnRyaXBsZWJ1ZmZlcl9sb2NrKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRv ciAqdGcpOwogdm9pZCAoKmVuYWJsZV9yZXNldF90cmlnZ2VyKShzdHJ1Y3QgdGltaW5nX2dlbmVy YXRvciAqdGcsCiAgICAgICAgIGludCBzb3VyY2VfdGdfaW5zdCk7CiB2b2lkICgqZW5hYmxlX2Ny dGNfcmVzZXQpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKICAgICAgaW50IHNvdXJjZV90 Z19pbnN0LAogICAgICBzdHJ1Y3QgY3J0Y190cmlnZ2VyX2luZm8gKmNydGNfdHApOwogdm9pZCAo KmRpc2FibGVfcmVzZXRfdHJpZ2dlcikoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKIHZv aWQgKCp0ZWFyX2Rvd25fZ2xvYmFsX3N3YXBfbG9jaykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3Ig KnRnKTsKIHZvaWQgKCplbmFibGVfYWR2YW5jZWRfcmVxdWVzdCkoc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKnRnLAogICAgIGJvb2wgZW5hYmxlLCBjb25zdCBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcg KnRpbWluZyk7CiB2b2lkICgqc2V0X2Rycikoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLCBj b25zdCBzdHJ1Y3QgZHJyX3BhcmFtcyAqcGFyYW1zKTsKIHZvaWQgKCpzZXRfc3RhdGljX3NjcmVl bl9jb250cm9sKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcsCiAgICAgIHVpbnQzMl90IGV2 ZW50X3RyaWdnZXJzLAogICAgICB1aW50MzJfdCBudW1fZnJhbWVzKTsKIHZvaWQgKCpzZXRfdGVz dF9wYXR0ZXJuKSgKICBzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcsCiAgZW51bSBjb250cm9s bGVyX2RwX3Rlc3RfcGF0dGVybiB0ZXN0X3BhdHRlcm4sCiAgZW51bSBkY19jb2xvcl9kZXB0aCBj b2xvcl9kZXB0aCk7CgogYm9vbCAoKmFybV92ZXJ0X2ludHIpKHN0cnVjdCB0aW1pbmdfZ2VuZXJh dG9yICp0ZywgdWludDhfdCB3aWR0aCk7Cgogdm9pZCAoKnByb2dyYW1fZ2xvYmFsX3N5bmMpKHN0 cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKICAgaW50IHZyZWFkeV9vZmZzZXQsCiAgIGludCB2 c3RhcnR1cF9zdGFydCwKICAgaW50IHZ1cGRhdGVfb2Zmc2V0LAogICBpbnQgdnVwZGF0ZV93aWR0 aCk7CiB2b2lkICgqZW5hYmxlX29wdGNfY2xvY2spKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0 ZywgYm9vbCBlbmFibGUpOwogdm9pZCAoKnByb2dyYW1fc3RlcmVvKShzdHJ1Y3QgdGltaW5nX2dl bmVyYXRvciAqdGcsCiAgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICp0aW1pbmcsIHN0cnVj dCBjcnRjX3N0ZXJlb19mbGFncyAqZmxhZ3MpOwogYm9vbCAoKmlzX3N0ZXJlb19sZWZ0X2V5ZSko c3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKCiB2b2lkICgqc2V0X2JsYW5rX2RhdGFfZG91 YmxlX2J1ZmZlcikoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLCBib29sIGVuYWJsZSk7Cgog dm9pZCAoKnRnX2luaXQpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0Zyk7CiBib29sICgqaXNf dGdfZW5hYmxlZCkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKIGJvb2wgKCppc19vcHRj X3VuZGVyZmxvd19vY2N1cnJlZCkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKIHZvaWQg KCpjbGVhcl9vcHRjX3VuZGVyZmxvdykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKCiB2 b2lkICgqc2V0X2R3Yl9zb3VyY2UpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICpvcHRjLAogIHVp bnQzMl90IGR3Yl9waXBlX2luc3QpOwoKIHZvaWQgKCpnZXRfb3B0Y19zb3VyY2UpKHN0cnVjdCB0 aW1pbmdfZ2VuZXJhdG9yICpvcHRjLAogICB1aW50MzJfdCAqbnVtX29mX2lucHV0X3NlZ21lbnRz LAogICB1aW50MzJfdCAqc2VnMF9zcmNfc2VsLAogICB1aW50MzJfdCAqc2VnMV9zcmNfc2VsKTsK CgoKCgogYm9vbCAoKmNvbmZpZ3VyZV9jcmMpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywK ICAgICAgICAgIGNvbnN0IHN0cnVjdCBjcmNfcGFyYW1zICpwYXJhbXMpOwoKCgoKCiBib29sICgq Z2V0X2NyYykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLAogICB1aW50MzJfdCAqcl9jciwg dWludDMyX3QgKmdfeSwgdWludDMyX3QgKmJfY2IpOwoKIHZvaWQgKCpwcm9ncmFtX21hbnVhbF90 cmlnZ2VyKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqb3B0Yyk7CiB2b2lkICgqc2V0dXBfbWFu dWFsX3RyaWdnZXIpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICpvcHRjKTsKIGJvb2wgKCpnZXRf aHdfdGltaW5nKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqb3B0YywKICAgc3RydWN0IGRjX2Ny dGNfdGltaW5nICpod19jcnRjX3RpbWluZyk7Cgogdm9pZCAoKnNldF92dGdfcGFyYW1zKShzdHJ1 Y3QgdGltaW5nX2dlbmVyYXRvciAqb3B0YywKICAgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5n ICpkY19jcnRjX3RpbWluZyk7Cgogdm9pZCAoKnNldF9kc2NfY29uZmlnKShzdHJ1Y3QgdGltaW5n X2dlbmVyYXRvciAqb3B0YywKICAgICAgICAgIGVudW0gb3B0Y19kc2NfbW9kZSBkc2NfbW9kZSwK ICAgICAgICAgIHVpbnQzMl90IGRzY19ieXRlc19wZXJfcGl4ZWwsCiAgICAgICAgICB1aW50MzJf dCBkc2Nfc2xpY2Vfd2lkdGgpOwogdm9pZCAoKnNldF9vZG1fYnlwYXNzKShzdHJ1Y3QgdGltaW5n X2dlbmVyYXRvciAqb3B0YywgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICpkY19jcnRjX3Rp bWluZyk7CiB2b2lkICgqc2V0X29kbV9jb21iaW5lKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAq b3B0YywgaW50ICpvcHBfaWQsIGludCBvcHBfY250LAogICBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcg KnRpbWluZyk7CiB2b2lkICgqc2V0X2dzbCkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMs IGNvbnN0IHN0cnVjdCBnc2xfcGFyYW1zICpwYXJhbXMpOwogdm9pZCAoKnNldF9nc2xfc291cmNl X3NlbGVjdCkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMsCiAgIGludCBncm91cF9pZHgs CiAgIHVpbnQzMl90IGdzbF9yZWFkeV9zaWduYWwpOwp9OwojIDMxICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3X3NlcXVlbmNlci5oIiAyCgojIDEgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbGlua19lbmNv ZGVyLmgiIDEKIyAzNyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2luYy9ody9saW5rX2VuY29kZXIuaCIKc3RydWN0IGRjX2NvbnRleHQ7CnN0cnVjdCBlbmNvZGVy X3NldF9kcF9waHlfcGF0dGVybl9wYXJhbTsKc3RydWN0IGxpbmtfbXN0X3N0cmVhbV9hbGxvY2F0 aW9uX3RhYmxlOwpzdHJ1Y3QgZGNfbGlua19zZXR0aW5nczsKc3RydWN0IGxpbmtfdHJhaW5pbmdf c2V0dGluZ3M7CnN0cnVjdCBwaXBlX2N0eDsKCnN0cnVjdCBlbmNvZGVyX2luaXRfZGF0YSB7CiBl bnVtIGNoYW5uZWxfaWQgY2hhbm5lbDsKIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgY29ubmVj dG9yOwogZW51bSBocGRfc291cmNlX2lkIGhwZF9zb3VyY2U7Cgogc3RydWN0IGdyYXBoaWNzX29i amVjdF9pZCBlbmNvZGVyOwogc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKIGVudW0gdHJhbnNtaXR0 ZXIgdHJhbnNtaXR0ZXI7Cn07CgpzdHJ1Y3QgZW5jb2Rlcl9mZWF0dXJlX3N1cHBvcnQgewogdW5p b24gewogIHN0cnVjdCB7CiAgIHVpbnQzMl90IElTX0hCUjJfQ0FQQUJMRToxOwogICB1aW50MzJf dCBJU19IQlIzX0NBUEFCTEU6MTsKICAgdWludDMyX3QgSVNfVFBTM19DQVBBQkxFOjE7CiAgIHVp bnQzMl90IElTX1RQUzRfQ0FQQUJMRToxOwogICB1aW50MzJfdCBIRE1JXzZHQl9FTjoxOwogICB1 aW50MzJfdCBEUF9JU19VU0JfQzoxOwogIH0gYml0czsKICB1aW50MzJfdCByYXc7CiB9IGZsYWdz OwoKIGVudW0gZGNfY29sb3JfZGVwdGggbWF4X2hkbWlfZGVlcF9jb2xvcjsKIHVuc2lnbmVkIGlu dCBtYXhfaGRtaV9waXhlbF9jbG9jazsKIGJvb2wgaGRtaV95Y2JjcjQyMF9zdXBwb3J0ZWQ7CiBi b29sIGRwX3ljYmNyNDIwX3N1cHBvcnRlZDsKfTsKCnVuaW9uIGRwY2RfcHNyX2NvbmZpZ3VyYXRp b24gewogc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIEVOQUJMRSA6IDE7CiAgdW5zaWduZWQgY2hh ciBUUkFOU01JVFRFUl9BQ1RJVkVfSU5fUFNSIDogMTsKICB1bnNpZ25lZCBjaGFyIENSQ19WRVJJ RklDQVRJT04gOiAxOwogIHVuc2lnbmVkIGNoYXIgRlJBTUVfQ0FQVFVSRV9JTkRJQ0FUSU9OIDog MTsKCiAgdW5zaWduZWQgY2hhciBMSU5FX0NBUFRVUkVfSU5ESUNBVElPTiA6IDE7CgogIHVuc2ln bmVkIGNoYXIgSVJRX0hQRF9XSVRIX0NSQ19FUlJPUiA6IDE7CiAgdW5zaWduZWQgY2hhciBSRVNF UlZFRCA6IDI7CiB9IGJpdHM7CiB1bnNpZ25lZCBjaGFyIHJhdzsKfTsKCnVuaW9uIHBzcl9lcnJv cl9zdGF0dXMgewogc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIExJTktfQ1JDX0VSUk9SIDoxOwog IHVuc2lnbmVkIGNoYXIgUkZCX1NUT1JBR0VfRVJST1IgOjE7CiAgdW5zaWduZWQgY2hhciBSRVNF UlZFRCA6NjsKIH0gYml0czsKIHVuc2lnbmVkIGNoYXIgcmF3Owp9OwoKdW5pb24gcHNyX3Npbmtf cHNyX3N0YXR1cyB7CiBzdHJ1Y3QgewogdW5zaWduZWQgY2hhciBTSU5LX1NFTEZfUkVGUkVTSF9T VEFUVVMgOjM7CiB1bnNpZ25lZCBjaGFyIFJFU0VSVkVEIDo1OwogfSBiaXRzOwogdW5zaWduZWQg Y2hhciByYXc7Cn07CgpzdHJ1Y3QgbGlua19lbmNvZGVyIHsKIGNvbnN0IHN0cnVjdCBsaW5rX2Vu Y29kZXJfZnVuY3MgKmZ1bmNzOwogaW50MzJfdCBhdXhfY2hhbm5lbF9vZmZzZXQ7CiBzdHJ1Y3Qg ZGNfY29udGV4dCAqY3R4Owogc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBpZDsKIHN0cnVjdCBn cmFwaGljc19vYmplY3RfaWQgY29ubmVjdG9yOwogdWludDMyX3Qgb3V0cHV0X3NpZ25hbHM7CiBl bnVtIGVuZ2luZV9pZCBwcmVmZXJyZWRfZW5naW5lOwogc3RydWN0IGVuY29kZXJfZmVhdHVyZV9z dXBwb3J0IGZlYXR1cmVzOwogZW51bSB0cmFuc21pdHRlciB0cmFuc21pdHRlcjsKIGVudW0gaHBk X3NvdXJjZV9pZCBocGRfc291cmNlOwogYm9vbCB1c2JjX2NvbWJvX3BoeTsKfTsKCnN0cnVjdCBs aW5rX2VuY19zdGF0ZSB7CgogIHVpbnQzMl90IGRwaHlfZmVjX2VuOwogIHVpbnQzMl90IGRwaHlf ZmVjX3JlYWR5X3NoYWRvdzsKICB1aW50MzJfdCBkcGh5X2ZlY19hY3RpdmVfc3RhdHVzOwogIHVp bnQzMl90IGRwX2xpbmtfdHJhaW5pbmdfY29tcGxldGU7Cgp9OwoKc3RydWN0IGxpbmtfZW5jb2Rl cl9mdW5jcyB7CiB2b2lkICgqcmVhZF9zdGF0ZSkoCiAgIHN0cnVjdCBsaW5rX2VuY29kZXIgKmVu Yywgc3RydWN0IGxpbmtfZW5jX3N0YXRlICpzKTsKIGJvb2wgKCp2YWxpZGF0ZV9vdXRwdXRfd2l0 aF9zdHJlYW0pKAogIHN0cnVjdCBsaW5rX2VuY29kZXIgKmVuYywgY29uc3Qgc3RydWN0IGRjX3N0 cmVhbV9zdGF0ZSAqc3RyZWFtKTsKIHZvaWQgKCpod19pbml0KShzdHJ1Y3QgbGlua19lbmNvZGVy ICplbmMpOwogdm9pZCAoKnNldHVwKShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMsCiAgZW51bSBz aWduYWxfdHlwZSBzaWduYWwpOwogdm9pZCAoKmVuYWJsZV90bWRzX291dHB1dCkoc3RydWN0IGxp bmtfZW5jb2RlciAqZW5jLAogIGVudW0gY2xvY2tfc291cmNlX2lkIGNsb2NrX3NvdXJjZSwKICBl bnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2RlcHRoLAogIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFs LAogIHVpbnQzMl90IHBpeGVsX2Nsb2NrKTsKIHZvaWQgKCplbmFibGVfZHBfb3V0cHV0KShzdHJ1 Y3QgbGlua19lbmNvZGVyICplbmMsCiAgY29uc3Qgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgKmxp bmtfc2V0dGluZ3MsCiAgZW51bSBjbG9ja19zb3VyY2VfaWQgY2xvY2tfc291cmNlKTsKIHZvaWQg KCplbmFibGVfZHBfbXN0X291dHB1dCkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAogIGNvbnN0 IHN0cnVjdCBkY19saW5rX3NldHRpbmdzICpsaW5rX3NldHRpbmdzLAogIGVudW0gY2xvY2tfc291 cmNlX2lkIGNsb2NrX3NvdXJjZSk7CiB2b2lkICgqZW5hYmxlX2x2ZHNfb3V0cHV0KShzdHJ1Y3Qg bGlua19lbmNvZGVyICplbmMsCiAgZW51bSBjbG9ja19zb3VyY2VfaWQgY2xvY2tfc291cmNlLAog IHVpbnQzMl90IHBpeGVsX2Nsb2NrKTsKIHZvaWQgKCpkaXNhYmxlX291dHB1dCkoc3RydWN0IGxp bmtfZW5jb2RlciAqbGlua19lbmMsCiAgZW51bSBzaWduYWxfdHlwZSBzaWduYWwpOwogdm9pZCAo KmRwX3NldF9sYW5lX3NldHRpbmdzKShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMsCiAgY29uc3Qg c3RydWN0IGxpbmtfdHJhaW5pbmdfc2V0dGluZ3MgKmxpbmtfc2V0dGluZ3MpOwogdm9pZCAoKmRw X3NldF9waHlfcGF0dGVybikoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAogIGNvbnN0IHN0cnVj dCBlbmNvZGVyX3NldF9kcF9waHlfcGF0dGVybl9wYXJhbSAqcGFyYSk7CiB2b2lkICgqdXBkYXRl X21zdF9zdHJlYW1fYWxsb2NhdGlvbl90YWJsZSkoCiAgc3RydWN0IGxpbmtfZW5jb2RlciAqZW5j LAogIGNvbnN0IHN0cnVjdCBsaW5rX21zdF9zdHJlYW1fYWxsb2NhdGlvbl90YWJsZSAqdGFibGUp Owogdm9pZCAoKnBzcl9wcm9ncmFtX2RwX2RwaHlfZmFzdF90cmFpbmluZykoc3RydWN0IGxpbmtf ZW5jb2RlciAqZW5jLAogICBib29sIGV4aXRfbGlua190cmFpbmluZ19yZXF1aXJlZCk7CiB2b2lk ICgqcHNyX3Byb2dyYW1fc2Vjb25kYXJ5X3BhY2tldCkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5j LAogICAgdW5zaWduZWQgaW50IHNkcF90cmFuc21pdF9saW5lX251bV9kZWFkbGluZSk7CiB2b2lk ICgqY29ubmVjdF9kaWdfYmVfdG9fZmUpKHN0cnVjdCBsaW5rX2VuY29kZXIgKmVuYywKICBlbnVt IGVuZ2luZV9pZCBlbmdpbmUsCiAgYm9vbCBjb25uZWN0KTsKIHZvaWQgKCplbmFibGVfaHBkKShz dHJ1Y3QgbGlua19lbmNvZGVyICplbmMpOwogdm9pZCAoKmRpc2FibGVfaHBkKShzdHJ1Y3QgbGlu a19lbmNvZGVyICplbmMpOwogYm9vbCAoKmlzX2RpZ19lbmFibGVkKShzdHJ1Y3QgbGlua19lbmNv ZGVyICplbmMpOwogdW5zaWduZWQgaW50ICgqZ2V0X2RpZ19mcm9udGVuZCkoc3RydWN0IGxpbmtf ZW5jb2RlciAqZW5jKTsKIHZvaWQgKCpkZXN0cm95KShzdHJ1Y3QgbGlua19lbmNvZGVyICoqZW5j KTsKCiB2b2lkICgqZmVjX3NldF9lbmFibGUpKHN0cnVjdCBsaW5rX2VuY29kZXIgKmVuYywKICBi b29sIGVuYWJsZSk7Cgogdm9pZCAoKmZlY19zZXRfcmVhZHkpKHN0cnVjdCBsaW5rX2VuY29kZXIg KmVuYywKICBib29sIHJlYWR5KTsKCiBib29sICgqZmVjX2lzX2FjdGl2ZSkoc3RydWN0IGxpbmtf ZW5jb2RlciAqZW5jKTsKIGJvb2wgKCppc19pbl9hbHRfbW9kZSkgKHN0cnVjdCBsaW5rX2VuY29k ZXIgKmVuYyk7Cgogdm9pZCAoKmdldF9tYXhfbGlua19jYXApKHN0cnVjdCBsaW5rX2VuY29kZXIg KmVuYywKICBzdHJ1Y3QgZGNfbGlua19zZXR0aW5ncyAqbGlua19zZXR0aW5ncyk7CgogZW51bSBz aWduYWxfdHlwZSAoKmdldF9kaWdfbW9kZSkoCiAgc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jKTsK fTsKIyAzMyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9o d19zZXF1ZW5jZXIuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvY29yZV9zdGF0dXMuaCIgMQojIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfc3RhdHVzLmgiCmVudW0gZGNfc3RhdHVzIHsK IERDX09LID0gMSwKCiBEQ19OT19DT05UUk9MTEVSX1JFU09VUkNFID0gMiwKIERDX05PX1NUUkVB TV9FTkNfUkVTT1VSQ0UgPSAzLAogRENfTk9fQ0xPQ0tfU09VUkNFX1JFU09VUkNFID0gNCwKIERD X0ZBSUxfQ09OVFJPTExFUl9WQUxJREFURSA9IDUsCiBEQ19GQUlMX0VOQ19WQUxJREFURSA9IDYs CiBEQ19GQUlMX0FUVEFDSF9TVVJGQUNFUyA9IDcsCiBEQ19GQUlMX0RFVEFDSF9TVVJGQUNFUyA9 IDgsCiBEQ19GQUlMX1NVUkZBQ0VfVkFMSURBVEUgPSA5LAogRENfTk9fRFBfTElOS19CQU5EV0lE VEggPSAxMCwKIERDX0VYQ0VFRF9ET05HTEVfQ0FQID0gMTEsCiBEQ19TVVJGQUNFX1BJWEVMX0ZP Uk1BVF9VTlNVUFBPUlRFRCA9IDEyLAogRENfRkFJTF9CQU5EV0lEVEhfVkFMSURBVEUgPSAxMywK IERDX0ZBSUxfU0NBTElORyA9IDE0LAogRENfRkFJTF9EUF9MSU5LX1RSQUlOSU5HID0gMTUsCiBE Q19GQUlMX0RTQ19WQUxJREFURSA9IDE2LAogRENfTk9fRFNDX1JFU09VUkNFID0gMTcsCiBEQ19G QUlMX1VOU1VQUE9SVEVEXzEgPSAxOCwKIERDX0ZBSUxfQ0xLX0VYQ0VFRF9NQVggPSAyMSwKIERD X0ZBSUxfQ0xLX0JFTE9XX01JTiA9IDIyLAogRENfRkFJTF9DTEtfQkVMT1dfQ0ZHX1JFUVVJUkVE ID0gMjMsCgogRENfRVJST1JfVU5FWFBFQ1RFRCA9IC0xCn07CiMgMzQgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHdfc2VxdWVuY2VyLmgiIDIKCmVudW0g dmxpbmVfc2VsZWN0IHsKIFZMSU5FMCwKIFZMSU5FMQp9OwoKc3RydWN0IHBpcGVfY3R4OwpzdHJ1 Y3QgZGNfc3RhdGU7CnN0cnVjdCBkY19zdHJlYW1fc3RhdHVzOwpzdHJ1Y3QgZGNfd3JpdGViYWNr X2luZm87CnN0cnVjdCBkY2h1Yl9pbml0X2RhdGE7CnN0cnVjdCBkY19zdGF0aWNfc2NyZWVuX3Bh cmFtczsKc3RydWN0IHJlc291cmNlX3Bvb2w7CnN0cnVjdCBkY19waHlfYWRkcl9zcGFjZV9jb25m aWc7CnN0cnVjdCBkY192aXJ0dWFsX2FkZHJfc3BhY2VfY29uZmlnOwpzdHJ1Y3QgZHBwOwpzdHJ1 Y3QgZGNlX2h3c2VxOwoKc3RydWN0IGh3X3NlcXVlbmNlcl9mdW5jcyB7Cgogdm9pZCAoKmVkcF9w b3dlcl9jb250cm9sKShzdHJ1Y3QgZGNfbGluayAqbGluaywgYm9vbCBlbmFibGUpOwogdm9pZCAo KmVkcF93YWl0X2Zvcl9ocGRfcmVhZHkpKHN0cnVjdCBkY19saW5rICpsaW5rLCBib29sIHBvd2Vy X3VwKTsKCgogdm9pZCAoKmluaXRfaHcpKHN0cnVjdCBkYyAqZGMpOwogdm9pZCAoKmVuYWJsZV9h Y2NlbGVyYXRlZF9tb2RlKShzdHJ1Y3QgZGMgKmRjLAogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRl eHQpOwogZW51bSBkY19zdGF0dXMgKCphcHBseV9jdHhfdG9faHcpKHN0cnVjdCBkYyAqZGMsCiAg IHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CiB2b2lkICgqZGlzYWJsZV9wbGFuZSkoc3RydWN0 IGRjICpkYywgc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7CiB2b2lkICgqYXBwbHlfY3R4X2Zv cl9zdXJmYWNlKShzdHJ1Y3QgZGMgKmRjLAogICBjb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRl ICpzdHJlYW0sCiAgIGludCBudW1fcGxhbmVzLCBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwog dm9pZCAoKnByb2dyYW1fZnJvbnRfZW5kX2Zvcl9jdHgpKHN0cnVjdCBkYyAqZGMsCiAgIHN0cnVj dCBkY19zdGF0ZSAqY29udGV4dCk7CiB2b2lkICgqdXBkYXRlX3BsYW5lX2FkZHIpKGNvbnN0IHN0 cnVjdCBkYyAqZGMsCiAgIHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwogdm9pZCAoKnVwZGF0 ZV9kY2h1Yikoc3RydWN0IGRjZV9od3NlcSAqaHdzLAogICBzdHJ1Y3QgZGNodWJfaW5pdF9kYXRh ICpkaF9kYXRhKTsKIHZvaWQgKCp3YWl0X2Zvcl9tcGNjX2Rpc2Nvbm5lY3QpKHN0cnVjdCBkYyAq ZGMsCiAgIHN0cnVjdCByZXNvdXJjZV9wb29sICpyZXNfcG9vbCwKICAgc3RydWN0IHBpcGVfY3R4 ICpwaXBlX2N0eCk7CiB2b2lkICgqcHJvZ3JhbV90cmlwbGVidWZmZXIpKGNvbnN0IHN0cnVjdCBk YyAqZGMsCiAgc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCwgYm9vbCBlbmFibGVUcmlwbGVCdWZm ZXIpOwogdm9pZCAoKnVwZGF0ZV9wZW5kaW5nX3N0YXR1cykoc3RydWN0IHBpcGVfY3R4ICpwaXBl X2N0eCk7CgoKIHZvaWQgKCpwaXBlX2NvbnRyb2xfbG9ja19nbG9iYWwpKHN0cnVjdCBkYyAqZGMs CiAgIHN0cnVjdCBwaXBlX2N0eCAqcGlwZSwgYm9vbCBsb2NrKTsKIHZvaWQgKCpwaXBlX2NvbnRy b2xfbG9jaykoc3RydWN0IGRjICpkYywKICAgc3RydWN0IHBpcGVfY3R4ICpwaXBlLCBib29sIGxv Y2spOwogdm9pZCAoKnNldF9mbGlwX2NvbnRyb2xfZ3NsKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVf Y3R4LAogICBib29sIGZsaXBfaW1tZWRpYXRlKTsKCgogdm9pZCAoKmdldF9wb3NpdGlvbikoc3Ry dWN0IHBpcGVfY3R4ICoqcGlwZV9jdHgsIGludCBudW1fcGlwZXMsCiAgIHN0cnVjdCBjcnRjX3Bv c2l0aW9uICpwb3NpdGlvbik7CiBpbnQgKCpnZXRfdnVwZGF0ZV9vZmZzZXRfZnJvbV92c3luYyko c3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7CiB2b2lkICgqZW5hYmxlX3Blcl9mcmFtZV9jcnRj X3Bvc2l0aW9uX3Jlc2V0KShzdHJ1Y3QgZGMgKmRjLAogICBpbnQgZ3JvdXBfc2l6ZSwgc3RydWN0 IHBpcGVfY3R4ICpncm91cGVkX3BpcGVzW10pOwogdm9pZCAoKmVuYWJsZV90aW1pbmdfc3luY2hy b25pemF0aW9uKShzdHJ1Y3QgZGMgKmRjLAogICBpbnQgZ3JvdXBfaW5kZXgsIGludCBncm91cF9z aXplLAogICBzdHJ1Y3QgcGlwZV9jdHggKmdyb3VwZWRfcGlwZXNbXSk7CiB2b2lkICgqc2V0dXBf cGVyaW9kaWNfaW50ZXJydXB0KShzdHJ1Y3QgZGMgKmRjLAogICBzdHJ1Y3QgcGlwZV9jdHggKnBp cGVfY3R4LAogICBlbnVtIHZsaW5lX3NlbGVjdCB2bGluZSk7CiB2b2lkICgqc2V0X2Rycikoc3Ry dWN0IHBpcGVfY3R4ICoqcGlwZV9jdHgsIGludCBudW1fcGlwZXMsCiAgIHVuc2lnbmVkIGludCB2 bWluLCB1bnNpZ25lZCBpbnQgdm1heCwKICAgdW5zaWduZWQgaW50IHZtaWQsIHVuc2lnbmVkIGlu dCB2bWlkX2ZyYW1lX251bWJlcik7CiB2b2lkICgqc2V0X3N0YXRpY19zY3JlZW5fY29udHJvbCko c3RydWN0IHBpcGVfY3R4ICoqcGlwZV9jdHgsCiAgIGludCBudW1fcGlwZXMsCiAgIGNvbnN0IHN0 cnVjdCBkY19zdGF0aWNfc2NyZWVuX3BhcmFtcyAqZXZlbnRzKTsKCgogdm9pZCAoKmVuYWJsZV9z dHJlYW0pKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwogdm9pZCAoKmRpc2FibGVfc3RyZWFt KShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4KTsKIHZvaWQgKCpibGFua19zdHJlYW0pKHN0cnVj dCBwaXBlX2N0eCAqcGlwZV9jdHgpOwogdm9pZCAoKnVuYmxhbmtfc3RyZWFtKShzdHJ1Y3QgcGlw ZV9jdHggKnBpcGVfY3R4LAogICBzdHJ1Y3QgZGNfbGlua19zZXR0aW5ncyAqbGlua19zZXR0aW5n cyk7CgoKIHZvaWQgKCpwcmVwYXJlX2JhbmR3aWR0aCkoc3RydWN0IGRjICpkYywgc3RydWN0IGRj X3N0YXRlICpjb250ZXh0KTsKIGJvb2wgKCp1cGRhdGVfYmFuZHdpZHRoKShzdHJ1Y3QgZGMgKmRj LCBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwogdm9pZCAoKm9wdGltaXplX2JhbmR3aWR0aCko c3RydWN0IGRjICpkYywgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KTsKCgogdm9pZCAoKnNldF9h dm11dGUpKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgsIGJvb2wgZW5hYmxlKTsKIHZvaWQgKCpz ZW5kX2ltbWVkaWF0ZV9zZHBfbWVzc2FnZSkoCiAgIHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgs CiAgIGNvbnN0IHVpbnQ4X3QgKmN1c3RvbV9zZHBfbWVzc2FnZSwKICAgdW5zaWduZWQgaW50IHNk cF9tZXNzYWdlX3NpemUpOwogdm9pZCAoKnVwZGF0ZV9pbmZvX2ZyYW1lKShzdHJ1Y3QgcGlwZV9j dHggKnBpcGVfY3R4KTsKIHZvaWQgKCpzZXRfZG1kYXRhX2F0dHJpYnV0ZXMpKHN0cnVjdCBwaXBl X2N0eCAqcGlwZSk7CiB2b2lkICgqcHJvZ3JhbV9kbWRhdGFfZW5naW5lKShzdHJ1Y3QgcGlwZV9j dHggKnBpcGVfY3R4KTsKIGJvb2wgKCpkbWRhdGFfc3RhdHVzX2RvbmUpKHN0cnVjdCBwaXBlX2N0 eCAqcGlwZV9jdHgpOwoKCiB2b2lkICgqc2V0X2N1cnNvcl9wb3NpdGlvbikoc3RydWN0IHBpcGVf Y3R4ICpwaXBlKTsKIHZvaWQgKCpzZXRfY3Vyc29yX2F0dHJpYnV0ZSkoc3RydWN0IHBpcGVfY3R4 ICpwaXBlKTsKIHZvaWQgKCpzZXRfY3Vyc29yX3Nkcl93aGl0ZV9sZXZlbCkoc3RydWN0IHBpcGVf Y3R4ICpwaXBlKTsKCgogdm9pZCAoKnByb2dyYW1fZ2FtdXRfcmVtYXApKHN0cnVjdCBwaXBlX2N0 eCAqcGlwZV9jdHgpOwogdm9pZCAoKnByb2dyYW1fb3V0cHV0X2NzYykoc3RydWN0IGRjICpkYywg c3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCwKICAgZW51bSBkY19jb2xvcl9zcGFjZSBjb2xvcnNw YWNlLAogICB1aW50MTZfdCAqbWF0cml4LCBpbnQgb3BwX2lkKTsKCgogaW50ICgqaW5pdF9zeXNf Y3R4KShzdHJ1Y3QgZGNlX2h3c2VxICpod3MsCiAgIHN0cnVjdCBkYyAqZGMsCiAgIHN0cnVjdCBk Y19waHlfYWRkcl9zcGFjZV9jb25maWcgKnBhX2NvbmZpZyk7CiB2b2lkICgqaW5pdF92bV9jdHgp KHN0cnVjdCBkY2VfaHdzZXEgKmh3cywKICAgc3RydWN0IGRjICpkYywKICAgc3RydWN0IGRjX3Zp cnR1YWxfYWRkcl9zcGFjZV9jb25maWcgKnZhX2NvbmZpZywKICAgaW50IHZtaWQpOwoKCiB2b2lk ICgqdXBkYXRlX3dyaXRlYmFjaykoc3RydWN0IGRjICpkYywKICAgc3RydWN0IGRjX3dyaXRlYmFj a19pbmZvICp3Yl9pbmZvLAogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwogdm9pZCAoKmVu YWJsZV93cml0ZWJhY2spKHN0cnVjdCBkYyAqZGMsCiAgIHN0cnVjdCBkY193cml0ZWJhY2tfaW5m byAqd2JfaW5mbywKICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KTsKIHZvaWQgKCpkaXNhYmxl X3dyaXRlYmFjaykoc3RydWN0IGRjICpkYywKICAgdW5zaWduZWQgaW50IGR3Yl9waXBlX2luc3Qp OwoKIGJvb2wgKCptbWh1YmJ1Yl93YXJtdXApKHN0cnVjdCBkYyAqZGMsCiAgIHVuc2lnbmVkIGlu dCBudW1fZHdiLAogICBzdHJ1Y3QgZGNfd3JpdGViYWNrX2luZm8gKndiX2luZm8pOwoKCiBlbnVt IGRjX3N0YXR1cyAoKnNldF9jbG9jaykoc3RydWN0IGRjICpkYywKICAgZW51bSBkY19jbG9ja190 eXBlIGNsb2NrX3R5cGUsCiAgIHVpbnQzMl90IGNsa19raHosIHVpbnQzMl90IHN0ZXBwaW5nKTsK IHZvaWQgKCpnZXRfY2xvY2spKHN0cnVjdCBkYyAqZGMsIGVudW0gZGNfY2xvY2tfdHlwZSBjbG9j a190eXBlLAogICBzdHJ1Y3QgZGNfY2xvY2tfY29uZmlnICpjbG9ja19jZmcpOwogdm9pZCAoKm9w dGltaXplX3B3cl9zdGF0ZSkoY29uc3Qgc3RydWN0IGRjICpkYywKICAgc3RydWN0IGRjX3N0YXRl ICpjb250ZXh0KTsKIHZvaWQgKCpleGl0X29wdGltaXplZF9wd3Jfc3RhdGUpKGNvbnN0IHN0cnVj dCBkYyAqZGMsCiAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CgoKIHZvaWQgKCplbmFibGVf YXVkaW9fc3RyZWFtKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4KTsKIHZvaWQgKCpkaXNhYmxl X2F1ZGlvX3N0cmVhbSkoc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7CgoKIHZvaWQgKCpzZXR1 cF9zdGVyZW8pKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgsIHN0cnVjdCBkYyAqZGMpOwoKCiB2 b2lkICgqbG9nX2h3X3N0YXRlKShzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfbG9nX2J1ZmZlcl9j dHggKmxvZ19jdHgpOwogdm9pZCAoKmdldF9od19zdGF0ZSkoc3RydWN0IGRjICpkYywgY2hhciAq cEJ1ZiwKICAgdW5zaWduZWQgaW50IGJ1ZlNpemUsIHVuc2lnbmVkIGludCBtYXNrKTsKIHZvaWQg KCpjbGVhcl9zdGF0dXNfYml0cykoc3RydWN0IGRjICpkYywgdW5zaWduZWQgaW50IG1hc2spOwoK Cn07Cgp2b2lkIGNvbG9yX3NwYWNlX3RvX2JsYWNrX2NvbG9yKAogY29uc3Qgc3RydWN0IGRjICpk YywKIGVudW0gZGNfY29sb3Jfc3BhY2UgY29sb3JzcGFjZSwKIHN0cnVjdCB0Z19jb2xvciAqYmxh Y2tfY29sb3IpOwoKYm9vbCBod3NzX3dhaXRfZm9yX2JsYW5rX2NvbXBsZXRlKAogIHN0cnVjdCB0 aW1pbmdfZ2VuZXJhdG9yICp0Zyk7Cgpjb25zdCB1aW50MTZfdCAqZmluZF9jb2xvcl9tYXRyaXgo CiAgZW51bSBkY19jb2xvcl9zcGFjZSBjb2xvcl9zcGFjZSwKICB1aW50MzJfdCAqYXJyYXlfc2l6 ZSk7CiMgMzggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5o IiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9j b21wcmVzc29yLmgiIDEKIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2luYy9jb21wcmVzc29yLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2luY2x1ZGUvYmlvc19wYXJzZXJfaW50ZXJmYWNlLmgiIDEKIyAyOSAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvYmlvc19wYXJzZXJf aW50ZXJmYWNlLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2RjL2RjX2Jpb3NfdHlwZXMuaCIgMQojIDQxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvZGNfYmlvc190eXBlcy5oIgpzdHJ1Y3QgZGNfdmJpb3NfZnVuY3Mgewog dWludDhfdCAoKmdldF9jb25uZWN0b3JzX251bWJlcikoc3RydWN0IGRjX2Jpb3MgKmJpb3MpOwoK IHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgKCpnZXRfY29ubmVjdG9yX2lkKSgKICBzdHJ1Y3Qg ZGNfYmlvcyAqYmlvcywKICB1aW50OF90IGNvbm5lY3Rvcl9pbmRleCk7CiBlbnVtIGJwX3Jlc3Vs dCAoKmdldF9zcmNfb2JqKSgKICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKICBzdHJ1Y3QgZ3JhcGhp Y3Nfb2JqZWN0X2lkIG9iamVjdF9pZCwgdWludDMyX3QgaW5kZXgsCiAgc3RydWN0IGdyYXBoaWNz X29iamVjdF9pZCAqc3JjX29iamVjdF9pZCk7CiBlbnVtIGJwX3Jlc3VsdCAoKmdldF9pMmNfaW5m bykoCiAgc3RydWN0IGRjX2Jpb3MgKmRjYiwKICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGlk LAogIHN0cnVjdCBncmFwaGljc19vYmplY3RfaTJjX2luZm8gKmluZm8pOwogZW51bSBicF9yZXN1 bHQgKCpnZXRfaHBkX2luZm8pKAogIHN0cnVjdCBkY19iaW9zICpiaW9zLAogIHN0cnVjdCBncmFw aGljc19vYmplY3RfaWQgaWQsCiAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9ocGRfaW5mbyAqaW5m byk7CiBlbnVtIGJwX3Jlc3VsdCAoKmdldF9kZXZpY2VfdGFnKSgKICBzdHJ1Y3QgZGNfYmlvcyAq YmlvcywKICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGNvbm5lY3Rvcl9vYmplY3RfaWQsCiAg dWludDMyX3QgZGV2aWNlX3RhZ19pbmRleCwKICBzdHJ1Y3QgY29ubmVjdG9yX2RldmljZV90YWdf aW5mbyAqaW5mbyk7CiBlbnVtIGJwX3Jlc3VsdCAoKmdldF9zcHJlYWRfc3BlY3RydW1faW5mbyko CiAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCiAgZW51bSBhc19zaWduYWxfdHlwZSBzaWduYWwsCiAg dWludDMyX3QgaW5kZXgsCiAgc3RydWN0IHNwcmVhZF9zcGVjdHJ1bV9pbmZvICpzc19pbmZvKTsK IHVpbnQzMl90ICgqZ2V0X3NzX2VudHJ5X251bWJlcikoCiAgc3RydWN0IGRjX2Jpb3MgKmJpb3Ms CiAgZW51bSBhc19zaWduYWxfdHlwZSBzaWduYWwpOwogZW51bSBicF9yZXN1bHQgKCpnZXRfZW1i ZWRkZWRfcGFuZWxfaW5mbykoCiAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCiAgc3RydWN0IGVtYmVk ZGVkX3BhbmVsX2luZm8gKmluZm8pOwogZW51bSBicF9yZXN1bHQgKCpnZXRfZ3Bpb19waW5faW5m bykoCiAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCiAgdWludDMyX3QgZ3Bpb19pZCwKICBzdHJ1Y3Qg Z3Bpb19waW5faW5mbyAqaW5mbyk7CiBlbnVtIGJwX3Jlc3VsdCAoKmdldF9lbmNvZGVyX2NhcF9p bmZvKSgKICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lk IG9iamVjdF9pZCwKICBzdHJ1Y3QgYnBfZW5jb2Rlcl9jYXBfaW5mbyAqaW5mbyk7CgogYm9vbCAo KmlzX2FjY2VsZXJhdGVkX21vZGUpKAogIHN0cnVjdCBkY19iaW9zICpiaW9zKTsKIHZvaWQgKCpz ZXRfc2NyYXRjaF9jcml0aWNhbF9zdGF0ZSkoCiAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCiAgYm9v bCBzdGF0ZSk7CiBib29sICgqaXNfZGV2aWNlX2lkX3N1cHBvcnRlZCkoCiAgc3RydWN0IGRjX2Jp b3MgKmJpb3MsCiAgc3RydWN0IGRldmljZV9pZCBpZCk7CgoKCiBlbnVtIGJwX3Jlc3VsdCAoKmVu Y29kZXJfY29udHJvbCkoCiAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCiAgc3RydWN0IGJwX2VuY29k ZXJfY29udHJvbCAqY250bCk7CiBlbnVtIGJwX3Jlc3VsdCAoKnRyYW5zbWl0dGVyX2NvbnRyb2wp KAogIHN0cnVjdCBkY19iaW9zICpiaW9zLAogIHN0cnVjdCBicF90cmFuc21pdHRlcl9jb250cm9s ICpjbnRsKTsKIGVudW0gYnBfcmVzdWx0ICgqZW5hYmxlX2NydGMpKAogIHN0cnVjdCBkY19iaW9z ICpiaW9zLAogIGVudW0gY29udHJvbGxlcl9pZCBpZCwKICBib29sIGVuYWJsZSk7CiBlbnVtIGJw X3Jlc3VsdCAoKmFkanVzdF9waXhlbF9jbG9jaykoCiAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCiAg c3RydWN0IGJwX2FkanVzdF9waXhlbF9jbG9ja19wYXJhbWV0ZXJzICpicF9wYXJhbXMpOwogZW51 bSBicF9yZXN1bHQgKCpzZXRfcGl4ZWxfY2xvY2spKAogIHN0cnVjdCBkY19iaW9zICpiaW9zLAog IHN0cnVjdCBicF9waXhlbF9jbG9ja19wYXJhbWV0ZXJzICpicF9wYXJhbXMpOwogZW51bSBicF9y ZXN1bHQgKCpzZXRfZGNlX2Nsb2NrKSgKICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKICBzdHJ1Y3Qg YnBfc2V0X2RjZV9jbG9ja19wYXJhbWV0ZXJzICpicF9wYXJhbXMpOwogZW51bSBicF9yZXN1bHQg KCplbmFibGVfc3ByZWFkX3NwZWN0cnVtX29uX3BwbGwpKAogIHN0cnVjdCBkY19iaW9zICpiaW9z LAogIHN0cnVjdCBicF9zcHJlYWRfc3BlY3RydW1fcGFyYW1ldGVycyAqYnBfcGFyYW1zLAogIGJv b2wgZW5hYmxlKTsKIGVudW0gYnBfcmVzdWx0ICgqcHJvZ3JhbV9jcnRjX3RpbWluZykoCiAgc3Ry dWN0IGRjX2Jpb3MgKmJpb3MsCiAgc3RydWN0IGJwX2h3X2NydGNfdGltaW5nX3BhcmFtZXRlcnMg KmJwX3BhcmFtcyk7CiBlbnVtIGJwX3Jlc3VsdCAoKnByb2dyYW1fZGlzcGxheV9lbmdpbmVfcGxs KSgKICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKICBzdHJ1Y3QgYnBfcGl4ZWxfY2xvY2tfcGFyYW1l dGVycyAqYnBfcGFyYW1zKTsKIGVudW0gYnBfcmVzdWx0ICgqZW5hYmxlX2Rpc3BfcG93ZXJfZ2F0 aW5nKSgKICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKICBlbnVtIGNvbnRyb2xsZXJfaWQgY29udHJv bGxlcl9pZCwKICBlbnVtIGJwX3BpcGVfY29udHJvbF9hY3Rpb24gYWN0aW9uKTsKCiB2b2lkICgq Ymlvc19wYXJzZXJfZGVzdHJveSkoc3RydWN0IGRjX2Jpb3MgKipkY2IpOwoKIGVudW0gYnBfcmVz dWx0ICgqZ2V0X2JvYXJkX2xheW91dF9pbmZvKSgKICBzdHJ1Y3QgZGNfYmlvcyAqZGNiLAogIHN0 cnVjdCBib2FyZF9sYXlvdXRfaW5mbyAqYm9hcmRfbGF5b3V0X2luZm8pOwp9OwoKc3RydWN0IGJp b3NfcmVnaXN0ZXJzIHsKIHVpbnQzMl90IEJJT1NfU0NSQVRDSF8zOwogdWludDMyX3QgQklPU19T Q1JBVENIXzY7Cn07CgpzdHJ1Y3QgZGNfYmlvcyB7CiBjb25zdCBzdHJ1Y3QgZGNfdmJpb3NfZnVu Y3MgKmZ1bmNzOwoKIHVpbnQ4X3QgKmJpb3M7CiB1aW50MzJfdCBiaW9zX3NpemU7CgogdWludDhf dCAqYmlvc19sb2NhbF9pbWFnZTsKCiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwogY29uc3Qgc3Ry dWN0IGJpb3NfcmVnaXN0ZXJzICpyZWdzOwogc3RydWN0IGludGVncmF0ZWRfaW5mbyAqaW50ZWdy YXRlZF9pbmZvOwogc3RydWN0IGRjX2Zpcm13YXJlX2luZm8gZndfaW5mbzsKIGJvb2wgZndfaW5m b192YWxpZDsKfTsKIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2luY2x1ZGUvYmlvc19wYXJzZXJfaW50ZXJmYWNlLmgiIDIKCnN0cnVjdCBiaW9zX3BhcnNlcjsK CnN0cnVjdCBicF9pbml0X2RhdGEgewogc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKIHVpbnQ4X3Qg KmJpb3M7Cn07CgpzdHJ1Y3QgZGNfYmlvcyAqZGFsX2Jpb3NfcGFyc2VyX2NyZWF0ZSgKIHN0cnVj dCBicF9pbml0X2RhdGEgKmluaXQsCiBlbnVtIGRjZV92ZXJzaW9uIGRjZV92ZXJzaW9uKTsKCnZv aWQgZGFsX2Jpb3NfcGFyc2VyX2Rlc3Ryb3koc3RydWN0IGRjX2Jpb3MgKipkY2IpOwojIDMxICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvbXByZXNzb3Iu aCIgMgoKZW51bSBmYmNfY29tcHJlc3NfcmF0aW8gewogRkJDX0NPTVBSRVNTX1JBVElPX0lOVkFM SUQgPSAwLAogRkJDX0NPTVBSRVNTX1JBVElPXzFUTzEgPSAxLAogRkJDX0NPTVBSRVNTX1JBVElP XzJUTzEgPSAyLAogRkJDX0NPTVBSRVNTX1JBVElPXzRUTzEgPSA0LAogRkJDX0NPTVBSRVNTX1JB VElPXzhUTzEgPSA4LAp9OwoKdW5pb24gZmJjX3BoeXNpY2FsX2FkZHJlc3Mgewogc3RydWN0IHsK ICB1aW50MzJfdCBsb3dfcGFydDsKICBpbnQzMl90IGhpZ2hfcGFydDsKIH0gYWRkcjsKIHVpbnQ2 NF90IHF1YWRfcGFydDsKfTsKCnN0cnVjdCBjb21wcl9hZGRyX2FuZF9waXRjaF9wYXJhbXMgewoK IHVpbnQzMl90IGluc3Q7CiB1aW50MzJfdCBzb3VyY2Vfdmlld193aWR0aDsKIHVpbnQzMl90IHNv dXJjZV92aWV3X2hlaWdodDsKfTsKCmVudW0gZmJjX2h3X21heF9yZXNvbHV0aW9uX3N1cHBvcnRl ZCB7CiBGQkNfTUFYX1ggPSAzODQwLAogRkJDX01BWF9ZID0gMjQwMCwKIEZCQ19NQVhfWF9TRyA9 IDE5MjAsCiBGQkNfTUFYX1lfU0cgPSAxMDgwLAp9OwoKc3RydWN0IGNvbXByZXNzb3I7CgpzdHJ1 Y3QgY29tcHJlc3Nvcl9mdW5jcyB7Cgogdm9pZCAoKnBvd2VyX3VwX2ZiYykoc3RydWN0IGNvbXBy ZXNzb3IgKmNwKTsKIHZvaWQgKCplbmFibGVfZmJjKShzdHJ1Y3QgY29tcHJlc3NvciAqY3AsCiAg c3RydWN0IGNvbXByX2FkZHJfYW5kX3BpdGNoX3BhcmFtcyAqcGFyYW1zKTsKIHZvaWQgKCpkaXNh YmxlX2ZiYykoc3RydWN0IGNvbXByZXNzb3IgKmNwKTsKIHZvaWQgKCpzZXRfZmJjX2ludmFsaWRh dGlvbl90cmlnZ2Vycykoc3RydWN0IGNvbXByZXNzb3IgKmNwLAogIHVpbnQzMl90IGZiY190cmln Z2VyKTsKIHZvaWQgKCpzdXJmYWNlX2FkZHJlc3NfYW5kX3BpdGNoKSgKICBzdHJ1Y3QgY29tcHJl c3NvciAqY3AsCiAgc3RydWN0IGNvbXByX2FkZHJfYW5kX3BpdGNoX3BhcmFtcyAqcGFyYW1zKTsK IGJvb2wgKCppc19mYmNfZW5hYmxlZF9pbl9odykoc3RydWN0IGNvbXByZXNzb3IgKmNwLAogIHVp bnQzMl90ICpmYmNfbWFwcGVkX2NydGNfaWQpOwp9OwpzdHJ1Y3QgY29tcHJlc3NvciB7CiBzdHJ1 Y3QgZGNfY29udGV4dCAqY3R4OwoKIHVpbnQzMl90IGF0dGFjaGVkX2luc3Q7CiBib29sIGlzX2Vu YWJsZWQ7CiBjb25zdCBzdHJ1Y3QgY29tcHJlc3Nvcl9mdW5jcyAqZnVuY3M7CiB1bmlvbiB7CiAg dWludDMyX3QgcmF3OwogIHN0cnVjdCB7CiAgIHVpbnQzMl90IEZCQ19TVVBQT1JUOjE7CiAgIHVp bnQzMl90IEZCX1BPT0w6MTsKICAgdWludDMyX3QgRFlOQU1JQ19BTExPQzoxOwogICB1aW50MzJf dCBMUFRfU1VQUE9SVDoxOwogICB1aW50MzJfdCBMUFRfTUNfQ09ORklHOjE7CiAgIHVpbnQzMl90 IERVTU1ZX0JBQ0tFTkQ6MTsKICAgdWludDMyX3QgQ0xLX0dBVElOR19ESVNBQkxFRDoxOwoKICB9 IGJpdHM7CiB9IG9wdGlvbnM7CgogdW5pb24gZmJjX3BoeXNpY2FsX2FkZHJlc3MgY29tcHJfc3Vy ZmFjZV9hZGRyZXNzOwoKIHVpbnQzMl90IGVtYmVkZGVkX3BhbmVsX2hfc2l6ZTsKIHVpbnQzMl90 IGVtYmVkZGVkX3BhbmVsX3Zfc2l6ZTsKIHVpbnQzMl90IG1lbW9yeV9idXNfd2lkdGg7CiB1aW50 MzJfdCBiYW5rc19udW07CiB1aW50MzJfdCByYXdfc2l6ZTsKIHVpbnQzMl90IGNoYW5uZWxfaW50 ZXJsZWF2ZV9zaXplOwogdWludDMyX3QgZHJhbV9jaGFubmVsc19udW07CgogdWludDMyX3QgYWxs b2NhdGVkX3NpemU7CiB1aW50MzJfdCBwcmVmZXJyZWRfcmVxdWVzdGVkX3NpemU7CiB1aW50MzJf dCBscHRfY2hhbm5lbHNfbnVtOwogZW51bSBmYmNfY29tcHJlc3NfcmF0aW8gbWluX2NvbXByZXNz X3JhdGlvOwp9OwoKc3RydWN0IGZiY19pbnB1dF9pbmZvIHsKIGJvb2wgZHluYW1pY19mYmNfYnVm ZmVyX2FsbG9jOwogdW5zaWduZWQgaW50IHNvdXJjZV92aWV3X3dpZHRoOwogdW5zaWduZWQgaW50 IHNvdXJjZV92aWV3X2hlaWdodDsKIHVuc2lnbmVkIGludCBudW1fb2ZfYWN0aXZlX3RhcmdldHM7 Cn07CgoKc3RydWN0IGZiY19yZXF1ZXN0ZWRfY29tcHJlc3NlZF9zaXplIHsKIHVuc2lnbmVkIGlu dCBwcmVmZXJyZWRfc2l6ZTsKIHVuc2lnbmVkIGludCBwcmVmZXJyZWRfc2l6ZV9hbGlnbm1lbnQ7 CiB1bnNpZ25lZCBpbnQgbWluX3NpemU7CiB1bnNpZ25lZCBpbnQgbWluX3NpemVfYWxpZ25tZW50 OwogdW5pb24gewogIHN0cnVjdCB7CgogICB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX211c3RfYmVf ZnJhbWVidWZmZXJfcG9vbCA6IDE7CgogICB1bnNpZ25lZCBpbnQgbWluX211c3RfYmVfZnJhbWVi dWZmZXJfcG9vbCA6IDE7CiAgfSBiaXRzOwogIHVuc2lnbmVkIGludCBmbGFnczsKIH07Cn07CiMg MzkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCiMg MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9kbWN1 LmgiIDEKIyAyOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2lu Yy9ody9kbWN1LmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2RjL2RtX3NlcnZpY2VzX3R5cGVzLmgiIDEKIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9kbWN1LmgiIDIKCgoKCgoKZW51bSBkbWN1X3N0YXRl IHsKIERNQ1VfVU5MT0FERUQgPSAwLAogRE1DVV9MT0FERURfVU5JTklUSUFMSVpFRCA9IDEsCiBE TUNVX1JVTk5JTkcgPSAyLAp9OwoKc3RydWN0IGRtY3VfdmVyc2lvbiB7CiB1bnNpZ25lZCBpbnQg aW50ZXJmYWNlX3ZlcnNpb247CiB1bnNpZ25lZCBpbnQgYWJtX3ZlcnNpb247CiB1bnNpZ25lZCBp bnQgcHNyX3ZlcnNpb247CiB1bnNpZ25lZCBpbnQgYnVpbGRfdmVyc2lvbjsKfTsKCnN0cnVjdCBk bWN1IHsKIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7CiBjb25zdCBzdHJ1Y3QgZG1jdV9mdW5jcyAq ZnVuY3M7CgogZW51bSBkbWN1X3N0YXRlIGRtY3Vfc3RhdGU7CiBzdHJ1Y3QgZG1jdV92ZXJzaW9u IGRtY3VfdmVyc2lvbjsKIHVuc2lnbmVkIGludCBjYWNoZWRfd2FpdF9sb29wX251bWJlcjsKIHVp bnQzMl90IHBzcF92ZXJzaW9uOwogYm9vbCBhdXRvX2xvYWRfZG1jdTsKfTsKCnN0cnVjdCBkbWN1 X2Z1bmNzIHsKIGJvb2wgKCpkbWN1X2luaXQpKHN0cnVjdCBkbWN1ICpkbWN1KTsKIGJvb2wgKCps b2FkX2lyYW0pKHN0cnVjdCBkbWN1ICpkbWN1LAogICB1bnNpZ25lZCBpbnQgc3RhcnRfb2Zmc2V0 LAogICBjb25zdCBjaGFyICpzcmMsCiAgIHVuc2lnbmVkIGludCBieXRlcyk7CiB2b2lkICgqc2V0 X3Bzcl9lbmFibGUpKHN0cnVjdCBkbWN1ICpkbWN1LCBib29sIGVuYWJsZSwgYm9vbCB3YWl0KTsK IGJvb2wgKCpzZXR1cF9wc3IpKHN0cnVjdCBkbWN1ICpkbWN1LAogICBzdHJ1Y3QgZGNfbGluayAq bGluaywKICAgc3RydWN0IHBzcl9jb250ZXh0ICpwc3JfY29udGV4dCk7CiB2b2lkICgqZ2V0X3Bz cl9zdGF0ZSkoc3RydWN0IGRtY3UgKmRtY3UsIHVpbnQzMl90ICpwc3Jfc3RhdGUpOwogdm9pZCAo KnNldF9wc3Jfd2FpdF9sb29wKShzdHJ1Y3QgZG1jdSAqZG1jdSwKICAgdW5zaWduZWQgaW50IHdh aXRfbG9vcF9udW1iZXIpOwogdm9pZCAoKmdldF9wc3Jfd2FpdF9sb29wKShzdHJ1Y3QgZG1jdSAq ZG1jdSwKICAgdW5zaWduZWQgaW50ICpwc3Jfd2FpdF9sb29wX251bWJlcik7CiBib29sICgqaXNf ZG1jdV9pbml0aWFsaXplZCkoc3RydWN0IGRtY3UgKmRtY3UpOwogYm9vbCAoKmxvY2tfcGh5KShz dHJ1Y3QgZG1jdSAqZG1jdSk7CiBib29sICgqdW5sb2NrX3BoeSkoc3RydWN0IGRtY3UgKmRtY3Up Owp9OwojIDQwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMu aCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwv ZGlzcGxheV9tb2RlX2xpYi5oIiAxCiMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9kbWwvZGlzcGxheV9tb2RlX2xpYi5oIgojIDEgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZG1sX2NvbW1vbl9kZWZzLmgiIDEKIyAz MCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kbWxfY29t bW9uX2RlZnMuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvZG1sL2RjX2ZlYXR1cmVzLmgiIDEKIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2RtbC9kbWxfY29tbW9uX2RlZnMuaCIgMgojIDEgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZGlzcGxheV9tb2RlX3N0cnVjdHMu aCIgMQojIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1s L2Rpc3BsYXlfbW9kZV9zdHJ1Y3RzLmgiCnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX3ZvbHRhZ2Vf c2NhbGluZ19zdCB2b2x0YWdlX3NjYWxpbmdfc3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX3Nv Y19ib3VuZGluZ19ib3hfc3Qgc29jX2JvdW5kaW5nX2JveF9zdDsKdHlwZWRlZiBzdHJ1Y3QgX3Zj c19kcGlfaXBfcGFyYW1zX3N0IGlwX3BhcmFtc19zdDsKdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlf ZGlzcGxheV9waXBlX3NvdXJjZV9wYXJhbXNfc3QgZGlzcGxheV9waXBlX3NvdXJjZV9wYXJhbXNf c3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfb3V0cHV0X3BhcmFtc19zdCBkaXNw bGF5X291dHB1dF9wYXJhbXNfc3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX3NjYWxlcl9yYXRp b19kZXB0aF9zdCBzY2FsZXJfcmF0aW9fZGVwdGhfc3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBp X3NjYWxlcl90YXBzX3N0IHNjYWxlcl90YXBzX3N0Owp0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9k aXNwbGF5X3BpcGVfZGVzdF9wYXJhbXNfc3QgZGlzcGxheV9waXBlX2Rlc3RfcGFyYW1zX3N0Owp0 eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3BpcGVfcGFyYW1zX3N0IGRpc3BsYXlfcGlw ZV9wYXJhbXNfc3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfY2xvY2tzX2FuZF9j Zmdfc3QgZGlzcGxheV9jbG9ja3NfYW5kX2NmZ19zdDsKdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlf ZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3Q7CnR5 cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGF0YV9ycV9taXNjX3BhcmFtc19zdCBkaXNw bGF5X2RhdGFfcnFfbWlzY19wYXJhbXNfc3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3Bs YXlfZGF0YV9ycV9zaXppbmdfcGFyYW1zX3N0IGRpc3BsYXlfZGF0YV9ycV9zaXppbmdfcGFyYW1z X3N0Owp0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RhdGFfcnFfZGxnX3BhcmFtc19z dCBkaXNwbGF5X2RhdGFfcnFfZGxnX3BhcmFtc19zdDsKdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlf ZGlzcGxheV9ycV9kbGdfcGFyYW1zX3N0IGRpc3BsYXlfcnFfZGxnX3BhcmFtc19zdDsKdHlwZWRl ZiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9zaXppbmdfcGFyYW1zX3N0IGRpc3BsYXlfcnFf c2l6aW5nX3BhcmFtc19zdDsKdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9taXNj X3BhcmFtc19zdCBkaXNwbGF5X3JxX21pc2NfcGFyYW1zX3N0Owp0eXBlZGVmIHN0cnVjdCBfdmNz X2RwaV9kaXNwbGF5X3JxX3BhcmFtc19zdCBkaXNwbGF5X3JxX3BhcmFtc19zdDsKdHlwZWRlZiBz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kbGdfcmVnc19zdCBkaXNwbGF5X2RsZ19yZWdzX3N0Owp0 eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9yZWdzX3N0IGRpc3BsYXlfdHR1X3Jl Z3Nfc3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGF0YV9ycV9yZWdzX3N0IGRp c3BsYXlfZGF0YV9ycV9yZWdzX3N0Owp0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3Jx X3JlZ3Nfc3QgZGlzcGxheV9ycV9yZWdzX3N0Owp0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNw bGF5X2RsZ19zeXNfcGFyYW1zX3N0IGRpc3BsYXlfZGxnX3N5c19wYXJhbXNfc3Q7CnR5cGVkZWYg c3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfYXJiX3BhcmFtc19zdCBkaXNwbGF5X2FyYl9wYXJhbXNf c3Q7CgpzdHJ1Y3QgX3Zjc19kcGlfdm9sdGFnZV9zY2FsaW5nX3N0IHsKIGludCBzdGF0ZTsKIGRv dWJsZSBkc2NjbGtfbWh6OwogZG91YmxlIGRjZmNsa19taHo7CiBkb3VibGUgc29jY2xrX21oejsK IGRvdWJsZSBwaHljbGtfZDE4X21oejsKIGRvdWJsZSBkcmFtX3NwZWVkX210czsKIGRvdWJsZSBm YWJyaWNjbGtfbWh6OwogZG91YmxlIGRpc3BjbGtfbWh6OwogZG91YmxlIHBoeWNsa19taHo7CiBk b3VibGUgZHBwY2xrX21oejsKIGRvdWJsZSBkdGJjbGtfbWh6Owp9OwoKc3RydWN0IF92Y3NfZHBp X3NvY19ib3VuZGluZ19ib3hfc3QgewogZG91YmxlIHNyX2V4aXRfdGltZV91czsKIGRvdWJsZSBz cl9lbnRlcl9wbHVzX2V4aXRfdGltZV91czsKIGRvdWJsZSB1cmdlbnRfbGF0ZW5jeV91czsKIGRv dWJsZSB1cmdlbnRfbGF0ZW5jeV9waXhlbF9kYXRhX29ubHlfdXM7CiBkb3VibGUgdXJnZW50X2xh dGVuY3lfcGl4ZWxfbWl4ZWRfd2l0aF92bV9kYXRhX3VzOwogZG91YmxlIHVyZ2VudF9sYXRlbmN5 X3ZtX2RhdGFfb25seV91czsKIGRvdWJsZSB3cml0ZWJhY2tfbGF0ZW5jeV91czsKIGRvdWJsZSBp ZGVhbF9kcmFtX2J3X2FmdGVyX3VyZ2VudF9wZXJjZW50OwogZG91YmxlIHBjdF9pZGVhbF9kcmFt X3NkcF9id19hZnRlcl91cmdlbnRfcGl4ZWxfb25seTsKIGRvdWJsZSBwY3RfaWRlYWxfZHJhbV9z ZHBfYndfYWZ0ZXJfdXJnZW50X3BpeGVsX2FuZF92bTsKIGRvdWJsZSBwY3RfaWRlYWxfZHJhbV9z ZHBfYndfYWZ0ZXJfdXJnZW50X3ZtX29ubHk7CiBkb3VibGUgbWF4X2F2Z19zZHBfYndfdXNlX25v cm1hbF9wZXJjZW50OwogZG91YmxlIG1heF9hdmdfZHJhbV9id191c2Vfbm9ybWFsX3BlcmNlbnQ7 CiB1bnNpZ25lZCBpbnQgbWF4X3JlcXVlc3Rfc2l6ZV9ieXRlczsKIGRvdWJsZSBkb3duc3ByZWFk X3BlcmNlbnQ7CiBkb3VibGUgZHJhbV9wYWdlX29wZW5fdGltZV9uczsKIGRvdWJsZSBkcmFtX3J3 X3R1cm5hcm91bmRfdGltZV9uczsKIGRvdWJsZSBkcmFtX3JldHVybl9idWZmZXJfcGVyX2NoYW5u ZWxfYnl0ZXM7CiBkb3VibGUgZHJhbV9jaGFubmVsX3dpZHRoX2J5dGVzOwogZG91YmxlIGZhYnJp Y19kYXRhcGF0aF90b19kY25fZGF0YV9yZXR1cm5fYnl0ZXM7CiBkb3VibGUgZGNuX2Rvd25zcHJl YWRfcGVyY2VudDsKIGRvdWJsZSBkaXNwY2xrX2RwcGNsa192Y29fc3BlZWRfbWh6OwogZG91Ymxl IGRmc192Y29fcGVyaW9kX3BzOwogdW5zaWduZWQgaW50IHVyZ2VudF9vdXRfb2Zfb3JkZXJfcmV0 dXJuX3Blcl9jaGFubmVsX3BpeGVsX29ubHlfYnl0ZXM7CiB1bnNpZ25lZCBpbnQgdXJnZW50X291 dF9vZl9vcmRlcl9yZXR1cm5fcGVyX2NoYW5uZWxfcGl4ZWxfYW5kX3ZtX2J5dGVzOwogdW5zaWdu ZWQgaW50IHVyZ2VudF9vdXRfb2Zfb3JkZXJfcmV0dXJuX3Blcl9jaGFubmVsX3ZtX29ubHlfYnl0 ZXM7CiB1bnNpZ25lZCBpbnQgcm91bmRfdHJpcF9waW5nX2xhdGVuY3lfZGNmY2xrX2N5Y2xlczsK IHVuc2lnbmVkIGludCB1cmdlbnRfb3V0X29mX29yZGVyX3JldHVybl9wZXJfY2hhbm5lbF9ieXRl czsKIHVuc2lnbmVkIGludCBjaGFubmVsX2ludGVybGVhdmVfYnl0ZXM7CiB1bnNpZ25lZCBpbnQg bnVtX2JhbmtzOwogdW5zaWduZWQgaW50IG51bV9jaGFuczsKIHVuc2lnbmVkIGludCB2bW1fcGFn ZV9zaXplX2J5dGVzOwogdW5zaWduZWQgaW50IGhvc3R2bV9taW5fcGFnZV9zaXplX2J5dGVzOwog dW5zaWduZWQgaW50IGdwdXZtX21pbl9wYWdlX3NpemVfYnl0ZXM7CiBkb3VibGUgZHJhbV9jbG9j a19jaGFuZ2VfbGF0ZW5jeV91czsKIGRvdWJsZSBkdW1teV9wc3RhdGVfbGF0ZW5jeV91czsKIGRv dWJsZSB3cml0ZWJhY2tfZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5jeV91czsKIHVuc2lnbmVkIGlu dCByZXR1cm5fYnVzX3dpZHRoX2J5dGVzOwogdW5zaWduZWQgaW50IHZvbHRhZ2Vfb3ZlcnJpZGU7 CiBkb3VibGUgeGZjX2J1c190cmFuc3BvcnRfdGltZV91czsKIGRvdWJsZSB4ZmNfeGJ1Zl9sYXRl bmN5X3RvbGVyYW5jZV91czsKIGludCB1c2VfdXJnZW50X2J1cnN0X2J3OwogdW5zaWduZWQgaW50 IG51bV9zdGF0ZXM7CiBzdHJ1Y3QgX3Zjc19kcGlfdm9sdGFnZV9zY2FsaW5nX3N0IGNsb2NrX2xp bWl0c1s4XTsKIGJvb2wgZG9fdXJnZW50X2xhdGVuY3lfYWRqdXN0bWVudDsKIGRvdWJsZSB1cmdl bnRfbGF0ZW5jeV9hZGp1c3RtZW50X2ZhYnJpY19jbG9ja19jb21wb25lbnRfdXM7CiBkb3VibGUg dXJnZW50X2xhdGVuY3lfYWRqdXN0bWVudF9mYWJyaWNfY2xvY2tfcmVmZXJlbmNlX21oejsKIGJv b2wgZGlzYWJsZV9kcmFtX2Nsb2NrX2NoYW5nZV92YWN0aXZlX3N1cHBvcnQ7Cn07CgpzdHJ1Y3Qg X3Zjc19kcGlfaXBfcGFyYW1zX3N0IHsKIGJvb2wgZ3B1dm1fZW5hYmxlOwogYm9vbCBob3N0dm1f ZW5hYmxlOwogdW5zaWduZWQgaW50IGdwdXZtX21heF9wYWdlX3RhYmxlX2xldmVsczsKIHVuc2ln bmVkIGludCBob3N0dm1fbWF4X3BhZ2VfdGFibGVfbGV2ZWxzOwogdW5zaWduZWQgaW50IGhvc3R2 bV9jYWNoZWRfcGFnZV90YWJsZV9sZXZlbHM7CiB1bnNpZ25lZCBpbnQgcHRlX2dyb3VwX3NpemVf Ynl0ZXM7CiB1bnNpZ25lZCBpbnQgbWF4X2ludGVyX2Rjbl90aWxlX3JlcGVhdGVyczsKIHVuc2ln bmVkIGludCBudW1fZHNjOwogdW5zaWduZWQgaW50IG9kbV9jYXBhYmxlOwogdW5zaWduZWQgaW50 IHJvYl9idWZmZXJfc2l6ZV9rYnl0ZXM7CiB1bnNpZ25lZCBpbnQgZGV0X2J1ZmZlcl9zaXplX2ti eXRlczsKIHVuc2lnbmVkIGludCBkcHRlX2J1ZmZlcl9zaXplX2luX3B0ZV9yZXFzX2x1bWE7CiB1 bnNpZ25lZCBpbnQgZHB0ZV9idWZmZXJfc2l6ZV9pbl9wdGVfcmVxc19jaHJvbWE7CiB1bnNpZ25l ZCBpbnQgcGRlX3Byb2NfYnVmZmVyX3NpemVfNjRrX3JlcXM7CiB1bnNpZ25lZCBpbnQgZHBwX291 dHB1dF9idWZmZXJfcGl4ZWxzOwogdW5zaWduZWQgaW50IG9wcF9vdXRwdXRfYnVmZmVyX2xpbmVz OwogdW5zaWduZWQgaW50IHBpeGVsX2NodW5rX3NpemVfa2J5dGVzOwogdW5zaWduZWQgY2hhciBw dGVfZW5hYmxlOwogdW5zaWduZWQgaW50IHB0ZV9jaHVua19zaXplX2tieXRlczsKIHVuc2lnbmVk IGludCBtZXRhX2NodW5rX3NpemVfa2J5dGVzOwogdW5zaWduZWQgaW50IHdyaXRlYmFja19jaHVu a19zaXplX2tieXRlczsKIHVuc2lnbmVkIGludCBsaW5lX2J1ZmZlcl9zaXplX2JpdHM7CiB1bnNp Z25lZCBpbnQgbWF4X2xpbmVfYnVmZmVyX2xpbmVzOwogdW5zaWduZWQgaW50IHdyaXRlYmFja19s dW1hX2J1ZmZlcl9zaXplX2tieXRlczsKIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfY2hyb21hX2J1 ZmZlcl9zaXplX2tieXRlczsKIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfY2hyb21hX2xpbmVfYnVm ZmVyX3dpZHRoX3BpeGVsczsKCiB1bnNpZ25lZCBpbnQgd3JpdGViYWNrX2ludGVyZmFjZV9idWZm ZXJfc2l6ZV9rYnl0ZXM7CiB1bnNpZ25lZCBpbnQgd3JpdGViYWNrX2xpbmVfYnVmZmVyX2J1ZmZl cl9zaXplOwoKIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfMTBicGM0MjBfc3VwcG9ydGVkOwogZG91 YmxlIHdyaXRlYmFja19tYXhfaHNjbF9yYXRpbzsKIGRvdWJsZSB3cml0ZWJhY2tfbWF4X3ZzY2xf cmF0aW87CiBkb3VibGUgd3JpdGViYWNrX21pbl9oc2NsX3JhdGlvOwogZG91YmxlIHdyaXRlYmFj a19taW5fdnNjbF9yYXRpbzsKIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfbWF4X2hzY2xfdGFwczsK IHVuc2lnbmVkIGludCB3cml0ZWJhY2tfbWF4X3ZzY2xfdGFwczsKIHVuc2lnbmVkIGludCB3cml0 ZWJhY2tfbGluZV9idWZmZXJfbHVtYV9idWZmZXJfc2l6ZTsKIHVuc2lnbmVkIGludCB3cml0ZWJh Y2tfbGluZV9idWZmZXJfY2hyb21hX2J1ZmZlcl9zaXplOwoKIHVuc2lnbmVkIGludCBtYXhfcGFn ZV90YWJsZV9sZXZlbHM7CiB1bnNpZ25lZCBpbnQgbWF4X251bV9kcHA7CiB1bnNpZ25lZCBpbnQg bWF4X251bV9vdGc7CiB1bnNpZ25lZCBpbnQgY3Vyc29yX2NodW5rX3NpemU7CiB1bnNpZ25lZCBp bnQgY3Vyc29yX2J1ZmZlcl9zaXplOwogdW5zaWduZWQgaW50IG1heF9udW1fd2I7CiB1bnNpZ25l ZCBpbnQgbWF4X2RjaHViX3BzY2xfYndfcGl4X3Blcl9jbGs7CiB1bnNpZ25lZCBpbnQgbWF4X3Bz Y2xfbGJfYndfcGl4X3Blcl9jbGs7CiB1bnNpZ25lZCBpbnQgbWF4X2xiX3ZzY2xfYndfcGl4X3Bl cl9jbGs7CiB1bnNpZ25lZCBpbnQgbWF4X3ZzY2xfaHNjbF9id19waXhfcGVyX2NsazsKIGRvdWJs ZSBtYXhfaHNjbF9yYXRpbzsKIGRvdWJsZSBtYXhfdnNjbF9yYXRpbzsKIHVuc2lnbmVkIGludCBo c2NsX211bHRzOwogdW5zaWduZWQgaW50IHZzY2xfbXVsdHM7CiB1bnNpZ25lZCBpbnQgbWF4X2hz Y2xfdGFwczsKIHVuc2lnbmVkIGludCBtYXhfdnNjbF90YXBzOwogdW5zaWduZWQgaW50IHhmY19z dXBwb3J0ZWQ7CiB1bnNpZ25lZCBpbnQgcHRvaV9zdXBwb3J0ZWQ7CiB1bnNpZ25lZCBpbnQgZ2Z4 N19jb21wYXRfdGlsaW5nX3N1cHBvcnRlZDsKCiBib29sIG9kbV9jb21iaW5lXzR0bzFfc3VwcG9y dGVkOwogYm9vbCBkeW5hbWljX21ldGFkYXRhX3ZtX2VuYWJsZWQ7CiB1bnNpZ25lZCBpbnQgbWF4 X251bV9oZG1pX2ZybF9vdXRwdXRzOwoKIHVuc2lnbmVkIGludCB4ZmNfZmlsbF9jb25zdGFudF9i eXRlczsKIGRvdWJsZSBkaXNwY2xrX3JhbXBfbWFyZ2luX3BlcmNlbnQ7CiBkb3VibGUgeGZjX2Zp bGxfYndfb3ZlcmhlYWRfcGVyY2VudDsKIGRvdWJsZSB1bmRlcnNjYW5fZmFjdG9yOwogdW5zaWdu ZWQgaW50IG1pbl92YmxhbmtfbGluZXM7CiB1bnNpZ25lZCBpbnQgZHBwY2xrX2RlbGF5X3N1YnRv dGFsOwogdW5zaWduZWQgaW50IGRpc3BjbGtfZGVsYXlfc3VidG90YWw7CiB1bnNpZ25lZCBpbnQg ZGNmY2xrX2NzdGF0ZV9sYXRlbmN5OwogdW5zaWduZWQgaW50IGRwcGNsa19kZWxheV9zY2w7CiB1 bnNpZ25lZCBpbnQgZHBwY2xrX2RlbGF5X3NjbF9sYl9vbmx5OwogdW5zaWduZWQgaW50IGRwcGNs a19kZWxheV9jbnZjX2Zvcm1hdHRlcjsKIHVuc2lnbmVkIGludCBkcHBjbGtfZGVsYXlfY252Y19j dXJzb3I7CiB1bnNpZ25lZCBpbnQgaXNfbGluZV9idWZmZXJfYnBwX2ZpeGVkOwogdW5zaWduZWQg aW50IGxpbmVfYnVmZmVyX2ZpeGVkX2JwcDsKIHVuc2lnbmVkIGludCBkY2Nfc3VwcG9ydGVkOwoK IHVuc2lnbmVkIGludCBJc0xpbmVCdWZmZXJCcHBGaXhlZDsKIHVuc2lnbmVkIGludCBMaW5lQnVm ZmVyRml4ZWRCcHA7CiB1bnNpZ25lZCBpbnQgY2FuX3ZzdGFydHVwX2xpbmVzX2V4Y2VlZF92c3lu Y19wbHVzX2JhY2tfcG9yY2hfbGluZXNfbWludXNfb25lOwogdW5zaWduZWQgaW50IGJ1Z19mb3Jj aW5nX0xDX3JlcV9zYW1lX3NpemVfZml4ZWQ7Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV94 ZmNfcGFyYW1zX3N0IHsKIGRvdWJsZSB4ZmNfdHNsdl92cmVhZHlfb2Zmc2V0X3VzOwogZG91Ymxl IHhmY190c2x2X3Z1cGRhdGVfd2lkdGhfdXM7CiBkb3VibGUgeGZjX3RzbHZfdnVwZGF0ZV9vZmZz ZXRfdXM7CiBpbnQgeGZjX3Nsdl9jaHVua19zaXplX2J5dGVzOwp9OwoKc3RydWN0IF92Y3NfZHBp X2Rpc3BsYXlfcGlwZV9zb3VyY2VfcGFyYW1zX3N0IHsKIGludCBzb3VyY2VfZm9ybWF0OwogdW5z aWduZWQgY2hhciBkY2M7CiB1bnNpZ25lZCBpbnQgZGNjX3JhdGU7CiB1bnNpZ25lZCBpbnQgZGNj X3JhdGVfY2hyb21hOwogdW5zaWduZWQgY2hhciBkY2NfdXNlX2dsb2JhbDsKIHVuc2lnbmVkIGNo YXIgdm07CiBib29sIGdwdXZtOwogYm9vbCBob3N0dm07CiBib29sIGdwdXZtX2xldmVsc19mb3Jj ZV9lbjsKIHVuc2lnbmVkIGludCBncHV2bV9sZXZlbHNfZm9yY2U7CiBib29sIGhvc3R2bV9sZXZl bHNfZm9yY2VfZW47CiB1bnNpZ25lZCBpbnQgaG9zdHZtX2xldmVsc19mb3JjZTsKIGludCBzb3Vy Y2Vfc2NhbjsKIGludCBzd19tb2RlOwogaW50IG1hY3JvX3RpbGVfc2l6ZTsKIHVuc2lnbmVkIGlu dCBzdXJmYWNlX3dpZHRoX3k7CiB1bnNpZ25lZCBpbnQgc3VyZmFjZV9oZWlnaHRfeTsKIHVuc2ln bmVkIGludCBzdXJmYWNlX3dpZHRoX2M7CiB1bnNpZ25lZCBpbnQgc3VyZmFjZV9oZWlnaHRfYzsK IHVuc2lnbmVkIGludCB2aWV3cG9ydF93aWR0aDsKIHVuc2lnbmVkIGludCB2aWV3cG9ydF9oZWln aHQ7CiB1bnNpZ25lZCBpbnQgdmlld3BvcnRfeV95OwogdW5zaWduZWQgaW50IHZpZXdwb3J0X3lf YzsKIHVuc2lnbmVkIGludCB2aWV3cG9ydF93aWR0aF9jOwogdW5zaWduZWQgaW50IHZpZXdwb3J0 X2hlaWdodF9jOwogdW5zaWduZWQgaW50IGRhdGFfcGl0Y2g7CiB1bnNpZ25lZCBpbnQgZGF0YV9w aXRjaF9jOwogdW5zaWduZWQgaW50IG1ldGFfcGl0Y2g7CiB1bnNpZ25lZCBpbnQgbWV0YV9waXRj aF9jOwogdW5zaWduZWQgaW50IGN1cjBfc3JjX3dpZHRoOwogaW50IGN1cjBfYnBwOwogdW5zaWdu ZWQgaW50IGN1cjFfc3JjX3dpZHRoOwogaW50IGN1cjFfYnBwOwogaW50IG51bV9jdXJzb3JzOwog dW5zaWduZWQgY2hhciBpc19oc3BsaXQ7CiB1bnNpZ25lZCBjaGFyIGR5bmFtaWNfbWV0YWRhdGFf ZW5hYmxlOwogdW5zaWduZWQgaW50IGR5bmFtaWNfbWV0YWRhdGFfbGluZXNfYmVmb3JlX2FjdGl2 ZTsKIHVuc2lnbmVkIGludCBkeW5hbWljX21ldGFkYXRhX3htaXRfYnl0ZXM7CiB1bnNpZ25lZCBp bnQgaHNwbGl0X2dycDsKIHVuc2lnbmVkIGNoYXIgeGZjX2VuYWJsZTsKIHVuc2lnbmVkIGNoYXIg eGZjX3NsYXZlOwogdW5zaWduZWQgY2hhciBpbW1lZGlhdGVfZmxpcDsKIHN0cnVjdCBfdmNzX2Rw aV9kaXNwbGF5X3hmY19wYXJhbXNfc3QgeGZjX3BhcmFtczsKCiB1bnNpZ25lZCBjaGFyIHZfdG90 YWxfbWluOwogdW5zaWduZWQgY2hhciB2X3RvdGFsX21heDsKfTsKc3RydWN0IHdyaXRlYmFja19z dCB7CiBpbnQgd2Jfc3JjX2hlaWdodDsKIGludCB3Yl9zcmNfd2lkdGg7CiBpbnQgd2JfZHN0X3dp ZHRoOwogaW50IHdiX2RzdF9oZWlnaHQ7CiBpbnQgd2JfcGl4ZWxfZm9ybWF0OwogaW50IHdiX2h0 YXBzX2x1bWE7CiBpbnQgd2JfdnRhcHNfbHVtYTsKIGludCB3Yl9odGFwc19jaHJvbWE7CiBpbnQg d2JfdnRhcHNfY2hyb21hOwogZG91YmxlIHdiX2hyYXRpbzsKIGRvdWJsZSB3Yl92cmF0aW87Cn07 CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9vdXRwdXRfcGFyYW1zX3N0IHsKIGludCBkcF9sYW5l czsKIGRvdWJsZSBvdXRwdXRfYnBwOwogaW50IGRzY19lbmFibGU7CiBpbnQgd2JfZW5hYmxlOwog aW50IG51bV9hY3RpdmVfd2I7CiBpbnQgb3V0cHV0X2JwYzsKIGludCBvdXRwdXRfdHlwZTsKIGlu dCBvdXRwdXRfZm9ybWF0OwogaW50IGRzY19zbGljZXM7CiBpbnQgbWF4X2F1ZGlvX3NhbXBsZV9y YXRlOwogc3RydWN0IHdyaXRlYmFja19zdCB3YjsKfTsKCnN0cnVjdCBfdmNzX2RwaV9zY2FsZXJf cmF0aW9fZGVwdGhfc3QgewogZG91YmxlIGhzY2xfcmF0aW87CiBkb3VibGUgdnNjbF9yYXRpbzsK IGRvdWJsZSBoc2NsX3JhdGlvX2M7CiBkb3VibGUgdnNjbF9yYXRpb19jOwogZG91YmxlIHZpbml0 OwogZG91YmxlIHZpbml0X2M7CiBkb3VibGUgdmluaXRfYm90OwogZG91YmxlIHZpbml0X2JvdF9j OwogaW50IGxiX2RlcHRoOwogaW50IHNjbF9lbmFibGU7Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfc2Nh bGVyX3RhcHNfc3QgewogdW5zaWduZWQgaW50IGh0YXBzOwogdW5zaWduZWQgaW50IHZ0YXBzOwog dW5zaWduZWQgaW50IGh0YXBzX2M7CiB1bnNpZ25lZCBpbnQgdnRhcHNfYzsKfTsKCnN0cnVjdCBf dmNzX2RwaV9kaXNwbGF5X3BpcGVfZGVzdF9wYXJhbXNfc3QgewogdW5zaWduZWQgaW50IHJlY291 dF93aWR0aDsKIHVuc2lnbmVkIGludCByZWNvdXRfaGVpZ2h0OwogdW5zaWduZWQgaW50IGZ1bGxf cmVjb3V0X3dpZHRoOwogdW5zaWduZWQgaW50IGZ1bGxfcmVjb3V0X2hlaWdodDsKIHVuc2lnbmVk IGludCBoYmxhbmtfc3RhcnQ7CiB1bnNpZ25lZCBpbnQgaGJsYW5rX2VuZDsKIHVuc2lnbmVkIGlu dCB2Ymxhbmtfc3RhcnQ7CiB1bnNpZ25lZCBpbnQgdmJsYW5rX2VuZDsKIHVuc2lnbmVkIGludCBo dG90YWw7CiB1bnNpZ25lZCBpbnQgdnRvdGFsOwogdW5zaWduZWQgaW50IHZhY3RpdmU7CiB1bnNp Z25lZCBpbnQgaGFjdGl2ZTsKIHVuc2lnbmVkIGludCB2c3RhcnR1cF9zdGFydDsKIHVuc2lnbmVk IGludCB2dXBkYXRlX29mZnNldDsKIHVuc2lnbmVkIGludCB2dXBkYXRlX3dpZHRoOwogdW5zaWdu ZWQgaW50IHZyZWFkeV9vZmZzZXQ7CiB1bnNpZ25lZCBjaGFyIGludGVybGFjZWQ7CiB1bnNpZ25l ZCBjaGFyIGVtYmVkZGVkOwogZG91YmxlIHBpeGVsX3JhdGVfbWh6OwogdW5zaWduZWQgY2hhciBz eW5jaHJvbml6ZWRfdmJsYW5rX2FsbF9wbGFuZXM7CiB1bnNpZ25lZCBjaGFyIG90Z19pbnN0Owog dW5zaWduZWQgaW50IG9kbV9jb21iaW5lOwogdW5zaWduZWQgY2hhciB1c2VfbWF4aW11bV92c3Rh cnR1cDsKIHVuc2lnbmVkIGludCB2dG90YWxfbWF4OwogdW5zaWduZWQgaW50IHZ0b3RhbF9taW47 Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9waXBlX3BhcmFtc19zdCB7CiBkaXNwbGF5X3Bp cGVfc291cmNlX3BhcmFtc19zdCBzcmM7CiBkaXNwbGF5X3BpcGVfZGVzdF9wYXJhbXNfc3QgZGVz dDsKIHNjYWxlcl9yYXRpb19kZXB0aF9zdCBzY2FsZV9yYXRpb19kZXB0aDsKIHNjYWxlcl90YXBz X3N0IHNjYWxlX3RhcHM7Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9jbG9ja3NfYW5kX2Nm Z19zdCB7CiBpbnQgdm9sdGFnZTsKIGRvdWJsZSBkcHBjbGtfbWh6OwogZG91YmxlIHJlZmNsa19t aHo7CiBkb3VibGUgZGlzcGNsa19taHo7CiBkb3VibGUgZGNmY2xrX21oejsKIGRvdWJsZSBzb2Nj bGtfbWh6Owp9OwoKc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0IHsK IGRpc3BsYXlfcGlwZV9wYXJhbXNfc3QgcGlwZTsKIGRpc3BsYXlfb3V0cHV0X3BhcmFtc19zdCBk b3V0OwogZGlzcGxheV9jbG9ja3NfYW5kX2NmZ19zdCBjbGtzX2NmZzsKfTsKCnN0cnVjdCBfdmNz X2RwaV9kaXNwbGF5X2RhdGFfcnFfbWlzY19wYXJhbXNfc3QgewogdW5zaWduZWQgaW50IGZ1bGxf c3dhdGhfYnl0ZXM7CiB1bnNpZ25lZCBpbnQgc3RvcmVkX3N3YXRoX2J5dGVzOwogdW5zaWduZWQg aW50IGJsazI1Nl9oZWlnaHQ7CiB1bnNpZ25lZCBpbnQgYmxrMjU2X3dpZHRoOwogdW5zaWduZWQg aW50IHJlcV9oZWlnaHQ7CiB1bnNpZ25lZCBpbnQgcmVxX3dpZHRoOwp9OwoKc3RydWN0IF92Y3Nf ZHBpX2Rpc3BsYXlfZGF0YV9ycV9zaXppbmdfcGFyYW1zX3N0IHsKIHVuc2lnbmVkIGludCBjaHVu a19ieXRlczsKIHVuc2lnbmVkIGludCBtaW5fY2h1bmtfYnl0ZXM7CiB1bnNpZ25lZCBpbnQgbWV0 YV9jaHVua19ieXRlczsKIHVuc2lnbmVkIGludCBtaW5fbWV0YV9jaHVua19ieXRlczsKIHVuc2ln bmVkIGludCBtcHRlX2dyb3VwX2J5dGVzOwogdW5zaWduZWQgaW50IGRwdGVfZ3JvdXBfYnl0ZXM7 Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kYXRhX3JxX2RsZ19wYXJhbXNfc3QgewogdW5z aWduZWQgaW50IHN3YXRoX3dpZHRoX3ViOwogdW5zaWduZWQgaW50IHN3YXRoX2hlaWdodDsKIHVu c2lnbmVkIGludCByZXFfcGVyX3N3YXRoX3ViOwogdW5zaWduZWQgaW50IG1ldGFfcHRlX2J5dGVz X3Blcl9mcmFtZV91YjsKIHVuc2lnbmVkIGludCBkcHRlX3JlcV9wZXJfcm93X3ViOwogdW5zaWdu ZWQgaW50IGRwdGVfZ3JvdXBzX3Blcl9yb3dfdWI7CiB1bnNpZ25lZCBpbnQgZHB0ZV9yb3dfaGVp Z2h0OwogdW5zaWduZWQgaW50IGRwdGVfYnl0ZXNfcGVyX3Jvd191YjsKIHVuc2lnbmVkIGludCBt ZXRhX2NodW5rc19wZXJfcm93X3ViOwogdW5zaWduZWQgaW50IG1ldGFfcmVxX3Blcl9yb3dfdWI7 CiB1bnNpZ25lZCBpbnQgbWV0YV9yb3dfaGVpZ2h0OwogdW5zaWduZWQgaW50IG1ldGFfYnl0ZXNf cGVyX3Jvd191YjsKfTsKCnN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3JxX2RsZ19wYXJhbXNfc3Qg ewogZGlzcGxheV9kYXRhX3JxX2RsZ19wYXJhbXNfc3QgcnFfbDsKIGRpc3BsYXlfZGF0YV9ycV9k bGdfcGFyYW1zX3N0IHJxX2M7Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9zaXppbmdf cGFyYW1zX3N0IHsKIGRpc3BsYXlfZGF0YV9ycV9zaXppbmdfcGFyYW1zX3N0IHJxX2w7CiBkaXNw bGF5X2RhdGFfcnFfc2l6aW5nX3BhcmFtc19zdCBycV9jOwp9OwoKc3RydWN0IF92Y3NfZHBpX2Rp c3BsYXlfcnFfbWlzY19wYXJhbXNfc3QgewogZGlzcGxheV9kYXRhX3JxX21pc2NfcGFyYW1zX3N0 IHJxX2w7CiBkaXNwbGF5X2RhdGFfcnFfbWlzY19wYXJhbXNfc3QgcnFfYzsKfTsKCnN0cnVjdCBf dmNzX2RwaV9kaXNwbGF5X3JxX3BhcmFtc19zdCB7CiB1bnNpZ25lZCBjaGFyIHl1djQyMDsKIHVu c2lnbmVkIGNoYXIgeXV2NDIwXzEwYnBjOwogdW5zaWduZWQgY2hhciByZ2JlX2FscGhhOwogZGlz cGxheV9ycV9taXNjX3BhcmFtc19zdCBtaXNjOwogZGlzcGxheV9ycV9zaXppbmdfcGFyYW1zX3N0 IHNpemluZzsKIGRpc3BsYXlfcnFfZGxnX3BhcmFtc19zdCBkbGc7Cn07CgpzdHJ1Y3QgX3Zjc19k cGlfZGlzcGxheV9kbGdfcmVnc19zdCB7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX2hfYmxhbmtfZW5k OwogdW5zaWduZWQgaW50IGRsZ192YmxhbmtfZW5kOwogdW5zaWduZWQgaW50IG1pbl9kc3RfeV9u ZXh0X3N0YXJ0OwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfaHRvdGFsOwogdW5zaWduZWQgaW50 IHJlZmN5Y194X2FmdGVyX3NjYWxlcjsKIHVuc2lnbmVkIGludCBkc3RfeV9hZnRlcl9zY2FsZXI7 CiB1bnNpZ25lZCBpbnQgZHN0X3lfcHJlZmV0Y2g7CiB1bnNpZ25lZCBpbnQgZHN0X3lfcGVyX3Zt X3ZibGFuazsKIHVuc2lnbmVkIGludCBkc3RfeV9wZXJfcm93X3ZibGFuazsKIHVuc2lnbmVkIGlu dCBkc3RfeV9wZXJfdm1fZmxpcDsKIHVuc2lnbmVkIGludCBkc3RfeV9wZXJfcm93X2ZsaXA7CiB1 bnNpZ25lZCBpbnQgcmVmX2ZyZXFfdG9fcGl4X2ZyZXE7CiB1bnNpZ25lZCBpbnQgdnJhdGlvX3By ZWZldGNoOwogdW5zaWduZWQgaW50IHZyYXRpb19wcmVmZXRjaF9jOwogdW5zaWduZWQgaW50IHJl ZmN5Y19wZXJfcHRlX2dyb3VwX3ZibGFua19sOwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfcHRl X2dyb3VwX3ZibGFua19jOwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfbWV0YV9jaHVua192Ymxh bmtfbDsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX21ldGFfY2h1bmtfdmJsYW5rX2M7CiB1bnNp Z25lZCBpbnQgcmVmY3ljX3Blcl9wdGVfZ3JvdXBfZmxpcF9sOwogdW5zaWduZWQgaW50IHJlZmN5 Y19wZXJfcHRlX2dyb3VwX2ZsaXBfYzsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX21ldGFfY2h1 bmtfZmxpcF9sOwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfbWV0YV9jaHVua19mbGlwX2M7CiB1 bnNpZ25lZCBpbnQgZHN0X3lfcGVyX3B0ZV9yb3dfbm9tX2w7CiB1bnNpZ25lZCBpbnQgZHN0X3lf cGVyX3B0ZV9yb3dfbm9tX2M7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9wdGVfZ3JvdXBfbm9t X2w7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9wdGVfZ3JvdXBfbm9tX2M7CiB1bnNpZ25lZCBp bnQgZHN0X3lfcGVyX21ldGFfcm93X25vbV9sOwogdW5zaWduZWQgaW50IGRzdF95X3Blcl9tZXRh X3Jvd19ub21fYzsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX21ldGFfY2h1bmtfbm9tX2w7CiB1 bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9tZXRhX2NodW5rX25vbV9jOwogdW5zaWduZWQgaW50IHJl ZmN5Y19wZXJfbGluZV9kZWxpdmVyeV9wcmVfbDsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX2xp bmVfZGVsaXZlcnlfcHJlX2M7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9saW5lX2RlbGl2ZXJ5 X2w7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9saW5lX2RlbGl2ZXJ5X2M7CiB1bnNpZ25lZCBp bnQgY2h1bmtfaGRsX2FkanVzdF9jdXIwOwogdW5zaWduZWQgaW50IGNodW5rX2hkbF9hZGp1c3Rf Y3VyMTsKIHVuc2lnbmVkIGludCB2cmVhZHlfYWZ0ZXJfdmNvdW50MDsKIHVuc2lnbmVkIGludCBk c3RfeV9vZmZzZXRfY3VyMDsKIHVuc2lnbmVkIGludCBkc3RfeV9vZmZzZXRfY3VyMTsKIHVuc2ln bmVkIGludCB4ZmNfcmVnX3RyYW5zZmVyX2RlbGF5OwogdW5zaWduZWQgaW50IHhmY19yZWdfcHJl Y2hhcmdlX2RlbGF5OwogdW5zaWduZWQgaW50IHhmY19yZWdfcmVtb3RlX3N1cmZhY2VfZmxpcF9s YXRlbmN5OwogdW5zaWduZWQgaW50IHhmY19yZWdfcHJlZmV0Y2hfbWFyZ2luOwogdW5zaWduZWQg aW50IGRzdF95X2RlbHRhX2RycV9saW1pdDsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX3ZtX2dy b3VwX3ZibGFuazsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX3ZtX2dyb3VwX2ZsaXA7CiB1bnNp Z25lZCBpbnQgcmVmY3ljX3Blcl92bV9yZXFfdmJsYW5rOwogdW5zaWduZWQgaW50IHJlZmN5Y19w ZXJfdm1fcmVxX2ZsaXA7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl92bV9kbWRhdGE7Cn07Cgpz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV90dHVfcmVnc19zdCB7CiB1bnNpZ25lZCBpbnQgcW9zX2xl dmVsX2xvd193bTsKIHVuc2lnbmVkIGludCBxb3NfbGV2ZWxfaGlnaF93bTsKIHVuc2lnbmVkIGlu dCBtaW5fdHR1X3ZibGFuazsKIHVuc2lnbmVkIGludCBxb3NfbGV2ZWxfZmxpcDsKIHVuc2lnbmVk IGludCByZWZjeWNfcGVyX3JlcV9kZWxpdmVyeV9sOwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJf cmVxX2RlbGl2ZXJ5X2M7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9yZXFfZGVsaXZlcnlfY3Vy MDsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX3JlcV9kZWxpdmVyeV9jdXIxOwogdW5zaWduZWQg aW50IHJlZmN5Y19wZXJfcmVxX2RlbGl2ZXJ5X3ByZV9sOwogdW5zaWduZWQgaW50IHJlZmN5Y19w ZXJfcmVxX2RlbGl2ZXJ5X3ByZV9jOwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfcmVxX2RlbGl2 ZXJ5X3ByZV9jdXIwOwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfcmVxX2RlbGl2ZXJ5X3ByZV9j dXIxOwogdW5zaWduZWQgaW50IHFvc19sZXZlbF9maXhlZF9sOwogdW5zaWduZWQgaW50IHFvc19s ZXZlbF9maXhlZF9jOwogdW5zaWduZWQgaW50IHFvc19sZXZlbF9maXhlZF9jdXIwOwogdW5zaWdu ZWQgaW50IHFvc19sZXZlbF9maXhlZF9jdXIxOwogdW5zaWduZWQgaW50IHFvc19yYW1wX2Rpc2Fi bGVfbDsKIHVuc2lnbmVkIGludCBxb3NfcmFtcF9kaXNhYmxlX2M7CiB1bnNpZ25lZCBpbnQgcW9z X3JhbXBfZGlzYWJsZV9jdXIwOwogdW5zaWduZWQgaW50IHFvc19yYW1wX2Rpc2FibGVfY3VyMTsK fTsKCnN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RhdGFfcnFfcmVnc19zdCB7CiB1bnNpZ25lZCBp bnQgY2h1bmtfc2l6ZTsKIHVuc2lnbmVkIGludCBtaW5fY2h1bmtfc2l6ZTsKIHVuc2lnbmVkIGlu dCBtZXRhX2NodW5rX3NpemU7CiB1bnNpZ25lZCBpbnQgbWluX21ldGFfY2h1bmtfc2l6ZTsKIHVu c2lnbmVkIGludCBkcHRlX2dyb3VwX3NpemU7CiB1bnNpZ25lZCBpbnQgbXB0ZV9ncm91cF9zaXpl OwogdW5zaWduZWQgaW50IHN3YXRoX2hlaWdodDsKIHVuc2lnbmVkIGludCBwdGVfcm93X2hlaWdo dF9saW5lYXI7Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9yZWdzX3N0IHsKIGRpc3Bs YXlfZGF0YV9ycV9yZWdzX3N0IHJxX3JlZ3NfbDsKIGRpc3BsYXlfZGF0YV9ycV9yZWdzX3N0IHJx X3JlZ3NfYzsKIHVuc2lnbmVkIGludCBkcnFfZXhwYW5zaW9uX21vZGU7CiB1bnNpZ25lZCBpbnQg cHJxX2V4cGFuc2lvbl9tb2RlOwogdW5zaWduZWQgaW50IG1ycV9leHBhbnNpb25fbW9kZTsKIHVu c2lnbmVkIGludCBjcnFfZXhwYW5zaW9uX21vZGU7CiB1bnNpZ25lZCBpbnQgcGxhbmUxX2Jhc2Vf YWRkcmVzczsKfTsKCnN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RsZ19zeXNfcGFyYW1zX3N0IHsK IGRvdWJsZSB0X21jbGtfd21fdXM7CiBkb3VibGUgdF91cmdfd21fdXM7CiBkb3VibGUgdF9zcl93 bV91czsKIGRvdWJsZSB0X2V4dHJhX3VzOwogZG91YmxlIG1lbV90cmlwX3VzOwogZG91YmxlIHRf c3J4X2RlbGF5X3VzOwogZG91YmxlIGRlZXBzbGVlcF9kY2ZjbGtfbWh6OwogZG91YmxlIHRvdGFs X2ZsaXBfYnc7CiB1bnNpZ25lZCBpbnQgdG90YWxfZmxpcF9ieXRlczsKfTsKCnN0cnVjdCBfdmNz X2RwaV9kaXNwbGF5X2FyYl9wYXJhbXNfc3QgewogaW50IG1heF9yZXFfb3V0c3RhbmRpbmc7CiBp bnQgbWluX3JlcV9vdXRzdGFuZGluZzsKIGludCBzYXRfbGV2ZWxfdXM7Cn07CiMgMzIgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZG1sX2NvbW1vbl9kZWZz LmgiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1s L2Rpc3BsYXlfbW9kZV9lbnVtcy5oIiAxCiMgMjggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9kbWwvZGlzcGxheV9tb2RlX2VudW1zLmgiCmVudW0gb3V0cHV0X2Vu Y29kZXJfY2xhc3MgewogZG1fZHAgPSAwLCBkbV9oZG1pID0gMSwgZG1fd2IgPSAyLCBkbV9lZHAK fTsKZW51bSBvdXRwdXRfZm9ybWF0X2NsYXNzIHsKIGRtXzQ0NCA9IDAsIGRtXzQyMCA9IDEsIGRt X240MjIsIGRtX3M0MjIKfTsKZW51bSBzb3VyY2VfZm9ybWF0X2NsYXNzIHsKIGRtXzQ0NF8xNiA9 IDAsCiBkbV80NDRfMzIgPSAxLAogZG1fNDQ0XzY0ID0gMiwKIGRtXzQyMF84ID0gMywKIGRtXzQy MF8xMCA9IDQsCiBkbV80MjBfMTIgPSA1LAogZG1fNDIyXzggPSA2LAogZG1fNDIyXzEwID0gNywK IGRtXzQ0NF84ID0gOCwKIGRtX21vbm9fOCA9IGRtXzQ0NF84LAogZG1fbW9ub18xNiA9IGRtXzQ0 NF8xNiwKIGRtX3JnYmUgPSA5LAogZG1fcmdiZV9hbHBoYSA9IDEwLAp9OwplbnVtIG91dHB1dF9i cGNfY2xhc3MgewogZG1fb3V0XzYgPSAwLCBkbV9vdXRfOCA9IDEsIGRtX291dF8xMCA9IDIsIGRt X291dF8xMiA9IDMsIGRtX291dF8xNiA9IDQKfTsKZW51bSBzY2FuX2RpcmVjdGlvbl9jbGFzcyB7 CiBkbV9ob3J6ID0gMCwgZG1fdmVydCA9IDEKfTsKZW51bSBkbV9zd2l6emxlX21vZGUgewogZG1f c3dfbGluZWFyID0gMCwKIGRtX3N3XzI1NmJfcyA9IDEsCiBkbV9zd18yNTZiX2QgPSAyLAogZG1f c3dfU1BBUkVfMCA9IDMsCiBkbV9zd19TUEFSRV8xID0gNCwKIGRtX3N3XzRrYl9zID0gNSwKIGRt X3N3XzRrYl9kID0gNiwKIGRtX3N3X1NQQVJFXzIgPSA3LAogZG1fc3dfU1BBUkVfMyA9IDgsCiBk bV9zd182NGtiX3MgPSA5LAogZG1fc3dfNjRrYl9kID0gMTAsCiBkbV9zd19TUEFSRV80ID0gMTEs CiBkbV9zd19TUEFSRV81ID0gMTIsCiBkbV9zd192YXJfcyA9IDEzLAogZG1fc3dfdmFyX2QgPSAx NCwKIGRtX3N3X1NQQVJFXzYgPSAxNSwKIGRtX3N3X1NQQVJFXzcgPSAxNiwKIGRtX3N3XzY0a2Jf c190ID0gMTcsCiBkbV9zd182NGtiX2RfdCA9IDE4LAogZG1fc3dfU1BBUkVfMTAgPSAxOSwKIGRt X3N3X1NQQVJFXzExID0gMjAsCiBkbV9zd180a2Jfc194ID0gMjEsCiBkbV9zd180a2JfZF94ID0g MjIsCiBkbV9zd19TUEFSRV8xMiA9IDIzLAogZG1fc3dfU1BBUkVfMTMgPSAyNCwKIGRtX3N3XzY0 a2Jfc194ID0gMjUsCiBkbV9zd182NGtiX2RfeCA9IDI2LAogZG1fc3dfU1BBUkVfMTQgPSAyNywK IGRtX3N3X1NQQVJFXzE1ID0gMjgsCiBkbV9zd192YXJfc194ID0gMjksCiBkbV9zd192YXJfZF94 ID0gMzAsCiBkbV9zd182NGtiX3JfeCwKIGRtX3N3X2dmeDdfMmRfdGhpbl9sX3ZwLAogZG1fc3df Z2Z4N18yZF90aGluX2dsLAp9OwplbnVtIGxiX2RlcHRoIHsKIGRtX2xiXzEwID0gMCwgZG1fbGJf OCA9IDEsIGRtX2xiXzYgPSAyLCBkbV9sYl8xMiA9IDMsIGRtX2xiXzE2ID0gNCwKIGRtX2xiXzE5 ID0gNQp9OwplbnVtIHZvbHRhZ2Vfc3RhdGUgewogZG1fdm1pbiA9IDAsIGRtX3ZtaWQgPSAxLCBk bV92bm9tID0gMiwgZG1fdm1heCA9IDMKfTsKZW51bSBzb3VyY2VfbWFjcm9fdGlsZV9zaXplIHsK IGRtXzRrX3RpbGUgPSAwLCBkbV82NGtfdGlsZSA9IDEsIGRtXzI1NmtfdGlsZSA9IDIKfTsKZW51 bSBjdXJzb3JfYnBwIHsKIGRtX2N1cl8yYml0ID0gMCwgZG1fY3VyXzMyYml0ID0gMSwgZG1fY3Vy XzY0Yml0ID0gMgp9OwplbnVtIGNsb2NrX2NoYW5nZV9zdXBwb3J0IHsKIGRtX2RyYW1fY2xvY2tf Y2hhbmdlX3VuaW5pdGlhbGl6ZWQgPSAwLAogZG1fZHJhbV9jbG9ja19jaGFuZ2VfdmFjdGl2ZSwK IGRtX2RyYW1fY2xvY2tfY2hhbmdlX3ZibGFuaywKIGRtX2RyYW1fY2xvY2tfY2hhbmdlX3Vuc3Vw cG9ydGVkCn07CgplbnVtIG91dHB1dF9zdGFuZGFyZCB7CiBkbV9zdGRfdW5pbml0aWFsaXplZCA9 IDAsIGRtX3N0ZF9jdnRyMiwgZG1fc3RkX2N2dAp9OwoKZW51bSBtcGNfY29tYmluZV9hZmZpbml0 eSB7CiBkbV9tcGNfYWx3YXlzX3doZW5fcG9zc2libGUsCiBkbV9tcGNfcmVkdWNlX3ZvbHRhZ2Us CiBkbV9tcGNfcmVkdWNlX3ZvbHRhZ2VfYW5kX2Nsb2NrcywKIGRtX21wY19uZXZlcgp9OwoKZW51 bSBSZXF1ZXN0VHlwZSB7CiBSRVFfMjU2Qnl0ZXMsIFJFUV8xMjhCeXRlc05vbkNvbnRpZ3VvdXMs IFJFUV8xMjhCeXRlc0NvbnRpZ3VvdXMsIFJFUV9OQQp9OwoKZW51bSBzZWxmX3JlZnJlc2hfYWZm aW5pdHkgewogZG1fdHJ5X3RvX2FsbG93X3NlbGZfcmVmcmVzaF9hbmRfbWNsa19zd2l0Y2gsCiBk bV9hbGxvd19zZWxmX3JlZnJlc2hfYW5kX21jbGtfc3dpdGNoLAogZG1fYWxsb3dfc2VsZl9yZWZy ZXNoLAogZG1fbmVpdGhlcl9zZWxmX3JlZnJlc2hfbm9yX21jbGtfc3dpdGNoCn07CgplbnVtIGRt X3ZhbGlkYXRpb25fc3RhdHVzIHsKIERNTF9WQUxJREFUSU9OX09LLAogRE1MX0ZBSUxfU0NBTEVf UkFUSU9fVEFQLAogRE1MX0ZBSUxfU09VUkNFX1BJWEVMX0ZPUk1BVCwKIERNTF9GQUlMX1ZJRVdQ T1JUX1NJWkUsCiBETUxfRkFJTF9UT1RBTF9WX0FDVElWRV9CVywKIERNTF9GQUlMX0RJT19TVVBQ T1JULAogRE1MX0ZBSUxfTk9UX0VOT1VHSF9EU0MsCiBETUxfRkFJTF9EU0NfQ0xLX1JFUVVJUkVE LAogRE1MX0ZBSUxfRFNDX1ZBTElEQVRJT05fRkFJTFVSRSwKIERNTF9GQUlMX1VSR0VOVF9MQVRF TkNZLAogRE1MX0ZBSUxfUkVPUkRFUklOR19CVUZGRVIsCiBETUxfRkFJTF9ESVNQQ0xLX0RQUENM SywKIERNTF9GQUlMX1RPVEFMX0FWQUlMQUJMRV9QSVBFUywKIERNTF9GQUlMX05VTV9PVEcsCiBE TUxfRkFJTF9XUklURUJBQ0tfTU9ERSwKIERNTF9GQUlMX1dSSVRFQkFDS19MQVRFTkNZLAogRE1M X0ZBSUxfV1JJVEVCQUNLX1NDQUxFX1JBVElPX1RBUCwKIERNTF9GQUlMX0NVUlNPUl9TVVBQT1JU LAogRE1MX0ZBSUxfUElUQ0hfU1VQUE9SVCwKIERNTF9GQUlMX1BURV9CVUZGRVJfU0laRSwKIERN TF9GQUlMX0hPU1RfVk1fSU1NRURJQVRFX0ZMSVAsCiBETUxfRkFJTF9EU0NfSU5QVVRfQlBDLAog RE1MX0ZBSUxfUFJFRkVUQ0hfU1VQUE9SVCwKIERNTF9GQUlMX1ZfUkFUSU9fUFJFRkVUQ0gsCn07 CgplbnVtIHdyaXRlYmFja19jb25maWcgewogZG1fbm9ybWFsLAogZG1fd2hvbGVfYnVmZmVyX2Zv cl9zaW5nbGVfc3RyZWFtX25vX2ludGVybGVhdmUsCiBkbV93aG9sZV9idWZmZXJfZm9yX3Npbmds ZV9zdHJlYW1faW50ZXJsZWF2ZSwKfTsKCmVudW0gb2RtX2NvbWJpbmVfbW9kZSB7CiBkbV9vZG1f Y29tYmluZV9tb2RlX2Rpc2FibGVkLAogZG1fb2RtX2NvbWJpbmVfbW9kZV8ydG8xLAogZG1fb2Rt X2NvbWJpbmVfbW9kZV80dG8xLAp9OwoKZW51bSBvZG1fY29tYmluZV9wb2xpY3kgewogZG1fb2Rt X2NvbWJpbmVfcG9saWN5X2RhbCwKIGRtX29kbV9jb21iaW5lX3BvbGljeV9ub25lLAogZG1fb2Rt X2NvbWJpbmVfcG9saWN5XzJ0bzEsCiBkbV9vZG1fY29tYmluZV9wb2xpY3lfNHRvMSwKfTsKCmVu dW0gaW1tZWRpYXRlX2ZsaXBfcmVxdWlyZW1lbnQgewogZG1faW1tZWRpYXRlX2ZsaXBfbm90X3Jl cXVpcmVkLAogZG1faW1tZWRpYXRlX2ZsaXBfcmVxdWlyZWQsCn07CiMgMzMgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZG1sX2NvbW1vbl9kZWZzLmgiIDIK Cgpkb3VibGUgZG1sX3JvdW5kKGRvdWJsZSBhKTsKIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X21vZGVfbGliLmgiIDIKIyAxICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1sL2Rpc3BsYXlfbW9kZV92 YmEuaCIgMQojIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMv ZG1sL2Rpc3BsYXlfbW9kZV92YmEuaCIKc3RydWN0IGRpc3BsYXlfbW9kZV9saWI7Cgp2b2lkIE1v ZGVTdXBwb3J0QW5kU3lzdGVtQ29uZmlndXJhdGlvbihzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAq bW9kZV9saWIpOwoKCgpkb3VibGUgZ2V0X2Nsa19kY2ZfZGVlcHNsZWVwKHN0cnVjdCBkaXNwbGF5 X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBp cGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKZG91YmxlIGdldF93bV91cmdlbnQoc3RydWN0 IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFt c19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwpkb3VibGUgZ2V0X3dtX21lbW9y eV90cmlwKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9l MmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKZG91Ymxl IGdldF93bV93cml0ZWJhY2tfdXJnZW50KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xp YiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQg bnVtX3BpcGVzKTsKZG91YmxlIGdldF93bV9zdHV0dGVyX2V4aXQoc3RydWN0IGRpc3BsYXlfbW9k ZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMs IHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwpkb3VibGUgZ2V0X3dtX3N0dXR0ZXJfZW50ZXJfZXhp dChzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3Bp cGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJsZSBnZXRf d21fZHJhbV9jbG9ja19jaGFuZ2Uoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBj b25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1f cGlwZXMpOwpkb3VibGUgZ2V0X3dtX3dyaXRlYmFja19kcmFtX2Nsb2NrX2NoYW5nZShzdHJ1Y3Qg ZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1z X3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJsZSBnZXRfd21feGZjX3Vu ZGVyZmxvdyhzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlf ZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJs ZSBnZXRfc3R1dHRlcl9lZmZpY2llbmN5X25vX3ZibGFuayhzdHJ1Y3QgZGlzcGxheV9tb2RlX2xp YiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5z aWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJsZSBnZXRfc3R1dHRlcl9lZmZpY2llbmN5KHN0cnVj dCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJh bXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKZG91YmxlIGdldF91cmdlbnRf bGF0ZW5jeShzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlf ZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJs ZSBnZXRfdXJnZW50X2V4dHJhX2xhdGVuY3koc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVf bGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGlu dCBudW1fcGlwZXMpOwpkb3VibGUgZ2V0X25vbnVyZ2VudF9sYXRlbmN5KHN0cnVjdCBkaXNwbGF5 X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBp cGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKZG91YmxlIGdldF9kcmFtX2Nsb2NrX2NoYW5n ZV9sYXRlbmN5KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxh eV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKZG91 YmxlIGdldF9kaXNwY2xrX2NhbGN1bGF0ZWQoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVf bGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGlu dCBudW1fcGlwZXMpOwpkb3VibGUgZ2V0X3RvdGFsX2RhdGFfcmVhZF9idyhzdHJ1Y3QgZGlzcGxh eV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpw aXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJsZSBnZXRfcmV0dXJuX2J3KHN0cnVj dCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJh bXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKZG91YmxlIGdldF90Y2FsYyhz dHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVf cGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJsZSBnZXRfZnJh Y3Rpb25fb2ZfdXJnZW50X2JhbmR3aWR0aChzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9s aWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50 IG51bV9waXBlcyk7CmRvdWJsZSBnZXRfZnJhY3Rpb25fb2ZfdXJnZW50X2JhbmR3aWR0aF9pbW1f ZmxpcChzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJl X3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CgoKCmRvdWJs ZSBnZXRfZHNjX2RlbGF5KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3Qg ZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVz LCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CmRvdWJsZSBnZXRfZHBwY2xrX2NhbGN1bGF0ZWQo c3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBl X3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2lnbmVkIGludCB3 aGljaF9waXBlKTsKZG91YmxlIGdldF9kc2NjbGtfY2FsY3VsYXRlZChzdHJ1Y3QgZGlzcGxheV9t b2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBl cywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwpkb3Vi bGUgZ2V0X21pbl90dHVfdmJsYW5rKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwg Y29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVt X3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CmRvdWJsZSBnZXRfdnJhdGlvX3ByZWZl dGNoX2woc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2Uy ZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2lnbmVk IGludCB3aGljaF9waXBlKTsKZG91YmxlIGdldF92cmF0aW9fcHJlZmV0Y2hfYyhzdHJ1Y3QgZGlz cGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0 ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUp Owpkb3VibGUgZ2V0X2RzdF94X2FmdGVyX3NjYWxlcihzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAq bW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWdu ZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwpkb3VibGUgZ2V0X2Rz dF95X2FmdGVyX3NjYWxlcihzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0 IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBl cywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwpkb3VibGUgZ2V0X2RzdF95X3Blcl92bV92Ymxh bmsoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9w aXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2lnbmVkIGlu dCB3aGljaF9waXBlKTsKZG91YmxlIGdldF9kc3RfeV9wZXJfcm93X3ZibGFuayhzdHJ1Y3QgZGlz cGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0 ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUp Owpkb3VibGUgZ2V0X2RzdF95X3ByZWZldGNoKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2Rl X2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBp bnQgbnVtX3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CmRvdWJsZSBnZXRfZHN0X3lf cGVyX3ZtX2ZsaXAoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNw bGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVu c2lnbmVkIGludCB3aGljaF9waXBlKTsKZG91YmxlIGdldF9kc3RfeV9wZXJfcm93X2ZsaXAoc3Ry dWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3Bh cmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2lnbmVkIGludCB3aGlj aF9waXBlKTsKZG91YmxlIGdldF94ZmNfdHJhbnNmZXJfZGVsYXkoc3RydWN0IGRpc3BsYXlfbW9k ZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMs IHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2lnbmVkIGludCB3aGljaF9waXBlKTsKZG91Ymxl IGdldF94ZmNfcHJlY2hhcmdlX2RlbGF5KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xp YiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQg bnVtX3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CmRvdWJsZSBnZXRfeGZjX3JlbW90 ZV9zdXJmYWNlX2ZsaXBfbGF0ZW5jeShzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIs IGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51 bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwpkb3VibGUgZ2V0X3hmY19wcmVmZXRj aF9tYXJnaW4oc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2ln bmVkIGludCB3aGljaF9waXBlKTsKZG91YmxlIGdldF9yZWZjeWNfcGVyX3ZtX2dyb3VwX3ZibGFu ayhzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3Bp cGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50 IHdoaWNoX3BpcGUpOwpkb3VibGUgZ2V0X3JlZmN5Y19wZXJfdm1fZ3JvdXBfZmxpcChzdHJ1Y3Qg ZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1z X3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3Bp cGUpOwpkb3VibGUgZ2V0X3JlZmN5Y19wZXJfdm1fcmVxX3ZibGFuayhzdHJ1Y3QgZGlzcGxheV9t b2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBl cywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwpkb3Vi bGUgZ2V0X3JlZmN5Y19wZXJfdm1fcmVxX2ZsaXAoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1v ZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVk IGludCBudW1fcGlwZXMsIHVuc2lnbmVkIGludCB3aGljaF9waXBlKTsKCnVuc2lnbmVkIGludCBn ZXRfdnN0YXJ0dXBfY2FsY3VsYXRlZCgKICBzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9s aWIsCiAgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAogIHVuc2lnbmVk IGludCBudW1fcGlwZXMsCiAgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwoKZG91YmxlIGdldF90 b3RhbF9pbW1lZGlhdGVfZmxpcF9ieXRlcygKICBzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9k ZV9saWIsCiAgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAogIHVuc2ln bmVkIGludCBudW1fcGlwZXMpOwpkb3VibGUgZ2V0X3RvdGFsX2ltbWVkaWF0ZV9mbGlwX2J3KAog IHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKICBjb25zdCBkaXNwbGF5X2UyZV9w aXBlX3BhcmFtc19zdCAqcGlwZXMsCiAgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJsZSBn ZXRfdG90YWxfcHJlZmV0Y2hfYncoCiAgc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGli LAogIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywKICB1bnNpZ25lZCBp bnQgbnVtX3BpcGVzKTsKdW5zaWduZWQgaW50IGRtbF9nZXRfdm9sdGFnZV9sZXZlbCgKICBzdHJ1 Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsCiAgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9w YXJhbXNfc3QgKnBpcGVzLAogIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoKdm9pZCBQaXhlbENs b2NrQWRqdXN0bWVudEZvclByb2dyZXNzaXZlVG9JbnRlcmxhY2VVbml0KHN0cnVjdCBkaXNwbGF5 X21vZGVfbGliICptb2RlX2xpYik7Cgpib29sIENhbGN1bGF0ZTI1NkJCbG9ja1NpemVzKAogIGVu dW0gc291cmNlX2Zvcm1hdF9jbGFzcyBTb3VyY2VQaXhlbEZvcm1hdCwKICBlbnVtIGRtX3N3aXp6 bGVfbW9kZSBTdXJmYWNlVGlsaW5nLAogIHVuc2lnbmVkIGludCBCeXRlUGVyUGl4ZWxZLAogIHVu c2lnbmVkIGludCBCeXRlUGVyUGl4ZWxDLAogIHVuc2lnbmVkIGludCAqQmxvY2tIZWlnaHQyNTZC eXRlc1ksCiAgdW5zaWduZWQgaW50ICpCbG9ja0hlaWdodDI1NkJ5dGVzQywKICB1bnNpZ25lZCBp bnQgKkJsb2NrV2lkdGgyNTZCeXRlc1ksCiAgdW5zaWduZWQgaW50ICpCbG9ja1dpZHRoMjU2Qnl0 ZXNDKTsKCnN0cnVjdCB2YmFfdmFyc19zdCB7CiBpcF9wYXJhbXNfc3QgaXA7CiBzb2NfYm91bmRp bmdfYm94X3N0IHNvYzsKCiBpbnQgbWF4TXBjQ29tYjsKIGJvb2wgVXNlTWF4aW11bVZTdGFydHVw OwoKIGRvdWJsZSBXcml0ZWJhY2tESVNQQ0xLOwogZG91YmxlIERQUENMS1VzaW5nU2luZ2xlRFBQ THVtYTsKIGRvdWJsZSBEUFBDTEtVc2luZ1NpbmdsZURQUENocm9tYTsKIGRvdWJsZSBESVNQQ0xL V2l0aFJhbXBpbmc7CiBkb3VibGUgRElTUENMS1dpdGhvdXRSYW1waW5nOwogZG91YmxlIEdsb2Jh bERQUENMSzsKIGRvdWJsZSBESVNQQ0xLV2l0aFJhbXBpbmdSb3VuZGVkVG9ERlNHcmFudWxhcml0 eTsKIGRvdWJsZSBESVNQQ0xLV2l0aG91dFJhbXBpbmdSb3VuZGVkVG9ERlNHcmFudWxhcml0eTsK IGRvdWJsZSBNYXhEaXNwY2xrUm91bmRlZFRvREZTR3JhbnVsYXJpdHk7CiBib29sIERDQ0VuYWJs ZWRBbnlQbGFuZTsKIGRvdWJsZSBSZXR1cm5CYW5kd2lkdGhUb0RDTjsKIHVuc2lnbmVkIGludCBU b3RhbEFjdGl2ZURQUDsKIHVuc2lnbmVkIGludCBUb3RhbERDQ0FjdGl2ZURQUDsKIGRvdWJsZSBV cmdlbnRSb3VuZFRyaXBBbmRPdXRPZk9yZGVyTGF0ZW5jeTsKIGRvdWJsZSBTdHV0dGVyUGVyaW9k OwogZG91YmxlIEZyYW1lVGltZUZvck1pbkZ1bGxERVRCdWZmZXJpbmdUaW1lOwogZG91YmxlIEF2 ZXJhZ2VSZWFkQmFuZHdpZHRoOwogZG91YmxlIFRvdGFsUm93UmVhZEJhbmR3aWR0aDsKIGRvdWJs ZSBQYXJ0T2ZCdXJzdFRoYXRGaXRzSW5ST0I7CiBkb3VibGUgU3R1dHRlckJ1cnN0VGltZTsKIHVu c2lnbmVkIGludCBOZXh0UHJlZmV0Y2hNb2RlOwogZG91YmxlIE5leHRNYXhWU3RhcnR1cDsKIGRv dWJsZSBWQmxhbmtUaW1lOwogZG91YmxlIFNtYWxsZXN0VkJsYW5rOwogZG91YmxlIERDRkNMS0Rl ZXBTbGVlcFBlclBsYW5lWzhdOwogZG91YmxlIEVmZmVjdGl2ZURFVFBsdXNMQkxpbmVzTHVtYTsK IGRvdWJsZSBFZmZlY3RpdmVERVRQbHVzTEJMaW5lc0Nocm9tYTsKIGRvdWJsZSBVcmdlbnRMYXRl bmN5U3VwcG9ydFVzTHVtYTsKIGRvdWJsZSBVcmdlbnRMYXRlbmN5U3VwcG9ydFVzQ2hyb21hOwog dW5zaWduZWQgaW50IERTQ0Zvcm1hdEZhY3RvcjsKCiBib29sIER1bW15UFN0YXRlQ2hlY2s7CiBi b29sIERSQU1DbG9ja0NoYW5nZVN1cHBvcnRzVkFjdGl2ZTsKIGJvb2wgUHJlZmV0Y2hNb2RlU3Vw cG9ydGVkOwogYm9vbCBQcmVmZXRjaEFuZEltbWVkaWF0ZUZsaXBTdXBwb3J0ZWQ7CiBlbnVtIHNl bGZfcmVmcmVzaF9hZmZpbml0eSBBbGxvd0RSQU1TZWxmUmVmcmVzaE9yRFJBTUNsb2NrQ2hhbmdl SW5WYmxhbms7CiBkb3VibGUgWEZDUmVtb3RlU3VyZmFjZUZsaXBEZWxheTsKIGRvdWJsZSBUSW5p dFhGaWxsOwogZG91YmxlIFRzbHZDaGs7CiBkb3VibGUgU3JjQWN0aXZlRHJhaW5SYXRlOwogYm9v bCBJbW1lZGlhdGVGbGlwU3VwcG9ydGVkOwogZW51bSBtcGNfY29tYmluZV9hZmZpbml0eSBXaGVu VG9Eb01QQ0NvbWJpbmU7CgogYm9vbCBQcmVmZXRjaEVSUk9SOwoKIHVuc2lnbmVkIGludCBWU3Rh cnR1cExpbmVzOwogdW5zaWduZWQgaW50IEFjdGl2ZURQUHM7CiB1bnNpZ25lZCBpbnQgTEJMYXRl bmN5SGlkaW5nU291cmNlTGluZXNZOwogdW5zaWduZWQgaW50IExCTGF0ZW5jeUhpZGluZ1NvdXJj ZUxpbmVzQzsKIGRvdWJsZSBBY3RpdmVEUkFNQ2xvY2tDaGFuZ2VMYXRlbmN5TWFyZ2luWzhdOwog ZG91YmxlIE1pbkFjdGl2ZURSQU1DbG9ja0NoYW5nZU1hcmdpbjsKIGRvdWJsZSBJbml0RmlsbExl dmVsOwogZG91YmxlIEZpbmFsRmlsbE1hcmdpbjsKIGRvdWJsZSBGaW5hbEZpbGxMZXZlbDsKIGRv dWJsZSBSZW1haW5pbmdGaWxsTGV2ZWw7CiBkb3VibGUgVEZpbmFseEZpbGw7CgoKCgogZG91Ymxl IFNSRXhpdFRpbWU7CiBkb3VibGUgU1JFbnRlclBsdXNFeGl0VGltZTsKIGRvdWJsZSBVcmdlbnRM YXRlbmN5UGl4ZWxEYXRhT25seTsKIGRvdWJsZSBVcmdlbnRMYXRlbmN5UGl4ZWxNaXhlZFdpdGhW TURhdGE7CiBkb3VibGUgVXJnZW50TGF0ZW5jeVZNRGF0YU9ubHk7CiBkb3VibGUgVXJnZW50TGF0 ZW5jeTsKIGRvdWJsZSBXcml0ZWJhY2tMYXRlbmN5OwogZG91YmxlIFBlcmNlbnRPZklkZWFsRFJB TUZhYnJpY0FuZFNEUFBvcnRCV1JlY2VpdmVkQWZ0ZXJVcmdMYXRlbmN5UGl4ZWxEYXRhT25seTsK IGRvdWJsZSBQZXJjZW50T2ZJZGVhbERSQU1GYWJyaWNBbmRTRFBQb3J0QldSZWNlaXZlZEFmdGVy VXJnTGF0ZW5jeVBpeGVsTWl4ZWRXaXRoVk1EYXRhOwogZG91YmxlIFBlcmNlbnRPZklkZWFsRFJB TUZhYnJpY0FuZFNEUFBvcnRCV1JlY2VpdmVkQWZ0ZXJVcmdMYXRlbmN5Vk1EYXRhT25seTsKIGRv dWJsZSBNYXhBdmVyYWdlUGVyY2VudE9mSWRlYWxTRFBQb3J0QldEaXNwbGF5Q2FuVXNlSW5Ob3Jt YWxTeXN0ZW1PcGVyYXRpb247CiBkb3VibGUgTWF4QXZlcmFnZVBlcmNlbnRPZklkZWFsRFJBTUJX RGlzcGxheUNhblVzZUluTm9ybWFsU3lzdGVtT3BlcmF0aW9uOwogZG91YmxlIE51bWJlck9mQ2hh bm5lbHM7CiBkb3VibGUgRFJBTUNoYW5uZWxXaWR0aDsKIGRvdWJsZSBGYWJyaWNEYXRhcGF0aFRv RENORGF0YVJldHVybjsKIGRvdWJsZSBSZXR1cm5CdXNXaWR0aDsKIGRvdWJsZSBEb3duc3ByZWFk aW5nOwogZG91YmxlIERJU1BDTEtEUFBDTEtEU0NDTEtEb3duU3ByZWFkaW5nOwogZG91YmxlIERJ U1BDTEtEUFBDTEtWQ09TcGVlZDsKIGRvdWJsZSBSb3VuZFRyaXBQaW5nTGF0ZW5jeUN5Y2xlczsK IGRvdWJsZSBVcmdlbnRPdXRPZk9yZGVyUmV0dXJuUGVyQ2hhbm5lbDsKIGRvdWJsZSBVcmdlbnRP dXRPZk9yZGVyUmV0dXJuUGVyQ2hhbm5lbFBpeGVsRGF0YU9ubHk7CiBkb3VibGUgVXJnZW50T3V0 T2ZPcmRlclJldHVyblBlckNoYW5uZWxQaXhlbE1peGVkV2l0aFZNRGF0YTsKIGRvdWJsZSBVcmdl bnRPdXRPZk9yZGVyUmV0dXJuUGVyQ2hhbm5lbFZNRGF0YU9ubHk7CiB1bnNpZ25lZCBpbnQgVk1N UGFnZVNpemU7CiBkb3VibGUgRFJBTUNsb2NrQ2hhbmdlTGF0ZW5jeTsKIGRvdWJsZSBYRkNCdXNU cmFuc3BvcnRUaW1lOwogYm9vbCBVc2VVcmdlbnRCdXJzdEJhbmR3aWR0aDsKIGRvdWJsZSBYRkNY QlVGTGF0ZW5jeVRvbGVyYW5jZTsKCgoKCiB1bnNpZ25lZCBpbnQgUk9CQnVmZmVyU2l6ZUluS0J5 dGU7CiBkb3VibGUgREVUQnVmZmVyU2l6ZUluS0J5dGU7CiBkb3VibGUgREVUQnVmZmVyU2l6ZUlu VGltZTsKIHVuc2lnbmVkIGludCBEUFBPdXRwdXRCdWZmZXJQaXhlbHM7CiB1bnNpZ25lZCBpbnQg T1BQT3V0cHV0QnVmZmVyTGluZXM7CiB1bnNpZ25lZCBpbnQgUGl4ZWxDaHVua1NpemVJbktCeXRl OwogZG91YmxlIFJldHVybkJXOwogYm9vbCBHUFVWTUVuYWJsZTsKIGJvb2wgSG9zdFZNRW5hYmxl OwogdW5zaWduZWQgaW50IEdQVVZNTWF4UGFnZVRhYmxlTGV2ZWxzOwogdW5zaWduZWQgaW50IEhv c3RWTU1heFBhZ2VUYWJsZUxldmVsczsKIHVuc2lnbmVkIGludCBIb3N0Vk1DYWNoZWRQYWdlVGFi bGVMZXZlbHM7CiB1bnNpZ25lZCBpbnQgT3ZlcnJpZGVHUFVWTVBhZ2VUYWJsZUxldmVsczsKIHVu c2lnbmVkIGludCBPdmVycmlkZUhvc3RWTVBhZ2VUYWJsZUxldmVsczsKIHVuc2lnbmVkIGludCBN ZXRhQ2h1bmtTaXplOwogZG91YmxlIE1pblBpeGVsQ2h1bmtTaXplQnl0ZXM7CiBkb3VibGUgTWlu TWV0YUNodW5rU2l6ZUJ5dGVzOwogdW5zaWduZWQgaW50IFdyaXRlYmFja0NodW5rU2l6ZTsKIGJv b2wgT0RNQ2FwYWJpbGl0eTsKIHVuc2lnbmVkIGludCBOdW1iZXJPZkRTQzsKIHVuc2lnbmVkIGlu dCBMaW5lQnVmZmVyU2l6ZTsKIHVuc2lnbmVkIGludCBNYXhMaW5lQnVmZmVyTGluZXM7CiB1bnNp Z25lZCBpbnQgV3JpdGViYWNrSW50ZXJmYWNlTHVtYUJ1ZmZlclNpemU7CiB1bnNpZ25lZCBpbnQg V3JpdGViYWNrSW50ZXJmYWNlQ2hyb21hQnVmZmVyU2l6ZTsKIHVuc2lnbmVkIGludCBXcml0ZWJh Y2tDaHJvbWFMaW5lQnVmZmVyV2lkdGg7CiBlbnVtIHdyaXRlYmFja19jb25maWcgV3JpdGViYWNr Q29uZmlndXJhdGlvbjsKIGRvdWJsZSBNYXhEQ0hVQlRvUFNDTFRocm91Z2hwdXQ7CiBkb3VibGUg TWF4UFNDTFRvTEJUaHJvdWdocHV0OwogdW5zaWduZWQgaW50IFBURUJ1ZmZlclNpemVJblJlcXVl c3RzTHVtYTsKIHVuc2lnbmVkIGludCBQVEVCdWZmZXJTaXplSW5SZXF1ZXN0c0Nocm9tYTsKIGRv dWJsZSBESVNQQ0xLUmFtcGluZ01hcmdpbjsKIHVuc2lnbmVkIGludCBNYXhJbnRlckRDTlRpbGVS ZXBlYXRlcnM7CiBib29sIFhGQ1N1cHBvcnRlZDsKIGRvdWJsZSBYRkNTbHZDaHVua1NpemU7CiBk b3VibGUgWEZDRmlsbEJXT3ZlcmhlYWQ7CiBkb3VibGUgWEZDRmlsbENvbnN0YW50OwogZG91Ymxl IFhGQ1RTbHZWdXBkYXRlT2Zmc2V0OwogZG91YmxlIFhGQ1RTbHZWdXBkYXRlV2lkdGg7CiBkb3Vi bGUgWEZDVFNsdlZyZWFkeU9mZnNldDsKIGRvdWJsZSBEUFBDTEtEZWxheVN1YnRvdGFsOwogZG91 YmxlIERQUENMS0RlbGF5U0NMOwogZG91YmxlIERQUENMS0RlbGF5U0NMTEJPbmx5OwogZG91Ymxl IERQUENMS0RlbGF5Q05WQ0Zvcm1hdGVyOwogZG91YmxlIERQUENMS0RlbGF5Q05WQ0N1cnNvcjsK IGRvdWJsZSBESVNQQ0xLRGVsYXlTdWJ0b3RhbDsKIGJvb2wgUHJvZ3Jlc3NpdmVUb0ludGVybGFj ZVVuaXRJbk9QUDsKCiBpbnQgVm9sdGFnZUxldmVsOwogZG91YmxlIEZhYnJpY0Nsb2NrOwogZG91 YmxlIERSQU1TcGVlZDsKIGRvdWJsZSBESVNQQ0xLOwogZG91YmxlIFNPQ0NMSzsKIGRvdWJsZSBE Q0ZDTEs7CgogdW5zaWduZWQgaW50IE51bWJlck9mQWN0aXZlUGxhbmVzOwogdW5zaWduZWQgaW50 IE51bWJlck9mRFNDU2xpY2VzWzhdOwogdW5zaWduZWQgaW50IFZpZXdwb3J0V2lkdGhbOF07CiB1 bnNpZ25lZCBpbnQgVmlld3BvcnRIZWlnaHRbOF07CiB1bnNpZ25lZCBpbnQgVmlld3BvcnRZU3Rh cnRZWzhdOwogdW5zaWduZWQgaW50IFZpZXdwb3J0WVN0YXJ0Q1s4XTsKIHVuc2lnbmVkIGludCBQ aXRjaFlbOF07CiB1bnNpZ25lZCBpbnQgUGl0Y2hDWzhdOwogZG91YmxlIEhSYXRpb1s4XTsKIGRv dWJsZSBWUmF0aW9bOF07CiB1bnNpZ25lZCBpbnQgaHRhcHNbOF07CiB1bnNpZ25lZCBpbnQgdnRh cHNbOF07CiB1bnNpZ25lZCBpbnQgSFRBUHNDaHJvbWFbOF07CiB1bnNpZ25lZCBpbnQgVlRBUHND aHJvbWFbOF07CiB1bnNpZ25lZCBpbnQgSFRvdGFsWzhdOwogdW5zaWduZWQgaW50IFZUb3RhbFs4 XTsKIHVuc2lnbmVkIGludCBWVG90YWxfTWF4WzhdOwogdW5zaWduZWQgaW50IFZUb3RhbF9NaW5b OF07CiBpbnQgRFBQUGVyUGxhbmVbOF07CiBkb3VibGUgUGl4ZWxDbG9ja1s4XTsKIGRvdWJsZSBQ aXhlbENsb2NrQmFja0VuZFs4XTsKIGJvb2wgRENDRW5hYmxlWzhdOwogYm9vbCBGRUNFbmFibGVb OF07CiB1bnNpZ25lZCBpbnQgRENDTWV0YVBpdGNoWVs4XTsKIHVuc2lnbmVkIGludCBEQ0NNZXRh UGl0Y2hDWzhdOwogZW51bSBzY2FuX2RpcmVjdGlvbl9jbGFzcyBTb3VyY2VTY2FuWzhdOwogZW51 bSBzb3VyY2VfZm9ybWF0X2NsYXNzIFNvdXJjZVBpeGVsRm9ybWF0WzhdOwogYm9vbCBXcml0ZWJh Y2tFbmFibGVbOF07CiB1bnNpZ25lZCBpbnQgQWN0aXZlV3JpdGViYWNrc1BlclBsYW5lWzhdOwog ZG91YmxlIFdyaXRlYmFja0Rlc3RpbmF0aW9uV2lkdGhbOF07CiBkb3VibGUgV3JpdGViYWNrRGVz dGluYXRpb25IZWlnaHRbOF07CiBkb3VibGUgV3JpdGViYWNrU291cmNlSGVpZ2h0WzhdOwogZW51 bSBzb3VyY2VfZm9ybWF0X2NsYXNzIFdyaXRlYmFja1BpeGVsRm9ybWF0WzhdOwogdW5zaWduZWQg aW50IFdyaXRlYmFja0x1bWFIVGFwc1s4XTsKIHVuc2lnbmVkIGludCBXcml0ZWJhY2tMdW1hVlRh cHNbOF07CiB1bnNpZ25lZCBpbnQgV3JpdGViYWNrQ2hyb21hSFRhcHNbOF07CiB1bnNpZ25lZCBp bnQgV3JpdGViYWNrQ2hyb21hVlRhcHNbOF07CiBkb3VibGUgV3JpdGViYWNrSFJhdGlvWzhdOwog ZG91YmxlIFdyaXRlYmFja1ZSYXRpb1s4XTsKIHVuc2lnbmVkIGludCBIQWN0aXZlWzhdOwogdW5z aWduZWQgaW50IFZBY3RpdmVbOF07CiBib29sIEludGVybGFjZVs4XTsKIGVudW0gZG1fc3dpenps ZV9tb2RlIFN1cmZhY2VUaWxpbmdbOF07CiB1bnNpZ25lZCBpbnQgU2NhbGVyUmVjb3V0V2lkdGhb OF07CiBib29sIER5bmFtaWNNZXRhZGF0YUVuYWJsZVs4XTsKIGludCBEeW5hbWljTWV0YWRhdGFM aW5lc0JlZm9yZUFjdGl2ZVJlcXVpcmVkWzhdOwogdW5zaWduZWQgaW50IER5bmFtaWNNZXRhZGF0 YVRyYW5zbWl0dGVkQnl0ZXNbOF07CiBkb3VibGUgRENDUmF0ZVs4XTsKIGRvdWJsZSBBdmVyYWdl RENDQ29tcHJlc3Npb25SYXRlOwogZW51bSBvZG1fY29tYmluZV9tb2RlIE9ETUNvbWJpbmVFbmFi bGVkWzhdOwogZG91YmxlIE91dHB1dEJwcFs4XTsKIGJvb2wgRFNDRW5hYmxlZFs4XTsKIHVuc2ln bmVkIGludCBEU0NJbnB1dEJpdFBlckNvbXBvbmVudFs4XTsKIGVudW0gb3V0cHV0X2Zvcm1hdF9j bGFzcyBPdXRwdXRGb3JtYXRbOF07CiBlbnVtIG91dHB1dF9lbmNvZGVyX2NsYXNzIE91dHB1dFs4 XTsKIHVuc2lnbmVkIGludCBCbGVuZGluZ0FuZFRpbWluZ1s4XTsKIGJvb2wgU3luY2hyb25pemVk VkJsYW5rOwogdW5zaWduZWQgaW50IE51bWJlck9mQ3Vyc29yc1s4XTsKIHVuc2lnbmVkIGludCBD dXJzb3JXaWR0aFs4XVsyXTsKIHVuc2lnbmVkIGludCBDdXJzb3JCUFBbOF1bMl07CiBib29sIFhG Q0VuYWJsZWRbOF07CiBib29sIFNjYWxlckVuYWJsZWRbOF07CgoKIGJvb2wgSW1tZWRpYXRlRmxp cFN1cHBvcnQ7CiBkb3VibGUgREVUQnVmZmVyU2l6ZVlbOF07CiBkb3VibGUgREVUQnVmZmVyU2l6 ZUNbOF07CiB1bnNpZ25lZCBpbnQgU3dhdGhIZWlnaHRZWzhdOwogdW5zaWduZWQgaW50IFN3YXRo SGVpZ2h0Q1s4XTsKIHVuc2lnbmVkIGludCBMQkJpdFBlclBpeGVsWzhdOwogZG91YmxlIExhc3RQ aXhlbE9mTGluZUV4dHJhV2F0ZXJtYXJrOwogZG91YmxlIFRvdGFsRGF0YVJlYWRCYW5kd2lkdGg7 CiB1bnNpZ25lZCBpbnQgVG90YWxBY3RpdmVXcml0ZWJhY2s7CiB1bnNpZ25lZCBpbnQgRWZmZWN0 aXZlTEJMYXRlbmN5SGlkaW5nU291cmNlTGluZXNMdW1hOwogdW5zaWduZWQgaW50IEVmZmVjdGl2 ZUxCTGF0ZW5jeUhpZGluZ1NvdXJjZUxpbmVzQ2hyb21hOwogZG91YmxlIEJhbmR3aWR0aEF2YWls YWJsZUZvckltbWVkaWF0ZUZsaXA7CiB1bnNpZ25lZCBpbnQgUHJlZmV0Y2hNb2RlWzcgKyAxXVsy XTsKIHVuc2lnbmVkIGludCBQcmVmZXRjaE1vZGVQZXJTdGF0ZVs3ICsgMV1bMl07CiB1bnNpZ25l ZCBpbnQgTWluUHJlZmV0Y2hNb2RlOwogdW5zaWduZWQgaW50IE1heFByZWZldGNoTW9kZTsKIGJv b2wgQW55TGluZXNGb3JWTU9yUm93VG9vTGFyZ2U7CiBkb3VibGUgTWF4VlN0YXJ0dXA7CiBib29s IElnbm9yZVZpZXdwb3J0UG9zaXRpb25pbmc7CiBib29sIEVycm9yUmVzdWx0WzhdOwoKCgogZG91 YmxlIERDRkNMS0RlZXBTbGVlcDsKIGRvdWJsZSBVcmdlbnRXYXRlcm1hcms7CiBkb3VibGUgVXJn ZW50RXh0cmFMYXRlbmN5OwogZG91YmxlIFdyaXRlYmFja1VyZ2VudFdhdGVybWFyazsKIGRvdWJs ZSBTdHV0dGVyRXhpdFdhdGVybWFyazsKIGRvdWJsZSBTdHV0dGVyRW50ZXJQbHVzRXhpdFdhdGVy bWFyazsKIGRvdWJsZSBEUkFNQ2xvY2tDaGFuZ2VXYXRlcm1hcms7CiBkb3VibGUgV3JpdGViYWNr RFJBTUNsb2NrQ2hhbmdlV2F0ZXJtYXJrOwogZG91YmxlIFN0dXR0ZXJFZmZpY2llbmN5OwogZG91 YmxlIFN0dXR0ZXJFZmZpY2llbmN5Tm90SW5jbHVkaW5nVkJsYW5rOwogZG91YmxlIE5vblVyZ2Vu dExhdGVuY3lUb2xlcmFuY2U7CiBkb3VibGUgTWluQWN0aXZlRFJBTUNsb2NrQ2hhbmdlTGF0ZW5j eVN1cHBvcnRlZDsKCgoKCiBkb3VibGUgRElTUENMS19jYWxjdWxhdGVkOwogZG91YmxlIERQUENM S19jYWxjdWxhdGVkWzhdOwoKIHVuc2lnbmVkIGludCBWVXBkYXRlT2Zmc2V0UGl4WzhdOwogZG91 YmxlIFZVcGRhdGVXaWR0aFBpeFs4XTsKIGRvdWJsZSBWUmVhZHlPZmZzZXRQaXhbOF07CgogdW5z aWduZWQgaW50IFRvdEltbWVkaWF0ZUZsaXBCeXRlczsKIGRvdWJsZSBUQ2FsYzsKCiBkaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCBjYWNoZV9waXBlc1s4XTsKIHVuc2lnbmVkIGludCBjYWNoZV9u dW1fcGlwZXM7CiB1bnNpZ25lZCBpbnQgcGlwZV9wbGFuZVs4XTsKCgoKIGJvb2wgRW1iZWRkZWRQ YW5lbFs4XTsKIGJvb2wgU3VwcG9ydEdGWDdDb21wYXRpYmxlVGlsaW5nSW4zMmJwcEFuZDY0YnBw OwogZG91YmxlIE1heEhTQ0xSYXRpbzsKIGRvdWJsZSBNYXhWU0NMUmF0aW87CiB1bnNpZ25lZCBp bnQgTWF4TnVtV3JpdGViYWNrOwogYm9vbCBXcml0ZWJhY2tMdW1hQW5kQ2hyb21hU2NhbGluZ1N1 cHBvcnRlZDsKIGJvb2wgQ3Vyc29yNjRCcHBTdXBwb3J0OwogZG91YmxlIERDRkNMS1BlclN0YXRl WzcgKyAxXTsKIGRvdWJsZSBEQ0ZDTEtTdGF0ZVs3ICsgMV1bMl07CiBkb3VibGUgRmFicmljQ2xv Y2tQZXJTdGF0ZVs3ICsgMV07CiBkb3VibGUgU09DQ0xLUGVyU3RhdGVbNyArIDFdOwogZG91Ymxl IFBIWUNMS1BlclN0YXRlWzcgKyAxXTsKIGRvdWJsZSBEVEJDTEtQZXJTdGF0ZVs3ICsgMV07CiBk b3VibGUgTWF4RHBwY2xrWzcgKyAxXTsKIGRvdWJsZSBNYXhEU0NDTEtbNyArIDFdOwogZG91Ymxl IERSQU1TcGVlZFBlclN0YXRlWzcgKyAxXTsKIGRvdWJsZSBNYXhEaXNwY2xrWzcgKyAxXTsKIGlu dCBWb2x0YWdlT3ZlcnJpZGVMZXZlbDsKCgogYm9vbCBTY2FsZVJhdGlvQW5kVGFwc1N1cHBvcnQ7 CiBib29sIFNvdXJjZUZvcm1hdFBpeGVsQW5kU2NhblN1cHBvcnQ7CiBkb3VibGUgVG90YWxCYW5k d2lkdGhDb25zdW1lZEdCeXRlUGVyU2Vjb25kOwogYm9vbCBEQ0NFbmFibGVkSW5BbnlQbGFuZTsK IGJvb2wgV3JpdGViYWNrTGF0ZW5jeVN1cHBvcnQ7CiBib29sIFdyaXRlYmFja01vZGVTdXBwb3J0 OwogYm9vbCBXcml0ZWJhY2sxMGJwYzQyMFN1cHBvcnRlZDsKIGJvb2wgQmFuZHdpZHRoU3VwcG9y dFs3ICsgMV07CiB1bnNpZ25lZCBpbnQgVG90YWxOdW1iZXJPZkFjdGl2ZVdyaXRlYmFjazsKIGRv dWJsZSBDcml0aWNhbFBvaW50OwogZG91YmxlIFJldHVybkJXVG9EQ05QZXJTdGF0ZTsKIGJvb2wg SXNFcnJvclJlc3VsdFs3ICsgMV1bMl1bOF07CiBib29sIHByZWZldGNoX3ZtX2J3X3ZhbGlkOwog Ym9vbCBwcmVmZXRjaF9yb3dfYndfdmFsaWQ7CiBib29sIE51bWJlck9mT1RHU3VwcG9ydDsKIGJv b2wgTm9uc3VwcG9ydGVkRFNDSW5wdXRCUEM7CiBib29sIFdyaXRlYmFja1NjYWxlUmF0aW9BbmRU YXBzU3VwcG9ydDsKIGJvb2wgQ3Vyc29yU3VwcG9ydDsKIGJvb2wgUGl0Y2hTdXBwb3J0OwogZW51 bSBkbV92YWxpZGF0aW9uX3N0YXR1cyBWYWxpZGF0aW9uU3RhdHVzWzcgKyAxXTsKCiBkb3VibGUg V3JpdGViYWNrTGluZUJ1ZmZlckx1bWFCdWZmZXJTaXplOwogZG91YmxlIFdyaXRlYmFja0xpbmVC dWZmZXJDaHJvbWFCdWZmZXJTaXplOwogZG91YmxlIFdyaXRlYmFja01pbkhTQ0xSYXRpbzsKIGRv dWJsZSBXcml0ZWJhY2tNaW5WU0NMUmF0aW87CiBkb3VibGUgV3JpdGViYWNrTWF4SFNDTFJhdGlv OwogZG91YmxlIFdyaXRlYmFja01heFZTQ0xSYXRpbzsKIGRvdWJsZSBXcml0ZWJhY2tNYXhIU0NM VGFwczsKIGRvdWJsZSBXcml0ZWJhY2tNYXhWU0NMVGFwczsKIHVuc2lnbmVkIGludCBNYXhOdW1E UFA7CiB1bnNpZ25lZCBpbnQgTWF4TnVtT1RHOwogZG91YmxlIEN1cnNvckJ1ZmZlclNpemU7CiBk b3VibGUgQ3Vyc29yQ2h1bmtTaXplOwogdW5zaWduZWQgaW50IE1vZGU7CiBkb3VibGUgT3V0cHV0 TGlua0RQTGFuZXNbOF07CiBkb3VibGUgRm9yY2VkT3V0cHV0TGlua0JQUFs4XTsKIGRvdWJsZSBJ bW1lZGlhdGVGbGlwQldbOF07CiBkb3VibGUgTWF4TWF4VlN0YXJ0dXBbNyArIDFdWzJdOwoKIGRv dWJsZSBXcml0ZWJhY2tMdW1hVkV4dHJhOwogZG91YmxlIFdyaXRlYmFja0Nocm9tYVZFeHRyYTsK IGRvdWJsZSBXcml0ZWJhY2tSZXF1aXJlZERJU1BDTEs7CiBkb3VibGUgTWF4aW11bVN3YXRoV2lk dGhTdXBwb3J0OwogZG91YmxlIE1heGltdW1Td2F0aFdpZHRoSW5ERVRCdWZmZXI7CiBkb3VibGUg TWF4aW11bVN3YXRoV2lkdGhJbkxpbmVCdWZmZXI7CiBkb3VibGUgTWF4RGlzcGNsa1JvdW5kZWRE b3duVG9ERlNHcmFudWxhcml0eTsKIGRvdWJsZSBNYXhEcHBjbGtSb3VuZGVkRG93blRvREZTR3Jh bnVsYXJpdHk7CiBkb3VibGUgUGxhbmVSZXF1aXJlZERJU1BDTEtXaXRob3V0T0RNQ29tYmluZTsK IGRvdWJsZSBQbGFuZVJlcXVpcmVkRElTUENMS1dpdGhPRE1Db21iaW5lOwogZG91YmxlIFBsYW5l UmVxdWlyZWRESVNQQ0xLOwogZG91YmxlIFRvdGFsTnVtYmVyT2ZBY3RpdmVPVEc7CiBkb3VibGUg RkVDT3ZlcmhlYWQ7CiBkb3VibGUgRWZmZWN0aXZlRkVDT3ZlcmhlYWQ7CiBkb3VibGUgT3V0YnBw OwogdW5zaWduZWQgaW50IE91dGJwcERTQzsKIGRvdWJsZSBUb3RhbERTQ1VuaXRzUmVxdWlyZWQ7 CiBkb3VibGUgYnBwOwogdW5zaWduZWQgaW50IHNsaWNlczsKIGRvdWJsZSBTd2F0aFdpZHRoR3Jh bnVsYXJpdHlZOwogZG91YmxlIFJvdW5kZWRVcE1heFN3YXRoU2l6ZUJ5dGVzWTsKIGRvdWJsZSBT d2F0aFdpZHRoR3JhbnVsYXJpdHlDOwogZG91YmxlIFJvdW5kZWRVcE1heFN3YXRoU2l6ZUJ5dGVz QzsKIGRvdWJsZSBFZmZlY3RpdmVERVRMQkxpbmVzTHVtYTsKIGRvdWJsZSBFZmZlY3RpdmVERVRM QkxpbmVzQ2hyb21hOwogZG91YmxlIFByb2plY3RlZERDRkNMS0RlZXBTbGVlcFs3ICsgMV1bMl07 CiBkb3VibGUgUERFQW5kTWV0YVBURUJ5dGVzUGVyRnJhbWVZOwogZG91YmxlIFBERUFuZE1ldGFQ VEVCeXRlc1BlckZyYW1lQzsKIHVuc2lnbmVkIGludCBNZXRhUm93Qnl0ZXNZOwogdW5zaWduZWQg aW50IE1ldGFSb3dCeXRlc0M7CiB1bnNpZ25lZCBpbnQgRFBURUJ5dGVzUGVyUm93QzsKIHVuc2ln bmVkIGludCBEUFRFQnl0ZXNQZXJSb3dZOwogZG91YmxlIEV4dHJhTGF0ZW5jeTsKIGRvdWJsZSBU aW1lQ2FsYzsKIGRvdWJsZSBUV2FpdDsKIGRvdWJsZSBNYXhpbXVtUmVhZEJhbmR3aWR0aFdpdGhQ cmVmZXRjaDsKIGRvdWJsZSBNYXhpbXVtUmVhZEJhbmR3aWR0aFdpdGhvdXRQcmVmZXRjaDsKIGRv dWJsZSB0b3RhbF9kY25fcmVhZF9id193aXRoX2ZsaXA7CiBkb3VibGUgdG90YWxfZGNuX3JlYWRf Yndfd2l0aF9mbGlwX25vX3VyZ2VudF9idXJzdDsKIGRvdWJsZSBGcmFjdGlvbk9mVXJnZW50QmFu ZHdpZHRoOwogZG91YmxlIEZyYWN0aW9uT2ZVcmdlbnRCYW5kd2lkdGhJbW1lZGlhdGVGbGlwOwoK CiBkb3VibGUgSWRlYWxTRFBQb3J0QmFuZHdpZHRoUGVyU3RhdGVbNyArIDFdWzJdOwogdW5zaWdu ZWQgaW50IE5vT2ZEUFBbNyArIDFdWzJdWzhdOwogaW50IE5vT2ZEUFBUaGlzU3RhdGVbOF07CiBl bnVtIG9kbV9jb21iaW5lX21vZGUgT0RNQ29tYmluZUVuYWJsZVBlclN0YXRlWzcgKyAxXVs4XTsK IGRvdWJsZSBTd2F0aFdpZHRoWVRoaXNTdGF0ZVs4XTsKIHVuc2lnbmVkIGludCBTd2F0aEhlaWdo dENQZXJTdGF0ZVs3ICsgMV1bMl1bOF07CiB1bnNpZ25lZCBpbnQgU3dhdGhIZWlnaHRZVGhpc1N0 YXRlWzhdOwogdW5zaWduZWQgaW50IFN3YXRoSGVpZ2h0Q1RoaXNTdGF0ZVs4XTsKIGRvdWJsZSBW UmF0aW9QcmVZWzcgKyAxXVsyXVs4XTsKIGRvdWJsZSBWUmF0aW9QcmVDWzcgKyAxXVsyXVs4XTsK IGRvdWJsZSBSZXF1aXJlZFByZWZldGNoUGl4ZWxEYXRhQldMdW1hWzcgKyAxXVsyXVs4XTsKIGRv dWJsZSBSZXF1aXJlZFByZWZldGNoUGl4ZWxEYXRhQldDaHJvbWFbNyArIDFdWzJdWzhdOwogZG91 YmxlIFJlcXVpcmVkRFBQQ0xLWzcgKyAxXVsyXVs4XTsKIGRvdWJsZSBSZXF1aXJlZERQUENMS1Ro aXNTdGF0ZVs4XTsKIGJvb2wgUFRFQnVmZmVyU2l6ZU5vdEV4Y2VlZGVkWVs3ICsgMV1bMl1bOF07 CiBib29sIFBURUJ1ZmZlclNpemVOb3RFeGNlZWRlZENbNyArIDFdWzJdWzhdOwogYm9vbCBCYW5k d2lkdGhXaXRob3V0UHJlZmV0Y2hTdXBwb3J0ZWRbNyArIDFdWzJdOwogYm9vbCBQcmVmZXRjaFN1 cHBvcnRlZFs3ICsgMV1bMl07CiBib29sIFZSYXRpb0luUHJlZmV0Y2hTdXBwb3J0ZWRbNyArIDFd WzJdOwogZG91YmxlIFJlcXVpcmVkRElTUENMS1s3ICsgMV1bMl07CiBib29sIERJU1BDTEtfRFBQ Q0xLX1N1cHBvcnRbNyArIDFdWzJdOwogYm9vbCBUb3RhbEF2YWlsYWJsZVBpcGVzU3VwcG9ydFs3 ICsgMV1bMl07CiB1bnNpZ25lZCBpbnQgVG90YWxOdW1iZXJPZkFjdGl2ZURQUFs3ICsgMV1bMl07 CiB1bnNpZ25lZCBpbnQgVG90YWxOdW1iZXJPZkRDQ0FjdGl2ZURQUFs3ICsgMV1bMl07CiBib29s IE1vZGVTdXBwb3J0WzcgKyAxXVsyXTsKIGRvdWJsZSBSZXR1cm5CV1BlclN0YXRlWzcgKyAxXVsy XTsKIGJvb2wgRElPU3VwcG9ydFs3ICsgMV07CiBib29sIE5vdEVub3VnaERTQ1VuaXRzWzcgKyAx XTsKIGJvb2wgRFNDQ0xLUmVxdWlyZWRNb3JlVGhhblN1cHBvcnRlZFs3ICsgMV07CiBib29sIERU QkNMS1JlcXVpcmVkTW9yZVRoYW5TdXBwb3J0ZWRbNyArIDFdOwogZG91YmxlIFVyZ2VudFJvdW5k VHJpcEFuZE91dE9mT3JkZXJMYXRlbmN5UGVyU3RhdGVbNyArIDFdOwogYm9vbCBST0JTdXBwb3J0 WzcgKyAxXVsyXTsKIGJvb2wgUFRFQnVmZmVyU2l6ZU5vdEV4Y2VlZGVkWzcgKyAxXVsyXTsKIGJv b2wgVG90YWxWZXJ0aWNhbEFjdGl2ZUJhbmR3aWR0aFN1cHBvcnRbNyArIDFdWzJdOwogZG91Ymxl IE1heFRvdGFsVmVydGljYWxBY3RpdmVBdmFpbGFibGVCYW5kd2lkdGhbNyArIDFdWzJdOwogZG91 YmxlIFByZWZldGNoQldbOF07CiBkb3VibGUgUERFQW5kTWV0YVBURUJ5dGVzUGVyRnJhbWVbNyAr IDFdWzJdWzhdOwogZG91YmxlIE1ldGFSb3dCeXRlc1s3ICsgMV1bMl1bOF07CiBkb3VibGUgRFBU RUJ5dGVzUGVyUm93WzcgKyAxXVsyXVs4XTsKIGRvdWJsZSBQcmVmZXRjaExpbmVzWVs3ICsgMV1b Ml1bOF07CiBkb3VibGUgUHJlZmV0Y2hMaW5lc0NbNyArIDFdWzJdWzhdOwogdW5zaWduZWQgaW50 IE1heE51bVN3WVs4XTsKIHVuc2lnbmVkIGludCBNYXhOdW1Td0NbOF07CiBkb3VibGUgUHJlZmls bFlbOF07CiBkb3VibGUgUHJlZmlsbENbOF07CiBkb3VibGUgTGluZVRpbWVzRm9yUHJlZmV0Y2hb OF07CiBkb3VibGUgTGluZXNGb3JNZXRhUFRFWzhdOwogZG91YmxlIExpbmVzRm9yTWV0YUFuZERQ VEVSb3dbOF07CiBkb3VibGUgTWluRFBQQ0xLVXNpbmdTaW5nbGVEUFBbOF07CiBkb3VibGUgU3dh dGhXaWR0aFlTaW5nbGVEUFBbOF07CiBkb3VibGUgQnl0ZVBlclBpeGVsSW5ERVRZWzhdOwogZG91 YmxlIEJ5dGVQZXJQaXhlbEluREVUQ1s4XTsKIGJvb2wgUmVxdWlyZXNEU0NbNyArIDFdWzhdOwog dW5zaWduZWQgaW50IE51bWJlck9mRFNDU2xpY2VbNyArIDFdWzhdOwogZG91YmxlIFJlcXVpcmVz RkVDWzcgKyAxXVs4XTsKIGRvdWJsZSBPdXRwdXRCcHBQZXJTdGF0ZVs3ICsgMV1bOF07CiBkb3Vi bGUgRFNDRGVsYXlQZXJTdGF0ZVs3ICsgMV1bOF07CiBib29sIFZpZXdwb3J0U2l6ZVN1cHBvcnRb NyArIDFdWzJdOwogdW5zaWduZWQgaW50IFJlYWQyNTZCbG9ja0hlaWdodFlbOF07CiB1bnNpZ25l ZCBpbnQgUmVhZDI1NkJsb2NrV2lkdGhZWzhdOwogdW5zaWduZWQgaW50IFJlYWQyNTZCbG9ja0hl aWdodENbOF07CiB1bnNpZ25lZCBpbnQgUmVhZDI1NkJsb2NrV2lkdGhDWzhdOwogZG91YmxlIE1h eFN3YXRoSGVpZ2h0WVs4XTsKIGRvdWJsZSBNYXhTd2F0aEhlaWdodENbOF07CiBkb3VibGUgTWlu U3dhdGhIZWlnaHRZWzhdOwogZG91YmxlIE1pblN3YXRoSGVpZ2h0Q1s4XTsKIGRvdWJsZSBSZWFk QmFuZHdpZHRoTHVtYVs4XTsKIGRvdWJsZSBSZWFkQmFuZHdpZHRoQ2hyb21hWzhdOwogZG91Ymxl IFJlYWRCYW5kd2lkdGhbOF07CiBkb3VibGUgV3JpdGVCYW5kd2lkdGhbOF07CiBkb3VibGUgUFND TF9GQUNUT1JbOF07CiBkb3VibGUgUFNDTF9GQUNUT1JfQ0hST01BWzhdOwogZG91YmxlIE1heGlt dW1WU3RhcnR1cFs3ICsgMV1bMl1bOF07CiB1bnNpZ25lZCBpbnQgTWFjcm9UaWxlV2lkdGhZWzhd OwogdW5zaWduZWQgaW50IE1hY3JvVGlsZVdpZHRoQ1s4XTsKIGRvdWJsZSBBbGlnbmVkRENDTWV0 YVBpdGNoWzhdOwogZG91YmxlIEFsaWduZWRZUGl0Y2hbOF07CiBkb3VibGUgQWxpZ25lZENQaXRj aFs4XTsKIGRvdWJsZSBNYXhpbXVtU3dhdGhXaWR0aFs4XTsKIGRvdWJsZSBjdXJzb3JfYndbOF07 CiBkb3VibGUgY3Vyc29yX2J3X3ByZVs4XTsKIGRvdWJsZSBUbm9fYndbOF07CiBkb3VibGUgcHJl ZmV0Y2hfdm1yb3dfYndbOF07CiBkb3VibGUgRGVzdGluYXRpb25MaW5lc1RvUmVxdWVzdFZNSW5J bW1lZGlhdGVGbGlwWzhdOwogZG91YmxlIERlc3RpbmF0aW9uTGluZXNUb1JlcXVlc3RSb3dJbklt bWVkaWF0ZUZsaXBbOF07CiBkb3VibGUgZmluYWxfZmxpcF9id1s4XTsKIGJvb2wgSW1tZWRpYXRl RmxpcFN1cHBvcnRlZEZvclN0YXRlWzcgKyAxXVsyXTsKIGRvdWJsZSBXcml0ZWJhY2tEZWxheVs3 ICsgMV1bOF07CiB1bnNpZ25lZCBpbnQgdm1fZ3JvdXBfYnl0ZXNbOF07CiB1bnNpZ25lZCBpbnQg ZHB0ZV9ncm91cF9ieXRlc1s4XTsKIHVuc2lnbmVkIGludCBkcHRlX3Jvd19oZWlnaHRbOF07CiB1 bnNpZ25lZCBpbnQgbWV0YV9yZXFfaGVpZ2h0WzhdOwogdW5zaWduZWQgaW50IG1ldGFfcmVxX3dp ZHRoWzhdOwogdW5zaWduZWQgaW50IG1ldGFfcm93X2hlaWdodFs4XTsKIHVuc2lnbmVkIGludCBt ZXRhX3Jvd193aWR0aFs4XTsKIHVuc2lnbmVkIGludCBkcHRlX3Jvd19oZWlnaHRfY2hyb21hWzhd OwogdW5zaWduZWQgaW50IG1ldGFfcmVxX2hlaWdodF9jaHJvbWFbOF07CiB1bnNpZ25lZCBpbnQg bWV0YV9yZXFfd2lkdGhfY2hyb21hWzhdOwogdW5zaWduZWQgaW50IG1ldGFfcm93X2hlaWdodF9j aHJvbWFbOF07CiB1bnNpZ25lZCBpbnQgbWV0YV9yb3dfd2lkdGhfY2hyb21hWzhdOwogYm9vbCBJ bW1lZGlhdGVGbGlwU3VwcG9ydGVkRm9yUGlwZVs4XTsKIGRvdWJsZSBtZXRhX3Jvd19id1s4XTsK IGRvdWJsZSBkcHRlX3Jvd19id1s4XTsKIGRvdWJsZSBEaXNwbGF5UGlwZUxpbmVEZWxpdmVyeVRp bWVMdW1hWzhdOwogZG91YmxlIERpc3BsYXlQaXBlTGluZURlbGl2ZXJ5VGltZUNocm9tYVs4XTsK IGRvdWJsZSBEaXNwbGF5UGlwZVJlcXVlc3REZWxpdmVyeVRpbWVMdW1hWzhdOwogZG91YmxlIERp c3BsYXlQaXBlUmVxdWVzdERlbGl2ZXJ5VGltZUNocm9tYVs4XTsKIGVudW0gY2xvY2tfY2hhbmdl X3N1cHBvcnQgRFJBTUNsb2NrQ2hhbmdlU3VwcG9ydFs3ICsgMV1bMl07CiBkb3VibGUgVXJnZW50 QnVyc3RGYWN0b3JDdXJzb3JbOF07CiBkb3VibGUgVXJnZW50QnVyc3RGYWN0b3JDdXJzb3JQcmVb OF07CiBkb3VibGUgVXJnZW50QnVyc3RGYWN0b3JMdW1hWzhdOwogZG91YmxlIFVyZ2VudEJ1cnN0 RmFjdG9yTHVtYVByZVs4XTsKIGRvdWJsZSBVcmdlbnRCdXJzdEZhY3RvckNocm9tYVs4XTsKIGRv dWJsZSBVcmdlbnRCdXJzdEZhY3RvckNocm9tYVByZVs4XTsKCgogYm9vbCBNUENDb21iaW5lWzcg KyAxXVsyXVs4XTsKIGRvdWJsZSBTd2F0aFdpZHRoQ1NpbmdsZURQUFs4XTsKIGRvdWJsZSBNYXhp bXVtU3dhdGhXaWR0aEluTGluZUJ1ZmZlckx1bWE7CiBkb3VibGUgTWF4aW11bVN3YXRoV2lkdGhJ bkxpbmVCdWZmZXJDaHJvbWE7CiBkb3VibGUgTWF4aW11bVN3YXRoV2lkdGhMdW1hWzhdOwogZG91 YmxlIE1heGltdW1Td2F0aFdpZHRoQ2hyb21hWzhdOwogZW51bSBvZG1fY29tYmluZV9tb2RlIG9k bV9jb21iaW5lX2R1bW15WzhdOwogZG91YmxlIGR1bW15MVs4XTsKIGRvdWJsZSBkdW1teTJbOF07 CiBkb3VibGUgZHVtbXkzWzhdOwogZG91YmxlIGR1bW15NFs4XTsKIGRvdWJsZSBkdW1teTU7CiBk b3VibGUgZHVtbXk2OwogZG91YmxlIGR1bW15N1s4XTsKIGRvdWJsZSBkdW1teThbOF07CiB1bnNp Z25lZCBpbnQgZHVtbXlpbnRlZ2VyMW1zWzhdOwogZG91YmxlIGR1bW15aW50ZWdlcjJtc1s4XTsK IHVuc2lnbmVkIGludCBkdW1teWludGVnZXIzWzhdOwogdW5zaWduZWQgaW50IGR1bW15aW50ZWdl cjRbOF07CiB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyNTsKIHVuc2lnbmVkIGludCBkdW1teWlu dGVnZXI2OwogdW5zaWduZWQgaW50IGR1bW15aW50ZWdlcjc7CiB1bnNpZ25lZCBpbnQgZHVtbXlp bnRlZ2VyODsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXI5OwogdW5zaWduZWQgaW50IGR1bW15 aW50ZWdlcjEwOwogdW5zaWduZWQgaW50IGR1bW15aW50ZWdlcjExOwogdW5zaWduZWQgaW50IGR1 bW15aW50ZWdlcjEyOwogdW5zaWduZWQgaW50IGR1bW15aW50ZWdlcmFycjFbOF07CiB1bnNpZ25l ZCBpbnQgZHVtbXlpbnRlZ2VyYXJyMls4XTsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXJhcnIz WzhdOwogdW5zaWduZWQgaW50IGR1bW15aW50ZWdlcmFycjRbOF07CiBib29sIGR1bW15c2luZ2xl c3RyaW5nOwogYm9vbCBTaW5nbGVEUFBWaWV3cG9ydFNpemVTdXBwb3J0UGVyUGxhbmVbOF07CiBk b3VibGUgUGxhbmVSZXF1aXJlZERJU1BDTEtXaXRoT0RNQ29tYmluZTJUbzE7CiBkb3VibGUgUGxh bmVSZXF1aXJlZERJU1BDTEtXaXRoT0RNQ29tYmluZTRUbzE7CiB1bnNpZ25lZCBpbnQgVG90YWxO dW1iZXJPZlNpbmdsZURQUFBsYW5lc1s3ICsgMV1bMl07CiBib29sIExpbmtEU0NFbmFibGU7CiBi b29sIE9ETUNvbWJpbmU0VG8xU3VwcG9ydENoZWNrT0tbNyArIDFdOwogZW51bSBvZG1fY29tYmlu ZV9tb2RlIE9ETUNvbWJpbmVFbmFibGVUaGlzU3RhdGVbOF07CiBkb3VibGUgU3dhdGhXaWR0aENU aGlzU3RhdGVbOF07CiBib29sIFZpZXdwb3J0U2l6ZVN1cHBvcnRQZXJQbGFuZVs4XTsKIGRvdWJs ZSBBbGlnbmVkRENDTWV0YVBpdGNoWVs4XTsKIGRvdWJsZSBBbGlnbmVkRENDTWV0YVBpdGNoQ1s4 XTsKCiB1bnNpZ25lZCBpbnQgTm90RW5vdWdoVXJnZW50TGF0ZW5jeUhpZGluZzsKIHVuc2lnbmVk IGludCBOb3RFbm91Z2hVcmdlbnRMYXRlbmN5SGlkaW5nUHJlOwogaW50IFBURUJ1ZmZlclNpemVJ blJlcXVlc3RzRm9yTHVtYTsKIGludCBQVEVCdWZmZXJTaXplSW5SZXF1ZXN0c0ZvckNocm9tYTsK CgogaW50IGRwdGVfZ3JvdXBfYnl0ZXNfY2hyb21hOwogdW5zaWduZWQgaW50IHZtX2dyb3VwX2J5 dGVzX2Nocm9tYTsKIGRvdWJsZSBkc3RfeF9hZnRlcl9zY2FsZXI7CiBkb3VibGUgZHN0X3lfYWZ0 ZXJfc2NhbGVyOwogdW5zaWduZWQgaW50IFZTdGFydHVwUmVxdWlyZWRXaGVuTm90RW5vdWdoVGlt ZUZvckR5bmFtaWNNZXRhZGF0YTsKCgogZG91YmxlIFByZWZldGNoQmFuZHdpZHRoWzhdOwogZG91 YmxlIFZJbml0UHJlRmlsbFlbOF07CiBkb3VibGUgVkluaXRQcmVGaWxsQ1s4XTsKIHVuc2lnbmVk IGludCBNYXhOdW1Td2F0aFlbOF07CiB1bnNpZ25lZCBpbnQgTWF4TnVtU3dhdGhDWzhdOwogdW5z aWduZWQgaW50IFZTdGFydHVwWzhdOwogZG91YmxlIERTVFlBZnRlclNjYWxlcls4XTsKIGRvdWJs ZSBEU1RYQWZ0ZXJTY2FsZXJbOF07CiBib29sIEFsbG93RFJBTUNsb2NrQ2hhbmdlRHVyaW5nVkJs YW5rWzhdOwogYm9vbCBBbGxvd0RSQU1TZWxmUmVmcmVzaER1cmluZ1ZCbGFua1s4XTsKIGRvdWJs ZSBWUmF0aW9QcmVmZXRjaFlbOF07CiBkb3VibGUgVlJhdGlvUHJlZmV0Y2hDWzhdOwogZG91Ymxl IERlc3RpbmF0aW9uTGluZXNGb3JQcmVmZXRjaFs4XTsKIGRvdWJsZSBEZXN0aW5hdGlvbkxpbmVz VG9SZXF1ZXN0Vk1JblZCbGFua1s4XTsKIGRvdWJsZSBEZXN0aW5hdGlvbkxpbmVzVG9SZXF1ZXN0 Um93SW5WQmxhbmtbOF07CiBkb3VibGUgTWluVFRVVkJsYW5rWzhdOwogZG91YmxlIEJ5dGVQZXJQ aXhlbERFVFlbOF07CiBkb3VibGUgQnl0ZVBlclBpeGVsREVUQ1s4XTsKIGRvdWJsZSBTd2F0aFdp ZHRoWVs4XTsKIGRvdWJsZSBTd2F0aFdpZHRoU2luZ2xlRFBQWVs4XTsKIGRvdWJsZSBDdXJzb3JS ZXF1ZXN0RGVsaXZlcnlUaW1lWzhdOwogZG91YmxlIEN1cnNvclJlcXVlc3REZWxpdmVyeVRpbWVQ cmVmZXRjaFs4XTsKIGRvdWJsZSBSZWFkQmFuZHdpZHRoUGxhbmVMdW1hWzhdOwogZG91YmxlIFJl YWRCYW5kd2lkdGhQbGFuZUNocm9tYVs4XTsKIGRvdWJsZSBEaXNwbGF5UGlwZUxpbmVEZWxpdmVy eVRpbWVMdW1hUHJlZmV0Y2hbOF07CiBkb3VibGUgRGlzcGxheVBpcGVMaW5lRGVsaXZlcnlUaW1l Q2hyb21hUHJlZmV0Y2hbOF07CiBkb3VibGUgRGlzcGxheVBpcGVSZXF1ZXN0RGVsaXZlcnlUaW1l THVtYVByZWZldGNoWzhdOwogZG91YmxlIERpc3BsYXlQaXBlUmVxdWVzdERlbGl2ZXJ5VGltZUNo cm9tYVByZWZldGNoWzhdOwogZG91YmxlIFBpeGVsUFRFQnl0ZXNQZXJSb3dbOF07CiBkb3VibGUg UERFQW5kTWV0YVBURUJ5dGVzRnJhbWVbOF07CiBkb3VibGUgTWV0YVJvd0J5dGVbOF07CiBkb3Vi bGUgUHJlZmV0Y2hTb3VyY2VMaW5lc1lbOF07CiBkb3VibGUgUmVxdWlyZWRQcmVmZXRjaFBpeERh dGFCV0x1bWFbOF07CiBkb3VibGUgUmVxdWlyZWRQcmVmZXRjaFBpeERhdGFCV0Nocm9tYVs4XTsK IGRvdWJsZSBQcmVmZXRjaFNvdXJjZUxpbmVzQ1s4XTsKIGRvdWJsZSBQU0NMX1RIUk9VR0hQVVRf TFVNQVs4XTsKIGRvdWJsZSBQU0NMX1RIUk9VR0hQVVRfQ0hST01BWzhdOwogZG91YmxlIERTQ0NM S19jYWxjdWxhdGVkWzhdOwogdW5zaWduZWQgaW50IERTQ0RlbGF5WzhdOwogdW5zaWduZWQgaW50 IE1heFZTdGFydHVwTGluZXNbOF07CiBkb3VibGUgRFBQQ0xLVXNpbmdTaW5nbGVEUFBbOF07CiBk b3VibGUgRFBQQ0xLWzhdOwogdW5zaWduZWQgaW50IERDQ1lNYXhVbmNvbXByZXNzZWRCbG9ja1s4 XTsKIHVuc2lnbmVkIGludCBEQ0NZTWF4Q29tcHJlc3NlZEJsb2NrWzhdOwogdW5zaWduZWQgaW50 IERDQ1lJbmRlcGVuZGVudDY0Qnl0ZUJsb2NrWzhdOwogZG91YmxlIE1heGltdW1EQ0NDb21wcmVz c2lvbllTdXJmYWNlWzhdOwogdW5zaWduZWQgaW50IEJsb2NrSGVpZ2h0MjU2Qnl0ZXNZWzhdOwog dW5zaWduZWQgaW50IEJsb2NrSGVpZ2h0MjU2Qnl0ZXNDWzhdOwogdW5zaWduZWQgaW50IEJsb2Nr V2lkdGgyNTZCeXRlc1lbOF07CiB1bnNpZ25lZCBpbnQgQmxvY2tXaWR0aDI1NkJ5dGVzQ1s4XTsK IGRvdWJsZSBYRkNTbGF2ZVZVcGRhdGVPZmZzZXRbOF07CiBkb3VibGUgWEZDU2xhdmVWdXBkYXRl V2lkdGhbOF07CiBkb3VibGUgWEZDU2xhdmVWUmVhZHlPZmZzZXRbOF07CiBkb3VibGUgWEZDVHJh bnNmZXJEZWxheVs4XTsKIGRvdWJsZSBYRkNQcmVjaGFyZ2VEZWxheVs4XTsKIGRvdWJsZSBYRkNS ZW1vdGVTdXJmYWNlRmxpcExhdGVuY3lbOF07CiBkb3VibGUgWEZDUHJlZmV0Y2hNYXJnaW5bOF07 CiB1bnNpZ25lZCBpbnQgZHB0ZV9yb3dfd2lkdGhfbHVtYV91Yls4XTsKIHVuc2lnbmVkIGludCBk cHRlX3Jvd193aWR0aF9jaHJvbWFfdWJbOF07CiBkb3VibGUgRnVsbERFVEJ1ZmZlcmluZ1RpbWVZ WzhdOwogZG91YmxlIEZ1bGxERVRCdWZmZXJpbmdUaW1lQ1s4XTsKIGRvdWJsZSBEU1RfWV9QRVJf UFRFX1JPV19OT01fTFs4XTsKIGRvdWJsZSBEU1RfWV9QRVJfUFRFX1JPV19OT01fQ1s4XTsKIGRv dWJsZSBEU1RfWV9QRVJfTUVUQV9ST1dfTk9NX0xbOF07CiBkb3VibGUgVGltZVBlck1ldGFDaHVu a05vbWluYWxbOF07CiBkb3VibGUgVGltZVBlck1ldGFDaHVua1ZCbGFua1s4XTsKIGRvdWJsZSBU aW1lUGVyTWV0YUNodW5rRmxpcFs4XTsKIHVuc2lnbmVkIGludCBzd2F0aF93aWR0aF9sdW1hX3Vi WzhdOwogdW5zaWduZWQgaW50IHN3YXRoX3dpZHRoX2Nocm9tYV91Yls4XTsKIHVuc2lnbmVkIGlu dCBQaXhlbFBURVJlcVdpZHRoWVs4XTsKIHVuc2lnbmVkIGludCBQaXhlbFBURVJlcUhlaWdodFlb OF07CiB1bnNpZ25lZCBpbnQgUFRFUmVxdWVzdFNpemVZWzhdOwogdW5zaWduZWQgaW50IFBpeGVs UFRFUmVxV2lkdGhDWzhdOwogdW5zaWduZWQgaW50IFBpeGVsUFRFUmVxSGVpZ2h0Q1s4XTsKIHVu c2lnbmVkIGludCBQVEVSZXF1ZXN0U2l6ZUNbOF07CiBkb3VibGUgdGltZV9wZXJfcHRlX2dyb3Vw X25vbV9sdW1hWzhdOwogZG91YmxlIHRpbWVfcGVyX3B0ZV9ncm91cF9ub21fY2hyb21hWzhdOwog ZG91YmxlIHRpbWVfcGVyX3B0ZV9ncm91cF92YmxhbmtfbHVtYVs4XTsKIGRvdWJsZSB0aW1lX3Bl cl9wdGVfZ3JvdXBfdmJsYW5rX2Nocm9tYVs4XTsKIGRvdWJsZSB0aW1lX3Blcl9wdGVfZ3JvdXBf ZmxpcF9sdW1hWzhdOwogZG91YmxlIHRpbWVfcGVyX3B0ZV9ncm91cF9mbGlwX2Nocm9tYVs4XTsK IGRvdWJsZSBUaW1lUGVyVk1Hcm91cFZCbGFua1s4XTsKIGRvdWJsZSBUaW1lUGVyVk1Hcm91cEZs aXBbOF07CiBkb3VibGUgVGltZVBlclZNUmVxdWVzdFZCbGFua1s4XTsKIGRvdWJsZSBUaW1lUGVy Vk1SZXF1ZXN0RmxpcFs4XTsKIHVuc2lnbmVkIGludCBkcGRlMF9ieXRlc19wZXJfZnJhbWVfdWJf bFs4XTsKIHVuc2lnbmVkIGludCBtZXRhX3B0ZV9ieXRlc19wZXJfZnJhbWVfdWJfbFs4XTsKIHVu c2lnbmVkIGludCBkcGRlMF9ieXRlc19wZXJfZnJhbWVfdWJfY1s4XTsKIHVuc2lnbmVkIGludCBt ZXRhX3B0ZV9ieXRlc19wZXJfZnJhbWVfdWJfY1s4XTsKIGRvdWJsZSBMaW5lc1RvRmluaXNoU3dh dGhUcmFuc2ZlclN0dXR0ZXJDcml0aWNhbFBsYW5lOwogdW5zaWduZWQgaW50IEJ5dGVQZXJQaXhl bFlDcml0aWNhbFBsYW5lOwogZG91YmxlIFN3YXRoV2lkdGhZQ3JpdGljYWxQbGFuZTsKIGRvdWJs ZSBMaW5lc0luREVUWVs4XTsKIGRvdWJsZSBMaW5lc0luREVUWVJvdW5kZWREb3duVG9Td2F0aFs4 XTsKCiBkb3VibGUgU3dhdGhXaWR0aFNpbmdsZURQUENbOF07CiBkb3VibGUgU3dhdGhXaWR0aENb OF07CiB1bnNpZ25lZCBpbnQgQnl0ZVBlclBpeGVsWVs4XTsKIHVuc2lnbmVkIGludCBCeXRlUGVy UGl4ZWxDWzhdOwogdW5zaWduZWQgaW50IGR1bW15aW50ZWdlcjE7CiB1bnNpZ25lZCBpbnQgZHVt bXlpbnRlZ2VyMjsKIGRvdWJsZSBGaW5hbERSQU1DbG9ja0NoYW5nZUxhdGVuY3k7CiBkb3VibGUg VGRtZGxfdm1bOF07CiBkb3VibGUgVGRtZGxbOF07CiB1bnNpZ25lZCBpbnQgVGhpc1ZTdGFydHVw OwogYm9vbCBXcml0ZWJhY2tBbGxvd0RSQU1DbG9ja0NoYW5nZUVuZFBvc2l0aW9uWzhdOwogZG91 YmxlIERTVF9ZX1BFUl9NRVRBX1JPV19OT01fQ1s4XTsKIGRvdWJsZSBUaW1lUGVyQ2hyb21hTWV0 YUNodW5rTm9taW5hbFs4XTsKIGRvdWJsZSBUaW1lUGVyQ2hyb21hTWV0YUNodW5rVkJsYW5rWzhd OwogZG91YmxlIFRpbWVQZXJDaHJvbWFNZXRhQ2h1bmtGbGlwWzhdOwogdW5zaWduZWQgaW50IERD Q0NNYXhVbmNvbXByZXNzZWRCbG9ja1s4XTsKIHVuc2lnbmVkIGludCBEQ0NDTWF4Q29tcHJlc3Nl ZEJsb2NrWzhdOwogdW5zaWduZWQgaW50IERDQ0NJbmRlcGVuZGVudDY0Qnl0ZUJsb2NrWzhdOwog ZG91YmxlIFZTdGFydHVwTWFyZ2luOwogYm9vbCBOb3RFbm91Z2hUaW1lRm9yRHluYW1pY01ldGFk YXRhOwoKCiB1bnNpZ25lZCBpbnQgTWF4aW11bU1heFZTdGFydHVwTGluZXM7CiBkb3VibGUgRmFi cmljQW5kRFJBTUJhbmR3aWR0aDsKIGRvdWJsZSBMaW5lc0luREVUTHVtYTsKIGRvdWJsZSBMaW5l c0luREVUQ2hyb21hOwogdW5zaWduZWQgaW50IEltbWVkaWF0ZUZsaXBCeXRlc1s4XTsKIHVuc2ln bmVkIGludCBMaW5lc0luREVUQ1s4XTsKIHVuc2lnbmVkIGludCBMaW5lc0luREVUQ1JvdW5kZWRE b3duVG9Td2F0aFs4XTsKIGRvdWJsZSBVcmdlbnRMYXRlbmN5U3VwcG9ydFVzUGVyU3RhdGVbNyAr IDFdWzJdWzhdOwogZG91YmxlIFVyZ2VudExhdGVuY3lTdXBwb3J0VXNbOF07CiBkb3VibGUgRmFi cmljQW5kRFJBTUJhbmR3aWR0aFBlclN0YXRlWzcgKyAxXTsKIGJvb2wgVXJnZW50TGF0ZW5jeVN1 cHBvcnRbNyArIDFdWzJdOwogdW5zaWduZWQgaW50IFN3YXRoV2lkdGhZUGVyU3RhdGVbNyArIDFd WzJdWzhdOwogdW5zaWduZWQgaW50IFN3YXRoSGVpZ2h0WVBlclN0YXRlWzcgKyAxXVsyXVs4XTsK IGRvdWJsZSBxdWFsX3Jvd19id1s4XTsKIGRvdWJsZSBwcmVmZXRjaF9yb3dfYndbOF07CiBkb3Vi bGUgcHJlZmV0Y2hfdm1fYndbOF07CgogZG91YmxlIFBURUdyb3VwU2l6ZTsKIHVuc2lnbmVkIGlu dCBQREVQcm9jZXNzaW5nQnVmSW42NEtCUmVxczsKCiBkb3VibGUgTWF4VG90YWxWQWN0aXZlUkRC YW5kd2lkdGg7CiBib29sIERvVXJnZW50TGF0ZW5jeUFkanVzdG1lbnQ7CiBkb3VibGUgVXJnZW50 TGF0ZW5jeUFkanVzdG1lbnRGYWJyaWNDbG9ja0NvbXBvbmVudDsKIGRvdWJsZSBVcmdlbnRMYXRl bmN5QWRqdXN0bWVudEZhYnJpY0Nsb2NrUmVmZXJlbmNlOwogZG91YmxlIE1pblVyZ2VudExhdGVu Y3lTdXBwb3J0VXM7CiBkb3VibGUgTWluRnVsbERFVEJ1ZmZlcmluZ1RpbWU7CiBkb3VibGUgQXZl cmFnZVJlYWRCYW5kd2lkdGhHQnl0ZVBlclNlY29uZDsKIGJvb2wgRmlyc3RNYWluUGxhbmU7Cgog dW5zaWduZWQgaW50IFZpZXdwb3J0V2lkdGhDaHJvbWFbOF07CiB1bnNpZ25lZCBpbnQgVmlld3Bv cnRIZWlnaHRDaHJvbWFbOF07CiBkb3VibGUgSFJhdGlvQ2hyb21hWzhdOwogZG91YmxlIFZSYXRp b0Nocm9tYVs4XTsKIGludCBXcml0ZWJhY2tTb3VyY2VXaWR0aFs4XTsKCiBib29sIE1vZGVJc1N1 cHBvcnRlZDsKIGJvb2wgT0RNQ29tYmluZTRUbzFTdXBwb3J0ZWQ7CgogdW5zaWduZWQgaW50IFN1 cmZhY2VXaWR0aFlbOF07CiB1bnNpZ25lZCBpbnQgU3VyZmFjZVdpZHRoQ1s4XTsKIHVuc2lnbmVk IGludCBTdXJmYWNlSGVpZ2h0WVs4XTsKIHVuc2lnbmVkIGludCBTdXJmYWNlSGVpZ2h0Q1s4XTsK IHVuc2lnbmVkIGludCBXcml0ZWJhY2tIVGFwc1s4XTsKIHVuc2lnbmVkIGludCBXcml0ZWJhY2tW VGFwc1s4XTsKIGJvb2wgRFNDRW5hYmxlWzhdOwoKIGRvdWJsZSBEUkFNQ2xvY2tDaGFuZ2VMYXRl bmN5T3ZlcnJpZGU7CgogZG91YmxlIEdQVVZNTWluUGFnZVNpemU7CiBkb3VibGUgSG9zdFZNTWlu UGFnZVNpemU7CgogYm9vbCBNUENDb21iaW5lRW5hYmxlWzhdOwogdW5zaWduZWQgaW50IEhvc3RW TU1heE5vbkNhY2hlZFBhZ2VUYWJsZUxldmVsczsKIGJvb2wgRHluYW1pY01ldGFkYXRhVk1FbmFi bGVkOwogZG91YmxlIFdyaXRlYmFja0ludGVyZmFjZUJ1ZmZlclNpemU7CiBkb3VibGUgV3JpdGVi YWNrTGluZUJ1ZmZlclNpemU7CgogZG91YmxlIERDQ1JhdGVMdW1hWzhdOwogZG91YmxlIERDQ1Jh dGVDaHJvbWFbOF07CgogZG91YmxlIFBIWUNMS0QxOFBlclN0YXRlWzcgKyAxXTsKIGludCBNaW5W b2x0YWdlTGV2ZWw7CiBpbnQgTWF4Vm9sdGFnZUxldmVsOwoKIGJvb2wgV3JpdGViYWNrU3VwcG9y dEludGVybGVhdmVBbmRVc2luZ1dob2xlQnVmZmVyRm9yQVNpbmdsZVN0cmVhbTsKIGJvb2wgTnVt YmVyT2ZIRE1JRlJMU3VwcG9ydDsKIHVuc2lnbmVkIGludCBNYXhOdW1IRE1JRlJMT3V0cHV0czsK IGludCBBdWRpb1NhbXBsZVJhdGVbOF07CiBpbnQgQXVkaW9TYW1wbGVMYXlvdXRbOF07CgogaW50 IFBlcmNlbnRNYXJnaW5PdmVyTWluaW11bVJlcXVpcmVkRENGQ0xLOwogYm9vbCBEeW5hbWljTWV0 YWRhdGFTdXBwb3J0ZWRbNyArIDFdWzJdOwogZW51bSBpbW1lZGlhdGVfZmxpcF9yZXF1aXJlbWVu dCBJbW1lZGlhdGVGbGlwUmVxdWlyZW1lbnQ7CiBkb3VibGUgREVUQnVmZmVyU2l6ZVlUaGlzU3Rh dGVbOF07CiBkb3VibGUgREVUQnVmZmVyU2l6ZUNUaGlzU3RhdGVbOF07CiBib29sIE5vVXJnZW50 TGF0ZW5jeUhpZGluZ1s4XTsKIGJvb2wgTm9VcmdlbnRMYXRlbmN5SGlkaW5nUHJlWzhdOwogaW50 IHN3YXRoX3dpZHRoX2x1bWFfdWJfdGhpc19zdGF0ZVs4XTsKIGludCBzd2F0aF93aWR0aF9jaHJv bWFfdWJfdGhpc19zdGF0ZVs4XTsKIGRvdWJsZSBVcmdMYXRlbmN5WzcgKyAxXTsKIGRvdWJsZSBW QWN0aXZlQ3Vyc29yQmFuZHdpZHRoWzcgKyAxXVsyXVs4XTsKIGRvdWJsZSBWQWN0aXZlUGl4ZWxC YW5kd2lkdGhbNyArIDFdWzJdWzhdOwogYm9vbCBOb1RpbWVGb3JQcmVmZXRjaFs3ICsgMV1bMl1b OF07CiBib29sIE5vVGltZUZvckR5bmFtaWNNZXRhZGF0YVs3ICsgMV1bMl1bOF07CiBkb3VibGUg ZHB0ZV9yb3dfYmFuZHdpZHRoWzcgKyAxXVsyXVs4XTsKIGRvdWJsZSBtZXRhX3Jvd19iYW5kd2lk dGhbNyArIDFdWzJdWzhdOwogZG91YmxlIERFVEJ1ZmZlclNpemVZQWxsU3RhdGVzWzcgKyAxXVsy XVs4XTsKIGRvdWJsZSBERVRCdWZmZXJTaXplQ0FsbFN0YXRlc1s3ICsgMV1bMl1bOF07CiBpbnQg c3dhdGhfd2lkdGhfbHVtYV91Yl9hbGxfc3RhdGVzWzcgKyAxXVsyXVs4XTsKIGludCBzd2F0aF93 aWR0aF9jaHJvbWFfdWJfYWxsX3N0YXRlc1s3ICsgMV1bMl1bOF07CiBib29sIE5vdFVyZ2VudExh dGVuY3lIaWRpbmdbNyArIDFdWzJdOwogdW5zaWduZWQgaW50IFN3YXRoSGVpZ2h0WUFsbFN0YXRl c1s3ICsgMV1bMl1bOF07CiB1bnNpZ25lZCBpbnQgU3dhdGhIZWlnaHRDQWxsU3RhdGVzWzcgKyAx XVsyXVs4XTsKIHVuc2lnbmVkIGludCBTd2F0aFdpZHRoWUFsbFN0YXRlc1s3ICsgMV1bMl1bOF07 CiB1bnNpZ25lZCBpbnQgU3dhdGhXaWR0aENBbGxTdGF0ZXNbNyArIDFdWzJdWzhdOwogZG91Ymxl IFRvdGFsRFBURVJvd0JhbmR3aWR0aFs3ICsgMV1bMl07CiBkb3VibGUgVG90YWxNZXRhUm93QmFu ZHdpZHRoWzcgKyAxXVsyXTsKIGRvdWJsZSBUb3RhbFZBY3RpdmVDdXJzb3JCYW5kd2lkdGhbNyAr IDFdWzJdOwogZG91YmxlIFRvdGFsVkFjdGl2ZVBpeGVsQmFuZHdpZHRoWzcgKyAxXVsyXTsKIGJv b2wgVXNlTWluaW11bVJlcXVpcmVkRENGQ0xLOwogZG91YmxlIFdyaXRlYmFja0RlbGF5VGltZVs4 XTsKIHVuc2lnbmVkIGludCBEQ0NZSW5kZXBlbmRlbnRCbG9ja1s4XTsKIHVuc2lnbmVkIGludCBE Q0NDSW5kZXBlbmRlbnRCbG9ja1s4XTsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIxNTsKIHVu c2lnbmVkIGludCBkdW1teWludGVnZXIxNjsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIxNzsK IHVuc2lnbmVkIGludCBkdW1teWludGVnZXIxODsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIx OTsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIyMDsKIHVuc2lnbmVkIGludCBkdW1teWludGVn ZXIyMTsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIyMjsKIHVuc2lnbmVkIGludCBkdW1teWlu dGVnZXIyMzsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIyNDsKIHVuc2lnbmVkIGludCBkdW1t eWludGVnZXIyNTsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIyNjsKIHVuc2lnbmVkIGludCBk dW1teWludGVnZXIyNzsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIyODsKIHVuc2lnbmVkIGlu dCBkdW1teWludGVnZXIyOTsKIGJvb2wgZHVtbXlzdHJpbmdbOF07CiBkb3VibGUgQlBQOwogZW51 bSBvZG1fY29tYmluZV9wb2xpY3kgT0RNQ29tYmluZVBvbGljeTsKfTsKCmJvb2wgQ2FsY3VsYXRl TWluQW5kTWF4UHJlZmV0Y2hNb2RlKAogIGVudW0gc2VsZl9yZWZyZXNoX2FmZmluaXR5IEFsbG93 RFJBTVNlbGZSZWZyZXNoT3JEUkFNQ2xvY2tDaGFuZ2VJblZibGFuaywKICB1bnNpZ25lZCBpbnQg Kk1pblByZWZldGNoTW9kZSwKICB1bnNpZ25lZCBpbnQgKk1heFByZWZldGNoTW9kZSk7Cgpkb3Vi bGUgQ2FsY3VsYXRlV3JpdGVCYWNrRElTUENMSygKICBlbnVtIHNvdXJjZV9mb3JtYXRfY2xhc3Mg V3JpdGViYWNrUGl4ZWxGb3JtYXQsCiAgZG91YmxlIFBpeGVsQ2xvY2ssCiAgZG91YmxlIFdyaXRl YmFja0hSYXRpbywKICBkb3VibGUgV3JpdGViYWNrVlJhdGlvLAogIHVuc2lnbmVkIGludCBXcml0 ZWJhY2tMdW1hSFRhcHMsCiAgdW5zaWduZWQgaW50IFdyaXRlYmFja0x1bWFWVGFwcywKICB1bnNp Z25lZCBpbnQgV3JpdGViYWNrQ2hyb21hSFRhcHMsCiAgdW5zaWduZWQgaW50IFdyaXRlYmFja0No cm9tYVZUYXBzLAogIGRvdWJsZSBXcml0ZWJhY2tEZXN0aW5hdGlvbldpZHRoLAogIHVuc2lnbmVk IGludCBIVG90YWwsCiAgdW5zaWduZWQgaW50IFdyaXRlYmFja0Nocm9tYUxpbmVCdWZmZXJXaWR0 aCk7CiMgMzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwv ZGlzcGxheV9tb2RlX2xpYi5oIiAyCgplbnVtIGRtbF9wcm9qZWN0IHsKIERNTF9QUk9KRUNUX1VO REVGSU5FRCwKIERNTF9QUk9KRUNUX1JBVkVOMSwKIERNTF9QUk9KRUNUX05BVkkxMCwKIERNTF9Q Uk9KRUNUX05BVkkxMHYyLAogRE1MX1BST0pFQ1RfRENOMjEsCn07CgpzdHJ1Y3QgZGlzcGxheV9t b2RlX2xpYjsKCnN0cnVjdCBkbWxfZnVuY3Mgewogdm9pZCAoKnJxX2RsZ19nZXRfZGxnX3JlZyko CiAgIHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKICAgZGlzcGxheV9kbGdfcmVn c19zdCAqZGxnX3JlZ3MsCiAgIGRpc3BsYXlfdHR1X3JlZ3Nfc3QgKnR0dV9yZWdzLAogICBkaXNw bGF5X2UyZV9waXBlX3BhcmFtc19zdCAqZTJlX3BpcGVfcGFyYW0sCiAgIGNvbnN0IHVuc2lnbmVk IGludCBudW1fcGlwZXMsCiAgIGNvbnN0IHVuc2lnbmVkIGludCBwaXBlX2lkeCwKICAgY29uc3Qg Ym9vbCBjc3RhdGVfZW4sCiAgIGNvbnN0IGJvb2wgcHN0YXRlX2VuLAogICBjb25zdCBib29sIHZt X2VuLAogICBjb25zdCBib29sIGlnbm9yZV92aWV3cG9ydF9wb3MsCiAgIGNvbnN0IGJvb2wgaW1t ZWRpYXRlX2ZsaXBfc3VwcG9ydCk7CiB2b2lkICgqcnFfZGxnX2dldF9ycV9yZWcpKAogIHN0cnVj dCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKICBkaXNwbGF5X3JxX3JlZ3Nfc3QgKnJxX3Jl Z3MsCiAgY29uc3QgZGlzcGxheV9waXBlX3BhcmFtc19zdCBwaXBlX3BhcmFtKTsKIHZvaWQgKCpy ZWNhbGN1bGF0ZSkoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliKTsKIHZvaWQgKCp2 YWxpZGF0ZSkoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliKTsKfTsKCnN0cnVjdCBk aXNwbGF5X21vZGVfbGliIHsKIHN0cnVjdCBfdmNzX2RwaV9pcF9wYXJhbXNfc3QgaXA7CiBzdHJ1 Y3QgX3Zjc19kcGlfc29jX2JvdW5kaW5nX2JveF9zdCBzb2M7CiBlbnVtIGRtbF9wcm9qZWN0IHBy b2plY3Q7CiBzdHJ1Y3QgdmJhX3ZhcnNfc3QgdmJhOwogc3RydWN0IGRhbF9sb2dnZXIgKmxvZ2dl cjsKIHN0cnVjdCBkbWxfZnVuY3MgZnVuY3M7Cn07Cgp2b2lkIGRtbF9pbml0X2luc3RhbmNlKHN0 cnVjdCBkaXNwbGF5X21vZGVfbGliICpsaWIsCiAgY29uc3Qgc3RydWN0IF92Y3NfZHBpX3NvY19i b3VuZGluZ19ib3hfc3QgKnNvY19iYiwKICBjb25zdCBzdHJ1Y3QgX3Zjc19kcGlfaXBfcGFyYW1z X3N0ICppcF9wYXJhbXMsCiAgZW51bSBkbWxfcHJvamVjdCBwcm9qZWN0KTsKCmNvbnN0IGNoYXIg KmRtbF9nZXRfc3RhdHVzX21lc3NhZ2UoZW51bSBkbV92YWxpZGF0aW9uX3N0YXR1cyBzdGF0dXMp OwojIDQxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIg MgojIDUyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIK c3RydWN0IGRjX3ZlcnNpb25zIHsKIGNvbnN0IGNoYXIgKmRjX3ZlcjsKIHN0cnVjdCBkbWN1X3Zl cnNpb24gZG1jdV92ZXJzaW9uOwp9OwoKZW51bSBkcF9wcm90b2NvbF92ZXJzaW9uIHsKIERQX1ZF UlNJT05fMV80LAp9OwoKZW51bSBkY19wbGFuZV90eXBlIHsKIERDX1BMQU5FX1RZUEVfSU5WQUxJ RCwKIERDX1BMQU5FX1RZUEVfRENFX1JHQiwKIERDX1BMQU5FX1RZUEVfRENFX1VOREVSTEFZLAog RENfUExBTkVfVFlQRV9EQ05fVU5JVkVSU0FMLAp9OwoKc3RydWN0IGRjX3BsYW5lX2NhcCB7CiBl bnVtIGRjX3BsYW5lX3R5cGUgdHlwZTsKIHVpbnQzMl90IGJsZW5kc193aXRoX2Fib3ZlIDogMTsK IHVpbnQzMl90IGJsZW5kc193aXRoX2JlbG93IDogMTsKIHVpbnQzMl90IHBlcl9waXhlbF9hbHBo YSA6IDE7CiBzdHJ1Y3QgewogIHVpbnQzMl90IGFyZ2I4ODg4IDogMTsKICB1aW50MzJfdCBudjEy IDogMTsKICB1aW50MzJfdCBmcDE2IDogMTsKICB1aW50MzJfdCBwMDEwIDogMTsKICB1aW50MzJf dCBheXV2IDogMTsKIH0gcGl4ZWxfZm9ybWF0X3N1cHBvcnQ7CgoKCiBzdHJ1Y3QgewogIHVpbnQz Ml90IGFyZ2I4ODg4OwogIHVpbnQzMl90IG52MTI7CiAgdWludDMyX3QgZnAxNjsKIH0gbWF4X3Vw c2NhbGVfZmFjdG9yOwoKCgogc3RydWN0IHsKICB1aW50MzJfdCBhcmdiODg4ODsKICB1aW50MzJf dCBudjEyOwogIHVpbnQzMl90IGZwMTY7CiB9IG1heF9kb3duc2NhbGVfZmFjdG9yOwp9OwoKc3Ry dWN0IGRjX2NhcHMgewogdWludDMyX3QgbWF4X3N0cmVhbXM7CiB1aW50MzJfdCBtYXhfbGlua3M7 CiB1aW50MzJfdCBtYXhfYXVkaW9zOwogdWludDMyX3QgbWF4X3NsYXZlX3BsYW5lczsKIHVpbnQz Ml90IG1heF9wbGFuZXM7CiB1aW50MzJfdCBtYXhfZG93bnNjYWxlX3JhdGlvOwogdWludDMyX3Qg aTJjX3NwZWVkX2luX2toejsKIHVpbnQzMl90IGRtZGF0YV9hbGxvY19zaXplOwogdW5zaWduZWQg aW50IG1heF9jdXJzb3Jfc2l6ZTsKIHVuc2lnbmVkIGludCBtYXhfdmlkZW9fd2lkdGg7CiBpbnQg bGluZWFyX3BpdGNoX2FsaWdubWVudDsKIGJvb2wgZGNjX2NvbnN0X2NvbG9yOwogYm9vbCBkeW5h bWljX2F1ZGlvOwogYm9vbCBpc19hcHU7CiBib29sIGR1YWxfbGlua19kdmk7CiBib29sIHBvc3Rf YmxlbmRfY29sb3JfcHJvY2Vzc2luZzsKIGJvb2wgZm9yY2VfZHBfdHBzNF9mb3JfY3AyNTIwOwog Ym9vbCBkaXNhYmxlX2RwX2Nsa19zaGFyZTsKIGJvb2wgcHNwX3NldHVwX3BhbmVsX21vZGU7CiBi b29sIGV4dGVuZGVkX2F1eF90aW1lb3V0X3N1cHBvcnQ7CiBib29sIGRtY3ViX3N1cHBvcnQ7CiBi b29sIGh3XzNkX2x1dDsKIGVudW0gZHBfcHJvdG9jb2xfdmVyc2lvbiBtYXhfZHBfcHJvdG9jb2xf dmVyc2lvbjsKIHN0cnVjdCBkY19wbGFuZV9jYXAgcGxhbmVzWzZdOwp9OwoKc3RydWN0IGRjX2J1 Z193YSB7CiBib29sIG5vX2Nvbm5lY3RfcGh5X2NvbmZpZzsKIGJvb2wgZGVkY24yMF8zMDVfd2E7 CiBib29sIHNraXBfY2xvY2tfdXBkYXRlOwp9OwoKc3RydWN0IGRjX2RjY19zdXJmYWNlX3BhcmFt IHsKIHN0cnVjdCBkY19zaXplIHN1cmZhY2Vfc2l6ZTsKIGVudW0gc3VyZmFjZV9waXhlbF9mb3Jt YXQgZm9ybWF0OwogZW51bSBzd2l6emxlX21vZGVfdmFsdWVzIHN3aXp6bGVfbW9kZTsKIGVudW0g ZGNfc2Nhbl9kaXJlY3Rpb24gc2NhbjsKfTsKCnN0cnVjdCBkY19kY2Nfc2V0dGluZyB7CiB1bnNp Z25lZCBpbnQgbWF4X2NvbXByZXNzZWRfYmxrX3NpemU7CiB1bnNpZ25lZCBpbnQgbWF4X3VuY29t cHJlc3NlZF9ibGtfc2l6ZTsKIGJvb2wgaW5kZXBlbmRlbnRfNjRiX2Jsa3M7Cn07CgpzdHJ1Y3Qg ZGNfc3VyZmFjZV9kY2NfY2FwIHsKIHVuaW9uIHsKICBzdHJ1Y3QgewogICBzdHJ1Y3QgZGNfZGNj X3NldHRpbmcgcmdiOwogIH0gZ3JwaDsKCiAgc3RydWN0IHsKICAgc3RydWN0IGRjX2RjY19zZXR0 aW5nIGx1bWE7CiAgIHN0cnVjdCBkY19kY2Nfc2V0dGluZyBjaHJvbWE7CiAgfSB2aWRlbzsKIH07 CgogYm9vbCBjYXBhYmxlOwogYm9vbCBjb25zdF9jb2xvcl9zdXBwb3J0Owp9OwoKc3RydWN0IGRj X3N0YXRpY19zY3JlZW5fcGFyYW1zIHsKIHN0cnVjdCB7CiAgYm9vbCBmb3JjZV90cmlnZ2VyOwog IGJvb2wgY3Vyc29yX3VwZGF0ZTsKICBib29sIHN1cmZhY2VfdXBkYXRlOwogIGJvb2wgb3Zlcmxh eV91cGRhdGU7CiB9IHRyaWdnZXJzOwogdW5zaWduZWQgaW50IG51bV9mcmFtZXM7Cn07CiMgMTk3 ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIKZW51bSBz dXJmYWNlX3VwZGF0ZV90eXBlIHsKIFVQREFURV9UWVBFX0ZBU1QsCiBVUERBVEVfVFlQRV9NRUQs CiBVUERBVEVfVFlQRV9GVUxMLAp9OwoKCnN0cnVjdCBkYzsKc3RydWN0IGRjX3BsYW5lX3N0YXRl OwpzdHJ1Y3QgZGNfc3RhdGU7CgoKc3RydWN0IGRjX2NhcF9mdW5jcyB7CiBib29sICgqZ2V0X2Rj Y19jb21wcmVzc2lvbl9jYXApKGNvbnN0IHN0cnVjdCBkYyAqZGMsCiAgIGNvbnN0IHN0cnVjdCBk Y19kY2Nfc3VyZmFjZV9wYXJhbSAqaW5wdXQsCiAgIHN0cnVjdCBkY19zdXJmYWNlX2RjY19jYXAg Km91dHB1dCk7Cn07CgpzdHJ1Y3QgbGlua190cmFpbmluZ19zZXR0aW5nczsKCgoKc3RydWN0IGRj X2NvbmZpZyB7CiBib29sIGdwdV92bV9zdXBwb3J0OwogYm9vbCBkaXNhYmxlX2Rpc3BfcGxsX3No YXJpbmc7CiBib29sIGZiY19zdXBwb3J0OwogYm9vbCBvcHRpbWl6ZV9lZHBfbGlua19yYXRlOwog Ym9vbCBkaXNhYmxlX2ZyYWN0aW9uYWxfcHdtOwogYm9vbCBhbGxvd19zZWFtbGVzc19ib290X29w dGltaXphdGlvbjsKIGJvb2wgcG93ZXJfZG93bl9kaXNwbGF5X29uX2Jvb3Q7CiBib29sIGVkcF9u b3RfY29ubmVjdGVkOwogYm9vbCBmb3JjZV9lbnVtX2VkcDsKIGJvb2wgZm9yY2VkX2Nsb2NrczsK IGJvb2wgZGlzYWJsZV9leHRlbmRlZF90aW1lb3V0X3N1cHBvcnQ7CiBib29sIG11bHRpX21vbl9w cF9tY2xrX3N3aXRjaDsKfTsKCmVudW0gdmlzdWFsX2NvbmZpcm0gewogVklTVUFMX0NPTkZJUk1f RElTQUJMRSA9IDAsCiBWSVNVQUxfQ09ORklSTV9TVVJGQUNFID0gMSwKIFZJU1VBTF9DT05GSVJN X0hEUiA9IDIsCiBWSVNVQUxfQ09ORklSTV9NUENUUkVFID0gNCwKfTsKCmVudW0gZGNjX29wdGlv biB7CiBEQ0NfRU5BQkxFID0gMCwKIERDQ19ESVNBQkxFID0gMSwKIERDQ19IQUxGX1JFUV9ESVNB TEJFID0gMiwKfTsKCmVudW0gcGlwZV9zcGxpdF9wb2xpY3kgewogTVBDX1NQTElUX0RZTkFNSUMg PSAwLAogTVBDX1NQTElUX0FWT0lEID0gMSwKIE1QQ19TUExJVF9BVk9JRF9NVUxUX0RJU1AgPSAy LAp9OwoKZW51bSB3bV9yZXBvcnRfbW9kZSB7CiBXTV9SRVBPUlRfREVGQVVMVCA9IDAsCiBXTV9S RVBPUlRfT1ZFUlJJREUgPSAxLAp9OwplbnVtIGR0bV9wc3RhdGV7CiBkdG1fbGV2ZWxfcDAgPSAw LAogZHRtX2xldmVsX3AxLAogZHRtX2xldmVsX3AyLAogZHRtX2xldmVsX3AzLAogZHRtX2xldmVs X3A0LAp9OwoKZW51bSBkY25fcHdyX3N0YXRlIHsKIERDTl9QV1JfU1RBVEVfVU5LTk9XTiA9IC0x LAogRENOX1BXUl9TVEFURV9NSVNTSU9OX01PREUgPSAwLAogRENOX1BXUl9TVEFURV9MT1dfUE9X RVIgPSAzLAp9OwoKCgoKCnN0cnVjdCBkY19jbG9ja3MgewogaW50IGRpc3BjbGtfa2h6OwogaW50 IGRwcGNsa19raHo7CiBpbnQgZGNmY2xrX2toejsKIGludCBzb2NjbGtfa2h6OwogaW50IGRjZmNs a19kZWVwX3NsZWVwX2toejsKIGludCBmY2xrX2toejsKIGludCBwaHljbGtfa2h6OwogaW50IGRy YW1jbGtfa2h6OwogYm9vbCBwX3N0YXRlX2NoYW5nZV9zdXBwb3J0OwogZW51bSBkY25fcHdyX3N0 YXRlIHB3cl9zdGF0ZTsKCgoKCiBib29sIHByZXZfcF9zdGF0ZV9jaGFuZ2Vfc3VwcG9ydDsKIGVu dW0gZHRtX3BzdGF0ZSBkdG1fbGV2ZWw7CiBpbnQgbWF4X3N1cHBvcnRlZF9kcHBjbGtfa2h6Owog aW50IG1heF9zdXBwb3J0ZWRfZGlzcGNsa19raHo7CiBpbnQgYndfZHBwY2xrX2toejsKIGludCBi d19kaXNwY2xrX2toejsKfTsKCnN0cnVjdCBkY19id192YWxpZGF0aW9uX3Byb2ZpbGUgewogYm9v bCBlbmFibGU7CgogdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsX3RpY2tzOwogdW5zaWduZWQgbG9u ZyBsb25nIHZvbHRhZ2VfbGV2ZWxfdGlja3M7CiB1bnNpZ25lZCBsb25nIGxvbmcgd2F0ZXJtYXJr X3RpY2tzOwogdW5zaWduZWQgbG9uZyBsb25nIHJxX2RsZ190aWNrczsKCiB1bnNpZ25lZCBsb25n IGxvbmcgdG90YWxfY291bnQ7CiB1bnNpZ25lZCBsb25nIGxvbmcgc2tpcF9mYXN0X2NvdW50Owog dW5zaWduZWQgbG9uZyBsb25nIHNraXBfcGFzc19jb3VudDsKIHVuc2lnbmVkIGxvbmcgbG9uZyBz a2lwX2ZhaWxfY291bnQ7Cn07CiMgMzQ5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvZGMuaCIKc3RydWN0IGRjX2RlYnVnX29wdGlvbnMgewogZW51bSB2aXN1YWxf Y29uZmlybSB2aXN1YWxfY29uZmlybTsKIGJvb2wgc2FuaXR5X2NoZWNrczsKIGJvb2wgbWF4X2Rp c3BfY2xrOwogYm9vbCBzdXJmYWNlX3RyYWNlOwogYm9vbCB0aW1pbmdfdHJhY2U7CiBib29sIGNs b2NrX3RyYWNlOwogYm9vbCB2YWxpZGF0aW9uX3RyYWNlOwogYm9vbCBiYW5kd2lkdGhfY2FsY3Nf dHJhY2U7CiBpbnQgbWF4X2Rvd25zY2FsZV9zcmNfd2lkdGg7CgoKIGJvb2wgZGlzYWJsZV9zdHV0 dGVyOwogYm9vbCB1c2VfbWF4X2xiOwogZW51bSBkY2Nfb3B0aW9uIGRpc2FibGVfZGNjOwogZW51 bSBwaXBlX3NwbGl0X3BvbGljeSBwaXBlX3NwbGl0X3BvbGljeTsKIGJvb2wgZm9yY2Vfc2luZ2xl X2Rpc3BfcGlwZV9zcGxpdDsKIGJvb2wgdm9sdGFnZV9hbGlnbl9mY2xrOwoKIGJvb2wgZGlzYWJs ZV9kZnNfYnlwYXNzOwogYm9vbCBkaXNhYmxlX2RwcF9wb3dlcl9nYXRlOwogYm9vbCBkaXNhYmxl X2h1YnBfcG93ZXJfZ2F0ZTsKIGJvb2wgZGlzYWJsZV9kc2NfcG93ZXJfZ2F0ZTsKIGludCBkc2Nf bWluX3NsaWNlX2hlaWdodF9vdmVycmlkZTsKIGludCBkc2NfYnBwX2luY3JlbWVudF9kaXY7CiBi b29sIG5hdGl2ZTQyMl9zdXBwb3J0OwogYm9vbCBkaXNhYmxlX3BwbGliX3dtX3JhbmdlOwogZW51 bSB3bV9yZXBvcnRfbW9kZSBwcGxpYl93bV9yZXBvcnRfbW9kZTsKIHVuc2lnbmVkIGludCBtaW5f ZGlzcF9jbGtfa2h6OwogdW5zaWduZWQgaW50IG1pbl9kcHBfY2xrX2toejsKIGludCBzcl9leGl0 X3RpbWVfZHBtMF9uczsKIGludCBzcl9lbnRlcl9wbHVzX2V4aXRfdGltZV9kcG0wX25zOwogaW50 IHNyX2V4aXRfdGltZV9uczsKIGludCBzcl9lbnRlcl9wbHVzX2V4aXRfdGltZV9uczsKIGludCB1 cmdlbnRfbGF0ZW5jeV9uczsKIHVpbnQzMl90IHVuZGVyZmxvd19hc3NlcnRfZGVsYXlfdXM7CiBp bnQgcGVyY2VudF9vZl9pZGVhbF9kcmFtYnc7CiBpbnQgZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5j eV9uczsKIGJvb2wgb3B0aW1pemVkX3dhdGVybWFyazsKIGludCBhbHdheXNfc2NhbGU7CiBib29s IGRpc2FibGVfcHBsaWJfY2xvY2tfcmVxdWVzdDsKIGJvb2wgZGlzYWJsZV9jbG9ja19nYXRlOwog Ym9vbCBkaXNhYmxlX2RtY3U7CiBib29sIGRpc2FibGVfcHNyOwogYm9vbCBmb3JjZV9hYm1fZW5h YmxlOwogYm9vbCBkaXNhYmxlX3N0ZXJlb19zdXBwb3J0OwogYm9vbCB2c3Jfc3VwcG9ydDsKIGJv b2wgcGVyZm9ybWFuY2VfdHJhY2U7CiBib29sIGF6X2VuZHBvaW50X211dGVfb25seTsKIGJvb2wg YWx3YXlzX3VzZV9yZWdhbW1hOwogYm9vbCBwMDEwX21wb19zdXBwb3J0OwogYm9vbCByZWNvdmVy eV9lbmFibGVkOwogYm9vbCBhdm9pZF92Ymlvc19leGVjX3RhYmxlOwogYm9vbCBzY2xfcmVzZXRf bGVuZ3RoMTA7CiBib29sIGhkbWkyMF9kaXNhYmxlOwogYm9vbCBza2lwX2RldGVjdGlvbl9saW5r X3RyYWluaW5nOwogYm9vbCByZW1vdmVfZGlzY29ubmVjdF9lZHA7CiB1bnNpZ25lZCBpbnQgZm9y Y2Vfb2RtX2NvbWJpbmU7CiB1bnNpZ25lZCBpbnQgZm9yY2VfZmNsa19raHo7CiBib29sIGRpc2Fi bGVfdHJpX2J1ZjsKIGJvb2wgZG11Yl9vZmZsb2FkX2VuYWJsZWQ7CiBib29sIGRtY3ViX2VtdWxh dGlvbjsKIGJvb2wgZG11Yl9jb21tYW5kX3RhYmxlOwogc3RydWN0IGRjX2J3X3ZhbGlkYXRpb25f cHJvZmlsZSBid192YWxfcHJvZmlsZTsKIGJvb2wgZGlzYWJsZV9mZWM7CiBib29sIGRpc2FibGVf NDhtaHpfcHdyZHduOwoKCgogdW5zaWduZWQgaW50IGZvcmNlX21pbl9kY2ZjbGtfbWh6OwogYm9v bCBkaXNhYmxlX3RpbWluZ19zeW5jOwogYm9vbCBjbV9pbl9ieXBhc3M7CiBpbnQgZm9yY2VfY2xv Y2tfbW9kZTsKCiBib29sIG52MTJfaWZsaXBfdm1fd2E7CiBib29sIGRpc2FibGVfZHJhbV9jbG9j a19jaGFuZ2VfdmFjdGl2ZV9zdXBwb3J0OwogYm9vbCB2YWxpZGF0ZV9kbWxfb3V0cHV0OwogYm9v bCBlbmFibGVfZG1jdWJfc3VyZmFjZV9mbGlwOwogYm9vbCB1c2JjX2NvbWJvX3BoeV9yZXNldF93 YTsKIGJvb2wgZGlzYWJsZV9kc2M7Cn07CgpzdHJ1Y3QgZGNfZGVidWdfZGF0YSB7CiB1aW50MzJf dCBsdEZhaWxDb3VudDsKIHVpbnQzMl90IGkyY0Vycm9yQ291bnQ7CiB1aW50MzJfdCBhdXhFcnJv ckNvdW50Owp9OwoKc3RydWN0IGRjX3BoeV9hZGRyX3NwYWNlX2NvbmZpZyB7CiBzdHJ1Y3Qgewog IHVpbnQ2NF90IHN0YXJ0X2FkZHI7CiAgdWludDY0X3QgZW5kX2FkZHI7CiAgdWludDY0X3QgZmJf dG9wOwogIHVpbnQ2NF90IGZiX29mZnNldDsKICB1aW50NjRfdCBmYl9iYXNlOwogIHVpbnQ2NF90 IGFncF90b3A7CiAgdWludDY0X3QgYWdwX2JvdDsKICB1aW50NjRfdCBhZ3BfYmFzZTsKIH0gc3lz dGVtX2FwZXJ0dXJlOwoKIHN0cnVjdCB7CiAgdWludDY0X3QgcGFnZV90YWJsZV9zdGFydF9hZGRy OwogIHVpbnQ2NF90IHBhZ2VfdGFibGVfZW5kX2FkZHI7CiAgdWludDY0X3QgcGFnZV90YWJsZV9i YXNlX2FkZHI7CiB9IGdhcnRfY29uZmlnOwoKIGJvb2wgdmFsaWQ7CiB1aW50NjRfdCBwYWdlX3Rh YmxlX2RlZmF1bHRfcGFnZV9hZGRyOwp9OwoKc3RydWN0IGRjX3ZpcnR1YWxfYWRkcl9zcGFjZV9j b25maWcgewogdWludDY0X3QgcGFnZV90YWJsZV9iYXNlX2FkZHI7CiB1aW50NjRfdCBwYWdlX3Rh YmxlX3N0YXJ0X2FkZHI7CiB1aW50NjRfdCBwYWdlX3RhYmxlX2VuZF9hZGRyOwogdWludDMyX3Qg cGFnZV90YWJsZV9ibG9ja19zaXplX2luX2J5dGVzOwogdWludDhfdCBwYWdlX3RhYmxlX2RlcHRo Owp9OwoKc3RydWN0IGRjX2JvdW5kaW5nX2JveF9vdmVycmlkZXMgewogaW50IHNyX2V4aXRfdGlt ZV9uczsKIGludCBzcl9lbnRlcl9wbHVzX2V4aXRfdGltZV9uczsKIGludCB1cmdlbnRfbGF0ZW5j eV9uczsKIGludCBwZXJjZW50X29mX2lkZWFsX2RyYW1idzsKIGludCBkcmFtX2Nsb2NrX2NoYW5n ZV9sYXRlbmN5X25zOwoKCgoKIGludCBtaW5fZGNmY2xrX21oejsKfTsKCnN0cnVjdCBkY19zdGF0 ZTsKc3RydWN0IHJlc291cmNlX3Bvb2w7CnN0cnVjdCBkY2VfaHdzZXE7CnN0cnVjdCBncHVfaW5m b19zb2NfYm91bmRpbmdfYm94X3YxXzA7CnN0cnVjdCBkYyB7CiBzdHJ1Y3QgZGNfdmVyc2lvbnMg dmVyc2lvbnM7CiBzdHJ1Y3QgZGNfY2FwcyBjYXBzOwogc3RydWN0IGRjX2NhcF9mdW5jcyBjYXBf ZnVuY3M7CiBzdHJ1Y3QgZGNfY29uZmlnIGNvbmZpZzsKIHN0cnVjdCBkY19kZWJ1Z19vcHRpb25z IGRlYnVnOwogc3RydWN0IGRjX2JvdW5kaW5nX2JveF9vdmVycmlkZXMgYmJfb3ZlcnJpZGVzOwog c3RydWN0IGRjX2J1Z193YSB3b3JrX2Fyb3VuZHM7CiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4Owog c3RydWN0IGRjX3BoeV9hZGRyX3NwYWNlX2NvbmZpZyB2bV9wYV9jb25maWc7CgogdWludDhfdCBs aW5rX2NvdW50Owogc3RydWN0IGRjX2xpbmsgKmxpbmtzWzYgKiAyXTsKCiBzdHJ1Y3QgZGNfc3Rh dGUgKmN1cnJlbnRfc3RhdGU7CiBzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqcmVzX3Bvb2w7Cgogc3Ry dWN0IGNsa19tZ3IgKmNsa19tZ3I7CgoKIHN0cnVjdCBkbV9wcF9jbG9ja19sZXZlbHMgc2Nsa19s dmxzOwoKCiBzdHJ1Y3QgYndfY2FsY3NfZGNlaXAgKmJ3X2RjZWlwOwogc3RydWN0IGJ3X2NhbGNz X3ZiaW9zICpid192YmlvczsKCiBzdHJ1Y3QgZGNuX3NvY19ib3VuZGluZ19ib3ggKmRjbl9zb2M7 CiBzdHJ1Y3QgZGNuX2lwX3BhcmFtcyAqZGNuX2lwOwogc3RydWN0IGRpc3BsYXlfbW9kZV9saWIg ZG1sOwoKCgogc3RydWN0IGh3X3NlcXVlbmNlcl9mdW5jcyBod3NzOwogc3RydWN0IGRjZV9od3Nl cSAqaHdzZXE7CgoKIGJvb2wgb3B0aW1pemVkX3JlcXVpcmVkOwoKCiBpbnQgb3B0aW1pemVfc2Vh bWxlc3NfYm9vdF9zdHJlYW1zOwoKCiBzdHJ1Y3QgY29tcHJlc3NvciAqZmJjX2NvbXByZXNzb3I7 Cgogc3RydWN0IGRjX2RlYnVnX2RhdGEgZGVidWdfZGF0YTsKCiBjb25zdCBjaGFyICpidWlsZF9p ZDsKIHN0cnVjdCB2bV9oZWxwZXIgKnZtX2hlbHBlcjsKIGNvbnN0IHN0cnVjdCBncHVfaW5mb19z b2NfYm91bmRpbmdfYm94X3YxXzAgKnNvY19ib3VuZGluZ19ib3g7Cn07CgplbnVtIGZyYW1lX2J1 ZmZlcl9tb2RlIHsKIEZSQU1FX0JVRkZFUl9NT0RFX0xPQ0FMX09OTFkgPSAwLAogRlJBTUVfQlVG RkVSX01PREVfWkZCX09OTFksCiBGUkFNRV9CVUZGRVJfTU9ERV9NSVhFRF9aRkJfQU5EX0xPQ0FM LAp9IDsKCnN0cnVjdCBkY2h1Yl9pbml0X2RhdGEgewogaW50NjRfdCB6ZmJfcGh5c19hZGRyX2Jh c2U7CiBpbnQ2NF90IHpmYl9tY19iYXNlX2FkZHI7CiB1aW50NjRfdCB6ZmJfc2l6ZV9pbl9ieXRl OwogZW51bSBmcmFtZV9idWZmZXJfbW9kZSBmYl9tb2RlOwogYm9vbCBkY2h1Yl9pbml0aWFsemll ZDsKIGJvb2wgZGNodWJfaW5mb192YWxpZDsKfTsKCnN0cnVjdCBkY19pbml0X2RhdGEgewogc3Ry dWN0IGh3X2FzaWNfaWQgYXNpY19pZDsKIHZvaWQgKmRyaXZlcjsKIHN0cnVjdCBjZ3NfZGV2aWNl ICpjZ3NfZGV2aWNlOwogc3RydWN0IGRjX2JvdW5kaW5nX2JveF9vdmVycmlkZXMgYmJfb3ZlcnJp ZGVzOwoKIGludCBudW1fdmlydHVhbF9saW5rczsKCgoKCiBzdHJ1Y3QgZGNfYmlvcyAqdmJpb3Nf b3ZlcnJpZGU7CiBlbnVtIGRjZV9lbnZpcm9ubWVudCBkY2VfZW52aXJvbm1lbnQ7Cgogc3RydWN0 IGRtdWJfb2ZmbG9hZF9mdW5jcyAqZG11Yl9pZjsKIHN0cnVjdCBkY19yZWdfaGVscGVyX3N0YXRl ICpkbXViX29mZmxvYWQ7Cgogc3RydWN0IGRjX2NvbmZpZyBmbGFnczsKIHVpbnQzMl90IGxvZ19t YXNrOwoKCgoKIGNvbnN0IHN0cnVjdCBncHVfaW5mb19zb2NfYm91bmRpbmdfYm94X3YxXzAgKnNv Y19ib3VuZGluZ19ib3g7Cn07CgpzdHJ1Y3QgZGNfY2FsbGJhY2tfaW5pdCB7CgoKCiB1aW50OF90 IHJlc2VydmVkOwoKfTsKCnN0cnVjdCBkYyAqZGNfY3JlYXRlKGNvbnN0IHN0cnVjdCBkY19pbml0 X2RhdGEgKmluaXRfcGFyYW1zKTsKdm9pZCBkY19oYXJkd2FyZV9pbml0KHN0cnVjdCBkYyAqZGMp OwoKaW50IGRjX2dldF92bWlkX3VzZV92ZWN0b3Ioc3RydWN0IGRjICpkYyk7CnZvaWQgZGNfc2V0 dXBfdm1fY29udGV4dChzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfdmlydHVhbF9hZGRyX3NwYWNl X2NvbmZpZyAqdmFfY29uZmlnLCBpbnQgdm1pZCk7CgppbnQgZGNfc2V0dXBfc3lzdGVtX2NvbnRl eHQoc3RydWN0IGRjICpkYywgc3RydWN0IGRjX3BoeV9hZGRyX3NwYWNlX2NvbmZpZyAqcGFfY29u ZmlnKTsKdm9pZCBkY19pbml0X2NhbGxiYWNrcyhzdHJ1Y3QgZGMgKmRjLAogIGNvbnN0IHN0cnVj dCBkY19jYWxsYmFja19pbml0ICppbml0X3BhcmFtcyk7CnZvaWQgZGNfZGVpbml0X2NhbGxiYWNr cyhzdHJ1Y3QgZGMgKmRjKTsKdm9pZCBkY19kZXN0cm95KHN0cnVjdCBkYyAqKmRjKTsKCgoKCgpl bnVtIHsKIFRSQU5TRkVSX0ZVTkNfUE9JTlRTID0gMTAyNQp9OwoKc3RydWN0IGRjX2hkcl9zdGF0 aWNfbWV0YWRhdGEgewoKIHVuc2lnbmVkIGludCBjaHJvbWF0aWNpdHlfZ3JlZW5feDsKIHVuc2ln bmVkIGludCBjaHJvbWF0aWNpdHlfZ3JlZW5feTsKIHVuc2lnbmVkIGludCBjaHJvbWF0aWNpdHlf Ymx1ZV94OwogdW5zaWduZWQgaW50IGNocm9tYXRpY2l0eV9ibHVlX3k7CiB1bnNpZ25lZCBpbnQg Y2hyb21hdGljaXR5X3JlZF94OwogdW5zaWduZWQgaW50IGNocm9tYXRpY2l0eV9yZWRfeTsKIHVu c2lnbmVkIGludCBjaHJvbWF0aWNpdHlfd2hpdGVfcG9pbnRfeDsKIHVuc2lnbmVkIGludCBjaHJv bWF0aWNpdHlfd2hpdGVfcG9pbnRfeTsKCiB1aW50MzJfdCBtaW5fbHVtaW5hbmNlOwogdWludDMy X3QgbWF4X2x1bWluYW5jZTsKIHVpbnQzMl90IG1heGltdW1fY29udGVudF9saWdodF9sZXZlbDsK IHVpbnQzMl90IG1heGltdW1fZnJhbWVfYXZlcmFnZV9saWdodF9sZXZlbDsKfTsKCmVudW0gZGNf dHJhbnNmZXJfZnVuY190eXBlIHsKIFRGX1RZUEVfUFJFREVGSU5FRCwKIFRGX1RZUEVfRElTVFJJ QlVURURfUE9JTlRTLAogVEZfVFlQRV9CWVBBU1MsCiBURl9UWVBFX0hXUFdMCn07CgpzdHJ1Y3Qg ZGNfdHJhbnNmZXJfZnVuY19kaXN0cmlidXRlZF9wb2ludHMgewogc3RydWN0IGZpeGVkMzFfMzIg cmVkW1RSQU5TRkVSX0ZVTkNfUE9JTlRTXTsKIHN0cnVjdCBmaXhlZDMxXzMyIGdyZWVuW1RSQU5T RkVSX0ZVTkNfUE9JTlRTXTsKIHN0cnVjdCBmaXhlZDMxXzMyIGJsdWVbVFJBTlNGRVJfRlVOQ19Q T0lOVFNdOwoKIHVpbnQxNl90IGVuZF9leHBvbmVudDsKIHVpbnQxNl90IHhfcG9pbnRfYXRfeTFf cmVkOwogdWludDE2X3QgeF9wb2ludF9hdF95MV9ncmVlbjsKIHVpbnQxNl90IHhfcG9pbnRfYXRf eTFfYmx1ZTsKfTsKCmVudW0gZGNfdHJhbnNmZXJfZnVuY19wcmVkZWZpbmVkIHsKIFRSQU5TRkVS X0ZVTkNUSU9OX1NSR0IsCiBUUkFOU0ZFUl9GVU5DVElPTl9CVDcwOSwKIFRSQU5TRkVSX0ZVTkNU SU9OX1BRLAogVFJBTlNGRVJfRlVOQ1RJT05fTElORUFSLAogVFJBTlNGRVJfRlVOQ1RJT05fVU5J VFksCiBUUkFOU0ZFUl9GVU5DVElPTl9ITEcsCiBUUkFOU0ZFUl9GVU5DVElPTl9ITEcxMiwKIFRS QU5TRkVSX0ZVTkNUSU9OX0dBTU1BMjIsCiBUUkFOU0ZFUl9GVU5DVElPTl9HQU1NQTI0LAogVFJB TlNGRVJfRlVOQ1RJT05fR0FNTUEyNgp9OwoKCnN0cnVjdCBkY190cmFuc2Zlcl9mdW5jIHsKIHN0 cnVjdCBrcmVmIHJlZmNvdW50OwogZW51bSBkY190cmFuc2Zlcl9mdW5jX3R5cGUgdHlwZTsKIGVu dW0gZGNfdHJhbnNmZXJfZnVuY19wcmVkZWZpbmVkIHRmOwoKIHVpbnQzMl90IHNkcl9yZWZfd2hp dGVfbGV2ZWw7CiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwogdW5pb24gewogIHN0cnVjdCBwd2xf cGFyYW1zIHB3bDsKICBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuY19kaXN0cmlidXRlZF9wb2ludHMg dGZfcHRzOwogfTsKfTsKCgp1bmlvbiBkY18zZGx1dF9zdGF0ZSB7CiBzdHJ1Y3QgewogIHVpbnQz Ml90IGluaXRpYWxpemVkOjE7CiAgdWludDMyX3Qgcm11X2lkeF92YWxpZDoxOwogIHVpbnQzMl90 IHJtdV9tdXhfbnVtOjM7CiAgdWludDMyX3QgbXBjX3JtdTBfbXV4OjQ7CiAgdWludDMyX3QgbXBj X3JtdTFfbXV4OjQ7CiAgdWludDMyX3QgbXBjX3JtdTJfbXV4OjQ7CiAgdWludDMyX3QgcmVzZXJ2 ZWQ6MTU7CiB9IGJpdHM7CiB1aW50MzJfdCByYXc7Cn07CgoKc3RydWN0IGRjXzNkbHV0IHsKIHN0 cnVjdCBrcmVmIHJlZmNvdW50Owogc3RydWN0IHRldHJhaGVkcmFsX3BhcmFtcyBsdXRfM2Q7CiBz dHJ1Y3QgZml4ZWQzMV8zMiBoZHJfbXVsdGlwbGllcjsKIGJvb2wgaW5pdGlhbGl6ZWQ7CiB1bmlv biBkY18zZGx1dF9zdGF0ZSBzdGF0ZTsKIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7Cn07CgoKCgoK c3RydWN0IGRjX3BsYW5lX3N0YXR1cyB7CiBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyByZXF1ZXN0 ZWRfYWRkcmVzczsKIHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzIGN1cnJlbnRfYWRkcmVzczsKIGJv b2wgaXNfZmxpcF9wZW5kaW5nOwogYm9vbCBpc19yaWdodF9leWU7Cn07Cgp1bmlvbiBzdXJmYWNl X3VwZGF0ZV9mbGFncyB7Cgogc3RydWN0IHsKICB1aW50MzJfdCBhZGRyX3VwZGF0ZToxOwoKICB1 aW50MzJfdCBkY2NfY2hhbmdlOjE7CiAgdWludDMyX3QgY29sb3Jfc3BhY2VfY2hhbmdlOjE7CiAg dWludDMyX3QgaG9yaXpvbnRhbF9taXJyb3JfY2hhbmdlOjE7CiAgdWludDMyX3QgcGVyX3BpeGVs X2FscGhhX2NoYW5nZToxOwogIHVpbnQzMl90IGdsb2JhbF9hbHBoYV9jaGFuZ2U6MTsKICB1aW50 MzJfdCBoZHJfbXVsdDoxOwogIHVpbnQzMl90IHJvdGF0aW9uX2NoYW5nZToxOwogIHVpbnQzMl90 IHN3aXp6bGVfY2hhbmdlOjE7CiAgdWludDMyX3Qgc2NhbGluZ19jaGFuZ2U6MTsKICB1aW50MzJf dCBwb3NpdGlvbl9jaGFuZ2U6MTsKICB1aW50MzJfdCBpbl90cmFuc2Zlcl9mdW5jX2NoYW5nZTox OwogIHVpbnQzMl90IGlucHV0X2NzY19jaGFuZ2U6MTsKICB1aW50MzJfdCBjb2VmZl9yZWR1Y3Rp b25fY2hhbmdlOjE7CiAgdWludDMyX3Qgb3V0cHV0X3RmX2NoYW5nZToxOwogIHVpbnQzMl90IHBp eGVsX2Zvcm1hdF9jaGFuZ2U6MTsKICB1aW50MzJfdCBwbGFuZV9zaXplX2NoYW5nZToxOwoKCiAg dWludDMyX3QgbmV3X3BsYW5lOjE7CiAgdWludDMyX3QgYnBwX2NoYW5nZToxOwogIHVpbnQzMl90 IGdhbW1hX2NoYW5nZToxOwogIHVpbnQzMl90IGJhbmR3aWR0aF9jaGFuZ2U6MTsKICB1aW50MzJf dCBjbG9ja19jaGFuZ2U6MTsKICB1aW50MzJfdCBzdGVyZW9fZm9ybWF0X2NoYW5nZToxOwogIHVp bnQzMl90IGZ1bGxfdXBkYXRlOjE7CiB9IGJpdHM7CgogdWludDMyX3QgcmF3Owp9OwoKc3RydWN0 IGRjX3BsYW5lX3N0YXRlIHsKIHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzIGFkZHJlc3M7CiBzdHJ1 Y3QgZGNfcGxhbmVfZmxpcF90aW1lIHRpbWU7CiBib29sIHRyaXBsZWJ1ZmZlcl9mbGlwczsKIHN0 cnVjdCBzY2FsaW5nX3RhcHMgc2NhbGluZ19xdWFsaXR5Owogc3RydWN0IHJlY3Qgc3JjX3JlY3Q7 CiBzdHJ1Y3QgcmVjdCBkc3RfcmVjdDsKIHN0cnVjdCByZWN0IGNsaXBfcmVjdDsKCiBzdHJ1Y3Qg cGxhbmVfc2l6ZSBwbGFuZV9zaXplOwogdW5pb24gZGNfdGlsaW5nX2luZm8gdGlsaW5nX2luZm87 Cgogc3RydWN0IGRjX3BsYW5lX2RjY19wYXJhbSBkY2M7Cgogc3RydWN0IGRjX2dhbW1hICpnYW1t YV9jb3JyZWN0aW9uOwogc3RydWN0IGRjX3RyYW5zZmVyX2Z1bmMgKmluX3RyYW5zZmVyX2Z1bmM7 CiBzdHJ1Y3QgZGNfYmlhc19hbmRfc2NhbGUgKmJpYXNfYW5kX3NjYWxlOwogc3RydWN0IGRjX2Nz Y190cmFuc2Zvcm0gaW5wdXRfY3NjX2NvbG9yX21hdHJpeDsKIHN0cnVjdCBmaXhlZDMxXzMyIGNv ZWZmX3JlZHVjdGlvbl9mYWN0b3I7CiBzdHJ1Y3QgZml4ZWQzMV8zMiBoZHJfbXVsdDsKCgogc3Ry dWN0IGRjX2hkcl9zdGF0aWNfbWV0YWRhdGEgaGRyX3N0YXRpY19jdHg7CgogZW51bSBkY19jb2xv cl9zcGFjZSBjb2xvcl9zcGFjZTsKCiBzdHJ1Y3QgZGNfM2RsdXQgKmx1dDNkX2Z1bmM7CiBzdHJ1 Y3QgZGNfdHJhbnNmZXJfZnVuYyAqaW5fc2hhcGVyX2Z1bmM7CiBzdHJ1Y3QgZGNfdHJhbnNmZXJf ZnVuYyAqYmxlbmRfdGY7CgogZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQ7CiBlbnVt IGRjX3JvdGF0aW9uX2FuZ2xlIHJvdGF0aW9uOwogZW51bSBwbGFuZV9zdGVyZW9fZm9ybWF0IHN0 ZXJlb19mb3JtYXQ7CgogYm9vbCBpc190aWxpbmdfcm90YXRlZDsKIGJvb2wgcGVyX3BpeGVsX2Fs cGhhOwogYm9vbCBnbG9iYWxfYWxwaGE7CiBpbnQgZ2xvYmFsX2FscGhhX3ZhbHVlOwogYm9vbCB2 aXNpYmxlOwogYm9vbCBmbGlwX2ltbWVkaWF0ZTsKIGJvb2wgaG9yaXpvbnRhbF9taXJyb3I7CiBp bnQgbGF5ZXJfaW5kZXg7CgogdW5pb24gc3VyZmFjZV91cGRhdGVfZmxhZ3MgdXBkYXRlX2ZsYWdz OwoKIHN0cnVjdCBkY19wbGFuZV9zdGF0dXMgc3RhdHVzOwogc3RydWN0IGRjX2NvbnRleHQgKmN0 eDsKCgogYm9vbCBmb3JjZV9mdWxsX3VwZGF0ZTsKCgogZW51bSBkY19pcnFfc291cmNlIGlycV9z b3VyY2U7CiBzdHJ1Y3Qga3JlZiByZWZjb3VudDsKfTsKCnN0cnVjdCBkY19wbGFuZV9pbmZvIHsK IHN0cnVjdCBwbGFuZV9zaXplIHBsYW5lX3NpemU7CiB1bmlvbiBkY190aWxpbmdfaW5mbyB0aWxp bmdfaW5mbzsKIHN0cnVjdCBkY19wbGFuZV9kY2NfcGFyYW0gZGNjOwogZW51bSBzdXJmYWNlX3Bp eGVsX2Zvcm1hdCBmb3JtYXQ7CiBlbnVtIGRjX3JvdGF0aW9uX2FuZ2xlIHJvdGF0aW9uOwogZW51 bSBwbGFuZV9zdGVyZW9fZm9ybWF0IHN0ZXJlb19mb3JtYXQ7CiBlbnVtIGRjX2NvbG9yX3NwYWNl IGNvbG9yX3NwYWNlOwogYm9vbCBob3Jpem9udGFsX21pcnJvcjsKIGJvb2wgdmlzaWJsZTsKIGJv b2wgcGVyX3BpeGVsX2FscGhhOwogYm9vbCBnbG9iYWxfYWxwaGE7CiBpbnQgZ2xvYmFsX2FscGhh X3ZhbHVlOwogYm9vbCBpbnB1dF9jc2NfZW5hYmxlZDsKIGludCBsYXllcl9pbmRleDsKfTsKCnN0 cnVjdCBkY19zY2FsaW5nX2luZm8gewogc3RydWN0IHJlY3Qgc3JjX3JlY3Q7CiBzdHJ1Y3QgcmVj dCBkc3RfcmVjdDsKIHN0cnVjdCByZWN0IGNsaXBfcmVjdDsKIHN0cnVjdCBzY2FsaW5nX3RhcHMg c2NhbGluZ19xdWFsaXR5Owp9OwoKc3RydWN0IGRjX3N1cmZhY2VfdXBkYXRlIHsKIHN0cnVjdCBk Y19wbGFuZV9zdGF0ZSAqc3VyZmFjZTsKCgogY29uc3Qgc3RydWN0IGRjX2ZsaXBfYWRkcnMgKmZs aXBfYWRkcjsKIGNvbnN0IHN0cnVjdCBkY19wbGFuZV9pbmZvICpwbGFuZV9pbmZvOwogY29uc3Qg c3RydWN0IGRjX3NjYWxpbmdfaW5mbyAqc2NhbGluZ19pbmZvOwogc3RydWN0IGZpeGVkMzFfMzIg aGRyX211bHQ7CgoKCiBjb25zdCBzdHJ1Y3QgZGNfZ2FtbWEgKmdhbW1hOwogY29uc3Qgc3RydWN0 IGRjX3RyYW5zZmVyX2Z1bmMgKmluX3RyYW5zZmVyX2Z1bmM7CgogY29uc3Qgc3RydWN0IGRjX2Nz Y190cmFuc2Zvcm0gKmlucHV0X2NzY19jb2xvcl9tYXRyaXg7CiBjb25zdCBzdHJ1Y3QgZml4ZWQz MV8zMiAqY29lZmZfcmVkdWN0aW9uX2ZhY3RvcjsKIGNvbnN0IHN0cnVjdCBkY190cmFuc2Zlcl9m dW5jICpmdW5jX3NoYXBlcjsKIGNvbnN0IHN0cnVjdCBkY18zZGx1dCAqbHV0M2RfZnVuYzsKIGNv bnN0IHN0cnVjdCBkY190cmFuc2Zlcl9mdW5jICpibGVuZF90ZjsKfTsKCgoKCnN0cnVjdCBkY19w bGFuZV9zdGF0ZSAqZGNfY3JlYXRlX3BsYW5lX3N0YXRlKHN0cnVjdCBkYyAqZGMpOwpjb25zdCBz dHJ1Y3QgZGNfcGxhbmVfc3RhdHVzICpkY19wbGFuZV9nZXRfc3RhdHVzKAogIGNvbnN0IHN0cnVj dCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwoKdm9pZCBkY19wbGFuZV9zdGF0ZV9yZXRh aW4oc3RydWN0IGRjX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7CnZvaWQgZGNfcGxhbmVfc3Rh dGVfcmVsZWFzZShzdHJ1Y3QgZGNfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKCnZvaWQgZGNf Z2FtbWFfcmV0YWluKHN0cnVjdCBkY19nYW1tYSAqZGNfZ2FtbWEpOwp2b2lkIGRjX2dhbW1hX3Jl bGVhc2Uoc3RydWN0IGRjX2dhbW1hICoqZGNfZ2FtbWEpOwpzdHJ1Y3QgZGNfZ2FtbWEgKmRjX2Ny ZWF0ZV9nYW1tYSh2b2lkKTsKCnZvaWQgZGNfdHJhbnNmZXJfZnVuY19yZXRhaW4oc3RydWN0IGRj X3RyYW5zZmVyX2Z1bmMgKmRjX3RmKTsKdm9pZCBkY190cmFuc2Zlcl9mdW5jX3JlbGVhc2Uoc3Ry dWN0IGRjX3RyYW5zZmVyX2Z1bmMgKmRjX3RmKTsKc3RydWN0IGRjX3RyYW5zZmVyX2Z1bmMgKmRj X2NyZWF0ZV90cmFuc2Zlcl9mdW5jKHZvaWQpOwoKc3RydWN0IGRjXzNkbHV0ICpkY19jcmVhdGVf M2RsdXRfZnVuYyh2b2lkKTsKdm9pZCBkY18zZGx1dF9mdW5jX3JlbGVhc2Uoc3RydWN0IGRjXzNk bHV0ICpsdXQpOwp2b2lkIGRjXzNkbHV0X2Z1bmNfcmV0YWluKHN0cnVjdCBkY18zZGx1dCAqbHV0 KTsKCgoKCgpzdHJ1Y3QgZGNfZmxpcF9hZGRycyB7CiBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyBh ZGRyZXNzOwogdW5zaWduZWQgaW50IGZsaXBfdGltZXN0YW1wX2luX3VzOwogYm9vbCBmbGlwX2lt bWVkaWF0ZTsKCn07Cgpib29sIGRjX3Bvc3RfdXBkYXRlX3N1cmZhY2VzX3RvX3N0cmVhbSgKICBz dHJ1Y3QgZGMgKmRjKTsKCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2RjX3N0cmVhbS5oIiAxCiMgMzUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9kY19zdHJlYW0uaCIKc3RydWN0IHRpbWluZ19zeW5jX2luZm8gewogaW50 IGdyb3VwX2lkOwogaW50IGdyb3VwX3NpemU7CiBib29sIG1hc3RlcjsKfTsKCnN0cnVjdCBkY19z dHJlYW1fc3RhdHVzIHsKIGludCBwcmltYXJ5X290Z19pbnN0OwogaW50IHN0cmVhbV9lbmNfaW5z dDsKIGludCBwbGFuZV9jb3VudDsKIGludCBhdWRpb19pbnN0Owogc3RydWN0IHRpbWluZ19zeW5j X2luZm8gdGltaW5nX3N5bmNfaW5mbzsKIHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGVzWzRdOwp9OwoKCnN0cnVjdCBmcmVlc3luY19jb250ZXh0IHsKIGJvb2wgZHVtbXk7Cn07Cgpl bnVtIGh1YnBfZG1kYXRhX21vZGUgewogRE1EQVRBX1NXX01PREUsCiBETURBVEFfSFdfTU9ERQp9 OwoKc3RydWN0IGRjX2RtZGF0YV9hdHRyaWJ1dGVzIHsKCgoKIGVudW0gaHVicF9kbWRhdGFfbW9k ZSBkbWRhdGFfbW9kZTsKCiBib29sIGRtZGF0YV9yZXBlYXQ7CgogdWludDMyX3QgZG1kYXRhX3Np emU7CgogYm9vbCBkbWRhdGFfdXBkYXRlZDsKCiB1bmlvbiBsYXJnZV9pbnRlZ2VyIGFkZHJlc3M7 CgogYm9vbCBkbWRhdGFfcW9zX21vZGU7CgogdWludDMyX3QgZG1kYXRhX3Fvc19sZXZlbDsKCgoK IHVpbnQzMl90IGRtZGF0YV9kbF9kZWx0YTsKCiB1aW50MzJfdCAqZG1kYXRhX3N3X2RhdGE7Cn07 CgpzdHJ1Y3QgZGNfd3JpdGViYWNrX2luZm8gewogYm9vbCB3Yl9lbmFibGVkOwogaW50IGR3Yl9w aXBlX2luc3Q7CiBzdHJ1Y3QgZGNfZHdiX3BhcmFtcyBkd2JfcGFyYW1zOwogc3RydWN0IG1jaWZf YnVmX3BhcmFtcyBtY2lmX2J1Zl9wYXJhbXM7Cn07CgpzdHJ1Y3QgZGNfd3JpdGViYWNrX3VwZGF0 ZSB7CiB1bnNpZ25lZCBpbnQgbnVtX3diX2luZm87CiBzdHJ1Y3QgZGNfd3JpdGViYWNrX2luZm8g d3JpdGViYWNrX2luZm9bMV07Cn07CgplbnVtIHZlcnRpY2FsX2ludGVycnVwdF9yZWZfcG9pbnQg ewogU1RBUlRfVl9VUERBVEUgPSAwLAogU1RBUlRfVl9TWU5DLAogSU5WQUxJRF9QT0lOVAoKCgoK fTsKCnN0cnVjdCBwZXJpb2RpY19pbnRlcnJ1cHRfY29uZmlnIHsKIGVudW0gdmVydGljYWxfaW50 ZXJydXB0X3JlZl9wb2ludCByZWZfcG9pbnQ7CiBpbnQgbGluZXNfb2Zmc2V0Owp9OwoKdW5pb24g c3RyZWFtX3VwZGF0ZV9mbGFncyB7CiBzdHJ1Y3QgewogIHVpbnQzMl90IHNjYWxpbmc6MTsKICB1 aW50MzJfdCBvdXRfdGY6MTsKICB1aW50MzJfdCBvdXRfY3NjOjE7CiAgdWludDMyX3QgYWJtX2xl dmVsOjE7CiAgdWludDMyX3QgZHBtc19vZmY6MTsKICB1aW50MzJfdCBnYW11dF9yZW1hcDoxOwog IHVpbnQzMl90IHdiX3VwZGF0ZToxOwogfSBiaXRzOwoKIHVpbnQzMl90IHJhdzsKfTsKCnN0cnVj dCBkY19zdHJlYW1fc3RhdGUgewoKCiBzdHJ1Y3QgZGNfc2luayAqc2luazsKCiBzdHJ1Y3QgZGNf bGluayAqbGluazsKIHN0cnVjdCBkY19wYW5lbF9wYXRjaCBzaW5rX3BhdGNoZXM7CiB1bmlvbiBk aXNwbGF5X2NvbnRlbnRfc3VwcG9ydCBjb250ZW50X3N1cHBvcnQ7CiBzdHJ1Y3QgZGNfY3J0Y190 aW1pbmcgdGltaW5nOwogc3RydWN0IGRjX2NydGNfdGltaW5nX2FkanVzdCBhZGp1c3Q7CiBzdHJ1 Y3QgZGNfaW5mb19wYWNrZXQgdnJyX2luZm9wYWNrZXQ7CiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQg dnNjX2luZm9wYWNrZXQ7CiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgdnNwX2luZm9wYWNrZXQ7Cgog c3RydWN0IHJlY3Qgc3JjOwogc3RydWN0IHJlY3QgZHN0OwoKCiBzdHJ1Y3QgZnJlZXN5bmNfY29u dGV4dCBmcmVlc3luY19jdHg7Cgogc3RydWN0IGF1ZGlvX2luZm8gYXVkaW9faW5mbzsKCiBzdHJ1 Y3QgZGNfaW5mb19wYWNrZXQgaGRyX3N0YXRpY19tZXRhZGF0YTsKIHVuaW9uIGxhcmdlX2ludGVn ZXIgZG1kYXRhX2FkZHJlc3M7CiBib29sIHVzZV9keW5hbWljX21ldGE7Cgogc3RydWN0IGRjX3Ry YW5zZmVyX2Z1bmMgKm91dF90cmFuc2Zlcl9mdW5jOwogc3RydWN0IGNvbG9yc3BhY2VfdHJhbnNm b3JtIGdhbXV0X3JlbWFwX21hdHJpeDsKIHN0cnVjdCBkY19jc2NfdHJhbnNmb3JtIGNzY19jb2xv cl9tYXRyaXg7CgogZW51bSBkY19jb2xvcl9zcGFjZSBvdXRwdXRfY29sb3Jfc3BhY2U7CiBlbnVt IGRjX2RpdGhlcl9vcHRpb24gZGl0aGVyX29wdGlvbjsKCiBlbnVtIHZpZXdfM2RfZm9ybWF0IHZp ZXdfZm9ybWF0OwoKIGJvb2wgdXNlX3ZzY19zZHBfZm9yX2NvbG9yaW1ldHJ5OwogYm9vbCBpZ25v cmVfbXNhX3RpbWluZ19wYXJhbTsKIGJvb2wgY29udmVydGVyX2Rpc2FibGVfYXVkaW87CiB1aW50 OF90IHFzX2JpdDsKIHVpbnQ4X3QgcXlfYml0OwoKCgoKIHVuc2lnbmVkIGNoYXIgcHNyX3ZlcnNp b247CgoKCiB1bnNpZ25lZCBpbnQgYWJtX2xldmVsOwoKIHN0cnVjdCBwZXJpb2RpY19pbnRlcnJ1 cHRfY29uZmlnIHBlcmlvZGljX2ludGVycnVwdDA7CiBzdHJ1Y3QgcGVyaW9kaWNfaW50ZXJydXB0 X2NvbmZpZyBwZXJpb2RpY19pbnRlcnJ1cHQxOwoKCiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoK CiBzdHJ1Y3QgYml0X2RlcHRoX3JlZHVjdGlvbl9wYXJhbXMgYml0X2RlcHRoX3BhcmFtczsKIHN0 cnVjdCBjbGFtcGluZ19hbmRfcGl4ZWxfZW5jb2RpbmdfcGFyYW1zIGNsYW1waW5nOwoKIGludCBw aHlfcGl4X2NsazsKIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsOwogYm9vbCBkcG1zX29mZjsKCiB2 b2lkICpkbV9zdHJlYW1fY29udGV4dDsKCiBzdHJ1Y3QgZGNfY3Vyc29yX2F0dHJpYnV0ZXMgY3Vy c29yX2F0dHJpYnV0ZXM7CiBzdHJ1Y3QgZGNfY3Vyc29yX3Bvc2l0aW9uIGN1cnNvcl9wb3NpdGlv bjsKIHVpbnQzMl90IHNkcl93aGl0ZV9sZXZlbDsKCgogc3RydWN0IGtyZWYgcmVmY291bnQ7Cgog c3RydWN0IGNydGNfdHJpZ2dlcl9pbmZvIHRyaWdnZXJlZF9jcnRjX3Jlc2V0OwoKCiB1bnNpZ25l ZCBpbnQgbnVtX3diX2luZm87CiBzdHJ1Y3QgZGNfd3JpdGViYWNrX2luZm8gd3JpdGViYWNrX2lu Zm9bMV07CgogYm9vbCBtb2RlX2NoYW5nZWQgOiAxOwoKCgoKCgogc3RydWN0IHsKCgogIHVpbnQ4 X3Qgb3RnX29mZnNldDsKIH0gb3V0OwoKIGJvb2wgYXBwbHlfZWRwX2Zhc3RfYm9vdF9vcHRpbWl6 YXRpb247CiBib29sIGFwcGx5X3NlYW1sZXNzX2Jvb3Rfb3B0aW1pemF0aW9uOwoKIHVpbnQzMl90 IHN0cmVhbV9pZDsKIGJvb2wgaXNfZHNjX2VuYWJsZWQ7CiB1bmlvbiBzdHJlYW1fdXBkYXRlX2Zs YWdzIHVwZGF0ZV9mbGFnczsKfTsKCgoKc3RydWN0IGRjX3N0cmVhbV91cGRhdGUgewogc3RydWN0 IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtOwoKIHN0cnVjdCByZWN0IHNyYzsKIHN0cnVjdCByZWN0 IGRzdDsKIHN0cnVjdCBkY190cmFuc2Zlcl9mdW5jICpvdXRfdHJhbnNmZXJfZnVuYzsKIHN0cnVj dCBkY19pbmZvX3BhY2tldCAqaGRyX3N0YXRpY19tZXRhZGF0YTsKIHVuc2lnbmVkIGludCAqYWJt X2xldmVsOwoKIHN0cnVjdCBwZXJpb2RpY19pbnRlcnJ1cHRfY29uZmlnICpwZXJpb2RpY19pbnRl cnJ1cHQwOwogc3RydWN0IHBlcmlvZGljX2ludGVycnVwdF9jb25maWcgKnBlcmlvZGljX2ludGVy cnVwdDE7Cgogc3RydWN0IGRjX2luZm9fcGFja2V0ICp2cnJfaW5mb3BhY2tldDsKIHN0cnVjdCBk Y19pbmZvX3BhY2tldCAqdnNjX2luZm9wYWNrZXQ7CiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgKnZz cF9pbmZvcGFja2V0OwoKIGJvb2wgKmRwbXNfb2ZmOwogYm9vbCBpbnRlZ2VyX3NjYWxpbmdfdXBk YXRlOwoKIHN0cnVjdCBjb2xvcnNwYWNlX3RyYW5zZm9ybSAqZ2FtdXRfcmVtYXA7CiBlbnVtIGRj X2NvbG9yX3NwYWNlICpvdXRwdXRfY29sb3Jfc3BhY2U7CiBlbnVtIGRjX2RpdGhlcl9vcHRpb24g KmRpdGhlcl9vcHRpb247Cgogc3RydWN0IGRjX2NzY190cmFuc2Zvcm0gKm91dHB1dF9jc2NfdHJh bnNmb3JtOwoKIHN0cnVjdCBkY193cml0ZWJhY2tfdXBkYXRlICp3Yl91cGRhdGU7CiBzdHJ1Y3Qg ZGNfZHNjX2NvbmZpZyAqZHNjX2NvbmZpZzsKfTsKCmJvb2wgZGNfaXNfc3RyZWFtX3VuY2hhbmdl ZCgKIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKm9sZF9zdHJlYW0sIHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKnN0cmVhbSk7CmJvb2wgZGNfaXNfc3RyZWFtX3NjYWxpbmdfdW5jaGFuZ2VkKAogc3Ry dWN0IGRjX3N0cmVhbV9zdGF0ZSAqb2xkX3N0cmVhbSwgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAq c3RyZWFtKTsKIyAyNzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9kY19zdHJlYW0uaCIKdm9pZCBkY19jb21taXRfdXBkYXRlc19mb3Jfc3RyZWFtKHN0cnVjdCBk YyAqZGMsCiAgc3RydWN0IGRjX3N1cmZhY2VfdXBkYXRlICpzcmZfdXBkYXRlcywKICBpbnQgc3Vy ZmFjZV9jb3VudCwKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgc3RydWN0IGRj X3N0cmVhbV91cGRhdGUgKnN0cmVhbV91cGRhdGUsCiAgc3RydWN0IGRjX3N0YXRlICpzdGF0ZSk7 CgoKCnZvaWQgZGNfc3RyZWFtX2xvZyhjb25zdCBzdHJ1Y3QgZGMgKmRjLCBjb25zdCBzdHJ1Y3Qg ZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwoKdWludDhfdCBkY19nZXRfY3VycmVudF9zdHJlYW1f Y291bnQoc3RydWN0IGRjICpkYyk7CnN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKmRjX2dldF9zdHJl YW1fYXRfaW5kZXgoc3RydWN0IGRjICpkYywgdWludDhfdCBpKTsKCgoKCnVpbnQzMl90IGRjX3N0 cmVhbV9nZXRfdmJsYW5rX2NvdW50ZXIoY29uc3Qgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3Ry ZWFtKTsKCgoKCmJvb2wgZGNfc3RyZWFtX3NlbmRfZHBfc2RwKGNvbnN0IHN0cnVjdCBkY19zdHJl YW1fc3RhdGUgKnN0cmVhbSwKICBjb25zdCB1aW50OF90ICpjdXN0b21fc2RwX21lc3NhZ2UsCiAg dW5zaWduZWQgaW50IHNkcF9tZXNzYWdlX3NpemUpOwoKCgoKCmJvb2wgZGNfc3RyZWFtX2dldF9z Y2Fub3V0cG9zKGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKICAgICAgdWlu dDMyX3QgKnZfYmxhbmtfc3RhcnQsCiAgICAgIHVpbnQzMl90ICp2X2JsYW5rX2VuZCwKICAgICAg dWludDMyX3QgKmhfcG9zaXRpb24sCiAgICAgIHVpbnQzMl90ICp2X3Bvc2l0aW9uKTsKCmVudW0g ZGNfc3RhdHVzIGRjX2FkZF9zdHJlYW1fdG9fY3R4KAogICBzdHJ1Y3QgZGMgKmRjLAogIHN0cnVj dCBkY19zdGF0ZSAqbmV3X2N0eCwKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwoK ZW51bSBkY19zdGF0dXMgZGNfcmVtb3ZlX3N0cmVhbV9mcm9tX2N0eCgKICBzdHJ1Y3QgZGMgKmRj LAogICBzdHJ1Y3QgZGNfc3RhdGUgKm5ld19jdHgsCiAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUg KnN0cmVhbSk7CgoKYm9vbCBkY19hZGRfcGxhbmVfdG9fY29udGV4dCgKICBjb25zdCBzdHJ1Y3Qg ZGMgKmRjLAogIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKICBzdHJ1Y3QgZGNfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlLAogIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7Cgpib29s IGRjX3JlbW92ZV9wbGFuZV9mcm9tX2NvbnRleHQoCiAgY29uc3Qgc3RydWN0IGRjICpkYywKICBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgc3RydWN0IGRjX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSwKICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoKYm9vbCBkY19yZW1fYWxs X3BsYW5lc19mb3Jfc3RyZWFtKAogIGNvbnN0IHN0cnVjdCBkYyAqZGMsCiAgc3RydWN0IGRjX3N0 cmVhbV9zdGF0ZSAqc3RyZWFtLAogIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7Cgpib29sIGRj X2FkZF9hbGxfcGxhbmVzX2Zvcl9zdHJlYW0oCiAgY29uc3Qgc3RydWN0IGRjICpkYywKICBzdHJ1 Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgc3RydWN0IGRjX3BsYW5lX3N0YXRlICogY29u c3QgKnBsYW5lX3N0YXRlcywKICBpbnQgcGxhbmVfY291bnQsCiAgc3RydWN0IGRjX3N0YXRlICpj b250ZXh0KTsKCmJvb2wgZGNfc3RyZWFtX2FkZF93cml0ZWJhY2soc3RydWN0IGRjICpkYywKICBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgc3RydWN0IGRjX3dyaXRlYmFja19pbmZv ICp3Yl9pbmZvKTsKCmJvb2wgZGNfc3RyZWFtX3JlbW92ZV93cml0ZWJhY2soc3RydWN0IGRjICpk YywKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgdWludDMyX3QgZHdiX3BpcGVf aW5zdCk7Cgpib29sIGRjX3N0cmVhbV93YXJtdXBfd3JpdGViYWNrKHN0cnVjdCBkYyAqZGMsCiAg aW50IG51bV9kd2IsCiAgc3RydWN0IGRjX3dyaXRlYmFja19pbmZvICp3Yl9pbmZvKTsKCmJvb2wg ZGNfc3RyZWFtX2RtZGF0YV9zdGF0dXNfZG9uZShzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfc3Ry ZWFtX3N0YXRlICpzdHJlYW0pOwoKYm9vbCBkY19zdHJlYW1fc2V0X2R5bmFtaWNfbWV0YWRhdGEo c3RydWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgc3RydWN0 IGRjX2RtZGF0YV9hdHRyaWJ1dGVzICpkbWRhdGFfYXR0cik7CgplbnVtIGRjX3N0YXR1cyBkY192 YWxpZGF0ZV9zdHJlYW0oc3RydWN0IGRjICpkYywgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3Ry ZWFtKTsKIyAzNzYgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9k Y19zdHJlYW0uaCIKYm9vbCBkY19lbmFibGVfc3RlcmVvKAogc3RydWN0IGRjICpkYywKIHN0cnVj dCBkY19zdGF0ZSAqY29udGV4dCwKIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbXNbXSwK IHVpbnQ4X3Qgc3RyZWFtX2NvdW50KTsKCgplbnVtIHN1cmZhY2VfdXBkYXRlX3R5cGUgZGNfY2hl Y2tfdXBkYXRlX3N1cmZhY2VzX2Zvcl9zdHJlYW0oCiAgc3RydWN0IGRjICpkYywKICBzdHJ1Y3Qg ZGNfc3VyZmFjZV91cGRhdGUgKnVwZGF0ZXMsCiAgaW50IHN1cmZhY2VfY291bnQsCiAgc3RydWN0 IGRjX3N0cmVhbV91cGRhdGUgKnN0cmVhbV91cGRhdGUsCiAgY29uc3Qgc3RydWN0IGRjX3N0cmVh bV9zdGF0dXMgKnN0cmVhbV9zdGF0dXMpOwoKCgoKc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqZGNf Y3JlYXRlX3N0cmVhbV9mb3Jfc2luayhzdHJ1Y3QgZGNfc2luayAqZGNfc2luayk7CgpzdHJ1Y3Qg ZGNfc3RyZWFtX3N0YXRlICpkY19jb3B5X3N0cmVhbShjb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0 YXRlICpzdHJlYW0pOwoKdm9pZCB1cGRhdGVfc3RyZWFtX3NpZ25hbChzdHJ1Y3QgZGNfc3RyZWFt X3N0YXRlICpzdHJlYW0sIHN0cnVjdCBkY19zaW5rICpzaW5rKTsKCnZvaWQgZGNfc3RyZWFtX3Jl dGFpbihzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpkY19zdHJlYW0pOwp2b2lkIGRjX3N0cmVhbV9y ZWxlYXNlKHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKmRjX3N0cmVhbSk7CgpzdHJ1Y3QgZGNfc3Ry ZWFtX3N0YXR1cyAqZGNfc3RyZWFtX2dldF9zdGF0dXNfZnJvbV9zdGF0ZSgKIHN0cnVjdCBkY19z dGF0ZSAqc3RhdGUsCiBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwpzdHJ1Y3QgZGNf c3RyZWFtX3N0YXR1cyAqZGNfc3RyZWFtX2dldF9zdGF0dXMoCiBzdHJ1Y3QgZGNfc3RyZWFtX3N0 YXRlICpkY19zdHJlYW0pOwoKCgoKCmJvb2wgZGNfc3RyZWFtX3NldF9jdXJzb3JfYXR0cmlidXRl cygKIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKIGNvbnN0IHN0cnVjdCBkY19jdXJz b3JfYXR0cmlidXRlcyAqYXR0cmlidXRlcyk7Cgpib29sIGRjX3N0cmVhbV9zZXRfY3Vyc29yX3Bv c2l0aW9uKAogc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAogY29uc3Qgc3RydWN0IGRj X2N1cnNvcl9wb3NpdGlvbiAqcG9zaXRpb24pOwoKCmJvb2wgZGNfc3RyZWFtX2FkanVzdF92bWlu X3ZtYXgoc3RydWN0IGRjICpkYywKICAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwK ICAgIHN0cnVjdCBkY19jcnRjX3RpbWluZ19hZGp1c3QgKmFkanVzdCk7Cgpib29sIGRjX3N0cmVh bV9nZXRfY3J0Y19wb3NpdGlvbihzdHJ1Y3QgZGMgKmRjLAogICAgIHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKipzdHJlYW0sCiAgICAgaW50IG51bV9zdHJlYW1zLAogICAgIHVuc2lnbmVkIGludCAq dl9wb3MsCiAgICAgdW5zaWduZWQgaW50ICpub21fdl9wb3MpOwoKYm9vbCBkY19zdHJlYW1fY29u ZmlndXJlX2NyYyhzdHJ1Y3QgZGMgKmRjLAogICAgICAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUg KnN0cmVhbSwKICAgICAgICBib29sIGVuYWJsZSwKICAgICAgICBib29sIGNvbnRpbnVvdXMpOwoK Ym9vbCBkY19zdHJlYW1fZ2V0X2NyYyhzdHJ1Y3QgZGMgKmRjLAogICAgICAgICBzdHJ1Y3QgZGNf c3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgICAgICAgIHVpbnQzMl90ICpyX2NyLAogICAgICAgICB1 aW50MzJfdCAqZ195LAogICAgICAgICB1aW50MzJfdCAqYl9jYik7Cgp2b2lkIGRjX3N0cmVhbV9z ZXRfc3RhdGljX3NjcmVlbl9wYXJhbXMoc3RydWN0IGRjICpkYywKICAgICBzdHJ1Y3QgZGNfc3Ry ZWFtX3N0YXRlICoqc3RyZWFtLAogICAgIGludCBudW1fc3RyZWFtcywKICAgICBjb25zdCBzdHJ1 Y3QgZGNfc3RhdGljX3NjcmVlbl9wYXJhbXMgKnBhcmFtcyk7Cgp2b2lkIGRjX3N0cmVhbV9zZXRf ZHluX2V4cGFuc2lvbihzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJl YW0sCiAgZW51bSBkY19keW5hbWljX2V4cGFuc2lvbiBvcHRpb24pOwoKdm9pZCBkY19zdHJlYW1f c2V0X2RpdGhlcl9vcHRpb24oc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAogICAgIGVu dW0gZGNfZGl0aGVyX29wdGlvbiBvcHRpb24pOwoKYm9vbCBkY19zdHJlYW1fc2V0X2dhbXV0X3Jl bWFwKHN0cnVjdCBkYyAqZGMsCiAgICAgICAgICBjb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRl ICpzdHJlYW0pOwoKYm9vbCBkY19zdHJlYW1fcHJvZ3JhbV9jc2NfbWF0cml4KHN0cnVjdCBkYyAq ZGMsCiAgICAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7Cgpib29sIGRjX3N0cmVh bV9nZXRfY3J0Y19wb3NpdGlvbihzdHJ1Y3QgZGMgKmRjLAogICAgIHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKipzdHJlYW0sCiAgICAgaW50IG51bV9zdHJlYW1zLAogICAgIHVuc2lnbmVkIGludCAq dl9wb3MsCiAgICAgdW5zaWduZWQgaW50ICpub21fdl9wb3MpOwojIDg3NCAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjLmgiIDIKCgoKCnN0cnVjdCBkY192YWxp ZGF0aW9uX3NldCB7CiBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW07CiBzdHJ1Y3QgZGNf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlc1szXTsKIHVpbnQ4X3QgcGxhbmVfY291bnQ7Cn07Cgpi b29sIGRjX3ZhbGlkYXRlX3NlYW1sZXNzX2Jvb3RfdGltaW5nKGNvbnN0IHN0cnVjdCBkYyAqZGMs CiAgICBjb25zdCBzdHJ1Y3QgZGNfc2luayAqc2luaywKICAgIHN0cnVjdCBkY19jcnRjX3RpbWlu ZyAqY3J0Y190aW1pbmcpOwoKZW51bSBkY19zdGF0dXMgZGNfdmFsaWRhdGVfcGxhbmUoc3RydWN0 IGRjICpkYywgY29uc3Qgc3RydWN0IGRjX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7Cgp2b2lk IGdldF9jbG9ja19yZXF1aXJlbWVudHNfZm9yX3N0YXRlKHN0cnVjdCBkY19zdGF0ZSAqc3RhdGUs IHN0cnVjdCBBc2ljU3RhdGVFeCAqaW5mbyk7Cgpib29sIGRjX3NldF9nZW5lcmljX2dwaW9fZm9y X3N0ZXJlbyhib29sIGVuYWJsZSwKICBzdHJ1Y3QgZ3Bpb19zZXJ2aWNlICpncGlvX3NlcnZpY2Up OwoKCgoKCmVudW0gZGNfc3RhdHVzIGRjX3ZhbGlkYXRlX2dsb2JhbF9zdGF0ZSgKICBzdHJ1Y3Qg ZGMgKmRjLAogIHN0cnVjdCBkY19zdGF0ZSAqbmV3X2N0eCwKICBib29sIGZhc3RfdmFsaWRhdGUp OwoKCnZvaWQgZGNfcmVzb3VyY2Vfc3RhdGVfY29uc3RydWN0KAogIGNvbnN0IHN0cnVjdCBkYyAq ZGMsCiAgc3RydWN0IGRjX3N0YXRlICpkc3RfY3R4KTsKCnZvaWQgZGNfcmVzb3VyY2Vfc3RhdGVf Y29weV9jb25zdHJ1Y3QoCiAgY29uc3Qgc3RydWN0IGRjX3N0YXRlICpzcmNfY3R4LAogIHN0cnVj dCBkY19zdGF0ZSAqZHN0X2N0eCk7Cgp2b2lkIGRjX3Jlc291cmNlX3N0YXRlX2NvcHlfY29uc3Ry dWN0X2N1cnJlbnQoCiAgY29uc3Qgc3RydWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RhdGUgKmRz dF9jdHgpOwoKdm9pZCBkY19yZXNvdXJjZV9zdGF0ZV9kZXN0cnVjdChzdHJ1Y3QgZGNfc3RhdGUg KmNvbnRleHQpOwoKYm9vbCBkY19yZXNvdXJjZV9pc19kc2NfZW5jb2Rpbmdfc3VwcG9ydGVkKGNv bnN0IHN0cnVjdCBkYyAqZGMpOwojIDkzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2RjLmgiCmJvb2wgZGNfY29tbWl0X3N0YXRlKHN0cnVjdCBkYyAqZGMsIHN0 cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CgoKc3RydWN0IGRjX3N0YXRlICpkY19jcmVhdGVfc3Rh dGUoc3RydWN0IGRjICpkYyk7CnN0cnVjdCBkY19zdGF0ZSAqZGNfY29weV9zdGF0ZShzdHJ1Y3Qg ZGNfc3RhdGUgKnNyY19jdHgpOwp2b2lkIGRjX3JldGFpbl9zdGF0ZShzdHJ1Y3QgZGNfc3RhdGUg KmNvbnRleHQpOwp2b2lkIGRjX3JlbGVhc2Vfc3RhdGUoc3RydWN0IGRjX3N0YXRlICpjb250ZXh0 KTsKCgoKCgpzdHJ1Y3QgZHBjZF9jYXBzIHsKIHVuaW9uIGRwY2RfcmV2IGRwY2RfcmV2OwogdW5p b24gbWF4X2xhbmVfY291bnQgbWF4X2xuX2NvdW50OwogdW5pb24gbWF4X2Rvd25fc3ByZWFkIG1h eF9kb3duX3NwcmVhZDsKIHVuaW9uIGRwcnhfZmVhdHVyZSBkcHJ4X2ZlYXR1cmU7CgoKIHVpbnQ4 X3QgZWRwX3N1cHBvcnRlZF9saW5rX3JhdGVzX2NvdW50OwogZW51bSBkY19saW5rX3JhdGUgZWRw X3N1cHBvcnRlZF9saW5rX3JhdGVzWzhdOwoKCiBlbnVtIGRpc3BsYXlfZG9uZ2xlX3R5cGUgZG9u Z2xlX3R5cGU7CgogYm9vbCBpc19icmFuY2hfZGV2OwoKIHVuaW9uIHNpbmtfY291bnQgc2lua19j b3VudDsKCgogc3RydWN0IGRjX2RvbmdsZV9jYXBzIGRvbmdsZV9jYXBzOwoKIHVpbnQzMl90IHNp bmtfZGV2X2lkOwogaW50OF90IHNpbmtfZGV2X2lkX3N0cls2XTsKIGludDhfdCBzaW5rX2h3X3Jl dmlzaW9uOwogaW50OF90IHNpbmtfZndfcmV2aXNpb25bMl07CgogdWludDMyX3QgYnJhbmNoX2Rl dl9pZDsKIGludDhfdCBicmFuY2hfZGV2X25hbWVbNl07CiBpbnQ4X3QgYnJhbmNoX2h3X3Jldmlz aW9uOwogaW50OF90IGJyYW5jaF9md19yZXZpc2lvblsyXTsKCiBib29sIGFsbG93X2ludmFsaWRf TVNBX3RpbWluZ19wYXJhbTsKIGJvb2wgcGFuZWxfbW9kZV9lZHA7CiBib29sIGRwY2RfZGlzcGxh eV9jb250cm9sX2NhcGFibGU7CiBib29sIGV4dF9yZWNlaXZlcl9jYXBfZmllbGRfcHJlc2VudDsK IHVuaW9uIGRwY2RfZmVjX2NhcGFiaWxpdHkgZmVjX2NhcDsKIHN0cnVjdCBkcGNkX2RzY19jYXBh YmlsaXRpZXMgZHNjX2NhcHM7CiBzdHJ1Y3QgZGNfbHR0cHJfY2FwcyBsdHRwcl9jYXBzOwoKfTsK CiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2xpbmsu aCIgMQojIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNf bGluay5oIgplbnVtIGRjX2xpbmtfZmVjX3N0YXRlIHsKIGRjX2xpbmtfZmVjX25vdF9yZWFkeSwK IGRjX2xpbmtfZmVjX3JlYWR5LAogZGNfbGlua19mZWNfZW5hYmxlZAp9OwpzdHJ1Y3QgZGNfbGlu a19zdGF0dXMgewogYm9vbCBsaW5rX2FjdGl2ZTsKIHN0cnVjdCBkcGNkX2NhcHMgKmRwY2RfY2Fw czsKfTsKCgpzdHJ1Y3QgbGlua19tc3Rfc3RyZWFtX2FsbG9jYXRpb24gewoKIGNvbnN0IHN0cnVj dCBzdHJlYW1fZW5jb2RlciAqc3RyZWFtX2VuYzsKCiB1aW50OF90IHZjcF9pZDsKCiB1aW50OF90 IHNsb3RfY291bnQ7Cn07CgoKc3RydWN0IGxpbmtfbXN0X3N0cmVhbV9hbGxvY2F0aW9uX3RhYmxl IHsKCiBpbnQgc3RyZWFtX2NvdW50OwoKIHN0cnVjdCBsaW5rX21zdF9zdHJlYW1fYWxsb2NhdGlv biBzdHJlYW1fYWxsb2NhdGlvbnNbTUFYX0NPTlRST0xMRVJfTlVNXTsKfTsKCnN0cnVjdCB0aW1l X3N0YW1wIHsKIHVpbnQ2NF90IGVkcF9wb3dlcm9mZjsKIHVpbnQ2NF90IGVkcF9wb3dlcm9uOwp9 OwoKc3RydWN0IGxpbmtfdHJhY2Ugewogc3RydWN0IHRpbWVfc3RhbXAgdGltZV9zdGFtcDsKfTsK CgoKCnN0cnVjdCBkY19saW5rIHsKIHN0cnVjdCBkY19zaW5rICpyZW1vdGVfc2lua3NbNF07CiB1 bnNpZ25lZCBpbnQgc2lua19jb3VudDsKIHN0cnVjdCBkY19zaW5rICpsb2NhbF9zaW5rOwogdW5z aWduZWQgaW50IGxpbmtfaW5kZXg7CiBlbnVtIGRjX2Nvbm5lY3Rpb25fdHlwZSB0eXBlOwogZW51 bSBzaWduYWxfdHlwZSBjb25uZWN0b3Jfc2lnbmFsOwogZW51bSBkY19pcnFfc291cmNlIGlycV9z b3VyY2VfaHBkOwogZW51bSBkY19pcnFfc291cmNlIGlycV9zb3VyY2VfaHBkX3J4OwogYm9vbCBp c19ocGRfZmlsdGVyX2Rpc2FibGVkOwogYm9vbCBkcF9zc19vZmY7CiBib29sIGxpbmtfc3RhdGVf dmFsaWQ7CiBib29sIGF1eF9hY2Nlc3NfZGlzYWJsZWQ7CiBib29sIHN5bmNfbHRfaW5fcHJvZ3Jl c3M7CiBib29sIGlzX2x0dHByX21vZGVfdHJhbnNwYXJlbnQ7CgoKCgogc3RydWN0IGRjX2xpbmtf c2V0dGluZ3MgcmVwb3J0ZWRfbGlua19jYXA7CiBzdHJ1Y3QgZGNfbGlua19zZXR0aW5ncyB2ZXJp ZmllZF9saW5rX2NhcDsKIHN0cnVjdCBkY19saW5rX3NldHRpbmdzIGN1cl9saW5rX3NldHRpbmdz Owogc3RydWN0IGRjX2xhbmVfc2V0dGluZ3MgY3VyX2xhbmVfc2V0dGluZzsKIHN0cnVjdCBkY19s aW5rX3NldHRpbmdzIHByZWZlcnJlZF9saW5rX3NldHRpbmc7CiBzdHJ1Y3QgZGNfbGlua190cmFp bmluZ19vdmVycmlkZXMgcHJlZmVycmVkX3RyYWluaW5nX3NldHRpbmdzOwogc3RydWN0IGRwX2F1 ZGlvX3Rlc3RfZGF0YSBhdWRpb190ZXN0X2RhdGE7CgogdWludDhfdCBkZGNfaHdfaW5zdDsKCiB1 aW50OF90IGhwZF9zcmM7CgogdWludDhfdCBsaW5rX2VuY19od19pbnN0OwoKIGJvb2wgdGVzdF9w YXR0ZXJuX2VuYWJsZWQ7CiB1bmlvbiBjb21wbGlhbmNlX3Rlc3Rfc3RhdGUgY29tcGxpYW5jZV90 ZXN0X3N0YXRlOwoKIHZvaWQgKnByaXY7Cgogc3RydWN0IGRkY19zZXJ2aWNlICpkZGM7CgogYm9v bCBhdXhfbW9kZTsKCgoKIGNvbnN0IHN0cnVjdCBkYyAqZGM7Cgogc3RydWN0IGRjX2NvbnRleHQg KmN0eDsKCiBzdHJ1Y3QgbGlua19lbmNvZGVyICpsaW5rX2VuYzsKIHN0cnVjdCBncmFwaGljc19v YmplY3RfaWQgbGlua19pZDsKIHVuaW9uIGRkaV9jaGFubmVsX21hcHBpbmcgZGRpX2NoYW5uZWxf bWFwcGluZzsKIHN0cnVjdCBjb25uZWN0b3JfZGV2aWNlX3RhZ19pbmZvIGRldmljZV90YWc7CiBz dHJ1Y3QgZHBjZF9jYXBzIGRwY2RfY2FwczsKIHVpbnQzMl90IGRvbmdsZV9tYXhfcGl4X2NsazsK IHVuc2lnbmVkIHNob3J0IGNoaXBfY2FwczsKIHVuc2lnbmVkIGludCBkcGNkX3NpbmtfY291bnQ7 CiBlbnVtIGVkcF9yZXZpc2lvbiBlZHBfcmV2aXNpb247CiBib29sIHBzcl9mZWF0dXJlX2VuYWJs ZWQ7CiBib29sIHBzcl9hbGxvd19hY3RpdmU7CgoKIHN0cnVjdCBsaW5rX2ZsYWdzIHsKICBib29s IGRwX2tlZXBfcmVjZWl2ZXJfcG93ZXJlZDsKICBib29sIGRwX3NraXBfRElEMjsKICBib29sIGRw X3NraXBfcmVzZXRfc2VnbWVudDsKIH0gd2FfZmxhZ3M7CiBzdHJ1Y3QgbGlua19tc3Rfc3RyZWFt X2FsbG9jYXRpb25fdGFibGUgbXN0X3N0cmVhbV9hbGxvY190YWJsZTsKCiBzdHJ1Y3QgZGNfbGlu a19zdGF0dXMgbGlua19zdGF0dXM7Cgogc3RydWN0IGxpbmtfdHJhY2UgbGlua190cmFjZTsKIHN0 cnVjdCBncGlvICpocGRfZ3BpbzsKIGVudW0gZGNfbGlua19mZWNfc3RhdGUgZmVjX3N0YXRlOwp9 OwoKY29uc3Qgc3RydWN0IGRjX2xpbmtfc3RhdHVzICpkY19saW5rX2dldF9zdGF0dXMoY29uc3Qg c3RydWN0IGRjX2xpbmsgKmRjX2xpbmspOwojIDE1NiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2xpbmsuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRjX2xpbmsgKmRjX2dldF9saW5r X2F0X2luZGV4KHN0cnVjdCBkYyAqZGMsIHVpbnQzMl90IGxpbmtfaW5kZXgpCnsKIHJldHVybiBk Yy0+bGlua3NbbGlua19pbmRleF07Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkY19saW5rICpnZXRfZWRwX2xpbmsoY29u c3Qgc3RydWN0IGRjICpkYykKewogaW50IGk7CgoKIGZvciAoaSA9IDA7IGkgPCBkYy0+bGlua19j b3VudDsgaSsrKSB7CiAgaWYgKGRjLT5saW5rc1tpXS0+Y29ubmVjdG9yX3NpZ25hbCA9PSBTSUdO QUxfVFlQRV9FRFApCiAgIHJldHVybiBkYy0+bGlua3NbaV07CiB9CiByZXR1cm4gKCh2b2lkICop MCk7Cn0KCgoKCgpib29sIGRjX2xpbmtfc2V0X2JhY2tsaWdodF9sZXZlbChjb25zdCBzdHJ1Y3Qg ZGNfbGluayAqZGNfbGluaywKICB1aW50MzJfdCBiYWNrbGlnaHRfcHdtX3UxNl8xNiwKICB1aW50 MzJfdCBmcmFtZV9yYW1wKTsKCmludCBkY19saW5rX2dldF9iYWNrbGlnaHRfbGV2ZWwoY29uc3Qg c3RydWN0IGRjX2xpbmsgKmRjX2xpbmspOwoKYm9vbCBkY19saW5rX3NldF9hYm1fZGlzYWJsZShj b25zdCBzdHJ1Y3QgZGNfbGluayAqZGNfbGluayk7Cgpib29sIGRjX2xpbmtfc2V0X3Bzcl9hbGxv d19hY3RpdmUoc3RydWN0IGRjX2xpbmsgKmRjX2xpbmssIGJvb2wgZW5hYmxlLCBib29sIHdhaXQp OwoKYm9vbCBkY19saW5rX2dldF9wc3Jfc3RhdGUoY29uc3Qgc3RydWN0IGRjX2xpbmsgKmRjX2xp bmssIHVpbnQzMl90ICpwc3Jfc3RhdGUpOwoKYm9vbCBkY19saW5rX3NldHVwX3BzcihzdHJ1Y3Qg ZGNfbGluayAqZGNfbGluaywKICBjb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0s IHN0cnVjdCBwc3JfY29uZmlnICpwc3JfY29uZmlnLAogIHN0cnVjdCBwc3JfY29udGV4dCAqcHNy X2NvbnRleHQpOwoKCgoKCgoKZW51bSBkY19kZXRlY3RfcmVhc29uIHsKIERFVEVDVF9SRUFTT05f Qk9PVCwKIERFVEVDVF9SRUFTT05fSFBELAogREVURUNUX1JFQVNPTl9IUERSWCwKfTsKCmJvb2wg ZGNfbGlua19kZXRlY3Qoc3RydWN0IGRjX2xpbmsgKmRjX2xpbmssIGVudW0gZGNfZGV0ZWN0X3Jl YXNvbiByZWFzb24pOwpib29sIGRjX2xpbmtfZ2V0X2hwZF9zdGF0ZShzdHJ1Y3QgZGNfbGluayAq ZGNfbGluayk7CmVudW0gZGNfc3RhdHVzIGRjX2xpbmtfYWxsb2NhdGVfbXN0X3BheWxvYWQoc3Ry dWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7CmVudW0gZGNfc3RhdHVzIGRjX2xpbmtfcmVhbGxvY2F0 ZV9tc3RfcGF5bG9hZChzdHJ1Y3QgZGNfbGluayAqbGluayk7CgoKCgoKCgpib29sIGRjX2xpbmtf aGFuZGxlX2hwZF9yeF9pcnEoc3RydWN0IGRjX2xpbmsgKmRjX2xpbmssCiAgdW5pb24gaHBkX2ly cV9kYXRhICpocGRfaXJxX2RwY2RfZGF0YSwgYm9vbCAqb3V0X2xpbmtfbG9zcyk7CgpzdHJ1Y3Qg ZGNfc2lua19pbml0X2RhdGE7CgpzdHJ1Y3QgZGNfc2luayAqZGNfbGlua19hZGRfcmVtb3RlX3Np bmsoCiAgc3RydWN0IGRjX2xpbmsgKmRjX2xpbmssCiAgY29uc3QgdWludDhfdCAqZWRpZCwKICBp bnQgbGVuLAogIHN0cnVjdCBkY19zaW5rX2luaXRfZGF0YSAqaW5pdF9kYXRhKTsKCnZvaWQgZGNf bGlua19yZW1vdmVfcmVtb3RlX3NpbmsoCiBzdHJ1Y3QgZGNfbGluayAqbGluaywKIHN0cnVjdCBk Y19zaW5rICpzaW5rKTsKCgoKdm9pZCBkY19saW5rX2RwX3NldF9kcml2ZV9zZXR0aW5ncygKIHN0 cnVjdCBkY19saW5rICpsaW5rLAogc3RydWN0IGxpbmtfdHJhaW5pbmdfc2V0dGluZ3MgKmx0X3Nl dHRpbmdzKTsKCmJvb2wgZGNfbGlua19kcF9wZXJmb3JtX2xpbmtfdHJhaW5pbmdfc2tpcF9hdXgo CiBzdHJ1Y3QgZGNfbGluayAqbGluaywKIGNvbnN0IHN0cnVjdCBkY19saW5rX3NldHRpbmdzICps aW5rX3NldHRpbmcpOwoKZW51bSBsaW5rX3RyYWluaW5nX3Jlc3VsdCBkY19saW5rX2RwX3BlcmZv cm1fbGlua190cmFpbmluZygKIHN0cnVjdCBkY19saW5rICpsaW5rLAogY29uc3Qgc3RydWN0IGRj X2xpbmtfc2V0dGluZ3MgKmxpbmtfc2V0dGluZywKIGJvb2wgc2tpcF92aWRlb19wYXR0ZXJuKTsK CmJvb2wgZGNfbGlua19kcF9zeW5jX2x0X2JlZ2luKHN0cnVjdCBkY19saW5rICpsaW5rKTsKCmVu dW0gbGlua190cmFpbmluZ19yZXN1bHQgZGNfbGlua19kcF9zeW5jX2x0X2F0dGVtcHQoCiBzdHJ1 Y3QgZGNfbGluayAqbGluaywKIHN0cnVjdCBkY19saW5rX3NldHRpbmdzICpsaW5rX3NldHRpbmcs CiBzdHJ1Y3QgZGNfbGlua190cmFpbmluZ19vdmVycmlkZXMgKmx0X3NldHRpbmdzKTsKCmJvb2wg ZGNfbGlua19kcF9zeW5jX2x0X2VuZChzdHJ1Y3QgZGNfbGluayAqbGluaywgYm9vbCBsaW5rX2Rv d24pOwoKdm9pZCBkY19saW5rX2RwX2VuYWJsZV9ocGQoY29uc3Qgc3RydWN0IGRjX2xpbmsgKmxp bmspOwoKdm9pZCBkY19saW5rX2RwX2Rpc2FibGVfaHBkKGNvbnN0IHN0cnVjdCBkY19saW5rICps aW5rKTsKCmJvb2wgZGNfbGlua19kcF9zZXRfdGVzdF9wYXR0ZXJuKAogc3RydWN0IGRjX2xpbmsg KmxpbmssCiBlbnVtIGRwX3Rlc3RfcGF0dGVybiB0ZXN0X3BhdHRlcm4sCiBlbnVtIGRwX3Rlc3Rf cGF0dGVybl9jb2xvcl9zcGFjZSB0ZXN0X3BhdHRlcm5fY29sb3Jfc3BhY2UsCiBjb25zdCBzdHJ1 Y3QgbGlua190cmFpbmluZ19zZXR0aW5ncyAqcF9saW5rX3NldHRpbmdzLAogY29uc3QgdW5zaWdu ZWQgY2hhciAqcF9jdXN0b21fcGF0dGVybiwKIHVuc2lnbmVkIGludCBjdXN0X3BhdHRlcm5fc2l6 ZSk7Cgp2b2lkIGRjX2xpbmtfZW5hYmxlX2hwZF9maWx0ZXIoc3RydWN0IGRjX2xpbmsgKmxpbmss IGJvb2wgZW5hYmxlKTsKCmJvb2wgZGNfbGlua19pc19kcF9zaW5rX3ByZXNlbnQoc3RydWN0IGRj X2xpbmsgKmxpbmspOwoKYm9vbCBkY19saW5rX2RldGVjdF9zaW5rKHN0cnVjdCBkY19saW5rICps aW5rLCBlbnVtIGRjX2Nvbm5lY3Rpb25fdHlwZSAqdHlwZSk7CgoKCgp2b2lkIGRjX2xpbmtfc2V0 X2RyaXZlX3NldHRpbmdzKHN0cnVjdCBkYyAqZGMsCiAgICBzdHJ1Y3QgbGlua190cmFpbmluZ19z ZXR0aW5ncyAqbHRfc2V0dGluZ3MsCiAgICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluayk7CnZv aWQgZGNfbGlua19wZXJmb3JtX2xpbmtfdHJhaW5pbmcoc3RydWN0IGRjICpkYywKICAgICAgIHN0 cnVjdCBkY19saW5rX3NldHRpbmdzICpsaW5rX3NldHRpbmcsCiAgICAgICBib29sIHNraXBfdmlk ZW9fcGF0dGVybik7CnZvaWQgZGNfbGlua19zZXRfcHJlZmVycmVkX2xpbmtfc2V0dGluZ3Moc3Ry dWN0IGRjICpkYywKICAgICAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgKmxpbmtfc2V0dGluZywK ICAgICAgc3RydWN0IGRjX2xpbmsgKmxpbmspOwp2b2lkIGRjX2xpbmtfc2V0X3ByZWZlcnJlZF90 cmFpbmluZ19zZXR0aW5ncyhzdHJ1Y3QgZGMgKmRjLAogICAgIHN0cnVjdCBkY19saW5rX3NldHRp bmdzICpsaW5rX3NldHRpbmcsCiAgICAgc3RydWN0IGRjX2xpbmtfdHJhaW5pbmdfb3ZlcnJpZGVz ICpsdF9vdmVycmlkZXMsCiAgICAgc3RydWN0IGRjX2xpbmsgKmxpbmssCiAgICAgYm9vbCBza2lw X2ltbWVkaWF0ZV9yZXRyYWluKTsKdm9pZCBkY19saW5rX2VuYWJsZV9ocGQoY29uc3Qgc3RydWN0 IGRjX2xpbmsgKmxpbmspOwp2b2lkIGRjX2xpbmtfZGlzYWJsZV9ocGQoY29uc3Qgc3RydWN0IGRj X2xpbmsgKmxpbmspOwp2b2lkIGRjX2xpbmtfc2V0X3Rlc3RfcGF0dGVybihzdHJ1Y3QgZGNfbGlu ayAqbGluaywKICAgZW51bSBkcF90ZXN0X3BhdHRlcm4gdGVzdF9wYXR0ZXJuLAogICBlbnVtIGRw X3Rlc3RfcGF0dGVybl9jb2xvcl9zcGFjZSB0ZXN0X3BhdHRlcm5fY29sb3Jfc3BhY2UsCiAgIGNv bnN0IHN0cnVjdCBsaW5rX3RyYWluaW5nX3NldHRpbmdzICpwX2xpbmtfc2V0dGluZ3MsCiAgIGNv bnN0IHVuc2lnbmVkIGNoYXIgKnBfY3VzdG9tX3BhdHRlcm4sCiAgIHVuc2lnbmVkIGludCBjdXN0 X3BhdHRlcm5fc2l6ZSk7CnVpbnQzMl90IGRjX2xpbmtfYmFuZHdpZHRoX2ticHMoCiBjb25zdCBz dHJ1Y3QgZGNfbGluayAqbGluaywKIGNvbnN0IHN0cnVjdCBkY19saW5rX3NldHRpbmdzICpsaW5r X3NldHRpbmcpOwoKY29uc3Qgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgKmRjX2xpbmtfZ2V0X2xp bmtfY2FwKAogIGNvbnN0IHN0cnVjdCBkY19saW5rICpsaW5rKTsKCnZvaWQgZGNfbGlua19vdmVy d3JpdGVfZXh0ZW5kZWRfcmVjZWl2ZXJfY2FwKAogIHN0cnVjdCBkY19saW5rICpsaW5rKTsKCmJv b2wgZGNfc3VibWl0X2kyYygKICBzdHJ1Y3QgZGMgKmRjLAogIHVpbnQzMl90IGxpbmtfaW5kZXgs CiAgc3RydWN0IGkyY19jb21tYW5kICpjbWQpOwoKYm9vbCBkY19zdWJtaXRfaTJjX29lbSgKICBz dHJ1Y3QgZGMgKmRjLAogIHN0cnVjdCBpMmNfY29tbWFuZCAqY21kKTsKCnVpbnQzMl90IGRjX2Jh bmR3aWR0aF9pbl9rYnBzX2Zyb21fdGltaW5nKAogY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5n ICp0aW1pbmcpOwojIDk4MyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2RjL2RjLmgiIDIKCgoKCgpzdHJ1Y3QgZGNfY29udGFpbmVyX2lkIHsKCiB1bnNpZ25lZCBjaGFy IGd1aWRbMTZdOwoKIHVuc2lnbmVkIGludCBwb3J0SWRbMl07CgogdW5zaWduZWQgc2hvcnQgbWFu dWZhY3R1cmVyTmFtZTsKCiB1bnNpZ25lZCBzaG9ydCBwcm9kdWN0Q29kZTsKfTsKCgpzdHJ1Y3Qg ZGNfc2lua19kc2NfY2FwcyB7CgoKIGJvb2wgaXNfdmlydHVhbF9kcGNkX2RzYzsKIHN0cnVjdCBk c2NfZGVjX2RwY2RfY2FwcyBkc2NfZGVjX2NhcHM7Cn07CgoKCgpzdHJ1Y3QgZGNfc2luayB7CiBl bnVtIHNpZ25hbF90eXBlIHNpbmtfc2lnbmFsOwogc3RydWN0IGRjX2VkaWQgZGNfZWRpZDsKIHN0 cnVjdCBkY19lZGlkX2NhcHMgZWRpZF9jYXBzOwogc3RydWN0IGRjX2NvbnRhaW5lcl9pZCAqZGNf Y29udGFpbmVyX2lkOwogdWludDMyX3QgZG9uZ2xlX21heF9waXhfY2xrOwogdm9pZCAqcHJpdjsK IHN0cnVjdCBzdGVyZW9fM2RfZmVhdHVyZXMgZmVhdHVyZXNfM2RbVElNSU5HXzNEX0ZPUk1BVF9N QVhdOwogYm9vbCBjb252ZXJ0ZXJfZGlzYWJsZV9hdWRpbzsKCiBzdHJ1Y3QgZGNfc2lua19kc2Nf Y2FwcyBzaW5rX2RzY19jYXBzOwoKCiBzdHJ1Y3QgZGNfbGluayAqbGluazsKIHN0cnVjdCBkY19j b250ZXh0ICpjdHg7CgogdWludDMyX3Qgc2lua19pZDsKCgoKCgogc3RydWN0IGtyZWYgcmVmY291 bnQ7Cn07Cgp2b2lkIGRjX3NpbmtfcmV0YWluKHN0cnVjdCBkY19zaW5rICpzaW5rKTsKdm9pZCBk Y19zaW5rX3JlbGVhc2Uoc3RydWN0IGRjX3NpbmsgKnNpbmspOwoKc3RydWN0IGRjX3NpbmtfaW5p dF9kYXRhIHsKIGVudW0gc2lnbmFsX3R5cGUgc2lua19zaWduYWw7CiBzdHJ1Y3QgZGNfbGluayAq bGluazsKIHVpbnQzMl90IGRvbmdsZV9tYXhfcGl4X2NsazsKIGJvb2wgY29udmVydGVyX2Rpc2Fi bGVfYXVkaW87Cn07CgpzdHJ1Y3QgZGNfc2luayAqZGNfc2lua19jcmVhdGUoY29uc3Qgc3RydWN0 IGRjX3NpbmtfaW5pdF9kYXRhICppbml0X3BhcmFtcyk7CgoKc3RydWN0IGRjX2N1cnNvciB7CiBz dHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyBhZGRyZXNzOwogc3RydWN0IGRjX2N1cnNvcl9hdHRyaWJ1 dGVzIGF0dHJpYnV0ZXM7Cn07CgoKCgoKZW51bSBkY19pcnFfc291cmNlIGRjX2ludGVycnVwdF90 b19pcnFfc291cmNlKAogIHN0cnVjdCBkYyAqZGMsCiAgdWludDMyX3Qgc3JjX2lkLAogIHVpbnQz Ml90IGV4dF9pZCk7CmJvb2wgZGNfaW50ZXJydXB0X3NldChzdHJ1Y3QgZGMgKmRjLCBlbnVtIGRj X2lycV9zb3VyY2Ugc3JjLCBib29sIGVuYWJsZSk7CnZvaWQgZGNfaW50ZXJydXB0X2FjayhzdHJ1 Y3QgZGMgKmRjLCBlbnVtIGRjX2lycV9zb3VyY2Ugc3JjKTsKZW51bSBkY19pcnFfc291cmNlIGRj X2dldF9ocGRfaXJxX3NvdXJjZV9hdF9pbmRleCgKICBzdHJ1Y3QgZGMgKmRjLCB1aW50MzJfdCBs aW5rX2luZGV4KTsKCgoKCgp2b2lkIGRjX3NldF9wb3dlcl9zdGF0ZSgKICBzdHJ1Y3QgZGMgKmRj LAogIGVudW0gZGNfYWNwaV9jbV9wb3dlcl9zdGF0ZSBwb3dlcl9zdGF0ZSk7CnZvaWQgZGNfcmVz dW1lKHN0cnVjdCBkYyAqZGMpOwp1bnNpZ25lZCBpbnQgZGNfZ2V0X2N1cnJlbnRfYmFja2xpZ2h0 X3B3bShzdHJ1Y3QgZGMgKmRjKTsKdW5zaWduZWQgaW50IGRjX2dldF90YXJnZXRfYmFja2xpZ2h0 X3B3bShzdHJ1Y3QgZGMgKmRjKTsKCmJvb2wgZGNfaXNfZG1jdV9pbml0aWFsaXplZChzdHJ1Y3Qg ZGMgKmRjKTsKYm9vbCBkY19pc19od19pbml0aWFsaXplZChzdHJ1Y3QgZGMgKmRjKTsKCmVudW0g ZGNfc3RhdHVzIGRjX3NldF9jbG9jayhzdHJ1Y3QgZGMgKmRjLCBlbnVtIGRjX2Nsb2NrX3R5cGUg Y2xvY2tfdHlwZSwgdWludDMyX3QgY2xrX2toeiwgdWludDMyX3Qgc3RlcHBpbmcpOwp2b2lkIGRj X2dldF9jbG9jayhzdHJ1Y3QgZGMgKmRjLCBlbnVtIGRjX2Nsb2NrX3R5cGUgY2xvY2tfdHlwZSwg c3RydWN0IGRjX2Nsb2NrX2NvbmZpZyAqY2xvY2tfY2ZnKTsKCgoKIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfZHNjLmgiIDEKIyAzNCAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2RzYy5oIgpzdHJ1Y3QgZGNfZHNj X2J3X3JhbmdlIHsKIHVpbnQzMl90IG1pbl9rYnBzOwogdWludDMyX3QgbWluX3RhcmdldF9icHBf eDE2OwogdWludDMyX3QgbWF4X2ticHM7CiB1aW50MzJfdCBtYXhfdGFyZ2V0X2JwcF94MTY7CiB1 aW50MzJfdCBzdHJlYW1fa2JwczsKfTsKCnN0cnVjdCBkaXNwbGF5X3N0cmVhbV9jb21wcmVzc29y IHsKIGNvbnN0IHN0cnVjdCBkc2NfZnVuY3MgKmZ1bmNzOwogc3RydWN0IGRjX2NvbnRleHQgKmN0 eDsKIGludCBpbnN0Owp9OwoKc3RydWN0IGRjX2RzY19wb2xpY3kgewogYm9vbCB1c2VfbWluX3Ns aWNlc19oOwogaW50IG1heF9zbGljZXNfaDsKIGludCBtaW5fc2xpY2VfaGVpZ2h0OwogdWludDMy X3QgbWF4X3RhcmdldF9icHA7CiB1aW50MzJfdCBtaW5fdGFyZ2V0X2JwcDsKfTsKCmJvb2wgZGNf ZHNjX3BhcnNlX2RzY19kcGNkKGNvbnN0IHN0cnVjdCBkYyAqZGMsCiAgY29uc3QgdWludDhfdCAq ZHBjZF9kc2NfYmFzaWNfZGF0YSwKICBjb25zdCB1aW50OF90ICpkcGNkX2RzY19leHRfZGF0YSwK ICBzdHJ1Y3QgZHNjX2RlY19kcGNkX2NhcHMgKmRzY19zaW5rX2NhcHMpOwoKYm9vbCBkY19kc2Nf Y29tcHV0ZV9iYW5kd2lkdGhfcmFuZ2UoCiAgY29uc3Qgc3RydWN0IGRpc3BsYXlfc3RyZWFtX2Nv bXByZXNzb3IgKmRzYywKICBjb25zdCB1aW50MzJfdCBkc2NfbWluX3NsaWNlX2hlaWdodF9vdmVy cmlkZSwKICBjb25zdCB1aW50MzJfdCBtaW5fYnBwLAogIGNvbnN0IHVpbnQzMl90IG1heF9icHAs CiAgY29uc3Qgc3RydWN0IGRzY19kZWNfZHBjZF9jYXBzICpkc2Nfc2lua19jYXBzLAogIGNvbnN0 IHN0cnVjdCBkY19jcnRjX3RpbWluZyAqdGltaW5nLAogIHN0cnVjdCBkY19kc2NfYndfcmFuZ2Ug KnJhbmdlKTsKCmJvb2wgZGNfZHNjX2NvbXB1dGVfY29uZmlnKAogIGNvbnN0IHN0cnVjdCBkaXNw bGF5X3N0cmVhbV9jb21wcmVzc29yICpkc2MsCiAgY29uc3Qgc3RydWN0IGRzY19kZWNfZHBjZF9j YXBzICpkc2Nfc2lua19jYXBzLAogIGNvbnN0IHVpbnQzMl90IGRzY19taW5fc2xpY2VfaGVpZ2h0 X292ZXJyaWRlLAogIHVpbnQzMl90IHRhcmdldF9iYW5kd2lkdGhfa2JwcywKICBjb25zdCBzdHJ1 Y3QgZGNfY3J0Y190aW1pbmcgKnRpbWluZywKICBzdHJ1Y3QgZGNfZHNjX2NvbmZpZyAqZHNjX2Nm Zyk7Cgp2b2lkIGRjX2RzY19nZXRfcG9saWN5X2Zvcl90aW1pbmcoY29uc3Qgc3RydWN0IGRjX2Ny dGNfdGltaW5nICp0aW1pbmcsCiAgc3RydWN0IGRjX2RzY19wb2xpY3kgKnBvbGljeSk7Cgp2b2lk IGRjX2RzY19wb2xpY3lfc2V0X21heF90YXJnZXRfYnBwX2xpbWl0KHVpbnQzMl90IGxpbWl0KTsK IyAxMDg2ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIg MgojIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3 L2Nsa19tZ3IuaCIgMgojIDUxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2h3L2Nsa19tZ3IuaCIKc3RydWN0IGNsa19saW1pdF90YWJsZV9lbnRyeSB7CiB1 bnNpZ25lZCBpbnQgdm9sdGFnZTsKIHVuc2lnbmVkIGludCBkY2ZjbGtfbWh6OwogdW5zaWduZWQg aW50IGZjbGtfbWh6OwogdW5zaWduZWQgaW50IG1lbWNsa19taHo7CiB1bnNpZ25lZCBpbnQgc29j Y2xrX21oejsKfTsKCgpzdHJ1Y3QgY2xrX2xpbWl0X3RhYmxlIHsKIHN0cnVjdCBjbGtfbGltaXRf dGFibGVfZW50cnkgZW50cmllc1s4XTsKIHVuc2lnbmVkIGludCBudW1fZW50cmllczsKfTsKCnN0 cnVjdCB3bV9yYW5nZV90YWJsZV9lbnRyeSB7CiB1bnNpZ25lZCBpbnQgd21faW5zdDsKIHVuc2ln bmVkIGludCB3bV90eXBlOwogZG91YmxlIHBzdGF0ZV9sYXRlbmN5X3VzOwogZG91YmxlIHNyX2V4 aXRfdGltZV91czsKIGRvdWJsZSBzcl9lbnRlcl9wbHVzX2V4aXRfdGltZV91czsKIGJvb2wgdmFs aWQ7Cn07CgoKc3RydWN0IGNsa19sb2dfaW5mbyB7CiBib29sIGVuYWJsZWQ7CiBjaGFyICpwQnVm OwogdW5zaWduZWQgaW50IGJ1ZlNpemU7CiB1bnNpZ25lZCBpbnQgKnN1bV9jaGFyc19wcmludGVk Owp9OwoKc3RydWN0IGNsa19zdGF0ZV9yZWdpc3RlcnNfYW5kX2J5cGFzcyB7CiB1aW50MzJfdCBk Y2ZjbGs7CiB1aW50MzJfdCBkY2ZfZGVlcF9zbGVlcF9kaXZpZGVyOwogdWludDMyX3QgZGNmX2Rl ZXBfc2xlZXBfYWxsb3c7CiB1aW50MzJfdCBkcHJlZmNsazsKIHVpbnQzMl90IGRpc3BjbGs7CiB1 aW50MzJfdCBkcHBjbGs7CgogdWludDMyX3QgZHBwY2xrX2J5cGFzczsKIHVpbnQzMl90IGRjZmNs a19ieXBhc3M7CiB1aW50MzJfdCBkcHJlZmNsa19ieXBhc3M7CiB1aW50MzJfdCBkaXNwY2xrX2J5 cGFzczsKfTsKCnN0cnVjdCBydjFfY2xrX2ludGVybmFsIHsKIHVpbnQzMl90IENMSzBfQ0xLOF9D VVJSRU5UX0NOVDsKIHVpbnQzMl90IENMSzBfQ0xLOF9EU19DTlRMOwogdWludDMyX3QgQ0xLMF9D TEs4X0FMTE9XX0RTOwogdWludDMyX3QgQ0xLMF9DTEsxMF9DVVJSRU5UX0NOVDsKIHVpbnQzMl90 IENMSzBfQ0xLMTFfQ1VSUkVOVF9DTlQ7CgogdWludDMyX3QgQ0xLMF9DTEs4X0JZUEFTU19DTlRM OwogdWludDMyX3QgQ0xLMF9DTEsxMF9CWVBBU1NfQ05UTDsKIHVpbnQzMl90IENMSzBfQ0xLMTFf QllQQVNTX0NOVEw7Cn07CgpzdHJ1Y3Qgcm5fY2xrX2ludGVybmFsIHsKIHVpbnQzMl90IENMSzFf Q0xLMF9DVVJSRU5UX0NOVDsKIHVpbnQzMl90IENMSzFfQ0xLMV9DVVJSRU5UX0NOVDsKIHVpbnQz Ml90IENMSzFfQ0xLMl9DVVJSRU5UX0NOVDsKIHVpbnQzMl90IENMSzFfQ0xLM19DVVJSRU5UX0NO VDsKIHVpbnQzMl90IENMSzFfQ0xLM19EU19DTlRMOwogdWludDMyX3QgQ0xLMV9DTEszX0FMTE9X X0RTOwoKIHVpbnQzMl90IENMSzFfQ0xLMF9CWVBBU1NfQ05UTDsKIHVpbnQzMl90IENMSzFfQ0xL MV9CWVBBU1NfQ05UTDsKIHVpbnQzMl90IENMSzFfQ0xLMl9CWVBBU1NfQ05UTDsKIHVpbnQzMl90 IENMSzFfQ0xLM19CWVBBU1NfQ05UTDsKCn07CgoKc3RydWN0IGNsa19zdGF0ZV9yZWdpc3RlcnMg ewogIHVpbnQzMl90IENMSzBfQ0xLOF9DVVJSRU5UX0NOVDsKICB1aW50MzJfdCBDTEswX0NMSzhf RFNfQ05UTDsKICB1aW50MzJfdCBDTEswX0NMSzhfQUxMT1dfRFM7CiAgdWludDMyX3QgQ0xLMF9D TEsxMF9DVVJSRU5UX0NOVDsKICB1aW50MzJfdCBDTEswX0NMSzExX0NVUlJFTlRfQ05UOwp9OwoK CnN0cnVjdCBjbGtfYnlwYXNzIHsKIHVpbnQzMl90IGRjZmNsa19ieXBhc3M7CiB1aW50MzJfdCBk aXNwY2xrX3B5cGFzczsKIHVpbnQzMl90IGRwcmVmY2xrX2J5cGFzczsKfTsKCgoKCgoKc3RydWN0 IHdtX3RhYmxlIHsKIHN0cnVjdCB3bV9yYW5nZV90YWJsZV9lbnRyeSBlbnRyaWVzWzRdOwp9OwoK c3RydWN0IGNsa19id19wYXJhbXMgewogdW5zaWduZWQgaW50IHZyYW1fdHlwZTsKIHVuc2lnbmVk IGludCBudW1fY2hhbm5lbHM7CiBzdHJ1Y3QgY2xrX2xpbWl0X3RhYmxlIGNsa190YWJsZTsKIHN0 cnVjdCB3bV90YWJsZSB3bV90YWJsZTsKfTsKCgpzdHJ1Y3QgY2xrX3N0YXRlcyB7CiB1aW50MzJf dCBkcHJlZmNsa19raHo7Cn07CgpzdHJ1Y3QgY2xrX21ncl9mdW5jcyB7CgoKCgoKCgogdm9pZCAo KnVwZGF0ZV9jbG9ja3MpKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyLAogICBzdHJ1Y3QgZGNfc3Rh dGUgKmNvbnRleHQsCiAgIGJvb2wgc2FmZV90b19sb3dlcik7CgogaW50ICgqZ2V0X2RwX3JlZl9j bGtfZnJlcXVlbmN5KShzdHJ1Y3QgY2xrX21nciAqY2xrX21ncik7Cgogdm9pZCAoKmluaXRfY2xv Y2tzKShzdHJ1Y3QgY2xrX21nciAqY2xrX21ncik7Cgogdm9pZCAoKmVuYWJsZV9wbWVfd2EpIChz dHJ1Y3QgY2xrX21nciAqY2xrX21ncik7CiB2b2lkICgqZ2V0X2Nsb2NrKShzdHJ1Y3QgY2xrX21n ciAqY2xrX21nciwKICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0LAogICBlbnVtIGRjX2Nsb2Nr X3R5cGUgY2xvY2tfdHlwZSwKICAgc3RydWN0IGRjX2Nsb2NrX2NvbmZpZyAqY2xvY2tfY2ZnKTsK CiBib29sICgqYXJlX2Nsb2NrX3N0YXRlc19lcXVhbCkgKHN0cnVjdCBkY19jbG9ja3MgKmEsCiAg IHN0cnVjdCBkY19jbG9ja3MgKmIpOwogdm9pZCAoKm5vdGlmeV93bV9yYW5nZXMpKHN0cnVjdCBj bGtfbWdyICpjbGtfbWdyKTsKfTsKCnN0cnVjdCBjbGtfbWdyIHsKIHN0cnVjdCBkY19jb250ZXh0 ICpjdHg7CiBzdHJ1Y3QgY2xrX21ncl9mdW5jcyAqZnVuY3M7CiBzdHJ1Y3QgZGNfY2xvY2tzIGNs a3M7CiBib29sIHBzcl9hbGxvd19hY3RpdmVfY2FjaGU7CiBpbnQgZHByZWZjbGtfa2h6OwogaW50 IGRlbnRpc3RfdmNvX2ZyZXFfa2h6Owogc3RydWN0IGNsa19zdGF0ZV9yZWdpc3RlcnNfYW5kX2J5 cGFzcyBib290X3NuYXBzaG90Owogc3RydWN0IGNsa19id19wYXJhbXMgKmJ3X3BhcmFtczsKfTsK CgpzdHJ1Y3QgZGNjZzsKCnN0cnVjdCBjbGtfbWdyICpkY19jbGtfbWdyX2NyZWF0ZShzdHJ1Y3Qg ZGNfY29udGV4dCAqY3R4LCBzdHJ1Y3QgcHBfc211X2Z1bmNzICpwcF9zbXUsIHN0cnVjdCBkY2Nn ICpkY2NnKTsKCnZvaWQgZGNfZGVzdHJveV9jbGtfbWdyKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdy KTsKCnZvaWQgY2xrX21ncl9leGl0X29wdGltaXplZF9wd3Jfc3RhdGUoY29uc3Qgc3RydWN0IGRj ICpkYywgc3RydWN0IGNsa19tZ3IgKmNsa19tZ3IpOwoKdm9pZCBjbGtfbWdyX29wdGltaXplX3B3 cl9zdGF0ZShjb25zdCBzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgY2xrX21nciAqY2xrX21ncik7CiMg MzAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvY2xr X21ncl9pbnRlcm5hbC5oIiAyCgoKCgoKCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2luYy9yZXNvdXJjZS5oIiAxCiMgMjggIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvcmVzb3VyY2UuaCIKIyAxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMQojIDMw ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlw ZXMuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5j L2RjZV9jYWxjcy5oIiAxCiMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvZGNlX2NhbGNzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2luYy9id19maXhlZC5oIiAxCiMgMzIgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvYndfZml4ZWQuaCIKc3RydWN0IGJ3X2ZpeGVk IHsKIGludDY0X3QgdmFsdWU7Cn07CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgYndfZml4ZWQgYndfbWluMihjb25z dCBzdHJ1Y3QgYndfZml4ZWQgYXJnMSwKICAgICAgICAgIGNvbnN0IHN0cnVjdCBid19maXhlZCBh cmcyKQp7CiByZXR1cm4gKGFyZzEudmFsdWUgPD0gYXJnMi52YWx1ZSkgPyBhcmcxIDogYXJnMjsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgc3RydWN0IGJ3X2ZpeGVkIGJ3X21heDIoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsCiAg ICAgICAgICBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKewogcmV0dXJuIChhcmcyLnZhbHVl IDw9IGFyZzEudmFsdWUpID8gYXJnMSA6IGFyZzI7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBid19maXhlZCBid19taW4z KHN0cnVjdCBid19maXhlZCB2MSwKICAgICAgICAgIHN0cnVjdCBid19maXhlZCB2MiwKICAgICAg ICAgIHN0cnVjdCBid19maXhlZCB2MykKewogcmV0dXJuIGJ3X21pbjIoYndfbWluMih2MSwgdjIp LCB2Myk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHN0cnVjdCBid19maXhlZCBid19tYXgzKHN0cnVjdCBid19maXhlZCB2MSwKICAg ICAgICAgIHN0cnVjdCBid19maXhlZCB2MiwKICAgICAgICAgIHN0cnVjdCBid19maXhlZCB2MykK ewogcmV0dXJuIGJ3X21heDIoYndfbWF4Mih2MSwgdjIpLCB2Myk7Cn0KCnN0cnVjdCBid19maXhl ZCBid19pbnRfdG9fZml4ZWRfbm9uY29uc3QoaW50NjRfdCB2YWx1ZSk7CnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBid19maXhl ZCBid19pbnRfdG9fZml4ZWQoaW50NjRfdCB2YWx1ZSkKewogaWYgKF9fYnVpbHRpbl9jb25zdGFu dF9wKHZhbHVlKSkgewogIHN0cnVjdCBid19maXhlZCByZXM7CiAgZG8geyBleHRlcm4gdm9pZCBf X2NvbXBpbGV0aW1lX2Fzc2VydF83Myh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIkJV SUxEX0JVR19PTiBmYWlsZWQ6ICIgInZhbHVlID4gQldfRklYRURfTUFYX0kzMiB8fCB2YWx1ZSA8 IEJXX0ZJWEVEX01JTl9JMzIiKSkpOyBpZiAoISghKHZhbHVlID4gKGludDY0X3QpKCgxVUxMIDw8 ICg2MyAtIDI0KSkgLSAxKSB8fCB2YWx1ZSA8IChpbnQ2NF90KSgtKDFMTCA8PCAoNjMgLSAyNCkp KSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF83MygpOyB9IHdoaWxlICgwKTsKICByZXMudmFsdWUg PSB2YWx1ZSA8PCAyNDsKICByZXR1cm4gcmVzOwogfSBlbHNlCiAgcmV0dXJuIGJ3X2ludF90b19m aXhlZF9ub25jb25zdCh2YWx1ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludDMyX3QgYndfZml4ZWRfdG9faW50KHN0cnVjdCBi d19maXhlZCB2YWx1ZSkKewogcmV0dXJuICgodmFsdWUudmFsdWUpID4+IDI0KTsKfQoKc3RydWN0 IGJ3X2ZpeGVkIGJ3X2ZyY190b19maXhlZChpbnQ2NF90IG51bSwgaW50NjRfdCBkZW51bSk7Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBz dHJ1Y3QgYndfZml4ZWQgZml4ZWQzMV8zMl90b19id19maXhlZChpbnQ2NF90IHJhdykKewogc3Ry dWN0IGJ3X2ZpeGVkIHJlc3VsdCA9IHsgMCB9OwoKIGlmIChyYXcgPCAwKSB7CiAgcmF3ID0gLXJh dzsKICByZXN1bHQudmFsdWUgPSAtKHJhdyA+PiAoMzIgLSAyNCkpOwogfSBlbHNlIHsKICByZXN1 bHQudmFsdWUgPSByYXcgPj4gKDMyIC0gMjQpOwogfQoKIHJldHVybiByZXN1bHQ7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVj dCBid19maXhlZCBid19hZGQoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsCiAgICAgICAgIGNv bnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQp7CiBzdHJ1Y3QgYndfZml4ZWQgcmVzOwoKIHJlcy52 YWx1ZSA9IGFyZzEudmFsdWUgKyBhcmcyLnZhbHVlOwoKIHJldHVybiByZXM7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBi d19maXhlZCBid19zdWIoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsIGNvbnN0IHN0cnVjdCBi d19maXhlZCBhcmcyKQp7CiBzdHJ1Y3QgYndfZml4ZWQgcmVzOwoKIHJlcy52YWx1ZSA9IGFyZzEu dmFsdWUgLSBhcmcyLnZhbHVlOwoKIHJldHVybiByZXM7Cn0KCnN0cnVjdCBid19maXhlZCBid19t dWwoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsIGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcy KTsKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgc3RydWN0IGJ3X2ZpeGVkIGJ3X2Rpdihjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMSwgY29u c3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzIpCnsKIHJldHVybiBid19mcmNfdG9fZml4ZWQoYXJnMS52 YWx1ZSwgYXJnMi52YWx1ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBid19maXhlZCBid19tb2QoY29uc3Qgc3RydWN0 IGJ3X2ZpeGVkIGFyZzEsIGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQp7CiBzdHJ1Y3QgYndf Zml4ZWQgcmVzOwogZGl2NjRfdTY0X3JlbShhcmcxLnZhbHVlLCBhcmcyLnZhbHVlLCAodWludDY0 X3QgKikmcmVzLnZhbHVlKTsKIHJldHVybiByZXM7Cn0KCnN0cnVjdCBid19maXhlZCBid19mbG9v cjIoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZywgY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIHNpZ25p ZmljYW5jZSk7CnN0cnVjdCBid19maXhlZCBid19jZWlsMihjb25zdCBzdHJ1Y3QgYndfZml4ZWQg YXJnLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgc2lnbmlmaWNhbmNlKTsKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYndfZXF1KGNv bnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKewog cmV0dXJuIGFyZzEudmFsdWUgPT0gYXJnMi52YWx1ZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBid19uZXEoY29uc3Qgc3Ry dWN0IGJ3X2ZpeGVkIGFyZzEsIGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQp7CiByZXR1cm4g YXJnMS52YWx1ZSAhPSBhcmcyLnZhbHVlOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGJ3X2xlcShjb25zdCBzdHJ1Y3QgYndf Zml4ZWQgYXJnMSwgY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzIpCnsKIHJldHVybiBhcmcxLnZh bHVlIDw9IGFyZzIudmFsdWU7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYndfbWVxKGNvbnN0IHN0cnVjdCBid19maXhlZCBh cmcxLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKewogcmV0dXJuIGFyZzEudmFsdWUgPj0g YXJnMi52YWx1ZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCBid19sdG4oY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsIGNv bnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQp7CiByZXR1cm4gYXJnMS52YWx1ZSA8IGFyZzIudmFs dWU7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgYndfbXRuKGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBjb25zdCBzdHJ1 Y3QgYndfZml4ZWQgYXJnMikKewogcmV0dXJuIGFyZzEudmFsdWUgPiBhcmcyLnZhbHVlOwp9CiMg MzQgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvZGNlX2Nh bGNzLmgiIDIKCnN0cnVjdCBwaXBlX2N0eDsKc3RydWN0IGRjOwpzdHJ1Y3QgZGNfc3RhdGU7CnN0 cnVjdCBkY2VfYndfb3V0cHV0OwoKZW51bSBid19jYWxjc192ZXJzaW9uIHsKIEJXX0NBTENTX1ZF UlNJT05fSU5WQUxJRCwKIEJXX0NBTENTX1ZFUlNJT05fQ0FSUklaTywKIEJXX0NBTENTX1ZFUlNJ T05fUE9MQVJJUzEwLAogQldfQ0FMQ1NfVkVSU0lPTl9QT0xBUklTMTEsCiBCV19DQUxDU19WRVJT SU9OX1BPTEFSSVMxMiwKIEJXX0NBTENTX1ZFUlNJT05fVkVHQU0sCiBCV19DQUxDU19WRVJTSU9O X1NUT05FWSwKIEJXX0NBTENTX1ZFUlNJT05fVkVHQTEwCn07CiMgNTggIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvZGNlX2NhbGNzLmgiCmVudW0gYndfZGVm aW5lcyB7CgogYndfZGVmX25vID0gMCwKIGJ3X2RlZl9ub25lID0gMCwKIGJ3X2RlZl95ZXMgPSAx LAogYndfZGVmX29rID0gMSwKIGJ3X2RlZl9oaWdoID0gMiwKIGJ3X2RlZl9taWQgPSAxLAogYndf ZGVmX2xvdyA9IDAsCgoKIGJ3X2RlZnNfc3RhcnQgPSAyNTUsCiBid19kZWZfdW5kZXJsYXk0MjIs CiBid19kZWZfdW5kZXJsYXk0MjBfbHVtYSwKIGJ3X2RlZl91bmRlcmxheTQyMF9jaHJvbWEsCiBi d19kZWZfdW5kZXJsYXk0NDQsCiBid19kZWZfZ3JhcGhpY3MsCiBid19kZWZfZGlzcGxheV93cml0 ZV9iYWNrNDIwX2x1bWEsCiBid19kZWZfZGlzcGxheV93cml0ZV9iYWNrNDIwX2Nocm9tYSwKIGJ3 X2RlZl9wb3J0cmFpdCwKIGJ3X2RlZl9oc3JfbXRuXzQsCiBid19kZWZfaHNyX210bl9oX3RhcHMs CiBid19kZWZfY2VpbGluZ19faF90YXBzX2Rpdl80X19fbWVxX2hzciwKIGJ3X2RlZl9pbnZhbGlk X2xpbmVhcl9vcl9zdGVyZW9fbW9kZSwKIGJ3X2RlZl9pbnZhbGlkX3JvdGF0aW9uX29yX2JwcF9v cl9zdGVyZW8sCiBid19kZWZfdnNyX210bl92X3RhcHMsCiBid19kZWZfdnNyX210bl80LAogYndf ZGVmX2F1dG8sCiBid19kZWZfbWFudWFsLAogYndfZGVmX2V4Y2VlZGVkX2FsbG93ZWRfbWF4aW11 bV9zY2xrLAogYndfZGVmX2V4Y2VlZGVkX2FsbG93ZWRfcGFnZV9jbG9zZV9vcGVuLAogYndfZGVm X2V4Y2VlZGVkX2FsbG93ZWRfb3V0c3RhbmRpbmdfcHRlX3JlcV9xdWV1ZV9zaXplLAogYndfZGVm X2V4Y2VlZGVkX2FsbG93ZWRfbWF4aW11bV9idywKIGJ3X2RlZl9sYW5kc2NhcGUsCgoKIGJ3X2Rl Zl9hbnlfbGluZXMsCgoKIGJ3X2RlZl91bmRlcmxheV9vbmx5LAogYndfZGVmX2JsZW5kZWQsCiBi d19kZWZfYmxlbmQsCgoKIGJ3X2RlZl9tb25vLAogYndfZGVmX3NpZGVfYnlfc2lkZSwKIGJ3X2Rl Zl90b3BfYm90dG9tLAoKCiBid19kZWZfNDIwLAogYndfZGVmXzQyMiwKIGJ3X2RlZl80NDQsCgoK IGJ3X2RlZl9saW5lYXIsCiBid19kZWZfdGlsZWQsCiBid19kZWZfYXJyYXlfbGluZWFyX2dlbmVy YWwsCiBid19kZWZfYXJyYXlfbGluZWFyX2FsaWduZWQsCiBid19kZWZfcm90YXRlZF9taWNyb190 aWxpbmcsCiBid19kZWZfZGlzcGxheV9taWNyb190aWxpbmcsCgoKIGJ3X2RlZl9nZGRyNSwKIGJ3 X2RlZl9oYm0sCgoKIGJ3X2RlZl9oaWdoX25vX25icF9zdGF0ZV9jaGFuZ2UsCiBid19kZWZfMF83 MiwKIGJ3X2RlZl8wXzgsCiBid19kZWZfMF85LAoKIGJ3X2RlZl9ub3RvayA9IC0xLAogYndfZGVm X25hID0gLTEKfTsKCnN0cnVjdCBid19jYWxjc19kY2VpcCB7CiBlbnVtIGJ3X2NhbGNzX3ZlcnNp b24gdmVyc2lvbjsKIHVpbnQzMl90IHBlcmNlbnRfb2ZfaWRlYWxfcG9ydF9id19yZWNlaXZlZF9h ZnRlcl91cmdlbnRfbGF0ZW5jeTsKIHVpbnQzMl90IG1heF9hdmVyYWdlX3BlcmNlbnRfb2ZfaWRl YWxfcG9ydF9id19kaXNwbGF5X2Nhbl91c2VfaW5fbm9ybWFsX3N5c3RlbV9vcGVyYXRpb247CiB1 aW50MzJfdCBtYXhfYXZlcmFnZV9wZXJjZW50X29mX2lkZWFsX2RyYW1id19kaXNwbGF5X2Nhbl91 c2VfaW5fbm9ybWFsX3N5c3RlbV9vcGVyYXRpb247CiBib29sIGxhcmdlX2N1cnNvcjsKIHVpbnQz Ml90IGN1cnNvcl9tYXhfb3V0c3RhbmRpbmdfZ3JvdXBfbnVtOwogYm9vbCBkbWlmX3BpcGVfZW5f ZmJjX2NodW5rX3RyYWNrZXI7CiBzdHJ1Y3QgYndfZml4ZWQgZG1pZl9yZXF1ZXN0X2J1ZmZlcl9z aXplOwogdWludDMyX3QgbGluZXNfaW50ZXJsZWF2ZWRfaW50b19sYjsKIHVpbnQzMl90IGxvd19w b3dlcl90aWxpbmdfbW9kZTsKIHVpbnQzMl90IGNodW5rX3dpZHRoOwogdWludDMyX3QgbnVtYmVy X29mX2dyYXBoaWNzX3BpcGVzOwogdWludDMyX3QgbnVtYmVyX29mX3VuZGVybGF5X3BpcGVzOwog Ym9vbCBkaXNwbGF5X3dyaXRlX2JhY2tfc3VwcG9ydGVkOwogYm9vbCBhcmdiX2NvbXByZXNzaW9u X3N1cHBvcnQ7CiBzdHJ1Y3QgYndfZml4ZWQgdW5kZXJsYXlfdnNjYWxlcl9lZmZpY2llbmN5Nl9i aXRfcGVyX2NvbXBvbmVudDsKIHN0cnVjdCBid19maXhlZCB1bmRlcmxheV92c2NhbGVyX2VmZmlj aWVuY3k4X2JpdF9wZXJfY29tcG9uZW50Owogc3RydWN0IGJ3X2ZpeGVkIHVuZGVybGF5X3ZzY2Fs ZXJfZWZmaWNpZW5jeTEwX2JpdF9wZXJfY29tcG9uZW50Owogc3RydWN0IGJ3X2ZpeGVkIHVuZGVy bGF5X3ZzY2FsZXJfZWZmaWNpZW5jeTEyX2JpdF9wZXJfY29tcG9uZW50Owogc3RydWN0IGJ3X2Zp eGVkIGdyYXBoaWNzX3ZzY2FsZXJfZWZmaWNpZW5jeTZfYml0X3Blcl9jb21wb25lbnQ7CiBzdHJ1 Y3QgYndfZml4ZWQgZ3JhcGhpY3NfdnNjYWxlcl9lZmZpY2llbmN5OF9iaXRfcGVyX2NvbXBvbmVu dDsKIHN0cnVjdCBid19maXhlZCBncmFwaGljc192c2NhbGVyX2VmZmljaWVuY3kxMF9iaXRfcGVy X2NvbXBvbmVudDsKIHN0cnVjdCBid19maXhlZCBncmFwaGljc192c2NhbGVyX2VmZmljaWVuY3kx Ml9iaXRfcGVyX2NvbXBvbmVudDsKIHN0cnVjdCBid19maXhlZCBhbHBoYV92c2NhbGVyX2VmZmlj aWVuY3k7CiB1aW50MzJfdCBtYXhfZG1pZl9idWZmZXJfYWxsb2NhdGVkOwogdWludDMyX3QgZ3Jh cGhpY3NfZG1pZl9zaXplOwogdWludDMyX3QgdW5kZXJsYXlfbHVtYV9kbWlmX3NpemU7CiB1aW50 MzJfdCB1bmRlcmxheV9jaHJvbWFfZG1pZl9zaXplOwogYm9vbCBwcmVfZG93bnNjYWxlcl9lbmFi bGVkOwogYm9vbCB1bmRlcmxheV9kb3duc2NhbGVfcHJlZmV0Y2hfZW5hYmxlZDsKIHN0cnVjdCBi d19maXhlZCBsYl93cml0ZV9waXhlbHNfcGVyX2Rpc3BjbGs7CiBzdHJ1Y3QgYndfZml4ZWQgbGJf c2l6ZV9wZXJfY29tcG9uZW50NDQ0OwogYm9vbCBncmFwaGljc19sYl9ub2Rvd25zY2FsaW5nX211 bHRpX2xpbmVfcHJlZmV0Y2hpbmc7CiBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRlcl9hbmRfZHJhbV9j bG9ja19zdGF0ZV9jaGFuZ2VfZ2F0ZWRfYmVmb3JlX2N1cnNvcjsKIHN0cnVjdCBid19maXhlZCB1 bmRlcmxheTQyMF9sdW1hX2xiX3NpemVfcGVyX2NvbXBvbmVudDsKIHN0cnVjdCBid19maXhlZCB1 bmRlcmxheTQyMF9jaHJvbWFfbGJfc2l6ZV9wZXJfY29tcG9uZW50Owogc3RydWN0IGJ3X2ZpeGVk IHVuZGVybGF5NDIyX2xiX3NpemVfcGVyX2NvbXBvbmVudDsKIHN0cnVjdCBid19maXhlZCBjdXJz b3JfY2h1bmtfd2lkdGg7CiBzdHJ1Y3QgYndfZml4ZWQgY3Vyc29yX2RjcF9idWZmZXJfbGluZXM7 CiBzdHJ1Y3QgYndfZml4ZWQgdW5kZXJsYXlfbWF4aW11bV93aWR0aF9lZmZpY2llbnRfZm9yX3Rp bGluZzsKIHN0cnVjdCBid19maXhlZCB1bmRlcmxheV9tYXhpbXVtX2hlaWdodF9lZmZpY2llbnRf Zm9yX3RpbGluZzsKIHN0cnVjdCBid19maXhlZCBwZWFrX3B0ZV9yZXF1ZXN0X3RvX2V2aWN0aW9u X3JhdGlvX2xpbWl0aW5nX211bHRpcGxlX2Rpc3BsYXlzX29yX3NpbmdsZV9yb3RhdGVkX2Rpc3Bs YXk7CiBzdHJ1Y3QgYndfZml4ZWQgcGVha19wdGVfcmVxdWVzdF90b19ldmljdGlvbl9yYXRpb19s aW1pdGluZ19zaW5nbGVfZGlzcGxheV9ub19yb3RhdGlvbjsKIHN0cnVjdCBid19maXhlZCBtaW5p bXVtX291dHN0YW5kaW5nX3B0ZV9yZXF1ZXN0X2xpbWl0Owogc3RydWN0IGJ3X2ZpeGVkIG1heGlt dW1fdG90YWxfb3V0c3RhbmRpbmdfcHRlX3JlcXVlc3RzX2FsbG93ZWRfYnlfc2F3OwogYm9vbCBs aW1pdF9leGNlc3NpdmVfb3V0c3RhbmRpbmdfZG1pZl9yZXF1ZXN0czsKIHN0cnVjdCBid19maXhl ZCBsaW5lYXJfbW9kZV9saW5lX3JlcXVlc3RfYWx0ZXJuYXRpb25fc2xpY2U7CiB1aW50MzJfdCBz Y2F0dGVyX2dhdGhlcl9saW5lc19vZl9wdGVfcHJlZmV0Y2hpbmdfaW5fbGluZWFyX21vZGU7CiB1 aW50MzJfdCBkaXNwbGF5X3dyaXRlX2JhY2s0MjBfbHVtYV9tY2lmd3JfYnVmZmVyX3NpemU7CiB1 aW50MzJfdCBkaXNwbGF5X3dyaXRlX2JhY2s0MjBfY2hyb21hX21jaWZ3cl9idWZmZXJfc2l6ZTsK IHN0cnVjdCBid19maXhlZCByZXF1ZXN0X2VmZmljaWVuY3k7CiBzdHJ1Y3QgYndfZml4ZWQgZGlz cGNsa19wZXJfcmVxdWVzdDsKIHN0cnVjdCBid19maXhlZCBkaXNwY2xrX3JhbXBpbmdfZmFjdG9y Owogc3RydWN0IGJ3X2ZpeGVkIGRpc3BsYXlfcGlwZV90aHJvdWdocHV0X2ZhY3RvcjsKIHVpbnQz Ml90IHNjYXR0ZXJfZ2F0aGVyX3B0ZV9yZXF1ZXN0X3Jvd3NfaW5fdGlsaW5nX21vZGU7CiBzdHJ1 Y3QgYndfZml4ZWQgbWNpZndyX2FsbF9zdXJmYWNlc19idXJzdF90aW1lOwp9OwoKc3RydWN0IGJ3 X2NhbGNzX3ZiaW9zIHsKIGVudW0gYndfZGVmaW5lcyBtZW1vcnlfdHlwZTsKIHVpbnQzMl90IGRy YW1fY2hhbm5lbF93aWR0aF9pbl9iaXRzOwogdWludDMyX3QgbnVtYmVyX29mX2RyYW1fY2hhbm5l bHM7CiB1aW50MzJfdCBudW1iZXJfb2ZfZHJhbV9iYW5rczsKIHN0cnVjdCBid19maXhlZCBsb3df eWNsazsKIHN0cnVjdCBid19maXhlZCBtaWRfeWNsazsKIHN0cnVjdCBid19maXhlZCBoaWdoX3lj bGs7CiBzdHJ1Y3QgYndfZml4ZWQgbG93X3NjbGs7CiBzdHJ1Y3QgYndfZml4ZWQgbWlkMV9zY2xr Owogc3RydWN0IGJ3X2ZpeGVkIG1pZDJfc2NsazsKIHN0cnVjdCBid19maXhlZCBtaWQzX3NjbGs7 CiBzdHJ1Y3QgYndfZml4ZWQgbWlkNF9zY2xrOwogc3RydWN0IGJ3X2ZpeGVkIG1pZDVfc2NsazsK IHN0cnVjdCBid19maXhlZCBtaWQ2X3NjbGs7CiBzdHJ1Y3QgYndfZml4ZWQgaGlnaF9zY2xrOwog c3RydWN0IGJ3X2ZpeGVkIGxvd192b2x0YWdlX21heF9kaXNwY2xrOwogc3RydWN0IGJ3X2ZpeGVk IG1pZF92b2x0YWdlX21heF9kaXNwY2xrOwogc3RydWN0IGJ3X2ZpeGVkIGhpZ2hfdm9sdGFnZV9t YXhfZGlzcGNsazsKIHN0cnVjdCBid19maXhlZCBsb3dfdm9sdGFnZV9tYXhfcGh5Y2xrOwogc3Ry dWN0IGJ3X2ZpeGVkIG1pZF92b2x0YWdlX21heF9waHljbGs7CiBzdHJ1Y3QgYndfZml4ZWQgaGln aF92b2x0YWdlX21heF9waHljbGs7CiBzdHJ1Y3QgYndfZml4ZWQgZGF0YV9yZXR1cm5fYnVzX3dp ZHRoOwogc3RydWN0IGJ3X2ZpeGVkIHRyYzsKIHN0cnVjdCBid19maXhlZCBkbWlmbWNfdXJnZW50 X2xhdGVuY3k7CiBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRlcl9zZWxmX3JlZnJlc2hfZXhpdF9sYXRl bmN5Owogc3RydWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfc2VsZl9yZWZyZXNoX2VudHJ5X2xhdGVuY3k7 CiBzdHJ1Y3QgYndfZml4ZWQgbmJwX3N0YXRlX2NoYW5nZV9sYXRlbmN5Owogc3RydWN0IGJ3X2Zp eGVkIG1jaWZ3cm1jX3VyZ2VudF9sYXRlbmN5OwogYm9vbCBzY2F0dGVyX2dhdGhlcl9lbmFibGU7 CiBzdHJ1Y3QgYndfZml4ZWQgZG93bl9zcHJlYWRfcGVyY2VudGFnZTsKIHVpbnQzMl90IGN1cnNv cl93aWR0aDsKIHVpbnQzMl90IGF2ZXJhZ2VfY29tcHJlc3Npb25fcmF0ZTsKIHVpbnQzMl90IG51 bWJlcl9vZl9yZXF1ZXN0X3Nsb3RzX2dtY19yZXNlcnZlc19mb3JfZG1pZl9wZXJfY2hhbm5lbDsK IHN0cnVjdCBid19maXhlZCBibGFja291dF9kdXJhdGlvbjsKIHN0cnVjdCBid19maXhlZCBtYXhp bXVtX2JsYWNrb3V0X3JlY292ZXJ5X3RpbWU7Cn07CgoKCgoKCgpzdHJ1Y3QgYndfY2FsY3NfZGF0 YSB7CgogYm9vbCBkaXNwbGF5X3N5bmNocm9uaXphdGlvbl9lbmFibGVkOwogdWludDMyX3QgbnVt YmVyX29mX2Rpc3BsYXlzOwogZW51bSBid19kZWZpbmVzIHVuZGVybGF5X3N1cmZhY2VfdHlwZTsK IGVudW0gYndfZGVmaW5lcyBwYW5uaW5nX2FuZF9iZXplbF9hZGp1c3RtZW50OwogZW51bSBid19k ZWZpbmVzIGdyYXBoaWNzX3RpbGluZ19tb2RlOwogdWludDMyX3QgZ3JhcGhpY3NfbGJfYnBjOwog dWludDMyX3QgdW5kZXJsYXlfbGJfYnBjOwogZW51bSBid19kZWZpbmVzIHVuZGVybGF5X3RpbGlu Z19tb2RlOwogZW51bSBid19kZWZpbmVzIGQwX3VuZGVybGF5X21vZGU7CiBib29sIGQxX2Rpc3Bs YXlfd3JpdGVfYmFja19kd2JfZW5hYmxlOwogZW51bSBid19kZWZpbmVzIGQxX3VuZGVybGF5X21v ZGU7CgogYm9vbCBpbmNyZWFzZV92b2x0YWdlX3RvX3N1cHBvcnRfbWNsa19zd2l0Y2g7CiBib29s IGNwdXBfc3RhdGVfY2hhbmdlX2VuYWJsZTsKIGJvb2wgY3B1Y19zdGF0ZV9jaGFuZ2VfZW5hYmxl OwogYm9vbCBuYnBfc3RhdGVfY2hhbmdlX2VuYWJsZTsKIGJvb2wgc3R1dHRlcl9tb2RlX2VuYWJs ZTsKIHVpbnQzMl90IHlfY2xrX2xldmVsOwogdWludDMyX3Qgc2Nsa19sZXZlbDsKIHVpbnQzMl90 IG51bWJlcl9vZl91bmRlcmxheV9zdXJmYWNlczsKIHVpbnQzMl90IG51bWJlcl9vZl9kcmFtX3dy Y2hhbm5lbHM7CiB1aW50MzJfdCBjaHVua19yZXF1ZXN0X2RlbGF5OwogdWludDMyX3QgbnVtYmVy X29mX2RyYW1fY2hhbm5lbHM7CiBlbnVtIGJ3X2RlZmluZXMgdW5kZXJsYXlfbWljcm9fdGlsZV9t b2RlOwogZW51bSBid19kZWZpbmVzIGdyYXBoaWNzX21pY3JvX3RpbGVfbW9kZTsKIHN0cnVjdCBi d19maXhlZCBtYXhfcGh5Y2xrOwogc3RydWN0IGJ3X2ZpeGVkIGRyYW1fZWZmaWNpZW5jeTsKIHN0 cnVjdCBid19maXhlZCBzcmNfd2lkdGhfYWZ0ZXJfc3VyZmFjZV90eXBlOwogc3RydWN0IGJ3X2Zp eGVkIHNyY19oZWlnaHRfYWZ0ZXJfc3VyZmFjZV90eXBlOwogc3RydWN0IGJ3X2ZpeGVkIGhzcl9h ZnRlcl9zdXJmYWNlX3R5cGU7CiBzdHJ1Y3QgYndfZml4ZWQgdnNyX2FmdGVyX3N1cmZhY2VfdHlw ZTsKIHN0cnVjdCBid19maXhlZCBzcmNfd2lkdGhfYWZ0ZXJfcm90YXRpb247CiBzdHJ1Y3QgYndf Zml4ZWQgc3JjX2hlaWdodF9hZnRlcl9yb3RhdGlvbjsKIHN0cnVjdCBid19maXhlZCBoc3JfYWZ0 ZXJfcm90YXRpb247CiBzdHJ1Y3QgYndfZml4ZWQgdnNyX2FmdGVyX3JvdGF0aW9uOwogc3RydWN0 IGJ3X2ZpeGVkIHNvdXJjZV9oZWlnaHRfcGl4ZWxzOwogc3RydWN0IGJ3X2ZpeGVkIGhzcl9hZnRl cl9zdGVyZW87CiBzdHJ1Y3QgYndfZml4ZWQgdnNyX2FmdGVyX3N0ZXJlbzsKIHN0cnVjdCBid19m aXhlZCBzb3VyY2Vfd2lkdGhfaW5fbGI7CiBzdHJ1Y3QgYndfZml4ZWQgbGJfbGluZV9waXRjaDsK IHN0cnVjdCBid19maXhlZCB1bmRlcmxheV9tYXhpbXVtX3NvdXJjZV9lZmZpY2llbnRfZm9yX3Rp bGluZzsKIHN0cnVjdCBid19maXhlZCBudW1fbGluZXNfYXRfZnJhbWVfc3RhcnQ7CiBzdHJ1Y3Qg YndfZml4ZWQgbWluX2RtaWZfc2l6ZV9pbl90aW1lOwogc3RydWN0IGJ3X2ZpeGVkIG1pbl9tY2lm d3Jfc2l6ZV9pbl90aW1lOwogc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX3JlcXVlc3RzX2Zvcl9kbWlm X3NpemU7CiBzdHJ1Y3QgYndfZml4ZWQgcGVha19wdGVfcmVxdWVzdF90b19ldmljdGlvbl9yYXRp b19saW1pdGluZzsKIHN0cnVjdCBid19maXhlZCB1c2VmdWxfcHRlX3Blcl9wdGVfcmVxdWVzdDsK IHN0cnVjdCBid19maXhlZCBzY2F0dGVyX2dhdGhlcl9wdGVfcmVxdWVzdF9yb3dzOwogc3RydWN0 IGJ3X2ZpeGVkIHNjYXR0ZXJfZ2F0aGVyX3Jvd19oZWlnaHQ7CiBzdHJ1Y3QgYndfZml4ZWQgc2Nh dHRlcl9nYXRoZXJfcHRlX3JlcXVlc3RzX2luX3ZibGFuazsKIHN0cnVjdCBid19maXhlZCBpbmVm ZmljaWVudF9saW5lYXJfcGl0Y2hfaW5fYnl0ZXM7CiBzdHJ1Y3QgYndfZml4ZWQgY3Vyc29yX3Rv dGFsX2RhdGE7CiBzdHJ1Y3QgYndfZml4ZWQgY3Vyc29yX3RvdGFsX3JlcXVlc3RfZ3JvdXBzOwog c3RydWN0IGJ3X2ZpeGVkIHNjYXR0ZXJfZ2F0aGVyX3RvdGFsX3B0ZV9yZXF1ZXN0czsKIHN0cnVj dCBid19maXhlZCBzY2F0dGVyX2dhdGhlcl90b3RhbF9wdGVfcmVxdWVzdF9ncm91cHM7CiBzdHJ1 Y3QgYndfZml4ZWQgdGlsZV93aWR0aF9pbl9waXhlbHM7CiBzdHJ1Y3QgYndfZml4ZWQgZG1pZl90 b3RhbF9udW1iZXJfb2ZfZGF0YV9yZXF1ZXN0X3BhZ2VfY2xvc2Vfb3BlbjsKIHN0cnVjdCBid19m aXhlZCBtY2lmd3JfdG90YWxfbnVtYmVyX29mX2RhdGFfcmVxdWVzdF9wYWdlX2Nsb3NlX29wZW47 CiBzdHJ1Y3QgYndfZml4ZWQgYnl0ZXNfcGVyX3BhZ2VfY2xvc2Vfb3BlbjsKIHN0cnVjdCBid19m aXhlZCBtY2lmd3JfdG90YWxfcGFnZV9jbG9zZV9vcGVuX3RpbWU7CiBzdHJ1Y3QgYndfZml4ZWQg dG90YWxfcmVxdWVzdHNfZm9yX2FkanVzdGVkX2RtaWZfc2l6ZTsKIHN0cnVjdCBid19maXhlZCB0 b3RhbF9kbWlmbWNfdXJnZW50X3RyaXBzOwogc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2RtaWZtY191 cmdlbnRfbGF0ZW5jeTsKIHN0cnVjdCBid19maXhlZCB0b3RhbF9kaXNwbGF5X3JlYWRzX3JlcXVp cmVkX2RhdGE7CiBzdHJ1Y3QgYndfZml4ZWQgdG90YWxfZGlzcGxheV9yZWFkc19yZXF1aXJlZF9k cmFtX2FjY2Vzc19kYXRhOwogc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2Rpc3BsYXlfd3JpdGVzX3Jl cXVpcmVkX2RhdGE7CiBzdHJ1Y3QgYndfZml4ZWQgdG90YWxfZGlzcGxheV93cml0ZXNfcmVxdWly ZWRfZHJhbV9hY2Nlc3NfZGF0YTsKIHN0cnVjdCBid19maXhlZCBkaXNwbGF5X3JlYWRzX3JlcXVp cmVkX2RhdGE7CiBzdHJ1Y3QgYndfZml4ZWQgZGlzcGxheV9yZWFkc19yZXF1aXJlZF9kcmFtX2Fj Y2Vzc19kYXRhOwogc3RydWN0IGJ3X2ZpeGVkIGRtaWZfdG90YWxfcGFnZV9jbG9zZV9vcGVuX3Rp bWU7CiBzdHJ1Y3QgYndfZml4ZWQgbWluX2N1cnNvcl9tZW1vcnlfaW50ZXJmYWNlX2J1ZmZlcl9z aXplX2luX3RpbWU7CiBzdHJ1Y3QgYndfZml4ZWQgbWluX3JlYWRfYnVmZmVyX3NpemVfaW5fdGlt ZTsKIHN0cnVjdCBid19maXhlZCBkaXNwbGF5X3JlYWRzX3RpbWVfZm9yX2RhdGFfdHJhbnNmZXI7 CiBzdHJ1Y3QgYndfZml4ZWQgZGlzcGxheV93cml0ZXNfdGltZV9mb3JfZGF0YV90cmFuc2ZlcjsK IHN0cnVjdCBid19maXhlZCBkbWlmX3JlcXVpcmVkX2RyYW1fYmFuZHdpZHRoOwogc3RydWN0IGJ3 X2ZpeGVkIG1jaWZ3cl9yZXF1aXJlZF9kcmFtX2JhbmR3aWR0aDsKIHN0cnVjdCBid19maXhlZCBy ZXF1aXJlZF9kbWlmbWNfdXJnZW50X2xhdGVuY3lfZm9yX3BhZ2VfY2xvc2Vfb3BlbjsKIHN0cnVj dCBid19maXhlZCByZXF1aXJlZF9tY2lmbWN3cl91cmdlbnRfbGF0ZW5jeTsKIHN0cnVjdCBid19m aXhlZCByZXF1aXJlZF9kcmFtX2JhbmR3aWR0aF9nYnl0ZV9wZXJfc2Vjb25kOwogc3RydWN0IGJ3 X2ZpeGVkIGRyYW1fYmFuZHdpZHRoOwogc3RydWN0IGJ3X2ZpeGVkIGRtaWZfcmVxdWlyZWRfc2Ns azsKIHN0cnVjdCBid19maXhlZCBtY2lmd3JfcmVxdWlyZWRfc2NsazsKIHN0cnVjdCBid19maXhl ZCByZXF1aXJlZF9zY2xrOwogc3RydWN0IGJ3X2ZpeGVkIGRvd25zcHJlYWRfZmFjdG9yOwogc3Ry dWN0IGJ3X2ZpeGVkIHZfc2NhbGVyX2VmZmljaWVuY3k7CiBzdHJ1Y3QgYndfZml4ZWQgc2NhbGVy X2xpbWl0c19mYWN0b3I7CiBzdHJ1Y3QgYndfZml4ZWQgZGlzcGxheV9waXBlX3BpeGVsX3Rocm91 Z2hwdXQ7CiBzdHJ1Y3QgYndfZml4ZWQgdG90YWxfZGlzcGNsa19yZXF1aXJlZF93aXRoX3JhbXBp bmc7CiBzdHJ1Y3QgYndfZml4ZWQgdG90YWxfZGlzcGNsa19yZXF1aXJlZF93aXRob3V0X3JhbXBp bmc7CiBzdHJ1Y3QgYndfZml4ZWQgdG90YWxfcmVhZF9yZXF1ZXN0X2JhbmR3aWR0aDsKIHN0cnVj dCBid19maXhlZCB0b3RhbF93cml0ZV9yZXF1ZXN0X2JhbmR3aWR0aDsKIHN0cnVjdCBid19maXhl ZCBkaXNwY2xrX3JlcXVpcmVkX2Zvcl90b3RhbF9yZWFkX3JlcXVlc3RfYmFuZHdpZHRoOwogc3Ry dWN0IGJ3X2ZpeGVkIHRvdGFsX2Rpc3BjbGtfcmVxdWlyZWRfd2l0aF9yYW1waW5nX3dpdGhfcmVx dWVzdF9iYW5kd2lkdGg7CiBzdHJ1Y3QgYndfZml4ZWQgdG90YWxfZGlzcGNsa19yZXF1aXJlZF93 aXRob3V0X3JhbXBpbmdfd2l0aF9yZXF1ZXN0X2JhbmR3aWR0aDsKIHN0cnVjdCBid19maXhlZCBk aXNwY2xrOwogc3RydWN0IGJ3X2ZpeGVkIGJsYWNrb3V0X3JlY292ZXJ5X3RpbWU7CiBzdHJ1Y3Qg YndfZml4ZWQgbWluX3BpeGVsc19wZXJfZGF0YV9maWZvX2VudHJ5Owogc3RydWN0IGJ3X2ZpeGVk IHNjbGtfZGVlcF9zbGVlcDsKIHN0cnVjdCBid19maXhlZCBjaHVua19yZXF1ZXN0X3RpbWU7CiBz dHJ1Y3QgYndfZml4ZWQgY3Vyc29yX3JlcXVlc3RfdGltZTsKIHN0cnVjdCBid19maXhlZCBsaW5l X3NvdXJjZV9waXhlbHNfdHJhbnNmZXJfdGltZTsKIHN0cnVjdCBid19maXhlZCBkbWlmZHJhbV9h Y2Nlc3NfZWZmaWNpZW5jeTsKIHN0cnVjdCBid19maXhlZCBtY2lmd3JkcmFtX2FjY2Vzc19lZmZp Y2llbmN5Owogc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2F2ZXJhZ2VfYmFuZHdpZHRoX25vX2NvbXBy ZXNzaW9uOwogc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2F2ZXJhZ2VfYmFuZHdpZHRoOwogc3RydWN0 IGJ3X2ZpeGVkIHRvdGFsX3N0dXR0ZXJfY3ljbGVfZHVyYXRpb247CiBzdHJ1Y3QgYndfZml4ZWQg c3R1dHRlcl9idXJzdF90aW1lOwogc3RydWN0IGJ3X2ZpeGVkIHRpbWVfaW5fc2VsZl9yZWZyZXNo Owogc3RydWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfZWZmaWNpZW5jeTsKIHN0cnVjdCBid19maXhlZCB3 b3JzdF9udW1iZXJfb2ZfdHJpcHNfdG9fbWVtb3J5Owogc3RydWN0IGJ3X2ZpeGVkIGltbWVkaWF0 ZV9mbGlwX3RpbWU7CiBzdHJ1Y3QgYndfZml4ZWQgbGF0ZW5jeV9mb3Jfbm9uX2RtaWZfY2xpZW50 czsKIHN0cnVjdCBid19maXhlZCBsYXRlbmN5X2Zvcl9ub25fbWNpZndyX2NsaWVudHM7CiBzdHJ1 Y3QgYndfZml4ZWQgZG1pZm1jX3VyZ2VudF9sYXRlbmN5X3N1cHBvcnRlZF9pbl9oaWdoX3NjbGtf YW5kX3ljbGs7CiBzdHJ1Y3QgYndfZml4ZWQgbmJwX3N0YXRlX2RyYW1fc3BlZWRfY2hhbmdlX21h cmdpbjsKIHN0cnVjdCBid19maXhlZCBkaXNwbGF5X3JlYWRzX3RpbWVfZm9yX2RhdGFfdHJhbnNm ZXJfYW5kX3VyZ2VudF9sYXRlbmN5Owogc3RydWN0IGJ3X2ZpeGVkIGRyYW1fc3BlZWRfY2hhbmdl X21hcmdpbjsKIHN0cnVjdCBid19maXhlZCBtaW5fdmJsYW5rX2RyYW1fc3BlZWRfY2hhbmdlX21h cmdpbjsKIHN0cnVjdCBid19maXhlZCBtaW5fc3R1dHRlcl9yZWZyZXNoX2R1cmF0aW9uOwogdWlu dDMyX3QgdG90YWxfc3R1dHRlcl9kbWlmX2J1ZmZlcl9zaXplOwogdWludDMyX3QgdG90YWxfYnl0 ZXNfcmVxdWVzdGVkOwogdWludDMyX3QgbWluX3N0dXR0ZXJfZG1pZl9idWZmZXJfc2l6ZTsKIHVp bnQzMl90IG51bV9zdHV0dGVyX2J1cnN0czsKIHN0cnVjdCBid19maXhlZCB2X2JsYW5rX25icF9z dGF0ZV9kcmFtX3NwZWVkX2NoYW5nZV9sYXRlbmN5X3N1cHBvcnRlZDsKIHN0cnVjdCBid19maXhl ZCBuYnBfc3RhdGVfZHJhbV9zcGVlZF9jaGFuZ2VfbGF0ZW5jeV9zdXBwb3J0ZWQ7CiBib29sIGZi Y19lblsxMl07CiBib29sIGxwdF9lblsxMl07CiBib29sIGRpc3BsYXlzX21hdGNoX2ZsYWdbMTJd OwogYm9vbCB1c2VfYWxwaGFbMTJdOwogYm9vbCBvcnRob2dvbmFsX3JvdGF0aW9uWzEyXTsKIGJv b2wgZW5hYmxlWzEyXTsKIGJvb2wgYWNjZXNzX29uZV9jaGFubmVsX29ubHlbMTJdOwogYm9vbCBz Y2F0dGVyX2dhdGhlcl9lbmFibGVfZm9yX3BpcGVbMTJdOwogYm9vbCBpbnRlcmxhY2VfbW9kZVsx Ml07CiBib29sIGRpc3BsYXlfcHN0YXRlX2NoYW5nZV9lbmFibGVbMTJdOwogYm9vbCBsaW5lX2J1 ZmZlcl9wcmVmZXRjaFsxMl07CiB1aW50MzJfdCBieXRlc19wZXJfcGl4ZWxbMTJdOwogdWludDMy X3QgbWF4X2NodW5rc19ub25fZmJjX21vZGVbMTJdOwogdWludDMyX3QgbGJfYnBjWzEyXTsKIHVp bnQzMl90IG91dHB1dF9icHBoZG1pWzEyXTsKIHVpbnQzMl90IG91dHB1dF9icHBkcDRfbGFuZV9o YnJbMTJdOwogdWludDMyX3Qgb3V0cHV0X2JwcGRwNF9sYW5lX2hicjJbMTJdOwogdWludDMyX3Qg b3V0cHV0X2JwcGRwNF9sYW5lX2hicjNbMTJdOwogZW51bSBid19kZWZpbmVzIHN0ZXJlb19tb2Rl WzEyXTsKIHN0cnVjdCBid19maXhlZCBkbWlmX2J1ZmZlcl90cmFuc2Zlcl90aW1lWzEyXTsKIHN0 cnVjdCBid19maXhlZCBkaXNwbGF5c193aXRoX3NhbWVfbW9kZVsxMl07CiBzdHJ1Y3QgYndfZml4 ZWQgc3R1dHRlcl9kbWlmX2J1ZmZlcl9zaXplWzEyXTsKIHN0cnVjdCBid19maXhlZCBzdHV0dGVy X3JlZnJlc2hfZHVyYXRpb25bMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfZXhpdF93YXRl cm1hcmtbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfZW50cnlfd2F0ZXJtYXJrWzEyXTsK IHN0cnVjdCBid19maXhlZCBoX3RvdGFsWzEyXTsKIHN0cnVjdCBid19maXhlZCB2X3RvdGFsWzEy XTsKIHN0cnVjdCBid19maXhlZCBwaXhlbF9yYXRlWzEyXTsKIHN0cnVjdCBid19maXhlZCBzcmNf d2lkdGhbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHBpdGNoX2luX3BpeGVsc1sxMl07CiBzdHJ1Y3Qg YndfZml4ZWQgcGl0Y2hfaW5fcGl4ZWxzX2FmdGVyX3N1cmZhY2VfdHlwZVsxMl07CiBzdHJ1Y3Qg YndfZml4ZWQgc3JjX2hlaWdodFsxMl07CiBzdHJ1Y3QgYndfZml4ZWQgc2NhbGVfcmF0aW9bMTJd Owogc3RydWN0IGJ3X2ZpeGVkIGhfdGFwc1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgdl90YXBzWzEy XTsKIHN0cnVjdCBid19maXhlZCBoX3NjYWxlX3JhdGlvWzEyXTsKIHN0cnVjdCBid19maXhlZCB2 X3NjYWxlX3JhdGlvWzEyXTsKIHN0cnVjdCBid19maXhlZCByb3RhdGlvbl9hbmdsZVsxMl07CiBz dHJ1Y3QgYndfZml4ZWQgY29tcHJlc3Npb25fcmF0ZVsxMl07CiBzdHJ1Y3QgYndfZml4ZWQgaHNy WzEyXTsKIHN0cnVjdCBid19maXhlZCB2c3JbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHNvdXJjZV93 aWR0aF9yb3VuZGVkX3VwX3RvX2NodW5rc1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgc291cmNlX3dp ZHRoX3BpeGVsc1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgc291cmNlX2hlaWdodF9yb3VuZGVkX3Vw X3RvX2NodW5rc1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgZGlzcGxheV9iYW5kd2lkdGhbMTJdOwog c3RydWN0IGJ3X2ZpeGVkIHJlcXVlc3RfYmFuZHdpZHRoWzEyXTsKIHN0cnVjdCBid19maXhlZCBi eXRlc19wZXJfcmVxdWVzdFsxMl07CiBzdHJ1Y3QgYndfZml4ZWQgdXNlZnVsX2J5dGVzX3Blcl9y ZXF1ZXN0WzEyXTsKIHN0cnVjdCBid19maXhlZCBsaW5lc19pbnRlcmxlYXZlZF9pbl9tZW1fYWNj ZXNzWzEyXTsKIHN0cnVjdCBid19maXhlZCBsYXRlbmN5X2hpZGluZ19saW5lc1sxMl07CiBzdHJ1 Y3QgYndfZml4ZWQgbGJfcGFydGl0aW9uc1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgbGJfcGFydGl0 aW9uc19tYXhbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIGRpc3BjbGtfcmVxdWlyZWRfd2l0aF9yYW1w aW5nWzEyXTsKIHN0cnVjdCBid19maXhlZCBkaXNwY2xrX3JlcXVpcmVkX3dpdGhvdXRfcmFtcGlu Z1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgZGF0YV9idWZmZXJfc2l6ZVsxMl07CiBzdHJ1Y3QgYndf Zml4ZWQgb3V0c3RhbmRpbmdfY2h1bmtfcmVxdWVzdF9saW1pdFsxMl07CiBzdHJ1Y3QgYndfZml4 ZWQgdXJnZW50X3dhdGVybWFya1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgbmJwX3N0YXRlX2NoYW5n ZV93YXRlcm1hcmtbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHZfZmlsdGVyX2luaXRbMTJdOwogc3Ry dWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfY3ljbGVfZHVyYXRpb25bMTJdOwogc3RydWN0IGJ3X2ZpeGVk IGF2ZXJhZ2VfYmFuZHdpZHRoWzEyXTsKIHN0cnVjdCBid19maXhlZCBhdmVyYWdlX2JhbmR3aWR0 aF9ub19jb21wcmVzc2lvblsxMl07CiBzdHJ1Y3QgYndfZml4ZWQgc2NhdHRlcl9nYXRoZXJfcHRl X3JlcXVlc3RfbGltaXRbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIGxiX3NpemVfcGVyX2NvbXBvbmVu dFsxMl07CiBzdHJ1Y3QgYndfZml4ZWQgbWVtb3J5X2NodW5rX3NpemVfaW5fYnl0ZXNbMTJdOwog c3RydWN0IGJ3X2ZpeGVkIHBpcGVfY2h1bmtfc2l6ZV9pbl9ieXRlc1sxMl07CiBzdHJ1Y3QgYndf Zml4ZWQgbnVtYmVyX29mX3RyaXBzX3RvX21lbW9yeV9mb3JfZ2V0dGluZ19hcHRlX3Jvd1sxMl07 CiBzdHJ1Y3QgYndfZml4ZWQgYWRqdXN0ZWRfZGF0YV9idWZmZXJfc2l6ZVsxMl07CiBzdHJ1Y3Qg YndfZml4ZWQgYWRqdXN0ZWRfZGF0YV9idWZmZXJfc2l6ZV9pbl9tZW1vcnlbMTJdOwogc3RydWN0 IGJ3X2ZpeGVkIHBpeGVsc19wZXJfZGF0YV9maWZvX2VudHJ5WzEyXTsKIHN0cnVjdCBid19maXhl ZCBzY2F0dGVyX2dhdGhlcl9wdGVfcmVxdWVzdHNfaW5fcm93WzEyXTsKIHN0cnVjdCBid19maXhl ZCBwdGVfcmVxdWVzdF9wZXJfY2h1bmtbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHNjYXR0ZXJfZ2F0 aGVyX3BhZ2Vfd2lkdGhbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHNjYXR0ZXJfZ2F0aGVyX3BhZ2Vf aGVpZ2h0WzEyXTsKIHN0cnVjdCBid19maXhlZCBsYl9saW5lc19pbl9wZXJfbGluZV9vdXRfaW5f YmVnaW5uaW5nX29mX2ZyYW1lWzEyXTsKIHN0cnVjdCBid19maXhlZCBsYl9saW5lc19pbl9wZXJf bGluZV9vdXRfaW5fbWlkZGxlX29mX2ZyYW1lWzEyXTsKIHN0cnVjdCBid19maXhlZCBjdXJzb3Jf d2lkdGhfcGl4ZWxzWzEyXTsKIHN0cnVjdCBid19maXhlZCBtaW5pbXVtX2xhdGVuY3lfaGlkaW5n WzEyXTsKIHN0cnVjdCBid19maXhlZCBtYXhpbXVtX2xhdGVuY3lfaGlkaW5nWzEyXTsKIHN0cnVj dCBid19maXhlZCBtaW5pbXVtX2xhdGVuY3lfaGlkaW5nX3dpdGhfY3Vyc29yWzEyXTsKIHN0cnVj dCBid19maXhlZCBtYXhpbXVtX2xhdGVuY3lfaGlkaW5nX3dpdGhfY3Vyc29yWzEyXTsKIHN0cnVj dCBid19maXhlZCBzcmNfcGl4ZWxzX2Zvcl9maXJzdF9vdXRwdXRfcGl4ZWxbMTJdOwogc3RydWN0 IGJ3X2ZpeGVkIHNyY19waXhlbHNfZm9yX2xhc3Rfb3V0cHV0X3BpeGVsWzEyXTsKIHN0cnVjdCBi d19maXhlZCBzcmNfZGF0YV9mb3JfZmlyc3Rfb3V0cHV0X3BpeGVsWzEyXTsKIHN0cnVjdCBid19m aXhlZCBzcmNfZGF0YV9mb3JfbGFzdF9vdXRwdXRfcGl4ZWxbMTJdOwogc3RydWN0IGJ3X2ZpeGVk IGFjdGl2ZV90aW1lWzEyXTsKIHN0cnVjdCBid19maXhlZCBob3Jpem9udGFsX2JsYW5rX2FuZF9j aHVua19ncmFudWxhcml0eV9mYWN0b3JbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIGN1cnNvcl9sYXRl bmN5X2hpZGluZ1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgdl9ibGFua19kcmFtX3NwZWVkX2NoYW5n ZV9tYXJnaW5bMTJdOwogdWludDMyX3QgbnVtX2Rpc3BsYXlzX3dpdGhfbWFyZ2luWzNdWzhdOwog c3RydWN0IGJ3X2ZpeGVkIGRtaWZfYnVyc3RfdGltZVszXVs4XTsKIHN0cnVjdCBid19maXhlZCBt Y2lmd3JfYnVyc3RfdGltZVszXVs4XTsKIHN0cnVjdCBid19maXhlZCBsaW5lX3NvdXJjZV90cmFu c2Zlcl90aW1lWzEyXVszXVs4XTsKIHN0cnVjdCBid19maXhlZCBkcmFtX3NwZWVkX2NoYW5nZV9s aW5lX3NvdXJjZV90cmFuc2Zlcl90aW1lWzEyXVszXVs4XTsKIHN0cnVjdCBid19maXhlZCBtaW5f ZHJhbV9zcGVlZF9jaGFuZ2VfbWFyZ2luWzNdWzhdOwogc3RydWN0IGJ3X2ZpeGVkIGRpc3BjbGtf cmVxdWlyZWRfZm9yX2RyYW1fc3BlZWRfY2hhbmdlWzNdWzhdOwogc3RydWN0IGJ3X2ZpeGVkIGRp c3BjbGtfcmVxdWlyZWRfZm9yX2RyYW1fc3BlZWRfY2hhbmdlX3BpcGVbM11bOF07CiBzdHJ1Y3Qg YndfZml4ZWQgYmxhY2tvdXRfZHVyYXRpb25fbWFyZ2luWzNdWzhdOwogc3RydWN0IGJ3X2ZpeGVk IGRpc3BjbGtfcmVxdWlyZWRfZm9yX2JsYWNrb3V0X2R1cmF0aW9uWzNdWzhdOwogc3RydWN0IGJ3 X2ZpeGVkIGRpc3BjbGtfcmVxdWlyZWRfZm9yX2JsYWNrb3V0X3JlY292ZXJ5WzNdWzhdOwogc3Ry dWN0IGJ3X2ZpeGVkIGRtaWZfcmVxdWlyZWRfc2Nsa19mb3JfdXJnZW50X2xhdGVuY3lbNl07Cn07 CgoKCgp2b2lkIGJ3X2NhbGNzX2luaXQoCiBzdHJ1Y3QgYndfY2FsY3NfZGNlaXAgKmJ3X2RjZWlw LAogc3RydWN0IGJ3X2NhbGNzX3ZiaW9zICpid192YmlvcywKIHN0cnVjdCBod19hc2ljX2lkIGFz aWNfaWQpOwoKCgoKCgoKYm9vbCBid19jYWxjcygKIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiBj b25zdCBzdHJ1Y3QgYndfY2FsY3NfZGNlaXAgKmRjZWlwLAogY29uc3Qgc3RydWN0IGJ3X2NhbGNz X3ZiaW9zICp2YmlvcywKIGNvbnN0IHN0cnVjdCBwaXBlX2N0eCAqcGlwZSwKIGludCBwaXBlX2Nv dW50LAogc3RydWN0IGRjZV9id19vdXRwdXQgKmNhbGNzX291dHB1dCk7CiMgMzEgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCiMg MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9kY25fY2Fs Y3MuaCIgMQojIDM0ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMv aW5jL2Rjbl9jYWxjcy5oIgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvLi4vZG1sL2Rpc3BsYXlfbW9kZV9saWIuaCIgMQojIDM1ICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2Rjbl9jYWxjcy5oIiAyCgoKc3Ry dWN0IGRjOwpzdHJ1Y3QgZGNfc3RhdGU7CiMgNTEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9pbmMvZGNuX2NhbGNzLmgiCmVudW0gZGNuX2J3X2RlZnMgewogZGNu X2J3X3ZfbWluMHA2NSwKIGRjbl9id192X21pZDBwNzIsCiBkY25fYndfdl9ub20wcDgsCiBkY25f Yndfdl9tYXgwcDksCiBkY25fYndfdl9tYXgwcDkxLAogZGNuX2J3X25vX3N1cHBvcnQgPSA1LAog ZGNuX2J3X3llcywKIGRjbl9id19ob3IsCiBkY25fYndfdmVydCwKIGRjbl9id19vdmVycmlkZSwK IGRjbl9id19yZ2Jfc3ViXzY0LAogZGNuX2J3X3JnYl9zdWJfMzIsCiBkY25fYndfcmdiX3N1Yl8x NiwKIGRjbl9id19ubywKIGRjbl9id19zd19saW5lYXIsCiBkY25fYndfc3dfNF9rYl9kLAogZGNu X2J3X3N3XzRfa2JfZF94LAogZGNuX2J3X3N3XzY0X2tiX2QsCiBkY25fYndfc3dfNjRfa2JfZF90 LAogZGNuX2J3X3N3XzY0X2tiX2RfeCwKIGRjbl9id19zd192YXJfZCwKIGRjbl9id19zd192YXJf ZF94LAogZGNuX2J3X3l1djQyMF9zdWJfOCwKIGRjbl9id19zd180X2tiX3MsCiBkY25fYndfc3df NF9rYl9zX3gsCiBkY25fYndfc3dfNjRfa2JfcywKIGRjbl9id19zd182NF9rYl9zX3QsCiBkY25f Yndfc3dfNjRfa2Jfc194LAogZGNuX2J3X3dyaXRlYmFjaywKIGRjbl9id180NDQsCiBkY25fYndf ZHAsCiBkY25fYndfNDIwLAogZGNuX2J3X2hkbWksCiBkY25fYndfc3dfdmFyX3MsCiBkY25fYndf c3dfdmFyX3NfeCwKIGRjbl9id195dXY0MjBfc3ViXzEwLAogZGNuX2J3X3N1cHBvcnRlZF9pbl92 X2FjdGl2ZSwKIGRjbl9id19zdXBwb3J0ZWRfaW5fdl9ibGFuaywKIGRjbl9id19ub3Rfc3VwcG9y dGVkLAogZGNuX2J3X25hLAogZGNuX2J3X2VuY29kZXJfOGJwYywKIGRjbl9id19lbmNvZGVyXzEw YnBjLAogZGNuX2J3X2VuY29kZXJfMTJicGMsCiBkY25fYndfZW5jb2Rlcl8xNmJwYywKfTsKCgoK CgpzdHJ1Y3QgZGNuX2J3X2ludGVybmFsX3ZhcnMgewogZmxvYXQgdm9sdGFnZVs1ICsgMV07CiBm bG9hdCBtYXhfZGlzcGNsa1s1ICsgMV07CiBmbG9hdCBtYXhfZHBwY2xrWzUgKyAxXTsKIGZsb2F0 IGRjZmNsa19wZXJfc3RhdGVbNSArIDFdOwogZmxvYXQgcGh5Y2xrX3Blcl9zdGF0ZVs1ICsgMV07 CiBmbG9hdCBmYWJyaWNfYW5kX2RyYW1fYmFuZHdpZHRoX3Blcl9zdGF0ZVs1ICsgMV07CiBmbG9h dCBzcl9leGl0X3RpbWU7CiBmbG9hdCBzcl9lbnRlcl9wbHVzX2V4aXRfdGltZTsKIGZsb2F0IGRy YW1fY2xvY2tfY2hhbmdlX2xhdGVuY3k7CiBmbG9hdCB1cmdlbnRfbGF0ZW5jeTsKIGZsb2F0IHdy aXRlX2JhY2tfbGF0ZW5jeTsKIGZsb2F0IHBlcmNlbnRfb2ZfaWRlYWxfZHJhbWJ3X3JlY2VpdmVk X2FmdGVyX3VyZ19sYXRlbmN5OwogZmxvYXQgZGNmY2xrdl9tYXgwcDk7CiBmbG9hdCBkY2ZjbGt2 X25vbTBwODsKIGZsb2F0IGRjZmNsa3ZfbWlkMHA3MjsKIGZsb2F0IGRjZmNsa3ZfbWluMHA2NTsK IGZsb2F0IG1heF9kaXNwY2xrX3ZtYXgwcDk7CiBmbG9hdCBtYXhfZHBwY2xrX3ZtYXgwcDk7CiBm bG9hdCBtYXhfZGlzcGNsa192bm9tMHA4OwogZmxvYXQgbWF4X2RwcGNsa192bm9tMHA4OwogZmxv YXQgbWF4X2Rpc3BjbGtfdm1pZDBwNzI7CiBmbG9hdCBtYXhfZHBwY2xrX3ZtaWQwcDcyOwogZmxv YXQgbWF4X2Rpc3BjbGtfdm1pbjBwNjU7CiBmbG9hdCBtYXhfZHBwY2xrX3ZtaW4wcDY1OwogZmxv YXQgc29jY2xrOwogZmxvYXQgZmFicmljX2FuZF9kcmFtX2JhbmR3aWR0aF92bWF4MHA5OwogZmxv YXQgZmFicmljX2FuZF9kcmFtX2JhbmR3aWR0aF92bm9tMHA4OwogZmxvYXQgZmFicmljX2FuZF9k cmFtX2JhbmR3aWR0aF92bWlkMHA3MjsKIGZsb2F0IGZhYnJpY19hbmRfZHJhbV9iYW5kd2lkdGhf dm1pbjBwNjU7CiBmbG9hdCByb3VuZF90cmlwX3BpbmdfbGF0ZW5jeV9jeWNsZXM7CiBmbG9hdCB1 cmdlbnRfb3V0X29mX29yZGVyX3JldHVybl9wZXJfY2hhbm5lbDsKIGZsb2F0IG51bWJlcl9vZl9j aGFubmVsczsKIGZsb2F0IHZtbV9wYWdlX3NpemU7CiBmbG9hdCByZXR1cm5fYnVzX3dpZHRoOwog ZmxvYXQgcm9iX2J1ZmZlcl9zaXplX2luX2tieXRlOwogZmxvYXQgZGV0X2J1ZmZlcl9zaXplX2lu X2tieXRlOwogZmxvYXQgZHBwX291dHB1dF9idWZmZXJfcGl4ZWxzOwogZmxvYXQgb3BwX291dHB1 dF9idWZmZXJfbGluZXM7CiBmbG9hdCBwaXhlbF9jaHVua19zaXplX2luX2tieXRlOwogZmxvYXQg cHRlX2NodW5rX3NpemU7CiBmbG9hdCBtZXRhX2NodW5rX3NpemU7CiBmbG9hdCB3cml0ZWJhY2tf Y2h1bmtfc2l6ZTsKIGVudW0gZGNuX2J3X2RlZnMgb2RtX2NhcGFiaWxpdHk7CiBlbnVtIGRjbl9i d19kZWZzIGRzY19jYXBhYmlsaXR5OwogZmxvYXQgbGluZV9idWZmZXJfc2l6ZTsKIGVudW0gZGNu X2J3X2RlZnMgaXNfbGluZV9idWZmZXJfYnBwX2ZpeGVkOwogZmxvYXQgbGluZV9idWZmZXJfZml4 ZWRfYnBwOwogZmxvYXQgbWF4X2xpbmVfYnVmZmVyX2xpbmVzOwogZmxvYXQgd3JpdGViYWNrX2x1 bWFfYnVmZmVyX3NpemU7CiBmbG9hdCB3cml0ZWJhY2tfY2hyb21hX2J1ZmZlcl9zaXplOwogZmxv YXQgbWF4X251bV9kcHA7CiBmbG9hdCBtYXhfbnVtX3dyaXRlYmFjazsKIGZsb2F0IG1heF9kY2h1 Yl90b3BzY2xfdGhyb3VnaHB1dDsKIGZsb2F0IG1heF9wc2NsX3RvbGJfdGhyb3VnaHB1dDsKIGZs b2F0IG1heF9sYl90b3ZzY2xfdGhyb3VnaHB1dDsKIGZsb2F0IG1heF92c2NsX3RvaHNjbF90aHJv dWdocHV0OwogZmxvYXQgbWF4X2hzY2xfcmF0aW87CiBmbG9hdCBtYXhfdnNjbF9yYXRpbzsKIGZs b2F0IG1heF9oc2NsX3RhcHM7CiBmbG9hdCBtYXhfdnNjbF90YXBzOwogZmxvYXQgdW5kZXJfc2Nh bl9mYWN0b3I7CiBmbG9hdCBwaHljbGt2X21heDBwOTsKIGZsb2F0IHBoeWNsa3Zfbm9tMHA4Owog ZmxvYXQgcGh5Y2xrdl9taWQwcDcyOwogZmxvYXQgcGh5Y2xrdl9taW4wcDY1OwogZmxvYXQgcHRl X2J1ZmZlcl9zaXplX2luX3JlcXVlc3RzOwogZmxvYXQgZGlzcGNsa19yYW1waW5nX21hcmdpbjsK IGZsb2F0IGRvd25zcHJlYWRpbmc7CiBmbG9hdCBtYXhfaW50ZXJfZGNuX3RpbGVfcmVwZWF0ZXJz OwogZW51bSBkY25fYndfZGVmcyBjYW5fdnN0YXJ0dXBfbGluZXNfZXhjZWVkX3ZzeW5jX3BsdXNf YmFja19wb3JjaF9saW5lc19taW51c19vbmU7CiBlbnVtIGRjbl9id19kZWZzIGJ1Z19mb3JjaW5n X2x1bWFfYW5kX2Nocm9tYV9yZXF1ZXN0X3RvX3NhbWVfc2l6ZV9maXhlZDsKIGludCBtb2RlOwog ZmxvYXQgdmlld3BvcnRfd2lkdGhbNSArIDFdOwogZmxvYXQgaHRvdGFsWzUgKyAxXTsKIGZsb2F0 IHZ0b3RhbFs1ICsgMV07CiBmbG9hdCB2X3N5bmNfcGx1c19iYWNrX3BvcmNoWzUgKyAxXTsKIGZs b2F0IHZhY3RpdmVbNSArIDFdOwogZmxvYXQgcGl4ZWxfY2xvY2tbNSArIDFdOwogZmxvYXQgdmll d3BvcnRfaGVpZ2h0WzUgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgZGNjX2VuYWJsZVs1ICsgMV07 CiBmbG9hdCBkY2NfcmF0ZVs1ICsgMV07CiBlbnVtIGRjbl9id19kZWZzIHNvdXJjZV9zY2FuWzUg KyAxXTsKIGZsb2F0IGxiX2JpdF9wZXJfcGl4ZWxbNSArIDFdOwogZW51bSBkY25fYndfZGVmcyBz b3VyY2VfcGl4ZWxfZm9ybWF0WzUgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgc291cmNlX3N1cmZh Y2VfbW9kZVs1ICsgMV07CiBlbnVtIGRjbl9id19kZWZzIG91dHB1dF9mb3JtYXRbNSArIDFdOwog ZW51bSBkY25fYndfZGVmcyBvdXRwdXRfZGVlcF9jb2xvcls1ICsgMV07CiBlbnVtIGRjbl9id19k ZWZzIG91dHB1dFs1ICsgMV07CiBmbG9hdCBzY2FsZXJfcmVjX291dF93aWR0aFs1ICsgMV07CiBm bG9hdCBzY2FsZXJfcmVjb3V0X2hlaWdodFs1ICsgMV07CiBmbG9hdCB1bmRlcnNjYW5fb3V0cHV0 WzUgKyAxXTsKIGZsb2F0IGludGVybGFjZV9vdXRwdXRbNSArIDFdOwogZmxvYXQgb3ZlcnJpZGVf aHRhX3BzWzUgKyAxXTsKIGZsb2F0IG92ZXJyaWRlX3Z0YV9wc1s1ICsgMV07CiBmbG9hdCBvdmVy cmlkZV9odGFfcHNjaHJvbWFbNSArIDFdOwogZmxvYXQgb3ZlcnJpZGVfdnRhX3BzY2hyb21hWzUg KyAxXTsKIGZsb2F0IHVyZ2VudF9sYXRlbmN5X3N1cHBvcnRfdXNbNSArIDFdOwogZmxvYXQgaF9y YXRpb1s1ICsgMV07CiBmbG9hdCB2X3JhdGlvWzUgKyAxXTsKIGZsb2F0IGh0YXBzWzUgKyAxXTsK IGZsb2F0IHZ0YXBzWzUgKyAxXTsKIGZsb2F0IGh0YV9wc2Nocm9tYVs1ICsgMV07CiBmbG9hdCB2 dGFfcHNjaHJvbWFbNSArIDFdOwogZW51bSBkY25fYndfZGVmcyBwdGVfZW5hYmxlOwogZW51bSBk Y25fYndfZGVmcyBzeW5jaHJvbml6ZWRfdmJsYW5rOwogZW51bSBkY25fYndfZGVmcyB0YV9wc2Nh bGN1bGF0aW9uOwogaW50IHZvbHRhZ2Vfb3ZlcnJpZGVfbGV2ZWw7CiBpbnQgbnVtYmVyX29mX2Fj dGl2ZV9wbGFuZXM7CiBpbnQgdm9sdGFnZV9sZXZlbDsKIGVudW0gZGNuX2J3X2RlZnMgaW1tZWRp YXRlX2ZsaXBfc3VwcG9ydGVkOwogZmxvYXQgZGNmY2xrOwogZmxvYXQgbWF4X3BoeWNsazsKIGZs b2F0IGZhYnJpY19hbmRfZHJhbV9iYW5kd2lkdGg7CiBmbG9hdCBkcHBfcGVyX3BsYW5lX3Blcl9y YXRpb1sxICsgMV1bNSArIDFdOwogZW51bSBkY25fYndfZGVmcyBkaXNwY2xrX2RwcGNsa19zdXBw b3J0X3Blcl9yYXRpb1sxICsgMV07CiBmbG9hdCByZXF1aXJlZF9kaXNwY2xrX3Blcl9yYXRpb1sx ICsgMV07CiBlbnVtIGRjbl9id19kZWZzIGVycm9yX21lc3NhZ2VbMSArIDFdOwogaW50IGRpc3Bj bGtfZHBwY2xrX3JhdGlvOwogZmxvYXQgZHBwX3Blcl9wbGFuZVs1ICsgMV07CiBmbG9hdCBkZXRf YnVmZmVyX3NpemVfeVs1ICsgMV07CiBmbG9hdCBkZXRfYnVmZmVyX3NpemVfY1s1ICsgMV07CiBm bG9hdCBzd2F0aF9oZWlnaHRfeVs1ICsgMV07CiBmbG9hdCBzd2F0aF9oZWlnaHRfY1s1ICsgMV07 CiBlbnVtIGRjbl9id19kZWZzIGZpbmFsX2Vycm9yX21lc3NhZ2U7CiBmbG9hdCBmcmVxdWVuY3k7 CiBmbG9hdCBoZWFkZXJfbGluZTsKIGZsb2F0IGhlYWRlcjsKIGVudW0gZGNuX2J3X2RlZnMgdm9s dGFnZV9vdmVycmlkZTsKIGVudW0gZGNuX2J3X2RlZnMgYWxsb3dfZGlmZmVyZW50X2hyYXRpb192 cmF0aW87CiBmbG9hdCBhY2NlcHRhYmxlX3F1YWxpdHlfaHRhX3BzOwogZmxvYXQgYWNjZXB0YWJs ZV9xdWFsaXR5X3Z0YV9wczsKIGZsb2F0IG5vX29mX2RwcFs1ICsgMV1bMSArIDFdWzUgKyAxXTsK IGZsb2F0IHN3YXRoX3dpZHRoX3lwZXJfc3RhdGVbNSArIDFdWzEgKyAxXVs1ICsgMV07CiBmbG9h dCBzd2F0aF9oZWlnaHRfeXBlcl9zdGF0ZVs1ICsgMV1bMSArIDFdWzUgKyAxXTsKIGZsb2F0IHN3 YXRoX2hlaWdodF9jcGVyX3N0YXRlWzUgKyAxXVsxICsgMV1bNSArIDFdOwogZmxvYXQgdXJnZW50 X2xhdGVuY3lfc3VwcG9ydF91c19wZXJfc3RhdGVbNSArIDFdWzEgKyAxXVs1ICsgMV07CiBmbG9h dCB2X3JhdGlvX3ByZV95d2l0aF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdWzUgKyAxXTsK IGZsb2F0IHZfcmF0aW9fcHJlX2N3aXRoX2ltbWVkaWF0ZV9mbGlwWzUgKyAxXVsxICsgMV1bNSAr IDFdOwogZmxvYXQgcmVxdWlyZWRfcHJlZmV0Y2hfcGl4ZWxfZGF0YV9id193aXRoX2ltbWVkaWF0 ZV9mbGlwWzUgKyAxXVsxICsgMV1bNSArIDFdOwogZmxvYXQgdl9yYXRpb19wcmVfeXdpdGhvdXRf aW1tZWRpYXRlX2ZsaXBbNSArIDFdWzEgKyAxXVs1ICsgMV07CiBmbG9hdCB2X3JhdGlvX3ByZV9j d2l0aG91dF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdWzUgKyAxXTsKIGZsb2F0IHJlcXVp cmVkX3ByZWZldGNoX3BpeGVsX2RhdGFfYndfd2l0aG91dF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1b MSArIDFdWzUgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgcHJlZmV0Y2hfc3VwcG9ydGVkX3dpdGhf aW1tZWRpYXRlX2ZsaXBbNSArIDFdWzEgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgcHJlZmV0Y2hf c3VwcG9ydGVkX3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXBbNSArIDFdWzEgKyAxXTsKIGVudW0gZGNu X2J3X2RlZnMgdl9yYXRpb19pbl9wcmVmZXRjaF9zdXBwb3J0ZWRfd2l0aF9pbW1lZGlhdGVfZmxp cFs1ICsgMV1bMSArIDFdOwogZW51bSBkY25fYndfZGVmcyB2X3JhdGlvX2luX3ByZWZldGNoX3N1 cHBvcnRlZF93aXRob3V0X2ltbWVkaWF0ZV9mbGlwWzUgKyAxXVsxICsgMV07CiBmbG9hdCByZXF1 aXJlZF9kaXNwY2xrWzUgKyAxXVsxICsgMV07CiBlbnVtIGRjbl9id19kZWZzIGRpc3BjbGtfZHBw Y2xrX3N1cHBvcnRbNSArIDFdWzEgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgdG90YWxfYXZhaWxh YmxlX3BpcGVzX3N1cHBvcnRbNSArIDFdWzEgKyAxXTsKIGZsb2F0IHRvdGFsX251bWJlcl9vZl9h Y3RpdmVfZHBwWzUgKyAxXVsxICsgMV07CiBmbG9hdCB0b3RhbF9udW1iZXJfb2ZfZGNjX2FjdGl2 ZV9kcHBbNSArIDFdWzEgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgdXJnZW50X2xhdGVuY3lfc3Vw cG9ydFs1ICsgMV1bMSArIDFdOwogZW51bSBkY25fYndfZGVmcyBtb2RlX3N1cHBvcnRfd2l0aF9p bW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdOwogZW51bSBkY25fYndfZGVmcyBtb2RlX3N1cHBv cnRfd2l0aG91dF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdOwogZmxvYXQgcmV0dXJuX2J3 X3Blcl9zdGF0ZVs1ICsgMV07CiBlbnVtIGRjbl9id19kZWZzIGRpb19zdXBwb3J0WzUgKyAxXTsK IGZsb2F0IHVyZ2VudF9yb3VuZF90cmlwX2FuZF9vdXRfb2Zfb3JkZXJfbGF0ZW5jeV9wZXJfc3Rh dGVbNSArIDFdOwogZW51bSBkY25fYndfZGVmcyByb2Jfc3VwcG9ydFs1ICsgMV07CiBlbnVtIGRj bl9id19kZWZzIGJhbmR3aWR0aF9zdXBwb3J0WzUgKyAxXTsKIGZsb2F0IHByZWZldGNoX2J3WzUg KyAxXTsKIGZsb2F0IG1ldGFfcHRlX2J5dGVzX3Blcl9mcmFtZVs1ICsgMV07CiBmbG9hdCBtZXRh X3Jvd19ieXRlc1s1ICsgMV07CiBmbG9hdCBkcHRlX2J5dGVzX3Blcl9yb3dbNSArIDFdOwogZmxv YXQgcHJlZmV0Y2hfbGluZXNfeVs1ICsgMV07CiBmbG9hdCBwcmVmZXRjaF9saW5lc19jWzUgKyAx XTsKIGZsb2F0IG1heF9udW1fc3dfeVs1ICsgMV07CiBmbG9hdCBtYXhfbnVtX3N3X2NbNSArIDFd OwogZmxvYXQgbGluZV90aW1lc19mb3JfcHJlZmV0Y2hbNSArIDFdOwogZmxvYXQgbGluZXNfZm9y X21ldGFfcHRlX3dpdGhfaW1tZWRpYXRlX2ZsaXBbNSArIDFdOwogZmxvYXQgbGluZXNfZm9yX21l dGFfcHRlX3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXBbNSArIDFdOwogZmxvYXQgbGluZXNfZm9yX21l dGFfYW5kX2RwdGVfcm93X3dpdGhfaW1tZWRpYXRlX2ZsaXBbNSArIDFdOwogZmxvYXQgbGluZXNf Zm9yX21ldGFfYW5kX2RwdGVfcm93X3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXBbNSArIDFdOwogZmxv YXQgbWluX2RwcGNsa191c2luZ19zaW5nbGVfZHBwWzUgKyAxXTsKIGZsb2F0IHN3YXRoX3dpZHRo X3lzaW5nbGVfZHBwWzUgKyAxXTsKIGZsb2F0IGJ5dGVfcGVyX3BpeGVsX2luX2RldHlbNSArIDFd OwogZmxvYXQgYnl0ZV9wZXJfcGl4ZWxfaW5fZGV0Y1s1ICsgMV07CiBmbG9hdCBudW1iZXJfb2Zf ZHBwX3JlcXVpcmVkX2Zvcl9kZXRfYW5kX2xiX3NpemVbNSArIDFdOwogZmxvYXQgcmVxdWlyZWRf cGh5Y2xrWzUgKyAxXTsKIGZsb2F0IHJlYWQyNTZfYmxvY2tfaGVpZ2h0X3lbNSArIDFdOwogZmxv YXQgcmVhZDI1Nl9ibG9ja193aWR0aF95WzUgKyAxXTsKIGZsb2F0IHJlYWQyNTZfYmxvY2tfaGVp Z2h0X2NbNSArIDFdOwogZmxvYXQgcmVhZDI1Nl9ibG9ja193aWR0aF9jWzUgKyAxXTsKIGZsb2F0 IG1heF9zd2F0aF9oZWlnaHRfeVs1ICsgMV07CiBmbG9hdCBtYXhfc3dhdGhfaGVpZ2h0X2NbNSAr IDFdOwogZmxvYXQgbWluX3N3YXRoX2hlaWdodF95WzUgKyAxXTsKIGZsb2F0IG1pbl9zd2F0aF9o ZWlnaHRfY1s1ICsgMV07CiBmbG9hdCByZWFkX2JhbmR3aWR0aFs1ICsgMV07CiBmbG9hdCB3cml0 ZV9iYW5kd2lkdGhbNSArIDFdOwogZmxvYXQgcHNjbF9mYWN0b3JbNSArIDFdOwogZmxvYXQgcHNj bF9mYWN0b3JfY2hyb21hWzUgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgc2NhbGVfcmF0aW9fc3Vw cG9ydDsKIGVudW0gZGNuX2J3X2RlZnMgc291cmNlX2Zvcm1hdF9waXhlbF9hbmRfc2Nhbl9zdXBw b3J0OwogZmxvYXQgdG90YWxfcmVhZF9iYW5kd2lkdGhfY29uc3VtZWRfZ2J5dGVfcGVyX3NlY29u ZDsKIGZsb2F0IHRvdGFsX3dyaXRlX2JhbmR3aWR0aF9jb25zdW1lZF9nYnl0ZV9wZXJfc2Vjb25k OwogZmxvYXQgdG90YWxfYmFuZHdpZHRoX2NvbnN1bWVkX2dieXRlX3Blcl9zZWNvbmQ7CiBlbnVt IGRjbl9id19kZWZzIGRjY19lbmFibGVkX2luX2FueV9wbGFuZTsKIGZsb2F0IHJldHVybl9id190 b2Rjbl9wZXJfc3RhdGU7CiBmbG9hdCBjcml0aWNhbF9wb2ludDsKIGVudW0gZGNuX2J3X2RlZnMg d3JpdGViYWNrX2xhdGVuY3lfc3VwcG9ydDsKIGZsb2F0IHJlcXVpcmVkX291dHB1dF9idzsKIGZs b2F0IHRvdGFsX251bWJlcl9vZl9hY3RpdmVfd3JpdGViYWNrOwogZW51bSBkY25fYndfZGVmcyB0 b3RhbF9hdmFpbGFibGVfd3JpdGViYWNrX3N1cHBvcnQ7CiBmbG9hdCBtYXhpbXVtX3N3YXRoX3dp ZHRoOwogZmxvYXQgbnVtYmVyX29mX2RwcF9yZXF1aXJlZF9mb3JfZGV0X3NpemU7CiBmbG9hdCBu dW1iZXJfb2ZfZHBwX3JlcXVpcmVkX2Zvcl9sYl9zaXplOwogZmxvYXQgbWluX2Rpc3BjbGtfdXNp bmdfc2luZ2xlX2RwcDsKIGZsb2F0IG1pbl9kaXNwY2xrX3VzaW5nX2R1YWxfZHBwOwogZW51bSBk Y25fYndfZGVmcyB2aWV3cG9ydF9zaXplX3N1cHBvcnQ7CiBmbG9hdCBzd2F0aF93aWR0aF9ncmFu dWxhcml0eV95OwogZmxvYXQgcm91bmRlZF91cF9tYXhfc3dhdGhfc2l6ZV9ieXRlc195OwogZmxv YXQgc3dhdGhfd2lkdGhfZ3JhbnVsYXJpdHlfYzsKIGZsb2F0IHJvdW5kZWRfdXBfbWF4X3N3YXRo X3NpemVfYnl0ZXNfYzsKIGZsb2F0IGxpbmVzX2luX2RldF9sdW1hOwogZmxvYXQgbGluZXNfaW5f ZGV0X2Nocm9tYTsKIGZsb2F0IGVmZmVjdGl2ZV9sYl9sYXRlbmN5X2hpZGluZ19zb3VyY2VfbGlu ZXNfbHVtYTsKIGZsb2F0IGVmZmVjdGl2ZV9sYl9sYXRlbmN5X2hpZGluZ19zb3VyY2VfbGluZXNf Y2hyb21hOwogZmxvYXQgZWZmZWN0aXZlX2RldGxiX2xpbmVzX2x1bWE7CiBmbG9hdCBlZmZlY3Rp dmVfZGV0bGJfbGluZXNfY2hyb21hOwogZmxvYXQgcHJvamVjdGVkX2RjZmNsa19kZWVwX3NsZWVw OwogZmxvYXQgbWV0YV9yZXFfaGVpZ2h0X3k7CiBmbG9hdCBtZXRhX3JlcV93aWR0aF95OwogZmxv YXQgbWV0YV9zdXJmYWNlX3dpZHRoX3k7CiBmbG9hdCBtZXRhX3N1cmZhY2VfaGVpZ2h0X3k7CiBm bG9hdCBtZXRhX3B0ZV9ieXRlc19wZXJfZnJhbWVfeTsKIGZsb2F0IG1ldGFfcm93X2J5dGVzX3k7 CiBmbG9hdCBtYWNyb190aWxlX2Jsb2NrX3NpemVfYnl0ZXNfeTsKIGZsb2F0IG1hY3JvX3RpbGVf YmxvY2tfaGVpZ2h0X3k7CiBmbG9hdCBkYXRhX3B0ZV9yZXFfaGVpZ2h0X3k7CiBmbG9hdCBkYXRh X3B0ZV9yZXFfd2lkdGhfeTsKIGZsb2F0IGRwdGVfYnl0ZXNfcGVyX3Jvd195OwogZmxvYXQgbWV0 YV9yZXFfaGVpZ2h0X2M7CiBmbG9hdCBtZXRhX3JlcV93aWR0aF9jOwogZmxvYXQgbWV0YV9zdXJm YWNlX3dpZHRoX2M7CiBmbG9hdCBtZXRhX3N1cmZhY2VfaGVpZ2h0X2M7CiBmbG9hdCBtZXRhX3B0 ZV9ieXRlc19wZXJfZnJhbWVfYzsKIGZsb2F0IG1ldGFfcm93X2J5dGVzX2M7CiBmbG9hdCBtYWNy b190aWxlX2Jsb2NrX3NpemVfYnl0ZXNfYzsKIGZsb2F0IG1hY3JvX3RpbGVfYmxvY2tfaGVpZ2h0 X2M7CiBmbG9hdCBtYWNyb190aWxlX2Jsb2NrX3dpZHRoX2M7CiBmbG9hdCBkYXRhX3B0ZV9yZXFf aGVpZ2h0X2M7CiBmbG9hdCBkYXRhX3B0ZV9yZXFfd2lkdGhfYzsKIGZsb2F0IGRwdGVfYnl0ZXNf cGVyX3Jvd19jOwogZmxvYXQgdl9pbml0X3k7CiBmbG9hdCBtYXhfcGFydGlhbF9zd195OwogZmxv YXQgdl9pbml0X2M7CiBmbG9hdCBtYXhfcGFydGlhbF9zd19jOwogZmxvYXQgZHN0X3hfYWZ0ZXJf c2NhbGVyOwogZmxvYXQgZHN0X3lfYWZ0ZXJfc2NhbGVyOwogZmxvYXQgdGltZV9jYWxjOwogZmxv YXQgdl91cGRhdGVfb2Zmc2V0WzUgKyAxXVsyXTsKIGZsb2F0IHRvdGFsX3JlcGVhdGVyX2RlbGF5 OwogZmxvYXQgdl91cGRhdGVfd2lkdGhbNSArIDFdWzJdOwogZmxvYXQgdl9yZWFkeV9vZmZzZXRb NSArIDFdWzJdOwogZmxvYXQgdGltZV9zZXR1cDsKIGZsb2F0IGV4dHJhX2xhdGVuY3k7CiBmbG9h dCBtYXhpbXVtX3ZzdGFydHVwOwogZmxvYXQgYndfYXZhaWxhYmxlX2Zvcl9pbW1lZGlhdGVfZmxp cDsKIGZsb2F0IHRvdGFsX2ltbWVkaWF0ZV9mbGlwX2J5dGVzWzUgKyAxXTsKIGZsb2F0IHRpbWVf Zm9yX21ldGFfcHRlX3dpdGhfaW1tZWRpYXRlX2ZsaXA7CiBmbG9hdCB0aW1lX2Zvcl9tZXRhX3B0 ZV93aXRob3V0X2ltbWVkaWF0ZV9mbGlwOwogZmxvYXQgdGltZV9mb3JfbWV0YV9hbmRfZHB0ZV9y b3dfd2l0aF9pbW1lZGlhdGVfZmxpcDsKIGZsb2F0IHRpbWVfZm9yX21ldGFfYW5kX2RwdGVfcm93 X3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXA7CiBmbG9hdCBsaW5lX3RpbWVzX3RvX3JlcXVlc3RfcHJl ZmV0Y2hfcGl4ZWxfZGF0YV93aXRoX2ltbWVkaWF0ZV9mbGlwOwogZmxvYXQgbGluZV90aW1lc190 b19yZXF1ZXN0X3ByZWZldGNoX3BpeGVsX2RhdGFfd2l0aG91dF9pbW1lZGlhdGVfZmxpcDsKIGZs b2F0IG1heGltdW1fcmVhZF9iYW5kd2lkdGhfd2l0aF9wcmVmZXRjaF93aXRoX2ltbWVkaWF0ZV9m bGlwOwogZmxvYXQgbWF4aW11bV9yZWFkX2JhbmR3aWR0aF93aXRoX3ByZWZldGNoX3dpdGhvdXRf aW1tZWRpYXRlX2ZsaXA7CiBmbG9hdCB2b2x0YWdlX2xldmVsX3dpdGhfaW1tZWRpYXRlX2ZsaXA7 CiBmbG9hdCB2b2x0YWdlX2xldmVsX3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXA7CiBmbG9hdCB0b3Rh bF9udW1iZXJfb2ZfYWN0aXZlX2RwcF9wZXJfcmF0aW9bMSArIDFdOwogZmxvYXQgYnl0ZV9wZXJf cGl4X2RldHk7CiBmbG9hdCBieXRlX3Blcl9waXhfZGV0YzsKIGZsb2F0IHJlYWQyNTZfYnl0ZXNf YmxvY2tfaGVpZ2h0X3k7CiBmbG9hdCByZWFkMjU2X2J5dGVzX2Jsb2NrX3dpZHRoX3k7CiBmbG9h dCByZWFkMjU2X2J5dGVzX2Jsb2NrX2hlaWdodF9jOwogZmxvYXQgcmVhZDI1Nl9ieXRlc19ibG9j a193aWR0aF9jOwogZmxvYXQgbWF4aW11bV9zd2F0aF9oZWlnaHRfeTsKIGZsb2F0IG1heGltdW1f c3dhdGhfaGVpZ2h0X2M7CiBmbG9hdCBtaW5pbXVtX3N3YXRoX2hlaWdodF95OwogZmxvYXQgbWlu aW11bV9zd2F0aF9oZWlnaHRfYzsKIGZsb2F0IHN3YXRoX3dpZHRoOwogZmxvYXQgcHJlZmV0Y2hf YmFuZHdpZHRoWzUgKyAxXTsKIGZsb2F0IHZfaW5pdF9wcmVfZmlsbF95WzUgKyAxXTsKIGZsb2F0 IHZfaW5pdF9wcmVfZmlsbF9jWzUgKyAxXTsKIGZsb2F0IG1heF9udW1fc3dhdGhfeVs1ICsgMV07 CiBmbG9hdCBtYXhfbnVtX3N3YXRoX2NbNSArIDFdOwogZmxvYXQgcHJlZmlsbF95WzUgKyAxXTsK IGZsb2F0IHByZWZpbGxfY1s1ICsgMV07CiBmbG9hdCB2X3N0YXJ0dXBbNSArIDFdOwogZW51bSBk Y25fYndfZGVmcyBhbGxvd19kcmFtX2Nsb2NrX2NoYW5nZV9kdXJpbmdfdmJsYW5rWzUgKyAxXTsK IGZsb2F0IGFsbG93X2RyYW1fc2VsZl9yZWZyZXNoX2R1cmluZ192YmxhbmtbNSArIDFdOwogZmxv YXQgdl9yYXRpb19wcmVmZXRjaF95WzUgKyAxXTsKIGZsb2F0IHZfcmF0aW9fcHJlZmV0Y2hfY1s1 ICsgMV07CiBmbG9hdCBkZXN0aW5hdGlvbl9saW5lc19mb3JfcHJlZmV0Y2hbNSArIDFdOwogZmxv YXQgZGVzdGluYXRpb25fbGluZXNfdG9fcmVxdWVzdF92bV9pbnZfYmxhbmtbNSArIDFdOwogZmxv YXQgZGVzdGluYXRpb25fbGluZXNfdG9fcmVxdWVzdF9yb3dfaW5fdmJsYW5rWzUgKyAxXTsKIGZs b2F0IG1pbl90dHV2X2JsYW5rWzUgKyAxXTsKIGZsb2F0IGJ5dGVfcGVyX3BpeGVsX2RldHlbNSAr IDFdOwogZmxvYXQgYnl0ZV9wZXJfcGl4ZWxfZGV0Y1s1ICsgMV07CiBmbG9hdCBzd2F0aF93aWR0 aF95WzUgKyAxXTsKIGZsb2F0IGxpbmVzX2luX2RldHlbNSArIDFdOwogZmxvYXQgbGluZXNfaW5f ZGV0eV9yb3VuZGVkX2Rvd25fdG9fc3dhdGhbNSArIDFdOwogZmxvYXQgbGluZXNfaW5fZGV0Y1s1 ICsgMV07CiBmbG9hdCBsaW5lc19pbl9kZXRjX3JvdW5kZWRfZG93bl90b19zd2F0aFs1ICsgMV07 CiBmbG9hdCBmdWxsX2RldF9idWZmZXJpbmdfdGltZV95WzUgKyAxXTsKIGZsb2F0IGZ1bGxfZGV0 X2J1ZmZlcmluZ190aW1lX2NbNSArIDFdOwogZmxvYXQgYWN0aXZlX2RyYW1fY2xvY2tfY2hhbmdl X2xhdGVuY3lfbWFyZ2luWzUgKyAxXTsKIGZsb2F0IHZfYmxhbmtfZHJhbV9jbG9ja19jaGFuZ2Vf bGF0ZW5jeV9tYXJnaW5bNSArIDFdOwogZmxvYXQgZGNmY2xrX2RlZXBfc2xlZXBfcGVyX3BsYW5l WzUgKyAxXTsKIGZsb2F0IHJlYWRfYmFuZHdpZHRoX3BsYW5lX2x1bWFbNSArIDFdOwogZmxvYXQg cmVhZF9iYW5kd2lkdGhfcGxhbmVfY2hyb21hWzUgKyAxXTsKIGZsb2F0IGRpc3BsYXlfcGlwZV9s aW5lX2RlbGl2ZXJ5X3RpbWVfbHVtYVs1ICsgMV07CiBmbG9hdCBkaXNwbGF5X3BpcGVfbGluZV9k ZWxpdmVyeV90aW1lX2Nocm9tYVs1ICsgMV07CiBmbG9hdCBkaXNwbGF5X3BpcGVfbGluZV9kZWxp dmVyeV90aW1lX2x1bWFfcHJlZmV0Y2hbNSArIDFdOwogZmxvYXQgZGlzcGxheV9waXBlX2xpbmVf ZGVsaXZlcnlfdGltZV9jaHJvbWFfcHJlZmV0Y2hbNSArIDFdOwogZmxvYXQgcGl4ZWxfcHRlX2J5 dGVzX3Blcl9yb3dbNSArIDFdOwogZmxvYXQgbWV0YV9wdGVfYnl0ZXNfZnJhbWVbNSArIDFdOwog ZmxvYXQgbWV0YV9yb3dfYnl0ZVs1ICsgMV07CiBmbG9hdCBwcmVmZXRjaF9zb3VyY2VfbGluZXNf eVs1ICsgMV07CiBmbG9hdCBwcmVmZXRjaF9zb3VyY2VfbGluZXNfY1s1ICsgMV07CiBmbG9hdCBw c2NsX3Rocm91Z2hwdXRbNSArIDFdOwogZmxvYXQgcHNjbF90aHJvdWdocHV0X2Nocm9tYVs1ICsg MV07CiBmbG9hdCBvdXRwdXRfYnBwaGRtaVs1ICsgMV07CiBmbG9hdCBvdXRwdXRfYnBwZHA0X2xh bmVfaGJyWzUgKyAxXTsKIGZsb2F0IG91dHB1dF9icHBkcDRfbGFuZV9oYnIyWzUgKyAxXTsKIGZs b2F0IG91dHB1dF9icHBkcDRfbGFuZV9oYnIzWzUgKyAxXTsKIGZsb2F0IG1heF92c3RhcnR1cF9s aW5lc1s1ICsgMV07CiBmbG9hdCBkaXNwY2xrX3dpdGhfcmFtcGluZzsKIGZsb2F0IGRpc3BjbGtf d2l0aG91dF9yYW1waW5nOwogZmxvYXQgZHBwY2xrX3VzaW5nX3NpbmdsZV9kcHBfbHVtYTsKIGZs b2F0IGRwcGNsa191c2luZ19zaW5nbGVfZHBwOwogZmxvYXQgZHBwY2xrX3VzaW5nX3NpbmdsZV9k cHBfY2hyb21hOwogZW51bSBkY25fYndfZGVmcyBvZG1fY2FwYWJsZTsKIGZsb2F0IGRpc3BjbGs7 CiBmbG9hdCBkcHBjbGs7CiBmbG9hdCByZXR1cm5fYmFuZHdpZHRoX3RvX2RjbjsKIGVudW0gZGNu X2J3X2RlZnMgZGNjX2VuYWJsZWRfYW55X3BsYW5lOwogZmxvYXQgcmV0dXJuX2J3OwogZmxvYXQg Y3JpdGljYWxfY29tcHJlc3Npb247CiBmbG9hdCB0b3RhbF9kYXRhX3JlYWRfYmFuZHdpZHRoOwog ZmxvYXQgdG90YWxfYWN0aXZlX2RwcDsKIGZsb2F0IHRvdGFsX2RjY19hY3RpdmVfZHBwOwogZmxv YXQgdXJnZW50X3JvdW5kX3RyaXBfYW5kX291dF9vZl9vcmRlcl9sYXRlbmN5OwogZmxvYXQgbGFz dF9waXhlbF9vZl9saW5lX2V4dHJhX3dhdGVybWFyazsKIGZsb2F0IGRhdGFfZmFicmljX2xpbmVf ZGVsaXZlcnlfdGltZV9sdW1hOwogZmxvYXQgZGF0YV9mYWJyaWNfbGluZV9kZWxpdmVyeV90aW1l X2Nocm9tYTsKIGZsb2F0IHVyZ2VudF9leHRyYV9sYXRlbmN5OwogZmxvYXQgdXJnZW50X3dhdGVy bWFyazsKIGZsb2F0IHB0ZW1ldGFfdXJnZW50X3dhdGVybWFyazsKIGZsb2F0IGRyYW1fY2xvY2tf Y2hhbmdlX3dhdGVybWFyazsKIGZsb2F0IHRvdGFsX2FjdGl2ZV93cml0ZWJhY2s7CiBmbG9hdCB3 cml0ZWJhY2tfZHJhbV9jbG9ja19jaGFuZ2Vfd2F0ZXJtYXJrOwogZmxvYXQgbWluX2Z1bGxfZGV0 X2J1ZmZlcmluZ190aW1lOwogZmxvYXQgZnJhbWVfdGltZV9mb3JfbWluX2Z1bGxfZGV0X2J1ZmZl cmluZ190aW1lOwogZmxvYXQgYXZlcmFnZV9yZWFkX2JhbmR3aWR0aF9nYnl0ZV9wZXJfc2Vjb25k OwogZmxvYXQgcGFydF9vZl9idXJzdF90aGF0X2ZpdHNfaW5fcm9iOwogZmxvYXQgc3R1dHRlcl9i dXJzdF90aW1lOwogZmxvYXQgc3R1dHRlcl9lZmZpY2llbmN5X25vdF9pbmNsdWRpbmdfdmJsYW5r OwogZmxvYXQgc21hbGxlc3RfdmJsYW5rOwogZmxvYXQgdl9ibGFua190aW1lOwogZmxvYXQgc3R1 dHRlcl9lZmZpY2llbmN5OwogZmxvYXQgZGNmX2Nsa19kZWVwX3NsZWVwOwogZmxvYXQgc3R1dHRl cl9leGl0X3dhdGVybWFyazsKIGZsb2F0IHN0dXR0ZXJfZW50ZXJfcGx1c19leGl0X3dhdGVybWFy azsKIGZsb2F0IGVmZmVjdGl2ZV9kZXRfcGx1c19sYl9saW5lc19sdW1hOwogZmxvYXQgdXJnZW50 X2xhdGVuY3lfc3VwcG9ydF91c19sdW1hOwogZmxvYXQgZWZmZWN0aXZlX2RldF9wbHVzX2xiX2xp bmVzX2Nocm9tYTsKIGZsb2F0IHVyZ2VudF9sYXRlbmN5X3N1cHBvcnRfdXNfY2hyb21hOwogZmxv YXQgbWluX3VyZ2VudF9sYXRlbmN5X3N1cHBvcnRfdXM7CiBmbG9hdCBub25fdXJnZW50X2xhdGVu Y3lfdG9sZXJhbmNlOwogZmxvYXQgYmxvY2tfaGVpZ2h0MjU2X2J5dGVzX3k7CiBmbG9hdCBibG9j a19oZWlnaHQyNTZfYnl0ZXNfYzsKIGZsb2F0IG1ldGFfcmVxdWVzdF93aWR0aF95OwogZmxvYXQg bWV0YV9zdXJmX3dpZHRoX3k7CiBmbG9hdCBtZXRhX3N1cmZfaGVpZ2h0X3k7CiBmbG9hdCBtZXRh X3B0ZV9ieXRlc19mcmFtZV95OwogZmxvYXQgbWV0YV9yb3dfYnl0ZV95OwogZmxvYXQgbWFjcm9f dGlsZV9zaXplX2J5dGVfeTsKIGZsb2F0IG1hY3JvX3RpbGVfaGVpZ2h0X3k7CiBmbG9hdCBwaXhl bF9wdGVfcmVxX2hlaWdodF95OwogZmxvYXQgcGl4ZWxfcHRlX3JlcV93aWR0aF95OwogZmxvYXQg cGl4ZWxfcHRlX2J5dGVzX3Blcl9yb3dfeTsKIGZsb2F0IG1ldGFfcmVxdWVzdF93aWR0aF9jOwog ZmxvYXQgbWV0YV9zdXJmX3dpZHRoX2M7CiBmbG9hdCBtZXRhX3N1cmZfaGVpZ2h0X2M7CiBmbG9h dCBtZXRhX3B0ZV9ieXRlc19mcmFtZV9jOwogZmxvYXQgbWV0YV9yb3dfYnl0ZV9jOwogZmxvYXQg bWFjcm9fdGlsZV9zaXplX2J5dGVzX2M7CiBmbG9hdCBtYWNyb190aWxlX2hlaWdodF9jOwogZmxv YXQgcGl4ZWxfcHRlX3JlcV9oZWlnaHRfYzsKIGZsb2F0IHBpeGVsX3B0ZV9yZXFfd2lkdGhfYzsK IGZsb2F0IHBpeGVsX3B0ZV9ieXRlc19wZXJfcm93X2M7CiBmbG9hdCBtYXhfcGFydGlhbF9zd2F0 aF95OwogZmxvYXQgbWF4X3BhcnRpYWxfc3dhdGhfYzsKIGZsb2F0IHRfY2FsYzsKIGZsb2F0IG5l eHRfcHJlZmV0Y2hfbW9kZTsKIGZsb2F0IHZfc3RhcnR1cF9saW5lczsKIGVudW0gZGNuX2J3X2Rl ZnMgcGxhbmVzX3dpdGhfcm9vbV90b19pbmNyZWFzZV92c3RhcnR1cF9wcmVmZXRjaF9id19sZXNz X3RoYW5fYWN0aXZlX2J3OwogZW51bSBkY25fYndfZGVmcyBwbGFuZXNfd2l0aF9yb29tX3RvX2lu Y3JlYXNlX3ZzdGFydHVwX3ZyYXRpb19wcmVmZXRjaF9tb3JlX3RoYW40OwogZW51bSBkY25fYndf ZGVmcyBwbGFuZXNfd2l0aF9yb29tX3RvX2luY3JlYXNlX3ZzdGFydHVwX2Rlc3RpbmF0aW9uX2xp bmVfdGltZXNfZm9yX3ByZWZldGNoX2xlc3NfdGhhbjI7CiBlbnVtIGRjbl9id19kZWZzIHZfcmF0 aW9fcHJlZmV0Y2hfbW9yZV90aGFuNDsKIGVudW0gZGNuX2J3X2RlZnMgZGVzdGluYXRpb25fbGlu ZV90aW1lc19mb3JfcHJlZmV0Y2hfbGVzc190aGFuMjsKIGZsb2F0IHByZWZldGNoX21vZGU7CiBm bG9hdCBkc3R4X2FmdGVyX3NjYWxlcjsKIGZsb2F0IGRzdHlfYWZ0ZXJfc2NhbGVyOwogZmxvYXQg dl91cGRhdGVfb2Zmc2V0X3BpeFs1ICsgMV07CiBmbG9hdCB0b3RhbF9yZXBlYXRlcl9kZWxheV90 aW1lOwogZmxvYXQgdl91cGRhdGVfd2lkdGhfcGl4WzUgKyAxXTsKIGZsb2F0IHZfcmVhZHlfb2Zm c2V0X3BpeFs1ICsgMV07CiBmbG9hdCB0X3NldHVwOwogZmxvYXQgdF93YWl0OwogZmxvYXQgYmFu ZHdpZHRoX2F2YWlsYWJsZV9mb3JfaW1tZWRpYXRlX2ZsaXA7CiBmbG9hdCB0b3RfaW1tZWRpYXRl X2ZsaXBfYnl0ZXM7CiBmbG9hdCBtYXhfcmRfYmFuZHdpZHRoOwogZmxvYXQgdGltZV9mb3JfZmV0 Y2hpbmdfbWV0YV9wdGU7CiBmbG9hdCB0aW1lX2Zvcl9mZXRjaGluZ19yb3dfaW5fdmJsYW5rOwog ZmxvYXQgbGluZXNfdG9fcmVxdWVzdF9wcmVmZXRjaF9waXhlbF9kYXRhOwogZmxvYXQgcmVxdWly ZWRfcHJlZmV0Y2hfcGl4X2RhdGFfYnc7CiBlbnVtIGRjbl9id19kZWZzIHByZWZldGNoX21vZGVf c3VwcG9ydGVkOwogZmxvYXQgYWN0aXZlX2RwX3BzOwogZmxvYXQgbGJfbGF0ZW5jeV9oaWRpbmdf c291cmNlX2xpbmVzX3k7CiBmbG9hdCBsYl9sYXRlbmN5X2hpZGluZ19zb3VyY2VfbGluZXNfYzsK IGZsb2F0IGVmZmVjdGl2ZV9sYl9sYXRlbmN5X2hpZGluZ195OwogZmxvYXQgZWZmZWN0aXZlX2xi X2xhdGVuY3lfaGlkaW5nX2M7CiBmbG9hdCBkcHBfb3V0cHV0X2J1ZmZlcl9saW5lc195OwogZmxv YXQgZHBwX291dHB1dF9idWZmZXJfbGluZXNfYzsKIGZsb2F0IGRwcG9wcF9idWZmZXJpbmdfeTsK IGZsb2F0IG1heF9kZXRfYnVmZmVyaW5nX3RpbWVfeTsKIGZsb2F0IGFjdGl2ZV9kcmFtX2Nsb2Nr X2NoYW5nZV9sYXRlbmN5X21hcmdpbl95OwogZmxvYXQgZHBwb3BwX2J1ZmZlcmluZ19jOwogZmxv YXQgbWF4X2RldF9idWZmZXJpbmdfdGltZV9jOwogZmxvYXQgYWN0aXZlX2RyYW1fY2xvY2tfY2hh bmdlX2xhdGVuY3lfbWFyZ2luX2M7CiBmbG9hdCB3cml0ZWJhY2tfZHJhbV9jbG9ja19jaGFuZ2Vf bGF0ZW5jeV9tYXJnaW47CiBmbG9hdCBtaW5fYWN0aXZlX2RyYW1fY2xvY2tfY2hhbmdlX21hcmdp bjsKIGZsb2F0IHZfYmxhbmtfb2ZfbWluX2FjdGl2ZV9kcmFtX2Nsb2NrX2NoYW5nZV9tYXJnaW47 CiBmbG9hdCBzZWNvbmRfbWluX2FjdGl2ZV9kcmFtX2Nsb2NrX2NoYW5nZV9tYXJnaW47CiBmbG9h dCBtaW5fdmJsYW5rX2RyYW1fY2xvY2tfY2hhbmdlX21hcmdpbjsKIGZsb2F0IGRyYW1fY2xvY2tf Y2hhbmdlX21hcmdpbjsKIGZsb2F0IGRyYW1fY2xvY2tfY2hhbmdlX3N1cHBvcnQ7CiBmbG9hdCB3 cl9iYW5kd2lkdGg7CiBmbG9hdCBtYXhfdXNlZF9idzsKfTsKCnN0cnVjdCBkY25fc29jX2JvdW5k aW5nX2JveCB7CiBmbG9hdCBzcl9leGl0X3RpbWU7CiBmbG9hdCBzcl9lbnRlcl9wbHVzX2V4aXRf dGltZTsKIGZsb2F0IHVyZ2VudF9sYXRlbmN5OwogZmxvYXQgd3JpdGVfYmFja19sYXRlbmN5Owog ZmxvYXQgcGVyY2VudF9vZl9pZGVhbF9kcmFtYndfcmVjZWl2ZWRfYWZ0ZXJfdXJnX2xhdGVuY3k7 CiBpbnQgbWF4X3JlcXVlc3Rfc2l6ZTsKIGZsb2F0IGRjZmNsa3ZfbWF4MHA5OwogZmxvYXQgZGNm Y2xrdl9ub20wcDg7CiBmbG9hdCBkY2ZjbGt2X21pZDBwNzI7CiBmbG9hdCBkY2ZjbGt2X21pbjBw NjU7CiBmbG9hdCBtYXhfZGlzcGNsa192bWF4MHA5OwogZmxvYXQgbWF4X2Rpc3BjbGtfdm1pZDBw NzI7CiBmbG9hdCBtYXhfZGlzcGNsa192bm9tMHA4OwogZmxvYXQgbWF4X2Rpc3BjbGtfdm1pbjBw NjU7CiBmbG9hdCBtYXhfZHBwY2xrX3ZtYXgwcDk7CiBmbG9hdCBtYXhfZHBwY2xrX3Zub20wcDg7 CiBmbG9hdCBtYXhfZHBwY2xrX3ZtaWQwcDcyOwogZmxvYXQgbWF4X2RwcGNsa192bWluMHA2NTsK IGZsb2F0IHNvY2NsazsKIGZsb2F0IGZhYnJpY19hbmRfZHJhbV9iYW5kd2lkdGhfdm1heDBwOTsK IGZsb2F0IGZhYnJpY19hbmRfZHJhbV9iYW5kd2lkdGhfdm5vbTBwODsKIGZsb2F0IGZhYnJpY19h bmRfZHJhbV9iYW5kd2lkdGhfdm1pZDBwNzI7CiBmbG9hdCBmYWJyaWNfYW5kX2RyYW1fYmFuZHdp ZHRoX3ZtaW4wcDY1OwogZmxvYXQgcGh5Y2xrdl9tYXgwcDk7CiBmbG9hdCBwaHljbGt2X25vbTBw ODsKIGZsb2F0IHBoeWNsa3ZfbWlkMHA3MjsKIGZsb2F0IHBoeWNsa3ZfbWluMHA2NTsKIGZsb2F0 IGRvd25zcHJlYWRpbmc7CiBpbnQgcm91bmRfdHJpcF9waW5nX2xhdGVuY3lfY3ljbGVzOwogaW50 IHVyZ2VudF9vdXRfb2Zfb3JkZXJfcmV0dXJuX3Blcl9jaGFubmVsOwogaW50IG51bWJlcl9vZl9j aGFubmVsczsKIGludCB2bW1fcGFnZV9zaXplOwogZmxvYXQgZHJhbV9jbG9ja19jaGFuZ2VfbGF0 ZW5jeTsKIGludCByZXR1cm5fYnVzX3dpZHRoOwogZmxvYXQgcGVyY2VudF9kaXNwX2J3X2xpbWl0 Owp9OwpleHRlcm4gY29uc3Qgc3RydWN0IGRjbl9zb2NfYm91bmRpbmdfYm94IGRjbjEwX3NvY19k ZWZhdWx0czsKCnN0cnVjdCBkY25faXBfcGFyYW1zIHsKIGZsb2F0IHJvYl9idWZmZXJfc2l6ZV9p bl9rYnl0ZTsKIGZsb2F0IGRldF9idWZmZXJfc2l6ZV9pbl9rYnl0ZTsKIGZsb2F0IGRwcF9vdXRw dXRfYnVmZmVyX3BpeGVsczsKIGZsb2F0IG9wcF9vdXRwdXRfYnVmZmVyX2xpbmVzOwogZmxvYXQg cGl4ZWxfY2h1bmtfc2l6ZV9pbl9rYnl0ZTsKIGVudW0gZGNuX2J3X2RlZnMgcHRlX2VuYWJsZTsK IGludCBwdGVfY2h1bmtfc2l6ZTsKIGludCBtZXRhX2NodW5rX3NpemU7CiBpbnQgd3JpdGViYWNr X2NodW5rX3NpemU7CiBlbnVtIGRjbl9id19kZWZzIG9kbV9jYXBhYmlsaXR5OwogZW51bSBkY25f YndfZGVmcyBkc2NfY2FwYWJpbGl0eTsKIGludCBsaW5lX2J1ZmZlcl9zaXplOwogaW50IG1heF9s aW5lX2J1ZmZlcl9saW5lczsKIGVudW0gZGNuX2J3X2RlZnMgaXNfbGluZV9idWZmZXJfYnBwX2Zp eGVkOwogaW50IGxpbmVfYnVmZmVyX2ZpeGVkX2JwcDsKIGludCB3cml0ZWJhY2tfbHVtYV9idWZm ZXJfc2l6ZTsKIGludCB3cml0ZWJhY2tfY2hyb21hX2J1ZmZlcl9zaXplOwogaW50IG1heF9udW1f ZHBwOwogaW50IG1heF9udW1fd3JpdGViYWNrOwogaW50IG1heF9kY2h1Yl90b3BzY2xfdGhyb3Vn aHB1dDsKIGludCBtYXhfcHNjbF90b2xiX3Rocm91Z2hwdXQ7CiBpbnQgbWF4X2xiX3RvdnNjbF90 aHJvdWdocHV0OwogaW50IG1heF92c2NsX3RvaHNjbF90aHJvdWdocHV0OwogZmxvYXQgbWF4X2hz Y2xfcmF0aW87CiBmbG9hdCBtYXhfdnNjbF9yYXRpbzsKIGludCBtYXhfaHNjbF90YXBzOwogaW50 IG1heF92c2NsX3RhcHM7CiBpbnQgcHRlX2J1ZmZlcl9zaXplX2luX3JlcXVlc3RzOwogZmxvYXQg ZGlzcGNsa19yYW1waW5nX21hcmdpbjsKIGZsb2F0IHVuZGVyX3NjYW5fZmFjdG9yOwogaW50IG1h eF9pbnRlcl9kY25fdGlsZV9yZXBlYXRlcnM7CiBlbnVtIGRjbl9id19kZWZzIGNhbl92c3RhcnR1 cF9saW5lc19leGNlZWRfdnN5bmNfcGx1c19iYWNrX3BvcmNoX2xpbmVzX21pbnVzX29uZTsKIGVu dW0gZGNuX2J3X2RlZnMgYnVnX2ZvcmNpbmdfbHVtYV9hbmRfY2hyb21hX3JlcXVlc3RfdG9fc2Ft ZV9zaXplX2ZpeGVkOwogaW50IGRjZmNsa19jc3RhdGVfbGF0ZW5jeTsKfTsKZXh0ZXJuIGNvbnN0 IHN0cnVjdCBkY25faXBfcGFyYW1zIGRjbjEwX2lwX2RlZmF1bHRzOwoKYm9vbCBkY25fdmFsaWRh dGVfYmFuZHdpZHRoKAogIHN0cnVjdCBkYyAqZGMsCiAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0 LAogIGJvb2wgZmFzdF92YWxpZGF0ZSk7Cgp1bnNpZ25lZCBpbnQgZGNuX2ZpbmRfZGNmY2xrX3N1 aXRzX2FsbCgKIGNvbnN0IHN0cnVjdCBkYyAqZGMsCiBzdHJ1Y3QgZGNfY2xvY2tzICpjbG9ja3Mp OwoKdm9pZCBkY25fYndfdXBkYXRlX2Zyb21fcHBsaWIoc3RydWN0IGRjICpkYyk7CnZvaWQgZGNu X2J3X25vdGlmeV9wcGxpYl9vZl93bV9yYW5nZXMoc3RydWN0IGRjICpkYyk7CnZvaWQgZGNuX2J3 X3N5bmNfY2FsY3NfYW5kX2RtbChzdHJ1Y3QgZGMgKmRjKTsKCmVudW0gc291cmNlX21hY3JvX3Rp bGVfc2l6ZSBzd2l6emxlX21vZGVfdG9fbWFjcm9fdGlsZV9zaXplKGVudW0gc3dpenpsZV9tb2Rl X3ZhbHVlcyBzd19tb2RlKTsKIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2luYy9jb3JlX3R5cGVzLmgiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9kZGNfc2VydmljZV90eXBlcy5oIiAxCiMgMzcgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2RkY19zZXJ2aWNl X3R5cGVzLmgiCmVudW0gZGRjX3Jlc3VsdCB7CiBERENfUkVTVUxUX1VOS05PV04gPSAwLAogRERD X1JFU1VMVF9TVUNFU1NGVUxMLAogRERDX1JFU1VMVF9GQUlMRURfQ0hBTk5FTF9CVVNZLAogRERD X1JFU1VMVF9GQUlMRURfVElNRU9VVCwKIEREQ19SRVNVTFRfRkFJTEVEX1BST1RPQ09MX0VSUk9S LAogRERDX1JFU1VMVF9GQUlMRURfTkFDSywKIEREQ19SRVNVTFRfRkFJTEVEX0lOQ09NUExFVEUs CiBERENfUkVTVUxUX0ZBSUxFRF9PUEVSQVRJT04sCiBERENfUkVTVUxUX0ZBSUxFRF9JTlZBTElE X09QRVJBVElPTiwKIEREQ19SRVNVTFRfRkFJTEVEX0JVRkZFUl9PVkVSRkxPVywKIEREQ19SRVNV TFRfRkFJTEVEX0hQRF9ESVNDT04KfTsKCmVudW0gZGRjX3NlcnZpY2VfdHlwZSB7CiBERENfU0VS VklDRV9UWVBFX0NPTk5FQ1RPUiwKIEREQ19TRVJWSUNFX1RZUEVfRElTUExBWV9QT1JUX01TVCwK fTsKCgoKCnN0cnVjdCBkaXNwbGF5X3NpbmtfY2FwYWJpbGl0eSB7CgogZW51bSBkaXNwbGF5X2Rv bmdsZV90eXBlIGRvbmdsZV90eXBlOwoKCgoKCiB1aW50MzJfdCBkb3duc3RybV9zaW5rX2NvdW50 OwoKCiBib29sIGRvd25zdHJtX3NpbmtfY291bnRfdmFsaWQ7CgoKIHVpbnQzMl90IGFkZGl0aW9u YWxfYXVkaW9fZGVsYXk7CgogdWludDMyX3QgYXVkaW9fbGF0ZW5jeTsKCiB1aW50MzJfdCB2aWRl b19sYXRlbmN5X2ludGVybGFjZTsKCiB1aW50MzJfdCB2aWRlb19sYXRlbmN5X3Byb2dyZXNzaXZl OwoKIHVpbnQzMl90IG1heF9oZG1pX3BpeGVsX2Nsb2NrOwoKIGVudW0gZGNfY29sb3JfZGVwdGgg bWF4X2hkbWlfZGVlcF9jb2xvcjsKCgoKCgogYm9vbCBzc19zdXBwb3J0ZWQ7CgogdWludDMyX3Qg ZHBfbGlua19sYW5lX2NvdW50OwogdWludDMyX3QgZHBfbGlua19yYXRlOwogdWludDMyX3QgZHBf bGlua19zcGVhZDsKCgoKIGJvb2wgaXNfZHBfaGRtaV9zM2RfY29udmVydGVyOwoKCiBib29sIGlz X2VkcF9zaW5rX2NhcF92YWxpZDsKCiBlbnVtIGRkY190cmFuc2FjdGlvbl90eXBlIHRyYW5zYWN0 aW9uX3R5cGU7CiBlbnVtIHNpZ25hbF90eXBlIHNpZ25hbDsKfTsKCnN0cnVjdCBhdl9zeW5jX2Rh dGEgewogdWludDhfdCBhdl9ncmFudWxhcml0eTsKIHVpbnQ4X3QgYXVkX2RlY19sYXQxOwogdWlu dDhfdCBhdWRfZGVjX2xhdDI7CiB1aW50OF90IGF1ZF9wcF9sYXQxOwogdWludDhfdCBhdWRfcHBf bGF0MjsKIHVpbnQ4X3QgdmlkX2ludGVyX2xhdDsKIHVpbnQ4X3QgdmlkX3Byb2dfbGF0OwogdWlu dDhfdCBhdWRfZGVsX2luczE7CiB1aW50OF90IGF1ZF9kZWxfaW5zMjsKIHVpbnQ4X3QgYXVkX2Rl bF9pbnMzOwp9OwoKCnN0YXRpYyBjb25zdCB1aW50OF90IERQX1ZHQV9MVkRTX0NPTlZFUlRFUl9J RF8yW10gPSAic2l2YXJUIjsKCnN0YXRpYyBjb25zdCB1aW50OF90IERQX1ZHQV9MVkRTX0NPTlZF UlRFUl9JRF8zW10gPSAiZG5vbWxBIjsKCnN0YXRpYyBjb25zdCB1aW50OF90IERQX0RWSV9DT05W RVJURVJfSURfNFtdID0gIm0yRFZJYSI7CiMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCgojIDEgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbWVtX2lucHV0LmgiIDEKIyAzMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tZW1faW5w dXQuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1s L2Rpc3BsYXlfbW9kZV9zdHJ1Y3RzLmgiIDEKIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tZW1faW5wdXQuaCIgMgoKc3RydWN0IGRjaHViX2lu aXRfZGF0YTsKc3RydWN0IGNzdGF0ZV9wc3RhdGVfd2F0ZXJtYXJrc19zdCB7CiB1aW50MzJfdCBj c3RhdGVfZXhpdF9uczsKIHVpbnQzMl90IGNzdGF0ZV9lbnRlcl9wbHVzX2V4aXRfbnM7CiB1aW50 MzJfdCBwc3RhdGVfY2hhbmdlX25zOwp9OwoKc3RydWN0IGRjbl93YXRlcm1hcmtzIHsKIHVpbnQz Ml90IHB0ZV9tZXRhX3VyZ2VudF9uczsKIHVpbnQzMl90IHVyZ2VudF9uczsKIHVpbnQzMl90IGZy YWNfdXJnX2J3X25vbTsKIHVpbnQzMl90IGZyYWNfdXJnX2J3X2ZsaXA7CiBpbnQzMl90IHVyZ2Vu dF9sYXRlbmN5X25zOwogc3RydWN0IGNzdGF0ZV9wc3RhdGVfd2F0ZXJtYXJrc19zdCBjc3RhdGVf cHN0YXRlOwp9OwoKc3RydWN0IGRjbl93YXRlcm1hcmtfc2V0IHsKIHN0cnVjdCBkY25fd2F0ZXJt YXJrcyBhOwogc3RydWN0IGRjbl93YXRlcm1hcmtzIGI7CiBzdHJ1Y3QgZGNuX3dhdGVybWFya3Mg YzsKIHN0cnVjdCBkY25fd2F0ZXJtYXJrcyBkOwp9OwoKc3RydWN0IGRjZV93YXRlcm1hcmtzIHsK IGludCBhX21hcms7CiBpbnQgYl9tYXJrOwogaW50IGNfbWFyazsKIGludCBkX21hcms7Cn07Cgpz dHJ1Y3Qgc3R1dHRlcl9tb2RlcyB7CiBib29sIGVuaGFuY2VkOwogYm9vbCBxdWFkX2RtaWZfYnVm ZmVyOwogYm9vbCB3YXRlcm1hcmtfbmJfcHN0YXRlOwp9OwoKc3RydWN0IG1lbV9pbnB1dCB7CiBj b25zdCBzdHJ1Y3QgbWVtX2lucHV0X2Z1bmNzICpmdW5jczsKIHN0cnVjdCBkY19jb250ZXh0ICpj dHg7CiBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyByZXF1ZXN0X2FkZHJlc3M7CiBzdHJ1Y3QgZGNf cGxhbmVfYWRkcmVzcyBjdXJyZW50X2FkZHJlc3M7CiBpbnQgaW5zdDsKIHN0cnVjdCBzdHV0dGVy X21vZGVzIHN0dXR0ZXJfbW9kZTsKfTsKCnN0cnVjdCB2bV9zeXN0ZW1fYXBlcnR1cmVfcGFyYW0g ewogdW5pb24gbGFyZ2VfaW50ZWdlciBzeXNfZGVmYXVsdDsKIHVuaW9uIGxhcmdlX2ludGVnZXIg c3lzX2xvdzsKIHVuaW9uIGxhcmdlX2ludGVnZXIgc3lzX2hpZ2g7Cn07CgpzdHJ1Y3Qgdm1fY29u dGV4dDBfcGFyYW0gewogdW5pb24gbGFyZ2VfaW50ZWdlciBwdGVfYmFzZTsKIHVuaW9uIGxhcmdl X2ludGVnZXIgcHRlX3N0YXJ0OwogdW5pb24gbGFyZ2VfaW50ZWdlciBwdGVfZW5kOwogdW5pb24g bGFyZ2VfaW50ZWdlciBmYXVsdF9kZWZhdWx0Owp9OwoKc3RydWN0IG1lbV9pbnB1dF9mdW5jcyB7 CiB2b2lkICgqbWVtX2lucHV0X3NldHVwKSgKICAgc3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0 LAogICBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kbGdfcmVnc19zdCAqZGxnX3JlZ3MsCiAgIHN0 cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9yZWdzX3N0ICp0dHVfcmVncywKICAgc3RydWN0IF92 Y3NfZHBpX2Rpc3BsYXlfcnFfcmVnc19zdCAqcnFfcmVncywKICAgc3RydWN0IF92Y3NfZHBpX2Rp c3BsYXlfcGlwZV9kZXN0X3BhcmFtc19zdCAqcGlwZV9kZXN0KTsKCiB2b2lkICgqZGNjX2NvbnRy b2wpKHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1dCwgYm9vbCBlbmFibGUsCiAgIGJvb2wgaW5k ZXBlbmRlbnRfNjRiX2Jsa3MpOwogdm9pZCAoKm1lbV9wcm9ncmFtX3ZpZXdwb3J0KSgKICAgc3Ry dWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAogICBjb25zdCBzdHJ1Y3QgcmVjdCAqdmlld3BvcnQs CiAgIGNvbnN0IHN0cnVjdCByZWN0ICp2aWV3cG9ydF9jKTsKCiB2b2lkICgqbWVtX2lucHV0X3By b2dyYW1fZGlzcGxheV9tYXJrcykoCiAgc3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAogIHN0 cnVjdCBkY2Vfd2F0ZXJtYXJrcyBuYnAsCiAgc3RydWN0IGRjZV93YXRlcm1hcmtzIHN0dXR0ZXIs CiAgc3RydWN0IGRjZV93YXRlcm1hcmtzIHN0dXR0ZXJfZW50ZXIsCiAgc3RydWN0IGRjZV93YXRl cm1hcmtzIHVyZ2VudCwKICB1aW50MzJfdCB0b3RhbF9kZXN0X2xpbmVfdGltZV9ucyk7Cgogdm9p ZCAoKm1lbV9pbnB1dF9wcm9ncmFtX2Nocm9tYV9kaXNwbGF5X21hcmtzKSgKICAgc3RydWN0IG1l bV9pbnB1dCAqbWVtX2lucHV0LAogICBzdHJ1Y3QgZGNlX3dhdGVybWFya3MgbmJwLAogICBzdHJ1 Y3QgZGNlX3dhdGVybWFya3Mgc3R1dHRlciwKICAgc3RydWN0IGRjZV93YXRlcm1hcmtzIHVyZ2Vu dCwKICAgdWludDMyX3QgdG90YWxfZGVzdF9saW5lX3RpbWVfbnMpOwoKIHZvaWQgKCphbGxvY2F0 ZV9tZW1faW5wdXQpKAogIHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1dCwKICB1aW50MzJfdCBo X3RvdGFsLAogIHVpbnQzMl90IHZfdG90YWwsCiAgdWludDMyX3QgcGl4X2Nsa19raHosCiAgdWlu dDMyX3QgdG90YWxfc3RyZWFtc19udW0pOwoKIHZvaWQgKCpmcmVlX21lbV9pbnB1dCkoCiAgc3Ry dWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAogIHVpbnQzMl90IHBhdGhzX251bSk7CgogYm9vbCAo Km1lbV9pbnB1dF9wcm9ncmFtX3N1cmZhY2VfZmxpcF9hbmRfYWRkcikoCiAgc3RydWN0IG1lbV9p bnB1dCAqbWVtX2lucHV0LAogIGNvbnN0IHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzICphZGRyZXNz LAogIGJvb2wgZmxpcF9pbW1lZGlhdGUpOwoKIHZvaWQgKCptZW1faW5wdXRfcHJvZ3JhbV9wdGVf dm0pKAogIHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1dCwKICBlbnVtIHN1cmZhY2VfcGl4ZWxf Zm9ybWF0IGZvcm1hdCwKICB1bmlvbiBkY190aWxpbmdfaW5mbyAqdGlsaW5nX2luZm8sCiAgZW51 bSBkY19yb3RhdGlvbl9hbmdsZSByb3RhdGlvbik7Cgogdm9pZCAoKm1lbV9pbnB1dF9zZXRfdm1f c3lzdGVtX2FwZXJ0dXJlX3NldHRpbmdzKSgKICAgc3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0 LAogICBzdHJ1Y3Qgdm1fc3lzdGVtX2FwZXJ0dXJlX3BhcmFtICphcHQpOwoKIHZvaWQgKCptZW1f aW5wdXRfc2V0X3ZtX2NvbnRleHQwX3NldHRpbmdzKSgKICAgc3RydWN0IG1lbV9pbnB1dCAqbWVt X2lucHV0LAogICBjb25zdCBzdHJ1Y3Qgdm1fY29udGV4dDBfcGFyYW0gKnZtMCk7Cgogdm9pZCAo Km1lbV9pbnB1dF9wcm9ncmFtX3N1cmZhY2VfY29uZmlnKSgKICBzdHJ1Y3QgbWVtX2lucHV0ICpt ZW1faW5wdXQsCiAgZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQsCiAgdW5pb24gZGNf dGlsaW5nX2luZm8gKnRpbGluZ19pbmZvLAogIHN0cnVjdCBwbGFuZV9zaXplICpwbGFuZV9zaXpl LAogIGVudW0gZGNfcm90YXRpb25fYW5nbGUgcm90YXRpb24sCiAgc3RydWN0IGRjX3BsYW5lX2Rj Y19wYXJhbSAqZGNjLAogIGJvb2wgaG9yaXpvbnRhbF9taXJyb3IpOwoKIGJvb2wgKCptZW1faW5w dXRfaXNfZmxpcF9wZW5kaW5nKShzdHJ1Y3QgbWVtX2lucHV0ICptZW1faW5wdXQpOwoKIHZvaWQg KCptZW1faW5wdXRfdXBkYXRlX2RjaHViKShzdHJ1Y3QgbWVtX2lucHV0ICptZW1faW5wdXQsCiAg ICBzdHJ1Y3QgZGNodWJfaW5pdF9kYXRhICpkaF9kYXRhKTsKCiB2b2lkICgqc2V0X2JsYW5rKShz dHJ1Y3QgbWVtX2lucHV0ICptaSwgYm9vbCBibGFuayk7CiB2b2lkICgqc2V0X2h1YnBfYmxhbmtf ZW4pKHN0cnVjdCBtZW1faW5wdXQgKm1pLCBib29sIGJsYW5rKTsKCiB2b2lkICgqc2V0X2N1cnNv cl9hdHRyaWJ1dGVzKSgKICAgc3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAogICBjb25zdCBz dHJ1Y3QgZGNfY3Vyc29yX2F0dHJpYnV0ZXMgKmF0dHIpOwoKIHZvaWQgKCpzZXRfY3Vyc29yX3Bv c2l0aW9uKSgKICAgc3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAogICBjb25zdCBzdHJ1Y3Qg ZGNfY3Vyc29yX3Bvc2l0aW9uICpwb3MsCiAgIGNvbnN0IHN0cnVjdCBkY19jdXJzb3JfbWlfcGFy YW0gKnBhcmFtKTsKCn07CiMgMzUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9odWJwLmgiIDEKIyAyOSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9odWJwLmgiCiMgMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tZW1faW5wdXQuaCIgMQoj IDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2h1 YnAuaCIgMgoKCgoKZW51bSBjdXJzb3JfcGl0Y2ggewogQ1VSU09SX1BJVENIXzY0X1BJWEVMUyA9 IDAsCiBDVVJTT1JfUElUQ0hfMTI4X1BJWEVMUywKIENVUlNPUl9QSVRDSF8yNTZfUElYRUxTCn07 CgplbnVtIGN1cnNvcl9saW5lc19wZXJfY2h1bmsgewogQ1VSU09SX0xJTkVfUEVSX0NIVU5LXzEg PSAwLAogQ1VSU09SX0xJTkVfUEVSX0NIVU5LXzIgPSAxLAogQ1VSU09SX0xJTkVfUEVSX0NIVU5L XzQsCiBDVVJTT1JfTElORV9QRVJfQ0hVTktfOCwKIENVUlNPUl9MSU5FX1BFUl9DSFVOS18xNgp9 OwoKZW51bSBodWJwX2luZF9ibG9ja19zaXplIHsKIGh1YnBfaW5kX2Jsb2NrX3VuY29uc3RyYWlu ZWQgPSAwLAogaHVicF9pbmRfYmxvY2tfNjRiLAp9OwoKc3RydWN0IGh1YnAgewogY29uc3Qgc3Ry dWN0IGh1YnBfZnVuY3MgKmZ1bmNzOwogc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKIHN0cnVjdCBk Y19wbGFuZV9hZGRyZXNzIHJlcXVlc3RfYWRkcmVzczsKIGludCBpbnN0OwoKCiBpbnQgb3BwX2lk OwogaW50IG1wY2NfaWQ7CiBzdHJ1Y3QgZGNfY3Vyc29yX2F0dHJpYnV0ZXMgY3Vyc19hdHRyOwog Ym9vbCBwb3dlcl9nYXRlZDsKfTsKCnN0cnVjdCBzdXJmYWNlX2ZsaXBfcmVnaXN0ZXJzIHsKIHVp bnQzMl90IERDU1VSRl9TVVJGQUNFX0NPTlRST0w7CiB1aW50MzJfdCBEQ1NVUkZfUFJJTUFSWV9N RVRBX1NVUkZBQ0VfQUREUkVTU19ISUdIOwogdWludDMyX3QgRENTVVJGX1BSSU1BUllfTUVUQV9T VVJGQUNFX0FERFJFU1M7CiB1aW50MzJfdCBEQ1NVUkZfUFJJTUFSWV9TVVJGQUNFX0FERFJFU1Nf SElHSDsKIHVpbnQzMl90IERDU1VSRl9QUklNQVJZX1NVUkZBQ0VfQUREUkVTUzsKIHVpbnQzMl90 IERDU1VSRl9QUklNQVJZX01FVEFfU1VSRkFDRV9BRERSRVNTX0hJR0hfQzsKIHVpbnQzMl90IERD U1VSRl9QUklNQVJZX01FVEFfU1VSRkFDRV9BRERSRVNTX0M7CiB1aW50MzJfdCBEQ1NVUkZfUFJJ TUFSWV9TVVJGQUNFX0FERFJFU1NfSElHSF9DOwogdWludDMyX3QgRENTVVJGX1BSSU1BUllfU1VS RkFDRV9BRERSRVNTX0M7CiB1aW50MzJfdCBEQ1NVUkZfU0VDT05EQVJZX01FVEFfU1VSRkFDRV9B RERSRVNTX0hJR0g7CiB1aW50MzJfdCBEQ1NVUkZfU0VDT05EQVJZX01FVEFfU1VSRkFDRV9BRERS RVNTOwogdWludDMyX3QgRENTVVJGX1NFQ09OREFSWV9TVVJGQUNFX0FERFJFU1NfSElHSDsKIHVp bnQzMl90IERDU1VSRl9TRUNPTkRBUllfU1VSRkFDRV9BRERSRVNTOwogYm9vbCB0bXpfc3VyZmFj ZTsKIGJvb2wgaW1tZWRpYXRlOwogdWludDhfdCB2bWlkOwogYm9vbCBncnBoX3N0ZXJlbzsKfTsK CnN0cnVjdCBodWJwX2Z1bmNzIHsKIHZvaWQgKCpodWJwX3NldHVwKSgKICAgc3RydWN0IGh1YnAg Kmh1YnAsCiAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RsZ19yZWdzX3N0ICpkbGdfcmVncywK ICAgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfdHR1X3JlZ3Nfc3QgKnR0dV9yZWdzLAogICBzdHJ1 Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9yZWdzX3N0ICpycV9yZWdzLAogICBzdHJ1Y3QgX3Zjc19k cGlfZGlzcGxheV9waXBlX2Rlc3RfcGFyYW1zX3N0ICpwaXBlX2Rlc3QpOwoKIHZvaWQgKCpodWJw X3NldHVwX2ludGVyZGVwZW5kZW50KSgKICAgc3RydWN0IGh1YnAgKmh1YnAsCiAgIHN0cnVjdCBf dmNzX2RwaV9kaXNwbGF5X2RsZ19yZWdzX3N0ICpkbGdfcmVncywKICAgc3RydWN0IF92Y3NfZHBp X2Rpc3BsYXlfdHR1X3JlZ3Nfc3QgKnR0dV9yZWdzKTsKCiB2b2lkICgqZGNjX2NvbnRyb2wpKHN0 cnVjdCBodWJwICpodWJwLCBib29sIGVuYWJsZSwKICAgZW51bSBodWJwX2luZF9ibG9ja19zaXpl IGJsa19zaXplKTsKCiB2b2lkICgqbWVtX3Byb2dyYW1fdmlld3BvcnQpKAogICBzdHJ1Y3QgaHVi cCAqaHVicCwKICAgY29uc3Qgc3RydWN0IHJlY3QgKnZpZXdwb3J0LAogICBjb25zdCBzdHJ1Y3Qg cmVjdCAqdmlld3BvcnRfYyk7Cgogdm9pZCAoKmFwcGx5X1BMQVRfNTQxODZfd2EpKHN0cnVjdCBo dWJwICpodWJwLAogICBjb25zdCBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyAqYWRkcmVzcyk7Cgog Ym9vbCAoKmh1YnBfcHJvZ3JhbV9zdXJmYWNlX2ZsaXBfYW5kX2FkZHIpKAogIHN0cnVjdCBodWJw ICpodWJwLAogIGNvbnN0IHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzICphZGRyZXNzLAogIGJvb2wg ZmxpcF9pbW1lZGlhdGUpOwoKIHZvaWQgKCpodWJwX3Byb2dyYW1fcHRlX3ZtKSgKICBzdHJ1Y3Qg aHVicCAqaHVicCwKICBlbnVtIHN1cmZhY2VfcGl4ZWxfZm9ybWF0IGZvcm1hdCwKICB1bmlvbiBk Y190aWxpbmdfaW5mbyAqdGlsaW5nX2luZm8sCiAgZW51bSBkY19yb3RhdGlvbl9hbmdsZSByb3Rh dGlvbik7Cgogdm9pZCAoKmh1YnBfc2V0X3ZtX3N5c3RlbV9hcGVydHVyZV9zZXR0aW5ncykoCiAg IHN0cnVjdCBodWJwICpodWJwLAogICBzdHJ1Y3Qgdm1fc3lzdGVtX2FwZXJ0dXJlX3BhcmFtICph cHQpOwoKIHZvaWQgKCpodWJwX3NldF92bV9jb250ZXh0MF9zZXR0aW5ncykoCiAgIHN0cnVjdCBo dWJwICpodWJwLAogICBjb25zdCBzdHJ1Y3Qgdm1fY29udGV4dDBfcGFyYW0gKnZtMCk7Cgogdm9p ZCAoKmh1YnBfcHJvZ3JhbV9zdXJmYWNlX2NvbmZpZykoCiAgc3RydWN0IGh1YnAgKmh1YnAsCiAg ZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQsCiAgdW5pb24gZGNfdGlsaW5nX2luZm8g KnRpbGluZ19pbmZvLAogIHN0cnVjdCBwbGFuZV9zaXplICpwbGFuZV9zaXplLAogIGVudW0gZGNf cm90YXRpb25fYW5nbGUgcm90YXRpb24sCiAgc3RydWN0IGRjX3BsYW5lX2RjY19wYXJhbSAqZGNj LAogIGJvb2wgaG9yaXpvbnRhbF9taXJyb3IsCiAgdW5zaWduZWQgaW50IGNvbXBhX2xldmVsKTsK CiBib29sICgqaHVicF9pc19mbGlwX3BlbmRpbmcpKHN0cnVjdCBodWJwICpodWJwKTsKCiB2b2lk ICgqc2V0X2JsYW5rKShzdHJ1Y3QgaHVicCAqaHVicCwgYm9vbCBibGFuayk7CiB2b2lkICgqc2V0 X2h1YnBfYmxhbmtfZW4pKHN0cnVjdCBodWJwICpodWJwLCBib29sIGJsYW5rKTsKCiB2b2lkICgq c2V0X2N1cnNvcl9hdHRyaWJ1dGVzKSgKICAgc3RydWN0IGh1YnAgKmh1YnAsCiAgIGNvbnN0IHN0 cnVjdCBkY19jdXJzb3JfYXR0cmlidXRlcyAqYXR0cik7Cgogdm9pZCAoKnNldF9jdXJzb3JfcG9z aXRpb24pKAogICBzdHJ1Y3QgaHVicCAqaHVicCwKICAgY29uc3Qgc3RydWN0IGRjX2N1cnNvcl9w b3NpdGlvbiAqcG9zLAogICBjb25zdCBzdHJ1Y3QgZGNfY3Vyc29yX21pX3BhcmFtICpwYXJhbSk7 Cgogdm9pZCAoKmh1YnBfZGlzY29ubmVjdCkoc3RydWN0IGh1YnAgKmh1YnApOwoKIHZvaWQgKCpo dWJwX2Nsa19jbnRsKShzdHJ1Y3QgaHVicCAqaHVicCwgYm9vbCBlbmFibGUpOwogdm9pZCAoKmh1 YnBfdnRnX3NlbCkoc3RydWN0IGh1YnAgKmh1YnAsIHVpbnQzMl90IG90Z19pbnN0KTsKIHZvaWQg KCpodWJwX3JlYWRfc3RhdGUpKHN0cnVjdCBodWJwICpodWJwKTsKIHZvaWQgKCpodWJwX2NsZWFy X3VuZGVyZmxvdykoc3RydWN0IGh1YnAgKmh1YnApOwogdm9pZCAoKmh1YnBfZGlzYWJsZV9jb250 cm9sKShzdHJ1Y3QgaHVicCAqaHVicCwgYm9vbCBkaXNhYmxlX2h1YnApOwogdW5zaWduZWQgaW50 ICgqaHVicF9nZXRfdW5kZXJmbG93X3N0YXR1cykoc3RydWN0IGh1YnAgKmh1YnApOwogdm9pZCAo Kmh1YnBfaW5pdCkoc3RydWN0IGh1YnAgKmh1YnApOwoKIHZvaWQgKCpkbWRhdGFfc2V0X2F0dHJp YnV0ZXMpKAogICBzdHJ1Y3QgaHVicCAqaHVicCwKICAgY29uc3Qgc3RydWN0IGRjX2RtZGF0YV9h dHRyaWJ1dGVzICphdHRyKTsKCiB2b2lkICgqZG1kYXRhX2xvYWQpKAogICBzdHJ1Y3QgaHVicCAq aHVicCwKICAgdWludDMyX3QgZG1kYXRhX3N3X3NpemUsCiAgIGNvbnN0IHVpbnQzMl90ICpkbWRh dGFfc3dfZGF0YSk7CiBib29sICgqZG1kYXRhX3N0YXR1c19kb25lKShzdHJ1Y3QgaHVicCAqaHVi cCk7CiB2b2lkICgqaHVicF9lbmFibGVfdHJpcGxlQnVmZmVyKSgKICBzdHJ1Y3QgaHVicCAqaHVi cCwKICBib29sIGVuYWJsZSk7CgogYm9vbCAoKmh1YnBfaXNfdHJpcGxlYnVmZmVyX2VuYWJsZWQp KAogIHN0cnVjdCBodWJwICpodWJwKTsKCiB2b2lkICgqaHVicF9zZXRfZmxpcF9jb250cm9sX3N1 cmZhY2VfZ3NsKSgKICBzdHJ1Y3QgaHVicCAqaHVicCwKICBib29sIGVuYWJsZSk7Cgogdm9pZCAo KnZhbGlkYXRlX2RtbF9vdXRwdXQpKAogICBzdHJ1Y3QgaHVicCAqaHVicCwKICAgc3RydWN0IGRj X2NvbnRleHQgKmN0eCwKICAgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfcnFfcmVnc19zdCAqZG1s X3JxX3JlZ3MsCiAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RsZ19yZWdzX3N0ICpkbWxfZGxn X2F0dHIsCiAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9yZWdzX3N0ICpkbWxfdHR1X2F0 dHIpOwoKfTsKIyAzNiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2luYy9jb3JlX3R5cGVzLmgiIDIKCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2luYy9ody9tcGMuaCIgMQojIDM4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgoKIyAxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2R3Yi5oIiAxCiMgMzUgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvZHdiLmgiCnN0 cnVjdCBtY2lmX3diOwoKZW51bSBkY2VfdmVyc2lvbjsKCmVudW0gZHdiX3N3X3ZlcnNpb24gewog ZHdiX3Zlcl8xXzAgPSAxLAogZHdiX3Zlcl8yXzAgPSAyLAp9OwoKZW51bSBkd2Jfc291cmNlIHsK IGR3Yl9zcmNfc2NsID0gMCwKIGR3Yl9zcmNfYmxuZCwKIGR3Yl9zcmNfZm10LAogZHdiX3NyY19v dGcwID0gMHgxMDAsCiBkd2Jfc3JjX290ZzEsCiBkd2Jfc3JjX290ZzIsCiBkd2Jfc3JjX290ZzMs Cn07CgoKZW51bSBkd2JfcGlwZSB7CiBkd2JfcGlwZTAgPSAwLAoKIGR3Yl9waXBlMSwKCiBkd2Jf cGlwZV9tYXhfbnVtLAp9OwoKZW51bSBkd2JfZnJhbWVfY2FwdHVyZV9lbmFibGUgewogRFdCX0ZS QU1FX0NBUFRVUkVfRElTQUJMRSA9IDAsCiBEV0JfRlJBTUVfQ0FQVFVSRV9FTkFCTEUgPSAxLAp9 OwoKZW51bSB3YnNjbF9jb2VmX2ZpbHRlcl90eXBlX3NlbCB7CiBXQlNDTF9DT0VGX0xVTUFfVkVS VF9GSUxURVIgPSAwLAogV0JTQ0xfQ09FRl9DSFJPTUFfVkVSVF9GSUxURVIgPSAxLAogV0JTQ0xf Q09FRl9MVU1BX0hPUlpfRklMVEVSID0gMiwKIFdCU0NMX0NPRUZfQ0hST01BX0hPUlpfRklMVEVS ID0gMwp9OwoKCnN0cnVjdCBkd2Jfd2FybXVwX3BhcmFtcyB7CiBib29sIHdhcm11cF9lbjsKIGJv b2wgd2FybXVwX21vZGU7CiBib29sIHdhcm11cF9kZXB0aDsKIGludCB3YXJtdXBfZGF0YTsKIGlu dCB3YXJtdXBfd2lkdGg7CiBpbnQgd2FybXVwX2hlaWdodDsKfTsKCnN0cnVjdCBkd2JfY2FwcyB7 CiBlbnVtIGRjZV92ZXJzaW9uIGh3X3ZlcnNpb247CiBlbnVtIGR3Yl9zd192ZXJzaW9uIHN3X3Zl cnNpb247CiB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWRbNl07CiB1bnNpZ25lZCBpbnQgYWRhcHRlcl9p ZDsKIHVuc2lnbmVkIGludCBudW1fcGlwZXM7CiBzdHJ1Y3QgewogIHVuc2lnbmVkIGludCBzdXBw b3J0X2R3YiA6MTsKICB1bnNpZ25lZCBpbnQgc3VwcG9ydF9vZ2FtIDoxOwogIHVuc2lnbmVkIGlu dCBzdXBwb3J0X3dic2NsIDoxOwogIHVuc2lnbmVkIGludCBzdXBwb3J0X29jc2MgOjE7CiAgdW5z aWduZWQgaW50IHN1cHBvcnRfc3RlcmVvIDoxOwogfSBjYXBzOwogdW5zaWduZWQgaW50IHJlc2Vy dmVkMls5XTsKfTsKCnN0cnVjdCBkd2JjIHsKIGNvbnN0IHN0cnVjdCBkd2JjX2Z1bmNzICpmdW5j czsKIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7CiBpbnQgaW5zdDsKIHN0cnVjdCBtY2lmX3diICpt Y2lmOwogYm9vbCBzdGF0dXM7CiBpbnQgaW5wdXRTcmNTZWxlY3Q7CiBib29sIGR3Yl9vdXRwdXRf YmxhY2s7CiBlbnVtIGRjX3RyYW5zZmVyX2Z1bmNfcHJlZGVmaW5lZCB0ZjsKIGVudW0gZGNfY29s b3Jfc3BhY2Ugb3V0cHV0X2NvbG9yX3NwYWNlOwogYm9vbCBkd2JfaXNfZWZjX3RyYW5zaXRpb247 CiBib29sIGR3Yl9pc19kcmM7CiBpbnQgd2Jfc3JjX3BsYW5lX2luc3Q7CiBib29sIHVwZGF0ZV9w cml2YWN5bWFzazsKIHVpbnQzMl90IG1hc2tfaWQ7CiAgICAgICAgaW50IG90Z19pbnN0OwogICAg ICAgIGJvb2wgbXZjX2NmZzsKfTsKCnN0cnVjdCBkd2JjX2Z1bmNzIHsKIGJvb2wgKCpnZXRfY2Fw cykoCiAgc3RydWN0IGR3YmMgKmR3YmMsCiAgc3RydWN0IGR3Yl9jYXBzICpjYXBzKTsKCiBib29s ICgqZW5hYmxlKSgKICBzdHJ1Y3QgZHdiYyAqZHdiYywKICBzdHJ1Y3QgZGNfZHdiX3BhcmFtcyAq cGFyYW1zKTsKCiBib29sICgqZGlzYWJsZSkoc3RydWN0IGR3YmMgKmR3YmMpOwoKIGJvb2wgKCp1 cGRhdGUpKAogIHN0cnVjdCBkd2JjICpkd2JjLAogIHN0cnVjdCBkY19kd2JfcGFyYW1zICpwYXJh bXMpOwoKIGJvb2wgKCppc19lbmFibGVkKSgKICBzdHJ1Y3QgZHdiYyAqZHdiYyk7Cgogdm9pZCAo KnNldF9zdGVyZW8pKAogIHN0cnVjdCBkd2JjICpkd2JjLAogIHN0cnVjdCBkd2Jfc3RlcmVvX3Bh cmFtcyAqc3RlcmVvX3BhcmFtcyk7Cgogdm9pZCAoKnNldF9uZXdfY29udGVudCkoCiAgc3RydWN0 IGR3YmMgKmR3YmMsCiAgYm9vbCBpc19uZXdfY29udGVudCk7CgoKIHZvaWQgKCpzZXRfd2FybXVw KSgKICBzdHJ1Y3QgZHdiYyAqZHdiYywKICBzdHJ1Y3QgZHdiX3dhcm11cF9wYXJhbXMgKndhcm11 cF9wYXJhbXMpOwoKCiBib29sICgqZ2V0X2R3Yl9zdGF0dXMpKAogIHN0cnVjdCBkd2JjICpkd2Jj KTsKIHZvaWQgKCpkd2Jfc2V0X3NjYWxlcikoCiAgc3RydWN0IGR3YmMgKmR3YmMsCiAgc3RydWN0 IGRjX2R3Yl9wYXJhbXMgKnBhcmFtcyk7Cn07CiMgNDAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tY2lmX3diLmgiIDEKIyAzMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tY2lmX3di LmgiCmVudW0gbW1odWJidWJfd2JpZl9tb2RlIHsKIFBBQ0tFRF80NDQgPSAwLAogUEFDS0VEXzQ0 NF9GUDE2ID0gMSwKIFBMQU5BUl80MjBfOEJQQyA9IDIsCiBQTEFOQVJfNDIwXzEwQlBDID0gMwp9 OwoKc3RydWN0IG1jaWZfYXJiX3BhcmFtcyB7CgogdW5zaWduZWQgaW50IHRpbWVfcGVyX3BpeGVs OwogdW5zaWduZWQgaW50IGNsaV93YXRlcm1hcmtbNF07CiB1bnNpZ25lZCBpbnQgcHN0YXRlX3dh dGVybWFya1s0XTsKIHVuc2lnbmVkIGludCBhcmJpdHJhdGlvbl9zbGljZTsKIHVuc2lnbmVkIGlu dCBzbGljZV9saW5lczsKIHVuc2lnbmVkIGludCBtYXhfc2NhbGVkX3RpbWU7Cn07CgpzdHJ1Y3Qg bWNpZl9pcnFfcGFyYW1zIHsKIHVuc2lnbmVkIGludCBzd19pbnRfZW47CiB1bnNpZ25lZCBpbnQg c3dfc2xpY2VfaW50X2VuOwogdW5zaWduZWQgaW50IHN3X292ZXJydW5faW50X2VuOwogdW5zaWdu ZWQgaW50IHZjZV9pbnRfZW47CiB1bnNpZ25lZCBpbnQgdmNlX3NsaWNlX2ludF9lbjsKfTsKCgoK c3RydWN0IG1jaWZfd2JfZnJhbWVfZHVtcF9pbmZvIHsKIHVuc2lnbmVkIGludCBzaXplOwogdW5z aWduZWQgaW50IHdpZHRoOwogdW5zaWduZWQgaW50IGhlaWdodDsKIHVuc2lnbmVkIGludCBsdW1h X3BpdGNoOwogdW5zaWduZWQgaW50IGNocm9tYV9waXRjaDsKIGVudW0gZHdiX3NjYWxlcl9tb2Rl IGZvcm1hdDsKfTsKCnN0cnVjdCBtY2lmX3diIHsKIGNvbnN0IHN0cnVjdCBtY2lmX3diX2Z1bmNz ICpmdW5jczsKIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7CiBpbnQgaW5zdDsKfTsKCnN0cnVjdCBt Y2lmX3diX2Z1bmNzIHsKCiB2b2lkICgqZW5hYmxlX21jaWYpKHN0cnVjdCBtY2lmX3diICptY2lm X3diKTsKCiB2b2lkICgqZGlzYWJsZV9tY2lmKShzdHJ1Y3QgbWNpZl93YiAqbWNpZl93Yik7Cgog dm9pZCAoKmNvbmZpZ19tY2lmX2J1ZikoCiAgc3RydWN0IG1jaWZfd2IgKm1jaWZfd2IsCiAgc3Ry dWN0IG1jaWZfYnVmX3BhcmFtcyAqcGFyYW1zLAogIHVuc2lnbmVkIGludCBkZXN0X2hlaWdodCk7 CgogIHZvaWQgKCpjb25maWdfbWNpZl9hcmIpKAogIHN0cnVjdCBtY2lmX3diICptY2lmX3diLAog IHN0cnVjdCBtY2lmX2FyYl9wYXJhbXMgKnBhcmFtcyk7CgogIHZvaWQgKCpjb25maWdfbWNpZl9p cnEpKAogIHN0cnVjdCBtY2lmX3diICptY2lmX3diLAogIHN0cnVjdCBtY2lmX2lycV9wYXJhbXMg KnBhcmFtcyk7Cgogdm9pZCAoKmR1bXBfZnJhbWUpKAogIHN0cnVjdCBtY2lmX3diICptY2lmX3di LAogIHN0cnVjdCBtY2lmX2J1Zl9wYXJhbXMgKm1jaWZfcGFyYW1zLAogIGVudW0gZHdiX3NjYWxl cl9tb2RlIG91dF9mb3JtYXQsCiAgdW5zaWduZWQgaW50IGRlc3Rfd2lkdGgsCiAgdW5zaWduZWQg aW50IGRlc3RfaGVpZ2h0LAogIHN0cnVjdCBtY2lmX3diX2ZyYW1lX2R1bXBfaW5mbyAqZHVtcF9p bmZvLAogIHVuc2lnbmVkIGNoYXIgKmx1bWFfYnVmZmVyLAogIHVuc2lnbmVkIGNoYXIgKmNocm9t YV9idWZmZXIsCiAgdW5zaWduZWQgY2hhciAqZGVzdF9sdW1hX2J1ZmZlciwKICB1bnNpZ25lZCBj aGFyICpkZXN0X2Nocm9tYV9idWZmZXIpOwp9OwojIDQxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgoKCgp2b2lkIGVuYWJsZV9z dXJmYWNlX2ZsaXBfcmVwb3J0aW5nKHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUs CiAgdWludDMyX3QgY29udHJvbGxlcl9pZCk7CgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2lkLmgiIDEKIyA0OCAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jb3JlX3R5cGVzLmgiIDIK IyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2xp bmtfZW5jb2Rlci5oIiAxCiMgNDkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9zdHJlYW1fZW5jb2Rlci5oIiAxCiMgMzEgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvc3RyZWFtX2VuY29k ZXIuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVk ZS9hdWRpb190eXBlcy5oIiAxCiMgMzYgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9pbmNsdWRlL2F1ZGlvX3R5cGVzLmgiCnN0cnVjdCBhdWRpb19jcnRjX2luZm8gewog dWludDMyX3QgaF90b3RhbDsKIHVpbnQzMl90IGhfYWN0aXZlOwogdWludDMyX3Qgdl9hY3RpdmU7 CiB1aW50MzJfdCBwaXhlbF9yZXBldGl0aW9uOwogdWludDMyX3QgcmVxdWVzdGVkX3BpeGVsX2Ns b2NrXzEwMEh6OwogdWludDMyX3QgY2FsY3VsYXRlZF9waXhlbF9jbG9ja18xMDBIejsKIHVpbnQz Ml90IHJlZnJlc2hfcmF0ZTsKIGVudW0gZGNfY29sb3JfZGVwdGggY29sb3JfZGVwdGg7CiBib29s IGludGVybGFjZWQ7Cn07CnN0cnVjdCBhemFsaWFfY2xvY2tfaW5mbyB7CiB1aW50MzJfdCBwaXhl bF9jbG9ja19pbl8xMGtoejsKIHVpbnQzMl90IGF1ZGlvX2R0b19waGFzZTsKIHVpbnQzMl90IGF1 ZGlvX2R0b19tb2R1bGU7CiB1aW50MzJfdCBhdWRpb19kdG9fd2FsbF9jbG9ja19yYXRpbzsKfTsK CmVudW0gYXVkaW9fZHRvX3NvdXJjZSB7CiBEVE9fU09VUkNFX1VOS05PV04gPSAwLAogRFRPX1NP VVJDRV9JRDAsCiBEVE9fU09VUkNFX0lEMSwKIERUT19TT1VSQ0VfSUQyLAogRFRPX1NPVVJDRV9J RDMsCiBEVE9fU09VUkNFX0lENCwKIERUT19TT1VSQ0VfSUQ1Cn07CgoKCnN0cnVjdCBhdWRpb19w bGxfaW5mbyB7CiB1aW50MzJfdCBkcF9kdG9fc291cmNlX2Nsb2NrX2luX2toejsKIHVpbnQzMl90 IGZlZWRfYmFja19kaXZpZGVyOwogZW51bSBhdWRpb19kdG9fc291cmNlIGR0b19zb3VyY2U7CiBi b29sIHNzX2VuYWJsZWQ7CiB1aW50MzJfdCBzc19wZXJjZW50YWdlOwogdWludDMyX3Qgc3NfcGVy Y2VudGFnZV9kaXZpZGVyOwp9OwoKc3RydWN0IGF1ZGlvX2NoYW5uZWxfYXNzb2NpYXRlX2luZm8g ewogdW5pb24gewogIHN0cnVjdCB7CiAgIHVpbnQzMl90IEFMTF9DSEFOTkVMX0ZMOjQ7CiAgIHVp bnQzMl90IEFMTF9DSEFOTkVMX0ZSOjQ7CiAgIHVpbnQzMl90IEFMTF9DSEFOTkVMX0ZDOjQ7CiAg IHVpbnQzMl90IEFMTF9DSEFOTkVMX1N1Yjo0OwogICB1aW50MzJfdCBBTExfQ0hBTk5FTF9TTDo0 OwogICB1aW50MzJfdCBBTExfQ0hBTk5FTF9TUjo0OwogICB1aW50MzJfdCBBTExfQ0hBTk5FTF9C TDo0OwogICB1aW50MzJfdCBBTExfQ0hBTk5FTF9CUjo0OwogIH0gYml0czsKICB1aW50MzJfdCB1 MzJhbGw7CiB9Owp9OwoKc3RydWN0IGF1ZGlvX291dHB1dCB7CgogZW51bSBlbmdpbmVfaWQgZW5n aW5lX2lkOwoKIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsOwoKIHN0cnVjdCBhdWRpb19jcnRjX2lu Zm8gY3J0Y19pbmZvOwoKIHN0cnVjdCBhdWRpb19wbGxfaW5mbyBwbGxfaW5mbzsKfTsKCmVudW0g YXVkaW9fcGF5bG9hZCB7CiBDSEFOTkVMX1NQTElUX01BUFBJTkdDSEFORyA9IDB4OSwKfTsKIyAz MiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9zdHJl YW1fZW5jb2Rlci5oIiAyCgoKc3RydWN0IGRjX2Jpb3M7CnN0cnVjdCBkY19jb250ZXh0OwpzdHJ1 Y3QgZGNfY3J0Y190aW1pbmc7CgplbnVtIGRwX3BpeGVsX2VuY29kaW5nX3R5cGUgewogRFBfUElY RUxfRU5DT0RJTkdfVFlQRV9SR0I0NDQgPSAweDAwMDAwMDAwLAogRFBfUElYRUxfRU5DT0RJTkdf VFlQRV9ZQ0JDUjQyMiA9IDB4MDAwMDAwMDEsCiBEUF9QSVhFTF9FTkNPRElOR19UWVBFX1lDQkNS NDQ0ID0gMHgwMDAwMDAwMiwKIERQX1BJWEVMX0VOQ09ESU5HX1RZUEVfUkdCX1dJREVfR0FNVVQg PSAweDAwMDAwMDAzLAogRFBfUElYRUxfRU5DT0RJTkdfVFlQRV9ZX09OTFkgPSAweDAwMDAwMDA0 LAogRFBfUElYRUxfRU5DT0RJTkdfVFlQRV9ZQ0JDUjQyMCA9IDB4MDAwMDAwMDUKfTsKCmVudW0g ZHBfY29tcG9uZW50X2RlcHRoIHsKIERQX0NPTVBPTkVOVF9QSVhFTF9ERVBUSF82QlBDID0gMHgw MDAwMDAwMCwKIERQX0NPTVBPTkVOVF9QSVhFTF9ERVBUSF84QlBDID0gMHgwMDAwMDAwMSwKIERQ X0NPTVBPTkVOVF9QSVhFTF9ERVBUSF8xMEJQQyA9IDB4MDAwMDAwMDIsCiBEUF9DT01QT05FTlRf UElYRUxfREVQVEhfMTJCUEMgPSAweDAwMDAwMDAzLAogRFBfQ09NUE9ORU5UX1BJWEVMX0RFUFRI XzE2QlBDID0gMHgwMDAwMDAwNAp9OwoKc3RydWN0IGF1ZGlvX2Nsb2NrX2luZm8gewoKIHVpbnQz Ml90IHBpeGVsX2Nsb2NrX2luXzEwa2h6OwoKIHVpbnQzMl90IG5fMzJraHo7CgogdWludDMyX3Qg Y3RzXzMya2h6OwogdWludDMyX3Qgbl80NGtoejsKIHVpbnQzMl90IGN0c180NGtoejsKIHVpbnQz Ml90IG5fNDhraHo7CiB1aW50MzJfdCBjdHNfNDhraHo7Cn07CgplbnVtIGR5bmFtaWNfbWV0YWRh dGFfbW9kZSB7CiBkbWRhdGFfZHAsCiBkbWRhdGFfaGRtaSwKIGRtZGF0YV9kb2xieV92aXNpb24K fTsKCnN0cnVjdCBlbmNvZGVyX2luZm9fZnJhbWUgewoKIHN0cnVjdCBkY19pbmZvX3BhY2tldCBh dmk7CiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgZ2FtdXQ7CiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQg dmVuZG9yOwogc3RydWN0IGRjX2luZm9fcGFja2V0IGhmdnNpZjsKCiBzdHJ1Y3QgZGNfaW5mb19w YWNrZXQgc3BkOwoKIHN0cnVjdCBkY19pbmZvX3BhY2tldCB2c2M7Cgogc3RydWN0IGRjX2luZm9f cGFja2V0IGhkcnNtZDsKfTsKCnN0cnVjdCBlbmNvZGVyX3VuYmxhbmtfcGFyYW0gewogc3RydWN0 IGRjX2xpbmtfc2V0dGluZ3MgbGlua19zZXR0aW5nczsKIHN0cnVjdCBkY19jcnRjX3RpbWluZyB0 aW1pbmc7CiBpbnQgb3BwX2NudDsKfTsKCnN0cnVjdCBlbmNvZGVyX3NldF9kcF9waHlfcGF0dGVy bl9wYXJhbSB7CiBlbnVtIGRwX3Rlc3RfcGF0dGVybiBkcF9waHlfcGF0dGVybjsKIGNvbnN0IHVp bnQ4X3QgKmN1c3RvbV9wYXR0ZXJuOwogdWludDMyX3QgY3VzdG9tX3BhdHRlcm5fc2l6ZTsKIGVu dW0gZHBfcGFuZWxfbW9kZSBkcF9wYW5lbF9tb2RlOwp9OwoKc3RydWN0IHN0cmVhbV9lbmNvZGVy IHsKIGNvbnN0IHN0cnVjdCBzdHJlYW1fZW5jb2Rlcl9mdW5jcyAqZnVuY3M7CiBzdHJ1Y3QgZGNf Y29udGV4dCAqY3R4Owogc3RydWN0IGRjX2Jpb3MgKmJwOwogZW51bSBlbmdpbmVfaWQgaWQ7Cn07 CgpzdHJ1Y3QgZW5jX3N0YXRlIHsKIHVpbnQzMl90IGRzY19tb2RlOwogdWludDMyX3QgZHNjX3Ns aWNlX3dpZHRoOwogdWludDMyX3Qgc2VjX2dzcF9wcHNfbGluZV9udW07CiB1aW50MzJfdCB2Ymlk Nl9saW5lX3JlZmVyZW5jZTsKIHVpbnQzMl90IHZiaWQ2X2xpbmVfbnVtOwogdWludDMyX3Qgc2Vj X2dzcF9wcHNfZW5hYmxlOwogdWludDMyX3Qgc2VjX3N0cmVhbV9lbmFibGU7Cn07CgpzdHJ1Y3Qg c3RyZWFtX2VuY29kZXJfZnVuY3Mgewogdm9pZCAoKmRwX3NldF9zdHJlYW1fYXR0cmlidXRlKSgK ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKICBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKmNy dGNfdGltaW5nLAogIGVudW0gZGNfY29sb3Jfc3BhY2Ugb3V0cHV0X2NvbG9yX3NwYWNlLAogIGJv b2wgdXNlX3ZzY19zZHBfZm9yX2NvbG9yaW1ldHJ5LAogIHVpbnQzMl90IGVuYWJsZV9zZHBfc3Bs aXR0aW5nKTsKCiB2b2lkICgqaGRtaV9zZXRfc3RyZWFtX2F0dHJpYnV0ZSkoCiAgc3RydWN0IHN0 cmVhbV9lbmNvZGVyICplbmMsCiAgc3RydWN0IGRjX2NydGNfdGltaW5nICpjcnRjX3RpbWluZywK ICBpbnQgYWN0dWFsX3BpeF9jbGtfa2h6LAogIGJvb2wgZW5hYmxlX2F1ZGlvKTsKCiB2b2lkICgq ZHZpX3NldF9zdHJlYW1fYXR0cmlidXRlKSgKICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywK ICBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKmNydGNfdGltaW5nLAogIGJvb2wgaXNfZHVhbF9saW5r KTsKCiB2b2lkICgqbHZkc19zZXRfc3RyZWFtX2F0dHJpYnV0ZSkoCiAgc3RydWN0IHN0cmVhbV9l bmNvZGVyICplbmMsCiAgc3RydWN0IGRjX2NydGNfdGltaW5nICpjcnRjX3RpbWluZyk7Cgogdm9p ZCAoKnNldF9tc3RfYmFuZHdpZHRoKSgKICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKICBz dHJ1Y3QgZml4ZWQzMV8zMiBhdmdfdGltZV9zbG90c19wZXJfbXRwKTsKCiB2b2lkICgqdXBkYXRl X2hkbWlfaW5mb19wYWNrZXRzKSgKICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKICBjb25z dCBzdHJ1Y3QgZW5jb2Rlcl9pbmZvX2ZyYW1lICppbmZvX2ZyYW1lKTsKCiB2b2lkICgqc3RvcF9o ZG1pX2luZm9fcGFja2V0cykoCiAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMpOwoKIHZvaWQg KCp1cGRhdGVfZHBfaW5mb19wYWNrZXRzKSgKICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywK ICBjb25zdCBzdHJ1Y3QgZW5jb2Rlcl9pbmZvX2ZyYW1lICppbmZvX2ZyYW1lKTsKCiB2b2lkICgq c2VuZF9pbW1lZGlhdGVfc2RwX21lc3NhZ2UpKAogICAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICpl bmMsCiAgICBjb25zdCB1aW50OF90ICpjdXN0b21fc2RwX21lc3NhZ2UsCiAgICB1bnNpZ25lZCBp bnQgc2RwX21lc3NhZ2Vfc2l6ZSk7Cgogdm9pZCAoKnN0b3BfZHBfaW5mb19wYWNrZXRzKSgKICBz dHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYyk7Cgogdm9pZCAoKmRwX2JsYW5rKSgKICBzdHJ1Y3Qg c3RyZWFtX2VuY29kZXIgKmVuYyk7Cgogdm9pZCAoKmRwX3VuYmxhbmspKAogIHN0cnVjdCBzdHJl YW1fZW5jb2RlciAqZW5jLAogIGNvbnN0IHN0cnVjdCBlbmNvZGVyX3VuYmxhbmtfcGFyYW0gKnBh cmFtKTsKCiB2b2lkICgqYXVkaW9fbXV0ZV9jb250cm9sKSgKICBzdHJ1Y3Qgc3RyZWFtX2VuY29k ZXIgKmVuYywgYm9vbCBtdXRlKTsKCiB2b2lkICgqZHBfYXVkaW9fc2V0dXApKAogIHN0cnVjdCBz dHJlYW1fZW5jb2RlciAqZW5jLAogIHVuc2lnbmVkIGludCBhel9pbnN0LAogIHN0cnVjdCBhdWRp b19pbmZvICppbmZvKTsKCiB2b2lkICgqZHBfYXVkaW9fZW5hYmxlKSAoCiAgIHN0cnVjdCBzdHJl YW1fZW5jb2RlciAqZW5jKTsKCiB2b2lkICgqZHBfYXVkaW9fZGlzYWJsZSkgKAogICBzdHJ1Y3Qg c3RyZWFtX2VuY29kZXIgKmVuYyk7Cgogdm9pZCAoKmhkbWlfYXVkaW9fc2V0dXApKAogIHN0cnVj dCBzdHJlYW1fZW5jb2RlciAqZW5jLAogIHVuc2lnbmVkIGludCBhel9pbnN0LAogIHN0cnVjdCBh dWRpb19pbmZvICppbmZvLAogIHN0cnVjdCBhdWRpb19jcnRjX2luZm8gKmF1ZGlvX2NydGNfaW5m byk7Cgogdm9pZCAoKmhkbWlfYXVkaW9fZGlzYWJsZSkgKAogICBzdHJ1Y3Qgc3RyZWFtX2VuY29k ZXIgKmVuYyk7Cgogdm9pZCAoKnNldHVwX3N0ZXJlb19zeW5jKSAoCiAgIHN0cnVjdCBzdHJlYW1f ZW5jb2RlciAqZW5jLAogICBpbnQgdGdfaW5zdCwKICAgYm9vbCBlbmFibGUpOwoKIHZvaWQgKCpz ZXRfYXZtdXRlKSgKICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywgYm9vbCBlbmFibGUpOwoK IHZvaWQgKCpkaWdfY29ubmVjdF90b19vdGcpKAogIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5j LAogIGludCB0Z19pbnN0KTsKCiB2b2lkICgqaGRtaV9yZXNldF9zdHJlYW1fYXR0cmlidXRlKSgK ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYyk7CgogdW5zaWduZWQgaW50ICgqZGlnX3NvdXJj ZV9vdGcpKAogIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jKTsKCiBib29sICgqZHBfZ2V0X3Bp eGVsX2Zvcm1hdCkoCiAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMsCiAgZW51bSBkY19waXhl bF9lbmNvZGluZyAqZW5jb2RpbmcsCiAgZW51bSBkY19jb2xvcl9kZXB0aCAqZGVwdGgpOwoKIHZv aWQgKCplbmNfcmVhZF9zdGF0ZSkoc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMsIHN0cnVjdCBl bmNfc3RhdGUgKnMpOwoKIHZvaWQgKCpkcF9zZXRfZHNjX2NvbmZpZykoCiAgIHN0cnVjdCBzdHJl YW1fZW5jb2RlciAqZW5jLAogICBlbnVtIG9wdGNfZHNjX21vZGUgZHNjX21vZGUsCiAgIHVpbnQz Ml90IGRzY19ieXRlc19wZXJfcGl4ZWwsCiAgIHVpbnQzMl90IGRzY19zbGljZV93aWR0aCk7Cgog dm9pZCAoKmRwX3NldF9kc2NfcHBzX2luZm9fcGFja2V0KShzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIg KmVuYywKICAgIGJvb2wgZW5hYmxlLAogICAgdWludDhfdCAqZHNjX3BhY2tlZF9wcHMpOwoKIHZv aWQgKCpzZXRfZHluYW1pY19tZXRhZGF0YSkoc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMsCiAg IGJvb2wgZW5hYmxlLAogICB1aW50MzJfdCBodWJwX3JlcXVlc3Rvcl9pZCwKICAgZW51bSBkeW5h bWljX21ldGFkYXRhX21vZGUgZG1kYXRhX21vZGUpOwoKIHZvaWQgKCpkcF9zZXRfb2RtX2NvbWJp bmUpKAogIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLAogIGJvb2wgb2RtX2NvbWJpbmUpOwp9 OwojIDUwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2Nv cmVfdHlwZXMuaCIgMgoKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2h3L2F1ZGlvLmgiIDEKIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2luYy9ody9hdWRpby5oIgpzdHJ1Y3QgYXVkaW87CgpzdHJ1Y3QgYXVk aW9fZnVuY3MgewoKIGJvb2wgKCplbmRwb2ludF92YWxpZCkoc3RydWN0IGF1ZGlvICphdWRpbyk7 Cgogdm9pZCAoKmh3X2luaXQpKHN0cnVjdCBhdWRpbyAqYXVkaW8pOwoKIHZvaWQgKCphel9lbmFi bGUpKHN0cnVjdCBhdWRpbyAqYXVkaW8pOwoKIHZvaWQgKCphel9kaXNhYmxlKShzdHJ1Y3QgYXVk aW8gKmF1ZGlvKTsKCiB2b2lkICgqYXpfY29uZmlndXJlKShzdHJ1Y3QgYXVkaW8gKmF1ZGlvLAog IGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsLAogIGNvbnN0IHN0cnVjdCBhdWRpb19jcnRjX2luZm8g KmNydGNfaW5mbywKICBjb25zdCBzdHJ1Y3QgYXVkaW9faW5mbyAqYXVkaW9faW5mbyk7Cgogdm9p ZCAoKndhbGxfZHRvX3NldHVwKShzdHJ1Y3QgYXVkaW8gKmF1ZGlvLAogIGVudW0gc2lnbmFsX3R5 cGUgc2lnbmFsLAogIGNvbnN0IHN0cnVjdCBhdWRpb19jcnRjX2luZm8gKmNydGNfaW5mbywKICBj b25zdCBzdHJ1Y3QgYXVkaW9fcGxsX2luZm8gKnBsbF9pbmZvKTsKCiB2b2lkICgqZGVzdHJveSko c3RydWN0IGF1ZGlvICoqYXVkaW8pOwp9OwoKc3RydWN0IGF1ZGlvIHsKIGNvbnN0IHN0cnVjdCBh dWRpb19mdW5jcyAqZnVuY3M7CiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwogdW5zaWduZWQgaW50 IGluc3Q7CiBib29sIGVuYWJsZWQ7Cn07CiMgNTIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3BwX3NtdS5oIiAxCiMgMzMgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9wcF9zbXUuaCIKdHlwZWRlZiBi b29sIEJPT0xFQU47CgplbnVtIHBwX3NtdV92ZXIgewoKCgoKCgogUFBfU01VX1VOU1VQUE9SVEVE LAogUFBfU01VX1ZFUl9SViwKIFBQX1NNVV9WRVJfTlYsCiBQUF9TTVVfVkVSX1JOLAoKIFBQX1NN VV9WRVJfTUFYCn07CgpzdHJ1Y3QgcHBfc211IHsKIGVudW0gcHBfc211X3ZlciB2ZXI7CiBjb25z dCB2b2lkICpwcDsKCgoKCgoKIGNvbnN0IHZvaWQgKmRtOwp9OwoKZW51bSBwcF9zbXVfc3RhdHVz IHsKIFBQX1NNVV9SRVNVTFRfVU5ERUZJTkVEID0gMCwKIFBQX1NNVV9SRVNVTFRfT0sgPSAxLAog UFBfU01VX1JFU1VMVF9GQUlMLAogUFBfU01VX1JFU1VMVF9VTlNVUFBPUlRFRAp9OwoKCgoKZW51 bSB3bV90eXBlIHsKIFdNX1RZUEVfUFNUQVRFX0NIRyA9IDAsCiBXTV9UWVBFX1JFVFJBSU5JTkcg PSAxLAp9OwoKCnN0cnVjdCBwcF9zbXVfd21fc2V0X3JhbmdlIHsKIHVpbnQxNl90IG1pbl9maWxs X2Nsa19taHo7CiB1aW50MTZfdCBtYXhfZmlsbF9jbGtfbWh6OwogdWludDE2X3QgbWluX2RyYWlu X2Nsa19taHo7CiB1aW50MTZfdCBtYXhfZHJhaW5fY2xrX21oejsKCiB1aW50OF90IHdtX2luc3Q7 CiB1aW50OF90IHdtX3R5cGU7Cn07CgoKCnN0cnVjdCBwcF9zbXVfd21fcmFuZ2Vfc2V0cyB7CiB1 bnNpZ25lZCBpbnQgbnVtX3JlYWRlcl93bV9zZXRzOwogc3RydWN0IHBwX3NtdV93bV9zZXRfcmFu Z2UgcmVhZGVyX3dtX3NldHNbNF07CgogdW5zaWduZWQgaW50IG51bV93cml0ZXJfd21fc2V0czsK IHN0cnVjdCBwcF9zbXVfd21fc2V0X3JhbmdlIHdyaXRlcl93bV9zZXRzWzRdOwp9OwoKc3RydWN0 IHBwX3NtdV9mdW5jc19ydiB7CiBzdHJ1Y3QgcHBfc211IHBwX3NtdTsKCgoKCgogdm9pZCAoKnNl dF9kaXNwbGF5X2NvdW50KShzdHJ1Y3QgcHBfc211ICpwcCwgaW50IGNvdW50KTsKIyAxMTQgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9wcF9zbXUuaCIKIHZv aWQgKCpzZXRfd21fcmFuZ2VzKShzdHJ1Y3QgcHBfc211ICpwcCwKICAgc3RydWN0IHBwX3NtdV93 bV9yYW5nZV9zZXRzICpyYW5nZXMpOwoKCgoKIHZvaWQgKCpzZXRfaGFyZF9taW5fZGNmY2xrX2J5 X2ZyZXEpKHN0cnVjdCBwcF9zbXUgKnBwLCBpbnQgbWh6KTsKCgoKCgogdm9pZCAoKnNldF9taW5f ZGVlcF9zbGVlcF9kY2ZjbGspKHN0cnVjdCBwcF9zbXUgKnBwLCBpbnQgbWh6KTsKCgoKCiB2b2lk ICgqc2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcSkoc3RydWN0IHBwX3NtdSAqcHAsIGludCBtaHop OwoKCgoKIHZvaWQgKCpzZXRfaGFyZF9taW5fc29jY2xrX2J5X2ZyZXEpKHN0cnVjdCBwcF9zbXUg KnBwLCBpbnQgbWh6KTsKCgogdm9pZCAoKnNldF9wbWVfd2FfZW5hYmxlKShzdHJ1Y3QgcHBfc211 ICpwcCk7Cn07CgoKCgplbnVtIHBwX3NtdV9udl9jbG9ja19pZCB7CiBQUF9TTVVfTlZfRElTUENM SywKIFBQX1NNVV9OVl9QSFlDTEssCiBQUF9TTVVfTlZfUElYRUxDTEsKfTsKCgoKCnN0cnVjdCBw cF9zbXVfbnZfY2xvY2tfdGFibGUgewoKIHVuc2lnbmVkIGludCBkaXNwbGF5Q2xvY2tJbktoejsK IHVuc2lnbmVkIGludCBkcHBDbG9ja0luS2h6OwogdW5zaWduZWQgaW50IHBoeUNsb2NrSW5LaHo7 CiB1bnNpZ25lZCBpbnQgcGl4ZWxDbG9ja0luS2h6OwogdW5zaWduZWQgaW50IGRzY0Nsb2NrSW5L aHo7CgoKIHVuc2lnbmVkIGludCBmYWJyaWNDbG9ja0luS2h6OwogdW5zaWduZWQgaW50IHNvY0Ns b2NrSW5LaHo7CiB1bnNpZ25lZCBpbnQgZGNmQ2xvY2tJbktoejsKIHVuc2lnbmVkIGludCB1Q2xv Y2tJbktoejsKfTsKCnN0cnVjdCBwcF9zbXVfZnVuY3NfbnYgewogc3RydWN0IHBwX3NtdSBwcF9z bXU7CgoKCgogZW51bSBwcF9zbXVfc3RhdHVzICgqc2V0X2Rpc3BsYXlfY291bnQpKHN0cnVjdCBw cF9zbXUgKnBwLCBpbnQgY291bnQpOwoKCgoKIGVudW0gcHBfc211X3N0YXR1cyAoKnNldF9oYXJk X21pbl9kY2ZjbGtfYnlfZnJlcSkoc3RydWN0IHBwX3NtdSAqcHAsIGludCBNaHopOwoKCgoKCiBl bnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfbWluX2RlZXBfc2xlZXBfZGNmY2xrKShzdHJ1Y3QgcHBf c211ICpwcCwgaW50IE1oeik7CgoKCgogZW51bSBwcF9zbXVfc3RhdHVzICgqc2V0X2hhcmRfbWlu X3VjbGtfYnlfZnJlcSkoc3RydWN0IHBwX3NtdSAqcHAsIGludCBNaHopOwoKCgoKIGVudW0gcHBf c211X3N0YXR1cyAoKnNldF9oYXJkX21pbl9zb2NjbGtfYnlfZnJlcSkoc3RydWN0IHBwX3NtdSAq cHAsIGludCBNaHopOwoKCiBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfcG1lX3dhX2VuYWJsZSko c3RydWN0IHBwX3NtdSAqcHApOwoKCgoKIGVudW0gcHBfc211X3N0YXR1cyAoKnNldF92b2x0YWdl X2J5X2ZyZXEpKHN0cnVjdCBwcF9zbXUgKnBwLAogICBlbnVtIHBwX3NtdV9udl9jbG9ja19pZCBj bG9ja19pZCwgaW50IE1oeik7CiMgMjE5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvZG1fcHBfc211LmgiCiBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfd21fcmFu Z2VzKShzdHJ1Y3QgcHBfc211ICpwcCwKICAgc3RydWN0IHBwX3NtdV93bV9yYW5nZV9zZXRzICpy YW5nZXMpOwoKCgoKIGVudW0gcHBfc211X3N0YXR1cyAoKmdldF9tYXhpbXVtX3N1c3RhaW5hYmxl X2Nsb2Nrcykoc3RydWN0IHBwX3NtdSAqcHAsCiAgIHN0cnVjdCBwcF9zbXVfbnZfY2xvY2tfdGFi bGUgKm1heF9jbG9ja3MpOwoKCgogZW51bSBwcF9zbXVfc3RhdHVzICgqZ2V0X3VjbGtfZHBtX3N0 YXRlcykoc3RydWN0IHBwX3NtdSAqcHAsCiAgIHVuc2lnbmVkIGludCAqY2xvY2tfdmFsdWVzX2lu X2toeiwgdW5zaWduZWQgaW50ICpudW1fc3RhdGVzKTsKIyAyNDIgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9wcF9zbXUuaCIKIGVudW0gcHBfc211X3N0YXR1 cyAoKnNldF9wc3RhdGVfaGFuZHNoYWtlX3N1cHBvcnQpKHN0cnVjdCBwcF9zbXUgKnBwLAogICBC T09MRUFOIHBzdGF0ZV9oYW5kc2hha2Vfc3VwcG9ydGVkKTsKfTsKCgoKCgoKc3RydWN0IGRwbV9j bG9jayB7CiAgdWludDMyX3QgRnJlcTsKICB1aW50MzJfdCBWb2w7Cn07CgoKCnN0cnVjdCBkcG1f Y2xvY2tzIHsKIHN0cnVjdCBkcG1fY2xvY2sgRGNmQ2xvY2tzWzhdOwogc3RydWN0IGRwbV9jbG9j ayBTb2NDbG9ja3NbOF07CiBzdHJ1Y3QgZHBtX2Nsb2NrIEZDbG9ja3NbNF07CiBzdHJ1Y3QgZHBt X2Nsb2NrIE1lbUNsb2Nrc1s0XTsKfTsKCgpzdHJ1Y3QgcHBfc211X2Z1bmNzX3JuIHsKIHN0cnVj dCBwcF9zbXUgcHBfc211OwojIDI3NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RtX3BwX3NtdS5oIgogZW51bSBwcF9zbXVfc3RhdHVzICgqc2V0X3dtX3Jhbmdl cykoc3RydWN0IHBwX3NtdSAqcHAsCiAgIHN0cnVjdCBwcF9zbXVfd21fcmFuZ2Vfc2V0cyAqcmFu Z2VzKTsKCiBlbnVtIHBwX3NtdV9zdGF0dXMgKCpnZXRfZHBtX2Nsb2NrX3RhYmxlKSAoc3RydWN0 IHBwX3NtdSAqcHAsCiAgIHN0cnVjdCBkcG1fY2xvY2tzICpjbG9ja190YWJsZSk7Cn07CgpzdHJ1 Y3QgcHBfc211X2Z1bmNzIHsKIHN0cnVjdCBwcF9zbXUgY3R4OwogdW5pb24gewogIHN0cnVjdCBw cF9zbXVfZnVuY3NfcnYgcnZfZnVuY3M7CiAgc3RydWN0IHBwX3NtdV9mdW5jc19udiBudl9mdW5j czsKICBzdHJ1Y3QgcHBfc211X2Z1bmNzX3JuIHJuX2Z1bmNzOwoKIH07Cn07CiMgNTMgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAy CgoKCgoKc3RydWN0IGxpbmtfaW5pdF9kYXRhIHsKIGNvbnN0IHN0cnVjdCBkYyAqZGM7CiBzdHJ1 Y3QgZGNfY29udGV4dCAqY3R4OwogdWludDMyX3QgY29ubmVjdG9yX2luZGV4OwogdWludDMyX3Qg bGlua19pbmRleDsKCn07CgpzdHJ1Y3QgZGNfbGluayAqbGlua19jcmVhdGUoY29uc3Qgc3RydWN0 IGxpbmtfaW5pdF9kYXRhICppbml0X3BhcmFtcyk7CnZvaWQgbGlua19kZXN0cm95KHN0cnVjdCBk Y19saW5rICoqbGluayk7CgplbnVtIGRjX3N0YXR1cyBkY19saW5rX3ZhbGlkYXRlX21vZGVfdGlt aW5nKAogIGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKICBzdHJ1Y3QgZGNf bGluayAqbGluaywKICBjb25zdCBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKnRpbWluZyk7Cgp2b2lk IGNvcmVfbGlua19yZXN1bWUoc3RydWN0IGRjX2xpbmsgKmxpbmspOwoKdm9pZCBjb3JlX2xpbmtf ZW5hYmxlX3N0cmVhbSgKICBzdHJ1Y3QgZGNfc3RhdGUgKnN0YXRlLAogIHN0cnVjdCBwaXBlX2N0 eCAqcGlwZV9jdHgpOwoKdm9pZCBjb3JlX2xpbmtfZGlzYWJsZV9zdHJlYW0oc3RydWN0IHBpcGVf Y3R4ICpwaXBlX2N0eCk7Cgp2b2lkIGNvcmVfbGlua19zZXRfYXZtdXRlKHN0cnVjdCBwaXBlX2N0 eCAqcGlwZV9jdHgsIGJvb2wgZW5hYmxlKTsKCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody90cmFuc2Zvcm0uaCIgMQojIDg1ICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgojIDEg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvZHBwLmgi IDEKIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9o dy9kcHAuaCIKc3RydWN0IGRwcCB7CiBjb25zdCBzdHJ1Y3QgZHBwX2Z1bmNzICpmdW5jczsKIHN0 cnVjdCBkY19jb250ZXh0ICpjdHg7CiBpbnQgaW5zdDsKIHN0cnVjdCBkcHBfY2FwcyAqY2FwczsK IHN0cnVjdCBwd2xfcGFyYW1zIHJlZ2FtbWFfcGFyYW1zOwogc3RydWN0IHB3bF9wYXJhbXMgZGVn YW1tYV9wYXJhbXM7CiBzdHJ1Y3QgZHBwX2N1cnNvcl9hdHRyaWJ1dGVzIGN1cl9hdHRyOwoKIHN0 cnVjdCBwd2xfcGFyYW1zIHNoYXBlcl9wYXJhbXM7CiBib29sIGNtX2J5cGFzc19tb2RlOwp9OwoK c3RydWN0IGRwcF9pbnB1dF9jc2NfbWF0cml4IHsKIGVudW0gZGNfY29sb3Jfc3BhY2UgY29sb3Jf c3BhY2U7CiB1aW50MTZfdCByZWd2YWxbMTJdOwp9OwoKc3RhdGljIGNvbnN0IHN0cnVjdCBkcHBf aW5wdXRfY3NjX21hdHJpeCBkcHBfaW5wdXRfY3NjX21hdHJpeFtdID0gewoge0NPTE9SX1NQQUNF X1NSR0IsCiAgezB4MjAwMCwgMCwgMCwgMCwgMCwgMHgyMDAwLCAwLCAwLCAwLCAwLCAweDIwMDAs IDB9IH0sCiB7Q09MT1JfU1BBQ0VfU1JHQl9MSU1JVEVELAogIHsweDIwMDAsIDAsIDAsIDAsIDAs IDB4MjAwMCwgMCwgMCwgMCwgMCwgMHgyMDAwLCAwfSB9LAoge0NPTE9SX1NQQUNFX1lDQkNSNjAx LAogIHsweDJjZGQsIDB4MjAwMCwgMCwgMHhlOTkxLCAweGU5MjYsIDB4MjAwMCwgMHhmNGZkLCAw eDEwZWYsCiAgICAgIDAsIDB4MjAwMCwgMHgzOGI0LCAweGUzYTZ9IH0sCiB7Q09MT1JfU1BBQ0Vf WUNCQ1I2MDFfTElNSVRFRCwKICB7MHgzMzUzLCAweDI1NjgsIDAsIDB4ZTQwMCwgMHhlNWRjLCAw eDI1NjgsIDB4ZjM2NywgMHgxMTA4LAogICAgICAwLCAweDI1NjgsIDB4NDBkZSwgMHhkZDNhfSB9 LAoge0NPTE9SX1NQQUNFX1lDQkNSNzA5LAogIHsweDMyNjUsIDB4MjAwMCwgMCwgMHhlNmNlLCAw eGYxMDUsIDB4MjAwMCwgMHhmYTAxLCAweGE3ZCwgMCwKICAgICAgMHgyMDAwLCAweDNiNjEsIDB4 ZTI0Zn0gfSwKCiB7Q09MT1JfU1BBQ0VfWUNCQ1I3MDlfTElNSVRFRCwKICB7MHgzOWE2LCAweDI1 NjgsIDAsIDB4ZTBkNiwgMHhlZWRkLCAweDI1NjgsIDB4ZjkyNSwgMHg5YTgsIDAsCiAgICAgIDB4 MjU2OCwgMHg0M2VlLCAweGRiYjJ9IH0KfTsKCnN0cnVjdCBkcHBfZ3JwaF9jc2NfYWRqdXN0bWVu dCB7CiBzdHJ1Y3QgZml4ZWQzMV8zMiB0ZW1wZXJhdHVyZV9tYXRyaXhbMTJdOwogZW51bSBncmFw aGljc19nYW11dF9hZGp1c3RfdHlwZSBnYW11dF9hZGp1c3RfdHlwZTsKfTsKCnN0cnVjdCBjbnZf Y29sb3Jfa2V5ZXJfcGFyYW1zIHsKIGludCBjb2xvcl9rZXllcl9lbjsKIGludCBjb2xvcl9rZXll cl9tb2RlOwogaW50IGNvbG9yX2tleWVyX2FscGhhX2xvdzsKIGludCBjb2xvcl9rZXllcl9hbHBo YV9oaWdoOwogaW50IGNvbG9yX2tleWVyX3JlZF9sb3c7CiBpbnQgY29sb3Jfa2V5ZXJfcmVkX2hp Z2g7CiBpbnQgY29sb3Jfa2V5ZXJfZ3JlZW5fbG93OwogaW50IGNvbG9yX2tleWVyX2dyZWVuX2hp Z2g7CiBpbnQgY29sb3Jfa2V5ZXJfYmx1ZV9sb3c7CiBpbnQgY29sb3Jfa2V5ZXJfYmx1ZV9oaWdo Owp9OwoKCgoKCgoKc3RydWN0IGNudl9hbHBoYV8yYml0X2x1dCB7CiBpbnQgbHV0MDsKIGludCBs dXQxOwogaW50IGx1dDI7CiBpbnQgbHV0MzsKfTsKCnN0cnVjdCBkY25fZHBwX3N0YXRlIHsKIHVp bnQzMl90IGlzX2VuYWJsZWQ7CiB1aW50MzJfdCBpZ2FtX2x1dF9tb2RlOwogdWludDMyX3QgaWdh bV9pbnB1dF9mb3JtYXQ7CiB1aW50MzJfdCBkZ2FtX2x1dF9tb2RlOwogdWludDMyX3QgcmdhbV9s dXRfbW9kZTsKIHVpbnQzMl90IGdhbXV0X3JlbWFwX21vZGU7CiB1aW50MzJfdCBnYW11dF9yZW1h cF9jMTFfYzEyOwogdWludDMyX3QgZ2FtdXRfcmVtYXBfYzEzX2MxNDsKIHVpbnQzMl90IGdhbXV0 X3JlbWFwX2MyMV9jMjI7CiB1aW50MzJfdCBnYW11dF9yZW1hcF9jMjNfYzI0OwogdWludDMyX3Qg Z2FtdXRfcmVtYXBfYzMxX2MzMjsKIHVpbnQzMl90IGdhbXV0X3JlbWFwX2MzM19jMzQ7Cn07Cgpz dHJ1Y3QgQ01fYmlhc19wYXJhbXMgewogdWludDMyX3QgY21fYmlhc19jcl9yOwogdWludDMyX3Qg Y21fYmlhc195X2c7CiB1aW50MzJfdCBjbV9iaWFzX2NiX2I7CiB1aW50MzJfdCBjbV9iaWFzX2Zv cm1hdDsKfTsKCnN0cnVjdCBkcHBfZnVuY3MgewoKIHZvaWQgKCpkcHBfcHJvZ3JhbV9jbV9kZWFs cGhhKShzdHJ1Y3QgZHBwICpkcHBfYmFzZSwKICB1aW50MzJfdCBlbmFibGUsIHVpbnQzMl90IGFk ZGl0aXZlX2JsZW5kaW5nKTsKCiB2b2lkICgqZHBwX3Byb2dyYW1fY21fYmlhcykoCiAgc3RydWN0 IGRwcCAqZHBwX2Jhc2UsCiAgc3RydWN0IENNX2JpYXNfcGFyYW1zICpiaWFzX3BhcmFtcyk7Cgog dm9pZCAoKmRwcF9yZWFkX3N0YXRlKShzdHJ1Y3QgZHBwICpkcHAsIHN0cnVjdCBkY25fZHBwX3N0 YXRlICpzKTsKCiB2b2lkICgqZHBwX3Jlc2V0KShzdHJ1Y3QgZHBwICpkcHApOwoKIHZvaWQgKCpk cHBfc2V0X3NjYWxlcikoc3RydWN0IGRwcCAqZHBwLAogICBjb25zdCBzdHJ1Y3Qgc2NhbGVyX2Rh dGEgKnNjbF9kYXRhKTsKCiB2b2lkICgqZHBwX3NldF9waXhlbF9zdG9yYWdlX2RlcHRoKSgKICAg c3RydWN0IGRwcCAqZHBwLAogICBlbnVtIGxiX3BpeGVsX2RlcHRoIGRlcHRoLAogICBjb25zdCBz dHJ1Y3QgYml0X2RlcHRoX3JlZHVjdGlvbl9wYXJhbXMgKmJpdF9kZXB0aF9wYXJhbXMpOwoKIGJv b2wgKCpkcHBfZ2V0X29wdGltYWxfbnVtYmVyX29mX3RhcHMpKAogICBzdHJ1Y3QgZHBwICpkcHAs CiAgIHN0cnVjdCBzY2FsZXJfZGF0YSAqc2NsX2RhdGEsCiAgIGNvbnN0IHN0cnVjdCBzY2FsaW5n X3RhcHMgKmluX3RhcHMpOwoKIHZvaWQgKCpkcHBfc2V0X2dhbXV0X3JlbWFwKSgKICAgc3RydWN0 IGRwcCAqZHBwLAogICBjb25zdCBzdHJ1Y3QgZHBwX2dycGhfY3NjX2FkanVzdG1lbnQgKmFkanVz dCk7Cgogdm9pZCAoKmRwcF9zZXRfY3NjX2RlZmF1bHQpKAogIHN0cnVjdCBkcHAgKmRwcCwKICBl bnVtIGRjX2NvbG9yX3NwYWNlIGNvbG9yc3BhY2UpOwoKIHZvaWQgKCpkcHBfc2V0X2NzY19hZGp1 c3RtZW50KSgKICBzdHJ1Y3QgZHBwICpkcHAsCiAgY29uc3QgdWludDE2X3QgKnJlZ3ZhbCk7Cgog dm9pZCAoKmRwcF9wb3dlcl9vbl9yZWdhbW1hX2x1dCkoCiAgc3RydWN0IGRwcCAqZHBwLAogIGJv b2wgcG93ZXJfb24pOwoKIHZvaWQgKCpkcHBfcHJvZ3JhbV9yZWdhbW1hX2x1dCkoCiAgIHN0cnVj dCBkcHAgKmRwcCwKICAgY29uc3Qgc3RydWN0IHB3bF9yZXN1bHRfZGF0YSAqcmdiLAogICB1aW50 MzJfdCBudW0pOwoKIHZvaWQgKCpkcHBfY29uZmlndXJlX3JlZ2FtbWFfbHV0KSgKICAgc3RydWN0 IGRwcCAqZHBwLAogICBib29sIGlzX3JhbV9hKTsKCiB2b2lkICgqZHBwX3Byb2dyYW1fcmVnYW1t YV9sdXRiX3NldHRpbmdzKSgKICAgc3RydWN0IGRwcCAqZHBwLAogICBjb25zdCBzdHJ1Y3QgcHds X3BhcmFtcyAqcGFyYW1zKTsKCiB2b2lkICgqZHBwX3Byb2dyYW1fcmVnYW1tYV9sdXRhX3NldHRp bmdzKSgKICAgc3RydWN0IGRwcCAqZHBwLAogICBjb25zdCBzdHJ1Y3QgcHdsX3BhcmFtcyAqcGFy YW1zKTsKCiB2b2lkICgqZHBwX3Byb2dyYW1fcmVnYW1tYV9wd2wpKAogIHN0cnVjdCBkcHAgKmRw cCwKICBjb25zdCBzdHJ1Y3QgcHdsX3BhcmFtcyAqcGFyYW1zLAogIGVudW0gb3BwX3JlZ2FtbWEg bW9kZSk7Cgogdm9pZCAoKmRwcF9wcm9ncmFtX2JpYXNfYW5kX3NjYWxlKSgKICAgc3RydWN0IGRw cCAqZHBwLAogICBzdHJ1Y3QgZGNfYmlhc19hbmRfc2NhbGUgKnBhcmFtcyk7Cgogdm9pZCAoKmRw cF9zZXRfZGVnYW1tYSkoCiAgIHN0cnVjdCBkcHAgKmRwcF9iYXNlLAogICBlbnVtIGlwcF9kZWdh bW1hX21vZGUgbW9kZSk7Cgogdm9pZCAoKmRwcF9wcm9ncmFtX2lucHV0X2x1dCkoCiAgIHN0cnVj dCBkcHAgKmRwcF9iYXNlLAogICBjb25zdCBzdHJ1Y3QgZGNfZ2FtbWEgKmdhbW1hKTsKCiB2b2lk ICgqZHBwX3Byb2dyYW1fZGVnYW1tYV9wd2wpKHN0cnVjdCBkcHAgKmRwcF9iYXNlLAogICAgICAg ICAgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMgKnBhcmFtcyk7Cgogdm9pZCAoKmRwcF9zZXR1cCko CiAgIHN0cnVjdCBkcHAgKmRwcF9iYXNlLAogICBlbnVtIHN1cmZhY2VfcGl4ZWxfZm9ybWF0IGZv cm1hdCwKICAgZW51bSBleHBhbnNpb25fbW9kZSBtb2RlLAogICBzdHJ1Y3QgZGNfY3NjX3RyYW5z Zm9ybSBpbnB1dF9jc2NfY29sb3JfbWF0cml4LAogICBlbnVtIGRjX2NvbG9yX3NwYWNlIGlucHV0 X2NvbG9yX3NwYWNlLAogICBzdHJ1Y3QgY252X2FscGhhXzJiaXRfbHV0ICphbHBoYV8yYml0X2x1 dCk7Cgogdm9pZCAoKmRwcF9mdWxsX2J5cGFzcykoc3RydWN0IGRwcCAqZHBwX2Jhc2UpOwoKIHZv aWQgKCpzZXRfY3Vyc29yX2F0dHJpYnV0ZXMpKAogICBzdHJ1Y3QgZHBwICpkcHBfYmFzZSwKICAg c3RydWN0IGRjX2N1cnNvcl9hdHRyaWJ1dGVzICpjdXJzb3JfYXR0cmlidXRlcyk7Cgogdm9pZCAo KnNldF9jdXJzb3JfcG9zaXRpb24pKAogICBzdHJ1Y3QgZHBwICpkcHBfYmFzZSwKICAgY29uc3Qg c3RydWN0IGRjX2N1cnNvcl9wb3NpdGlvbiAqcG9zLAogICBjb25zdCBzdHJ1Y3QgZGNfY3Vyc29y X21pX3BhcmFtICpwYXJhbSwKICAgdWludDMyX3Qgd2lkdGgsCiAgIHVpbnQzMl90IGhlaWdodAog ICApOwoKIHZvaWQgKCpkcHBfc2V0X2hkcl9tdWx0aXBsaWVyKSgKICAgc3RydWN0IGRwcCAqZHBw X2Jhc2UsCiAgIHVpbnQzMl90IG11bHRpcGxpZXIpOwoKIHZvaWQgKCpzZXRfb3B0aW9uYWxfY3Vy c29yX2F0dHJpYnV0ZXMpKAogICBzdHJ1Y3QgZHBwICpkcHBfYmFzZSwKICAgc3RydWN0IGRwcF9j dXJzb3JfYXR0cmlidXRlcyAqYXR0cik7Cgogdm9pZCAoKmRwcF9kcHBjbGtfY29udHJvbCkoCiAg IHN0cnVjdCBkcHAgKmRwcF9iYXNlLAogICBib29sIGRwcGNsa19kaXYsCiAgIGJvb2wgZW5hYmxl KTsKCiBib29sICgqZHBwX3Byb2dyYW1fYmxuZF9sdXQpKAogICBzdHJ1Y3QgZHBwICpkcHAsCiAg IGNvbnN0IHN0cnVjdCBwd2xfcGFyYW1zICpwYXJhbXMpOwogYm9vbCAoKmRwcF9wcm9ncmFtX3No YXBlcl9sdXQpKAogICBzdHJ1Y3QgZHBwICpkcHAsCiAgIGNvbnN0IHN0cnVjdCBwd2xfcGFyYW1z ICpwYXJhbXMpOwogYm9vbCAoKmRwcF9wcm9ncmFtXzNkbHV0KSgKICAgc3RydWN0IGRwcCAqZHBw LAogICBzdHJ1Y3QgdGV0cmFoZWRyYWxfcGFyYW1zICpwYXJhbXMpOwogdm9pZCAoKmRwcF9jbnZf c2V0X2FscGhhX2tleWVyKSgKICAgc3RydWN0IGRwcCAqZHBwX2Jhc2UsCiAgIHN0cnVjdCBjbnZf Y29sb3Jfa2V5ZXJfcGFyYW1zICpjb2xvcl9rZXllcik7Cn07CiMgODYgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCgpzdHJ1Y3Qg cmVzb3VyY2VfcG9vbDsKc3RydWN0IGRjX3N0YXRlOwpzdHJ1Y3QgcmVzb3VyY2VfY29udGV4dDsK c3RydWN0IGNsa19id19wYXJhbXM7CgpzdHJ1Y3QgcmVzb3VyY2VfZnVuY3Mgewogdm9pZCAoKmRl c3Ryb3kpKHN0cnVjdCByZXNvdXJjZV9wb29sICoqcG9vbCk7CiB2b2lkICgqbGlua19pbml0KShz dHJ1Y3QgZGNfbGluayAqbGluayk7CiBzdHJ1Y3QgbGlua19lbmNvZGVyICooKmxpbmtfZW5jX2Ny ZWF0ZSkoCiAgIGNvbnN0IHN0cnVjdCBlbmNvZGVyX2luaXRfZGF0YSAqaW5pdCk7CiBib29sICgq dmFsaWRhdGVfYmFuZHdpZHRoKSgKICAgICBzdHJ1Y3QgZGMgKmRjLAogICAgIHN0cnVjdCBkY19z dGF0ZSAqY29udGV4dCwKICAgICBib29sIGZhc3RfdmFsaWRhdGUpOwoKIGludCAoKnBvcHVsYXRl X2RtbF9waXBlcykoCiAgc3RydWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQs CiAgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzKTsKCiBlbnVtIGRjX3N0YXR1cyAo KnZhbGlkYXRlX2dsb2JhbCkoCiAgc3RydWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RhdGUgKmNv bnRleHQpOwoKIHN0cnVjdCBwaXBlX2N0eCAqKCphY3F1aXJlX2lkbGVfcGlwZV9mb3JfbGF5ZXIp KAogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCiAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9w b29sICpwb29sLAogICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwoKIGVudW0gZGNf c3RhdHVzICgqdmFsaWRhdGVfcGxhbmUpKGNvbnN0IHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUsIHN0cnVjdCBkY19jYXBzICpjYXBzKTsKCiBlbnVtIGRjX3N0YXR1cyAoKmFkZF9z dHJlYW1fdG9fY3R4KSgKICAgc3RydWN0IGRjICpkYywKICAgc3RydWN0IGRjX3N0YXRlICpuZXdf Y3R4LAogICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpkY19zdHJlYW0pOwoKIGVudW0gZGNfc3Rh dHVzICgqcmVtb3ZlX3N0cmVhbV9mcm9tX2N0eCkoCiAgICBzdHJ1Y3QgZGMgKmRjLAogICAgc3Ry dWN0IGRjX3N0YXRlICpuZXdfY3R4LAogICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFt KTsKIGVudW0gZGNfc3RhdHVzICgqZ2V0X2RlZmF1bHRfc3dpenpsZV9tb2RlKSgKICAgc3RydWN0 IGRjX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7Cgogc3RydWN0IHN0cmVhbV9lbmNvZGVyICoo KmZpbmRfZmlyc3RfZnJlZV9tYXRjaF9zdHJlYW1fZW5jX2Zvcl9saW5rKSgKICAgc3RydWN0IHJl c291cmNlX2NvbnRleHQgKnJlc19jdHgsCiAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9wb29sICpw b29sLAogICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwogdm9pZCAoKnBvcHVsYXRl X2RtbF93cml0ZWJhY2tfZnJvbV9jb250ZXh0KSgKICAgc3RydWN0IGRjICpkYywKICAgc3RydWN0 IHJlc291cmNlX2NvbnRleHQgKnJlc19jdHgsCiAgIGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0 ICpwaXBlcyk7Cgogdm9pZCAoKnNldF9tY2lmX2FyYl9wYXJhbXMpKAogICBzdHJ1Y3QgZGMgKmRj LAogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCiAgIGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1z X3N0ICpwaXBlcywKICAgaW50IHBpcGVfY250KTsKIHZvaWQgKCp1cGRhdGVfYndfYm91bmRpbmdf Ym94KSgKICAgc3RydWN0IGRjICpkYywKICAgc3RydWN0IGNsa19id19wYXJhbXMgKmJ3X3BhcmFt cyk7Cgp9OwoKc3RydWN0IGF1ZGlvX3N1cHBvcnR7CiBib29sIGRwX2F1ZGlvOwogYm9vbCBoZG1p X2F1ZGlvX29uX2RvbmdsZTsKIGJvb2wgaGRtaV9hdWRpb19uYXRpdmU7Cn07CgoKCnN0cnVjdCBy ZXNvdXJjZV9wb29sIHsKIHN0cnVjdCBtZW1faW5wdXQgKm1pc1s2XTsKIHN0cnVjdCBodWJwICpo dWJwc1s2XTsKIHN0cnVjdCBpbnB1dF9waXhlbF9wcm9jZXNzb3IgKmlwcHNbNl07CiBzdHJ1Y3Qg dHJhbnNmb3JtICp0cmFuc2Zvcm1zWzZdOwogc3RydWN0IGRwcCAqZHBwc1s2XTsKIHN0cnVjdCBv dXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpvcHBzWzZdOwogc3RydWN0IHRpbWluZ19nZW5lcmF0b3Ig KnRpbWluZ19nZW5lcmF0b3JzWzZdOwogc3RydWN0IHN0cmVhbV9lbmNvZGVyICpzdHJlYW1fZW5j WzYgKiAyXTsKIHN0cnVjdCBodWJidWIgKmh1YmJ1YjsKIHN0cnVjdCBtcGMgKm1wYzsKIHN0cnVj dCBwcF9zbXVfZnVuY3MgKnBwX3NtdTsKIHN0cnVjdCBkY2VfYXV4ICplbmdpbmVzWzZdOwogc3Ry dWN0IGRjZV9pMmNfaHcgKmh3X2kyY3NbNl07CiBzdHJ1Y3QgZGNlX2kyY19zdyAqc3dfaTJjc1s2 XTsKIGJvb2wgaTJjX2h3X2J1ZmZlcl9pbl91c2U7Cgogc3RydWN0IGR3YmMgKmR3YmNbMV07CiBz dHJ1Y3QgbWNpZl93YiAqbWNpZl93YlsxXTsKIHN0cnVjdCB7CiAgdW5zaWduZWQgaW50IGdzbF8w OjE7CiAgdW5zaWduZWQgaW50IGdzbF8xOjE7CiAgdW5zaWduZWQgaW50IGdzbF8yOjE7CiB9IGdz bF9ncm91cHM7Cgogc3RydWN0IGRpc3BsYXlfc3RyZWFtX2NvbXByZXNzb3IgKmRzY3NbNl07Cgog dW5zaWduZWQgaW50IHBpcGVfY291bnQ7CiB1bnNpZ25lZCBpbnQgdW5kZXJsYXlfcGlwZV9pbmRl eDsKIHVuc2lnbmVkIGludCBzdHJlYW1fZW5jX2NvdW50OwoKIHN0cnVjdCB7CiAgdW5zaWduZWQg aW50IHh0YWxpbl9jbG9ja19pbktoejsKICB1bnNpZ25lZCBpbnQgZGNjZ19yZWZfY2xvY2tfaW5L aHo7CiAgdW5zaWduZWQgaW50IGRjaHViX3JlZl9jbG9ja19pbktoejsKIH0gcmVmX2Nsb2NrczsK IHVuc2lnbmVkIGludCB0aW1pbmdfZ2VuZXJhdG9yX2NvdW50OwogdW5zaWduZWQgaW50IG1wY2Nf Y291bnQ7CgogdW5zaWduZWQgaW50IHdyaXRlYmFja19waXBlX2NvdW50OwoKCgogc3RydWN0IGNs b2NrX3NvdXJjZSAqZHBfY2xvY2tfc291cmNlOwoKIHN0cnVjdCBjbG9ja19zb3VyY2UgKmNsb2Nr X3NvdXJjZXNbN107CiB1bnNpZ25lZCBpbnQgY2xrX3NyY19jb3VudDsKCiBzdHJ1Y3QgYXVkaW8g KmF1ZGlvc1s3XTsKIHVuc2lnbmVkIGludCBhdWRpb19jb3VudDsKIHN0cnVjdCBhdWRpb19zdXBw b3J0IGF1ZGlvX3N1cHBvcnQ7Cgogc3RydWN0IGRjY2cgKmRjY2c7CiBzdHJ1Y3QgaXJxX3NlcnZp Y2UgKmlycXM7Cgogc3RydWN0IGFibSAqYWJtOwogc3RydWN0IGRtY3UgKmRtY3U7CiBzdHJ1Y3Qg ZG11Yl9wc3IgKnBzcjsKCiBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfZnVuY3MgKmZ1bmNzOwogY29u c3Qgc3RydWN0IHJlc291cmNlX2NhcHMgKnJlc19jYXA7Cgogc3RydWN0IGRkY19zZXJ2aWNlICpv ZW1fZGV2aWNlOwp9OwoKc3RydWN0IGRjbl9mZV9iYW5kd2lkdGggewogaW50IGRwcGNsa19raHo7 Cgp9OwoKc3RydWN0IHN0cmVhbV9yZXNvdXJjZSB7CiBzdHJ1Y3Qgb3V0cHV0X3BpeGVsX3Byb2Nl c3NvciAqb3BwOwogc3RydWN0IGRpc3BsYXlfc3RyZWFtX2NvbXByZXNzb3IgKmRzYzsKIHN0cnVj dCB0aW1pbmdfZ2VuZXJhdG9yICp0ZzsKIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqc3RyZWFtX2Vu YzsKIHN0cnVjdCBhdWRpbyAqYXVkaW87Cgogc3RydWN0IHBpeGVsX2Nsa19wYXJhbXMgcGl4X2Ns a19wYXJhbXM7CiBzdHJ1Y3QgZW5jb2Rlcl9pbmZvX2ZyYW1lIGVuY29kZXJfaW5mb19mcmFtZTsK CiBzdHJ1Y3QgYWJtICphYm07CgoKCiB1aW50OF90IGdzbF9ncm91cDsKfTsKCnN0cnVjdCBwbGFu ZV9yZXNvdXJjZSB7CiBzdHJ1Y3Qgc2NhbGVyX2RhdGEgc2NsX2RhdGE7CiBzdHJ1Y3QgaHVicCAq aHVicDsKIHN0cnVjdCBtZW1faW5wdXQgKm1pOwogc3RydWN0IGlucHV0X3BpeGVsX3Byb2Nlc3Nv ciAqaXBwOwogc3RydWN0IHRyYW5zZm9ybSAqeGZtOwogc3RydWN0IGRwcCAqZHBwOwogdWludDhf dCBtcGNjX2luc3Q7Cgogc3RydWN0IGRjbl9mZV9iYW5kd2lkdGggYnc7Cn07Cgp1bmlvbiBwaXBl X3VwZGF0ZV9mbGFncyB7CiBzdHJ1Y3QgewogIHVpbnQzMl90IGVuYWJsZSA6IDE7CiAgdWludDMy X3QgZGlzYWJsZSA6IDE7CiAgdWludDMyX3Qgb2RtIDogMTsKICB1aW50MzJfdCBnbG9iYWxfc3lu YyA6IDE7CiAgdWludDMyX3Qgb3BwX2NoYW5nZWQgOiAxOwogIHVpbnQzMl90IHRnX2NoYW5nZWQg OiAxOwogIHVpbnQzMl90IG1wY2MgOiAxOwogIHVpbnQzMl90IGRwcGNsayA6IDE7CiAgdWludDMy X3QgaHVicF9pbnRlcmRlcGVuZGVudCA6IDE7CiAgdWludDMyX3QgaHVicF9ycV9kbGdfdHR1IDog MTsKICB1aW50MzJfdCBnYW11dF9yZW1hcCA6IDE7CiAgdWludDMyX3Qgc2NhbGVyIDogMTsKICB1 aW50MzJfdCB2aWV3cG9ydCA6IDE7CiB9IGJpdHM7CiB1aW50MzJfdCByYXc7Cn07CgpzdHJ1Y3Qg cGlwZV9jdHggewogc3RydWN0IGRjX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKIHN0cnVjdCBk Y19zdHJlYW1fc3RhdGUgKnN0cmVhbTsKCiBzdHJ1Y3QgcGxhbmVfcmVzb3VyY2UgcGxhbmVfcmVz Owogc3RydWN0IHN0cmVhbV9yZXNvdXJjZSBzdHJlYW1fcmVzOwoKIHN0cnVjdCBjbG9ja19zb3Vy Y2UgKmNsb2NrX3NvdXJjZTsKCiBzdHJ1Y3QgcGxsX3NldHRpbmdzIHBsbF9zZXR0aW5nczsKCiB1 aW50OF90IHBpcGVfaWR4OwoKIHN0cnVjdCBwaXBlX2N0eCAqdG9wX3BpcGU7CiBzdHJ1Y3QgcGlw ZV9jdHggKmJvdHRvbV9waXBlOwogc3RydWN0IHBpcGVfY3R4ICpuZXh0X29kbV9waXBlOwogc3Ry dWN0IHBpcGVfY3R4ICpwcmV2X29kbV9waXBlOwoKCiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9k bGdfcmVnc19zdCBkbGdfcmVnczsKIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9yZWdzX3N0 IHR0dV9yZWdzOwogc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfcnFfcmVnc19zdCBycV9yZWdzOwog c3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfcGlwZV9kZXN0X3BhcmFtc19zdCBwaXBlX2RsZ19wYXJh bTsKCiB1bmlvbiBwaXBlX3VwZGF0ZV9mbGFncyB1cGRhdGVfZmxhZ3M7CiBzdHJ1Y3QgZHdiYyAq ZHdiYzsKIHN0cnVjdCBtY2lmX3diICptY2lmX3diOwp9OwoKc3RydWN0IHJlc291cmNlX2NvbnRl eHQgewogc3RydWN0IHBpcGVfY3R4IHBpcGVfY3R4WzZdOwogYm9vbCBpc19zdHJlYW1fZW5jX2Fj cXVpcmVkWzYgKiAyXTsKIGJvb2wgaXNfYXVkaW9fYWNxdWlyZWRbNl07CiB1aW50OF90IGNsb2Nr X3NvdXJjZV9yZWZfY291bnRbN107CiB1aW50OF90IGRwX2Nsb2NrX3NvdXJjZV9yZWZfY291bnQ7 CiBib29sIGlzX2RzY19hY3F1aXJlZFs2XTsKfTsKCnN0cnVjdCBkY2VfYndfb3V0cHV0IHsKIGJv b2wgY3B1Y19zdGF0ZV9jaGFuZ2VfZW5hYmxlOwogYm9vbCBjcHVwX3N0YXRlX2NoYW5nZV9lbmFi bGU7CiBib29sIHN0dXR0ZXJfbW9kZV9lbmFibGU7CiBib29sIG5icF9zdGF0ZV9jaGFuZ2VfZW5h YmxlOwogYm9vbCBhbGxfZGlzcGxheXNfaW5fc3luYzsKIHN0cnVjdCBkY2Vfd2F0ZXJtYXJrcyB1 cmdlbnRfd21fbnNbNl07CiBzdHJ1Y3QgZGNlX3dhdGVybWFya3Mgc3R1dHRlcl9leGl0X3dtX25z WzZdOwogc3RydWN0IGRjZV93YXRlcm1hcmtzIHN0dXR0ZXJfZW50cnlfd21fbnNbNl07CiBzdHJ1 Y3QgZGNlX3dhdGVybWFya3MgbmJwX3N0YXRlX2NoYW5nZV93bV9uc1s2XTsKIGludCBzY2xrX2to ejsKIGludCBzY2xrX2RlZXBfc2xlZXBfa2h6OwogaW50IHljbGtfa2h6OwogaW50IGRpc3BjbGtf a2h6OwogaW50IGJsYWNrb3V0X3JlY292ZXJ5X3RpbWVfdXM7Cn07CgpzdHJ1Y3QgZGNuX2J3X3dy aXRlYmFjayB7CiBzdHJ1Y3QgbWNpZl9hcmJfcGFyYW1zIG1jaWZfd2JfYXJiWzFdOwp9OwoKc3Ry dWN0IGRjbl9id19vdXRwdXQgewogc3RydWN0IGRjX2Nsb2NrcyBjbGs7CiBzdHJ1Y3QgZGNuX3dh dGVybWFya19zZXQgd2F0ZXJtYXJrczsKIHN0cnVjdCBkY25fYndfd3JpdGViYWNrIGJ3X3dyaXRl YmFjazsKfTsKCnVuaW9uIGJ3X291dHB1dCB7CiBzdHJ1Y3QgZGNuX2J3X291dHB1dCBkY247CiBz dHJ1Y3QgZGNlX2J3X291dHB1dCBkY2U7Cn07CgpzdHJ1Y3QgYndfY29udGV4dCB7CiB1bmlvbiBi d19vdXRwdXQgYnc7CiBzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiBkbWw7Cn07CiMgMzYxICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIK c3RydWN0IGRjX3N0YXRlIHsKIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbXNbNl07CiBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXR1cyBzdHJlYW1fc3RhdHVzWzZdOwogdWludDhfdCBzdHJlYW1f Y291bnQ7Cgogc3RydWN0IHJlc291cmNlX2NvbnRleHQgcmVzX2N0eDsKCiBzdHJ1Y3QgYndfY29u dGV4dCBid19jdHg7CgoKIHN0cnVjdCBkbV9wcF9kaXNwbGF5X2NvbmZpZ3VyYXRpb24gcHBfZGlz cGxheV9jZmc7Cgogc3RydWN0IGRjbl9id19pbnRlcm5hbF92YXJzIGRjbl9id192YXJzOwoKCiBz dHJ1Y3QgY2xrX21nciAqY2xrX21ncjsKCiBzdHJ1Y3Qga3JlZiByZWZjb3VudDsKfTsKIyAyOSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9yZXNvdXJjZS5o IiAyCgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRl L2RhbF9hc2ljX2lkLmgiIDEKIyAxNjggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9pbmNsdWRlL2RhbF9hc2ljX2lkLmgiCmVudW0gewogTlZfTkFWSTEwX1BfQTAgPSAx LAogTlZfTkFWSTEyX1BfQTAgPSAxMCwKIE5WX05BVkkxNF9NX0EwID0gMjAsCiBOVl9VTktOT1dO ID0gMHhGRgp9OwojIDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvaW5jL3Jlc291cmNlLmgiIDIKCgoKCgoKZW51bSBkY2VfdmVyc2lvbiByZXNvdXJjZV9wYXJz ZV9hc2ljX2lkKAogIHN0cnVjdCBod19hc2ljX2lkIGFzaWNfaWQpOwoKc3RydWN0IHJlc291cmNl X2NhcHMgewogaW50IG51bV90aW1pbmdfZ2VuZXJhdG9yOwogaW50IG51bV9vcHA7CiBpbnQgbnVt X3ZpZGVvX3BsYW5lOwogaW50IG51bV9hdWRpbzsKIGludCBudW1fc3RyZWFtX2VuY29kZXI7CiBp bnQgbnVtX3BsbDsKIGludCBudW1fZHdiOwogaW50IG51bV9kZGM7CiBpbnQgbnVtX3ZtaWQ7CiBp bnQgbnVtX2RzYzsKfTsKCnN0cnVjdCByZXNvdXJjZV9zdHJhcHMgewogdWludDMyX3QgaGRtaV9k aXNhYmxlOwogdWludDMyX3QgZGNfcGluc3RyYXBzX2F1ZGlvOwogdWludDMyX3QgYXVkaW9fc3Ry ZWFtX251bWJlcjsKfTsKCnN0cnVjdCByZXNvdXJjZV9jcmVhdGVfZnVuY3Mgewogdm9pZCAoKnJl YWRfZGNlX3N0cmFwcykoCiAgIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHN0cnVjdCByZXNvdXJj ZV9zdHJhcHMgKnN0cmFwcyk7Cgogc3RydWN0IGF1ZGlvICooKmNyZWF0ZV9hdWRpbykoCiAgIHN0 cnVjdCBkY19jb250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCBpbnN0KTsKCiBzdHJ1Y3Qgc3RyZWFt X2VuY29kZXIgKigqY3JlYXRlX3N0cmVhbV9lbmNvZGVyKSgKICAgZW51bSBlbmdpbmVfaWQgZW5n X2lkLCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsKCiBzdHJ1Y3QgZGNlX2h3c2VxICooKmNyZWF0 ZV9od3NlcSkoCiAgIHN0cnVjdCBkY19jb250ZXh0ICpjdHgpOwp9OwoKYm9vbCByZXNvdXJjZV9j b25zdHJ1Y3QoCiB1bnNpZ25lZCBpbnQgbnVtX3ZpcnR1YWxfbGlua3MsCiBzdHJ1Y3QgZGMgKmRj LAogc3RydWN0IHJlc291cmNlX3Bvb2wgKnBvb2wsCiBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfY3Jl YXRlX2Z1bmNzICpjcmVhdGVfZnVuY3MpOwoKc3RydWN0IHJlc291cmNlX3Bvb2wgKmRjX2NyZWF0 ZV9yZXNvdXJjZV9wb29sKHN0cnVjdCBkYyAqZGMsCiAgICAgICAgICAgY29uc3Qgc3RydWN0IGRj X2luaXRfZGF0YSAqaW5pdF9kYXRhLAogICAgICAgICAgIGVudW0gZGNlX3ZlcnNpb24gZGNfdmVy c2lvbik7Cgp2b2lkIGRjX2Rlc3Ryb3lfcmVzb3VyY2VfcG9vbChzdHJ1Y3QgZGMgKmRjKTsKCmVu dW0gZGNfc3RhdHVzIHJlc291cmNlX21hcF9wb29sX3Jlc291cmNlcygKICBjb25zdCBzdHJ1Y3Qg ZGMgKmRjLAogIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCwKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0 YXRlICpzdHJlYW0pOwoKYm9vbCByZXNvdXJjZV9idWlsZF9zY2FsaW5nX3BhcmFtcyhzdHJ1Y3Qg cGlwZV9jdHggKnBpcGVfY3R4KTsKCmVudW0gZGNfc3RhdHVzIHJlc291cmNlX2J1aWxkX3NjYWxp bmdfcGFyYW1zX2Zvcl9jb250ZXh0KAogIGNvbnN0IHN0cnVjdCBkYyAqZGMsCiAgc3RydWN0IGRj X3N0YXRlICpjb250ZXh0KTsKCnZvaWQgcmVzb3VyY2VfYnVpbGRfaW5mb19mcmFtZShzdHJ1Y3Qg cGlwZV9jdHggKnBpcGVfY3R4KTsKCnZvaWQgcmVzb3VyY2VfdW5yZWZlcmVuY2VfY2xvY2tfc291 cmNlKAogIHN0cnVjdCByZXNvdXJjZV9jb250ZXh0ICpyZXNfY3R4LAogIGNvbnN0IHN0cnVjdCBy ZXNvdXJjZV9wb29sICpwb29sLAogIHN0cnVjdCBjbG9ja19zb3VyY2UgKmNsb2NrX3NvdXJjZSk7 Cgp2b2lkIHJlc291cmNlX3JlZmVyZW5jZV9jbG9ja19zb3VyY2UoCiAgc3RydWN0IHJlc291cmNl X2NvbnRleHQgKnJlc19jdHgsCiAgY29uc3Qgc3RydWN0IHJlc291cmNlX3Bvb2wgKnBvb2wsCiAg c3RydWN0IGNsb2NrX3NvdXJjZSAqY2xvY2tfc291cmNlKTsKCmludCByZXNvdXJjZV9nZXRfY2xv Y2tfc291cmNlX3JlZmVyZW5jZSgKICBzdHJ1Y3QgcmVzb3VyY2VfY29udGV4dCAqcmVzX2N0eCwK ICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqcG9vbCwKICBzdHJ1Y3QgY2xvY2tfc291cmNl ICpjbG9ja19zb3VyY2UpOwoKYm9vbCByZXNvdXJjZV9hcmVfc3RyZWFtc190aW1pbmdfc3luY2hy b25pemFibGUoCiAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtMSwKICBzdHJ1Y3QgZGNf c3RyZWFtX3N0YXRlICpzdHJlYW0yKTsKCnN0cnVjdCBjbG9ja19zb3VyY2UgKnJlc291cmNlX2Zp bmRfdXNlZF9jbGtfc3JjX2Zvcl9zaGFyaW5nKAogIHN0cnVjdCByZXNvdXJjZV9jb250ZXh0ICpy ZXNfY3R4LAogIHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoKc3RydWN0IGNsb2NrX3NvdXJj ZSAqZGNfcmVzb3VyY2VfZmluZF9maXJzdF9mcmVlX3BsbCgKICBzdHJ1Y3QgcmVzb3VyY2VfY29u dGV4dCAqcmVzX2N0eCwKICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqcG9vbCk7CgpzdHJ1 Y3QgcGlwZV9jdHggKnJlc291cmNlX2dldF9oZWFkX3BpcGVfZm9yX3N0cmVhbSgKICBzdHJ1Y3Qg cmVzb3VyY2VfY29udGV4dCAqcmVzX2N0eCwKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJl YW0pOwoKYm9vbCByZXNvdXJjZV9hdHRhY2hfc3VyZmFjZXNfdG9fY29udGV4dCgKICBzdHJ1Y3Qg ZGNfcGxhbmVfc3RhdGUgKmNvbnN0ICpwbGFuZV9zdGF0ZSwKICBpbnQgc3VyZmFjZV9jb3VudCwK ICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpkY19zdHJlYW0sCiAgc3RydWN0IGRjX3N0YXRlICpj b250ZXh0LAogIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sKTsKCnN0cnVjdCBwaXBl X2N0eCAqZmluZF9pZGxlX3NlY29uZGFyeV9waXBlKAogIHN0cnVjdCByZXNvdXJjZV9jb250ZXh0 ICpyZXNfY3R4LAogIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sLAogIGNvbnN0IHN0 cnVjdCBwaXBlX2N0eCAqcHJpbWFyeV9waXBlKTsKCmJvb2wgcmVzb3VyY2VfaXNfc3RyZWFtX3Vu Y2hhbmdlZCgKIHN0cnVjdCBkY19zdGF0ZSAqb2xkX2NvbnRleHQsIHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKnN0cmVhbSk7Cgpib29sIHJlc291cmNlX3ZhbGlkYXRlX2F0dGFjaF9zdXJmYWNlcygK ICBjb25zdCBzdHJ1Y3QgZGNfdmFsaWRhdGlvbl9zZXQgc2V0W10sCiAgaW50IHNldF9jb3VudCwK ICBjb25zdCBzdHJ1Y3QgZGNfc3RhdGUgKm9sZF9jb250ZXh0LAogIHN0cnVjdCBkY19zdGF0ZSAq Y29udGV4dCwKICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqcG9vbCk7Cgp2b2lkIHJlc291 cmNlX3ZhbGlkYXRlX2N0eF91cGRhdGVfcG9pbnRlcl9hZnRlcl9jb3B5KAogIGNvbnN0IHN0cnVj dCBkY19zdGF0ZSAqc3JjX2N0eCwKICBzdHJ1Y3QgZGNfc3RhdGUgKmRzdF9jdHgpOwoKZW51bSBk Y19zdGF0dXMgcmVzb3VyY2VfbWFwX2Nsb2NrX3Jlc291cmNlcygKICBjb25zdCBzdHJ1Y3QgZGMg KmRjLAogIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCwKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRl ICpzdHJlYW0pOwoKZW51bSBkY19zdGF0dXMgcmVzb3VyY2VfbWFwX3BoeV9jbG9ja19yZXNvdXJj ZXMoCiAgY29uc3Qgc3RydWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCiAg c3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKCmJvb2wgcGlwZV9uZWVkX3JlcHJvZ3Jh bSgKICBzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4X29sZCwKICBzdHJ1Y3QgcGlwZV9jdHggKnBp cGVfY3R4KTsKCnZvaWQgcmVzb3VyY2VfYnVpbGRfYml0X2RlcHRoX3JlZHVjdGlvbl9wYXJhbXMo c3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAogIHN0cnVjdCBiaXRfZGVwdGhfcmVkdWN0 aW9uX3BhcmFtcyAqZm10X2JpdF9kZXB0aCk7Cgp2b2lkIHVwZGF0ZV9hdWRpb191c2FnZSgKICBz dHJ1Y3QgcmVzb3VyY2VfY29udGV4dCAqcmVzX2N0eCwKICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2Vf cG9vbCAqcG9vbCwKICBzdHJ1Y3QgYXVkaW8gKmF1ZGlvLAogIGJvb2wgYWNxdWlyZWQpOwoKdW5z aWduZWQgaW50IHJlc291cmNlX3BpeGVsX2Zvcm1hdF90b19icHAoZW51bSBzdXJmYWNlX3BpeGVs X2Zvcm1hdCBmb3JtYXQpOwoKdm9pZCBnZXRfYXVkaW9fY2hlY2soc3RydWN0IGF1ZGlvX2luZm8g KmF1ZF9tb2RlcywKIHN0cnVjdCBhdWRpb19jaGVjayAqYXVkX2Noayk7CiMgMzcgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvY2xrX21ncl9pbnRlcm5h bC5oIiAyCgoKCmVudW0gZGVudGlzdF9iYXNlX2RpdmlkZXJfaWQgewogREVOVElTVF9CQVNFX0RJ RF8xID0gMHgwOCwKIERFTlRJU1RfQkFTRV9ESURfMiA9IDB4NDAsCiBERU5USVNUX0JBU0VfRElE XzMgPSAweDYwLAogREVOVElTVF9CQVNFX0RJRF80ID0gMHg3ZSwKIERFTlRJU1RfTUFYX0RJRCA9 IDB4N2YKfTsKCgplbnVtIGRlbnRpc3RfZGl2aWRlcl9yYW5nZSB7CiBERU5USVNUX0RJVklERVJf UkFOR0VfMV9TVEFSVCA9IDgsCiBERU5USVNUX0RJVklERVJfUkFOR0VfMV9TVEVQID0gMSwKIERF TlRJU1RfRElWSURFUl9SQU5HRV8yX1NUQVJUID0gNjQsCiBERU5USVNUX0RJVklERVJfUkFOR0Vf Ml9TVEVQID0gMiwKIERFTlRJU1RfRElWSURFUl9SQU5HRV8zX1NUQVJUID0gMTI4LAogREVOVElT VF9ESVZJREVSX1JBTkdFXzNfU1RFUCA9IDQsCiBERU5USVNUX0RJVklERVJfUkFOR0VfNF9TVEFS VCA9IDI0OCwKIERFTlRJU1RfRElWSURFUl9SQU5HRV80X1NURVAgPSAyNjQsCiBERU5USVNUX0RJ VklERVJfUkFOR0VfU0NBTEVfRkFDVE9SID0gNAp9OwojIDE1MSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9jbGtfbWdyX2ludGVybmFsLmgiCnN0cnVj dCBjbGtfbWdyX3NoaWZ0IHsKIHVpbnQ4X3QgRFBSRUZDTEtfU1JDX1NFTDsgdWludDhfdCBERU5U SVNUX0RQUkVGQ0xLX1dESVZJREVSOyB1aW50OF90IERFTlRJU1RfRElTUENMS19XRElWSURFUjsg dWludDhfdCBERU5USVNUX0RJU1BDTEtfQ0hHX0RPTkU7CiB1aW50OF90IERFTlRJU1RfRFBQQ0xL X1dESVZJREVSOyB1aW50OF90IERFTlRJU1RfRFBQQ0xLX0NIR19ET05FOyB1aW50OF90IEZiTXVs dF9pbnQ7IHVpbnQ4X3QgRmJNdWx0X2ZyYWM7CiB1aW50MzJfdCBDT05URU5UOwp9OwoKc3RydWN0 IGNsa19tZ3JfbWFzayB7CiB1aW50MzJfdCBEUFJFRkNMS19TUkNfU0VMOyB1aW50MzJfdCBERU5U SVNUX0RQUkVGQ0xLX1dESVZJREVSOyB1aW50MzJfdCBERU5USVNUX0RJU1BDTEtfV0RJVklERVI7 IHVpbnQzMl90IERFTlRJU1RfRElTUENMS19DSEdfRE9ORTsKIHVpbnQzMl90IERFTlRJU1RfRFBQ Q0xLX1dESVZJREVSOyB1aW50MzJfdCBERU5USVNUX0RQUENMS19DSEdfRE9ORTsgdWludDMyX3Qg RmJNdWx0X2ludDsgdWludDMyX3QgRmJNdWx0X2ZyYWM7CiB1aW50MzJfdCBDT05URU5UOwp9OwoK c3RydWN0IGNsa19tZ3JfcmVnaXN0ZXJzIHsKIHVpbnQzMl90IERQUkVGQ0xLX0NOVEw7CiB1aW50 MzJfdCBERU5USVNUX0RJU1BDTEtfQ05UTDsKCiB1aW50MzJfdCBDTEszX0NMSzJfREZTX0NOVEw7 CiB1aW50MzJfdCBDTEszX0NMS19QTExfUkVROwoKIHVpbnQzMl90IE1QMV9TTU5fQzJQTVNHXzY3 OwogdWludDMyX3QgTVAxX1NNTl9DMlBNU0dfODM7CiB1aW50MzJfdCBNUDFfU01OX0MyUE1TR185 MTsKfTsKCmVudW0gY2xvY2tfdHlwZSB7CiBjbG9ja190eXBlX2Rpc3BjbGsgPSAxLAogY2xvY2tf dHlwZV9kY2ZjbGssCiBjbG9ja190eXBlX3NvY2NsaywKIGNsb2NrX3R5cGVfcGl4ZWxjbGssCiBj bG9ja190eXBlX3BoeWNsaywKIGNsb2NrX3R5cGVfZHBwY2xrLAogY2xvY2tfdHlwZV9mY2xrLAog Y2xvY2tfdHlwZV9kY2Zkc2NsaywKIGNsb2NrX3R5cGVfZHNjY2xrLAogY2xvY2tfdHlwZV91Y2xr LAogY2xvY2tfdHlwZV9kcmFtY2xrLAp9OwoKCnN0cnVjdCBzdGF0ZV9kZXBlbmRlbnRfY2xvY2tz IHsKIGludCBkaXNwbGF5X2Nsa19raHo7CiBpbnQgcGl4ZWxfY2xrX2toejsKfTsKCnN0cnVjdCBj bGtfbWdyX2ludGVybmFsIHsKIHN0cnVjdCBjbGtfbWdyIGJhc2U7CiBpbnQgc211X3ZlcjsKIHN0 cnVjdCBwcF9zbXVfZnVuY3MgKnBwX3NtdTsKIHN0cnVjdCBjbGtfbWdyX2ludGVybmFsX2Z1bmNz ICpmdW5jczsKCiBzdHJ1Y3QgZGNjZyAqZGNjZzsKCgoKCgoKCiBjb25zdCBzdHJ1Y3QgY2xrX21n cl9yZWdpc3RlcnMgKnJlZ3M7CiBjb25zdCBzdHJ1Y3QgY2xrX21ncl9zaGlmdCAqY2xrX21ncl9z aGlmdDsKIGNvbnN0IHN0cnVjdCBjbGtfbWdyX21hc2sgKmNsa19tZ3JfbWFzazsKCiBzdHJ1Y3Qg c3RhdGVfZGVwZW5kZW50X2Nsb2NrcyBtYXhfY2xrc19ieV9zdGF0ZVtETV9QUF9DTE9DS1NfTUFY X1NUQVRFU107CgoKCiBib29sIGRmc19ieXBhc3NfZW5hYmxlZDsKCiBib29sIGRmc19ieXBhc3Nf YWN0aXZlOwoKIHVpbnQzMl90IGRmc19yZWZfZnJlcV9raHo7CgoKCgogaW50IGRmc19ieXBhc3Nf ZGlzcF9jbGs7CgoKCgoKCiBib29sIHNzX29uX2RwcmVmY2xrOwoKCgoKCgoKIGJvb2wgeGdtaV9l bmFibGVkOwojIDI1MiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2luYy9ody9jbGtfbWdyX2ludGVybmFsLmgiCiBpbnQgZHByZWZjbGtfc3NfcGVyY2VudGFnZTsK CgoKCgoKIGludCBkcHJlZmNsa19zc19kaXZpZGVyOwoKIGVudW0gZG1fcHBfY2xvY2tzX3N0YXRl IG1heF9jbGtzX3N0YXRlOwogZW51bSBkbV9wcF9jbG9ja3Nfc3RhdGUgY3VyX21pbl9jbGtzX3N0 YXRlOwp9OwoKc3RydWN0IGNsa19tZ3JfaW50ZXJuYWxfZnVuY3MgewogaW50ICgqc2V0X2Rpc3Bj bGspKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyLCBpbnQgcmVxdWVzdGVkX2Rpc3Bj bGtfa2h6KTsKIGludCAoKnNldF9kcHJlZmNsaykoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNs a19tZ3IpOwp9OwojIDI3OCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2RjL2luYy9ody9jbGtfbWdyX2ludGVybmFsLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgc2hvdWxkX3NldF9jbG9jayhib29s IHNhZmVfdG9fbG93ZXIsIGludCBjYWxjX2NsaywgaW50IGN1cl9jbGspCnsKIHJldHVybiAoKHNh ZmVfdG9fbG93ZXIgJiYgY2FsY19jbGsgPCBjdXJfY2xrKSB8fCBjYWxjX2NsayA+IGN1cl9jbGsp Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIHNob3VsZF91cGRhdGVfcHN0YXRlX3N1cHBvcnQoYm9vbCBzYWZlX3RvX2xvd2Vy LCBib29sIGNhbGNfc3VwcG9ydCwgYm9vbCBjdXJfc3VwcG9ydCkKewogaWYgKGN1cl9zdXBwb3J0 ICE9IGNhbGNfc3VwcG9ydCkgewogIGlmIChjYWxjX3N1cHBvcnQgPT0gdHJ1ZSAmJiBzYWZlX3Rv X2xvd2VyKQogICByZXR1cm4gdHJ1ZTsKICBlbHNlIGlmIChjYWxjX3N1cHBvcnQgPT0gZmFsc2Ug JiYgIXNhZmVfdG9fbG93ZXIpCiAgIHJldHVybiB0cnVlOwogfQoKIHJldHVybiBmYWxzZTsKfQoK aW50IGNsa19tZ3JfaGVscGVyX2dldF9hY3RpdmVfZGlzcGxheV9jbnQoCiAgc3RydWN0IGRjICpk YywKICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwojIDI4ICJkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21nci5jIiAyCgoKIyAx ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24y MC9kY24yMF9jbGtfbWdyLmgiIDEKIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjAvZGNuMjBfY2xrX21nci5oIgp2b2lkIGRjbjJfdXBk YXRlX2Nsb2NrcyhzdHJ1Y3QgY2xrX21nciAqZGNjZywKICAgc3RydWN0IGRjX3N0YXRlICpjb250 ZXh0LAogICBib29sIHNhZmVfdG9fbG93ZXIpOwoKdm9pZCBkY24yX3VwZGF0ZV9jbG9ja3NfZnBn YShzdHJ1Y3QgY2xrX21nciAqY2xrX21nciwKICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0LAog ICBib29sIHNhZmVfdG9fbG93ZXIpOwp2b2lkIGRjbjIwX3VwZGF0ZV9jbG9ja3NfdXBkYXRlX2Rw cF9kdG8oc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IsCiAgc3RydWN0IGRjX3N0YXRl ICpjb250ZXh0LCBib29sIHNhZmVfdG9fbG93ZXIpOwoKdm9pZCBkY24yX2luaXRfY2xvY2tzKHN0 cnVjdCBjbGtfbWdyICpjbGtfbWdyKTsKCnZvaWQgZGNuMjBfY2xrX21ncl9jb25zdHJ1Y3Qoc3Ry dWN0IGRjX2NvbnRleHQgKmN0eCwKICBzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciwK ICBzdHJ1Y3QgcHBfc211X2Z1bmNzICpwcF9zbXUsCiAgc3RydWN0IGRjY2cgKmRjY2cpOwoKdWlu dDMyX3QgZGVudGlzdF9nZXRfZGlkX2Zyb21fZGl2aWRlcihpbnQgZGl2aWRlcik7Cgp2b2lkIGRj bjJfZ2V0X2Nsb2NrKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyLAogIHN0cnVjdCBkY19zdGF0ZSAq Y29udGV4dCwKICAgZW51bSBkY19jbG9ja190eXBlIGNsb2NrX3R5cGUsCiAgIHN0cnVjdCBkY19j bG9ja19jb25maWcgKmNsb2NrX2NmZyk7Cgp2b2lkIGRjbjIwX3VwZGF0ZV9jbG9ja3NfdXBkYXRl X2RlbnRpc3Qoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpOwoKdm9pZCBkY24yX3Jl YWRfY2xvY2tzX2Zyb21faHdfZGVudGlzdChzdHJ1Y3QgY2xrX21nciAqY2xrX21ncl9iYXNlKTsK IyAzMSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2Rj bjIxL3JuX2Nsa19tZ3IuYyIgMgojIDEgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmgiIDEKIyAyOSAiZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuaCIK IyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Ns a19tZ3IuaCIgMQojIDMwICJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21nci5oIiAyCgoKc3RydWN0IHJuX2Nsa19yZWdpc3RlcnMg ewogdWludDMyX3QgQ0xLMV9DTEswX0NVUlJFTlRfQ05UOwp9OwoKdm9pZCBybl9jbGtfbWdyX2Nv bnN0cnVjdChzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogIHN0cnVjdCBjbGtfbWdyX2ludGVybmFs ICpjbGtfbWdyLAogIHN0cnVjdCBwcF9zbXVfZnVuY3MgKnBwX3NtdSwKICBzdHJ1Y3QgZGNjZyAq ZGNjZyk7CiMgMzIgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xr X21nci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKCgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjZTEwMC9kY2VfY2xrX21nci5oIiAxCiMgMzMg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjZTEw MC9kY2VfY2xrX21nci5oIgppbnQgZGNlX2FkanVzdF9kcF9yZWZfZnJlcV9mb3Jfc3Moc3RydWN0 IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3JfZGNlLCBpbnQgZHBfcmVmX2Nsa19raHopOwppbnQg ZGNlX2dldF9kcF9yZWZfZnJlcV9raHooc3RydWN0IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSk7CmVu dW0gZG1fcHBfY2xvY2tzX3N0YXRlIGRjZV9nZXRfcmVxdWlyZWRfY2xvY2tzX3N0YXRlKAogc3Ry dWN0IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSwKIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7Cgp1 aW50MzJfdCBkY2VfZ2V0X21heF9waXhlbF9jbG9ja19mb3JfYWxsX3BhdGhzKHN0cnVjdCBkY19z dGF0ZSAqY29udGV4dCk7CgoKdm9pZCBkY2VfY2xrX21ncl9jb25zdHJ1Y3QoCiAgc3RydWN0IGRj X2NvbnRleHQgKmN0eCwKICBzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21ncl9kY2UpOwoK dm9pZCBkY2VfY2xvY2tfcmVhZF9zc19pbmZvKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpkY2Nn X2RjZSk7CgppbnQgZGNlMTJfZ2V0X2RwX3JlZl9mcmVxX2toeihzdHJ1Y3QgY2xrX21nciAqZGNj Zyk7CgppbnQgZGNlX3NldF9jbG9jaygKIHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jhc2UsCiBp bnQgcmVxdWVzdGVkX2Nsa19raHopOwoKCnZvaWQgZGNlX2Nsa19tZ3JfZGVzdHJveShzdHJ1Y3Qg Y2xrX21nciAqKmNsa19tZ3IpOwoKaW50IGRlbnRpc3RfZ2V0X2RpdmlkZXJfZnJvbV9kaWQoaW50 IGRpZCk7CiMgMzUgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xr X21nci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKIyAxICJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21ncl92Ymlvc19zbXUuaCIgMQoj IDI5ICJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNu MjEvcm5fY2xrX21ncl92Ymlvc19zbXUuaCIKaW50IHJuX3ZiaW9zX3NtdV9nZXRfc211X3ZlcnNp b24oc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpOwppbnQgcm5fdmJpb3Nfc211X3Nl dF9kaXNwY2xrKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyLCBpbnQgcmVxdWVzdGVk X2Rpc3BjbGtfa2h6KTsKaW50IHJuX3ZiaW9zX3NtdV9zZXRfZHByZWZjbGsoc3RydWN0IGNsa19t Z3JfaW50ZXJuYWwgKmNsa19tZ3IpOwppbnQgcm5fdmJpb3Nfc211X3NldF9oYXJkX21pbl9kY2Zj bGsoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IsIGludCByZXF1ZXN0ZWRfZGNmY2xr X2toeik7CmludCBybl92Ymlvc19zbXVfc2V0X21pbl9kZWVwX3NsZWVwX2RjZmNsayhzdHJ1Y3Qg Y2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciwgaW50IHJlcXVlc3RlZF9taW5fZHNfZGNmY2xrX2to eik7CnZvaWQgcm5fdmJpb3Nfc211X3NldF9waHljbGsoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwg KmNsa19tZ3IsIGludCByZXF1ZXN0ZWRfcGh5Y2xrX2toeik7CmludCBybl92Ymlvc19zbXVfc2V0 X2RwcGNsayhzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciwgaW50IHJlcXVlc3RlZF9k cHBfa2h6KTsKdm9pZCBybl92Ymlvc19zbXVfc2V0X2Rjbl9sb3dfcG93ZXJfc3RhdGUoc3RydWN0 IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IsIGludCBkaXNwbGF5X2NvdW50KTsKdm9pZCBybl92 Ymlvc19zbXVfZW5hYmxlXzQ4bWh6X3RtZHBfcmVmY2xrX3B3cmR3bihzdHJ1Y3QgY2xrX21ncl9p bnRlcm5hbCAqY2xrX21nciwgYm9vbCBlbmFibGUpOwp2b2lkIHJuX3ZiaW9zX3NtdV9lbmFibGVf cG1lX3dhKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyKTsKIyAzNiAiZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3Iu YyIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMv cmVnX2hlbHBlci5oIiAxCiMgMzkxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvaW5jL3JlZ19oZWxwZXIuaCIKdWludDMyX3QgZ2VuZXJpY19yZWdfZ2V0KGNvbnN0 IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVpbnQzMl90IGFkZHIsCiAgdWludDhfdCBzaGlmdCwg dWludDMyX3QgbWFzaywgdWludDMyX3QgKmZpZWxkX3ZhbHVlKTsKCnVpbnQzMl90IGdlbmVyaWNf cmVnX2dldDIoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwgdWludDMyX3QgYWRkciwKICB1 aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTEsCiAg dWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJfdCAqZmllbGRfdmFsdWUyKTsK CnVpbnQzMl90IGdlbmVyaWNfcmVnX2dldDMoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwg dWludDMyX3QgYWRkciwKICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90 ICpmaWVsZF92YWx1ZTEsCiAgdWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJf dCAqZmllbGRfdmFsdWUyLAogIHVpbnQ4X3Qgc2hpZnQzLCB1aW50MzJfdCBtYXNrMywgdWludDMy X3QgKmZpZWxkX3ZhbHVlMyk7Cgp1aW50MzJfdCBnZW5lcmljX3JlZ19nZXQ0KGNvbnN0IHN0cnVj dCBkY19jb250ZXh0ICpjdHgsIHVpbnQzMl90IGFkZHIsCiAgdWludDhfdCBzaGlmdDEsIHVpbnQz Ml90IG1hc2sxLCB1aW50MzJfdCAqZmllbGRfdmFsdWUxLAogIHVpbnQ4X3Qgc2hpZnQyLCB1aW50 MzJfdCBtYXNrMiwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMiwKICB1aW50OF90IHNoaWZ0MywgdWlu dDMyX3QgbWFzazMsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTMsCiAgdWludDhfdCBzaGlmdDQsIHVp bnQzMl90IG1hc2s0LCB1aW50MzJfdCAqZmllbGRfdmFsdWU0KTsKCnVpbnQzMl90IGdlbmVyaWNf cmVnX2dldDUoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwgdWludDMyX3QgYWRkciwKICB1 aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTEsCiAg dWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJfdCAqZmllbGRfdmFsdWUyLAog IHVpbnQ4X3Qgc2hpZnQzLCB1aW50MzJfdCBtYXNrMywgdWludDMyX3QgKmZpZWxkX3ZhbHVlMywK ICB1aW50OF90IHNoaWZ0NCwgdWludDMyX3QgbWFzazQsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTQs CiAgdWludDhfdCBzaGlmdDUsIHVpbnQzMl90IG1hc2s1LCB1aW50MzJfdCAqZmllbGRfdmFsdWU1 KTsKCnVpbnQzMl90IGdlbmVyaWNfcmVnX2dldDYoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0 eCwgdWludDMyX3QgYWRkciwKICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQz Ml90ICpmaWVsZF92YWx1ZTEsCiAgdWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50 MzJfdCAqZmllbGRfdmFsdWUyLAogIHVpbnQ4X3Qgc2hpZnQzLCB1aW50MzJfdCBtYXNrMywgdWlu dDMyX3QgKmZpZWxkX3ZhbHVlMywKICB1aW50OF90IHNoaWZ0NCwgdWludDMyX3QgbWFzazQsIHVp bnQzMl90ICpmaWVsZF92YWx1ZTQsCiAgdWludDhfdCBzaGlmdDUsIHVpbnQzMl90IG1hc2s1LCB1 aW50MzJfdCAqZmllbGRfdmFsdWU1LAogIHVpbnQ4X3Qgc2hpZnQ2LCB1aW50MzJfdCBtYXNrNiwg dWludDMyX3QgKmZpZWxkX3ZhbHVlNik7Cgp1aW50MzJfdCBnZW5lcmljX3JlZ19nZXQ3KGNvbnN0 IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVpbnQzMl90IGFkZHIsCiAgdWludDhfdCBzaGlmdDEs IHVpbnQzMl90IG1hc2sxLCB1aW50MzJfdCAqZmllbGRfdmFsdWUxLAogIHVpbnQ4X3Qgc2hpZnQy LCB1aW50MzJfdCBtYXNrMiwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMiwKICB1aW50OF90IHNoaWZ0 MywgdWludDMyX3QgbWFzazMsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTMsCiAgdWludDhfdCBzaGlm dDQsIHVpbnQzMl90IG1hc2s0LCB1aW50MzJfdCAqZmllbGRfdmFsdWU0LAogIHVpbnQ4X3Qgc2hp ZnQ1LCB1aW50MzJfdCBtYXNrNSwgdWludDMyX3QgKmZpZWxkX3ZhbHVlNSwKICB1aW50OF90IHNo aWZ0NiwgdWludDMyX3QgbWFzazYsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTYsCiAgdWludDhfdCBz aGlmdDcsIHVpbnQzMl90IG1hc2s3LCB1aW50MzJfdCAqZmllbGRfdmFsdWU3KTsKCnVpbnQzMl90 IGdlbmVyaWNfcmVnX2dldDgoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwgdWludDMyX3Qg YWRkciwKICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90ICpmaWVsZF92 YWx1ZTEsCiAgdWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJfdCAqZmllbGRf dmFsdWUyLAogIHVpbnQ4X3Qgc2hpZnQzLCB1aW50MzJfdCBtYXNrMywgdWludDMyX3QgKmZpZWxk X3ZhbHVlMywKICB1aW50OF90IHNoaWZ0NCwgdWludDMyX3QgbWFzazQsIHVpbnQzMl90ICpmaWVs ZF92YWx1ZTQsCiAgdWludDhfdCBzaGlmdDUsIHVpbnQzMl90IG1hc2s1LCB1aW50MzJfdCAqZmll bGRfdmFsdWU1LAogIHVpbnQ4X3Qgc2hpZnQ2LCB1aW50MzJfdCBtYXNrNiwgdWludDMyX3QgKmZp ZWxkX3ZhbHVlNiwKICB1aW50OF90IHNoaWZ0NywgdWludDMyX3QgbWFzazcsIHVpbnQzMl90ICpm aWVsZF92YWx1ZTcsCiAgdWludDhfdCBzaGlmdDgsIHVpbnQzMl90IG1hc2s4LCB1aW50MzJfdCAq ZmllbGRfdmFsdWU4KTsKIyA0ODEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvcmVnX2hlbHBlci5oIgp2b2lkIGdlbmVyaWNfd3JpdGVfaW5kaXJlY3RfcmVn KGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiAgdWludDMyX3QgYWRkcl9pbmRleCwgdWlu dDMyX3QgYWRkcl9kYXRhLAogIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkYXRhKTsKCnVpbnQz Ml90IGdlbmVyaWNfcmVhZF9pbmRpcmVjdF9yZWcoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0 eCwKICB1aW50MzJfdCBhZGRyX2luZGV4LCB1aW50MzJfdCBhZGRyX2RhdGEsCiAgdWludDMyX3Qg aW5kZXgpOwoKdWludDMyX3QgZ2VuZXJpY19pbmRpcmVjdF9yZWdfZ2V0KGNvbnN0IHN0cnVjdCBk Y19jb250ZXh0ICpjdHgsCiAgdWludDMyX3QgYWRkcl9pbmRleCwgdWludDMyX3QgYWRkcl9kYXRh LAogIHVpbnQzMl90IGluZGV4LCBpbnQgbiwKICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFz azEsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTEsCiAgLi4uKTsKCnVpbnQzMl90IGdlbmVyaWNfaW5k aXJlY3RfcmVnX3VwZGF0ZV9leChjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogIHVpbnQz Ml90IGFkZHJfaW5kZXgsIHVpbnQzMl90IGFkZHJfZGF0YSwKICB1aW50MzJfdCBpbmRleCwgdWlu dDMyX3QgcmVnX3ZhbCwgaW50IG4sCiAgdWludDhfdCBzaGlmdDEsIHVpbnQzMl90IG1hc2sxLCB1 aW50MzJfdCBmaWVsZF92YWx1ZTEsCiAgLi4uKTsKIyAzNyAiZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIgMgojIDEgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5o IiAxCiMgMzggImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21n ci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvZG1faGVscGVycy5oIiAxCiMgMzQgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9oZWxwZXJzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjLmgiIDEKIyAzNSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX2hlbHBlcnMuaCIgMgoKc3RydWN0IGRwX21z dF9zdHJlYW1fYWxsb2NhdGlvbl90YWJsZTsKCmVudW0gZGNfZWRpZF9zdGF0dXMgZG1faGVscGVy c19wYXJzZV9lZGlkX2NhcHMoCiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogY29uc3Qgc3RydWN0 IGRjX2VkaWQgKmVkaWQsCiBzdHJ1Y3QgZGNfZWRpZF9jYXBzICplZGlkX2NhcHMpOwoKCgoKCnZv aWQgZG1faGVscGVyc19kcF91cGRhdGVfYnJhbmNoX2luZm8oCiAgc3RydWN0IGRjX2NvbnRleHQg KmN0eCwKICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluayk7CgoKCgpib29sIGRtX2hlbHBlcnNf ZHBfbXN0X3dyaXRlX3BheWxvYWRfYWxsb2NhdGlvbl90YWJsZSgKICBzdHJ1Y3QgZGNfY29udGV4 dCAqY3R4LAogIGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKICBzdHJ1Y3Qg ZHBfbXN0X3N0cmVhbV9hbGxvY2F0aW9uX3RhYmxlICpwcm9wb3NlZF90YWJsZSwKICBib29sIGVu YWJsZSk7CgoKCgp2b2lkIGRtX2hlbHBlcnNfZHBfbXN0X3BvbGxfcGVuZGluZ19kb3duX3JlcGx5 KAogc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKIGNvbnN0IHN0cnVjdCBkY19saW5rICpsaW5rKTsK CgoKCnZvaWQgZG1faGVscGVyc19kcF9tc3RfY2xlYXJfcGF5bG9hZF9hbGxvY2F0aW9uX3RhYmxl KAogc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKIGNvbnN0IHN0cnVjdCBkY19saW5rICpsaW5rKTsK CgoKCmVudW0gYWN0X3JldHVybl9zdGF0dXMgZG1faGVscGVyc19kcF9tc3RfcG9sbF9mb3JfYWxs b2NhdGlvbl9jaGFuZ2VfdHJpZ2dlcigKICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogIGNvbnN0 IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7CgoKCmJvb2wgZG1faGVscGVyc19kcF9t c3Rfc2VuZF9wYXlsb2FkX2FsbG9jYXRpb24oCiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKICBj b25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgYm9vbCBlbmFibGUpOwoKYm9v bCBkbV9oZWxwZXJzX2RwX21zdF9zdGFydF90b3BfbWdyKAogIHN0cnVjdCBkY19jb250ZXh0ICpj dHgsCiAgY29uc3Qgc3RydWN0IGRjX2xpbmsgKmxpbmssCiAgYm9vbCBib290KTsKCnZvaWQgZG1f aGVscGVyc19kcF9tc3Rfc3RvcF90b3BfbWdyKAogIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiAg Y29uc3Qgc3RydWN0IGRjX2xpbmsgKmxpbmspOwoKCgpib29sIGRtX2hlbHBlcnNfZHBfcmVhZF9k cGNkKAogIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiAgY29uc3Qgc3RydWN0IGRjX2xpbmsgKmxp bmssCiAgdWludDMyX3QgYWRkcmVzcywKICB1aW50OF90ICpkYXRhLAogIHVpbnQzMl90IHNpemUp OwoKCgoKYm9vbCBkbV9oZWxwZXJzX2RwX3dyaXRlX2RwY2QoCiAgc3RydWN0IGRjX2NvbnRleHQg KmN0eCwKICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluaywKICB1aW50MzJfdCBhZGRyZXNzLAog IGNvbnN0IHVpbnQ4X3QgKmRhdGEsCiAgdWludDMyX3Qgc2l6ZSk7Cgpib29sIGRtX2hlbHBlcnNf c3VibWl0X2kyYygKICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogIGNvbnN0IHN0cnVjdCBkY19s aW5rICpsaW5rLAogIHN0cnVjdCBpMmNfY29tbWFuZCAqY21kKTsKCmJvb2wgZG1faGVscGVyc19k cF93cml0ZV9kc2NfZW5hYmxlKAogIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiAgY29uc3Qgc3Ry dWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAogIGJvb2wgZW5hYmxlCik7CmJvb2wgZG1faGVs cGVyc19pc19kcF9zaW5rX3ByZXNlbnQoCiAgc3RydWN0IGRjX2xpbmsgKmxpbmspOwoKZW51bSBk Y19lZGlkX3N0YXR1cyBkbV9oZWxwZXJzX3JlYWRfbG9jYWxfZWRpZCgKICBzdHJ1Y3QgZGNfY29u dGV4dCAqY3R4LAogIHN0cnVjdCBkY19saW5rICpsaW5rLAogIHN0cnVjdCBkY19zaW5rICpzaW5r KTsKCnZvaWQgZG1fc2V0X2Rjbl9jbG9ja3MoCiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKICBz dHJ1Y3QgZGNfY2xvY2tzICpjbGtzKTsKIyAzOSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIgMgoKIyAxICIuL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlLmgiIDEKIyAzOCAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgpl bnVtIGF0b21fYmlvc19oZWFkZXJfdmVyc2lvbl9kZWZ7CiAgQVRPTV9NQUpPUl9WRVJTSU9OID0w eDAwMDMsCiAgQVRPTV9NSU5PUl9WRVJTSU9OID0weDAwMDMsCn07CiMgNTcgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKZW51bSBhdG9tX2Ny dGNfZGVmewogIEFUT01fQ1JUQzEgPTAsCiAgQVRPTV9DUlRDMiA9MSwKICBBVE9NX0NSVEMzID0y LAogIEFUT01fQ1JUQzQgPTMsCiAgQVRPTV9DUlRDNSA9NCwKICBBVE9NX0NSVEM2ID01LAogIEFU T01fQ1JUQ19JTlZBTElEID0weGZmLAp9OwoKZW51bSBhdG9tX3BwbGxfZGVmewogIEFUT01fUFBM TDAgPTIsCiAgQVRPTV9HQ0tfREZTID04LAogIEFUT01fRkNIX0NMSyA9OSwKICBBVE9NX0RQX0RU TyA9MTEsCiAgQVRPTV9DT01CT1BIWV9QTEwwID0yMCwKICBBVE9NX0NPTUJPUEhZX1BMTDEgPTIx LAogIEFUT01fQ09NQk9QSFlfUExMMiA9MjIsCiAgQVRPTV9DT01CT1BIWV9QTEwzID0yMywKICBB VE9NX0NPTUJPUEhZX1BMTDQgPTI0LAogIEFUT01fQ09NQk9QSFlfUExMNSA9MjUsCiAgQVRPTV9Q UExMX0lOVkFMSUQgPTB4ZmYsCn07CgoKZW51bSBhdG9tX2RpZ19kZWZ7CiAgQVNJQ19JTlRfRElH MV9FTkNPREVSX0lEID0weDAzLAogIEFTSUNfSU5UX0RJRzJfRU5DT0RFUl9JRCA9MHgwOSwKICBB U0lDX0lOVF9ESUczX0VOQ09ERVJfSUQgPTB4MGEsCiAgQVNJQ19JTlRfRElHNF9FTkNPREVSX0lE ID0weDBiLAogIEFTSUNfSU5UX0RJRzVfRU5DT0RFUl9JRCA9MHgwYywKICBBU0lDX0lOVF9ESUc2 X0VOQ09ERVJfSUQgPTB4MGQsCiAgQVNJQ19JTlRfRElHN19FTkNPREVSX0lEID0weDBlLAp9OwoK CmVudW0gYXRvbV9lbmNvZGVfbW9kZV9kZWYKewogIEFUT01fRU5DT0RFUl9NT0RFX0RQID0wLAog IEFUT01fRU5DT0RFUl9NT0RFX0RQX1NTVCA9MCwKICBBVE9NX0VOQ09ERVJfTU9ERV9MVkRTID0x LAogIEFUT01fRU5DT0RFUl9NT0RFX0RWSSA9MiwKICBBVE9NX0VOQ09ERVJfTU9ERV9IRE1JID0z LAogIEFUT01fRU5DT0RFUl9NT0RFX0RQX0FVRElPID01LAogIEFUT01fRU5DT0RFUl9NT0RFX0RQ X01TVCA9NSwKICBBVE9NX0VOQ09ERVJfTU9ERV9DUlQgPTE1LAogIEFUT01fRU5DT0RFUl9NT0RF X0RWTyA9MTYsCn07CgplbnVtIGF0b21fZW5jb2Rlcl9yZWZjbGtfc3JjX2RlZnsKICBFTkNPREVS X1JFRkNMS19TUkNfUDFQTEwgPTAsCiAgRU5DT0RFUl9SRUZDTEtfU1JDX1AyUExMID0xLAogIEVO Q09ERVJfUkVGQ0xLX1NSQ19QM1BMTCA9MiwKICBFTkNPREVSX1JFRkNMS19TUkNfRVhUQ0xLID0z LAogIEVOQ09ERVJfUkVGQ0xLX1NSQ19JTlZBTElEID0weGZmLAp9OwoKZW51bSBhdG9tX3NjYWxl cl9kZWZ7CiAgQVRPTV9TQ0FMRVJfRElTQUJMRSA9MCwKICBBVE9NX1NDQUxFUl9DRU5URVIgPTEs CiAgQVRPTV9TQ0FMRVJfRVhQQU5TSU9OID0yLAp9OwoKZW51bSBhdG9tX29wZXJhdGlvbl9kZWZ7 CiAgQVRPTV9ESVNBQkxFID0gMCwKICBBVE9NX0VOQUJMRSA9IDEsCiAgQVRPTV9JTklUID0gNywK ICBBVE9NX0dFVF9TVEFUVVMgPSA4LAp9OwoKZW51bSBhdG9tX2VtYmVkZGVkX2Rpc3BsYXlfb3Bf ZGVmewogIEFUT01fTENEX0JMX09GRiA9IDIsCiAgQVRPTV9MQ0RfQkxfT00gPSAzLAogIEFUT01f TENEX0JMX0JSSUdIVE5FU1NfQ09OVFJPTCA9IDQsCiAgQVRPTV9MQ0RfU0VMRlRFU1RfU1RBUlQg PSA1LAogIEFUT01fTENEX1NFTEZURVNUX1NUT1AgPSA2LAp9OwoKZW51bSBhdG9tX3NwcmVhZF9z cGVjdHJ1bV9tb2RlewogIEFUT01fU1NfQ0VOVEVSX09SX0RPV05fTU9ERV9NQVNLID0gMHgwMSwK ICBBVE9NX1NTX0RPV05fU1BSRUFEX01PREUgPSAweDAwLAogIEFUT01fU1NfQ0VOVFJFX1NQUkVB RF9NT0RFID0gMHgwMSwKICBBVE9NX0lOVF9PUl9FWFRfU1NfTUFTSyA9IDB4MDIsCiAgQVRPTV9J TlRFUk5BTF9TU19NQVNLID0gMHgwMCwKICBBVE9NX0VYVEVSTkFMX1NTX01BU0sgPSAweDAyLAp9 OwoKCmVudW0gYXRvbV9wYW5lbF9iaXRfcGVyX2NvbG9yewogIFBBTkVMX0JQQ19VTkRFRklORSA9 MHgwMCwKICBQQU5FTF82QklUX1BFUl9DT0xPUiA9MHgwMSwKICBQQU5FTF84QklUX1BFUl9DT0xP UiA9MHgwMiwKICBQQU5FTF8xMEJJVF9QRVJfQ09MT1IgPTB4MDMsCiAgUEFORUxfMTJCSVRfUEVS X0NPTE9SID0weDA0LAogIFBBTkVMXzE2QklUX1BFUl9DT0xPUiA9MHgwNSwKfTsKCgplbnVtIGF0 b21fdm9sdGFnZV90eXBlCnsKICBWT0xUQUdFX1RZUEVfVkREQyA9IDEsCiAgVk9MVEFHRV9UWVBF X01WRERDID0gMiwKICBWT0xUQUdFX1RZUEVfTVZERFEgPSAzLAogIFZPTFRBR0VfVFlQRV9WRERD SSA9IDQsCiAgVk9MVEFHRV9UWVBFX1ZEREdGWCA9IDUsCiAgVk9MVEFHRV9UWVBFX1BDQyA9IDYs CiAgVk9MVEFHRV9UWVBFX01WUFAgPSA3LAogIFZPTFRBR0VfVFlQRV9MRUREUE0gPSA4LAogIFZP TFRBR0VfVFlQRV9QQ0NfTVZERCA9IDksCiAgVk9MVEFHRV9UWVBFX1BDSUVfVkREQyA9IDEwLAog IFZPTFRBR0VfVFlQRV9QQ0lFX1ZERFIgPSAxMSwKICBWT0xUQUdFX1RZUEVfR0VORVJJQ19JMkNf MSA9IDB4MTEsCiAgVk9MVEFHRV9UWVBFX0dFTkVSSUNfSTJDXzIgPSAweDEyLAogIFZPTFRBR0Vf VFlQRV9HRU5FUklDX0kyQ18zID0gMHgxMywKICBWT0xUQUdFX1RZUEVfR0VORVJJQ19JMkNfNCA9 IDB4MTQsCiAgVk9MVEFHRV9UWVBFX0dFTkVSSUNfSTJDXzUgPSAweDE1LAogIFZPTFRBR0VfVFlQ RV9HRU5FUklDX0kyQ182ID0gMHgxNiwKICBWT0xUQUdFX1RZUEVfR0VORVJJQ19JMkNfNyA9IDB4 MTcsCiAgVk9MVEFHRV9UWVBFX0dFTkVSSUNfSTJDXzggPSAweDE4LAogIFZPTFRBR0VfVFlQRV9H RU5FUklDX0kyQ185ID0gMHgxOSwKICBWT0xUQUdFX1RZUEVfR0VORVJJQ19JMkNfMTAgPSAweDFB LAp9OwoKZW51bSBhdG9tX2RncHVfdnJhbV90eXBlIHsKICBBVE9NX0RHUFVfVlJBTV9UWVBFX0dE RFI1ID0gMHg1MCwKICBBVE9NX0RHUFVfVlJBTV9UWVBFX0hCTTIgPSAweDYwLAogIEFUT01fREdQ VV9WUkFNX1RZUEVfR0REUjYgPSAweDcwLAp9OwoKZW51bSBhdG9tX2RwX3ZzX3ByZWVtcGhfZGVm ewogIERQX1ZTX0xFVkVMMF9QUkVFTVBIX0xFVkVMMCA9IDB4MDAsCiAgRFBfVlNfTEVWRUwxX1BS RUVNUEhfTEVWRUwwID0gMHgwMSwKICBEUF9WU19MRVZFTDJfUFJFRU1QSF9MRVZFTDAgPSAweDAy LAogIERQX1ZTX0xFVkVMM19QUkVFTVBIX0xFVkVMMCA9IDB4MDMsCiAgRFBfVlNfTEVWRUwwX1BS RUVNUEhfTEVWRUwxID0gMHgwOCwKICBEUF9WU19MRVZFTDFfUFJFRU1QSF9MRVZFTDEgPSAweDA5 LAogIERQX1ZTX0xFVkVMMl9QUkVFTVBIX0xFVkVMMSA9IDB4MGEsCiAgRFBfVlNfTEVWRUwwX1BS RUVNUEhfTEVWRUwyID0gMHgxMCwKICBEUF9WU19MRVZFTDFfUFJFRU1QSF9MRVZFTDIgPSAweDEx LAogIERQX1ZTX0xFVkVMMF9QUkVFTVBIX0xFVkVMMyA9IDB4MTgsCn07CiMgMjA4ICIuL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlLmgiCiNwcmFnbWEg cGFjaygxKQoKZW51bSBhdG9tYmlvc19pbWFnZV9vZmZzZXR7Ck9GRlNFVF9UT19BVE9NX1JPTV9I RUFERVJfUE9JTlRFUiA9MHgwMDAwMDA0OCwKT0ZGU0VUX1RPX0FUT01fUk9NX0lNQUdFX1NJWkUg PTB4MDAwMDAwMDIsCk9GRlNFVF9UT19BVE9NQklPU19BU0lDX0JVU19NRU1fVFlQRSA9MHg5NCwK TUFYU0laRV9PRl9BVE9NQklPU19BU0lDX0JVU19NRU1fVFlQRSA9MjAsCk9GRlNFVF9UT19HRVRf QVRPTUJJT1NfTlVNQkVSX09GX1NUUklOR1MgPTB4MmYsCk9GRlNFVF9UT19HRVRfQVRPTUJJT1Nf U1RSSU5HX1NUQVJUID0weDZlLAp9OwoKCgoKCgoKc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hl YWRlcgp7CiAgdWludDE2X3Qgc3RydWN0dXJlc2l6ZTsKICB1aW50OF90IGZvcm1hdF9yZXZpc2lv bjsKICB1aW50OF90IGNvbnRlbnRfcmV2aXNpb247Cn07CgoKCgpzdHJ1Y3QgYXRvbV9yb21faGVh ZGVyX3YyXzIKewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVy OwogIHVpbnQ4X3QgYXRvbV9iaW9zX3N0cmluZ1s0XTsKICB1aW50MTZfdCBiaW9zX3NlZ21lbnRf YWRkcmVzczsKICB1aW50MTZfdCBwcm90ZWN0ZWRtb2Rlb2Zmc2V0OwogIHVpbnQxNl90IGNvbmZp Z2ZpbGVuYW1lb2Zmc2V0OwogIHVpbnQxNl90IGNyY19ibG9ja19vZmZzZXQ7CiAgdWludDE2X3Qg dmJpb3NfYm9vdHVwbWVzc2FnZW9mZnNldDsKICB1aW50MTZfdCBpbnQxMF9vZmZzZXQ7CiAgdWlu dDE2X3QgcGNpYnVzZGV2aW5pdGNvZGU7CiAgdWludDE2X3QgaW9iYXNlYWRkcmVzczsKICB1aW50 MTZfdCBzdWJzeXN0ZW1fdmVuZG9yX2lkOwogIHVpbnQxNl90IHN1YnN5c3RlbV9pZDsKICB1aW50 MTZfdCBwY2lfaW5mb19vZmZzZXQ7CiAgdWludDE2X3QgbWFzdGVyaHdmdW5jdGlvbl9vZmZzZXQ7 CiAgdWludDE2X3QgbWFzdGVyZGF0YXRhYmxlX29mZnNldDsKICB1aW50MTZfdCByZXNlcnZlZDsK ICB1aW50MzJfdCBwc3BkaXJ0YWJsZW9mZnNldDsKfTsKIyAyNjQgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKc3RydWN0IGF0b21fbWFzdGVy X2xpc3Rfb2ZfY29tbWFuZF9mdW5jdGlvbnNfdjJfMXsKICB1aW50MTZfdCBhc2ljX2luaXQ7CiAg dWludDE2X3QgY21kX2Z1bmN0aW9uMTsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yOwogIHVpbnQx Nl90IGNtZF9mdW5jdGlvbjM7CiAgdWludDE2X3QgZGlneGVuY29kZXJjb250cm9sOwogIHVpbnQx Nl90IGNtZF9mdW5jdGlvbjU7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNjsKICB1aW50MTZfdCBj bWRfZnVuY3Rpb243OwogIHVpbnQxNl90IGNtZF9mdW5jdGlvbjg7CiAgdWludDE2X3QgY21kX2Z1 bmN0aW9uOTsKICB1aW50MTZfdCBzZXRlbmdpbmVjbG9jazsKICB1aW50MTZfdCBzZXRtZW1vcnlj bG9jazsKICB1aW50MTZfdCBzZXRwaXhlbGNsb2NrOwogIHVpbnQxNl90IGVuYWJsZWRpc3Bwb3dl cmdhdGluZzsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24xNDsKICB1aW50MTZfdCBjbWRfZnVuY3Rp b24xNTsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24xNjsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24x NzsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24xODsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24xOTsK ICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yMDsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yMTsKICB1 aW50MTZfdCBjbWRfZnVuY3Rpb24yMjsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yMzsKICB1aW50 MTZfdCBjbWRfZnVuY3Rpb24yNDsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yNTsKICB1aW50MTZf dCBjbWRfZnVuY3Rpb24yNjsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yNzsKICB1aW50MTZfdCBj bWRfZnVuY3Rpb24yODsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yOTsKICB1aW50MTZfdCBjbWRf ZnVuY3Rpb24zMDsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24zMTsKICB1aW50MTZfdCBjbWRfZnVu Y3Rpb24zMjsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24zMzsKICB1aW50MTZfdCBibGFua2NydGM7 CiAgdWludDE2X3QgZW5hYmxlY3J0YzsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24zNjsKICB1aW50 MTZfdCBjbWRfZnVuY3Rpb24zNzsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24zODsKICB1aW50MTZf dCBjbWRfZnVuY3Rpb24zOTsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb240MDsKICB1aW50MTZfdCBn ZXRzbXVjbG9ja2luZm87CiAgdWludDE2X3Qgc2VsZWN0Y3J0Y19zb3VyY2U7CiAgdWludDE2X3Qg Y21kX2Z1bmN0aW9uNDM7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNDQ7CiAgdWludDE2X3QgY21k X2Z1bmN0aW9uNDU7CiAgdWludDE2X3Qgc2V0ZGNlY2xvY2s7CiAgdWludDE2X3QgZ2V0bWVtb3J5 Y2xvY2s7CiAgdWludDE2X3QgZ2V0ZW5naW5lY2xvY2s7CiAgdWludDE2X3Qgc2V0Y3J0Y191c2lu Z2R0ZHRpbWluZzsKICB1aW50MTZfdCBleHRlcm5hbGVuY29kZXJjb250cm9sOwogIHVpbnQxNl90 IGNtZF9mdW5jdGlvbjUxOwogIHVpbnQxNl90IGNtZF9mdW5jdGlvbjUyOwogIHVpbnQxNl90IGNt ZF9mdW5jdGlvbjUzOwogIHVpbnQxNl90IHByb2Nlc3NpMmNjaGFubmVsdHJhbnNhY3Rpb247CiAg dWludDE2X3QgY21kX2Z1bmN0aW9uNTU7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNTY7CiAgdWlu dDE2X3QgY21kX2Z1bmN0aW9uNTc7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNTg7CiAgdWludDE2 X3QgY21kX2Z1bmN0aW9uNTk7CiAgdWludDE2X3QgY29tcHV0ZWdwdWNsb2NrcGFyYW07CiAgdWlu dDE2X3QgY21kX2Z1bmN0aW9uNjE7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNjI7CiAgdWludDE2 X3QgZHluYW1pY21lbW9yeXNldHRpbmdzOwogIHVpbnQxNl90IG1lbW9yeXRyYWluaW5nOwogIHVp bnQxNl90IGNtZF9mdW5jdGlvbjY1OwogIHVpbnQxNl90IGNtZF9mdW5jdGlvbjY2OwogIHVpbnQx Nl90IHNldHZvbHRhZ2U7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNjg7CiAgdWludDE2X3QgcmVh ZGVmdXNldmFsdWU7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNzA7CiAgdWludDE2X3QgY21kX2Z1 bmN0aW9uNzE7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNzI7CiAgdWludDE2X3QgY21kX2Z1bmN0 aW9uNzM7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNzQ7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9u NzU7CiAgdWludDE2X3QgZGlnMXRyYW5zbWl0dGVyY29udHJvbDsKICB1aW50MTZfdCBjbWRfZnVu Y3Rpb243NzsKICB1aW50MTZfdCBwcm9jZXNzYXV4Y2hhbm5lbHRyYW5zYWN0aW9uOwogIHVpbnQx Nl90IGNtZF9mdW5jdGlvbjc5OwogIHVpbnQxNl90IGdldHZvbHRhZ2VpbmZvOwp9OwoKc3RydWN0 IGF0b21fbWFzdGVyX2NvbW1hbmRfZnVuY3Rpb25fdjJfMQp7CiAgc3RydWN0IGF0b21fY29tbW9u X3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CiAgc3RydWN0IGF0b21fbWFzdGVyX2xpc3Rfb2Zf Y29tbWFuZF9mdW5jdGlvbnNfdjJfMSBsaXN0b2ZjbWRmdW5jdGlvbnM7Cn07CgoKCgpzdHJ1Y3Qg YXRvbV9mdW5jdGlvbl9hdHRyaWJ1dGUKewogIHVpbnQxNl90IHdzX2luX2J5dGVzOjg7CiAgdWlu dDE2X3QgcHNfaW5fYnl0ZXM6NzsKICB1aW50MTZfdCB1cGRhdGVkX2J5X3V0aWw6MTsKfTsKCgoK CgoKCnN0cnVjdCBhdG9tX3JvbV9od19mdW5jdGlvbl9oZWFkZXIKewogIHN0cnVjdCBhdG9tX2Nv bW1vbl90YWJsZV9oZWFkZXIgZnVuY19oZWFkZXI7CiAgc3RydWN0IGF0b21fZnVuY3Rpb25fYXR0 cmlidXRlIGZ1bmNfYXR0cmliOwp9OwoKCgoKCgoKc3RydWN0IGF0b21fbWFzdGVyX2xpc3Rfb2Zf ZGF0YV90YWJsZXNfdjJfMXsKICB1aW50MTZfdCB1dGlsaXR5cGlwZWxpbmU7CiAgdWludDE2X3Qg bXVsdGltZWRpYV9pbmZvOwogIHVpbnQxNl90IHNtY19kcG1faW5mbzsKICB1aW50MTZfdCBzd19k YXRhdGFibGUzOwogIHVpbnQxNl90IGZpcm13YXJlaW5mbzsKICB1aW50MTZfdCBzd19kYXRhdGFi bGU1OwogIHVpbnQxNl90IGxjZF9pbmZvOwogIHVpbnQxNl90IHN3X2RhdGF0YWJsZTc7CiAgdWlu dDE2X3Qgc211X2luZm87CiAgdWludDE2X3Qgc3dfZGF0YXRhYmxlOTsKICB1aW50MTZfdCBzd19k YXRhdGFibGUxMDsKICB1aW50MTZfdCB2cmFtX3VzYWdlYnlmaXJtd2FyZTsKICB1aW50MTZfdCBn cGlvX3Bpbl9sdXQ7CiAgdWludDE2X3Qgc3dfZGF0YXRhYmxlMTM7CiAgdWludDE2X3QgZ2Z4X2lu Zm87CiAgdWludDE2X3QgcG93ZXJwbGF5aW5mbzsKICB1aW50MTZfdCBzd19kYXRhdGFibGUxNjsK ICB1aW50MTZfdCBzd19kYXRhdGFibGUxNzsKICB1aW50MTZfdCBzd19kYXRhdGFibGUxODsKICB1 aW50MTZfdCBzd19kYXRhdGFibGUxOTsKICB1aW50MTZfdCBzd19kYXRhdGFibGUyMDsKICB1aW50 MTZfdCBzd19kYXRhdGFibGUyMTsKICB1aW50MTZfdCBkaXNwbGF5b2JqZWN0aW5mbzsKICB1aW50 MTZfdCBpbmRpcmVjdGlvYWNjZXNzOwogIHVpbnQxNl90IHVtY19pbmZvOwogIHVpbnQxNl90IHN3 X2RhdGF0YWJsZTI1OwogIHVpbnQxNl90IHN3X2RhdGF0YWJsZTI2OwogIHVpbnQxNl90IGRjZV9p bmZvOwogIHVpbnQxNl90IHZyYW1faW5mbzsKICB1aW50MTZfdCBzd19kYXRhdGFibGUyOTsKICB1 aW50MTZfdCBpbnRlZ3JhdGVkc3lzdGVtaW5mbzsKICB1aW50MTZfdCBhc2ljX3Byb2ZpbGluZ19p bmZvOwogIHVpbnQxNl90IHZvbHRhZ2VvYmplY3RfaW5mbzsKICB1aW50MTZfdCBzd19kYXRhdGFi bGUzMzsKICB1aW50MTZfdCBzd19kYXRhdGFibGUzNDsKfTsKCgpzdHJ1Y3QgYXRvbV9tYXN0ZXJf ZGF0YV90YWJsZV92Ml8xCnsKICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxl X2hlYWRlcjsKICBzdHJ1Y3QgYXRvbV9tYXN0ZXJfbGlzdF9vZl9kYXRhX3RhYmxlc192Ml8xIGxp c3RPZmRhdGF0YWJsZXM7Cn07CgoKc3RydWN0IGF0b21fZHRkX2Zvcm1hdAp7CiAgdWludDE2X3Qg cGl4Y2xrOwogIHVpbnQxNl90IGhfYWN0aXZlOwogIHVpbnQxNl90IGhfYmxhbmtpbmdfdGltZTsK ICB1aW50MTZfdCB2X2FjdGl2ZTsKICB1aW50MTZfdCB2X2JsYW5raW5nX3RpbWU7CiAgdWludDE2 X3QgaF9zeW5jX29mZnNldDsKICB1aW50MTZfdCBoX3N5bmNfd2lkdGg7CiAgdWludDE2X3Qgdl9z eW5jX29mZnNldDsKICB1aW50MTZfdCB2X3N5bmN3aWR0aDsKICB1aW50MTZfdCByZXNlcnZlZDsK ICB1aW50MTZfdCByZXNlcnZlZDA7CiAgdWludDhfdCBoX2JvcmRlcjsKICB1aW50OF90IHZfYm9y ZGVyOwogIHVpbnQxNl90IG1pc2NpbmZvOwogIHVpbnQ4X3QgYXRvbV9tb2RlX2lkOwogIHVpbnQ4 X3QgcmVmcmVzaHJhdGU7Cn07CgoKZW51bSBhdG9tX2R0ZF9mb3JtYXRfbW9kZW1pc2NpbmZvewog IEFUT01fSFNZTkNfUE9MQVJJVFkgPSAweDAwMDIsCiAgQVRPTV9WU1lOQ19QT0xBUklUWSA9IDB4 MDAwNCwKICBBVE9NX0hfUkVQTElDQVRJT05CWTIgPSAweDAwMTAsCiAgQVRPTV9WX1JFUExJQ0FU SU9OQlkyID0gMHgwMDIwLAogIEFUT01fSU5URVJMQUNFID0gMHgwMDgwLAogIEFUT01fQ09NUE9T SVRFU1lOQyA9IDB4MDA0MCwKfTsKIyA0NzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKc3RydWN0IGF0b21fZmlybXdhcmVfaW5mb192M18x CnsKICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50 MzJfdCBmaXJtd2FyZV9yZXZpc2lvbjsKICB1aW50MzJfdCBib290dXBfc2Nsa19pbjEwa2h6Owog IHVpbnQzMl90IGJvb3R1cF9tY2xrX2luMTBraHo7CiAgdWludDMyX3QgZmlybXdhcmVfY2FwYWJp bGl0eTsKICB1aW50MzJfdCBtYWluX2NhbGxfcGFyc2VyX2VudHJ5OwogIHVpbnQzMl90IGJpb3Nf c2NyYXRjaF9yZWdfc3RhcnRhZGRyOwogIHVpbnQxNl90IGJvb3R1cF92ZGRjX212OwogIHVpbnQx Nl90IGJvb3R1cF92ZGRjaV9tdjsKICB1aW50MTZfdCBib290dXBfbXZkZGNfbXY7CiAgdWludDE2 X3QgYm9vdHVwX3ZkZGdmeF9tdjsKICB1aW50OF90IG1lbV9tb2R1bGVfaWQ7CiAgdWludDhfdCBj b29saW5nc29sdXRpb25faWQ7CiAgdWludDhfdCByZXNlcnZlZDFbMl07CiAgdWludDMyX3QgbWNf YmFzZWFkZHJfaGlnaDsKICB1aW50MzJfdCBtY19iYXNlYWRkcl9sb3c7CiAgdWludDMyX3QgcmVz ZXJ2ZWQyWzZdOwp9OwoKCmVudW0gYXRvbWJpb3NfZmlybXdhcmVfY2FwYWJpbGl0eQp7CiBBVE9N X0ZJUk1XQVJFX0NBUF9GSVJNV0FSRV9QT1NURUQgPSAweDAwMDAwMDAxLAogQVRPTV9GSVJNV0FS RV9DQVBfR1BVX1ZJUlRVQUxJWkFUSU9OID0gMHgwMDAwMDAwMiwKIEFUT01fRklSTVdBUkVfQ0FQ X1dNSV9TVVBQT1JUID0gMHgwMDAwMDA0MCwKIEFUT01fRklSTVdBUkVfQ0FQX0hXRU1VX0VOQUJM RSA9IDB4MDAwMDAwODAsCiBBVE9NX0ZJUk1XQVJFX0NBUF9IV0VNVV9VTUNfQ0ZHID0gMHgwMDAw MDEwMCwKIEFUT01fRklSTVdBUkVfQ0FQX1NSQU1fRUNDID0gMHgwMDAwMDIwMCwKIEFUT01fRklS TVdBUkVfQ0FQX0VOQUJMRV8yU1RBR0VfQklTVF9UUkFJTklORyA9IDB4MDAwMDA0MDAsCn07Cgpl bnVtIGF0b21fY29vbGluZ19zb2x1dGlvbl9pZHsKICBBSVJfQ09PTElORyA9IDB4MDAsCiAgTElR VUlEX0NPT0xJTkcgPSAweDAxCn07CgpzdHJ1Y3QgYXRvbV9maXJtd2FyZV9pbmZvX3YzXzIgewog IHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQzMl90 IGZpcm13YXJlX3JldmlzaW9uOwogIHVpbnQzMl90IGJvb3R1cF9zY2xrX2luMTBraHo7CiAgdWlu dDMyX3QgYm9vdHVwX21jbGtfaW4xMGtoejsKICB1aW50MzJfdCBmaXJtd2FyZV9jYXBhYmlsaXR5 OwogIHVpbnQzMl90IG1haW5fY2FsbF9wYXJzZXJfZW50cnk7CiAgdWludDMyX3QgYmlvc19zY3Jh dGNoX3JlZ19zdGFydGFkZHI7CiAgdWludDE2X3QgYm9vdHVwX3ZkZGNfbXY7CiAgdWludDE2X3Qg Ym9vdHVwX3ZkZGNpX212OwogIHVpbnQxNl90IGJvb3R1cF9tdmRkY19tdjsKICB1aW50MTZfdCBi b290dXBfdmRkZ2Z4X212OwogIHVpbnQ4X3QgbWVtX21vZHVsZV9pZDsKICB1aW50OF90IGNvb2xp bmdzb2x1dGlvbl9pZDsKICB1aW50OF90IHJlc2VydmVkMVsyXTsKICB1aW50MzJfdCBtY19iYXNl YWRkcl9oaWdoOwogIHVpbnQzMl90IG1jX2Jhc2VhZGRyX2xvdzsKICB1aW50OF90IGJvYXJkX2ky Y19mZWF0dXJlX2lkOwogIHVpbnQ4X3QgYm9hcmRfaTJjX2ZlYXR1cmVfZ3Bpb19pZDsKICB1aW50 OF90IGJvYXJkX2kyY19mZWF0dXJlX3NsYXZlX2FkZHI7CiAgdWludDhfdCByZXNlcnZlZDM7CiAg dWludDE2X3QgYm9vdHVwX212ZGRxX212OwogIHVpbnQxNl90IGJvb3R1cF9tdnBwX212OwogIHVp bnQzMl90IHpmYnN0YXJ0YWRkcmluMTZtYjsKICB1aW50MzJfdCByZXNlcnZlZDJbM107Cn07Cgpz dHJ1Y3QgYXRvbV9maXJtd2FyZV9pbmZvX3YzXzMKewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJs ZV9oZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQzMl90IGZpcm13YXJlX3JldmlzaW9uOwogIHVp bnQzMl90IGJvb3R1cF9zY2xrX2luMTBraHo7CiAgdWludDMyX3QgYm9vdHVwX21jbGtfaW4xMGto ejsKICB1aW50MzJfdCBmaXJtd2FyZV9jYXBhYmlsaXR5OwogIHVpbnQzMl90IG1haW5fY2FsbF9w YXJzZXJfZW50cnk7CiAgdWludDMyX3QgYmlvc19zY3JhdGNoX3JlZ19zdGFydGFkZHI7CiAgdWlu dDE2X3QgYm9vdHVwX3ZkZGNfbXY7CiAgdWludDE2X3QgYm9vdHVwX3ZkZGNpX212OwogIHVpbnQx Nl90IGJvb3R1cF9tdmRkY19tdjsKICB1aW50MTZfdCBib290dXBfdmRkZ2Z4X212OwogIHVpbnQ4 X3QgbWVtX21vZHVsZV9pZDsKICB1aW50OF90IGNvb2xpbmdzb2x1dGlvbl9pZDsKICB1aW50OF90 IHJlc2VydmVkMVsyXTsKICB1aW50MzJfdCBtY19iYXNlYWRkcl9oaWdoOwogIHVpbnQzMl90IG1j X2Jhc2VhZGRyX2xvdzsKICB1aW50OF90IGJvYXJkX2kyY19mZWF0dXJlX2lkOwogIHVpbnQ4X3Qg Ym9hcmRfaTJjX2ZlYXR1cmVfZ3Bpb19pZDsKICB1aW50OF90IGJvYXJkX2kyY19mZWF0dXJlX3Ns YXZlX2FkZHI7CiAgdWludDhfdCByZXNlcnZlZDM7CiAgdWludDE2X3QgYm9vdHVwX212ZGRxX212 OwogIHVpbnQxNl90IGJvb3R1cF9tdnBwX212OwogIHVpbnQzMl90IHpmYnN0YXJ0YWRkcmluMTZt YjsKICB1aW50MzJfdCBwcGxpYl9wcHRhYmxlX2lkOwogIHVpbnQzMl90IHJlc2VydmVkMlsyXTsK fTsKCgoKCgoKCnN0cnVjdCBsY2RfaW5mb192Ml8xCnsKICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFi bGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICBzdHJ1Y3QgYXRvbV9kdGRfZm9ybWF0IGxjZF90aW1p bmc7CiAgdWludDE2X3QgYmFja2xpZ2h0X3B3bTsKICB1aW50MTZfdCBzcGVjaWFsX2hhbmRsZV9j YXA7CiAgdWludDE2X3QgcGFuZWxfbWlzYzsKICB1aW50MTZfdCBsdmRzX21heF9zbGlua19wY2xr OwogIHVpbnQxNl90IGx2ZHNfc3NfcGVyY2VudGFnZTsKICB1aW50MTZfdCBsdmRzX3NzX3JhdGVf MTBoejsKICB1aW50OF90IHB3cl9vbl9kaWdvbl90b19kZTsKICB1aW50OF90IHB3cl9vbl9kZV90 b192YXJ5X2JsOwogIHVpbnQ4X3QgcHdyX2Rvd25fdmFyeV9ibG9mZl90b19kZTsKICB1aW50OF90 IHB3cl9kb3duX2RlX3RvX2RpZ29mZjsKICB1aW50OF90IHB3cl9vZmZfZGVsYXk7CiAgdWludDhf dCBwd3Jfb25fdmFyeV9ibF90b19ibG9uOwogIHVpbnQ4X3QgcHdyX2Rvd25fYmxvZmZfdG9fdmFy eV9ibG9mZjsKICB1aW50OF90IHBhbmVsX2JwYzsKICB1aW50OF90IGRwY2RfZWRwX2NvbmZpZ19j YXA7CiAgdWludDhfdCBkcGNkX21heF9saW5rX3JhdGU7CiAgdWludDhfdCBkcGNkX21heF9sYW5l X2NvdW50OwogIHVpbnQ4X3QgZHBjZF9tYXhfZG93bnNwcmVhZDsKICB1aW50OF90IG1pbl9hbGxv d2VkX2JsX2xldmVsOwogIHVpbnQ4X3QgbWF4X2FsbG93ZWRfYmxfbGV2ZWw7CiAgdWludDhfdCBi b290dXBfYmxfbGV2ZWw7CiAgdWludDhfdCBkcGx2ZHNyeGlkOwogIHVpbnQzMl90IHJlc2VydmVk MVs4XTsKfTsKCgplbnVtIGF0b21fbGNkX2luZm9fcGFuZWxfbWlzY3sKICBBVE9NX1BBTkVMX01J U0NfRlBESSA9MHgwMDAyLAp9OwoKCmVudW0gYXRvbV9sY2RfaW5mb19kcHRvbHZkc19yeF9pZAp7 CiAgZURQX1RPX0xWRFNfUlhfRElTQUJMRSA9IDB4MDAsCiAgZURQX1RPX0xWRFNfQ09NTU9OX0lE ID0gMHgwMSwKICBlRFBfVE9fTFZEU19SRUFMVEVLX0lEID0gMHgwMiwKfTsKIyA2MjAgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKc3RydWN0 IGF0b21fZ3Bpb19waW5fYXNzaWdubWVudAp7CiAgdWludDMyX3QgZGF0YV9hX3JlZ19pbmRleDsK ICB1aW50OF90IGdwaW9fYml0c2hpZnQ7CiAgdWludDhfdCBncGlvX21hc2tfYml0c2hpZnQ7CiAg dWludDhfdCBncGlvX2lkOwogIHVpbnQ4X3QgcmVzZXJ2ZWQ7Cn07CgoKZW51bSBhdG9tX2dwaW9f cGluX2Fzc2lnbm1lbnRfZ3Bpb19pZCB7CiAgSTJDX0hXX0xBTkVfTVVYID0weDBmLAogIEkyQ19I V19FTkdJTkVfSURfTUFTSyA9MHg3MCwKICBJMkNfSFdfQ0FQID0weDgwLAoKCgogIFBDSUVfVkRE Q19DT05UUk9MX0dQSU9fUElOSUQgPSA1NiwKCiAgUFBfQUNfRENfU1dJVENIX0dQSU9fUElOSUQg PSA2MCwKCiAgVkREQ19WUkhPVF9HUElPX1BJTklEID0gNjEsCgogIFZERENfUENDX0dQSU9fUElO SUQgPSA2MiwKCiAgRUZVU0VfQ1VUX0VOQUJMRV9HUElPX1BJTklEID0gNjMsCgogIERSQU1fU0VM Rl9SRUZSRVNIX0dQSU9fUElOSUQgPSA2NCwKCiAgVEhFUk1BTF9JTlRfT1VUUFVUX0dQSU9fUElO SUQgPTY1LAp9OwoKCnN0cnVjdCBhdG9tX2dwaW9fcGluX2x1dF92Ml8xCnsKICBzdHJ1Y3QgYXRv bV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKCiAgc3RydWN0IGF0b21fZ3Bpb19w aW5fYXNzaWdubWVudCBncGlvX3Bpbls4XTsKfTsKIyA2NjcgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKc3RydWN0IHZyYW1fdXNhZ2VieWZp cm13YXJlX3YyXzEKewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVh ZGVyOwogIHVpbnQzMl90IHN0YXJ0X2FkZHJlc3NfaW5fa2I7CiAgdWludDE2X3QgdXNlZF9ieV9m aXJtd2FyZV9pbl9rYjsKICB1aW50MTZfdCB1c2VkX2J5X2RyaXZlcl9pbl9rYjsKfTsKIyA2ODIg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIK ZW51bSBhdG9tX29iamVjdF9yZWNvcmRfdHlwZV9pZAp7CiAgQVRPTV9JMkNfUkVDT1JEX1RZUEUg PTEsCiAgQVRPTV9IUERfSU5UX1JFQ09SRF9UWVBFID0yLAogIEFUT01fT0JKRUNUX0dQSU9fQ05U TF9SRUNPUkRfVFlQRSA9OSwKICBBVE9NX0NPTk5FQ1RPUl9IUERQSU5fTFVUX1JFQ09SRF9UWVBF ID0xNiwKICBBVE9NX0NPTk5FQ1RPUl9BVVhERENfTFVUX1JFQ09SRF9UWVBFID0xNywKICBBVE9N X0VOQ09ERVJfQ0FQX1JFQ09SRF9UWVBFPTIwLAogIEFUT01fQlJBQ0tFVF9MQVlPVVRfUkVDT1JE X1RZUEU9MjEsCiAgQVRPTV9DT05ORUNUT1JfRk9SQ0VEX1RNRFNfQ0FQX1JFQ09SRF9UWVBFPTIy LAogIEFUT01fUkVDT1JEX0VORF9UWVBFID0weEZGLAp9OwoKc3RydWN0IGF0b21fY29tbW9uX3Jl Y29yZF9oZWFkZXIKewogIHVpbnQ4X3QgcmVjb3JkX3R5cGU7CiAgdWludDhfdCByZWNvcmRfc2l6 ZTsKfTsKCnN0cnVjdCBhdG9tX2kyY19yZWNvcmQKewogIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNv cmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7CiAgdWludDhfdCBpMmNfaWQ7CiAgdWludDhfdCBpMmNf c2xhdmVfYWRkcjsKfTsKCnN0cnVjdCBhdG9tX2hwZF9pbnRfcmVjb3JkCnsKICBzdHJ1Y3QgYXRv bV9jb21tb25fcmVjb3JkX2hlYWRlciByZWNvcmRfaGVhZGVyOwogIHVpbnQ4X3QgcGluX2lkOwog IHVpbnQ4X3QgcGx1Z2luX3Bpbl9zdGF0ZTsKfTsKCgplbnVtIGF0b21fZW5jb2Rlcl9jYXBzX2Rl Zgp7CiAgQVRPTV9FTkNPREVSX0NBUF9SRUNPUkRfSEJSMiA9MHgwMSwKICBBVE9NX0VOQ09ERVJf Q0FQX1JFQ09SRF9NU1RfRU4gPTB4MDEsCiAgQVRPTV9FTkNPREVSX0NBUF9SRUNPUkRfSEJSMl9F TiA9MHgwMiwKICBBVE9NX0VOQ09ERVJfQ0FQX1JFQ09SRF9IRE1JNkdicHNfRU4gPTB4MDQsCiAg QVRPTV9FTkNPREVSX0NBUF9SRUNPUkRfSEJSM19FTiA9MHgwOCwKICBBVE9NX0VOQ09ERVJfQ0FQ X1JFQ09SRF9VU0JfQ19UWVBFID0weDEwMCwKfTsKCnN0cnVjdCBhdG9tX2VuY29kZXJfY2Fwc19y ZWNvcmQKewogIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7 CiAgdWludDMyX3QgZW5jb2RlcmNhcHM7Cn07CgplbnVtIGF0b21fY29ubmVjdG9yX2NhcHNfZGVm CnsKICBBVE9NX0NPTk5FQ1RPUl9DQVBfSU5URVJOQUxfRElTUExBWSA9IDB4MDEsCiAgQVRPTV9D T05ORUNUT1JfQ0FQX0lOVEVSTkFMX0RJU1BMQVlfQkwgPSAweDAyLAp9OwoKc3RydWN0IGF0b21f ZGlzcF9jb25uZWN0b3JfY2Fwc19yZWNvcmQKewogIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRf aGVhZGVyIHJlY29yZF9oZWFkZXI7CiAgdWludDMyX3QgY29ubmVjdGNhcHM7Cn07CgoKc3RydWN0 IGF0b21fZ3Bpb19waW5fY29udHJvbF9wYWlyCnsKICB1aW50OF90IGdwaW9faWQ7CiAgdWludDhf dCBncGlvX3BpbnN0YXRlOwp9OwoKc3RydWN0IGF0b21fb2JqZWN0X2dwaW9fY250bF9yZWNvcmQK ewogIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7CiAgdWlu dDhfdCBmbGFnOwogIHVpbnQ4X3QgbnVtYmVyX29mX3BpbnM7CiAgc3RydWN0IGF0b21fZ3Bpb19w aW5fY29udHJvbF9wYWlyIGdwaW9bMV07Cn07CgoKZW51bSBhdG9tX2dwaW9fcGluX2NvbnRyb2xf cGluc3RhdGVfZGVmCnsKICBHUElPX1BJTl9UWVBFX0lOUFVUID0gMHgwMCwKICBHUElPX1BJTl9U WVBFX09VVFBVVCA9IDB4MTAsCiAgR1BJT19QSU5fVFlQRV9IV19DT05UUk9MID0gMHgyMCwKCgog IEdQSU9fUElOX09VVFBVVF9TVEFURV9NQVNLID0gMHgwMSwKICBHUElPX1BJTl9PVVRQVVRfU1RB VEVfU0hJRlQgPSAwLAogIEdQSU9fUElOX1NUQVRFX0FDVElWRV9MT1cgPSAweDAsCiAgR1BJT19Q SU5fU1RBVEVfQUNUSVZFX0hJR0ggPSAweDEsCn07CgoKCmVudW0gYXRvbV9nbHN5bmNfcmVjb3Jk X2dwaW9faW5kZXhfZGVmCnsKICBBVE9NX0dQSU9fSU5ERVhfR0xTWU5DX1JFRkNMSyA9IDAsCiAg QVRPTV9HUElPX0lOREVYX0dMU1lOQ19IU1lOQyA9IDEsCiAgQVRPTV9HUElPX0lOREVYX0dMU1lO Q19WU1lOQyA9IDIsCiAgQVRPTV9HUElPX0lOREVYX0dMU1lOQ19TV0FQX1JFUSA9IDMsCiAgQVRP TV9HUElPX0lOREVYX0dMU1lOQ19TV0FQX0dOVCA9IDQsCiAgQVRPTV9HUElPX0lOREVYX0dMU1lO Q19JTlRFUlJVUFQgPSA1LAogIEFUT01fR1BJT19JTkRFWF9HTFNZTkNfVl9SRVNFVCA9IDYsCiAg QVRPTV9HUElPX0lOREVYX0dMU1lOQ19TV0FQX0NOVEwgPSA3LAogIEFUT01fR1BJT19JTkRFWF9H TFNZTkNfU1dBUF9TRUwgPSA4LAogIEFUT01fR1BJT19JTkRFWF9HTFNZTkNfTUFYID0gOSwKfTsK CgpzdHJ1Y3QgYXRvbV9jb25uZWN0b3JfaHBkcGluX2x1dF9yZWNvcmQKewogIHN0cnVjdCBhdG9t X2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7CiAgdWludDhfdCBocGRfcGluX21h cFs4XTsKfTsKCnN0cnVjdCBhdG9tX2Nvbm5lY3Rvcl9hdXhkZGNfbHV0X3JlY29yZAp7CiAgc3Ry dWN0IGF0b21fY29tbW9uX3JlY29yZF9oZWFkZXIgcmVjb3JkX2hlYWRlcjsKICB1aW50OF90IGF1 eF9kZGNfbWFwWzhdOwp9OwoKc3RydWN0IGF0b21fY29ubmVjdG9yX2ZvcmNlZF90bWRzX2NhcF9y ZWNvcmQKewogIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7 CgogIHVpbnQ4X3QgbWF4dG1kc2Nsa3JhdGVfaW4yXzVtaHo7CiAgdWludDhfdCByZXNlcnZlZDsK fTsKCnN0cnVjdCBhdG9tX2Nvbm5lY3Rvcl9sYXlvdXRfaW5mbwp7CiAgdWludDE2X3QgY29ubmVj dG9yb2JqaWQ7CiAgdWludDhfdCBjb25uZWN0b3JfdHlwZTsKICB1aW50OF90IHBvc2l0aW9uOwp9 OwoKCmVudW0gYXRvbV9jb25uZWN0b3JfbGF5b3V0X2luZm9fY29ubmVjdG9yX3R5cGVfZGVmCnsK ICBDT05ORUNUT1JfVFlQRV9EVklfRCA9IDEsCgogIENPTk5FQ1RPUl9UWVBFX0hETUkgPSA0LAog IENPTk5FQ1RPUl9UWVBFX0RJU1BMQVlfUE9SVCA9IDUsCiAgQ09OTkVDVE9SX1RZUEVfTUlOSV9E SVNQTEFZX1BPUlQgPSA2LAp9OwoKc3RydWN0IGF0b21fYnJhY2tldF9sYXlvdXRfcmVjb3JkCnsK ICBzdHJ1Y3QgYXRvbV9jb21tb25fcmVjb3JkX2hlYWRlciByZWNvcmRfaGVhZGVyOwogIHVpbnQ4 X3QgYnJhY2tldGxlbjsKICB1aW50OF90IGJyYWNrZXR3aWR0aDsKICB1aW50OF90IGNvbm5fbnVt OwogIHVpbnQ4X3QgcmVzZXJ2ZWQ7CiAgc3RydWN0IGF0b21fY29ubmVjdG9yX2xheW91dF9pbmZv IGNvbm5faW5mb1sxXTsKfTsKCmVudW0gYXRvbV9kaXNwbGF5X2RldmljZV90YWdfZGVmewogIEFU T01fRElTUExBWV9MQ0QxX1NVUFBPUlQgPSAweDAwMDIsCiAgQVRPTV9ESVNQTEFZX0RGUDFfU1VQ UE9SVCA9IDB4MDAwOCwKICBBVE9NX0RJU1BMQVlfREZQMl9TVVBQT1JUID0gMHgwMDgwLAogIEFU T01fRElTUExBWV9ERlAzX1NVUFBPUlQgPSAweDAyMDAsCiAgQVRPTV9ESVNQTEFZX0RGUDRfU1VQ UE9SVCA9IDB4MDQwMCwKICBBVE9NX0RJU1BMQVlfREZQNV9TVVBQT1JUID0gMHgwODAwLAogIEFU T01fRElTUExBWV9ERlA2X1NVUFBPUlQgPSAweDAwNDAsCiAgQVRPTV9ESVNQTEFZX0RGUHhfU1VQ UE9SVCA9IDB4MGVjOCwKfTsKCnN0cnVjdCBhdG9tX2Rpc3BsYXlfb2JqZWN0X3BhdGhfdjIKewog IHVpbnQxNl90IGRpc3BsYXlfb2JqaWQ7CiAgdWludDE2X3QgZGlzcF9yZWNvcmRvZmZzZXQ7CiAg dWludDE2X3QgZW5jb2Rlcm9iamlkOwogIHVpbnQxNl90IGV4dGVuY29kZXJvYmppZDsKICB1aW50 MTZfdCBlbmNvZGVyX3JlY29yZG9mZnNldDsKICB1aW50MTZfdCBleHRlbmNvZGVyX3JlY29yZG9m ZnNldDsKICB1aW50MTZfdCBkZXZpY2VfdGFnOwogIHVpbnQ4X3QgcHJpb3JpdHlfaWQ7CiAgdWlu dDhfdCByZXNlcnZlZDsKfTsKCnN0cnVjdCBkaXNwbGF5X29iamVjdF9pbmZvX3RhYmxlX3YxXzQK ewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQx Nl90IHN1cHBvcnRlZGRldmljZXM7CiAgdWludDhfdCBudW1iZXJfb2ZfcGF0aDsKICB1aW50OF90 IHJlc2VydmVkOwogIHN0cnVjdCBhdG9tX2Rpc3BsYXlfb2JqZWN0X3BhdGhfdjIgZGlzcGxheV9w YXRoWzhdOwp9OwoKCgoKCgoKc3RydWN0IGF0b21fZGlzcGxheV9jb250cm9sbGVyX2luZm9fdjRf MQp7CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CiAgdWlu dDMyX3QgZGlzcGxheV9jYXBzOwogIHVpbnQzMl90IGJvb3R1cF9kaXNwY2xrXzEwa2h6OwogIHVp bnQxNl90IGRjZV9yZWZjbGtfMTBraHo7CiAgdWludDE2X3QgaTJjX2VuZ2luZV9yZWZjbGtfMTBr aHo7CiAgdWludDE2X3QgZHZpX3NzX3BlcmNlbnRhZ2U7CiAgdWludDE2X3QgZHZpX3NzX3JhdGVf MTBoejsKICB1aW50MTZfdCBoZG1pX3NzX3BlcmNlbnRhZ2U7CiAgdWludDE2X3QgaGRtaV9zc19y YXRlXzEwaHo7CiAgdWludDE2X3QgZHBfc3NfcGVyY2VudGFnZTsKICB1aW50MTZfdCBkcF9zc19y YXRlXzEwaHo7CiAgdWludDhfdCBkdmlfc3NfbW9kZTsKICB1aW50OF90IGhkbWlfc3NfbW9kZTsK ICB1aW50OF90IGRwX3NzX21vZGU7CiAgdWludDhfdCBzc19yZXNlcnZlZDsKICB1aW50OF90IGhh cmRjb2RlX21vZGVfbnVtOwogIHVpbnQ4X3QgcmVzZXJ2ZWQxWzNdOwogIHVpbnQxNl90IGRwcGh5 X3JlZmNsa18xMGtoejsKICB1aW50MTZfdCByZXNlcnZlZDI7CiAgdWludDhfdCBkY2VpcF9taW5f dmVyOwogIHVpbnQ4X3QgZGNlaXBfbWF4X3ZlcjsKICB1aW50OF90IG1heF9kaXNwX3BpcGVfbnVt OwogIHVpbnQ4X3QgbWF4X3ZiaW9zX2FjdGl2ZV9kaXNwX3BpcGVfbnVtOwogIHVpbnQ4X3QgbWF4 X3BwbGxfbnVtOwogIHVpbnQ4X3QgbWF4X2Rpc3BfcGh5X251bTsKICB1aW50OF90IG1heF9hdXhf cGFpcnM7CiAgdWludDhfdCByZW1vdGVkaXNwbGF5Y29uZmlnOwogIHVpbnQ4X3QgcmVzZXJ2ZWQz WzhdOwp9OwoKCnN0cnVjdCBhdG9tX2Rpc3BsYXlfY29udHJvbGxlcl9pbmZvX3Y0XzIKewogIHN0 cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQzMl90IGRp c3BsYXlfY2FwczsKICB1aW50MzJfdCBib290dXBfZGlzcGNsa18xMGtoejsKICB1aW50MTZfdCBk Y2VfcmVmY2xrXzEwa2h6OwogIHVpbnQxNl90IGkyY19lbmdpbmVfcmVmY2xrXzEwa2h6OwogIHVp bnQxNl90IGR2aV9zc19wZXJjZW50YWdlOwogIHVpbnQxNl90IGR2aV9zc19yYXRlXzEwaHo7CiAg dWludDE2X3QgaGRtaV9zc19wZXJjZW50YWdlOwogIHVpbnQxNl90IGhkbWlfc3NfcmF0ZV8xMGh6 OwogIHVpbnQxNl90IGRwX3NzX3BlcmNlbnRhZ2U7CiAgdWludDE2X3QgZHBfc3NfcmF0ZV8xMGh6 OwogIHVpbnQ4X3QgZHZpX3NzX21vZGU7CiAgdWludDhfdCBoZG1pX3NzX21vZGU7CiAgdWludDhf dCBkcF9zc19tb2RlOwogIHVpbnQ4X3Qgc3NfcmVzZXJ2ZWQ7CiAgdWludDhfdCBkZnBfaGFyZGNv ZGVfbW9kZV9udW07CiAgdWludDhfdCBkZnBfaGFyZGNvZGVfcmVmcmVzaHJhdGU7CiAgdWludDhf dCB2Z2FfaGFyZGNvZGVfbW9kZV9udW07CiAgdWludDhfdCB2Z2FfaGFyZGNvZGVfcmVmcmVzaHJh dGU7CiAgdWludDE2X3QgZHBwaHlfcmVmY2xrXzEwa2h6OwogIHVpbnQxNl90IHJlc2VydmVkMjsK ICB1aW50OF90IGRjbmlwX21pbl92ZXI7CiAgdWludDhfdCBkY25pcF9tYXhfdmVyOwogIHVpbnQ4 X3QgbWF4X2Rpc3BfcGlwZV9udW07CiAgdWludDhfdCBtYXhfdmJpb3NfYWN0aXZlX2Rpc3BfcGlw ZV9udW07CiAgdWludDhfdCBtYXhfcHBsbF9udW07CiAgdWludDhfdCBtYXhfZGlzcF9waHlfbnVt OwogIHVpbnQ4X3QgbWF4X2F1eF9wYWlyczsKICB1aW50OF90IHJlbW90ZWRpc3BsYXljb25maWc7 CiAgdWludDhfdCByZXNlcnZlZDNbOF07Cn07CgoKZW51bSBkY2VfaW5mb19jYXBzX2RlZgp7Cgog IERDRV9JTkZPX0NBUFNfRk9SQ0VfRElTUERFVl9DT05ORUNURUQgPTB4MDIsCgogIERDRV9JTkZP X0NBUFNfRElTQUJMRV9ERlBfRFBfSEJSMiA9MHgwNCwKCiAgRENFX0lORk9fQ0FQU19FTkFCTEVf SU5URVJMQUNfVElNSU5HID0weDA4LAoKfTsKCgoKCgoKc3RydWN0IGF0b21fZXh0X2Rpc3BsYXlf cGF0aAp7CiAgdWludDE2X3QgZGV2aWNlX3RhZzsKICB1aW50MTZfdCBkZXZpY2VfYWNwaV9lbnVt OwogIHVpbnQxNl90IGNvbm5lY3Rvcm9iamlkOwogIHVpbnQ4X3QgYXV4ZGRjbHV0X2luZGV4Owog IHVpbnQ4X3QgaHBkbHV0X2luZGV4OwogIHVpbnQxNl90IGV4dF9lbmNvZGVyX29iamlkOwogIHVp bnQ4X3QgY2hhbm5lbG1hcHBpbmc7CiAgdWludDhfdCBjaHBuaW52ZXJ0OwogIHVpbnQxNl90IGNh cHM7CiAgdWludDE2X3QgcmVzZXJ2ZWQ7Cn07CgoKZW51bSBleHRfZGlzcGxheV9wYXRoX2NhcF9k ZWYKewogIEVYVF9ESVNQTEFZX1BBVEhfQ0FQU19fSEJSMl9ESVNBQkxFID0weDAwMDEsCiAgRVhU X0RJU1BMQVlfUEFUSF9DQVBTX19EUF9GSVhFRF9WU19FTiA9MHgwMDAyLAogIEVYVF9ESVNQTEFZ X1BBVEhfQ0FQU19fRVhUX0NISVBfTUFTSyA9MHgwMDdDLAp9OwoKc3RydWN0IGF0b21fZXh0ZXJu YWxfZGlzcGxheV9jb25uZWN0aW9uX2luZm8KewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9o ZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQ4X3QgZ3VpZFsxNl07CiAgc3RydWN0IGF0b21fZXh0 X2Rpc3BsYXlfcGF0aCBwYXRoWzddOwogIHVpbnQ4X3QgY2hlY2tzdW07CiAgdWludDhfdCBzdGVy ZW9waW5pZDsKICB1aW50OF90IHJlbW90ZWRpc3BsYXljb25maWc7CiAgdWludDhfdCBlZHB0b2x2 ZHNyeGlkOwogIHVpbnQ4X3QgZml4ZHB2b2x0YWdlc3dpbmc7CiAgdWludDhfdCByZXNlcnZlZFsz XTsKfTsKCgoKCgoKCnN0cnVjdCBhdG9tX2NhbWVyYV9kcGh5X3RpbWluZ19wYXJhbQp7CiAgdWlu dDhfdCBwcm9maWxlX2lkOwogIHVpbnQzMl90IHBhcmFtOwp9OwoKc3RydWN0IGF0b21fY2FtZXJh X2RwaHlfZWxlY19wYXJhbQp7CiAgdWludDE2X3QgcGFyYW1bM107Cn07CgpzdHJ1Y3QgYXRvbV9j YW1lcmFfbW9kdWxlX2luZm8KewogIHVpbnQ4X3QgbW9kdWxlX2lkOwogIHVpbnQ4X3QgbW9kdWxl X25hbWVbOF07CiAgc3RydWN0IGF0b21fY2FtZXJhX2RwaHlfdGltaW5nX3BhcmFtIHRpbWluZ3Bh cmFtWzZdOwp9OwoKc3RydWN0IGF0b21fY2FtZXJhX2ZsYXNobGlnaHRfaW5mbwp7CiAgdWludDhf dCBmbGFzaGxpZ2h0X2lkOwogIHVpbnQ4X3QgbmFtZVs4XTsKfTsKCnN0cnVjdCBhdG9tX2NhbWVy YV9kYXRhCnsKICB1aW50MzJfdCB2ZXJzaW9uQ29kZTsKICBzdHJ1Y3QgYXRvbV9jYW1lcmFfbW9k dWxlX2luZm8gY2FtZXJhSW5mb1szXTsKICBzdHJ1Y3QgYXRvbV9jYW1lcmFfZmxhc2hsaWdodF9p bmZvIGZsYXNoSW5mbzsKICBzdHJ1Y3QgYXRvbV9jYW1lcmFfZHBoeV9lbGVjX3BhcmFtIGRwaHlf cGFyYW07CiAgdWludDMyX3QgY3JjX3ZhbDsKfTsKCgpzdHJ1Y3QgYXRvbV8xNG5tX2RwcGh5X2R2 aWhkbWlfdHVuaW5nc2V0CnsKICB1aW50MzJfdCBtYXhfc3ltY2xrX2luMTBraHo7CiAgdWludDhf dCBlbmNvZGVyX21vZGU7CiAgdWludDhfdCBwaHlfc2VsOwogIHVpbnQxNl90IG1hcmdpbmRlZW1w aDsKICB1aW50OF90IGRlZW1waF82ZGJfNDsKICB1aW50OF90IGJvb3N0YWRqOwogIHVpbnQ4X3Qg dHhfZHJpdmVyX2ZpZnR5X29obXM7CiAgdWludDhfdCBkZWVtcGhfc2VsOwp9OwoKc3RydWN0IGF0 b21fMTRubV9kcHBoeV9kcF9zZXR0aW5newogIHVpbnQ4X3QgZHBfdnNfcGVtcGhfbGV2ZWw7CiAg dWludDE2X3QgbWFyZ2luZGVlbXBoOwogIHVpbnQ4X3QgZGVlbXBoXzZkYl80OwogIHVpbnQ4X3Qg Ym9vc3RhZGo7Cn07CgpzdHJ1Y3QgYXRvbV8xNG5tX2RwcGh5X2RwX3R1bmluZ3NldHsKICB1aW50 OF90IHBoeV9zZWw7CiAgdWludDhfdCB2ZXJzaW9uOwogIHVpbnQxNl90IHRhYmxlX3NpemU7CiAg dWludDE2X3QgcmVzZXJ2ZWQ7CiAgc3RydWN0IGF0b21fMTRubV9kcHBoeV9kcF9zZXR0aW5nIGRw dHVuaW5nWzEwXTsKfTsKCnN0cnVjdCBhdG9tXzE0bm1fZGlnX3RyYW5zbWl0dGVyX2luZm9faGVh ZGVyX3Y0XzB7CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7 CiAgdWludDE2X3QgcGNpZV9waHlfdG1kc19oZG1pX21hY3JvX3NldHRpbmdzX29mZnNldDsKICB1 aW50MTZfdCB1bmlwaHlfdnNfZW1waF9sb29rdXBfdGFibGVfb2Zmc2V0OwogIHVpbnQxNl90IHVu aXBoeV94YmFyX3NldHRpbmdzX3RhYmxlX29mZnNldDsKfTsKCnN0cnVjdCBhdG9tXzE0bm1fY29t YnBoeV90bWRzX3ZzX3NldAp7CiAgdWludDhfdCBzeW1fY2xrOwogIHVpbnQ4X3QgZGlnX21vZGU7 CiAgdWludDhfdCBwaHlfc2VsOwogIHVpbnQxNl90IGNvbW1vbl9tYXJfZGVlbXBoX25vbV9fbWFy Z2luX2RlZW1waF92YWw7CiAgdWludDhfdCBjb21tb25fc2VsZGVlbXBoNjBfX2RlZW1waF82ZGJf NF92YWw7CiAgdWludDhfdCBjbWRfYnVzX2dsb2JhbF9mb3JfdHhfbGFuZTBfX2Jvb3N0YWRqX3Zh bCA7CiAgdWludDhfdCBjb21tb25femNhbGNvZGVfY3RybF9fdHhfZHJpdmVyX2ZpZnR5X29obXNf dmFsOwogIHVpbnQ4X3QgbWFyZ2luX2RlZW1waF9sYW5lMF9fZGVlbXBoX3NlbF92YWw7Cn07Cgpz dHJ1Y3QgYXRvbV9pMmNfcmVnX2luZm8gewogIHVpbnQ4X3QgdWNJMmNSZWdJbmRleDsKICB1aW50 OF90IHVjSTJjUmVnVmFsOwp9OwoKc3RydWN0IGF0b21faGRtaV9yZXRpbWVyX3JlZHJpdmVyX3Nl dCB7CiAgdWludDhfdCBIZG1pU2x2QWRkcjsKICB1aW50OF90IEhkbWlSZWdOdW07CiAgdWludDhf dCBIZG1pNkdSZWdOdW07CiAgc3RydWN0IGF0b21faTJjX3JlZ19pbmZvIEhkbWlSZWdTZXR0aW5n WzldOwogIHN0cnVjdCBhdG9tX2kyY19yZWdfaW5mbyBIZG1pNkdoelJlZ1NldHRpbmdbM107Cn07 CgpzdHJ1Y3QgYXRvbV9pbnRlZ3JhdGVkX3N5c3RlbV9pbmZvX3YxXzExCnsKICBzdHJ1Y3QgYXRv bV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50MzJfdCB2Ymlvc19taXNj OwogIHVpbnQzMl90IGdwdWNhcGluZm87CiAgdWludDMyX3Qgc3lzdGVtX2NvbmZpZzsKICB1aW50 MzJfdCBjcHVjYXBpbmZvOwogIHVpbnQxNl90IGdwdWNsa19zc19wZXJjZW50YWdlOwogIHVpbnQx Nl90IGdwdWNsa19zc190eXBlOwogIHVpbnQxNl90IGx2ZHNfc3NfcGVyY2VudGFnZTsKICB1aW50 MTZfdCBsdmRzX3NzX3JhdGVfMTBoejsKICB1aW50MTZfdCBoZG1pX3NzX3BlcmNlbnRhZ2U7CiAg dWludDE2X3QgaGRtaV9zc19yYXRlXzEwaHo7CiAgdWludDE2X3QgZHZpX3NzX3BlcmNlbnRhZ2U7 CiAgdWludDE2X3QgZHZpX3NzX3JhdGVfMTBoejsKICB1aW50MTZfdCBkcHBoeV9vdmVycmlkZTsK ICB1aW50MTZfdCBsdmRzX21pc2M7CiAgdWludDE2X3QgYmFja2xpZ2h0X3B3bV9oejsKICB1aW50 OF90IG1lbW9yeXR5cGU7CiAgdWludDhfdCB1bWFjaGFubmVsbnVtYmVyOwogIHVpbnQ4X3QgcHdy X29uX2RpZ29uX3RvX2RlOwogIHVpbnQ4X3QgcHdyX29uX2RlX3RvX3ZhcnlfYmw7CiAgdWludDhf dCBwd3JfZG93bl92YXJ5X2Jsb2ZmX3RvX2RlOwogIHVpbnQ4X3QgcHdyX2Rvd25fZGVfdG9fZGln b2ZmOwogIHVpbnQ4X3QgcHdyX29mZl9kZWxheTsKICB1aW50OF90IHB3cl9vbl92YXJ5X2JsX3Rv X2Jsb247CiAgdWludDhfdCBwd3JfZG93bl9ibG9mZl90b192YXJ5X2Jsb2ZmOwogIHVpbnQ4X3Qg bWluX2FsbG93ZWRfYmxfbGV2ZWw7CiAgdWludDhfdCBodGNfaHlzdF9saW1pdDsKICB1aW50OF90 IGh0Y190bXBfbGltaXQ7CiAgdWludDhfdCByZXNlcnZlZDE7CiAgdWludDhfdCByZXNlcnZlZDI7 CiAgc3RydWN0IGF0b21fZXh0ZXJuYWxfZGlzcGxheV9jb25uZWN0aW9uX2luZm8gZXh0ZGlzcGNv bm5pbmZvOwogIHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlfZHZpaGRtaV90dW5pbmdzZXQgZHZpX3R1 bmluZ3NldDsKICBzdHJ1Y3QgYXRvbV8xNG5tX2RwcGh5X2R2aWhkbWlfdHVuaW5nc2V0IGhkbWlf dHVuaW5nc2V0OwogIHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlfZHZpaGRtaV90dW5pbmdzZXQgaGRt aTZnX3R1bmluZ3NldDsKICBzdHJ1Y3QgYXRvbV8xNG5tX2RwcGh5X2RwX3R1bmluZ3NldCBkcF90 dW5pbmdzZXQ7CiAgc3RydWN0IGF0b21fMTRubV9kcHBoeV9kcF90dW5pbmdzZXQgZHBfaGJyM190 dW5pbmdzZXQ7CiAgc3RydWN0IGF0b21fY2FtZXJhX2RhdGEgY2FtZXJhX2luZm87CiAgc3RydWN0 IGF0b21faGRtaV9yZXRpbWVyX3JlZHJpdmVyX3NldCBkcDBfcmV0aW1lcl9zZXQ7CiAgc3RydWN0 IGF0b21faGRtaV9yZXRpbWVyX3JlZHJpdmVyX3NldCBkcDFfcmV0aW1lcl9zZXQ7CiAgc3RydWN0 IGF0b21faGRtaV9yZXRpbWVyX3JlZHJpdmVyX3NldCBkcDJfcmV0aW1lcl9zZXQ7CiAgc3RydWN0 IGF0b21faGRtaV9yZXRpbWVyX3JlZHJpdmVyX3NldCBkcDNfcmV0aW1lcl9zZXQ7CiAgc3RydWN0 IGF0b21fMTRubV9kcHBoeV9kcF90dW5pbmdzZXQgZHBfaGJyX3R1bmluZ3NldDsKICBzdHJ1Y3Qg YXRvbV8xNG5tX2RwcGh5X2RwX3R1bmluZ3NldCBkcF9oYnIyX3R1bmluZ3NldDsKICBzdHJ1Y3Qg YXRvbV8xNG5tX2RwcGh5X2RwX3R1bmluZ3NldCBlZHBfdHVuaW5nc2V0OwogIHVpbnQzMl90IHJl c2VydmVkWzY2XTsKfTsKCgoKZW51bSBhdG9tX3N5c3RlbV92Ymlvc21pc2NfZGVmewogIElOVEVH UkFURURfU1lTVEVNX0lORk9fX0dFVF9FRElEX0NBTExCQUNLX0ZVTkNfU1VQUE9SVCA9IDB4MDEs Cn07CgoKCmVudW0gYXRvbV9zeXN0ZW1fZ3B1Y2FwaW5mX2RlZnsKICBTWVNfSU5GT19HUFVDQVBT X19FTkFCRUxfREZTX0JZUEFTUyA9IDB4MTAsCn07CgoKZW51bSBhdG9tX3N5c2luZm9fZHBwaHlf b3ZlcnJpZGVfZGVmewogIEFUT01fRU5BQkxFX0RWSV9UVU5JTkdTRVQgPSAweDAxLAogIEFUT01f RU5BQkxFX0hETUlfVFVOSU5HU0VUID0gMHgwMiwKICBBVE9NX0VOQUJMRV9IRE1JNkdfVFVOSU5H U0VUID0gMHgwNCwKICBBVE9NX0VOQUJMRV9EUF9UVU5JTkdTRVQgPSAweDA4LAogIEFUT01fRU5B QkxFX0RQX0hCUjNfVFVOSU5HU0VUID0gMHgxMCwKfTsKCgplbnVtIGF0b21fc3lzX2luZm9fbHZk c19taXNjX2RlZgp7CiAgU1lTX0lORk9fTFZEU19NSVNDXzg4OF9GUERJX01PREUgPTB4MDEsCiAg U1lTX0lORk9fTFZEU19NSVNDXzg4OF9CUENfTU9ERSA9MHgwNCwKICBTWVNfSU5GT19MVkRTX01J U0NfT1ZFUlJJREVfRU4gPTB4MDgsCn07CgoKCmVudW0gYXRvbV9kbWlfdDE3X21lbV90eXBlX2Rl ZnsKICBPdGhlck1lbVR5cGUgPSAweDAxLAogIFVua25vd25NZW1UeXBlLAogIERyYW1NZW1UeXBl LAogIEVkcmFtTWVtVHlwZSwKICBWcmFtTWVtVHlwZSwKICBTcmFtTWVtVHlwZSwKICBSYW1NZW1U eXBlLAogIFJvbU1lbVR5cGUsCiAgRmxhc2hNZW1UeXBlLAogIEVlcHJvbU1lbVR5cGUsCiAgRmVw cm9tTWVtVHlwZSwKICBFcHJvbU1lbVR5cGUsCiAgQ2RyYW1NZW1UeXBlLAogIFRocmVlRHJhbU1l bVR5cGUsCiAgU2RyYW1NZW1UeXBlLAogIFNncmFtTWVtVHlwZSwKICBSZHJhbU1lbVR5cGUsCiAg RGRyTWVtVHlwZSwKICBEZHIyTWVtVHlwZSwKICBEZHIyRmJkaW1tTWVtVHlwZSwKICBEZHIzTWVt VHlwZSA9IDB4MTgsCiAgRmJkMk1lbVR5cGUsCiAgRGRyNE1lbVR5cGUsCiAgTHBEZHJNZW1UeXBl LAogIExwRGRyMk1lbVR5cGUsCiAgTHBEZHIzTWVtVHlwZSwKICBMcERkcjRNZW1UeXBlLAp9OwoK CgpzdHJ1Y3QgYXRvbV9mdXNpb25fc3lzdGVtX2luZm9fdjQKewogIHN0cnVjdCBhdG9tX2ludGVn cmF0ZWRfc3lzdGVtX2luZm9fdjFfMTEgc3lzaW5mbzsKICB1aW50MzJfdCBwb3dlcnBsYXlpbmZv WzI1Nl07Cn07CiMgMTIxOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRl L2F0b21maXJtd2FyZS5oIgpzdHJ1Y3QgYXRvbV9nZnhfaW5mb192Ml8yCnsKICBzdHJ1Y3QgYXRv bV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50OF90IGdmeGlwX21pbl92 ZXI7CiAgdWludDhfdCBnZnhpcF9tYXhfdmVyOwogIHVpbnQ4X3QgbWF4X3NoYWRlcl9lbmdpbmVz OwogIHVpbnQ4X3QgbWF4X3RpbGVfcGlwZXM7CiAgdWludDhfdCBtYXhfY3VfcGVyX3NoOwogIHVp bnQ4X3QgbWF4X3NoX3Blcl9zZTsKICB1aW50OF90IG1heF9iYWNrZW5kc19wZXJfc2U7CiAgdWlu dDhfdCBtYXhfdGV4dHVyZV9jaGFubmVsX2NhY2hlczsKICB1aW50MzJfdCByZWdhZGRyX2NwX2Rt YV9zcmNfYWRkcjsKICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9zcmNfYWRkcl9oaTsKICB1aW50 MzJfdCByZWdhZGRyX2NwX2RtYV9kc3RfYWRkcjsKICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9k c3RfYWRkcl9oaTsKICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9jb21tYW5kOwogIHVpbnQzMl90 IHJlZ2FkZHJfY3Bfc3RhdHVzOwogIHVpbnQzMl90IHJlZ2FkZHJfcmxjX2dwdV9jbG9ja18zMjsK ICB1aW50MzJfdCBybGNfZ3B1X3RpbWVyX3JlZmNsazsKfTsKCnN0cnVjdCBhdG9tX2dmeF9pbmZv X3YyXzMgewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwog IHVpbnQ4X3QgZ2Z4aXBfbWluX3ZlcjsKICB1aW50OF90IGdmeGlwX21heF92ZXI7CiAgdWludDhf dCBtYXhfc2hhZGVyX2VuZ2luZXM7CiAgdWludDhfdCBtYXhfdGlsZV9waXBlczsKICB1aW50OF90 IG1heF9jdV9wZXJfc2g7CiAgdWludDhfdCBtYXhfc2hfcGVyX3NlOwogIHVpbnQ4X3QgbWF4X2Jh Y2tlbmRzX3Blcl9zZTsKICB1aW50OF90IG1heF90ZXh0dXJlX2NoYW5uZWxfY2FjaGVzOwogIHVp bnQzMl90IHJlZ2FkZHJfY3BfZG1hX3NyY19hZGRyOwogIHVpbnQzMl90IHJlZ2FkZHJfY3BfZG1h X3NyY19hZGRyX2hpOwogIHVpbnQzMl90IHJlZ2FkZHJfY3BfZG1hX2RzdF9hZGRyOwogIHVpbnQz Ml90IHJlZ2FkZHJfY3BfZG1hX2RzdF9hZGRyX2hpOwogIHVpbnQzMl90IHJlZ2FkZHJfY3BfZG1h X2NvbW1hbmQ7CiAgdWludDMyX3QgcmVnYWRkcl9jcF9zdGF0dXM7CiAgdWludDMyX3QgcmVnYWRk cl9ybGNfZ3B1X2Nsb2NrXzMyOwogIHVpbnQzMl90IHJsY19ncHVfdGltZXJfcmVmY2xrOwogIHVp bnQ4X3QgYWN0aXZlX2N1X3Blcl9zaDsKICB1aW50OF90IGFjdGl2ZV9yYl9wZXJfc2U7CiAgdWlu dDE2X3QgZ2Nnb2xkZW5vZmZzZXQ7CiAgdWludDMyX3Qgcm0yMV9zcmFtX3ZtaW5fdmFsdWU7Cn07 CgpzdHJ1Y3QgYXRvbV9nZnhfaW5mb192Ml80CnsKICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVf aGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50OF90IGdmeGlwX21pbl92ZXI7CiAgdWludDhfdCBn ZnhpcF9tYXhfdmVyOwogIHVpbnQ4X3QgbWF4X3NoYWRlcl9lbmdpbmVzOwogIHVpbnQ4X3QgcmVz ZXJ2ZWQ7CiAgdWludDhfdCBtYXhfY3VfcGVyX3NoOwogIHVpbnQ4X3QgbWF4X3NoX3Blcl9zZTsK ICB1aW50OF90IG1heF9iYWNrZW5kc19wZXJfc2U7CiAgdWludDhfdCBtYXhfdGV4dHVyZV9jaGFu bmVsX2NhY2hlczsKICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9zcmNfYWRkcjsKICB1aW50MzJf dCByZWdhZGRyX2NwX2RtYV9zcmNfYWRkcl9oaTsKICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9k c3RfYWRkcjsKICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9kc3RfYWRkcl9oaTsKICB1aW50MzJf dCByZWdhZGRyX2NwX2RtYV9jb21tYW5kOwogIHVpbnQzMl90IHJlZ2FkZHJfY3Bfc3RhdHVzOwog IHVpbnQzMl90IHJlZ2FkZHJfcmxjX2dwdV9jbG9ja18zMjsKICB1aW50MzJfdCBybGNfZ3B1X3Rp bWVyX3JlZmNsazsKICB1aW50OF90IGFjdGl2ZV9jdV9wZXJfc2g7CiAgdWludDhfdCBhY3RpdmVf cmJfcGVyX3NlOwogIHVpbnQxNl90IGdjZ29sZGVub2Zmc2V0OwogIHVpbnQxNl90IGdjX251bV9n cHJzOwogIHVpbnQxNl90IGdjX2dzcHJpbV9idWZmX2RlcHRoOwogIHVpbnQxNl90IGdjX3BhcmFt ZXRlcl9jYWNoZV9kZXB0aDsKICB1aW50MTZfdCBnY193YXZlX3NpemU7CiAgdWludDE2X3QgZ2Nf bWF4X3dhdmVzX3Blcl9zaW1kOwogIHVpbnQxNl90IGdjX2xkc19zaXplOwogIHVpbnQ4X3QgZ2Nf bnVtX21heF9nc190aGRzOwogIHVpbnQ4X3QgZ2NfZ3NfdGFibGVfZGVwdGg7CiAgdWludDhfdCBn Y19kb3VibGVfb2ZmY2hpcF9sZHNfYnVmZmVyOwogIHVpbnQ4X3QgZ2NfbWF4X3NjcmF0Y2hfc2xv dHNfcGVyX2N1OwogIHVpbnQzMl90IHNyYW1fcm1fZnVzZXNfdmFsOwogIHVpbnQzMl90IHNyYW1f Y3VzdG9tX3JtX2Z1c2VzX3ZhbDsKfTsKCgoKCgoKc3RydWN0IGF0b21fc211X2luZm9fdjNfMQp7 CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CiAgdWludDhf dCBzbXVpcF9taW5fdmVyOwogIHVpbnQ4X3Qgc211aXBfbWF4X3ZlcjsKICB1aW50OF90IHNtdV9y c2QxOwogIHVpbnQ4X3QgZ3B1Y2xrX3NzX21vZGU7CiAgdWludDE2X3Qgc2Nsa19zc19wZXJjZW50 YWdlOwogIHVpbnQxNl90IHNjbGtfc3NfcmF0ZV8xMGh6OwogIHVpbnQxNl90IGdwdWNsa19zc19w ZXJjZW50YWdlOwogIHVpbnQxNl90IGdwdWNsa19zc19yYXRlXzEwaHo7CiAgdWludDMyX3QgY29y ZV9yZWZjbGtfMTBraHo7CiAgdWludDhfdCBhY19kY19ncGlvX2JpdDsKICB1aW50OF90IGFjX2Rj X3BvbGFyaXR5OwogIHVpbnQ4X3QgdnIwaG90X2dwaW9fYml0OwogIHVpbnQ4X3QgdnIwaG90X3Bv bGFyaXR5OwogIHVpbnQ4X3QgdnIxaG90X2dwaW9fYml0OwogIHVpbnQ4X3QgdnIxaG90X3BvbGFy aXR5OwogIHVpbnQ4X3QgZndfY3RmX2dwaW9fYml0OwogIHVpbnQ4X3QgZndfY3RmX3BvbGFyaXR5 Owp9OwoKc3RydWN0IGF0b21fc211X2luZm9fdjNfMiB7CiAgc3RydWN0IGF0b21fY29tbW9uX3Rh YmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CiAgdWludDhfdCBzbXVpcF9taW5fdmVyOwogIHVpbnQ4 X3Qgc211aXBfbWF4X3ZlcjsKICB1aW50OF90IHNtdV9yc2QxOwogIHVpbnQ4X3QgZ3B1Y2xrX3Nz X21vZGU7CiAgdWludDE2X3Qgc2Nsa19zc19wZXJjZW50YWdlOwogIHVpbnQxNl90IHNjbGtfc3Nf cmF0ZV8xMGh6OwogIHVpbnQxNl90IGdwdWNsa19zc19wZXJjZW50YWdlOwogIHVpbnQxNl90IGdw dWNsa19zc19yYXRlXzEwaHo7CiAgdWludDMyX3QgY29yZV9yZWZjbGtfMTBraHo7CiAgdWludDhf dCBhY19kY19ncGlvX2JpdDsKICB1aW50OF90IGFjX2RjX3BvbGFyaXR5OwogIHVpbnQ4X3QgdnIw aG90X2dwaW9fYml0OwogIHVpbnQ4X3QgdnIwaG90X3BvbGFyaXR5OwogIHVpbnQ4X3QgdnIxaG90 X2dwaW9fYml0OwogIHVpbnQ4X3QgdnIxaG90X3BvbGFyaXR5OwogIHVpbnQ4X3QgZndfY3RmX2dw aW9fYml0OwogIHVpbnQ4X3QgZndfY3RmX3BvbGFyaXR5OwogIHVpbnQ4X3QgcGNjX2dwaW9fYml0 OwogIHVpbnQ4X3QgcGNjX2dwaW9fcG9sYXJpdHk7CiAgdWludDE2X3Qgc211Z29sZGVub2Zmc2V0 OwogIHVpbnQzMl90IGdwdXBsbF92Y29fZnJlcV8xMGtoejsKICB1aW50MzJfdCBib290dXBfc21u Y2xrXzEwa2h6OwogIHVpbnQzMl90IGJvb3R1cF9zb2NjbGtfMTBraHo7CiAgdWludDMyX3QgYm9v dHVwX21wMGNsa18xMGtoejsKICB1aW50MzJfdCBib290dXBfbXAxY2xrXzEwa2h6OwogIHVpbnQz Ml90IGJvb3R1cF9sY2xrXzEwa2h6OwogIHVpbnQzMl90IGJvb3R1cF9kY2VmY2xrXzEwa2h6Owog IHVpbnQzMl90IGN0Zl90aHJlc2hvbGRfb3ZlcnJpZGVfdmFsdWU7CiAgdWludDMyX3QgcmVzZXJ2 ZWRbNV07Cn07CgpzdHJ1Y3QgYXRvbV9zbXVfaW5mb192M18zIHsKICBzdHJ1Y3QgYXRvbV9jb21t b25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50OF90IHNtdWlwX21pbl92ZXI7CiAg dWludDhfdCBzbXVpcF9tYXhfdmVyOwogIHVpbnQ4X3Qgd2FmbGNsa19zc19tb2RlOwogIHVpbnQ4 X3QgZ3B1Y2xrX3NzX21vZGU7CiAgdWludDE2X3Qgc2Nsa19zc19wZXJjZW50YWdlOwogIHVpbnQx Nl90IHNjbGtfc3NfcmF0ZV8xMGh6OwogIHVpbnQxNl90IGdwdWNsa19zc19wZXJjZW50YWdlOwog IHVpbnQxNl90IGdwdWNsa19zc19yYXRlXzEwaHo7CiAgdWludDMyX3QgY29yZV9yZWZjbGtfMTBr aHo7CiAgdWludDhfdCBhY19kY19ncGlvX2JpdDsKICB1aW50OF90IGFjX2RjX3BvbGFyaXR5Owog IHVpbnQ4X3QgdnIwaG90X2dwaW9fYml0OwogIHVpbnQ4X3QgdnIwaG90X3BvbGFyaXR5OwogIHVp bnQ4X3QgdnIxaG90X2dwaW9fYml0OwogIHVpbnQ4X3QgdnIxaG90X3BvbGFyaXR5OwogIHVpbnQ4 X3QgZndfY3RmX2dwaW9fYml0OwogIHVpbnQ4X3QgZndfY3RmX3BvbGFyaXR5OwogIHVpbnQ4X3Qg cGNjX2dwaW9fYml0OwogIHVpbnQ4X3QgcGNjX2dwaW9fcG9sYXJpdHk7CiAgdWludDE2X3Qgc211 Z29sZGVub2Zmc2V0OwogIHVpbnQzMl90IGdwdXBsbF92Y29fZnJlcV8xMGtoejsKICB1aW50MzJf dCBib290dXBfc21uY2xrXzEwa2h6OwogIHVpbnQzMl90IGJvb3R1cF9zb2NjbGtfMTBraHo7CiAg dWludDMyX3QgYm9vdHVwX21wMGNsa18xMGtoejsKICB1aW50MzJfdCBib290dXBfbXAxY2xrXzEw a2h6OwogIHVpbnQzMl90IGJvb3R1cF9sY2xrXzEwa2h6OwogIHVpbnQzMl90IGJvb3R1cF9kY2Vm Y2xrXzEwa2h6OwogIHVpbnQzMl90IGN0Zl90aHJlc2hvbGRfb3ZlcnJpZGVfdmFsdWU7CiAgdWlu dDMyX3Qgc3lzcGxsM18wX3Zjb19mcmVxXzEwa2h6OwogIHVpbnQzMl90IHN5c3BsbDNfMV92Y29f ZnJlcV8xMGtoejsKICB1aW50MzJfdCBib290dXBfZmNsa18xMGtoejsKICB1aW50MzJfdCBib290 dXBfd2FmbGNsa18xMGtoejsKICB1aW50MzJfdCBzbXVfaW5mb19jYXBzOwogIHVpbnQxNl90IHdh ZmxjbGtfc3NfcGVyY2VudGFnZTsKICB1aW50MTZfdCBzbXVpbml0b2Zmc2V0OwogIHVpbnQzMl90 IHJlc2VydmVkOwp9OwoKCgoKCgpzdHJ1Y3QgYXRvbV9zbWNfZHBtX2luZm9fdjRfMQp7CiAgc3Ry dWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CiAgdWludDhfdCBsaXF1 aWQxX2kyY19hZGRyZXNzOwogIHVpbnQ4X3QgbGlxdWlkMl9pMmNfYWRkcmVzczsKICB1aW50OF90 IHZyX2kyY19hZGRyZXNzOwogIHVpbnQ4X3QgcGx4X2kyY19hZGRyZXNzOwoKICB1aW50OF90IGxp cXVpZF9pMmNfbGluZXNjbDsKICB1aW50OF90IGxpcXVpZF9pMmNfbGluZXNkYTsKICB1aW50OF90 IHZyX2kyY19saW5lc2NsOwogIHVpbnQ4X3QgdnJfaTJjX2xpbmVzZGE7CgogIHVpbnQ4X3QgcGx4 X2kyY19saW5lc2NsOwogIHVpbnQ4X3QgcGx4X2kyY19saW5lc2RhOwogIHVpbnQ4X3QgdnJzZW5z b3JwcmVzZW50OwogIHVpbnQ4X3QgbGlxdWlkc2Vuc29ycHJlc2VudDsKCiAgdWludDE2X3QgbWF4 dm9sdGFnZXN0ZXBnZng7CiAgdWludDE2X3QgbWF4dm9sdGFnZXN0ZXBzb2M7CgogIHVpbnQ4X3Qg dmRkZ2Z4dnJtYXBwaW5nOwogIHVpbnQ4X3QgdmRkc29jdnJtYXBwaW5nOwogIHVpbnQ4X3QgdmRk bWVtMHZybWFwcGluZzsKICB1aW50OF90IHZkZG1lbTF2cm1hcHBpbmc7CgogIHVpbnQ4X3QgZ2Z4 dWx2cGhhc2VzaGVkZGluZ21hc2s7CiAgdWludDhfdCBzb2N1bHZwaGFzZXNoZWRkaW5nbWFzazsK ICB1aW50OF90IHBhZGRpbmc4X3ZbMl07CgogIHVpbnQxNl90IGdmeG1heGN1cnJlbnQ7CiAgdWlu dDhfdCBnZnhvZmZzZXQ7CiAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeWdmeDsKCiAgdWludDE2 X3Qgc29jbWF4Y3VycmVudDsKICB1aW50OF90IHNvY29mZnNldDsKICB1aW50OF90IHBhZGRpbmdf dGVsZW1ldHJ5c29jOwoKICB1aW50MTZfdCBtZW0wbWF4Y3VycmVudDsKICB1aW50OF90IG1lbTBv ZmZzZXQ7CiAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeW1lbTA7CgogIHVpbnQxNl90IG1lbTFt YXhjdXJyZW50OwogIHVpbnQ4X3QgbWVtMW9mZnNldDsKICB1aW50OF90IHBhZGRpbmdfdGVsZW1l dHJ5bWVtMTsKCiAgdWludDhfdCBhY2RjZ3BpbzsKICB1aW50OF90IGFjZGNwb2xhcml0eTsKICB1 aW50OF90IHZyMGhvdGdwaW87CiAgdWludDhfdCB2cjBob3Rwb2xhcml0eTsKCiAgdWludDhfdCB2 cjFob3RncGlvOwogIHVpbnQ4X3QgdnIxaG90cG9sYXJpdHk7CiAgdWludDhfdCBwYWRkaW5nMTsK ICB1aW50OF90IHBhZGRpbmcyOwoKICB1aW50OF90IGxlZHBpbjA7CiAgdWludDhfdCBsZWRwaW4x OwogIHVpbnQ4X3QgbGVkcGluMjsKICB1aW50OF90IHBhZGRpbmc4XzQ7CgogdWludDhfdCBwbGxn ZnhjbGtzcHJlYWRlbmFibGVkOwogdWludDhfdCBwbGxnZnhjbGtzcHJlYWRwZXJjZW50OwogdWlu dDE2X3QgcGxsZ2Z4Y2xrc3ByZWFkZnJlcTsKCiAgdWludDhfdCB1Y2xrc3ByZWFkZW5hYmxlZDsK ICB1aW50OF90IHVjbGtzcHJlYWRwZXJjZW50OwogIHVpbnQxNl90IHVjbGtzcHJlYWRmcmVxOwoK ICB1aW50OF90IHNvY2Nsa3NwcmVhZGVuYWJsZWQ7CiAgdWludDhfdCBzb2NjbGtzcHJlYWRwZXJj ZW50OwogIHVpbnQxNl90IHNvY2Nsa3NwcmVhZGZyZXE7CgogdWludDhfdCBhY2dnZnhjbGtzcHJl YWRlbmFibGVkOwogdWludDhfdCBhY2dnZnhjbGtzcHJlYWRwZXJjZW50OwogdWludDE2X3QgYWNn Z2Z4Y2xrc3ByZWFkZnJlcTsKCiB1aW50OF90IFZyMl9JMkNfYWRkcmVzczsKIHVpbnQ4X3QgcGFk ZGluZ192cjJbM107CgogdWludDMyX3QgYm9hcmRyZXNlcnZlZFs5XTsKfTsKCgoKCgoKc3RydWN0 IGF0b21fc21jX2RwbV9pbmZvX3Y0XzMKewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFk ZXIgdGFibGVfaGVhZGVyOwogIHVpbnQ4X3QgbGlxdWlkMV9pMmNfYWRkcmVzczsKICB1aW50OF90 IGxpcXVpZDJfaTJjX2FkZHJlc3M7CiAgdWludDhfdCB2cl9pMmNfYWRkcmVzczsKICB1aW50OF90 IHBseF9pMmNfYWRkcmVzczsKCiAgdWludDhfdCBsaXF1aWRfaTJjX2xpbmVzY2w7CiAgdWludDhf dCBsaXF1aWRfaTJjX2xpbmVzZGE7CiAgdWludDhfdCB2cl9pMmNfbGluZXNjbDsKICB1aW50OF90 IHZyX2kyY19saW5lc2RhOwoKICB1aW50OF90IHBseF9pMmNfbGluZXNjbDsKICB1aW50OF90IHBs eF9pMmNfbGluZXNkYTsKICB1aW50OF90IHZyc2Vuc29ycHJlc2VudDsKICB1aW50OF90IGxpcXVp ZHNlbnNvcnByZXNlbnQ7CgogIHVpbnQxNl90IG1heHZvbHRhZ2VzdGVwZ2Z4OwogIHVpbnQxNl90 IG1heHZvbHRhZ2VzdGVwc29jOwoKICB1aW50OF90IHZkZGdmeHZybWFwcGluZzsKICB1aW50OF90 IHZkZHNvY3ZybWFwcGluZzsKICB1aW50OF90IHZkZG1lbTB2cm1hcHBpbmc7CiAgdWludDhfdCB2 ZGRtZW0xdnJtYXBwaW5nOwoKICB1aW50OF90IGdmeHVsdnBoYXNlc2hlZGRpbmdtYXNrOwogIHVp bnQ4X3Qgc29jdWx2cGhhc2VzaGVkZGluZ21hc2s7CiAgdWludDhfdCBleHRlcm5hbHNlbnNvcnBy ZXNlbnQ7CiAgdWludDhfdCBwYWRkaW5nOF92OwoKICB1aW50MTZfdCBnZnhtYXhjdXJyZW50Owog IHVpbnQ4X3QgZ2Z4b2Zmc2V0OwogIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0cnlnZng7CgogIHVp bnQxNl90IHNvY21heGN1cnJlbnQ7CiAgdWludDhfdCBzb2NvZmZzZXQ7CiAgdWludDhfdCBwYWRk aW5nX3RlbGVtZXRyeXNvYzsKCiAgdWludDE2X3QgbWVtMG1heGN1cnJlbnQ7CiAgdWludDhfdCBt ZW0wb2Zmc2V0OwogIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0cnltZW0wOwoKICB1aW50MTZfdCBt ZW0xbWF4Y3VycmVudDsKICB1aW50OF90IG1lbTFvZmZzZXQ7CiAgdWludDhfdCBwYWRkaW5nX3Rl bGVtZXRyeW1lbTE7CgogIHVpbnQ4X3QgYWNkY2dwaW87CiAgdWludDhfdCBhY2RjcG9sYXJpdHk7 CiAgdWludDhfdCB2cjBob3RncGlvOwogIHVpbnQ4X3QgdnIwaG90cG9sYXJpdHk7CgogIHVpbnQ4 X3QgdnIxaG90Z3BpbzsKICB1aW50OF90IHZyMWhvdHBvbGFyaXR5OwogIHVpbnQ4X3QgcGFkZGlu ZzE7CiAgdWludDhfdCBwYWRkaW5nMjsKCiAgdWludDhfdCBsZWRwaW4wOwogIHVpbnQ4X3QgbGVk cGluMTsKICB1aW50OF90IGxlZHBpbjI7CiAgdWludDhfdCBwYWRkaW5nOF80OwoKICB1aW50OF90 IHBsbGdmeGNsa3NwcmVhZGVuYWJsZWQ7CiAgdWludDhfdCBwbGxnZnhjbGtzcHJlYWRwZXJjZW50 OwogIHVpbnQxNl90IHBsbGdmeGNsa3NwcmVhZGZyZXE7CgogIHVpbnQ4X3QgdWNsa3NwcmVhZGVu YWJsZWQ7CiAgdWludDhfdCB1Y2xrc3ByZWFkcGVyY2VudDsKICB1aW50MTZfdCB1Y2xrc3ByZWFk ZnJlcTsKCiAgdWludDhfdCBmY2xrc3ByZWFkZW5hYmxlZDsKICB1aW50OF90IGZjbGtzcHJlYWRw ZXJjZW50OwogIHVpbnQxNl90IGZjbGtzcHJlYWRmcmVxOwoKICB1aW50OF90IGZsbGdmeGNsa3Nw cmVhZGVuYWJsZWQ7CiAgdWludDhfdCBmbGxnZnhjbGtzcHJlYWRwZXJjZW50OwogIHVpbnQxNl90 IGZsbGdmeGNsa3NwcmVhZGZyZXE7CgogIHVpbnQzMl90IGJvYXJkcmVzZXJ2ZWRbMTBdOwp9OwoK c3RydWN0IHNtdWRwbV9pMmNjb250cm9sbGVyY29uZmlnX3QgewogIHVpbnQzMl90IGVuYWJsZWQ7 CiAgdWludDMyX3Qgc2xhdmVhZGRyZXNzOwogIHVpbnQzMl90IGNvbnRyb2xsZXJwb3J0OwogIHVp bnQzMl90IGNvbnRyb2xsZXJuYW1lOwogIHVpbnQzMl90IHRoZXJtYWx0aHJvdHRsZXI7CiAgdWlu dDMyX3QgaTJjcHJvdG9jb2w7CiAgdWludDMyX3QgaTJjc3BlZWQ7Cn07CgpzdHJ1Y3QgYXRvbV9z bWNfZHBtX2luZm9fdjRfNAp7CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJs ZV9oZWFkZXI7CiAgdWludDMyX3QgaTJjX3BhZGRpbmdbM107CgogIHVpbnQxNl90IG1heHZvbHRh Z2VzdGVwZ2Z4OwogIHVpbnQxNl90IG1heHZvbHRhZ2VzdGVwc29jOwoKICB1aW50OF90IHZkZGdm eHZybWFwcGluZzsKICB1aW50OF90IHZkZHNvY3ZybWFwcGluZzsKICB1aW50OF90IHZkZG1lbTB2 cm1hcHBpbmc7CiAgdWludDhfdCB2ZGRtZW0xdnJtYXBwaW5nOwoKICB1aW50OF90IGdmeHVsdnBo YXNlc2hlZGRpbmdtYXNrOwogIHVpbnQ4X3Qgc29jdWx2cGhhc2VzaGVkZGluZ21hc2s7CiAgdWlu dDhfdCBleHRlcm5hbHNlbnNvcnByZXNlbnQ7CiAgdWludDhfdCBwYWRkaW5nOF92OwoKICB1aW50 MTZfdCBnZnhtYXhjdXJyZW50OwogIHVpbnQ4X3QgZ2Z4b2Zmc2V0OwogIHVpbnQ4X3QgcGFkZGlu Z190ZWxlbWV0cnlnZng7CgogIHVpbnQxNl90IHNvY21heGN1cnJlbnQ7CiAgdWludDhfdCBzb2Nv ZmZzZXQ7CiAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeXNvYzsKCiAgdWludDE2X3QgbWVtMG1h eGN1cnJlbnQ7CiAgdWludDhfdCBtZW0wb2Zmc2V0OwogIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0 cnltZW0wOwoKICB1aW50MTZfdCBtZW0xbWF4Y3VycmVudDsKICB1aW50OF90IG1lbTFvZmZzZXQ7 CiAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeW1lbTE7CgoKICB1aW50OF90IGFjZGNncGlvOwog IHVpbnQ4X3QgYWNkY3BvbGFyaXR5OwogIHVpbnQ4X3QgdnIwaG90Z3BpbzsKICB1aW50OF90IHZy MGhvdHBvbGFyaXR5OwoKICB1aW50OF90IHZyMWhvdGdwaW87CiAgdWludDhfdCB2cjFob3Rwb2xh cml0eTsKICB1aW50OF90IHBhZGRpbmcxOwogIHVpbnQ4X3QgcGFkZGluZzI7CgoKICB1aW50OF90 IGxlZHBpbjA7CiAgdWludDhfdCBsZWRwaW4xOwogIHVpbnQ4X3QgbGVkcGluMjsKICB1aW50OF90 IHBhZGRpbmc4XzQ7CgoKICB1aW50OF90IHBsbGdmeGNsa3NwcmVhZGVuYWJsZWQ7CiAgdWludDhf dCBwbGxnZnhjbGtzcHJlYWRwZXJjZW50OwogIHVpbnQxNl90IHBsbGdmeGNsa3NwcmVhZGZyZXE7 CgoKICB1aW50OF90IHVjbGtzcHJlYWRlbmFibGVkOwogIHVpbnQ4X3QgdWNsa3NwcmVhZHBlcmNl bnQ7CiAgdWludDE2X3QgdWNsa3NwcmVhZGZyZXE7CgoKICB1aW50OF90IGZjbGtzcHJlYWRlbmFi bGVkOwogIHVpbnQ4X3QgZmNsa3NwcmVhZHBlcmNlbnQ7CiAgdWludDE2X3QgZmNsa3NwcmVhZGZy ZXE7CgoKICB1aW50OF90IGZsbGdmeGNsa3NwcmVhZGVuYWJsZWQ7CiAgdWludDhfdCBmbGxnZnhj bGtzcHJlYWRwZXJjZW50OwogIHVpbnQxNl90IGZsbGdmeGNsa3NwcmVhZGZyZXE7CgoKICBzdHJ1 Y3Qgc211ZHBtX2kyY2NvbnRyb2xsZXJjb25maWdfdCBpMmNjb250cm9sbGVyc1s3XTsKCgogIHVp bnQzMl90IGJvYXJkcmVzZXJ2ZWRbMTBdOwp9OwoKZW51bSBzbXVkcG1fdjRfNV9pMmNjb250cm9s bGVybmFtZV9lewogICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9WUl9HRlggPSAwLAog ICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9WUl9TT0MsCiAgICBTTUNfVjRfNV9JMkNf Q09OVFJPTExFUl9OQU1FX1ZSX1ZERENJLAogICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFN RV9WUl9NVkRELAogICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9MSVFVSUQwLAogICAg U01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9MSVFVSUQxLAogICAgU01DX1Y0XzVfSTJDX0NP TlRST0xMRVJfTkFNRV9QTFgsCiAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9OQU1FX1NQQVJF LAogICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9DT1VOVCwKfTsKCmVudW0gc211ZHBt X3Y0XzVfaTJjY29udHJvbGxlcnRocm90dGxlcl9lewogICAgU01DX1Y0XzVfSTJDX0NPTlRST0xM RVJfVEhST1RUTEVSX1RZUEVfTk9ORSA9IDAsCiAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9U SFJPVFRMRVJfVlJfR0ZYLAogICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfVEhST1RUTEVSX1ZS X1NPQywKICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX1RIUk9UVExFUl9WUl9WRERDSSwKICAg IFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX1RIUk9UVExFUl9WUl9NVkRELAogICAgU01DX1Y0XzVf STJDX0NPTlRST0xMRVJfVEhST1RUTEVSX0xJUVVJRDAsCiAgICBTTUNfVjRfNV9JMkNfQ09OVFJP TExFUl9USFJPVFRMRVJfTElRVUlEMSwKICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX1RIUk9U VExFUl9QTFgsCiAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9USFJPVFRMRVJfQ09VTlQsCn07 CgplbnVtIHNtdWRwbV92NF81X2kyY2NvbnRyb2xsZXJwcm90b2NvbF9lewogICAgU01DX1Y0XzVf STJDX0NPTlRST0xMRVJfUFJPVE9DT0xfVlJfMCwKICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVS X1BST1RPQ09MX1ZSXzEsCiAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9QUk9UT0NPTF9UTVBf MCwKICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX1BST1RPQ09MX1RNUF8xLAogICAgU01DX1Y0 XzVfSTJDX0NPTlRST0xMRVJfUFJPVE9DT0xfU1BBUkVfMCwKICAgIFNNQ19WNF81X0kyQ19DT05U Uk9MTEVSX1BST1RPQ09MX1NQQVJFXzEsCiAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9QUk9U T0NPTF9DT1VOVCwKfTsKCnN0cnVjdCBzbXVkcG1faTJjX2NvbnRyb2xsZXJfY29uZmlnX3YyCnsK ICAgIHVpbnQ4X3QgRW5hYmxlZDsKICAgIHVpbnQ4X3QgU3BlZWQ7CiAgICB1aW50OF90IFBhZGRp bmdbMl07CiAgICB1aW50MzJfdCBTbGF2ZUFkZHJlc3M7CiAgICB1aW50OF90IENvbnRyb2xsZXJQ b3J0OwogICAgdWludDhfdCBDb250cm9sbGVyTmFtZTsKICAgIHVpbnQ4X3QgVGhlcm1hbFRocm90 dGVyOwogICAgdWludDhfdCBJMmNQcm90b2NvbDsKfTsKCnN0cnVjdCBhdG9tX3NtY19kcG1faW5m b192NF81CnsKICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsK CgogIHN0cnVjdCBzbXVkcG1faTJjX2NvbnRyb2xsZXJfY29uZmlnX3YyIEkyY0NvbnRyb2xsZXJz WzhdOwoKCiAgdWludDE2X3QgTWF4Vm9sdGFnZVN0ZXBHZng7CiAgdWludDE2X3QgTWF4Vm9sdGFn ZVN0ZXBTb2M7CgogIHVpbnQ4X3QgVmRkR2Z4VnJNYXBwaW5nOwogIHVpbnQ4X3QgVmRkU29jVnJN YXBwaW5nOwogIHVpbnQ4X3QgVmRkTWVtMFZyTWFwcGluZzsKICB1aW50OF90IFZkZE1lbTFWck1h cHBpbmc7CgogIHVpbnQ4X3QgR2Z4VWx2UGhhc2VTaGVkZGluZ01hc2s7CiAgdWludDhfdCBTb2NV bHZQaGFzZVNoZWRkaW5nTWFzazsKICB1aW50OF90IEV4dGVybmFsU2Vuc29yUHJlc2VudDsKICB1 aW50OF90IFBhZGRpbmc4X1Y7CgoKICB1aW50MTZfdCBHZnhNYXhDdXJyZW50OwogIHVpbnQ4X3Qg R2Z4T2Zmc2V0OwogIHVpbnQ4X3QgUGFkZGluZ19UZWxlbWV0cnlHZng7CiAgdWludDE2X3QgU29j TWF4Q3VycmVudDsKICB1aW50OF90IFNvY09mZnNldDsKICB1aW50OF90IFBhZGRpbmdfVGVsZW1l dHJ5U29jOwoKICB1aW50MTZfdCBNZW0wTWF4Q3VycmVudDsKICB1aW50OF90IE1lbTBPZmZzZXQ7 CiAgdWludDhfdCBQYWRkaW5nX1RlbGVtZXRyeU1lbTA7CgogIHVpbnQxNl90IE1lbTFNYXhDdXJy ZW50OwogIHVpbnQ4X3QgTWVtMU9mZnNldDsKICB1aW50OF90IFBhZGRpbmdfVGVsZW1ldHJ5TWVt MTsKCgogIHVpbnQ4X3QgQWNEY0dwaW87CiAgdWludDhfdCBBY0RjUG9sYXJpdHk7CiAgdWludDhf dCBWUjBIb3RHcGlvOwogIHVpbnQ4X3QgVlIwSG90UG9sYXJpdHk7CgogIHVpbnQ4X3QgVlIxSG90 R3BpbzsKICB1aW50OF90IFZSMUhvdFBvbGFyaXR5OwogIHVpbnQ4X3QgR3RockdwaW87CiAgdWlu dDhfdCBHdGhyUG9sYXJpdHk7CgoKICB1aW50OF90IExlZFBpbjA7CiAgdWludDhfdCBMZWRQaW4x OwogIHVpbnQ4X3QgTGVkUGluMjsKICB1aW50OF90IHBhZGRpbmc4XzQ7CgoKICB1aW50OF90IFBs bEdmeGNsa1NwcmVhZEVuYWJsZWQ7CiAgdWludDhfdCBQbGxHZnhjbGtTcHJlYWRQZXJjZW50Owog IHVpbnQxNl90IFBsbEdmeGNsa1NwcmVhZEZyZXE7CgoKICB1aW50OF90IERmbGxHZnhjbGtTcHJl YWRFbmFibGVkOwogIHVpbnQ4X3QgRGZsbEdmeGNsa1NwcmVhZFBlcmNlbnQ7CiAgdWludDE2X3Qg RGZsbEdmeGNsa1NwcmVhZEZyZXE7CgoKICB1aW50OF90IFVjbGtTcHJlYWRFbmFibGVkOwogIHVp bnQ4X3QgVWNsa1NwcmVhZFBlcmNlbnQ7CiAgdWludDE2X3QgVWNsa1NwcmVhZEZyZXE7CgoKICB1 aW50OF90IFNvY2xrU3ByZWFkRW5hYmxlZDsKICB1aW50OF90IFNvY2Nsa1NwcmVhZFBlcmNlbnQ7 CiAgdWludDE2X3QgU29jY2xrU3ByZWFkRnJlcTsKCgogIHVpbnQxNl90IFRvdGFsQm9hcmRQb3dl cjsKICB1aW50MTZfdCBCb2FyZFBhZGRpbmc7CgoKICB1aW50MzJfdCBNdmRkUmF0aW87CgogIHVp bnQzMl90IEJvYXJkUmVzZXJ2ZWRbOV07Cgp9OwoKc3RydWN0IGF0b21fc21jX2RwbV9pbmZvX3Y0 XzYKewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwoKICB1 aW50MzJfdCBpMmNfcGFkZGluZ1szXTsKCiAgdWludDE2X3QgbWF4dm9sdGFnZXN0ZXBnZng7CiAg dWludDE2X3QgbWF4dm9sdGFnZXN0ZXBzb2M7CgogIHVpbnQ4X3QgdmRkZ2Z4dnJtYXBwaW5nOwog IHVpbnQ4X3QgdmRkc29jdnJtYXBwaW5nOwogIHVpbnQ4X3QgdmRkbWVtdnJtYXBwaW5nOwogIHVp bnQ4X3QgYm9hcmR2cm1hcHBpbmc7CgogIHVpbnQ4X3QgZ2Z4dWx2cGhhc2VzaGVkZGluZ21hc2s7 CiAgdWludDhfdCBleHRlcm5hbHNlbnNvcnByZXNlbnQ7CiAgdWludDhfdCBwYWRkaW5nOF92WzJd OwoKCiAgdWludDE2X3QgZ2Z4bWF4Y3VycmVudDsKICB1aW50OF90IGdmeG9mZnNldDsKICB1aW50 OF90IHBhZGRpbmdfdGVsZW1ldHJ5Z2Z4OwoKICB1aW50MTZfdCBzb2NtYXhjdXJyZW50OwogIHVp bnQ4X3Qgc29jb2Zmc2V0OwogIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0cnlzb2M7CgogIHVpbnQx Nl90IG1lbW1heGN1cnJlbnQ7CiAgdWludDhfdCBtZW1vZmZzZXQ7CiAgdWludDhfdCBwYWRkaW5n X3RlbGVtZXRyeW1lbTsKCiAgdWludDE2X3QgYm9hcmRtYXhjdXJyZW50OwogIHVpbnQ4X3QgYm9h cmRvZmZzZXQ7CiAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeWJvYXJkaW5wdXQ7CgoKICB1aW50 OF90IHZyMGhvdGdwaW87CiAgdWludDhfdCB2cjBob3Rwb2xhcml0eTsKICB1aW50OF90IHZyMWhv dGdwaW87CiAgdWludDhfdCB2cjFob3Rwb2xhcml0eTsKCgogIHVpbnQ4X3QgcGxsZ2Z4Y2xrc3By ZWFkZW5hYmxlZDsKICB1aW50OF90IHBsbGdmeGNsa3NwcmVhZHBlcmNlbnQ7CiAgdWludDE2X3Qg cGxsZ2Z4Y2xrc3ByZWFkZnJlcTsKCgogIHVpbnQ4X3QgdWNsa3NwcmVhZGVuYWJsZWQ7CiAgdWlu dDhfdCB1Y2xrc3ByZWFkcGVyY2VudDsKICB1aW50MTZfdCB1Y2xrc3ByZWFkZnJlcTsKCgogIHVp bnQ4X3QgZmNsa3NwcmVhZGVuYWJsZWQ7CiAgdWludDhfdCBmY2xrc3ByZWFkcGVyY2VudDsKICB1 aW50MTZfdCBmY2xrc3ByZWFkZnJlcTsKCgoKICB1aW50OF90IGZsbGdmeGNsa3NwcmVhZGVuYWJs ZWQ7CiAgdWludDhfdCBmbGxnZnhjbGtzcHJlYWRwZXJjZW50OwogIHVpbnQxNl90IGZsbGdmeGNs a3NwcmVhZGZyZXE7CgoKICBzdHJ1Y3Qgc211ZHBtX2kyY19jb250cm9sbGVyX2NvbmZpZ192MiBp MmNjb250cm9sbGVyc1s4XTsKCgogIHVpbnQzMl90IG1lbW9yeWNoYW5uZWxlbmFibGVkOwoKICB1 aW50OF90IGRyYW1iaXR3aWR0aDsKICB1aW50OF90IHBhZGRpbmdtZW1bM107CgoKICB1aW50MTZf dCB0b3RhbGJvYXJkcG93ZXI7CiAgdWludDE2X3QgYm9hcmRwYWRkaW5nOwoKCiAgdWludDhfdCB4 Z21pbGlua3NwZWVkWzRdOwogIHVpbnQ4X3QgeGdtaWxpbmt3aWR0aFs0XTsKCiAgdWludDE2X3Qg eGdtaWZjbGtmcmVxWzRdOwogIHVpbnQxNl90IHhnbWlzb2N2b2x0YWdlWzRdOwoKCiAgdWludDMy X3QgYm9hcmRyZXNlcnZlZFsxMF07Cn07CgoKCgoKCnN0cnVjdCBhdG9tX2FzaWNfcHJvZmlsaW5n X2luZm9fdjRfMQp7CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFk ZXI7CiAgdWludDMyX3QgbWF4dmRkYzsKICB1aW50MzJfdCBtaW52ZGRjOwogIHVpbnQzMl90IGF2 ZnNfbWVhbm5zaWdtYV9hY29udGFudDA7CiAgdWludDMyX3QgYXZmc19tZWFubnNpZ21hX2Fjb250 YW50MTsKICB1aW50MzJfdCBhdmZzX21lYW5uc2lnbWFfYWNvbnRhbnQyOwogIHVpbnQxNl90IGF2 ZnNfbWVhbm5zaWdtYV9kY190b2xfc2lnbWE7CiAgdWludDE2X3QgYXZmc19tZWFubnNpZ21hX3Bs YXRmb3JtX21lYW47CiAgdWludDE2X3QgYXZmc19tZWFubnNpZ21hX3BsYXRmb3JtX3NpZ21hOwog IHVpbnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3NvZmZfYTA7CiAgdWludDMyX3QgZ2JfdmRyb29w X3RhYmxlX2Nrc29mZl9hMTsKICB1aW50MzJfdCBnYl92ZHJvb3BfdGFibGVfY2tzb2ZmX2EyOwog IHVpbnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3Nvbl9hMDsKICB1aW50MzJfdCBnYl92ZHJvb3Bf dGFibGVfY2tzb25fYTE7CiAgdWludDMyX3QgZ2JfdmRyb29wX3RhYmxlX2Nrc29uX2EyOwogIHVp bnQzMl90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29mZl9tMTsKICB1aW50MzJfdCBhdmZzZ2JfZnVz ZV90YWJsZV9ja3NvZmZfbTI7CiAgdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVfY2tzb2ZmX2I7 CiAgdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVfY2tzb25fbTE7CiAgdWludDMyX3QgYXZmc2di X2Z1c2VfdGFibGVfY2tzb25fbTI7CiAgdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVfY2tzb25f YjsKICB1aW50MTZfdCBtYXhfdm9sdGFnZV8wXzI1bXY7CiAgdWludDhfdCBlbmFibGVfZ2JfdmRy b29wX3RhYmxlX2Nrc29mZjsKICB1aW50OF90IGVuYWJsZV9nYl92ZHJvb3BfdGFibGVfY2tzb247 CiAgdWludDhfdCBlbmFibGVfZ2JfZnVzZV90YWJsZV9ja3NvZmY7CiAgdWludDhfdCBlbmFibGVf Z2JfZnVzZV90YWJsZV9ja3NvbjsKICB1aW50MTZfdCBwc21fYWdlX2NvbWZhY3RvcjsKICB1aW50 OF90IGVuYWJsZV9hcHBseV9hdmZzX2Nrc29mZl92b2x0YWdlOwogIHVpbnQ4X3QgcmVzZXJ2ZWQ7 CiAgdWludDMyX3QgZGlzcGNsazJnZnhjbGtfYTsKICB1aW50MzJfdCBkaXNwY2xrMmdmeGNsa19i OwogIHVpbnQzMl90IGRpc3BjbGsyZ2Z4Y2xrX2M7CiAgdWludDMyX3QgcGl4Y2xrMmdmeGNsa19h OwogIHVpbnQzMl90IHBpeGNsazJnZnhjbGtfYjsKICB1aW50MzJfdCBwaXhjbGsyZ2Z4Y2xrX2M7 CiAgdWludDMyX3QgZGNlZmNsazJnZnhjbGtfYTsKICB1aW50MzJfdCBkY2VmY2xrMmdmeGNsa19i OwogIHVpbnQzMl90IGRjZWZjbGsyZ2Z4Y2xrX2M7CiAgdWludDMyX3QgcGh5Y2xrMmdmeGNsa19h OwogIHVpbnQzMl90IHBoeWNsazJnZnhjbGtfYjsKICB1aW50MzJfdCBwaHljbGsyZ2Z4Y2xrX2M7 Cn07CgpzdHJ1Y3QgYXRvbV9hc2ljX3Byb2ZpbGluZ19pbmZvX3Y0XzIgewogc3RydWN0IGF0b21f Y29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CiB1aW50MzJfdCBtYXh2ZGRjOwogdWlu dDMyX3QgbWludmRkYzsKIHVpbnQzMl90IGF2ZnNfbWVhbm5zaWdtYV9hY29udGFudDA7CiB1aW50 MzJfdCBhdmZzX21lYW5uc2lnbWFfYWNvbnRhbnQxOwogdWludDMyX3QgYXZmc19tZWFubnNpZ21h X2Fjb250YW50MjsKIHVpbnQxNl90IGF2ZnNfbWVhbm5zaWdtYV9kY190b2xfc2lnbWE7CiB1aW50 MTZfdCBhdmZzX21lYW5uc2lnbWFfcGxhdGZvcm1fbWVhbjsKIHVpbnQxNl90IGF2ZnNfbWVhbm5z aWdtYV9wbGF0Zm9ybV9zaWdtYTsKIHVpbnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3NvZmZfYTA7 CiB1aW50MzJfdCBnYl92ZHJvb3BfdGFibGVfY2tzb2ZmX2ExOwogdWludDMyX3QgZ2JfdmRyb29w X3RhYmxlX2Nrc29mZl9hMjsKIHVpbnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3Nvbl9hMDsKIHVp bnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3Nvbl9hMTsKIHVpbnQzMl90IGdiX3Zkcm9vcF90YWJs ZV9ja3Nvbl9hMjsKIHVpbnQzMl90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29mZl9tMTsKIHVpbnQz Ml90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29mZl9tMjsKIHVpbnQzMl90IGF2ZnNnYl9mdXNlX3Rh YmxlX2Nrc29mZl9iOwogdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVfY2tzb25fbTE7CiB1aW50 MzJfdCBhdmZzZ2JfZnVzZV90YWJsZV9ja3Nvbl9tMjsKIHVpbnQzMl90IGF2ZnNnYl9mdXNlX3Rh YmxlX2Nrc29uX2I7CiB1aW50MTZfdCBtYXhfdm9sdGFnZV8wXzI1bXY7CiB1aW50OF90IGVuYWJs ZV9nYl92ZHJvb3BfdGFibGVfY2tzb2ZmOwogdWludDhfdCBlbmFibGVfZ2JfdmRyb29wX3RhYmxl X2Nrc29uOwogdWludDhfdCBlbmFibGVfZ2JfZnVzZV90YWJsZV9ja3NvZmY7CiB1aW50OF90IGVu YWJsZV9nYl9mdXNlX3RhYmxlX2Nrc29uOwogdWludDE2X3QgcHNtX2FnZV9jb21mYWN0b3I7CiB1 aW50OF90IGVuYWJsZV9hcHBseV9hdmZzX2Nrc29mZl92b2x0YWdlOwogdWludDhfdCByZXNlcnZl ZDsKIHVpbnQzMl90IGRpc3BjbGsyZ2Z4Y2xrX2E7CiB1aW50MzJfdCBkaXNwY2xrMmdmeGNsa19i OwogdWludDMyX3QgZGlzcGNsazJnZnhjbGtfYzsKIHVpbnQzMl90IHBpeGNsazJnZnhjbGtfYTsK IHVpbnQzMl90IHBpeGNsazJnZnhjbGtfYjsKIHVpbnQzMl90IHBpeGNsazJnZnhjbGtfYzsKIHVp bnQzMl90IGRjZWZjbGsyZ2Z4Y2xrX2E7CiB1aW50MzJfdCBkY2VmY2xrMmdmeGNsa19iOwogdWlu dDMyX3QgZGNlZmNsazJnZnhjbGtfYzsKIHVpbnQzMl90IHBoeWNsazJnZnhjbGtfYTsKIHVpbnQz Ml90IHBoeWNsazJnZnhjbGtfYjsKIHVpbnQzMl90IHBoeWNsazJnZnhjbGtfYzsKIHVpbnQzMl90 IGFjZ19nYl92ZHJvb3BfdGFibGVfYTA7CiB1aW50MzJfdCBhY2dfZ2JfdmRyb29wX3RhYmxlX2Ex OwogdWludDMyX3QgYWNnX2diX3Zkcm9vcF90YWJsZV9hMjsKIHVpbnQzMl90IGFjZ19hdmZzZ2Jf ZnVzZV90YWJsZV9tMTsKIHVpbnQzMl90IGFjZ19hdmZzZ2JfZnVzZV90YWJsZV9tMjsKIHVpbnQz Ml90IGFjZ19hdmZzZ2JfZnVzZV90YWJsZV9iOwogdWludDhfdCBlbmFibGVfYWNnX2diX3Zkcm9v cF90YWJsZTsKIHVpbnQ4X3QgZW5hYmxlX2FjZ19nYl9mdXNlX3RhYmxlOwogdWludDMyX3QgYWNn X2Rpc3BjbGsyZ2Z4Y2xrX2E7CiB1aW50MzJfdCBhY2dfZGlzcGNsazJnZnhjbGtfYjsKIHVpbnQz Ml90IGFjZ19kaXNwY2xrMmdmeGNsa19jOwogdWludDMyX3QgYWNnX3BpeGNsazJnZnhjbGtfYTsK IHVpbnQzMl90IGFjZ19waXhjbGsyZ2Z4Y2xrX2I7CiB1aW50MzJfdCBhY2dfcGl4Y2xrMmdmeGNs a19jOwogdWludDMyX3QgYWNnX2RjZWZjbGsyZ2Z4Y2xrX2E7CiB1aW50MzJfdCBhY2dfZGNlZmNs azJnZnhjbGtfYjsKIHVpbnQzMl90IGFjZ19kY2VmY2xrMmdmeGNsa19jOwogdWludDMyX3QgYWNn X3BoeWNsazJnZnhjbGtfYTsKIHVpbnQzMl90IGFjZ19waHljbGsyZ2Z4Y2xrX2I7CiB1aW50MzJf dCBhY2dfcGh5Y2xrMmdmeGNsa19jOwp9OwoKCgoKCgpzdHJ1Y3QgYXRvbV9tdWx0aW1lZGlhX2lu Zm9fdjJfMQp7CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7 CiAgdWludDhfdCB1dmRpcF9taW5fdmVyOwogIHVpbnQ4X3QgdXZkaXBfbWF4X3ZlcjsKICB1aW50 OF90IHZjZWlwX21pbl92ZXI7CiAgdWludDhfdCB2Y2VpcF9tYXhfdmVyOwogIHVpbnQxNl90IHV2 ZF9lbmNfbWF4X2lucHV0X3dpZHRoX3BpeGVsczsKICB1aW50MTZfdCB1dmRfZW5jX21heF9pbnB1 dF9oZWlnaHRfcGl4ZWxzOwogIHVpbnQxNl90IHZjZV9lbmNfbWF4X2lucHV0X3dpZHRoX3BpeGVs czsKICB1aW50MTZfdCB2Y2VfZW5jX21heF9pbnB1dF9oZWlnaHRfcGl4ZWxzOwogIHVpbnQzMl90 IHV2ZF9lbmNfbWF4X2JhbmR3aWR0aDsKICB1aW50MzJfdCB2Y2VfZW5jX21heF9iYW5kd2lkdGg7 Cn07CgoKCgoKCgpzdHJ1Y3QgYXRvbV91bWNfaW5mb192M18xCnsKICBzdHJ1Y3QgYXRvbV9jb21t b25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50MzJfdCB1Y29kZV92ZXJzaW9uOwog IHVpbnQzMl90IHVjb2RlX3JvbV9zdGFydGFkZHI7CiAgdWludDMyX3QgdWNvZGVfbGVuZ3RoOwog IHVpbnQxNl90IHVtY19yZWdfaW5pdF9vZmZzZXQ7CiAgdWludDE2X3QgY3VzdG9tZXJfdWNvZGVf bmFtZV9vZmZzZXQ7CiAgdWludDE2X3QgbWNsa19zc19wZXJjZW50YWdlOwogIHVpbnQxNl90IG1j bGtfc3NfcmF0ZV8xMGh6OwogIHVpbnQ4X3QgdW1jaXBfbWluX3ZlcjsKICB1aW50OF90IHVtY2lw X21heF92ZXI7CiAgdWludDhfdCB2cmFtX3R5cGU7CiAgdWludDhfdCB1bWNfY29uZmlnOwogIHVp bnQzMl90IG1lbV9yZWZjbGtfMTBraHo7Cn07CgoKZW51bSBhdG9tX3VtY19jb25maWdfZGVmIHsK ICBVTUNfQ09ORklHX19FTkFCTEVfMUtCX0lOVEVSTEVBVkVfTU9ERSA9IDB4MDAwMDAwMDEsCiAg VU1DX0NPTkZJR19fREVGQVVMVF9NRU1fRUNDX0VOQUJMRSA9IDB4MDAwMDAwMDIsCiAgVU1DX0NP TkZJR19fRU5BQkxFX0hCTV9MQU5FX1JFUEFJUiA9IDB4MDAwMDAwMDQsCiAgVU1DX0NPTkZJR19f RU5BQkxFX0JBTktfSEFSVkVTVElORyA9IDB4MDAwMDAwMDgsCiAgVU1DX0NPTkZJR19fRU5BQkxF X1BIWV9SRUlOSVQgPSAweDAwMDAwMDEwLAogIFVNQ19DT05GSUdfX0RJU0FCTEVfVUNPREVfQ0hL U1RBVFVTID0gMHgwMDAwMDAyMCwKfTsKCnN0cnVjdCBhdG9tX3VtY19pbmZvX3YzXzIKewogIHN0 cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQzMl90IHVj b2RlX3ZlcnNpb247CiAgdWludDMyX3QgdWNvZGVfcm9tX3N0YXJ0YWRkcjsKICB1aW50MzJfdCB1 Y29kZV9sZW5ndGg7CiAgdWludDE2X3QgdW1jX3JlZ19pbml0X29mZnNldDsKICB1aW50MTZfdCBj dXN0b21lcl91Y29kZV9uYW1lX29mZnNldDsKICB1aW50MTZfdCBtY2xrX3NzX3BlcmNlbnRhZ2U7 CiAgdWludDE2X3QgbWNsa19zc19yYXRlXzEwaHo7CiAgdWludDhfdCB1bWNpcF9taW5fdmVyOwog IHVpbnQ4X3QgdW1jaXBfbWF4X3ZlcjsKICB1aW50OF90IHZyYW1fdHlwZTsKICB1aW50OF90IHVt Y19jb25maWc7CiAgdWludDMyX3QgbWVtX3JlZmNsa18xMGtoejsKICB1aW50MzJfdCBwc3RhdGVf dWNsa18xMGtoels0XTsKICB1aW50MTZfdCB1bWNnb2xkZW5vZmZzZXQ7CiAgdWludDE2X3QgZGVu c2l0eWdvbGRlbm9mZnNldDsKfTsKCnN0cnVjdCBhdG9tX3VtY19pbmZvX3YzXzMKewogIHN0cnVj dCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQzMl90IHVjb2Rl X3Jlc2VydmVkOwogIHVpbnQzMl90IHVjb2RlX3JvbV9zdGFydGFkZHI7CiAgdWludDMyX3QgdWNv ZGVfbGVuZ3RoOwogIHVpbnQxNl90IHVtY19yZWdfaW5pdF9vZmZzZXQ7CiAgdWludDE2X3QgY3Vz dG9tZXJfdWNvZGVfbmFtZV9vZmZzZXQ7CiAgdWludDE2X3QgbWNsa19zc19wZXJjZW50YWdlOwog IHVpbnQxNl90IG1jbGtfc3NfcmF0ZV8xMGh6OwogIHVpbnQ4X3QgdW1jaXBfbWluX3ZlcjsKICB1 aW50OF90IHVtY2lwX21heF92ZXI7CiAgdWludDhfdCB2cmFtX3R5cGU7CiAgdWludDhfdCB1bWNf Y29uZmlnOwogIHVpbnQzMl90IG1lbV9yZWZjbGtfMTBraHo7CiAgdWludDMyX3QgcHN0YXRlX3Vj bGtfMTBraHpbNF07CiAgdWludDE2X3QgdW1jZ29sZGVub2Zmc2V0OwogIHVpbnQxNl90IGRlbnNp dHlnb2xkZW5vZmZzZXQ7CiAgdWludDMyX3QgcmVzZXJ2ZWRbNF07Cn07CgoKCgoKCnN0cnVjdCBh dG9tX3ZyYW1fbW9kdWxlX3Y5IHsKCiAgdWludDMyX3QgbWVtb3J5X3NpemU7CiAgdWludDMyX3Qg Y2hhbm5lbF9lbmFibGU7CiAgdWludDMyX3QgbWF4X21lbV9jbGs7CiAgdWludDE2X3QgcmVzZXJ2 ZWRbM107CiAgdWludDE2X3QgbWVtX3ZvbHRhZ2U7CiAgdWludDE2X3QgdnJhbV9tb2R1bGVfc2l6 ZTsKICB1aW50OF90IGV4dF9tZW1vcnlfaWQ7CiAgdWludDhfdCBtZW1vcnlfdHlwZTsKICB1aW50 OF90IGNoYW5uZWxfbnVtOwogIHVpbnQ4X3QgY2hhbm5lbF93aWR0aDsKICB1aW50OF90IGRlbnNp dHk7CiAgdWludDhfdCB0dW5uaW5nc2V0X2lkOwogIHVpbnQ4X3QgdmVuZGVyX3Jldl9pZDsKICB1 aW50OF90IHJlZnJlc2hyYXRlOwogIHVpbnQ4X3QgaGJtX3Zlbl9yZXZfaWQ7CiAgdWludDhfdCB2 cmFtX3JzZDI7CiAgY2hhciBkcmFtX3Buc3RyaW5nWzIwXTsKfTsKCnN0cnVjdCBhdG9tX3ZyYW1f aW5mb19oZWFkZXJfdjJfMyB7CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJs ZV9oZWFkZXI7CiAgdWludDE2X3QgbWVtX2FkanVzdF90YmxvZmZzZXQ7CiAgdWludDE2X3QgbWVt X2Nsa19wYXRjaF90YmxvZmZzZXQ7CiAgdWludDE2X3QgbWNfYWRqdXN0X3BlcnRpbGVfdGJsb2Zm c2V0OwogIHVpbnQxNl90IG1jX3BoeWluaXRfdGJsb2Zmc2V0OwogIHVpbnQxNl90IGRyYW1fZGF0 YV9yZW1hcF90YmxvZmZzZXQ7CiAgdWludDE2X3QgdG1yc19zZXFfb2Zmc2V0OwogIHVpbnQxNl90 IHBvc3RfdWNvZGVfaW5pdF9vZmZzZXQ7CiAgdWludDE2X3QgdnJhbV9yc2QyOwogIHVpbnQ4X3Qg dnJhbV9tb2R1bGVfbnVtOwogIHVpbnQ4X3QgdW1jaXBfbWluX3ZlcjsKICB1aW50OF90IHVtY2lw X21heF92ZXI7CiAgdWludDhfdCBtY19waHlfdGlsZV9udW07CiAgc3RydWN0IGF0b21fdnJhbV9t b2R1bGVfdjkgdnJhbV9tb2R1bGVbMTZdOwp9OwoKc3RydWN0IGF0b21fdW1jX3JlZ2lzdGVyX2Fk ZHJfaW5mb3sKICB1aW50MzJfdCB1bWNfcmVnaXN0ZXJfYWRkcjoyNDsKICB1aW50MzJfdCB1bWNf cmVnX3R5cGVfaW5kOjE7CiAgdWludDMyX3QgdW1jX3JlZ19yc3ZkOjc7Cn07CgoKZW51bSBhdG9t X3VtY19yZWdpc3Rlcl9hZGRyX2luZm9fZmxhZ3sKICBiM0FUT01fVU1DX1JFR19BRERfSU5GT19J TkRJUkVDVF9BQ0NFU1MgPTB4MDEsCn07Cgp1bmlvbiBhdG9tX3VtY19yZWdpc3Rlcl9hZGRyX2lu Zm9fYWNjZXNzCnsKICBzdHJ1Y3QgYXRvbV91bWNfcmVnaXN0ZXJfYWRkcl9pbmZvIHVtY19yZWdf YWRkcjsKICB1aW50MzJfdCB1MzJ1bWNfcmVnX2FkZHI7Cn07CgpzdHJ1Y3QgYXRvbV91bWNfcmVn X3NldHRpbmdfaWRfY29uZmlnewogIHVpbnQzMl90IG1lbWNsb2NrcmFuZ2U6MjQ7CiAgdWludDMy X3QgbWVtX2Jsa19pZDo4Owp9OwoKdW5pb24gYXRvbV91bWNfcmVnX3NldHRpbmdfaWRfY29uZmln X2FjY2Vzcwp7CiAgc3RydWN0IGF0b21fdW1jX3JlZ19zZXR0aW5nX2lkX2NvbmZpZyB1bWNfaWRf YWNjZXNzOwogIHVpbnQzMl90IHUzMnVtY19pZF9hY2Nlc3M7Cn07CgpzdHJ1Y3QgYXRvbV91bWNf cmVnX3NldHRpbmdfZGF0YV9ibG9ja3sKICB1bmlvbiBhdG9tX3VtY19yZWdfc2V0dGluZ19pZF9j b25maWdfYWNjZXNzIGJsb2NrX2lkOwogIHVpbnQzMl90IHUzMnVtY19yZWdfZGF0YVsxXTsKfTsK CnN0cnVjdCBhdG9tX3VtY19pbml0X3JlZ19ibG9ja3sKICB1aW50MTZfdCB1bWNfcmVnX251bTsK ICB1aW50MTZfdCByZXNlcnZlZDsKICB1bmlvbiBhdG9tX3VtY19yZWdpc3Rlcl9hZGRyX2luZm9f YWNjZXNzIHVtY19yZWdfbGlzdFsxXTsKICBzdHJ1Y3QgYXRvbV91bWNfcmVnX3NldHRpbmdfZGF0 YV9ibG9jayB1bWNfcmVnX3NldHRpbmdfbGlzdFsxXTsKfTsKCnN0cnVjdCBhdG9tX3ZyYW1fbW9k dWxlX3YxMCB7CgogIHVpbnQzMl90IG1lbW9yeV9zaXplOwogIHVpbnQzMl90IGNoYW5uZWxfZW5h YmxlOwogIHVpbnQzMl90IG1heF9tZW1fY2xrOwogIHVpbnQxNl90IHJlc2VydmVkWzNdOwogIHVp bnQxNl90IG1lbV92b2x0YWdlOwogIHVpbnQxNl90IHZyYW1fbW9kdWxlX3NpemU7CiAgdWludDhf dCBleHRfbWVtb3J5X2lkOwogIHVpbnQ4X3QgbWVtb3J5X3R5cGU7CiAgdWludDhfdCBjaGFubmVs X251bTsKICB1aW50OF90IGNoYW5uZWxfd2lkdGg7CiAgdWludDhfdCBkZW5zaXR5OwogIHVpbnQ4 X3QgdHVubmluZ3NldF9pZDsKICB1aW50OF90IHZlbmRlcl9yZXZfaWQ7CiAgdWludDhfdCByZWZy ZXNocmF0ZTsKICB1aW50OF90IHZyYW1fZmxhZ3M7CiAgdWludDhfdCB2cmFtX3JzZDI7CiAgdWlu dDE2X3QgZ2RkcjZfbXIxMDsKICB1aW50MTZfdCBnZGRyNl9tcjE7CiAgdWludDE2X3QgZ2RkcjZf bXIyOwogIHVpbnQxNl90IGdkZHI2X21yNzsKICBjaGFyIGRyYW1fcG5zdHJpbmdbMjBdOwp9OwoK c3RydWN0IGF0b21fdnJhbV9pbmZvX2hlYWRlcl92Ml80IHsKICBzdHJ1Y3QgYXRvbV9jb21tb25f dGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50MTZfdCBtZW1fYWRqdXN0X3RibG9mZnNl dDsKICB1aW50MTZfdCBtZW1fY2xrX3BhdGNoX3RibG9mZnNldDsKICB1aW50MTZfdCBtY19hZGp1 c3RfcGVydGlsZV90YmxvZmZzZXQ7CiAgdWludDE2X3QgbWNfcGh5aW5pdF90YmxvZmZzZXQ7CiAg dWludDE2X3QgZHJhbV9kYXRhX3JlbWFwX3RibG9mZnNldDsKICB1aW50MTZfdCByZXNlcnZlZDsK ICB1aW50MTZfdCBwb3N0X3Vjb2RlX2luaXRfb2Zmc2V0OwogIHVpbnQxNl90IHZyYW1fcnNkMjsK ICB1aW50OF90IHZyYW1fbW9kdWxlX251bTsKICB1aW50OF90IHVtY2lwX21pbl92ZXI7CiAgdWlu dDhfdCB1bWNpcF9tYXhfdmVyOwogIHVpbnQ4X3QgbWNfcGh5X3RpbGVfbnVtOwogIHN0cnVjdCBh dG9tX3ZyYW1fbW9kdWxlX3YxMCB2cmFtX21vZHVsZVsxNl07Cn07CgoKCgoKCnN0cnVjdCBhdG9t X2kyY19kYXRhX2VudHJ5CnsKICB1aW50MTZfdCBpMmNfcmVnX2luZGV4OwogIHVpbnQxNl90IGky Y19yZWdfZGF0YTsKfTsKCnN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hlYWRlcl92NHsKICB1 aW50OF90IHZvbHRhZ2VfdHlwZTsKICB1aW50OF90IHZvbHRhZ2VfbW9kZTsKICB1aW50MTZfdCBv YmplY3Rfc2l6ZTsKfTsKCgplbnVtIGF0b21fdm9sdGFnZV9vYmplY3RfbW9kZQp7CiAgIFZPTFRB R0VfT0JKX0dQSU9fTFVUID0gMCwKICAgVk9MVEFHRV9PQkpfVlJfSTJDX0lOSVRfU0VRID0gMywK ICAgVk9MVEFHRV9PQkpfUEhBU0VfTFVUID0gNCwKICAgVk9MVEFHRV9PQkpfU1ZJRDIgPSA3LAog ICBWT0xUQUdFX09CSl9FVlYgPSA4LAogICBWT0xUQUdFX09CSl9NRVJHRURfUE9XRVIgPSA5LAp9 OwoKc3RydWN0IGF0b21faTJjX3ZvbHRhZ2Vfb2JqZWN0X3Y0CnsKICAgc3RydWN0IGF0b21fdm9s dGFnZV9vYmplY3RfaGVhZGVyX3Y0IGhlYWRlcjsKICAgdWludDhfdCByZWd1bGF0b3JfaWQ7CiAg IHVpbnQ4X3QgaTJjX2lkOwogICB1aW50OF90IGkyY19zbGF2ZV9hZGRyOwogICB1aW50OF90IGky Y19jb250cm9sX29mZnNldDsKICAgdWludDhfdCBpMmNfZmxhZzsKICAgdWludDhfdCBpMmNfc3Bl ZWQ7CiAgIHVpbnQ4X3QgcmVzZXJ2ZWRbMl07CiAgIHN0cnVjdCBhdG9tX2kyY19kYXRhX2VudHJ5 IGkyY2RhdGFsdXRbMV07Cn07CgoKZW51bSBhdG9tX2kyY192b2x0YWdlX2NvbnRyb2xfZmxhZwp7 CiAgIFZPTFRBR0VfREFUQV9PTkVfQllURSA9IDAsCiAgIFZPTFRBR0VfREFUQV9UV09fQllURSA9 IDEsCn07CgoKc3RydWN0IGF0b21fdm9sdGFnZV9ncGlvX21hcF9sdXQKewogIHVpbnQzMl90IHZv bHRhZ2VfZ3Bpb19yZWdfdmFsOwogIHVpbnQxNl90IHZvbHRhZ2VfbGV2ZWxfbXY7Cn07CgpzdHJ1 Y3QgYXRvbV9ncGlvX3ZvbHRhZ2Vfb2JqZWN0X3Y0CnsKICAgc3RydWN0IGF0b21fdm9sdGFnZV9v YmplY3RfaGVhZGVyX3Y0IGhlYWRlcjsKICAgdWludDhfdCBncGlvX2NvbnRyb2xfaWQ7CiAgIHVp bnQ4X3QgZ3Bpb19lbnRyeV9udW07CiAgIHVpbnQ4X3QgcGhhc2VfZGVsYXlfdXM7CiAgIHVpbnQ4 X3QgcmVzZXJ2ZWQ7CiAgIHVpbnQzMl90IGdwaW9fbWFza192YWw7CiAgIHN0cnVjdCBhdG9tX3Zv bHRhZ2VfZ3Bpb19tYXBfbHV0IHZvbHRhZ2VfZ3Bpb19sdXRbMV07Cn07CgpzdHJ1Y3QgYXRvbV9z dmlkMl92b2x0YWdlX29iamVjdF92NAp7CiAgIHN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hl YWRlcl92NCBoZWFkZXI7CiAgIHVpbnQ4X3QgbG9hZGxpbmVfcHNpMTsKICAgdWludDhfdCBwc2kw X2xfdmlkX3RocmVzZDsKICAgdWludDhfdCBwc2kwX2VuYWJsZTsKICAgdWludDhfdCBtYXh2c3Rl cDsKICAgdWludDhfdCB0ZWxlbWV0cnlfb2Zmc2V0OwogICB1aW50OF90IHRlbGVtZXRyeV9nYWlu OwogICB1aW50MTZfdCByZXNlcnZlZDE7Cn07CgpzdHJ1Y3QgYXRvbV9tZXJnZWRfdm9sdGFnZV9v YmplY3RfdjQKewogIHN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hlYWRlcl92NCBoZWFkZXI7 CiAgdWludDhfdCBtZXJnZWRfcG93ZXJyYWlsX3R5cGU7CiAgdWludDhfdCByZXNlcnZlZFszXTsK fTsKCnVuaW9uIGF0b21fdm9sdGFnZV9vYmplY3RfdjR7CiAgc3RydWN0IGF0b21fZ3Bpb192b2x0 YWdlX29iamVjdF92NCBncGlvX3ZvbHRhZ2Vfb2JqOwogIHN0cnVjdCBhdG9tX2kyY192b2x0YWdl X29iamVjdF92NCBpMmNfdm9sdGFnZV9vYmo7CiAgc3RydWN0IGF0b21fc3ZpZDJfdm9sdGFnZV9v YmplY3RfdjQgc3ZpZDJfdm9sdGFnZV9vYmo7CiAgc3RydWN0IGF0b21fbWVyZ2VkX3ZvbHRhZ2Vf b2JqZWN0X3Y0IG1lcmdlZF92b2x0YWdlX29iajsKfTsKCnN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2Jq ZWN0c19pbmZvX3Y0XzEKewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVf aGVhZGVyOwogIHVuaW9uIGF0b21fdm9sdGFnZV9vYmplY3RfdjQgdm9sdGFnZV9vYmplY3RbMV07 Cn07CiMgMjMyMyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21m aXJtd2FyZS5oIgpzdHJ1Y3QgYXNpY19pbml0X2VuZ2luZV9wYXJhbWV0ZXJzCnsKICB1aW50MzJf dCBzY2xrZnJlcWluMTBraHo6MjQ7CiAgdWludDMyX3QgZW5naW5lZmxhZzo4Owp9OwoKc3RydWN0 IGFzaWNfaW5pdF9tZW1fcGFyYW1ldGVycwp7CiAgdWludDMyX3QgbWNsa2ZyZXFpbjEwa2h6OjI0 OwogIHVpbnQzMl90IG1lbWZsYWc6ODsKfTsKCnN0cnVjdCBhc2ljX2luaXRfcGFyYW1ldGVyc192 Ml8xCnsKICBzdHJ1Y3QgYXNpY19pbml0X2VuZ2luZV9wYXJhbWV0ZXJzIGVuZ2luZXBhcmFtOwog IHN0cnVjdCBhc2ljX2luaXRfbWVtX3BhcmFtZXRlcnMgbWVtcGFyYW07Cn07CgpzdHJ1Y3QgYXNp Y19pbml0X3BzX2FsbG9jYXRpb25fdjJfMQp7CiAgc3RydWN0IGFzaWNfaW5pdF9wYXJhbWV0ZXJz X3YyXzEgcGFyYW07CiAgdWludDMyX3QgcmVzZXJ2ZWRbMTZdOwp9OwoKCmVudW0gYXRvbV9hc2lj X2luaXRfZW5naW5lX2ZsYWcKewogIGIzTk9STUFMX0VOR0lORV9JTklUID0gMCwKICBiM1NSSU9W X1NLSVBfQVNJQ19JTklUID0gMHgwMiwKICBiM1NSSU9WX0xPQURfVUNPREUgPSAweDQwLAp9OwoK ZW51bSBhdG9tX2FzaWNfaW5pdF9tZW1fZmxhZwp7CiAgYjNOT1JNQUxfTUVNX0lOSVQgPSAwLAog IGIzRFJBTV9TRUxGX1JFRlJFU0hfRVhJVCA9MHgyMCwKfTsKCgoKCgoKCnN0cnVjdCBzZXRfZW5n aW5lX2Nsb2NrX3BhcmFtZXRlcnNfdjJfMQp7CiAgdWludDMyX3Qgc2Nsa2ZyZXFpbjEwa2h6OjI0 OwogIHVpbnQzMl90IHNjbGtmbGFnOjg7CiAgdWludDMyX3QgcmVzZXJ2ZWRbMTBdOwp9OwoKc3Ry dWN0IHNldF9lbmdpbmVfY2xvY2tfcHNfYWxsb2NhdGlvbl92Ml8xCnsKICBzdHJ1Y3Qgc2V0X2Vu Z2luZV9jbG9ja19wYXJhbWV0ZXJzX3YyXzEgY2xvY2tpbmZvOwogIHVpbnQzMl90IHJlc2VydmVk WzEwXTsKfTsKCgplbnVtIGF0b21fc2V0X2VuZ2luZV9tZW1fY2xvY2tfZmxhZwp7CiAgYjNOT1JN QUxfQ0hBTkdFX0NMT0NLID0gMCwKICBiM0ZJUlNUX1RJTUVfQ0hBTkdFX0NMT0NLID0gMHgwOCwK ICBiM1NUT1JFX0RQTV9UUkFJTkdJTkcgPSAweDQwLAp9OwoKCgoKCgpzdHJ1Y3QgZ2V0X2VuZ2lu ZV9jbG9ja19wYXJhbWV0ZXIKewogIHVpbnQzMl90IHNjbGtfMTBraHo7CiAgdWludDMyX3QgcmVz ZXJ2ZWQ7Cn07CgoKCgoKCnN0cnVjdCBzZXRfbWVtb3J5X2Nsb2NrX3BhcmFtZXRlcnNfdjJfMQp7 CiAgdWludDMyX3QgbWNsa2ZyZXFpbjEwa2h6OjI0OwogIHVpbnQzMl90IG1jbGtmbGFnOjg7CiAg dWludDMyX3QgcmVzZXJ2ZWRbMTBdOwp9OwoKc3RydWN0IHNldF9tZW1vcnlfY2xvY2tfcHNfYWxs b2NhdGlvbl92Ml8xCnsKICBzdHJ1Y3Qgc2V0X21lbW9yeV9jbG9ja19wYXJhbWV0ZXJzX3YyXzEg Y2xvY2tpbmZvOwogIHVpbnQzMl90IHJlc2VydmVkWzEwXTsKfTsKCgoKCgoKCnN0cnVjdCBnZXRf bWVtb3J5X2Nsb2NrX3BhcmFtZXRlcgp7CiAgdWludDMyX3QgbWNsa18xMGtoejsKICB1aW50MzJf dCByZXNlcnZlZDsKfTsKIyAyNDM3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2lu Y2x1ZGUvYXRvbWZpcm13YXJlLmgiCnN0cnVjdCBzZXRfdm9sdGFnZV9wYXJhbWV0ZXJzX3YxXzQK ewogIHVpbnQ4X3Qgdm9sdGFnZXR5cGU7CiAgdWludDhfdCBjb21tYW5kOwogIHVpbnQxNl90IHZs ZXZlbF9tdjsKfTsKCgplbnVtIGF0b21fc2V0X3ZvbHRhZ2VfY29tbWFuZHsKICBBVE9NX1NFVF9W T0xUQUdFID0gMCwKICBBVE9NX0lOSVRfVk9MVEFHRV9SRUdVTEFUT1IgPSAzLAogIEFUT01fU0VU X1ZPTFRBR0VfUEhBU0UgPSA0LAogIEFUT01fR0VUX0xFQUtBR0VfSUQgPSA4LAp9OwoKc3RydWN0 IHNldF92b2x0YWdlX3BzX2FsbG9jYXRpb25fdjFfNAp7CiAgc3RydWN0IHNldF92b2x0YWdlX3Bh cmFtZXRlcnNfdjFfNCBzZXR2b2x0YWdlcGFyYW07CiAgdWludDMyX3QgcmVzZXJ2ZWRbMTBdOwp9 OwojIDI0NjYgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmly bXdhcmUuaCIKZW51bSBhdG9tX2dwdV9jbG9ja190eXBlCnsKICBDT01QVVRFX0dQVUNMS19JTlBV VF9GTEFHX0RFRkFVTFRfR1BVQ0xLID0weDAwLAogIENPTVBVVEVfR1BVQ0xLX0lOUFVUX0ZMQUdf R0ZYQ0xLID0weDAxLAogIENPTVBVVEVfR1BVQ0xLX0lOUFVUX0ZMQUdfVUNMSyA9MHgwMiwKfTsK CnN0cnVjdCBjb21wdXRlX2dwdV9jbG9ja19pbnB1dF9wYXJhbWV0ZXJfdjFfOAp7CiAgdWludDMy X3QgZ3B1Y2xvY2tfMTBraHo6MjQ7CiAgdWludDMyX3QgZ3B1X2Nsb2NrX3R5cGU6ODsKICB1aW50 MzJfdCByZXNlcnZlZFs1XTsKfTsKCgpzdHJ1Y3QgY29tcHV0ZV9ncHVfY2xvY2tfb3V0cHV0X3Bh cmFtZXRlcl92MV84CnsKICB1aW50MzJfdCBncHVjbG9ja18xMGtoejoyNDsKICB1aW50MzJfdCBk ZnNfZGlkOjg7CiAgdWludDMyX3QgcGxsX2ZiX211bHQ7CiAgdWludDMyX3QgcGxsX3NzX2Zic211 bHQ7CiAgdWludDE2X3QgcGxsX3NzX3NsZXdfZnJhYzsKICB1aW50OF90IHBsbF9zc19lbmFibGU7 CiAgdWludDhfdCByZXNlcnZlZDsKICB1aW50MzJfdCByZXNlcnZlZDFbMl07Cn07CiMgMjUwMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgpz dHJ1Y3QgcmVhZF9lZnVzZV9pbnB1dF9wYXJhbWV0ZXJzX3YzXzEKewogIHVpbnQxNl90IGVmdXNl X3N0YXJ0X2luZGV4OwogIHVpbnQ4X3QgcmVzZXJ2ZWQ7CiAgdWludDhfdCBiaXRzbGVuOwp9OwoK CnVuaW9uIHJlYWRfZWZ1c2VfdmFsdWVfcGFyYW1ldGVyc192M18xCnsKICBzdHJ1Y3QgcmVhZF9l ZnVzZV9pbnB1dF9wYXJhbWV0ZXJzX3YzXzEgZWZ1c2VfaW5mbzsKICB1aW50MzJfdCBlZnVzZXZh bHVlOwp9OwoKCgoKCgoKc3RydWN0IGF0b21fZ2V0X3NtdV9jbG9ja19pbmZvX3BhcmFtZXRlcnNf djNfMQp7CiAgdWludDhfdCBzeXNwbGxfaWQ7CiAgdWludDhfdCBjbGtfaWQ7CiAgdWludDhfdCBj b21tYW5kOwogIHVpbnQ4X3QgZGZzZGlkOwp9OwoKZW51bSBhdG9tX2dldF9zbXVfY2xvY2tfaW5m b19jb21tYW5kCnsKICBHRVRfU01VX0NMT0NLX0lORk9fVjNfMV9HRVRfQ0xPQ0tfRlJFUSA9IDAs CiAgR0VUX1NNVV9DTE9DS19JTkZPX1YzXzFfR0VUX1BMTFZDT19GUkVRID0gMSwKICBHRVRfU01V X0NMT0NLX0lORk9fVjNfMV9HRVRfUExMUkVGQ0xLX0ZSRVEgPSAyLAp9OwoKZW51bSBhdG9tX3Nt dTlfc3lzcGxsMF9jbG9ja19pZAp7CiAgU01VOV9TWVNQTEwwX1NNTkNMS19JRCA9IDAsCiAgU01V OV9TWVNQTEwwX1NPQ0NMS19JRCA9IDEsCiAgU01VOV9TWVNQTEwwX01QMENMS19JRCA9IDIsCiAg U01VOV9TWVNQTEwwX01QMUNMS19JRCA9IDMsCiAgU01VOV9TWVNQTEwwX0xDTEtfSUQgPSA0LAog IFNNVTlfU1lTUExMMF9EQ0xLX0lEID0gNSwKICBTTVU5X1NZU1BMTDBfVkNMS19JRCA9IDYsCiAg U01VOV9TWVNQTEwwX0VDTEtfSUQgPSA3LAogIFNNVTlfU1lTUExMMF9EQ0VGQ0xLX0lEID0gOCwK ICBTTVU5X1NZU1BMTDBfRFBSRUZDTEtfSUQgPSAxMCwKICBTTVU5X1NZU1BMTDBfRElTUENMS19J RCA9IDExLAp9OwoKZW51bSBhdG9tX3NtdTExX3N5c3BsbF9pZCB7CiAgU01VMTFfU1lTUExMMF9J RCA9IDAsCiAgU01VMTFfU1lTUExMMV8wX0lEID0gMSwKICBTTVUxMV9TWVNQTEwxXzFfSUQgPSAy LAogIFNNVTExX1NZU1BMTDFfMl9JRCA9IDMsCiAgU01VMTFfU1lTUExMMl9JRCA9IDQsCiAgU01V MTFfU1lTUExMM18wX0lEID0gNSwKICBTTVUxMV9TWVNQTEwzXzFfSUQgPSA2LAp9OwoKZW51bSBh dG9tX3NtdTExX3N5c3BsbDBfY2xvY2tfaWQgewogIFNNVTExX1NZU1BMTDBfRUNMS19JRCA9IDAs CiAgU01VMTFfU1lTUExMMF9TT0NDTEtfSUQgPSAxLAogIFNNVTExX1NZU1BMTDBfTVAwQ0xLX0lE ID0gMiwKICBTTVUxMV9TWVNQTEwwX0RDTEtfSUQgPSAzLAogIFNNVTExX1NZU1BMTDBfVkNMS19J RCA9IDQsCiAgU01VMTFfU1lTUExMMF9EQ0VGQ0xLX0lEID0gNSwKfTsKCmVudW0gYXRvbV9zbXUx MV9zeXNwbGwxXzBfY2xvY2tfaWQgewogIFNNVTExX1NZU1BMTDFfMF9VQ0xLQV9JRCA9IDAsCn07 CgplbnVtIGF0b21fc211MTFfc3lzcGxsMV8xX2Nsb2NrX2lkIHsKICBTTVUxMV9TWVNQTEwxXzBf VUNMS0JfSUQgPSAwLAp9OwoKZW51bSBhdG9tX3NtdTExX3N5c3BsbDFfMl9jbG9ja19pZCB7CiAg U01VMTFfU1lTUExMMV8wX0ZDTEtfSUQgPSAwLAp9OwoKZW51bSBhdG9tX3NtdTExX3N5c3BsbDJf Y2xvY2tfaWQgewogIFNNVTExX1NZU1BMTDJfR0ZYQ0xLX0lEID0gMCwKfTsKCmVudW0gYXRvbV9z bXUxMV9zeXNwbGwzXzBfY2xvY2tfaWQgewogIFNNVTExX1NZU1BMTDNfMF9XQUZDTEtfSUQgPSAw LAogIFNNVTExX1NZU1BMTDNfMF9ESVNQQ0xLX0lEID0gMSwKICBTTVUxMV9TWVNQTEwzXzBfRFBS RUZDTEtfSUQgPSAyLAp9OwoKZW51bSBhdG9tX3NtdTExX3N5c3BsbDNfMV9jbG9ja19pZCB7CiAg U01VMTFfU1lTUExMM18xX01QMUNMS19JRCA9IDAsCiAgU01VMTFfU1lTUExMM18xX1NNTkNMS19J RCA9IDEsCiAgU01VMTFfU1lTUExMM18xX0xDTEtfSUQgPSAyLAp9OwoKc3RydWN0IGF0b21fZ2V0 X3NtdV9jbG9ja19pbmZvX291dHB1dF9wYXJhbWV0ZXJzX3YzXzEKewogIHVuaW9uIHsKICAgIHVp bnQzMl90IHNtdV9jbG9ja19mcmVxX2h6OwogICAgdWludDMyX3Qgc3lzcGxsdmNvZnJlcV8xMGto ejsKICAgIHVpbnQzMl90IHN5c3NwbGxyZWZjbGtfMTBraHo7CiAgfWF0b21fc211X291dHB1dGNs a2ZyZXE7Cn07CiMgMjYxNSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRl L2F0b21maXJtd2FyZS5oIgplbnVtIGF0b21fZHluYW1pY19tZW1vcnlfc2V0dGluZ19jb21tYW5k CnsKICBDT01QVVRFX01FTU9SWV9QTExfUEFSQU0gPSAxLAogIENPTVBVVEVfRU5HSU5FX1BMTF9Q QVJBTSA9IDIsCiAgQURKVVNUX01DX1NFVFRJTkdfUEFSQU0gPSAzLAp9OwoKCnN0cnVjdCBkeW5h bWljX21jbGtfc2V0dGluZ3NfcGFyYW1ldGVyc192Ml8xCnsKICB1aW50MzJfdCBtY2xrXzEwa2h6 OjI0OwogIHVpbnQzMl90IGNvbW1hbmQ6ODsKICB1aW50MzJfdCByZXNlcnZlZDsKfTsKCgpzdHJ1 Y3QgZHluYW1pY19zY2xrX3NldHRpbmdzX3BhcmFtZXRlcnNfdjJfMQp7CiAgdWludDMyX3Qgc2Ns a18xMGtoejoyNDsKICB1aW50MzJfdCBjb21tYW5kOjg7CiAgdWludDMyX3QgbWNsa18xMGtoejsK ICB1aW50MzJfdCByZXNlcnZlZDsKfTsKCnVuaW9uIGR5bmFtaWNfbWVtb3J5X3NldHRpbmdzX3Bh cmFtZXRlcnNfdjJfMQp7CiAgc3RydWN0IGR5bmFtaWNfbWNsa19zZXR0aW5nc19wYXJhbWV0ZXJz X3YyXzEgbWNsa19zZXR0aW5nOwogIHN0cnVjdCBkeW5hbWljX3NjbGtfc2V0dGluZ3NfcGFyYW1l dGVyc192Ml8xIHNjbGtfc2V0dGluZzsKfTsKIyAyNjUzICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlLmgiCmVudW0gYXRvbV91bWM2XzBfdWNvZGVf ZnVuY3Rpb25fY2FsbF9lbnVtX2lkCnsKICBVTUM2MF9VQ09ERV9GVU5DX0lEX1JFSU5JVCA9IDAs CiAgVU1DNjBfVUNPREVfRlVOQ19JRF9FTlRFUl9TRUxGUkVGUkVTSCA9IDEsCiAgVU1DNjBfVUNP REVfRlVOQ19JRF9FWElUX1NFTEZSRUZSRVNIID0gMiwKfTsKCgpzdHJ1Y3QgbWVtb3J5X3RyYWlu aW5nX3BhcmFtZXRlcnNfdjJfMQp7CiAgdWludDhfdCB1Y29kZV9mdW5jX2lkOwogIHVpbnQ4X3Qg dWNvZGVfcmVzZXJ2ZWRbM107CiAgdWludDMyX3QgcmVzZXJ2ZWRbNV07Cn07CiMgMjY3NSAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgpzdHJ1 Y3Qgc2V0X3BpeGVsX2Nsb2NrX3BhcmFtZXRlcl92MV83CnsKICAgIHVpbnQzMl90IHBpeGNsa18x MDBoejsKCiAgICB1aW50OF90IHBsbF9pZDsKICAgIHVpbnQ4X3QgZW5jb2Rlcm9iamlkOwoKICAg IHVpbnQ4X3QgZW5jb2Rlcl9tb2RlOwogICAgdWludDhfdCBtaXNjaW5mbzsKICAgIHVpbnQ4X3Qg Y3J0Y19pZDsKICAgIHVpbnQ4X3QgZGVlcF9jb2xvcl9yYXRpbzsKICAgIHVpbnQ4X3QgcmVzZXJ2 ZWQxWzJdOwogICAgdWludDMyX3QgcmVzZXJ2ZWQyOwp9OwoKCmVudW0gYXRvbV9zZXRfcGl4ZWxf Y2xvY2tfdjFfN19taXNjX2luZm8KewogIFBJWEVMX0NMT0NLX1Y3X01JU0NfRk9SQ0VfUFJPR19Q UExMID0gMHgwMSwKICBQSVhFTF9DTE9DS19WN19NSVNDX1BST0dfUEhZUExMID0gMHgwMiwKICBQ SVhFTF9DTE9DS19WN19NSVNDX1lVVjQyMF9NT0RFID0gMHgwNCwKICBQSVhFTF9DTE9DS19WN19N SVNDX0RWSV9EVUFMTElOS19FTiA9IDB4MDgsCiAgUElYRUxfQ0xPQ0tfVjdfTUlTQ19SRUZfRElW X1NSQyA9IDB4MzAsCiAgUElYRUxfQ0xPQ0tfVjdfTUlTQ19SRUZfRElWX1NSQ19YVEFMSU4gPSAw eDAwLAogIFBJWEVMX0NMT0NLX1Y3X01JU0NfUkVGX0RJVl9TUkNfUENJRSA9IDB4MTAsCiAgUElY RUxfQ0xPQ0tfVjdfTUlTQ19SRUZfRElWX1NSQ19HRU5MSyA9IDB4MjAsCiAgUElYRUxfQ0xPQ0tf VjdfTUlTQ19SRUZfRElWX1NSQ19SRUZQQUQgPSAweDMwLAogIFBJWEVMX0NMT0NLX1Y3X01JU0Nf QVRPTUlDX1VQREFURSA9IDB4NDAsCiAgUElYRUxfQ0xPQ0tfVjdfTUlTQ19GT1JDRV9TU19ESVMg PSAweDgwLAp9OwoKCmVudW0gYXRvbV9zZXRfcGl4ZWxfY2xvY2tfdjFfN19kZWVwY29sb3JfcmF0 aW8KewogIFBJWEVMX0NMT0NLX1Y3X0RFRVBDT0xPUl9SQVRJT19ESVMgPSAweDAwLAogIFBJWEVM X0NMT0NLX1Y3X0RFRVBDT0xPUl9SQVRJT181XzQgPSAweDAxLAogIFBJWEVMX0NMT0NLX1Y3X0RF RVBDT0xPUl9SQVRJT18zXzIgPSAweDAyLAogIFBJWEVMX0NMT0NLX1Y3X0RFRVBDT0xPUl9SQVRJ T18yXzEgPSAweDAzLAp9OwojIDI3MjIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v aW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKc3RydWN0IHNldF9kY2VfY2xvY2tfcGFyYW1ldGVyc192 Ml8xCnsKICB1aW50MzJfdCBkY2VjbGtfMTBraHo7CiAgdWludDhfdCBkY2VjbGt0eXBlOwogIHVp bnQ4X3QgZGNlY2xrc3JjOwogIHVpbnQ4X3QgZGNlY2xrZmxhZzsKICB1aW50OF90IGNydGNfaWQ7 Cn07CgoKZW51bSBhdG9tX3NldF9kY2VfY2xvY2tfY2xvY2tfdHlwZQp7CiAgRENFX0NMT0NLX1RZ UEVfRElTUENMSyA9IDAsCiAgRENFX0NMT0NLX1RZUEVfRFBSRUZDTEsgPSAxLAogIERDRV9DTE9D S19UWVBFX1BJWEVMQ0xLID0gMiwKfTsKCgplbnVtIGF0b21fc2V0X2RjZV9jbG9ja19kcHJlZmNs a19mbGFnCnsKICBEQ0VfQ0xPQ0tfRkxBR19QTExfUkVGQ0xLX1NSQ19NQVNLID0gMHgwMywKICBE Q0VfQ0xPQ0tfRkxBR19QTExfUkVGQ0xLX1NSQ19HRU5FUklDQSA9IDB4MDAsCiAgRENFX0NMT0NL X0ZMQUdfUExMX1JFRkNMS19TUkNfR0VOTEsgPSAweDAxLAogIERDRV9DTE9DS19GTEFHX1BMTF9S RUZDTEtfU1JDX1BDSUUgPSAweDAyLAogIERDRV9DTE9DS19GTEFHX1BMTF9SRUZDTEtfU1JDX1hU QUxJTiA9IDB4MDMsCn07CgoKZW51bSBhdG9tX3NldF9kY2VfY2xvY2tfcGl4Y2xrX2ZsYWcKewog IERDRV9DTE9DS19GTEFHX1BDTEtfREVFUENPTE9SX1JBVElPX01BU0sgPSAweDAzLAogIERDRV9D TE9DS19GTEFHX1BDTEtfREVFUENPTE9SX1JBVElPX0RJUyA9IDB4MDAsCiAgRENFX0NMT0NLX0ZM QUdfUENMS19ERUVQQ09MT1JfUkFUSU9fNV80ID0gMHgwMSwKICBEQ0VfQ0xPQ0tfRkxBR19QQ0xL X0RFRVBDT0xPUl9SQVRJT18zXzIgPSAweDAyLAogIERDRV9DTE9DS19GTEFHX1BDTEtfREVFUENP TE9SX1JBVElPXzJfMSA9IDB4MDMsCiAgRENFX0NMT0NLX0ZMQUdfUElYQ0xLX1lVVjQyMF9NT0RF ID0gMHgwNCwKfTsKCnN0cnVjdCBzZXRfZGNlX2Nsb2NrX3BzX2FsbG9jYXRpb25fdjJfMQp7CiAg c3RydWN0IHNldF9kY2VfY2xvY2tfcGFyYW1ldGVyc192Ml8xIHBhcmFtOwogIHVpbnQzMl90IHVs UmVzZXJ2ZWRbMl07Cn07CgoKCgoKc3RydWN0IGJsYW5rX2NydGNfcGFyYW1ldGVycwp7CiAgdWlu dDhfdCBjcnRjX2lkOwogIHVpbnQ4X3QgYmxhbmtpbmc7CiAgdWludDE2X3QgcmVzZXJ2ZWQ7CiAg dWludDMyX3QgcmVzZXJ2ZWQxOwp9OwoKZW51bSBhdG9tX2JsYW5rX2NydGNfY29tbWFuZAp7CiAg QVRPTV9CTEFOS0lORyA9IDEsCiAgQVRPTV9CTEFOS0lOR19PRkYgPSAwLAp9OwoKCgoKc3RydWN0 IGVuYWJsZV9jcnRjX3BhcmFtZXRlcnMKewogIHVpbnQ4X3QgY3J0Y19pZDsKICB1aW50OF90IGVu YWJsZTsKICB1aW50OF90IHBhZGRpbmdbMl07Cn07CgoKCgoKc3RydWN0IGVuYWJsZV9kaXNwX3Bv d2VyX2dhdGluZ19wYXJhbWV0ZXJzX3YyXzEKewogIHVpbnQ4X3QgZGlzcF9waXBlX2lkOwogIHVp bnQ4X3QgZW5hYmxlOwogIHVpbnQ4X3QgcGFkZGluZ1syXTsKfTsKCnN0cnVjdCBlbmFibGVfZGlz cF9wb3dlcl9nYXRpbmdfcHNfYWxsb2NhdGlvbgp7CiAgc3RydWN0IGVuYWJsZV9kaXNwX3Bvd2Vy X2dhdGluZ19wYXJhbWV0ZXJzX3YyXzEgcGFyYW07CiAgdWludDMyX3QgdWxSZXNlcnZlZFs0XTsK fTsKCgoKCnN0cnVjdCBzZXRfY3J0Y191c2luZ19kdGRfdGltaW5nX3BhcmFtZXRlcnMKewogIHVp bnQxNl90IGhfc2l6ZTsKICB1aW50MTZfdCBoX2JsYW5raW5nX3RpbWU7CiAgdWludDE2X3Qgdl9z aXplOwogIHVpbnQxNl90IHZfYmxhbmtpbmdfdGltZTsKICB1aW50MTZfdCBoX3N5bmNvZmZzZXQ7 CiAgdWludDE2X3QgaF9zeW5jd2lkdGg7CiAgdWludDE2X3Qgdl9zeW5jb2Zmc2V0OwogIHVpbnQx Nl90IHZfc3luY3dpZHRoOwogIHVpbnQxNl90IG1vZGVtaXNjaW5mbzsKICB1aW50OF90IGhfYm9y ZGVyOwogIHVpbnQ4X3Qgdl9ib3JkZXI7CiAgdWludDhfdCBjcnRjX2lkOwogIHVpbnQ4X3QgZW5j b2Rlcl9tb2RlOwogIHVpbnQ4X3QgcGFkZGluZ1syXTsKfTsKCgoKCgpzdHJ1Y3QgcHJvY2Vzc19p MmNfY2hhbm5lbF90cmFuc2FjdGlvbl9wYXJhbWV0ZXJzCnsKICB1aW50OF90IGkyY3NwZWVkX2to ejsKICB1bmlvbiB7CiAgICB1aW50OF90IHJlZ2luZGV4OwogICAgdWludDhfdCBzdGF0dXM7CiAg fSByZWdpbmRfc3RhdHVzOwogIHVpbnQxNl90IGkyY19kYXRhX291dDsKICB1aW50OF90IGZsYWc7 CiAgdWludDhfdCB0cmFuc19ieXRlczsKICB1aW50OF90IHNsYXZlX2FkZHI7CiAgdWludDhfdCBp MmNfaWQ7Cn07CgoKZW51bSBhdG9tX3Byb2Nlc3NfaTJjX2ZsYWcKewogIEhXX0kyQ19XUklURSA9 IDEsCiAgSFdfSTJDX1JFQUQgPSAwLAogIEkyQ18yQllURV9BRERSID0gMHgwMiwKICBIV19JMkNf U01CVVNfQllURV9XUiA9IDB4MDQsCn07CgoKZW51bSBhdG9tX3Byb2Nlc3NfaTJjX3N0YXR1cwp7 CiAgSFdfQVNTSVNURURfSTJDX1NUQVRVU19GQUlMVVJFID0yLAogIEhXX0FTU0lTVEVEX0kyQ19T VEFUVVNfU1VDQ0VTUyA9MSwKfTsKCgoKCgoKc3RydWN0IHByb2Nlc3NfYXV4X2NoYW5uZWxfdHJh bnNhY3Rpb25fcGFyYW1ldGVyc192MV8yCnsKICB1aW50MTZfdCBhdXhfcmVxdWVzdDsKICB1aW50 MTZfdCBkYXRhb3V0OwogIHVpbnQ4X3QgY2hhbm5lbGlkOwogIHVuaW9uIHsKICAgIHVpbnQ4X3Qg cmVwbHlfc3RhdHVzOwogICAgdWludDhfdCBhdXhfZGVsYXk7CiAgfSBhdXhfc3RhdHVzX2RlbGF5 OwogIHVpbnQ4X3QgZGF0YW91dF9sZW47CiAgdWludDhfdCBocGRfaWQ7Cn07CgoKCgoKCnN0cnVj dCBzZWxlY3RfY3J0Y19zb3VyY2VfcGFyYW1ldGVyc192Ml8zCnsKICB1aW50OF90IGNydGNfaWQ7 CiAgdWludDhfdCBlbmNvZGVyX2lkOwogIHVpbnQ4X3QgZW5jb2RlX21vZGU7CiAgdWludDhfdCBk c3RfYnBjOwp9OwoKCgoKCgoKZW51bSBhdG9tX2RpZ19lbmNvZGVyX2NvbnRyb2xfYWN0aW9uCnsK ICBBVE9NX0VOQ09ERVJfQ01EX0RJU0FCTEVfRElHID0gMCwKICBBVE9NX0VOQ09ERVJfQ01EX0VO QUJMRV9ESUcgPSAxLAogIEFUT01fRU5DT0RFUl9DTURfRFBfTElOS19UUkFJTklOR19TVEFSVCA9 IDB4MDgsCiAgQVRPTV9FTkNPREVSX0NNRF9EUF9MSU5LX1RSQUlOSU5HX1BBVFRFUk4xID0gMHgw OSwKICBBVE9NX0VOQ09ERVJfQ01EX0RQX0xJTktfVFJBSU5JTkdfUEFUVEVSTjIgPSAweDBhLAog IEFUT01fRU5DT0RFUl9DTURfRFBfTElOS19UUkFJTklOR19QQVRURVJOMyA9IDB4MTMsCiAgQVRP TV9FTkNPREVSX0NNRF9EUF9MSU5LX1RSQUlOSU5HX0NPTVBMRVRFID0gMHgwYiwKICBBVE9NX0VO Q09ERVJfQ01EX0RQX1ZJREVPX09GRiA9IDB4MGMsCiAgQVRPTV9FTkNPREVSX0NNRF9EUF9WSURF T19PTiA9IDB4MGQsCiAgQVRPTV9FTkNPREVSX0NNRF9TRVRVUF9QQU5FTF9NT0RFID0gMHgxMCwK ICBBVE9NX0VOQ09ERVJfQ01EX0RQX0xJTktfVFJBSU5JTkdfUEFUVEVSTjQgPSAweDE0LAogIEFU T01fRU5DT0RFUl9DTURfU1RSRUFNX1NFVFVQID0gMHgwRiwKICBBVE9NX0VOQ09ERVJfQ01EX0xJ TktfU0VUVVAgPSAweDExLAogIEFUT01fRU5DT0RFUl9DTURfRU5DT0RFUl9CTEFOSyA9IDB4MTIs Cn07CgoKZW51bSBhdG9tX2RpZ19lbmNvZGVyX2NvbnRyb2xfcGFuZWxtb2RlCnsKICBEUF9QQU5F TF9NT0RFX0RJU0FCTEUgPSAweDAwLAogIERQX1BBTkVMX01PREVfRU5BQkxFX2VEUF9NT0RFID0g MHgwMSwKICBEUF9QQU5FTF9NT0RFX0VOQUJMRV9MVkxJTktfTU9ERSA9IDB4MTEsCn07CgoKZW51 bSBhdG9tX2RpZ19lbmNvZGVyX2NvbnRyb2xfdjVfZGlnaWQKewogIEFUT01fRU5DT0RFUl9DT05G SUdfVjVfRElHMF9FTkNPREVSID0gMHgwMCwKICBBVE9NX0VOQ09ERVJfQ09ORklHX1Y1X0RJRzFf RU5DT0RFUiA9IDB4MDEsCiAgQVRPTV9FTkNPREVSX0NPTkZJR19WNV9ESUcyX0VOQ09ERVIgPSAw eDAyLAogIEFUT01fRU5DT0RFUl9DT05GSUdfVjVfRElHM19FTkNPREVSID0gMHgwMywKICBBVE9N X0VOQ09ERVJfQ09ORklHX1Y1X0RJRzRfRU5DT0RFUiA9IDB4MDQsCiAgQVRPTV9FTkNPREVSX0NP TkZJR19WNV9ESUc1X0VOQ09ERVIgPSAweDA1LAogIEFUT01fRU5DT0RFUl9DT05GSUdfVjVfRElH Nl9FTkNPREVSID0gMHgwNiwKICBBVE9NX0VOQ09ERVJfQ09ORklHX1Y1X0RJRzdfRU5DT0RFUiA9 IDB4MDcsCn07CgpzdHJ1Y3QgZGlnX2VuY29kZXJfc3RyZWFtX3NldHVwX3BhcmFtZXRlcnNfdjFf NQp7CiAgdWludDhfdCBkaWdpZDsKICB1aW50OF90IGFjdGlvbjsKICB1aW50OF90IGRpZ21vZGU7 CiAgdWludDhfdCBsYW5lbnVtOwogIHVpbnQzMl90IHBjbGtfMTBraHo7CiAgdWludDhfdCBiaXRw ZXJjb2xvcjsKICB1aW50OF90IGRwbGlua3JhdGVfMjcwbWh6OwogIHVpbnQ4X3QgcmVzZXJ2ZWRb Ml07Cn07CgpzdHJ1Y3QgZGlnX2VuY29kZXJfbGlua19zZXR1cF9wYXJhbWV0ZXJzX3YxXzUKewog IHVpbnQ4X3QgZGlnaWQ7CiAgdWludDhfdCBhY3Rpb247CiAgdWludDhfdCBkaWdtb2RlOwogIHVp bnQ4X3QgbGFuZW51bTsKICB1aW50OF90IHN5bWNsa18xMGtoejsKICB1aW50OF90IGhwZF9zZWw7 CiAgdWludDhfdCBkaWdmZV9zZWw7CiAgdWludDhfdCByZXNlcnZlZFsyXTsKfTsKCnN0cnVjdCBk cF9wYW5lbF9tb2RlX3NldF9wYXJhbWV0ZXJzX3YxXzUKewogIHVpbnQ4X3QgZGlnaWQ7CiAgdWlu dDhfdCBhY3Rpb247CiAgdWludDhfdCBwYW5lbG1vZGU7CiAgdWludDhfdCByZXNlcnZlZDE7CiAg dWludDMyX3QgcmVzZXJ2ZWQyWzJdOwp9OwoKc3RydWN0IGRpZ19lbmNvZGVyX2dlbmVyaWNfY21k X3BhcmFtZXRlcnNfdjFfNQp7CiAgdWludDhfdCBkaWdpZDsKICB1aW50OF90IGFjdGlvbjsKICB1 aW50OF90IHJlc2VydmVkMVsyXTsKICB1aW50MzJfdCByZXNlcnZlZDJbMl07Cn07Cgp1bmlvbiBk aWdfZW5jb2Rlcl9jb250cm9sX3BhcmFtZXRlcnNfdjFfNQp7CiAgc3RydWN0IGRpZ19lbmNvZGVy X2dlbmVyaWNfY21kX3BhcmFtZXRlcnNfdjFfNSBjbWRfcGFyYW07CiAgc3RydWN0IGRpZ19lbmNv ZGVyX3N0cmVhbV9zZXR1cF9wYXJhbWV0ZXJzX3YxXzUgc3RyZWFtX3BhcmFtOwogIHN0cnVjdCBk aWdfZW5jb2Rlcl9saW5rX3NldHVwX3BhcmFtZXRlcnNfdjFfNSBsaW5rX3BhcmFtOwogIHN0cnVj dCBkcF9wYW5lbF9tb2RlX3NldF9wYXJhbWV0ZXJzX3YxXzUgZHBwYW5lbF9wYXJhbTsKfTsKCgoK CgoKc3RydWN0IGRpZ190cmFuc21pdHRlcl9jb250cm9sX3BhcmFtZXRlcnNfdjFfNgp7CiAgdWlu dDhfdCBwaHlpZDsKICB1aW50OF90IGFjdGlvbjsKICB1bmlvbiB7CiAgICB1aW50OF90IGRpZ21v ZGU7CiAgICB1aW50OF90IGRwbGFuZXNldDsKICB9IG1vZGVfbGFuZXNldDsKICB1aW50OF90IGxh bmVudW07CiAgdWludDMyX3Qgc3ltY2xrXzEwa2h6OwogIHVpbnQ4X3QgaHBkc2VsOwogIHVpbnQ4 X3QgZGlnZmVfc2VsOwogIHVpbnQ4X3QgY29ubm9ial9pZDsKICB1aW50OF90IHJlc2VydmVkOwog IHVpbnQzMl90IHJlc2VydmVkMTsKfTsKCnN0cnVjdCBkaWdfdHJhbnNtaXR0ZXJfY29udHJvbF9w c19hbGxvY2F0aW9uX3YxXzYKewogIHN0cnVjdCBkaWdfdHJhbnNtaXR0ZXJfY29udHJvbF9wYXJh bWV0ZXJzX3YxXzYgcGFyYW07CiAgdWludDMyX3QgcmVzZXJ2ZWRbNF07Cn07CgoKZW51bSBhdG9t X2RpZ190cmFuc21pdHRlcl9jb250cm9sX2FjdGlvbgp7CiAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJ T05fRElTQUJMRSA9IDAsCiAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fRU5BQkxFID0gMSwKICBB VE9NX1RSQU5TTUlUVEVSX0FDVElPTl9MQ0RfQkxPRkYgPSAyLAogIEFUT01fVFJBTlNNSVRURVJf QUNUSU9OX0xDRF9CTE9OID0gMywKICBBVE9NX1RSQU5TTUlUVEVSX0FDVElPTl9CTF9CUklHSFRO RVNTX0NPTlRST0wgPSA0LAogIEFUT01fVFJBTlNNSVRURVJfQUNUSU9OX0xDRF9TRUxGVEVTVF9T VEFSVCA9IDUsCiAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fTENEX1NFTEZURVNUX1NUT1AgPSA2 LAogIEFUT01fVFJBTlNNSVRURVJfQUNUSU9OX0lOSVQgPSA3LAogIEFUT01fVFJBTlNNSVRURVJf QUNUSU9OX0RJU0FCTEVfT1VUUFVUID0gOCwKICBBVE9NX1RSQU5TTUlUVEVSX0FDVElPTl9FTkFC TEVfT1VUUFVUID0gOSwKICBBVE9NX1RSQU5TTUlUVEVSX0FDVElPTl9TRVRVUCA9IDEwLAogIEFU T01fVFJBTlNNSVRURVJfQUNUSU9OX1NFVFVQX1ZTRU1QSCA9IDExLAogIEFUT01fVFJBTlNNSVRU RVJfQUNUSU9OX1BPV0VSX09OID0gMTIsCiAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fUE9XRVJf T0ZGID0gMTMsCn07CgoKZW51bSBhdG9tX2RpZ190cmFuc21pdHRlcl9jb250cm9sX2RpZ2ZlX3Nl bAp7CiAgQVRPTV9UUkFOTVNJVFRFUl9WNl9fRElHQV9TRUwgPSAweDAxLAogIEFUT01fVFJBTk1T SVRURVJfVjZfX0RJR0JfU0VMID0gMHgwMiwKICBBVE9NX1RSQU5NU0lUVEVSX1Y2X19ESUdDX1NF TCA9IDB4MDQsCiAgQVRPTV9UUkFOTVNJVFRFUl9WNl9fRElHRF9TRUwgPSAweDA4LAogIEFUT01f VFJBTk1TSVRURVJfVjZfX0RJR0VfU0VMID0gMHgxMCwKICBBVE9NX1RSQU5NU0lUVEVSX1Y2X19E SUdGX1NFTCA9IDB4MjAsCiAgQVRPTV9UUkFOTVNJVFRFUl9WNl9fRElHR19TRUwgPSAweDQwLAp9 OwoKCgplbnVtIGF0b21fZGlnX3RyYW5zbWl0dGVyX2NvbnRyb2xfaHBkX3NlbAp7CiAgQVRPTV9U UkFOU01JVFRFUl9WNl9OT19IUERfU0VMID0gMHgwMCwKICBBVE9NX1RSQU5TTUlUVEVSX1Y2X0hQ RDFfU0VMID0gMHgwMSwKICBBVE9NX1RSQU5TTUlUVEVSX1Y2X0hQRDJfU0VMID0gMHgwMiwKICBB VE9NX1RSQU5TTUlUVEVSX1Y2X0hQRDNfU0VMID0gMHgwMywKICBBVE9NX1RSQU5TTUlUVEVSX1Y2 X0hQRDRfU0VMID0gMHgwNCwKICBBVE9NX1RSQU5TTUlUVEVSX1Y2X0hQRDVfU0VMID0gMHgwNSwK ICBBVE9NX1RSQU5TTUlUVEVSX1Y2X0hQRDZfU0VMID0gMHgwNiwKfTsKCgplbnVtIGF0b21fZGln X3RyYW5zbWl0dGVyX2NvbnRyb2xfZHBsYW5lc2V0CnsKICBEUF9MQU5FX1NFVF9fMERCXzBfNFYg PSAweDAwLAogIERQX0xBTkVfU0VUX18wREJfMF82ViA9IDB4MDEsCiAgRFBfTEFORV9TRVRfXzBE Ql8wXzhWID0gMHgwMiwKICBEUF9MQU5FX1NFVF9fMERCXzFfMlYgPSAweDAzLAogIERQX0xBTkVf U0VUX18zXzVEQl8wXzRWID0gMHgwOCwKICBEUF9MQU5FX1NFVF9fM181REJfMF82ViA9IDB4MDks CiAgRFBfTEFORV9TRVRfXzNfNURCXzBfOFYgPSAweDBhLAogIERQX0xBTkVfU0VUX182REJfMF80 ViA9IDB4MTAsCiAgRFBfTEFORV9TRVRfXzZEQl8wXzZWID0gMHgxMSwKICBEUF9MQU5FX1NFVF9f OV81REJfMF80ViA9IDB4MTgsCn07CgoKCgoKCgpzdHJ1Y3QgZXh0ZXJuYWxfZW5jb2Rlcl9jb250 cm9sX3BhcmFtZXRlcnNfdjJfNAp7CiAgdWludDE2X3QgcGl4ZWxjbG9ja18xMGtoejsKICB1aW50 OF90IGNvbmZpZzsKICB1aW50OF90IGFjdGlvbjsKICB1aW50OF90IGVuY29kZXJtb2RlOwogIHVp bnQ4X3QgbGFuZW51bTsKICB1aW50OF90IGJpdHBlcmNvbG9yOwogIHVpbnQ4X3QgaHBkX2lkOwp9 OwoKCgplbnVtIGV4dGVybmFsX2VuY29kZXJfY29udHJvbF9hY3Rpb25fZGVmCnsKICBFWFRFUk5B TF9FTkNPREVSX0FDVElPTl9WM19ESVNBQkxFX09VVFBVVCA9IDB4MDAsCiAgRVhURVJOQUxfRU5D T0RFUl9BQ1RJT05fVjNfRU5BQkxFX09VVFBVVCA9IDB4MDEsCiAgRVhURVJOQUxfRU5DT0RFUl9B Q1RJT05fVjNfRU5DT0RFUl9JTklUID0gMHgwNywKICBFWFRFUk5BTF9FTkNPREVSX0FDVElPTl9W M19FTkNPREVSX1NFVFVQID0gMHgwZiwKICBFWFRFUk5BTF9FTkNPREVSX0FDVElPTl9WM19FTkNP REVSX0JMQU5LSU5HX09GRiA9IDB4MTAsCiAgRVhURVJOQUxfRU5DT0RFUl9BQ1RJT05fVjNfRU5D T0RFUl9CTEFOS0lORyA9IDB4MTEsCiAgRVhURVJOQUxfRU5DT0RFUl9BQ1RJT05fVjNfREFDTE9B RF9ERVRFQ1RJT04gPSAweDEyLAogIEVYVEVSTkFMX0VOQ09ERVJfQUNUSU9OX1YzX0REQ19TRVRV UCA9IDB4MTQsCn07CgoKZW51bSBleHRlcm5hbF9lbmNvZGVyX2NvbnRyb2xfdjJfNF9jb25maWdf ZGVmCnsKICBFWFRFUk5BTF9FTkNPREVSX0NPTkZJR19WM19EUExJTktSQVRFX01BU0sgPSAweDAz LAogIEVYVEVSTkFMX0VOQ09ERVJfQ09ORklHX1YzX0RQTElOS1JBVEVfMV82MkdIWiA9IDB4MDAs CiAgRVhURVJOQUxfRU5DT0RFUl9DT05GSUdfVjNfRFBMSU5LUkFURV8yXzcwR0haID0gMHgwMSwK ICBFWFRFUk5BTF9FTkNPREVSX0NPTkZJR19WM19EUExJTktSQVRFXzVfNDBHSFogPSAweDAyLAog IEVYVEVSTkFMX0VOQ09ERVJfQ09ORklHX1YzX0RQTElOS1JBVEVfM18yNEdIWiA9IDB4MDMsCiAg RVhURVJOQUxfRU5DT0RFUl9DT05GSUdfVjNfRU5DT0RFUl9TRUxfTUFLUyA9IDB4NzAsCiAgRVhU RVJOQUxfRU5DT0RFUl9DT05GSUdfVjNfRU5DT0RFUjEgPSAweDAwLAogIEVYVEVSTkFMX0VOQ09E RVJfQ09ORklHX1YzX0VOQ09ERVIyID0gMHgxMCwKICBFWFRFUk5BTF9FTkNPREVSX0NPTkZJR19W M19FTkNPREVSMyA9IDB4MjAsCn07CgpzdHJ1Y3QgZXh0ZXJuYWxfZW5jb2Rlcl9jb250cm9sX3Bz X2FsbG9jYXRpb25fdjJfNAp7CiAgc3RydWN0IGV4dGVybmFsX2VuY29kZXJfY29udHJvbF9wYXJh bWV0ZXJzX3YyXzQgc0V4dEVuY29kZXI7CiAgdWludDMyX3QgcmVzZXJ2ZWRbMl07Cn07CiMgMzEz NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5o IgpzdHJ1Y3QgYW1kX2FjcGlfZGVzY3JpcHRpb25faGVhZGVyewogIHVpbnQzMl90IHNpZ25hdHVy ZTsKICB1aW50MzJfdCB0YWJsZUxlbmd0aDsKICB1aW50OF90IHJldmlzaW9uOwogIHVpbnQ4X3Qg Y2hlY2tzdW07CiAgdWludDhfdCBvZW1JZFs2XTsKICB1aW50OF90IG9lbVRhYmxlSWRbOF07CiAg dWludDMyX3Qgb2VtUmV2aXNpb247CiAgdWludDMyX3QgY3JlYXRvcklkOwogIHVpbnQzMl90IGNy ZWF0b3JSZXZpc2lvbjsKfTsKCnN0cnVjdCB1ZWZpX2FjcGlfdmZjdHsKICBzdHJ1Y3QgYW1kX2Fj cGlfZGVzY3JpcHRpb25faGVhZGVyIHNoZWFkZXI7CiAgdWludDhfdCB0YWJsZVVVSURbMTZdOwog IHVpbnQzMl90IHZiaW9zaW1hZ2VvZmZzZXQ7CiAgdWludDMyX3QgbGliMUltYWdlb2Zmc2V0Owog IHVpbnQzMl90IHJlc2VydmVkWzRdOwp9OwoKc3RydWN0IHZmY3RfaW1hZ2VfaGVhZGVyewogIHVp bnQzMl90IHBjaWJ1czsKICB1aW50MzJfdCBwY2lkZXZpY2U7CiAgdWludDMyX3QgcGNpZnVuY3Rp b247CiAgdWludDE2X3QgdmVuZG9yaWQ7CiAgdWludDE2X3QgZGV2aWNlaWQ7CiAgdWludDE2X3Qg c3N2aWQ7CiAgdWludDE2X3Qgc3NpZDsKICB1aW50MzJfdCByZXZpc2lvbjsKICB1aW50MzJfdCBp bWFnZWxlbmd0aDsKfTsKCgpzdHJ1Y3QgZ29wX3ZiaW9zX2NvbnRlbnQgewogIHN0cnVjdCB2ZmN0 X2ltYWdlX2hlYWRlciB2Ymlvc2hlYWRlcjsKICB1aW50OF90IHZiaW9zY29udGVudFsxXTsKfTsK CnN0cnVjdCBnb3BfbGliMV9jb250ZW50IHsKICBzdHJ1Y3QgdmZjdF9pbWFnZV9oZWFkZXIgbGli MWhlYWRlcjsKICB1aW50OF90IGxpYjFjb250ZW50WzFdOwp9OwojIDMxOTAgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKZW51bSBzY3JhdGNo X3JlZ2lzdGVyX2RlZnsKICBBVE9NX0RFVklDRV9DT05ORUNUX0lORk9fREVGID0gMCwKICBBVE9N X0JMX0JSSV9MRVZFTF9JTkZPX0RFRiA9IDIsCiAgQVRPTV9BQ1RJVkVfSU5GT19ERUYgPSAzLAog IEFUT01fTENEX0lORk9fREVGID0gNCwKICBBVE9NX0RFVklDRV9SRVFfSU5GT19ERUYgPSA1LAog IEFUT01fQUNDX0NIQU5HRV9JTkZPX0RFRiA9IDYsCiAgQVRPTV9QUkVfT1NfTU9ERV9JTkZPX0RF RiA9IDcsCiAgQVRPTV9QUkVfT1NfQVNTRVJUSU9OX0RFRiA9IDgsCiAgQVRPTV9JTlRFUk5BTF9U SU1FUl9JTkZPX0RFRiA9IDEwLAp9OwoKZW51bSBzY3JhdGNoX2RldmljZV9jb25uZWN0X2luZm9f Yml0X2RlZnsKICBBVE9NX0RJU1BMQVlfTENEMV9DT05ORUNUID0weDAwMDIsCiAgQVRPTV9ESVNQ TEFZX0RGUDFfQ09OTkVDVCA9MHgwMDA4LAogIEFUT01fRElTUExBWV9ERlAyX0NPTk5FQ1QgPTB4 MDA4MCwKICBBVE9NX0RJU1BMQVlfREZQM19DT05ORUNUID0weDAyMDAsCiAgQVRPTV9ESVNQTEFZ X0RGUDRfQ09OTkVDVCA9MHgwNDAwLAogIEFUT01fRElTUExBWV9ERlA1X0NPTk5FQ1QgPTB4MDgw MCwKICBBVE9NX0RJU1BMQVlfREZQNl9DT05ORUNUID0weDAwNDAsCiAgQVRPTV9ESVNQTEFZX0RG UHhfQ09OTkVDVCA9MHgwZWM4LAogIEFUT01fQ09OTkVDVF9JTkZPX0RFVklDRV9NQVNLID0weDBm ZmYsCn07CgplbnVtIHNjcmF0Y2hfYmxfYnJpX2xldmVsX2luZm9fYml0X2RlZnsKICBBVE9NX0NV UlJFTlRfQkxfTEVWRUxfU0hJRlQgPTB4OCwKCiAgQVRPTV9DVVJSRU5UX0JMX0xFVkVMX01BU0sg PTB4MDAwMGZmMDAsCiAgQVRPTV9ERVZJQ0VfRFBNU19TVEFURSA9MHgwMDAxMDAwMCwKCn07Cgpl bnVtIHNjcmF0Y2hfYWN0aXZlX2luZm9fYml0c19kZWZ7CiAgQVRPTV9ESVNQTEFZX0xDRDFfQUNU SVZFID0weDAwMDIsCiAgQVRPTV9ESVNQTEFZX0RGUDFfQUNUSVZFID0weDAwMDgsCiAgQVRPTV9E SVNQTEFZX0RGUDJfQUNUSVZFID0weDAwODAsCiAgQVRPTV9ESVNQTEFZX0RGUDNfQUNUSVZFID0w eDAyMDAsCiAgQVRPTV9ESVNQTEFZX0RGUDRfQUNUSVZFID0weDA0MDAsCiAgQVRPTV9ESVNQTEFZ X0RGUDVfQUNUSVZFID0weDA4MDAsCiAgQVRPTV9ESVNQTEFZX0RGUDZfQUNUSVZFID0weDAwNDAs CiAgQVRPTV9BQ1RJVkVfSU5GT19ERVZJQ0VfTUFTSyA9MHgwZmZmLAp9OwoKZW51bSBzY3JhdGNo X2RldmljZV9yZXFfaW5mb19iaXRzX2RlZnsKICBBVE9NX0RJU1BMQVlfTENEMV9SRVEgPTB4MDAw MiwKICBBVE9NX0RJU1BMQVlfREZQMV9SRVEgPTB4MDAwOCwKICBBVE9NX0RJU1BMQVlfREZQMl9S RVEgPTB4MDA4MCwKICBBVE9NX0RJU1BMQVlfREZQM19SRVEgPTB4MDIwMCwKICBBVE9NX0RJU1BM QVlfREZQNF9SRVEgPTB4MDQwMCwKICBBVE9NX0RJU1BMQVlfREZQNV9SRVEgPTB4MDgwMCwKICBB VE9NX0RJU1BMQVlfREZQNl9SRVEgPTB4MDA0MCwKICBBVE9NX1JFUV9JTkZPX0RFVklDRV9NQVNL ID0weDBmZmYsCn07CgplbnVtIHNjcmF0Y2hfYWNjX2NoYW5nZV9pbmZvX2JpdHNoaWZ0X2RlZnsK ICBBVE9NX0FDQ19DSEFOR0VfQUNDX01PREVfU0hJRlQgPTQsCiAgQVRPTV9BQ0NfQ0hBTkdFX0xJ RF9TVEFUVVNfU0hJRlQgPTYsCn07CgplbnVtIHNjcmF0Y2hfYWNjX2NoYW5nZV9pbmZvX2JpdHNf ZGVmewogIEFUT01fQUNDX0NIQU5HRV9BQ0NfTU9ERSA9MHgwMDAwMDAxMCwKICBBVE9NX0FDQ19D SEFOR0VfTElEX1NUQVRVUyA9MHgwMDAwMDA0MCwKfTsKCmVudW0gc2NyYXRjaF9wcmVfb3NfbW9k ZV9pbmZvX2JpdHNfZGVmewogIEFUT01fUFJFX09TX01PREVfTUFTSyA9MHgwMDAwMDAwMywKICBB VE9NX1BSRV9PU19NT0RFX1ZHQSA9MHgwMDAwMDAwMCwKICBBVE9NX1BSRV9PU19NT0RFX1ZFU0Eg PTB4MDAwMDAwMDEsCiAgQVRPTV9QUkVfT1NfTU9ERV9HT1AgPTB4MDAwMDAwMDIsCiAgQVRPTV9Q UkVfT1NfTU9ERV9QSVhFTF9ERVBUSCA9MHgwMDAwMDAwQywKICBBVE9NX1BSRV9PU19NT0RFX1BJ WEVMX0ZPUk1BVF9NQVNLPTB4MDAwMDAwRjAsCiAgQVRPTV9QUkVfT1NfTU9ERV84QklUX1BBTF9F TiA9MHgwMDAwMDEwMCwKICBBVE9NX0FTSUNfSU5JVF9DT01QTEVURSA9MHgwMDAwMDIwMCwKCiAg QVRPTV9QUkVfT1NfTU9ERV9OVU1CRVJfTUFTSyA9MHhGRkZGMDAwMCwKCn07CiMgMzI3NiAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgojIDEg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmVpZC5o IiAxCiMgMzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmly bXdhcmVpZC5oIgplbnVtIGF0b21fbWFzdGVyX2RhdGFfdGFibGVfaWQKewogICAgVkJJT1NfREFU QV9UQkxfSURfX1VUSUxJVFlfUElQRUxJTkUsCiAgICBWQklPU19EQVRBX1RCTF9JRF9fTVVMVElN RURJQV9JTkYsCiAgICBWQklPU19EQVRBX1RCTF9JRF9fRklSTVdBUkVfSU5GLAogICAgVkJJT1Nf REFUQV9UQkxfSURfX0xDRF9JTkYsCiAgICBWQklPU19EQVRBX1RCTF9JRF9fU01VX0lORiwKICAg IFZCSU9TX0RBVEFfVEJMX0lEX19WUkFNX1VTQUdFX0JZX0ZJUk1XQVJFLAogICAgVkJJT1NfREFU QV9UQkxfSURfX0dQSU9fUElOX0xVVCwKICAgIFZCSU9TX0RBVEFfVEJMX0lEX19HRlhfSU5GLAog ICAgVkJJT1NfREFUQV9UQkxfSURfX1BPV0VSX1BMQVlfSU5GLAogICAgVkJJT1NfREFUQV9UQkxf SURfX0RJU1BMQVlfT0JKRUNUX0lORiwKICAgIFZCSU9TX0RBVEFfVEJMX0lEX19JTkRJUkVDVF9J T19BQ0NFU1MsCiAgICBWQklPU19EQVRBX1RCTF9JRF9fVU1DX0lORiwKICAgIFZCSU9TX0RBVEFf VEJMX0lEX19EQ0VfSU5GLAogICAgVkJJT1NfREFUQV9UQkxfSURfX1ZSQU1fSU5GLAogICAgVkJJ T1NfREFUQV9UQkxfSURfX0lOVEVHUkFURURfU1lTX0lORiwKICAgIFZCSU9TX0RBVEFfVEJMX0lE X19BU0lDX1BST0ZJTElOR19JTkYsCiAgICBWQklPU19EQVRBX1RCTF9JRF9fVk9MVEFHRV9PQkpf SU5GLAoKICAgIFZCSU9TX0RBVEFfVEJMX0lEX19VTkRFRklORUQsCn07CgplbnVtIGF0b21fbWFz dGVyX2NvbW1hbmRfdGFibGVfaWQKewogICAgVkJJT1NfQ01EX1RCTF9JRF9fQVNJQ19JTklULAog ICAgVkJJT1NfQ01EX1RCTF9JRF9fRElHWF9FTkNPREVSX0NPTlRST0wsCiAgICBWQklPU19DTURf VEJMX0lEX19TRVRfRU5HSU5FX0NMT0NLLAogICAgVkJJT1NfQ01EX1RCTF9JRF9fU0VUX01FTU9S WV9DTE9DSywKICAgIFZCSU9TX0NNRF9UQkxfSURfX1NFVF9QSVhFTF9DTE9DSywKICAgIFZCSU9T X0NNRF9UQkxfSURfX0VOQUJMRV9ESVNQX1BPV0VSX0dBVElORywKICAgIFZCSU9TX0NNRF9UQkxf SURfX0JMQU5LX0NSVEMsCiAgICBWQklPU19DTURfVEJMX0lEX19FTkFCTEVfQ1JUQywKICAgIFZC SU9TX0NNRF9UQkxfSURfX0dFVF9TTVVfQ0xPQ0tfSU5GTywKICAgIFZCSU9TX0NNRF9UQkxfSURf X1NFTEVDVF9DUlRDX1NPVVJDRSwKICAgIFZCSU9TX0NNRF9UQkxfSURfX1NFVF9EQ0VfQ0xPQ0ss CiAgICBWQklPU19DTURfVEJMX0lEX19HRVRfTUVNT1JZX0NMT0NLLAogICAgVkJJT1NfQ01EX1RC TF9JRF9fR0VUX0VOR0lORV9DTE9DSywKICAgIFZCSU9TX0NNRF9UQkxfSURfX1NFVF9DUlRDX1VT SU5HX0RURF9USU1JTkcsCiAgICBWQklPU19DTURfVEJMX0lEX19FWFRFTkFMX0VOQ09ERVJfQ09O VFJPTCwKICAgIFZCSU9TX0NNRF9UQkxfSURfX1BST0NFU1NfSTJDX0NIQU5ORUxfVFJBTlNBQ1RJ T04sCiAgICBWQklPU19DTURfVEJMX0lEX19DT01QVVRFX0dQVV9DTE9DS19QQVJBTSwKICAgIFZC SU9TX0NNRF9UQkxfSURfX0RZTkFNSUNfTUVNT1JZX1NFVFRJTkdTLAogICAgVkJJT1NfQ01EX1RC TF9JRF9fTUVNT1JZX1RSQUlOSU5HLAogICAgVkJJT1NfQ01EX1RCTF9JRF9fU0VUX1ZPTFRBR0Us CiAgICBWQklPU19DTURfVEJMX0lEX19ESUcxX1RSQU5TTUlUVEVSX0NPTlRST0wsCiAgICBWQklP U19DTURfVEJMX0lEX19QUk9DRVNTX0FVWF9DSEFOTkVMX1RSQU5TQUNUSU9OLAogICAgVkJJT1Nf Q01EX1RCTF9JRF9fR0VUX1ZPTFRBR0VfSU5GLAoKICAgIFZCSU9TX0NNRF9UQkxfSURfX1VOREVG SU5FRCwKfTsKIyAzMjc3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUv YXRvbWZpcm13YXJlLmgiIDIKI3ByYWdtYSBwYWNrKCkKIyA0MSAiZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIgMgojIDEg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hc2ljX3JlZy9jbGsvY2xr XzEwXzBfMl9vZmZzZXQuaCIgMQojIDQyICJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21nci5jIiAyCiMgMSAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2FzaWNfcmVnL2Nsay9jbGtfMTBfMF8yX3NoX21h c2suaCIgMQojIDQzICJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Ns a19tZ3IvZGNuMjEvcm5fY2xrX21nci5jIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9pbmNsdWRlL3Jlbm9pcl9pcF9vZmZzZXQuaCIgMQojIDI4ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvcmVub2lyX2lwX29mZnNldC5oIgpzdHJ1Y3QgSVBf QkFTRV9JTlNUQU5DRQp7CiAgICB1bnNpZ25lZCBpbnQgc2VnbWVudFs1XTsKfTsKCnN0cnVjdCBJ UF9CQVNFCnsKICAgIHN0cnVjdCBJUF9CQVNFX0lOU1RBTkNFIGluc3RhbmNlWzddOwp9OwoKCnN0 YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBBQ1BfQkFTRSA9eyB7IHsgeyAweDAyNDAzODAwLCAw eDAwNDgwMDAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0g fSB9IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBBVEhVQl9CQVNFID17IHsgeyB7IDB4 MDAwMDBDMjAsIDB4MDI0MDhDMDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAs IDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAs IDAsIDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIENMS19CQVNFID17 IHsgeyB7IDB4MDAwMTZDMDAsIDB4MDAwMTZFMDAsIDB4MDAwMTcwMDAsIDB4MDAwMTdFMDAsIDAg fSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAs IDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAs IDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0 IHN0cnVjdCBJUF9CQVNFIERCR1VfSU8wX0JBU0UgPXsgeyB7IHsgMHgwMDAwMDFFMCwgMHgwMjQw QjQwMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9 OwpzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgREZfQkFTRSA9eyB7IHsgeyAweDAwMDA3MDAw LCAweDAyNDBCODAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAw IH0gfSB9IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBESU9fQkFTRSA9eyB7IHsgeyAw eDAyNDA0MDAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAw IH0gfSB9IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBETVVfQkFTRSA9eyB7IHsgeyAw eDAwMDAwMDEyLCAweDAwMDAwMEMwLCAweDAwMDAzNEMwLCAweDAwMDA5MDAwLCAweDAyNDAzQzAw IH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAw LCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAw LCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CnN0YXRpYyBjb25z dCBzdHJ1Y3QgSVBfQkFTRSBEUENTX0JBU0UgPXsgeyB7IHsgMHgwMDAwMDAxMiwgMHgwMDAwMDBD MCwgMHgwMDAwMzRDMCwgMHgwMDAwOTAwMCwgMHgwMjQwM0MwMCB9IH0sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9 IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgRlVT RV9CQVNFID17IHsgeyB7IDB4MDAwMTc0MDAsIDB4MDI0MDE0MDAsIDAsIDAsIDAgfSB9LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAs IDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAs IDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7 IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBJ UF9CQVNFIEdDX0JBU0UgPXsgeyB7IHsgMHgwMDAwMjAwMCwgMHgwMDAwQTAwMCwgMHgwMjQwMkMw MCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsg MCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0 aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgSERBX0JBU0UgPXsgeyB7IHsgMHgwMjQwNDgwMCwgMHgw MDRDMDAwMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0g fSB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgSERQX0JBU0UgPXsgeyB7IHsgMHgwMDAw MEYyMCwgMHgwMjQwQTQwMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9 IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0gfSB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgSU9IQzBfQkFTRSA9eyB7 IHsgeyAweDAwMDEwMDAwLCAweDAyNDA2MDAwLCAweDA0RUMwMDAwLCAwLCAwIH0gfSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAw IH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAw LCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAw LCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBf QkFTRSBJU1BfQkFTRSA9eyB7IHsgeyAweDAwMDE4MDAwLCAweDAyNDBCMDAwLCAwLCAwLCAwIH0g fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAw LCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAw LCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg eyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CnN0YXRpYyBjb25zdCBz dHJ1Y3QgSVBfQkFTRSBMMklNVTBfQkFTRSA9eyB7IHsgeyAweDAwMDA3REMwLCAweDAyNDA3MDAw LCAweDAwOTAwMDAwLCAweDA0RkMwMDAwLCAweDA1NUMwMDAwIH0gfSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0g fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAw LCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAw LCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg eyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBNTUhV Ql9CQVNFID17IHsgeyB7IDB4MDAwMUEwMDAsIDB4MDI0MDg4MDAsIDAsIDAsIDAgfSB9LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAs IDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAs IDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7 IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBJ UF9CQVNFIE1QMF9CQVNFID17IHsgeyB7IDB4MDAwMTYwMDAsIDB4MDI0M0ZDMDAsIDB4MDBEQzAw MDAsIDB4MDBFMDAwMDAsIDB4MDBFNDAwMDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAs IDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIE1QMV9CQVNFID17IHsg eyB7IDB4MDAwMTYwMDAsIDB4MDI0MDA0MDAsIDB4MDBFODAwMDAsIDB4MDBFQzAwMDAsIDB4MDBG MDAwMDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAs IDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKc3RhdGlj IGNvbnN0IHN0cnVjdCBJUF9CQVNFIE5CSUYwX0JBU0UgPXsgeyB7IHsgMHgwMDAwMDAwMCwgMHgw MDAwMDAxNCwgMHgwMDAwMEQyMCwgMHgwMDAxMDQwMCwgMHgwMjQxQjAwMCB9IH0sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9 IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JB U0UgRENOX0JBU0UgPXsgeyB7IHsgMHgwMDAwMDAxMiwgMHgwMDAwMDBDMCwgMHgwMDAwMzRDMCwg MCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0aWMgY29uc3Qgc3RydWN0 IElQX0JBU0UgT1NTU1lTX0JBU0UgPXsgeyB7IHsgMHgwMDAwMTBBMCwgMHgwMjQwQTAwMCwgMCwg MCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0aWMg Y29uc3Qgc3RydWN0IElQX0JBU0UgUENJRTBfQkFTRSA9eyB7IHsgeyAweDAyNDExODAwLCAweDA0 NDQwMDAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9 IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBTRE1BMF9CQVNFID17IHsgeyB7IDB4MDAw MDEyNjAsIDB4MDI0MEE4MDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAs IDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIFNNVUlPX0JBU0UgPXsg eyB7IHsgMHgwMDAxNjgwMCwgMHgwMDAxNkEwMCwgMHgwMjQwMTAwMCwgMHgwMDQ0MDAwMCwgMCB9 IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0aWMgY29uc3Qg c3RydWN0IElQX0JBU0UgVEhNX0JBU0UgPXsgeyB7IHsgMHgwMDAxNjYwMCwgMHgwMjQwMEMwMCwg MCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsg MCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0 aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgVU1DX0JBU0UgPXsgeyB7IHsgMHgwMDAxNDAwMCwgMHgw MjQyNTgwMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMHgwMDA1NDAwMCwgMHgwMjQyNUMwMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwg MCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwg MCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsg MCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgVVNCMF9C QVNFID17IHsgeyB7IDB4MDI0MkE4MDAsIDB4MDVCMDAwMDAsIDAsIDAsIDAgfSB9LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAs IDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAs IDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9C QVNFIFVWRDBfQkFTRSA9eyB7IHsgeyAweDAwMDA3ODAwLCAweDAwMDA3RTAwLCAweDAyNDAzMDAw LCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAw LCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CiMgNDQg ImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9y bl9jbGtfbWdyLmMiIDIKIyA1NyAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIKaW50IHJuX2dldF9hY3RpdmVfZGlzcGxh eV9jbnRfd2EoCiAgc3RydWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpCnsK IGludCBpLCBkaXNwbGF5X2NvdW50OwogYm9vbCB0bWRzX3ByZXNlbnQgPSBmYWxzZTsKCiBkaXNw bGF5X2NvdW50ID0gMDsKIGZvciAoaSA9IDA7IGkgPCBjb250ZXh0LT5zdHJlYW1fY291bnQ7IGkr KykgewogIGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSA9IGNvbnRleHQtPnN0 cmVhbXNbaV07CgogIGlmIChzdHJlYW0tPnNpZ25hbCA9PSBTSUdOQUxfVFlQRV9IRE1JX1RZUEVf QSB8fAogICAgc3RyZWFtLT5zaWduYWwgPT0gU0lHTkFMX1RZUEVfRFZJX1NJTkdMRV9MSU5LIHx8 CiAgICBzdHJlYW0tPnNpZ25hbCA9PSBTSUdOQUxfVFlQRV9EVklfRFVBTF9MSU5LKQogICB0bWRz X3ByZXNlbnQgPSB0cnVlOwogfQoKIGZvciAoaSA9IDA7IGkgPCBkYy0+bGlua19jb3VudDsgaSsr KSB7CiAgY29uc3Qgc3RydWN0IGRjX2xpbmsgKmxpbmsgPSBkYy0+bGlua3NbaV07CiMgODQgImRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9j bGtfbWdyLmMiCiAgaWYgKGxpbmstPmNvbm5lY3Rvcl9zaWduYWwgPT0gU0lHTkFMX1RZUEVfVklS VFVBTCB8fAogICAgbGluay0+bGlua19lbmMtPmZ1bmNzLT5pc19kaWdfZW5hYmxlZChsaW5rLT5s aW5rX2VuYykpCiAgIGRpc3BsYXlfY291bnQrKzsKIH0KCgogaWYgKGRpc3BsYXlfY291bnQgPT0g MCAmJiB0bWRzX3ByZXNlbnQpCiAgZGlzcGxheV9jb3VudCA9IDE7CgogcmV0dXJuIGRpc3BsYXlf Y291bnQ7Cn0KCnZvaWQgcm5fdXBkYXRlX2Nsb2NrcyhzdHJ1Y3QgY2xrX21nciAqY2xrX21ncl9i YXNlLAogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCiAgIGJvb2wgc2FmZV90b19sb3dlcikK ewogc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IgPSAoeyB2b2lkICpfX21wdHIgPSAo dm9pZCAqKShjbGtfbWdyX2Jhc2UpOyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNz ZXJ0XzEwMCh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oInBvaW50ZXIgdHlwZSBtaXNt YXRjaCBpbiBjb250YWluZXJfb2YoKSIpKSk7IGlmICghKCEoIV9fYnVpbHRpbl90eXBlc19jb21w YXRpYmxlX3AodHlwZW9mKCooY2xrX21ncl9iYXNlKSksIHR5cGVvZigoKHN0cnVjdCBjbGtfbWdy X2ludGVybmFsICopMCktPmJhc2UpKSAmJiAhX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0 eXBlb2YoKihjbGtfbWdyX2Jhc2UpKSwgdHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fz c2VydF8xMDAoKTsgfSB3aGlsZSAoMCk7ICgoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKikoX19t cHRyIC0gX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsLCBiYXNlKSkp OyB9KTsKIHN0cnVjdCBkY19jbG9ja3MgKm5ld19jbG9ja3MgPSAmY29udGV4dC0+YndfY3R4LmJ3 LmRjbi5jbGs7CiBzdHJ1Y3QgZGMgKmRjID0gY2xrX21ncl9iYXNlLT5jdHgtPmRjOwogaW50IGRp c3BsYXlfY291bnQ7CiBib29sIHVwZGF0ZV9kcHBjbGsgPSBmYWxzZTsKIGJvb2wgdXBkYXRlX2Rp c3BjbGsgPSBmYWxzZTsKIGJvb2wgZHBwX2Nsb2NrX2xvd2VyZWQgPSBmYWxzZTsKCiBzdHJ1Y3Qg ZG1jdSAqZG1jdSA9IGNsa19tZ3JfYmFzZS0+Y3R4LT5kYy0+cmVzX3Bvb2wtPmRtY3U7CgogaWYg KGRjLT53b3JrX2Fyb3VuZHMuc2tpcF9jbG9ja191cGRhdGUpCiAgcmV0dXJuOwoKCgoKCiBpZiAo c2FmZV90b19sb3dlcikgewoKICBpZiAoY2xrX21ncl9iYXNlLT5jbGtzLnB3cl9zdGF0ZSAhPSBE Q05fUFdSX1NUQVRFX0xPV19QT1dFUikgewoKICAgZGlzcGxheV9jb3VudCA9IHJuX2dldF9hY3Rp dmVfZGlzcGxheV9jbnRfd2EoZGMsIGNvbnRleHQpOwoKICAgaWYgKGRpc3BsYXlfY291bnQgPT0g MCkgewogICAgcm5fdmJpb3Nfc211X3NldF9kY25fbG93X3Bvd2VyX3N0YXRlKGNsa19tZ3IsIERD Tl9QV1JfU1RBVEVfTE9XX1BPV0VSKTsKCiAgICBjbGtfbWdyX2Jhc2UtPmNsa3MucHdyX3N0YXRl ID0gRENOX1BXUl9TVEFURV9MT1dfUE9XRVI7CiAgIH0KICB9CiB9IGVsc2UgewoKICBpZiAoY2xr X21ncl9iYXNlLT5jbGtzLnB3cl9zdGF0ZSAhPSBEQ05fUFdSX1NUQVRFX01JU1NJT05fTU9ERSkg ewogICBybl92Ymlvc19zbXVfc2V0X2Rjbl9sb3dfcG93ZXJfc3RhdGUoY2xrX21nciwgRENOX1BX Ul9TVEFURV9NSVNTSU9OX01PREUpOwoKICAgY2xrX21ncl9iYXNlLT5jbGtzLnB3cl9zdGF0ZSA9 IERDTl9QV1JfU1RBVEVfTUlTU0lPTl9NT0RFOwogIH0KIH0KCiBpZiAoc2hvdWxkX3NldF9jbG9j ayhzYWZlX3RvX2xvd2VyLCBuZXdfY2xvY2tzLT5waHljbGtfa2h6LCBjbGtfbWdyX2Jhc2UtPmNs a3MucGh5Y2xrX2toeikpIHsKICBjbGtfbWdyX2Jhc2UtPmNsa3MucGh5Y2xrX2toeiA9IG5ld19j bG9ja3MtPnBoeWNsa19raHo7CiAgcm5fdmJpb3Nfc211X3NldF9waHljbGsoY2xrX21nciwgY2xr X21ncl9iYXNlLT5jbGtzLnBoeWNsa19raHopOwogfQoKIGlmIChzaG91bGRfc2V0X2Nsb2NrKHNh ZmVfdG9fbG93ZXIsIG5ld19jbG9ja3MtPmRjZmNsa19raHosIGNsa19tZ3JfYmFzZS0+Y2xrcy5k Y2ZjbGtfa2h6KSkgewogIGNsa19tZ3JfYmFzZS0+Y2xrcy5kY2ZjbGtfa2h6ID0gbmV3X2Nsb2Nr cy0+ZGNmY2xrX2toejsKICBybl92Ymlvc19zbXVfc2V0X2hhcmRfbWluX2RjZmNsayhjbGtfbWdy LCBjbGtfbWdyX2Jhc2UtPmNsa3MuZGNmY2xrX2toeik7CiB9CgogaWYgKHNob3VsZF9zZXRfY2xv Y2soc2FmZV90b19sb3dlciwKICAgbmV3X2Nsb2Nrcy0+ZGNmY2xrX2RlZXBfc2xlZXBfa2h6LCBj bGtfbWdyX2Jhc2UtPmNsa3MuZGNmY2xrX2RlZXBfc2xlZXBfa2h6KSkgewogIGNsa19tZ3JfYmFz ZS0+Y2xrcy5kY2ZjbGtfZGVlcF9zbGVlcF9raHogPSBuZXdfY2xvY2tzLT5kY2ZjbGtfZGVlcF9z bGVlcF9raHo7CiAgcm5fdmJpb3Nfc211X3NldF9taW5fZGVlcF9zbGVlcF9kY2ZjbGsoY2xrX21n ciwgY2xrX21ncl9iYXNlLT5jbGtzLmRjZmNsa19kZWVwX3NsZWVwX2toeik7CiB9CgoKIGlmICgh KChkYy0+Y3R4LT5kY2VfZW52aXJvbm1lbnQgPT0gRENFX0VOVl9GUEdBX01BWElNVVMpIHx8IChk Yy0+Y3R4LT5kY2VfZW52aXJvbm1lbnQgPT0gRENFX0VOVl9ESUFHKSkpIHsKICBpZiAobmV3X2Ns b2Nrcy0+ZHBwY2xrX2toeiA8IDEwMDAwMCkKICAgbmV3X2Nsb2Nrcy0+ZHBwY2xrX2toeiA9IDEw MDAwMDsKIH0KCiBpZiAoc2hvdWxkX3NldF9jbG9jayhzYWZlX3RvX2xvd2VyLCBuZXdfY2xvY2tz LT5kcHBjbGtfa2h6LCBjbGtfbWdyLT5iYXNlLmNsa3MuZHBwY2xrX2toeikpIHsKICBpZiAoY2xr X21nci0+YmFzZS5jbGtzLmRwcGNsa19raHogPiBuZXdfY2xvY2tzLT5kcHBjbGtfa2h6KQogICBk cHBfY2xvY2tfbG93ZXJlZCA9IHRydWU7CiAgY2xrX21ncl9iYXNlLT5jbGtzLmRwcGNsa19raHog PSBuZXdfY2xvY2tzLT5kcHBjbGtfa2h6OwogIHVwZGF0ZV9kcHBjbGsgPSB0cnVlOwogfQoKIGlm IChzaG91bGRfc2V0X2Nsb2NrKHNhZmVfdG9fbG93ZXIsIG5ld19jbG9ja3MtPmRpc3BjbGtfa2h6 LCBjbGtfbWdyX2Jhc2UtPmNsa3MuZGlzcGNsa19raHopKSB7CiAgY2xrX21ncl9iYXNlLT5jbGtz LmRpc3BjbGtfa2h6ID0gbmV3X2Nsb2Nrcy0+ZGlzcGNsa19raHo7CiAgcm5fdmJpb3Nfc211X3Nl dF9kaXNwY2xrKGNsa19tZ3IsIGNsa19tZ3JfYmFzZS0+Y2xrcy5kaXNwY2xrX2toeik7CgogIHVw ZGF0ZV9kaXNwY2xrID0gdHJ1ZTsKIH0KCiBpZiAoZHBwX2Nsb2NrX2xvd2VyZWQpIHsKCiAgZGNu MjBfdXBkYXRlX2Nsb2Nrc191cGRhdGVfZHBwX2R0byhjbGtfbWdyLCBjb250ZXh0LCBzYWZlX3Rv X2xvd2VyKTsKICBybl92Ymlvc19zbXVfc2V0X2RwcGNsayhjbGtfbWdyLCBjbGtfbWdyX2Jhc2Ut PmNsa3MuZHBwY2xrX2toeik7CiB9IGVsc2UgewoKICBpZiAodXBkYXRlX2RwcGNsayB8fCB1cGRh dGVfZGlzcGNsaykKICAgcm5fdmJpb3Nfc211X3NldF9kcHBjbGsoY2xrX21nciwgY2xrX21ncl9i YXNlLT5jbGtzLmRwcGNsa19raHopOwoKICBpZiAobmV3X2Nsb2Nrcy0+ZHBwY2xrX2toeiA+PSBk Yy0+Y3VycmVudF9zdGF0ZS0+YndfY3R4LmJ3LmRjbi5jbGsuZHBwY2xrX2toeikKICAgZGNuMjBf dXBkYXRlX2Nsb2Nrc191cGRhdGVfZHBwX2R0byhjbGtfbWdyLCBjb250ZXh0LCBzYWZlX3RvX2xv d2VyKTsKIH0KCiBpZiAodXBkYXRlX2Rpc3BjbGsgJiYKICAgZG1jdSAmJiBkbWN1LT5mdW5jcy0+ aXNfZG1jdV9pbml0aWFsaXplZChkbWN1KSkgewoKICBkbWN1LT5mdW5jcy0+c2V0X3Bzcl93YWl0 X2xvb3AoZG1jdSwKICAgY2xrX21ncl9iYXNlLT5jbGtzLmRpc3BjbGtfa2h6IC8gMTAwMCAvIDcp OwogfQp9CgoKc3RhdGljIGludCBnZXRfdmNvX2ZyZXF1ZW5jeV9mcm9tX3JlZyhzdHJ1Y3QgY2xr X21ncl9pbnRlcm5hbCAqY2xrX21ncikKewoKIHN0cnVjdCBmaXhlZDMxXzMyIHBsbF9yZXE7CiB1 bnNpZ25lZCBpbnQgZmJtdWx0X2ZyYWNfdmFsID0gMDsKIHVuc2lnbmVkIGludCBmYm11bHRfaW50 X3ZhbCA9IDA7CgoKCgoKCgogZ2VuZXJpY19yZWdfZ2V0KGNsa19tZ3ItPmJhc2UuY3R4LCAoQ0xL X0JBU0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDAwZiksIDB4MTAsIDB4RkZGRjAwMDBM LCAmZmJtdWx0X2ZyYWNfdmFsKTsKIGdlbmVyaWNfcmVnX2dldChjbGtfbWdyLT5iYXNlLmN0eCwg KENMS19CQVNFLmluc3RhbmNlWzBdLnNlZ21lbnRbMV0gKyAweDAwMGYpLCAweDAsIDB4MDAwMDAx RkZMLCAmZmJtdWx0X2ludF92YWwpOwoKIHBsbF9yZXEgPSBkY19maXhwdF9mcm9tX2ludChmYm11 bHRfaW50X3ZhbCk7CgoKCgoKIHBsbF9yZXEudmFsdWUgfD0gZmJtdWx0X2ZyYWNfdmFsIDw8IDE2 OwoKCiBwbGxfcmVxID0gZGNfZml4cHRfbXVsX2ludChwbGxfcmVxLCBjbGtfbWdyLT5kZnNfcmVm X2ZyZXFfa2h6KTsKCgogcmV0dXJuIGRjX2ZpeHB0X2Zsb29yKHBsbF9yZXEpOwp9CgpzdGF0aWMg dm9pZCBybl9kdW1wX2Nsa19yZWdpc3RlcnNfaW50ZXJuYWwoc3RydWN0IHJuX2Nsa19pbnRlcm5h bCAqaW50ZXJuYWwsIHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jhc2UpCnsKIHN0cnVjdCBjbGtf bWdyX2ludGVybmFsICpjbGtfbWdyID0gKHsgdm9pZCAqX19tcHRyID0gKHZvaWQgKikoY2xrX21n cl9iYXNlKTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8yMjkodm9pZCkg X19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29udGFp bmVyX29mKCkiKSkpOyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVv ZigqKGNsa19tZ3JfYmFzZSkpLCB0eXBlb2YoKChzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqKTAp LT5iYXNlKSkgJiYgIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCooY2xrX21n cl9iYXNlKSksIHR5cGVvZih2b2lkKSkpKSkgX19jb21waWxldGltZV9hc3NlcnRfMjI5KCk7IH0g d2hpbGUgKDApOyAoKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICopKF9fbXB0ciAtIF9fYnVpbHRp bl9vZmZzZXRvZihzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCwgYmFzZSkpKTsgfSk7CgogaW50ZXJu YWwtPkNMSzFfQ0xLM19DVVJSRU5UX0NOVCA9IGRtX3JlYWRfcmVnX2Z1bmMoY2xrX21nci0+YmFz ZS5jdHgsIChDTEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50WzFdICsgMHgwMDhkKSwgX19mdW5j X18pOwogaW50ZXJuYWwtPkNMSzFfQ0xLM19CWVBBU1NfQ05UTCA9IGRtX3JlYWRfcmVnX2Z1bmMo Y2xrX21nci0+YmFzZS5jdHgsIChDTEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50WzFdICsgMHgw MDY3KSwgX19mdW5jX18pOwoKIGludGVybmFsLT5DTEsxX0NMSzNfRFNfQ05UTCA9IGRtX3JlYWRf cmVnX2Z1bmMoY2xrX21nci0+YmFzZS5jdHgsIChDTEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50 WzFdICsgMHgwMDYwKSwgX19mdW5jX18pOwogaW50ZXJuYWwtPkNMSzFfQ0xLM19BTExPV19EUyA9 IGRtX3JlYWRfcmVnX2Z1bmMoY2xrX21nci0+YmFzZS5jdHgsIChDTEtfQkFTRS5pbnN0YW5jZVsw XS5zZWdtZW50WzFdICsgMHgwMDYxKSwgX19mdW5jX18pOwoKIGludGVybmFsLT5DTEsxX0NMSzFf Q1VSUkVOVF9DTlQgPSBkbV9yZWFkX3JlZ19mdW5jKGNsa19tZ3ItPmJhc2UuY3R4LCAoQ0xLX0JB U0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDA4YiksIF9fZnVuY19fKTsKIGludGVybmFs LT5DTEsxX0NMSzFfQllQQVNTX0NOVEwgPSBkbV9yZWFkX3JlZ19mdW5jKGNsa19tZ3ItPmJhc2Uu Y3R4LCAoQ0xLX0JBU0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDA1MyksIF9fZnVuY19f KTsKCiBpbnRlcm5hbC0+Q0xLMV9DTEsyX0NVUlJFTlRfQ05UID0gZG1fcmVhZF9yZWdfZnVuYyhj bGtfbWdyLT5iYXNlLmN0eCwgKENMS19CQVNFLmluc3RhbmNlWzBdLnNlZ21lbnRbMV0gKyAweDAw OGMpLCBfX2Z1bmNfXyk7CiBpbnRlcm5hbC0+Q0xLMV9DTEsyX0JZUEFTU19DTlRMID0gZG1fcmVh ZF9yZWdfZnVuYyhjbGtfbWdyLT5iYXNlLmN0eCwgKENMS19CQVNFLmluc3RhbmNlWzBdLnNlZ21l bnRbMV0gKyAweDAwNWQpLCBfX2Z1bmNfXyk7CgogaW50ZXJuYWwtPkNMSzFfQ0xLMF9DVVJSRU5U X0NOVCA9IGRtX3JlYWRfcmVnX2Z1bmMoY2xrX21nci0+YmFzZS5jdHgsIChDTEtfQkFTRS5pbnN0 YW5jZVswXS5zZWdtZW50WzFdICsgMHgwMDhhKSwgX19mdW5jX18pOwogaW50ZXJuYWwtPkNMSzFf Q0xLMF9CWVBBU1NfQ05UTCA9IGRtX3JlYWRfcmVnX2Z1bmMoY2xrX21nci0+YmFzZS5jdHgsIChD TEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50WzFdICsgMHgwMDQ5KSwgX19mdW5jX18pOwp9CgoK c3RhdGljIHZvaWQgcm5fZHVtcF9jbGtfcmVnaXN0ZXJzKHN0cnVjdCBjbGtfc3RhdGVfcmVnaXN0 ZXJzX2FuZF9ieXBhc3MgKnJlZ3NfYW5kX2J5cGFzcywKICBzdHJ1Y3QgY2xrX21nciAqY2xrX21n cl9iYXNlLCBzdHJ1Y3QgY2xrX2xvZ19pbmZvICpsb2dfaW5mbykKewogc3RydWN0IHJuX2Nsa19p bnRlcm5hbCBpbnRlcm5hbCA9IHswfTsKIGNoYXIgKmJ5cGFzc19jbGtzWzVdID0geyIweDAgREZT IiwgIjB4MSBSRUZDTEsiLCAiMHgyIEVSUk9SIiwgIjB4MyA0MDAgRkNIIiwgIjB4NCA2MDAgRkNI In07CiB1bnNpZ25lZCBpbnQgY2hhcnNfcHJpbnRlZCA9IDA7CiB1bnNpZ25lZCBpbnQgcmVtYWlu aW5nX2J1ZmZlciA9IGxvZ19pbmZvLT5idWZTaXplOwoKIHJuX2R1bXBfY2xrX3JlZ2lzdGVyc19p bnRlcm5hbCgmaW50ZXJuYWwsIGNsa19tZ3JfYmFzZSk7CgogcmVnc19hbmRfYnlwYXNzLT5kY2Zj bGsgPSBpbnRlcm5hbC5DTEsxX0NMSzNfQ1VSUkVOVF9DTlQgLyAxMDsKIHJlZ3NfYW5kX2J5cGFz cy0+ZGNmX2RlZXBfc2xlZXBfZGl2aWRlciA9IGludGVybmFsLkNMSzFfQ0xLM19EU19DTlRMIC8g MTA7CiByZWdzX2FuZF9ieXBhc3MtPmRjZl9kZWVwX3NsZWVwX2FsbG93ID0gaW50ZXJuYWwuQ0xL MV9DTEszX0FMTE9XX0RTOwogcmVnc19hbmRfYnlwYXNzLT5kcHJlZmNsayA9IGludGVybmFsLkNM SzFfQ0xLMl9DVVJSRU5UX0NOVCAvIDEwOwogcmVnc19hbmRfYnlwYXNzLT5kaXNwY2xrID0gaW50 ZXJuYWwuQ0xLMV9DTEswX0NVUlJFTlRfQ05UIC8gMTA7CiByZWdzX2FuZF9ieXBhc3MtPmRwcGNs ayA9IGludGVybmFsLkNMSzFfQ0xLMV9DVVJSRU5UX0NOVCAvIDEwOwoKIHJlZ3NfYW5kX2J5cGFz cy0+ZHBwY2xrX2J5cGFzcyA9IGludGVybmFsLkNMSzFfQ0xLMV9CWVBBU1NfQ05UTCAmIDB4MDAw NzsKIGlmIChyZWdzX2FuZF9ieXBhc3MtPmRwcGNsa19ieXBhc3MgPCAwIHx8IHJlZ3NfYW5kX2J5 cGFzcy0+ZHBwY2xrX2J5cGFzcyA+IDQpCiAgcmVnc19hbmRfYnlwYXNzLT5kcHBjbGtfYnlwYXNz ID0gMDsKIHJlZ3NfYW5kX2J5cGFzcy0+ZGNmY2xrX2J5cGFzcyA9IGludGVybmFsLkNMSzFfQ0xL M19CWVBBU1NfQ05UTCAmIDB4MDAwNzsKIGlmIChyZWdzX2FuZF9ieXBhc3MtPmRjZmNsa19ieXBh c3MgPCAwIHx8IHJlZ3NfYW5kX2J5cGFzcy0+ZGNmY2xrX2J5cGFzcyA+IDQpCiAgcmVnc19hbmRf YnlwYXNzLT5kY2ZjbGtfYnlwYXNzID0gMDsKIHJlZ3NfYW5kX2J5cGFzcy0+ZGlzcGNsa19ieXBh c3MgPSBpbnRlcm5hbC5DTEsxX0NMSzBfQllQQVNTX0NOVEwgJiAweDAwMDc7CiBpZiAocmVnc19h bmRfYnlwYXNzLT5kaXNwY2xrX2J5cGFzcyA8IDAgfHwgcmVnc19hbmRfYnlwYXNzLT5kaXNwY2xr X2J5cGFzcyA+IDQpCiAgcmVnc19hbmRfYnlwYXNzLT5kaXNwY2xrX2J5cGFzcyA9IDA7CiByZWdz X2FuZF9ieXBhc3MtPmRwcmVmY2xrX2J5cGFzcyA9IGludGVybmFsLkNMSzFfQ0xLMl9CWVBBU1Nf Q05UTCAmIDB4MDAwNzsKIGlmIChyZWdzX2FuZF9ieXBhc3MtPmRwcmVmY2xrX2J5cGFzcyA8IDAg fHwgcmVnc19hbmRfYnlwYXNzLT5kcHJlZmNsa19ieXBhc3MgPiA0KQogIHJlZ3NfYW5kX2J5cGFz cy0+ZHByZWZjbGtfYnlwYXNzID0gMDsKCiBpZiAobG9nX2luZm8tPmVuYWJsZWQpIHsKICBjaGFy c19wcmludGVkID0gc25wcmludGZfY291bnQobG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZm ZXIsICJjbGtfdHlwZSxjbGtfdmFsdWUsZGVlcHNsZWVwX2NudGwsZGVlcHNsZWVwX2FsbG93LGJ5 cGFzc1xuIik7CiAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwogICpsb2dfaW5m by0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsKICBsb2dfaW5mby0+cEJ1ZiAr PSBjaGFyc19wcmludGVkOwoKICBjaGFyc19wcmludGVkID0gc25wcmludGZfY291bnQobG9nX2lu Zm8tPnBCdWYsIHJlbWFpbmluZ19idWZmZXIsICJkY2ZjbGssJWQsJWQsJWQsJXNcbiIsCiAgIHJl Z3NfYW5kX2J5cGFzcy0+ZGNmY2xrLAogICByZWdzX2FuZF9ieXBhc3MtPmRjZl9kZWVwX3NsZWVw X2RpdmlkZXIsCiAgIHJlZ3NfYW5kX2J5cGFzcy0+ZGNmX2RlZXBfc2xlZXBfYWxsb3csCiAgIGJ5 cGFzc19jbGtzWyhpbnQpIHJlZ3NfYW5kX2J5cGFzcy0+ZGNmY2xrX2J5cGFzc10pOwogIHJlbWFp bmluZ19idWZmZXIgLT0gY2hhcnNfcHJpbnRlZDsKICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmlu dGVkICs9IGNoYXJzX3ByaW50ZWQ7CiAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsK CiAgY2hhcnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5p bmdfYnVmZmVyLCAiZHByZWZjbGssJWQsTi9BLE4vQSwlc1xuIiwKICAgcmVnc19hbmRfYnlwYXNz LT5kcHJlZmNsaywKICAgYnlwYXNzX2Nsa3NbKGludCkgcmVnc19hbmRfYnlwYXNzLT5kcHJlZmNs a19ieXBhc3NdKTsKICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CiAgKmxvZ19p bmZvLT5zdW1fY2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwogIGxvZ19pbmZvLT5wQnVm ICs9IGNoYXJzX3ByaW50ZWQ7CgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3VudChsb2df aW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1ZmZlciwgImRpc3BjbGssJWQsTi9BLE4vQSwlc1xuIiwK ICAgcmVnc19hbmRfYnlwYXNzLT5kaXNwY2xrLAogICBieXBhc3NfY2xrc1soaW50KSByZWdzX2Fu ZF9ieXBhc3MtPmRpc3BjbGtfYnlwYXNzXSk7CiAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19w cmludGVkOwogICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsK ICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFyc19wcmludGVkOwoKCiAgY2hhcnNfcHJpbnRlZCA9IHNu cHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVmZmVyLCAiU1BMSVRcbiIp OwogIHJlbWFpbmluZ19idWZmZXIgLT0gY2hhcnNfcHJpbnRlZDsKICAqbG9nX2luZm8tPnN1bV9j aGFyc19wcmludGVkICs9IGNoYXJzX3ByaW50ZWQ7CiAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNf cHJpbnRlZDsKCgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3VudChsb2dfaW5mby0+cEJ1 ZiwgcmVtYWluaW5nX2J1ZmZlciwgInJlZ19uYW1lLHZhbHVlLGNsa190eXBlXG4iKTsKICByZW1h aW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CiAgKmxvZ19pbmZvLT5zdW1fY2hhcnNfcHJp bnRlZCArPSBjaGFyc19wcmludGVkOwogIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7 CgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3VudChsb2dfaW5mby0+cEJ1ZiwgcmVtYWlu aW5nX2J1ZmZlciwgIkNMSzFfQ0xLM19DVVJSRU5UX0NOVCwlZCxkY2ZjbGtcbiIsCiAgICBpbnRl cm5hbC5DTEsxX0NMSzNfQ1VSUkVOVF9DTlQpOwogIHJlbWFpbmluZ19idWZmZXIgLT0gY2hhcnNf cHJpbnRlZDsKICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmludGVkICs9IGNoYXJzX3ByaW50ZWQ7 CiAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsKCiAgY2hhcnNfcHJpbnRlZCA9IHNu cHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVmZmVyLCAiQ0xLMV9DTEsz X0RTX0NOVEwsJWQsZGNmX2RlZXBfc2xlZXBfZGl2aWRlclxuIiwKICAgICBpbnRlcm5hbC5DTEsx X0NMSzNfRFNfQ05UTCk7CiAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwogICps b2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsKICBsb2dfaW5mby0+ cEJ1ZiArPSBjaGFyc19wcmludGVkOwoKICBjaGFyc19wcmludGVkID0gc25wcmludGZfY291bnQo bG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZmZXIsICJDTEsxX0NMSzNfQUxMT1dfRFMsJWQs ZGNmX2RlZXBfc2xlZXBfYWxsb3dcbiIsCiAgICAgaW50ZXJuYWwuQ0xLMV9DTEszX0FMTE9XX0RT KTsKICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CiAgKmxvZ19pbmZvLT5zdW1f Y2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwogIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJz X3ByaW50ZWQ7CgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3VudChsb2dfaW5mby0+cEJ1 ZiwgcmVtYWluaW5nX2J1ZmZlciwgIkNMSzFfQ0xLMl9DVVJSRU5UX0NOVCwlZCxkcHJlZmNsa1xu IiwKICAgICBpbnRlcm5hbC5DTEsxX0NMSzJfQ1VSUkVOVF9DTlQpOwogIHJlbWFpbmluZ19idWZm ZXIgLT0gY2hhcnNfcHJpbnRlZDsKICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmludGVkICs9IGNo YXJzX3ByaW50ZWQ7CiAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsKCiAgY2hhcnNf cHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVmZmVy LCAiQ0xLMV9DTEswX0NVUlJFTlRfQ05ULCVkLGRpc3BjbGtcbiIsCiAgICAgaW50ZXJuYWwuQ0xL MV9DTEswX0NVUlJFTlRfQ05UKTsKICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7 CiAgKmxvZ19pbmZvLT5zdW1fY2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwogIGxvZ19p bmZvLT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7CgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9j b3VudChsb2dfaW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1ZmZlciwgIkNMSzFfQ0xLMV9DVVJSRU5U X0NOVCwlZCxkcHBjbGtcbiIsCiAgICAgaW50ZXJuYWwuQ0xLMV9DTEsxX0NVUlJFTlRfQ05UKTsK ICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CiAgKmxvZ19pbmZvLT5zdW1fY2hh cnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwogIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJzX3By aW50ZWQ7CgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3VudChsb2dfaW5mby0+cEJ1Ziwg cmVtYWluaW5nX2J1ZmZlciwgIkNMSzFfQ0xLM19CWVBBU1NfQ05UTCwlZCxkY2ZjbGtfYnlwYXNz XG4iLAogICAgIGludGVybmFsLkNMSzFfQ0xLM19CWVBBU1NfQ05UTCk7CiAgcmVtYWluaW5nX2J1 ZmZlciAtPSBjaGFyc19wcmludGVkOwogICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0g Y2hhcnNfcHJpbnRlZDsKICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFyc19wcmludGVkOwoKICBjaGFy c19wcmludGVkID0gc25wcmludGZfY291bnQobG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZm ZXIsICJDTEsxX0NMSzJfQllQQVNTX0NOVEwsJWQsZHByZWZjbGtfYnlwYXNzXG4iLAogICAgIGlu dGVybmFsLkNMSzFfQ0xLMl9CWVBBU1NfQ05UTCk7CiAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFy c19wcmludGVkOwogICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRl ZDsKICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFyc19wcmludGVkOwoKICBjaGFyc19wcmludGVkID0g c25wcmludGZfY291bnQobG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZmZXIsICJDTEsxX0NM SzBfQllQQVNTX0NOVEwsJWQsZGlzcGNsa19ieXBhc3NcbiIsCiAgICAgaW50ZXJuYWwuQ0xLMV9D TEswX0JZUEFTU19DTlRMKTsKICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CiAg KmxvZ19pbmZvLT5zdW1fY2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwogIGxvZ19pbmZv LT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7CgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3Vu dChsb2dfaW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1ZmZlciwgIkNMSzFfQ0xLMV9CWVBBU1NfQ05U TCwlZCxkcHBjbGtfYnlwYXNzXG4iLAogICAgIGludGVybmFsLkNMSzFfQ0xLMV9CWVBBU1NfQ05U TCk7CiAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwogICpsb2dfaW5mby0+c3Vt X2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsKICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFy c19wcmludGVkOwogfQp9CgoKdm9pZCBybl9nZXRfY2xrX3N0YXRlcyhzdHJ1Y3QgY2xrX21nciAq Y2xrX21ncl9iYXNlLCBzdHJ1Y3QgY2xrX3N0YXRlcyAqcykKewogc3RydWN0IGNsa19zdGF0ZV9y ZWdpc3RlcnNfYW5kX2J5cGFzcyBzYiA9IHsgMCB9Owogc3RydWN0IGNsa19sb2dfaW5mbyBsb2df aW5mbyA9IHsgMCB9OwoKIHJuX2R1bXBfY2xrX3JlZ2lzdGVycygmc2IsIGNsa19tZ3JfYmFzZSwg JmxvZ19pbmZvKTsKCiBzLT5kcHJlZmNsa19raHogPSBzYi5kcHJlZmNsayAqIDEwMDA7Cn0KCnZv aWQgcm5fZW5hYmxlX3BtZV93YShzdHJ1Y3QgY2xrX21nciAqY2xrX21ncl9iYXNlKQp7CiBzdHJ1 Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciA9ICh7IHZvaWQgKl9fbXB0ciA9ICh2b2lkICop KGNsa19tZ3JfYmFzZSk7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMzk0 KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygicG9pbnRlciB0eXBlIG1pc21hdGNoIGlu IGNvbnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISghX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVf cCh0eXBlb2YoKihjbGtfbWdyX2Jhc2UpKSwgdHlwZW9mKCgoc3RydWN0IGNsa19tZ3JfaW50ZXJu YWwgKikwKS0+YmFzZSkpICYmICFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigq KGNsa19tZ3JfYmFzZSkpLCB0eXBlb2Yodm9pZCkpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzM5 NCgpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqKShfX21wdHIgLSBf X2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwsIGJhc2UpKSk7IH0pOwoK IHJuX3ZiaW9zX3NtdV9lbmFibGVfcG1lX3dhKGNsa19tZ3IpOwp9Cgp2b2lkIHJuX2luaXRfY2xv Y2tzKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyKQp7CiBtZW1zZXQoJihjbGtfbWdyLT5jbGtzKSwg MCwgc2l6ZW9mKHN0cnVjdCBkY19jbG9ja3MpKTsKCiBjbGtfbWdyLT5jbGtzLnBfc3RhdGVfY2hh bmdlX3N1cHBvcnQgPSB0cnVlOwogY2xrX21nci0+Y2xrcy5wcmV2X3Bfc3RhdGVfY2hhbmdlX3N1 cHBvcnQgPSB0cnVlOwogY2xrX21nci0+Y2xrcy5wd3Jfc3RhdGUgPSBEQ05fUFdSX1NUQVRFX1VO S05PV047Cn0KCnZvaWQgYnVpbGRfd2F0ZXJtYXJrX3JhbmdlcyhzdHJ1Y3QgY2xrX2J3X3BhcmFt cyAqYndfcGFyYW1zLCBzdHJ1Y3QgcHBfc211X3dtX3JhbmdlX3NldHMgKnJhbmdlcykKewogaW50 IGksIG51bV92YWxpZF9zZXRzOwoKIG51bV92YWxpZF9zZXRzID0gMDsKCiBmb3IgKGkgPSAwOyBp IDwgNDsgaSsrKSB7CgogIGlmICghYndfcGFyYW1zLT53bV90YWJsZS5lbnRyaWVzW2ldLnZhbGlk KQogICBjb250aW51ZTsKCiAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tudW1fdmFsaWRfc2V0c10u d21faW5zdCA9IGJ3X3BhcmFtcy0+d21fdGFibGUuZW50cmllc1tpXS53bV9pbnN0OwogIHJhbmdl cy0+cmVhZGVyX3dtX3NldHNbbnVtX3ZhbGlkX3NldHNdLndtX3R5cGUgPSBid19wYXJhbXMtPndt X3RhYmxlLmVudHJpZXNbaV0ud21fdHlwZTsKCiAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tudW1f dmFsaWRfc2V0c10ubWluX2ZpbGxfY2xrX21oeiA9IDB4MDsKICByYW5nZXMtPnJlYWRlcl93bV9z ZXRzW251bV92YWxpZF9zZXRzXS5tYXhfZmlsbF9jbGtfbWh6ID0gMHhGRkZGOwoKCiAgaWYgKHJh bmdlcy0+cmVhZGVyX3dtX3NldHNbbnVtX3ZhbGlkX3NldHNdLndtX3R5cGUgPT0gV01fVFlQRV9Q U1RBVEVfQ0hHKSB7CiAgIGlmIChpID09IDApCiAgICByYW5nZXMtPnJlYWRlcl93bV9zZXRzW251 bV92YWxpZF9zZXRzXS5taW5fZHJhaW5fY2xrX21oeiA9IDA7CiAgIGVsc2UgewoKICAgIHJhbmdl cy0+cmVhZGVyX3dtX3NldHNbbnVtX3ZhbGlkX3NldHNdLm1pbl9kcmFpbl9jbGtfbWh6ID0gYndf cGFyYW1zLT5jbGtfdGFibGUuZW50cmllc1tpIC0gMV0uZGNmY2xrX21oeiArIDE7CiAgIH0KICAg cmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tudW1fdmFsaWRfc2V0c10ubWF4X2RyYWluX2Nsa19taHog PSBid19wYXJhbXMtPmNsa190YWJsZS5lbnRyaWVzW2ldLmRjZmNsa19taHo7CgogIH0gZWxzZSB7 CgogICByYW5nZXMtPnJlYWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRzXS5taW5fZmlsbF9jbGtf bWh6ID0gMHgwOwogICByYW5nZXMtPnJlYWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRzXS5tYXhf ZmlsbF9jbGtfbWh6ID0gMHhGRkZGOwoKCiAgIHJhbmdlcy0+cmVhZGVyX3dtX3NldHNbbnVtX3Zh bGlkX3NldHMgLSAxXS5tYXhfZmlsbF9jbGtfbWh6ID0gMHhGRkZGOwogIH0KICBudW1fdmFsaWRf c2V0cysrOwogfQoKICh7IGludCBfX3JldF93YXJuX29uID0gISEoIShudW1fdmFsaWRfc2V0cyAh PSAwKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBk byB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIg Ii5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIg IiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAi IC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50 cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9y ZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIpLCAiaSIgKDQ0 NiksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19l bnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNl Y3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3Bz ZWN0aW9uXG5cdCIgOiA6ICJpIiAoNDgpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhw ZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CiByYW5nZXMtPm51bV9yZWFkZXJfd21fc2V0 cyA9IG51bV92YWxpZF9zZXRzOwoKCiByYW5nZXMtPnJlYWRlcl93bV9zZXRzWzBdLm1pbl9kcmFp bl9jbGtfbWh6ID0gMHgwOwogcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1swXS5taW5fZmlsbF9jbGtf bWh6ID0gMHgwOwogcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tyYW5nZXMtPm51bV9yZWFkZXJfd21f c2V0cyAtIDFdLm1heF9kcmFpbl9jbGtfbWh6ID0gMHhGRkZGOwogcmFuZ2VzLT5yZWFkZXJfd21f c2V0c1tyYW5nZXMtPm51bV9yZWFkZXJfd21fc2V0cyAtIDFdLm1heF9maWxsX2Nsa19taHogPSAw eEZGRkY7CgoKIHJhbmdlcy0+bnVtX3dyaXRlcl93bV9zZXRzID0gMTsKIHJhbmdlcy0+d3JpdGVy X3dtX3NldHNbMF0ud21faW5zdCA9IDA7CiByYW5nZXMtPndyaXRlcl93bV9zZXRzWzBdLm1pbl9m aWxsX2Nsa19taHogPSAweDA7CiByYW5nZXMtPndyaXRlcl93bV9zZXRzWzBdLm1heF9maWxsX2Ns a19taHogPSAweEZGRkY7CiByYW5nZXMtPndyaXRlcl93bV9zZXRzWzBdLm1pbl9kcmFpbl9jbGtf bWh6ID0gMHgwOwogcmFuZ2VzLT53cml0ZXJfd21fc2V0c1swXS5tYXhfZHJhaW5fY2xrX21oeiA9 IDB4RkZGRjsKCn0KCnN0YXRpYyB2b2lkIHJuX25vdGlmeV93bV9yYW5nZXMoc3RydWN0IGNsa19t Z3IgKmNsa19tZ3JfYmFzZSkKewogc3RydWN0IGRjX2RlYnVnX29wdGlvbnMgKmRlYnVnID0gJmNs a19tZ3JfYmFzZS0+Y3R4LT5kYy0+ZGVidWc7CiBzdHJ1Y3QgcHBfc211X3dtX3JhbmdlX3NldHMg cmFuZ2VzID0gezB9Owogc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IgPSAoeyB2b2lk ICpfX21wdHIgPSAodm9pZCAqKShjbGtfbWdyX2Jhc2UpOyBkbyB7IGV4dGVybiB2b2lkIF9fY29t cGlsZXRpbWVfYXNzZXJ0XzQ2OSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oInBvaW50 ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb250YWluZXJfb2YoKSIpKSk7IGlmICghKCEoIV9fYnVpbHRp bl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCooY2xrX21ncl9iYXNlKSksIHR5cGVvZigoKHN0 cnVjdCBjbGtfbWdyX2ludGVybmFsICopMCktPmJhc2UpKSAmJiAhX19idWlsdGluX3R5cGVzX2Nv bXBhdGlibGVfcCh0eXBlb2YoKihjbGtfbWdyX2Jhc2UpKSwgdHlwZW9mKHZvaWQpKSkpKSBfX2Nv bXBpbGV0aW1lX2Fzc2VydF80NjkoKTsgfSB3aGlsZSAoMCk7ICgoc3RydWN0IGNsa19tZ3JfaW50 ZXJuYWwgKikoX19tcHRyIC0gX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBjbGtfbWdyX2ludGVy bmFsLCBiYXNlKSkpOyB9KTsKIHN0cnVjdCBwcF9zbXVfZnVuY3MgKnBwX3NtdSA9IGNsa19tZ3It PnBwX3NtdTsKCiBpZiAoIWRlYnVnLT5kaXNhYmxlX3BwbGliX3dtX3JhbmdlKSB7CiAgYnVpbGRf d2F0ZXJtYXJrX3JhbmdlcyhjbGtfbWdyX2Jhc2UtPmJ3X3BhcmFtcywgJnJhbmdlcyk7CgoKICBp ZiAocHBfc211ICYmIHBwX3NtdS0+cm5fZnVuY3Muc2V0X3dtX3JhbmdlcykKICAgcHBfc211LT5y bl9mdW5jcy5zZXRfd21fcmFuZ2VzKCZwcF9zbXUtPnJuX2Z1bmNzLnBwX3NtdSwgJnJhbmdlcyk7 CiB9Cgp9CgpzdGF0aWMgYm9vbCBybl9hcmVfY2xvY2tfc3RhdGVzX2VxdWFsKHN0cnVjdCBkY19j bG9ja3MgKmEsCiAgc3RydWN0IGRjX2Nsb2NrcyAqYikKewogaWYgKGEtPmRpc3BjbGtfa2h6ICE9 IGItPmRpc3BjbGtfa2h6KQogIHJldHVybiBmYWxzZTsKIGVsc2UgaWYgKGEtPmRwcGNsa19raHog IT0gYi0+ZHBwY2xrX2toeikKICByZXR1cm4gZmFsc2U7CiBlbHNlIGlmIChhLT5kY2ZjbGtfa2h6 ICE9IGItPmRjZmNsa19raHopCiAgcmV0dXJuIGZhbHNlOwogZWxzZSBpZiAoYS0+ZGNmY2xrX2Rl ZXBfc2xlZXBfa2h6ICE9IGItPmRjZmNsa19kZWVwX3NsZWVwX2toeikKICByZXR1cm4gZmFsc2U7 CgogcmV0dXJuIHRydWU7Cn0KCgpzdGF0aWMgc3RydWN0IGNsa19tZ3JfZnVuY3MgZGNuMjFfZnVu Y3MgPSB7CiAuZ2V0X2RwX3JlZl9jbGtfZnJlcXVlbmN5ID0gZGNlMTJfZ2V0X2RwX3JlZl9mcmVx X2toeiwKIC51cGRhdGVfY2xvY2tzID0gcm5fdXBkYXRlX2Nsb2NrcywKIC5pbml0X2Nsb2NrcyA9 IHJuX2luaXRfY2xvY2tzLAogLmVuYWJsZV9wbWVfd2EgPSBybl9lbmFibGVfcG1lX3dhLAogLmFy ZV9jbG9ja19zdGF0ZXNfZXF1YWwgPSBybl9hcmVfY2xvY2tfc3RhdGVzX2VxdWFsLAogLm5vdGlm eV93bV9yYW5nZXMgPSBybl9ub3RpZnlfd21fcmFuZ2VzCn07CgpzdHJ1Y3QgY2xrX2J3X3BhcmFt cyBybl9id19wYXJhbXMgPSB7CiAudnJhbV90eXBlID0gRGRyNE1lbVR5cGUsCiAubnVtX2NoYW5u ZWxzID0gMSwKIC5jbGtfdGFibGUgPSB7CiAgLmVudHJpZXMgPSB7CiAgIHsKICAgIC52b2x0YWdl ID0gMCwKICAgIC5kY2ZjbGtfbWh6ID0gNDAwLAogICAgLmZjbGtfbWh6ID0gNDAwLAogICAgLm1l bWNsa19taHogPSA4MDAsCiAgICAuc29jY2xrX21oeiA9IDAsCiAgIH0sCiAgIHsKICAgIC52b2x0 YWdlID0gMCwKICAgIC5kY2ZjbGtfbWh6ID0gNDgzLAogICAgLmZjbGtfbWh6ID0gODAwLAogICAg Lm1lbWNsa19taHogPSAxNjAwLAogICAgLnNvY2Nsa19taHogPSAwLAogICB9LAogICB7CiAgICAu dm9sdGFnZSA9IDAsCiAgICAuZGNmY2xrX21oeiA9IDYwMiwKICAgIC5mY2xrX21oeiA9IDEwNjcs CiAgICAubWVtY2xrX21oeiA9IDEwNjcsCiAgICAuc29jY2xrX21oeiA9IDAsCiAgIH0sCiAgIHsK ICAgIC52b2x0YWdlID0gMCwKICAgIC5kY2ZjbGtfbWh6ID0gNzM4LAogICAgLmZjbGtfbWh6ID0g MTMzMywKICAgIC5tZW1jbGtfbWh6ID0gMTYwMCwKICAgIC5zb2NjbGtfbWh6ID0gMCwKICAgfSwK ICB9LAoKICAubnVtX2VudHJpZXMgPSA0LAogfSwKCn07CgpzdHJ1Y3Qgd21fdGFibGUgZGRyNF93 bV90YWJsZSA9IHsKIC5lbnRyaWVzID0gewogIHsKICAgLndtX2luc3QgPSAwLAogICAud21fdHlw ZSA9IFdNX1RZUEVfUFNUQVRFX0NIRywKICAgLnBzdGF0ZV9sYXRlbmN5X3VzID0gMTEuNzIsCiAg IC5zcl9leGl0X3RpbWVfdXMgPSA2LjA5LAogICAuc3JfZW50ZXJfcGx1c19leGl0X3RpbWVfdXMg PSA3LjE0LAogICAudmFsaWQgPSB0cnVlLAogIH0sCiAgewogICAud21faW5zdCA9IDEsCiAgIC53 bV90eXBlID0gV01fVFlQRV9QU1RBVEVfQ0hHLAogICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS43 MiwKICAgLnNyX2V4aXRfdGltZV91cyA9IDEwLjEyLAogICAuc3JfZW50ZXJfcGx1c19leGl0X3Rp bWVfdXMgPSAxMS40OCwKICAgLnZhbGlkID0gdHJ1ZSwKICB9LAogIHsKICAgLndtX2luc3QgPSAy LAogICAud21fdHlwZSA9IFdNX1RZUEVfUFNUQVRFX0NIRywKICAgLnBzdGF0ZV9sYXRlbmN5X3Vz ID0gMTEuNzIsCiAgIC5zcl9leGl0X3RpbWVfdXMgPSAxMC4xMiwKICAgLnNyX2VudGVyX3BsdXNf ZXhpdF90aW1lX3VzID0gMTEuNDgsCiAgIC52YWxpZCA9IHRydWUsCiAgfSwKICB7CiAgIC53bV9p bnN0ID0gMywKICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9DSEcsCiAgIC5wc3RhdGVfbGF0 ZW5jeV91cyA9IDExLjcyLAogICAuc3JfZXhpdF90aW1lX3VzID0gMTAuMTIsCiAgIC5zcl9lbnRl cl9wbHVzX2V4aXRfdGltZV91cyA9IDExLjQ4LAogICAudmFsaWQgPSB0cnVlLAogIH0sCiB9Cn07 CgpzdHJ1Y3Qgd21fdGFibGUgbHBkZHI0X3dtX3RhYmxlID0gewogLmVudHJpZXMgPSB7CiAgewog ICAud21faW5zdCA9IDAsCiAgIC53bV90eXBlID0gV01fVFlQRV9QU1RBVEVfQ0hHLAogICAucHN0 YXRlX2xhdGVuY3lfdXMgPSAxMS42NTMzMywKICAgLnNyX2V4aXRfdGltZV91cyA9IDUuMzIsCiAg IC5zcl9lbnRlcl9wbHVzX2V4aXRfdGltZV91cyA9IDYuMzgsCiAgIC52YWxpZCA9IHRydWUsCiAg fSwKICB7CiAgIC53bV9pbnN0ID0gMSwKICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9DSEcs CiAgIC5wc3RhdGVfbGF0ZW5jeV91cyA9IDExLjY1MzMzLAogICAuc3JfZXhpdF90aW1lX3VzID0g OS44MiwKICAgLnNyX2VudGVyX3BsdXNfZXhpdF90aW1lX3VzID0gMTEuMTk2LAogICAudmFsaWQg PSB0cnVlLAogIH0sCiAgewogICAud21faW5zdCA9IDIsCiAgIC53bV90eXBlID0gV01fVFlQRV9Q U1RBVEVfQ0hHLAogICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS42NTMzMywKICAgLnNyX2V4aXRf dGltZV91cyA9IDkuODksCiAgIC5zcl9lbnRlcl9wbHVzX2V4aXRfdGltZV91cyA9IDExLjI0LAog ICAudmFsaWQgPSB0cnVlLAogIH0sCiAgewogICAud21faW5zdCA9IDMsCiAgIC53bV90eXBlID0g V01fVFlQRV9QU1RBVEVfQ0hHLAogICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS42NTMzMywKICAg LnNyX2V4aXRfdGltZV91cyA9IDkuNzQ4LAogICAuc3JfZW50ZXJfcGx1c19leGl0X3RpbWVfdXMg PSAxMS4xMDIsCiAgIC52YWxpZCA9IHRydWUsCiAgfSwKIH0KfTsKCgpzdGF0aWMgdW5zaWduZWQg aW50IGZpbmRfZGNmY2xrX2Zvcl92b2x0YWdlKHN0cnVjdCBkcG1fY2xvY2tzICpjbG9ja190YWJs ZSwgdW5zaWduZWQgaW50IHZvbHRhZ2UpCnsKIGludCBpOwoKIGZvciAoaSA9IDA7IGkgPCA4OyBp KyspIHsKICBpZiAoY2xvY2tfdGFibGUtPkRjZkNsb2Nrc1tpXS5Wb2wgPT0gdm9sdGFnZSkKICAg cmV0dXJuIGNsb2NrX3RhYmxlLT5EY2ZDbG9ja3NbaV0uRnJlcTsKIH0KCiAoeyBpbnQgX19yZXRf d2Fybl9vbiA9ICEhKCEoMCkpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29u KSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBm LCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAi LmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5s b25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEi ICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZs YWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdy LmMiKSwgImkiICg2MzEpLCAiaSIgKCgxIDw8IDApfCgoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9m KHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpc blx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0g LlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDQ5KSk7IH0pOyB9IHdoaWxlICgwKTsg X19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwogcmV0dXJuIDA7Cn0K CnN0YXRpYyB2b2lkIHJuX2Nsa19tZ3JfaGVscGVyX3BvcHVsYXRlX2J3X3BhcmFtcyhzdHJ1Y3Qg Y2xrX2J3X3BhcmFtcyAqYndfcGFyYW1zLCBzdHJ1Y3QgZHBtX2Nsb2NrcyAqY2xvY2tfdGFibGUs IHN0cnVjdCBpbnRlZ3JhdGVkX2luZm8gKmJpb3NfaW5mbykKewogaW50IGksIGogPSAwOwoKIGog PSAtMTsKCiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKCEoNCA8PSA4KSk7IGlmIChfX2J1aWx0 aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2 b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1 Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19l bnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2Vu dHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0Lndv cmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3Bz ZWN0aW9uIiA6IDogImkiICgiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIpLCAiaSIgKDY0MSksICJpIiAoKDEgPDwgMCl8 KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAo MCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVh Y2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJp IiAoNTApKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5f b24pLCAwKTsgfSk7CgoKCiBmb3IgKGkgPSA0IC0gMTsgaSA+PSAwOyBpLS0pIHsKICBpZiAoY2xv Y2tfdGFibGUtPkZDbG9ja3NbaV0uRnJlcSAhPSAwKSB7CiAgIGogPSBpOwogICBicmVhazsKICB9 CiB9CgogaWYgKGogPT0gLTEpIHsKCiAgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAhISghKDApKTsg aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNt IF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hz ZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIi ICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIg Ilx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGlu ZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVj M1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21nci5jIiksICJpIiAoNjU0KSwgImki ICgoMSA8PCAwKXwoKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkp OyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAu ZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25c blx0IiA6IDogImkiICg1MSkpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEo X19yZXRfd2Fybl9vbiksIDApOyB9KTsKICByZXR1cm47CiB9CgogYndfcGFyYW1zLT5jbGtfdGFi bGUubnVtX2VudHJpZXMgPSBqICsgMTsKCiBmb3IgKGkgPSAwOyBpIDwgYndfcGFyYW1zLT5jbGtf dGFibGUubnVtX2VudHJpZXM7IGkrKywgai0tKSB7CiAgYndfcGFyYW1zLT5jbGtfdGFibGUuZW50 cmllc1tpXS5mY2xrX21oeiA9IGNsb2NrX3RhYmxlLT5GQ2xvY2tzW2pdLkZyZXE7CiAgYndfcGFy YW1zLT5jbGtfdGFibGUuZW50cmllc1tpXS5tZW1jbGtfbWh6ID0gY2xvY2tfdGFibGUtPk1lbUNs b2Nrc1tqXS5GcmVxOwogIGJ3X3BhcmFtcy0+Y2xrX3RhYmxlLmVudHJpZXNbaV0udm9sdGFnZSA9 IGNsb2NrX3RhYmxlLT5GQ2xvY2tzW2pdLlZvbDsKICBid19wYXJhbXMtPmNsa190YWJsZS5lbnRy aWVzW2ldLmRjZmNsa19taHogPSBmaW5kX2RjZmNsa19mb3Jfdm9sdGFnZShjbG9ja190YWJsZSwg Y2xvY2tfdGFibGUtPkZDbG9ja3Nbal0uVm9sKTsKIH0KCiBid19wYXJhbXMtPnZyYW1fdHlwZSA9 IGJpb3NfaW5mby0+bWVtb3J5X3R5cGU7CiBid19wYXJhbXMtPm51bV9jaGFubmVscyA9IGJpb3Nf aW5mby0+bWFfY2hhbm5lbF9udW1iZXI7CgogZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogIGJ3 X3BhcmFtcy0+d21fdGFibGUuZW50cmllc1tpXS53bV9pbnN0ID0gaTsKCiAgaWYgKGkgPj0gYndf cGFyYW1zLT5jbGtfdGFibGUubnVtX2VudHJpZXMpIHsKICAgYndfcGFyYW1zLT53bV90YWJsZS5l bnRyaWVzW2ldLnZhbGlkID0gZmFsc2U7CiAgIGNvbnRpbnVlOwogIH0KCiAgYndfcGFyYW1zLT53 bV90YWJsZS5lbnRyaWVzW2ldLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9DSEc7CiAgYndfcGFy YW1zLT53bV90YWJsZS5lbnRyaWVzW2ldLnZhbGlkID0gdHJ1ZTsKIH0KCiBpZiAoYndfcGFyYW1z LT52cmFtX3R5cGUgPT0gTHBEZHI0TWVtVHlwZSkgewoKCgogIGJ3X3BhcmFtcy0+d21fdGFibGUu ZW50cmllc1szXS5wc3RhdGVfbGF0ZW5jeV91cyA9IDQuOTc3OwogIGJ3X3BhcmFtcy0+d21fdGFi bGUuZW50cmllc1szXS53bV9pbnN0ID0gMzsKICBid19wYXJhbXMtPndtX3RhYmxlLmVudHJpZXNb M10ud21fdHlwZSA9IFdNX1RZUEVfUkVUUkFJTklORzsKICBid19wYXJhbXMtPndtX3RhYmxlLmVu dHJpZXNbM10udmFsaWQgPSB0cnVlOwogfQoKfQoKdm9pZCBybl9jbGtfbWdyX2NvbnN0cnVjdCgK ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogIHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtf bWdyLAogIHN0cnVjdCBwcF9zbXVfZnVuY3MgKnBwX3NtdSwKICBzdHJ1Y3QgZGNjZyAqZGNjZykK ewogc3RydWN0IGRjX2RlYnVnX29wdGlvbnMgKmRlYnVnID0gJmN0eC0+ZGMtPmRlYnVnOwogc3Ry dWN0IGRwbV9jbG9ja3MgY2xvY2tfdGFibGUgPSB7IDAgfTsKCiBjbGtfbWdyLT5iYXNlLmN0eCA9 IGN0eDsKIGNsa19tZ3ItPmJhc2UuZnVuY3MgPSAmZGNuMjFfZnVuY3M7CgogY2xrX21nci0+cHBf c211ID0gcHBfc211OwoKIGNsa19tZ3ItPmRjY2cgPSBkY2NnOwogY2xrX21nci0+ZGZzX2J5cGFz c19kaXNwX2NsayA9IDA7CgogY2xrX21nci0+ZHByZWZjbGtfc3NfcGVyY2VudGFnZSA9IDA7CiBj bGtfbWdyLT5kcHJlZmNsa19zc19kaXZpZGVyID0gMTAwMDsKIGNsa19tZ3ItPnNzX29uX2RwcmVm Y2xrID0gZmFsc2U7CiBjbGtfbWdyLT5kZnNfcmVmX2ZyZXFfa2h6ID0gNDgwMDA7CgogY2xrX21n ci0+c211X3ZlciA9IHJuX3ZiaW9zX3NtdV9nZXRfc211X3ZlcnNpb24oY2xrX21ncik7CgogaWYg KChjdHgtPmRjZV9lbnZpcm9ubWVudCA9PSBEQ0VfRU5WX0ZQR0FfTUFYSU1VUykpIHsKICBkY24y MV9mdW5jcy51cGRhdGVfY2xvY2tzID0gZGNuMl91cGRhdGVfY2xvY2tzX2ZwZ2E7CiAgY2xrX21n ci0+YmFzZS5kZW50aXN0X3Zjb19mcmVxX2toeiA9IDM2MDAwMDA7CiB9IGVsc2UgewogIHN0cnVj dCBjbGtfbG9nX2luZm8gbG9nX2luZm8gPSB7MH07CgoKICBjbGtfbWdyLT5iYXNlLmRlbnRpc3Rf dmNvX2ZyZXFfa2h6ID0gZ2V0X3Zjb19mcmVxdWVuY3lfZnJvbV9yZWcoY2xrX21ncik7CgoKICBp ZiAoY2xrX21nci0+YmFzZS5kZW50aXN0X3Zjb19mcmVxX2toeiA9PSAwKQogICBjbGtfbWdyLT5i YXNlLmRlbnRpc3RfdmNvX2ZyZXFfa2h6ID0gMzYwMDAwMDsKCiAgaWYgKGN0eC0+ZGNfYmlvcy0+ aW50ZWdyYXRlZF9pbmZvLT5tZW1vcnlfdHlwZSA9PSBMcERkcjRNZW1UeXBlKSB7CiAgIHJuX2J3 X3BhcmFtcy53bV90YWJsZSA9IGxwZGRyNF93bV90YWJsZTsKICB9IGVsc2UgewogICBybl9id19w YXJhbXMud21fdGFibGUgPSBkZHI0X3dtX3RhYmxlOwogIH0KCiAgcm5fZHVtcF9jbGtfcmVnaXN0 ZXJzKCZjbGtfbWdyLT5iYXNlLmJvb3Rfc25hcHNob3QsICZjbGtfbWdyLT5iYXNlLCAmbG9nX2lu Zm8pOwogfQoKIGNsa19tZ3ItPmJhc2UuZHByZWZjbGtfa2h6ID0gNjAwMDAwOwogZGNlX2Nsb2Nr X3JlYWRfc3NfaW5mbyhjbGtfbWdyKTsKCgogY2xrX21nci0+YmFzZS5id19wYXJhbXMgPSAmcm5f YndfcGFyYW1zOwoKIGlmIChwcF9zbXUgJiYgcHBfc211LT5ybl9mdW5jcy5nZXRfZHBtX2Nsb2Nr X3RhYmxlKSB7CiAgcHBfc211LT5ybl9mdW5jcy5nZXRfZHBtX2Nsb2NrX3RhYmxlKCZwcF9zbXUt PnJuX2Z1bmNzLnBwX3NtdSwgJmNsb2NrX3RhYmxlKTsKICBpZiAoY3R4LT5kY19iaW9zICYmIGN0 eC0+ZGNfYmlvcy0+aW50ZWdyYXRlZF9pbmZvKSB7CiAgIHJuX2Nsa19tZ3JfaGVscGVyX3BvcHVs YXRlX2J3X3BhcmFtcyAoY2xrX21nci0+YmFzZS5id19wYXJhbXMsICZjbG9ja190YWJsZSwgY3R4 LT5kY19iaW9zLT5pbnRlZ3JhdGVkX2luZm8pOwogIH0KIH0KCiBpZiAoIShjdHgtPmRjZV9lbnZp cm9ubWVudCA9PSBEQ0VfRU5WX0ZQR0FfTUFYSU1VUykgJiYgY2xrX21nci0+c211X3ZlciA+PSAw eDAwMzcxNTAwKSB7CgogIHJuX3ZiaW9zX3NtdV9lbmFibGVfNDhtaHpfdG1kcF9yZWZjbGtfcHdy ZHduKGNsa19tZ3IsICFkZWJ1Zy0+ZGlzYWJsZV80OG1oel9wd3Jkd24pOwogfQp9Cg== --===============2530410277144048522==--
Arthur Marsh <[email protected]>
:[email protected]
.
Full text available.[email protected], [email protected]
:bug#417
; Package gcc-10
.
Full text available.Devuan BTS -- Powered by Debian bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.
Devuan Bugs Owner <[email protected]>.
Last modified:
Sat, 18 Jan 2025 04:39:02 UTC